Archived:Using eSWT FileDialog in Java ME
Archived: This article is archived because it is not considered relevant for third-party developers creating commercial solutions today. If you think this article is still relevant, let us know by adding the template {{ReviewForRemovalFromArchive|user=~~~~|write your reason here}}.
ESWT is a deprecated UI framework. It is not present on Series 40 and on Symbian there are better UI frameworks for using File Dialog (e.g. LWUIT).
ESWT is a deprecated UI framework. It is not present on Series 40 and on Symbian there are better UI frameworks for using File Dialog (e.g. LWUIT).
Article Metadata
Code Example
Source file: Media:FileDialogMIDletSource.zip
Installation file: Media:FileDialogMIDletBinaries.zip
Tested with
Devices(s): S60 3rd Ed. FP2 SDK
Compatibility
Platform(s): S60 3rd Edition, FP2
Article
Keywords: eSWT, FileDialog
Created: jarmlaht
(07 May 2008)
Last edited: hamishwillee
(26 Apr 2013)
Contents |
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.





Manjeet207 - The import org.eclipse.ercp.swt.mobile.Command; can not be resolved .
sir we i try to run this program on my eclips i get error first was The import org.eclipse.ercp.swt.mobile.Command; can not be resolved . i have try to search this on internet but i can not have any solution how i import this class or package in my project . i working on Eclips IDE. plsease tell me how i can import this Class or what problem can in my IDE which is not able to solve this problem.
Thank u.manjeet207 10:33, 1 November 2012 (EET)
Skalogir - eSWT would require a Symbian Development Environment and Device
Hi manjeet207,
You don't need to import any packages related to the eSWT library, including the org.eclipse.ercp.swt.mobile.Command. This package is associated with Symbian Development and it is automatically recognized by Eclipse if you are using a Symbian SDK for development on one of the supported by this example platforms. Please check the Categories at the top of this page, in order to see which platforms are compatible to this example.
You need to download one of the Symbian SDKs found at this page: http://www.developer.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html
and integrate it with your Eclipse as this page explains:
http://www.developer.nokia.com/Resources/Library/Java/#!getting-started/setting-up-the-development-environment.html
Please notice from the compatible Categories, that eSWT is not supported by Series 40 devices. If, for example, you are developing using Nokia SDK 2.0 for Java and your target device is not a Symbian device running S60 3rd Edition FP2 or later software release, you won't be able to compile or run this code.skalogir 12:10, 1 November 2012 (EET)