|
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.util.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.io.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.microedition.io.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.microedition.io.file.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.microedition.midlet.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.microedition.lcdui.*;</SPAN>
<B><SPAN lang=EN-US >public class </SPAN></B><SPAN lang=EN-US >FileMidlet </SPAN><B><SPAN lang=EN-US >extends </SPAN></B><SPAN lang=EN-US >MIDlet </SPAN><B><SPAN lang=EN-US >implements </SPAN></B><SPAN lang=EN-US >CommandListener </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >String currDirName;</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Command view = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"Visualizar"</SPAN><SPAN lang=EN-US >, Command.ITEM, </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Command back = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"Voltar"</SPAN><SPAN lang=EN-US >, Command.BACK, </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Command exit = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"Sair"</SPAN><SPAN lang=EN-US >, Command.EXIT, </SPAN><SPAN lang=EN-US >3</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US > </SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private final static </SPAN></B><SPAN lang=EN-US >String UP_DIRECTORY = </SPAN><SPAN lang=EN-US >".."</SPAN><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private final static </SPAN></B><SPAN lang=EN-US >String MEGA_ROOT = </SPAN><SPAN lang=EN-US >"/"</SPAN><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private final static </SPAN></B><SPAN lang=EN-US >String SEP_STR = </SPAN><SPAN lang=EN-US >"/"</SPAN><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >private final static char </SPAN></B><SPAN lang=EN-US >SEP = </SPAN><SPAN lang=EN-US >'/'</SPAN><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public </SPAN></B><SPAN lang=EN-US >FileMidlet() </SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >currDirName = MEGA_ROOT;</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >startApp() </SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >boolean </SPAN></B><SPAN lang=EN-US >isAPIAvailable = </SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >;</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(System.getProperty(</SPAN>
<SPAN lang=EN-US >"microedition.io.file.FileConnection.version"</SPAN><SPAN lang=EN-US >) != </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >)</SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >isAPIAvailable = </SPAN><B><SPAN lang=EN-US >true</SPAN></B><SPAN lang=EN-US >;</SPAN>
<B><SPAN lang=EN-US >try </SPAN></B>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >showCurrDir();</SPAN>
<SPAN lang=EN-US >} </SPAN>
<B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(SecurityException e) </SPAN>
<SPAN lang=EN-US >{} </SPAN>
<B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(Exception e) {}</SPAN>
<SPAN lang=EN-US >}</SPAN>
<B><SPAN lang=EN-US >else</SPAN></B>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >StringBuffer splashText = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >StringBuffer(</SPAN>
<SPAN lang=EN-US >getAppProperty(</SPAN><SPAN lang=EN-US >"MIDlet-Name"</SPAN><SPAN lang=EN-US >)).append(</SPAN><SPAN lang=EN-US >"\n"</SPAN><SPAN lang=EN-US >).append(</SPAN>
<SPAN lang=EN-US >getAppProperty(</SPAN><SPAN lang=EN-US >"MIDlet-Vendor"</SPAN><SPAN lang=EN-US >)).</SPAN>
<SPAN lang=EN-US >append(isAPIAvailable?</SPAN><SPAN lang=EN-US >""</SPAN><SPAN lang=EN-US >:</SPAN><SPAN lang=EN-US >"\nFileConnection API not available"</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >Alert splashScreen = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Alert(null,splashText.toString(),</SPAN>
<SPAN lang=EN-US >null,AlertType.INFO);</SPAN>
<SPAN lang=EN-US >splashScreen.setTimeout(</SPAN><SPAN lang=EN-US >3000</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >Display.getDisplay(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >).setCurrent(splashScreen);</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >pauseApp() {}</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >destroyApp(</SPAN><B><SPAN lang=EN-US >boolean </SPAN></B><SPAN lang=EN-US >cond) </SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >notifyDestroyed();</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >commandAction(Command c, Displayable d) </SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(c == view) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >List curr = (List)d;</SPAN>
<B><SPAN lang=EN-US >final </SPAN></B><SPAN lang=EN-US >String currFile = curr.getString(curr.getSelectedIndex());</SPAN>
<B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Thread(</SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Runnable() </SPAN>
<SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >run() </SPAN>
<SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(currFile.endsWith(SEP_STR) || </SPAN>
<SPAN lang=EN-US >currFile.equals(UP_DIRECTORY)) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >traverseDirectory(currFile);</SPAN>
<SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else </SPAN></B>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >showFile(currFile);</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}).start()</SPAN>
<SPAN lang=EN-US >}</SPAN>
<B><SPAN lang=EN-US >else if </SPAN></B><SPAN lang=EN-US >(c == back) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >showCurrDir();</SPAN>
<SPAN lang=EN-US >} </SPAN>
<B><SPAN lang=EN-US >else if </SPAN></B><SPAN lang=EN-US >(c == exit) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >destroyApp(</SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >void </SPAN></B><SPAN lang=EN-US >showCurrDir() </SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >Enumeration e;</SPAN>
<SPAN lang=EN-US >FileConnection currDir = </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US >List browser;</SPAN>
<B><SPAN lang=EN-US >try </SPAN></B>
<SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(MEGA_ROOT.equals(currDirName)) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >e = FileSystemRegistry.listRoots();</SPAN>
<SPAN lang=EN-US >browser = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >List(currDirName, List.IMPLICIT);</SPAN>
<SPAN lang=EN-US >} </SPAN>
<B><SPAN lang=EN-US >else </SPAN></B>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >currDir = (FileConnection)Connector.open(</SPAN>
<SPAN lang=EN-US >"file://localhost/" </SPAN><SPAN lang=EN-US >+ currDirName);</SPAN>
<SPAN lang=EN-US >e = currDir.list();</SPAN>
<SPAN lang=EN-US >browser = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >List(currDirName, List.IMPLICIT);</SPAN>
<SPAN lang=EN-US >browser.append(UP_DIRECTORY);</SPAN>
<SPAN lang=EN-US >}</SPAN>
<B><SPAN lang=EN-US >while </SPAN></B><SPAN lang=EN-US >(e.hasMoreElements()) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >String fileName = (String)e.nextElement();</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(fileName.charAt(fileName.length()-</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) == SEP) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >browser.append(fileName);</SPAN>
<SPAN lang=EN-US >} </SPAN>
<B><SPAN lang=EN-US >else </SPAN></B>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >browser.append(fileName);</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >browser.setSelectCommand(view);</SPAN>
<SPAN lang=EN-US >browser.addCommand(exit);</SPAN>
<SPAN lang=EN-US >browser.setCommandListener(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(currDir != </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >currDir.close();</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >Display.getDisplay(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >).setCurrent(browser);</SPAN>
<SPAN lang=EN-US >} </SPAN>
<B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(IOException ioe) </SPAN>
<SPAN lang=EN-US >{}</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >void </SPAN></B><SPAN lang=EN-US >traverseDirectory(String fileName) </SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(currDirName.equals(MEGA_ROOT)) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(fileName.equals(UP_DIRECTORY)) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >return</SPAN></B><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >currDirName = fileName;</SPAN>
<SPAN lang=EN-US >} </SPAN>
<B><SPAN lang=EN-US >else if </SPAN></B><SPAN lang=EN-US >(fileName.equals(UP_DIRECTORY)) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >i = currDirName.lastIndexOf(SEP, currDirName.length()-</SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >);</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(i != -</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >currDirName = currDirName.substring(</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >, i+</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >} </SPAN>
<B><SPAN lang=EN-US >else </SPAN></B>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >currDirName = MEGA_ROOT;</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >} </SPAN>
<B><SPAN lang=EN-US >else </SPAN></B>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >currDirName = currDirName + fileName;</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >showCurrDir();</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >void </SPAN></B><SPAN lang=EN-US >showFile(String fileName) </SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >try </SPAN></B>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >FileConnection fc = (FileConnection)</SPAN>
<SPAN lang=EN-US >Connector.open(</SPAN><SPAN lang=EN-US >"file://localhost/" </SPAN><SPAN lang=EN-US >+ currDirName + fileName);</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(!fc.exists()) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<B><SPAN lang=EN-US >throw new </SPAN></B><SPAN lang=EN-US >IOException(</SPAN><SPAN lang=EN-US >"Arquivo não existe"</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >InputStream fis = fc.openInputStream();</SPAN>
<B><SPAN lang=EN-US >byte</SPAN></B><SPAN lang=EN-US >[] b = </SPAN><B><SPAN lang=EN-US >new byte</SPAN></B><SPAN lang=EN-US >[</SPAN><SPAN lang=EN-US >1024</SPAN><SPAN lang=EN-US >];</SPAN>
<B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >length = fis.read(b, </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >1024</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >fis.close();</SPAN>
<SPAN lang=EN-US >fc.close();</SPAN>
<SPAN lang=EN-US >TextBox tb = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >TextBox(</SPAN><SPAN lang=EN-US >"Visualizar arquivo: " </SPAN><SPAN lang=EN-US >+ fileName, null, </SPAN><SPAN lang=EN-US >1024</SPAN><SPAN lang=EN-US >,</SPAN>
<SPAN lang=EN-US >TextField.ANY | TextField.UNEDITABLE);</SPAN>
<SPAN lang=EN-US > </SPAN>
<SPAN lang=EN-US >tb.addCommand(back);</SPAN>
<SPAN lang=EN-US >tb.addCommand(exit);</SPAN>
<SPAN lang=EN-US >tb.setCommandListener(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(length > </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >) </SPAN>
<SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >tb.setString(</SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >String(b, </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >, length));</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >Display.getDisplay(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >).setCurrent(tb);</SPAN>
<SPAN lang=EN-US >}</SPAN>
<B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(Exception e) {}</SPAN>
<SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>
|