Java tutorial
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Dialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; public class SWTTextEditor { Display d; Shell s; SWTTextEditor() { d = new Display(); s = new Shell(d, SWT.CLOSE); s.setSize(500, 500); s.setText("SWT Text Editor"); final ToolBar bar = new ToolBar(s, SWT.HORIZONTAL); final Text t = new Text(s, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.WRAP | SWT.BORDER); // create images for toolbar buttons final Image saveIcon = new Image(d, "save.jpg"); final Image openIcon = new Image(d, "open.jpg"); final Image childIcon = new Image(d, "userH.ico"); final Image cutIcon = new Image(d, "cut.jpg"); final Image copyIcon = new Image(d, "copy.jpg"); final Image pasteIcon = new Image(d, "paste.jpg"); //create ToolBar and ToolItems final ToolItem openToolItem = new ToolItem(bar, SWT.PUSH); final ToolItem saveToolItem = new ToolItem(bar, SWT.PUSH); final ToolItem sep1 = new ToolItem(bar, SWT.SEPARATOR); final ToolItem cutToolItem = new ToolItem(bar, SWT.PUSH); final ToolItem copyToolItem = new ToolItem(bar, SWT.PUSH); final ToolItem pasteToolItem = new ToolItem(bar, SWT.PUSH); // create the menu system final Menu m = new Menu(s, SWT.BAR); final MenuItem file = new MenuItem(m, SWT.CASCADE); final Menu filemenu = new Menu(s, SWT.DROP_DOWN); final MenuItem openMenuItem = new MenuItem(filemenu, SWT.PUSH); final MenuItem saveMenuItem = new MenuItem(filemenu, SWT.PUSH); final MenuItem separator = new MenuItem(filemenu, SWT.SEPARATOR); final MenuItem exitMenuItem = new MenuItem(filemenu, SWT.PUSH); final MenuItem edit = new MenuItem(m, SWT.CASCADE); final Menu editmenu = new Menu(s, SWT.DROP_DOWN); final MenuItem cutMenuItem = new MenuItem(editmenu, SWT.PUSH); final MenuItem copyMenuItem = new MenuItem(editmenu, SWT.PUSH); final MenuItem pasteMenuItem = new MenuItem(editmenu, SWT.PUSH); final MenuItem help = new MenuItem(m, SWT.CASCADE); final Menu helpmenu = new Menu(s, SWT.DROP_DOWN); final MenuItem aboutMenuItem = new MenuItem(helpmenu, SWT.PUSH); //create reusable named inner classes for SelectionListeners class Open extends SelectionAdapter { public void widgetSelected(SelectionEvent event) { FileDialog fileDialog = new FileDialog(s, SWT.OPEN); fileDialog.setText("Open"); fileDialog.setFilterPath("C:/"); String[] filterExt = { "*.txt", "*.*" }; fileDialog.setFilterExtensions(filterExt); String selected = fileDialog.open(); if (selected == null) return; // code here to open the file and display FileReader file = null; try { file = new FileReader(selected); } catch (FileNotFoundException e) { MessageBox messageBox = new MessageBox(s, SWT.ICON_ERROR | SWT.OK); messageBox.setMessage("Could not open file."); messageBox.setText("Error"); messageBox.open(); return; } BufferedReader fileInput = new BufferedReader(file); String text = null; StringBuffer sb = new StringBuffer(); try { do { if (text != null) sb.append(text); } while ((text = fileInput.readLine()) != null); } catch (IOException e1) { MessageBox messageBox = new MessageBox(s, SWT.ICON_ERROR | SWT.OK); messageBox.setMessage("Could not write to file."); messageBox.setText("Error"); messageBox.open(); return; } t.setText(sb.toString()); } } class Save extends SelectionAdapter { public void widgetSelected(SelectionEvent event) { FileDialog fileDialog = new FileDialog(s, SWT.SAVE); fileDialog.setText("Save"); fileDialog.setFilterPath("C:/"); String[] filterExt = { "*.txt", "*.*" }; fileDialog.setFilterExtensions(filterExt); String selected = fileDialog.open(); if (selected == null) return; File file = new File(selected); try { FileWriter fileWriter = new FileWriter(file); fileWriter.write(t.getText()); fileWriter.close(); } catch (IOException e) { MessageBox messageBox = new MessageBox(s, SWT.ICON_ERROR | SWT.OK); messageBox.setMessage("File I/O Error."); messageBox.setText("Error"); messageBox.open(); return; } } } class Cut extends SelectionAdapter { public void widgetSelected(SelectionEvent event) { t.cut(); } } class Copy extends SelectionAdapter { public void widgetSelected(SelectionEvent event) { t.copy(); } } class Paste extends SelectionAdapter { public void widgetSelected(SelectionEvent event) { t.paste(); } } //set the size and location of the user interface widgets bar.setSize(500, 55); bar.setLocation(10, 0); t.setBounds(0, 56, 490, 395); //Configure the ToolBar openToolItem.setImage(openIcon); openToolItem.setText("Open"); openToolItem.setToolTipText("Open File"); saveToolItem.setImage(saveIcon); saveToolItem.setText("Save"); saveToolItem.setToolTipText("Save File"); cutToolItem.setImage(cutIcon); cutToolItem.setText("Cut"); cutToolItem.setToolTipText("Cut"); copyToolItem.setImage(copyIcon); copyToolItem.setText("Copy"); copyToolItem.setToolTipText("Copy"); pasteToolItem.setImage(pasteIcon); pasteToolItem.setText("Paste"); pasteToolItem.setToolTipText("Paste"); //add SelectionListeners to the toolbar buttons openToolItem.addSelectionListener(new Open()); saveToolItem.addSelectionListener(new Save()); cutToolItem.addSelectionListener(new Cut()); copyToolItem.addSelectionListener(new Copy()); pasteToolItem.addSelectionListener(new Paste()); //Configure the menu items file.setText("&File"); file.setMenu(filemenu); openMenuItem.setText("&Open\tCTRL+O"); openMenuItem.setAccelerator(SWT.CTRL + 'O'); saveMenuItem.setText("&Save\tCTRL+S"); saveMenuItem.setAccelerator(SWT.CTRL + 'S'); exitMenuItem.setText("E&xit"); edit.setText("&Edit"); edit.setMenu(editmenu); cutMenuItem.setText("&Cut"); copyMenuItem.setText("Co&py"); pasteMenuItem.setText("&Paste"); help.setText("&Help"); help.setMenu(helpmenu); aboutMenuItem.setText("&About"); // add SelectionListeners for the menu items openMenuItem.addSelectionListener(new Open()); saveMenuItem.addSelectionListener(new Save()); exitMenuItem.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { System.exit(0); } }); cutMenuItem.addSelectionListener(new Cut()); copyMenuItem.addSelectionListener(new Copy()); pasteMenuItem.addSelectionListener(new Paste()); aboutMenuItem.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { AboutDialog ad = new AboutDialog(s); ad.open(); } }); s.setMenuBar(m); s.open(); while (!s.isDisposed()) { if (!d.readAndDispatch()) d.sleep(); } d.dispose(); } // include a main method to make the class executable public static void main(String[] args) { SWTTextEditor ste = new SWTTextEditor(); } } class AboutDialog extends Dialog { AboutDialog(Shell parent) { super(parent); } public void open() { Shell parent = getParent(); final Shell dialog = new Shell(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL); dialog.setSize(200, 100); dialog.setText("About"); final Label l = new Label(dialog, SWT.NONE); l.setText("An SWT Text Editor"); l.setBounds(43, 20, 100, 20); Button b = new Button(dialog, SWT.PUSH | SWT.BORDER); b.setText("OK"); b.setBounds(80, 45, 40, 25); b.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { dialog.dispose(); } }); dialog.open(); Display display = parent.getDisplay(); while (!dialog.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } }