Categories: S60 3rd Edition, Feature Pack 2 | Java ME | MIDP 2.0 | ESWT | File Connection and PIM API (JSR-75) | Code Examples
This page was last modified 22:45, 19 May 2008.
CS000946 - Using eSWT FileDialog in Java ME
From Forum Nokia Wiki
| ID | CS000946 | Creation date | May 14, 2008 |
| Platform | S60 3rd Edition, FP2 | Tested on devices | S60 3rd Ed. FP2 SDK |
| Category | Java | Subcategory | eSWT, UI |
| Keywords (APIs, classes, methods, functions): eSWT, FileDialog |
Overview
This code snippet demonstrates how to use eSWT's FileDialog class in Java ME. A FileDialog can be opened and when a file is selected, its size is shown on the screen. The following section contains the complete code for compiling and running the example application.
Source code
import javax.microedition.midlet.*; import org.eclipse.ercp.swt.mobile.Command; import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.widgets.*; import org.eclipse.swt.layout.FillLayout; import javax.microedition.io.file.FileConnection; import javax.microedition.io.Connector; import java.io.IOException; public class FileDialogMIDlet extends MIDlet implements Runnable, SelectionListener { private Thread UIThread; private Display display; private Shell formShell; private boolean exiting = false; private Command fileCommand; private Command exitCommand; private Text text; private String textString = "FileDialogMIDlet"; public void startApp() { // Create the eSWT UI thread. if(UIThread == null) { UIThread = new Thread(this); UIThread.start(); } } public void pauseApp() { } public void destroyApp(boolean unconditional) { // Make the event loop exit in the eSWT UI thread. exitEventLoop(); // Wait for the eSWT UI thread to die. try { UIThread.join(); } catch(InterruptedException e) { } } void exitEventLoop() { exiting = true; Display.getDefault().wake(); } // The eSWT UI Thread. public void run() { display = new Display(); FillLayout fillLayout = new FillLayout(); formShell = new Shell(display); formShell.setLayout(fillLayout); formShell.open(); Composite form = new Composite(formShell, SWT.NONE); form.setLayout(fillLayout); text = new Text(form, SWT.READ_ONLY | SWT.WRAP); text.setText(textString); fileCommand = new Command(formShell, Command.SELECT, 0); fileCommand.setText("Open FileDialog"); fileCommand.addSelectionListener(this); exitCommand = new Command(formShell, Command.EXIT, 0); exitCommand.setText("Exit"); exitCommand.addSelectionListener(this); formShell.redraw(); // Execute the eSWT event loop. while(!exiting) { if(!display.readAndDispatch()) { display.sleep(); } } // Clean up and destroy the MIDlet. display.dispose(); notifyDestroyed(); } public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { if (e.widget.equals(fileCommand)) { openFileDialog(); } if (e.widget.equals(exitCommand)) { // Exit command selected, exit the event loop. exitEventLoop(); } } public void openFileDialog() { FileDialog fDialog = new FileDialog(formShell); fDialog.open(); String filterPath = fDialog.getFilterPath(); String temp = filterPath.replace('\\', '/'); // '\‘ characters are replaced with '/' filterPath = temp; String fileName = fDialog.getFileName(); String path = "file:///" + filterPath + fileName; // path is for example: file:///C:/Data/Images/image.png, this can be used as file // URL for FileConnection if (!path.equals("file:///")) { // Path equals "file:///", if file dialog is canceled. try { FileConnection fc = (FileConnection) Connector.open(path, Connector.READ); if (!fc.isDirectory()) { textString = "File size: " + fc.fileSize() + " bytes"; text.setText(textString); } } catch (IOException ioe) { // Thrown if an I/O error occurs or if the method is invoked on a directory. // Note: It is not possible to select a directory in FileDialog. textString = "IOException: " + ioe.getMessage(); text.setText(textString); } catch (SecurityException se) { // Thrown if the security of the application does not have read access for // the file. textString = "SecurityException: " + se.getMessage(); text.setText(textString); } formShell.redraw(); } } }
Postconditions
When a FileDialog is opened and a file is selected in it, the file size is shown on the screen.
See also
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| error in running emulator SDK (2ed 3fp) | nick_santa83 | Symbian Tools & SDKs | 3 | 2007-11-26 05:36 |
| Personal Java and J2ME | zivgr | PersonalJava | 1 | 2003-05-26 15:39 |
| Error in eclipse + Nokia developers suite 2.2 | mgyorffy | Mobile Java Tools & SDKs | 0 | 2005-01-20 16:36 |
| Java PC - Mobile Bluetooth Connection | GattusoMatrazzi | Mobile Java Networking & Messaging & Security | 1 | 2008-03-12 05:47 |
| J2ME emulator | WYSINAWYG | Mobile Java Tools & SDKs | 1 | 2003-11-26 01:54 |

