Archived:Using eSWT FileDialog in Java ME
hamishwillee
(Talk | contribs) |
hamishwillee
(Talk | contribs) m (Hamishwillee - Adding missing translation link) |
||
| (8 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| − | + | [[Category:Java ME]][[Category:MIDP 2.0]][[Category:File Connection and PIM API (JSR-75)]][[Category:ESWT API]][[Category:Code Examples]][[Category:S60 3rd Edition FP2]][[Category:S60 5th Edition]][[Category:Symbian^3]][[Category:Symbian Anna]][[Category:Nokia Belle]][[Category:Symbian]][[Category:Files/Data]] | |
| − | + | {{VersionHint}} | |
| + | |||
{{ArticleMetaData <!-- v1.2 --> | {{ArticleMetaData <!-- v1.2 --> | ||
| − | |sourcecode= | + | |sourcecode= [[Media:FileDialogMIDletSource.zip]] |
| − | |installfile= | + | |installfile= [[Media:FileDialogMIDletBinaries.zip]] |
|devices= S60 3rd Ed. FP2 SDK | |devices= S60 3rd Ed. FP2 SDK | ||
|sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> | |sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> | ||
| Line 31: | Line 32: | ||
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. | 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. | ||
| + | <gallery widths=240px heights=320px> | ||
| + | File:E52ori.jpg| Start Screen on E52 | ||
| + | File:E52toplevel.jpg| Selection window | ||
| + | File:E52depth.jpg| Root of phone memory on E52 | ||
| + | </gallery> | ||
| + | |||
| + | |||
| + | <gallery widths=180px heights=320px> | ||
| + | File:808toplevel.jpg| Selection window | ||
| + | File:808depth.jpg|Root of phone memory on PureView 808 | ||
| + | </gallery> | ||
==Source code== | ==Source code== | ||
| Line 167: | Line 179: | ||
* [[ESWT|eSWT]] | * [[ESWT|eSWT]] | ||
| + | <!-- Translation --> [[pt:Como usar caixas de diálogo eSWT em Java ME]] | ||
Revision as of 10:32, 17 September 2012
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
(17 Sep 2012)
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.




