import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import net.miginfocom.swt.MigLayout; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.preference.ColorSelector; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.ComboBoxCellEditor; import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.ICellModifier; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.ListViewer; import org.eclipse.jface.viewers.TableLayout; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.window.ApplicationWindow; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DropTarget; import org.eclipse.swt.dnd.DropTargetAdapter; import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.FileTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.DirectoryDialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; public class SWTApp extends ApplicationWindow { public SWTApp() { super(null); addStatusLine(); } @Override protected Control createContents(Composite parent) { getStatusLineManager().setMessage("Welcome to SWTApp"); TabFolder tabFolder = new TabFolder(parent, SWT.NONE); TabItem tabItem = new TabItem(tabFolder, SWT.NONE); tabItem.setText("Tab 1"); tabItem.setControl(new MyComposite1(tabFolder)); tabItem = new TabItem(tabFolder, SWT.NONE); tabItem.setText("Tab 2"); tabItem.setControl(new MyComposite2(tabFolder)); tabItem = new TabItem(tabFolder, SWT.NONE); tabItem.setText("Tab 3"); tabItem.setControl(new MyComposite3(tabFolder)); tabItem = new TabItem(tabFolder, SWT.NONE); tabItem.setText("Tab 4"); tabItem.setControl(new MyComposite4(tabFolder)); tabItem = new TabItem(tabFolder, SWT.NONE); tabItem.setText("Tab 5"); tabItem.setControl(new MyComposite5(tabFolder)); getShell().setText("SWTApp"); getShell().setSize(900, 700); return parent; }; static class MyComposite1 extends Composite { public MyComposite1(Composite parent) { super(parent, SWT.NONE); setLayout(new MigLayout("", "[grow][grow]", "[grow, fill]")); Group g1 = new Group(this, SWT.SHADOW_ETCHED_IN); g1.setLayout(new MigLayout("", "[grow, fill]", "[][grow, fill]")); g1.setLayoutData("grow"); Composite1 c1 = new Composite1(g1); c1.setLayoutData("grow, wrap"); Composite2 c2 = new Composite2(g1); c2.setLayoutData("grow"); Group g2 = new Group(this, SWT.SHADOW_ETCHED_IN); g2.setLayout(new MigLayout("", "[grow, fill]", "[grow, fill]")); g2.setLayoutData("grow"); Composite c3 = new Composite3(g2); c3.setLayoutData("grow"); } } static class Composite1 extends Composite { public Composite1(Composite parent) { super(parent, SWT.NONE); setLayout(new MigLayout("", "[grow, fill][]", "[grow, fill]")); Composite c1 = new Composite(this, SWT.NONE); c1.setLayout(new MigLayout("", "[][grow]", "")); Label field1Label = new Label(c1, SWT.NONE); field1Label.setText("Field 1"); Text field1Text = new Text(c1, SWT.BORDER); field1Text.setLayoutData("grow, wrap"); Label field2Label = new Label(c1, SWT.NONE); field2Label.setText("Field 2"); Text field2Text = new Text(c1, SWT.BORDER); field2Text.setLayoutData("grow, wrap"); Label field3Label = new Label(c1, SWT.NONE); field3Label.setText("Field 3"); Text field3Text = new Text(c1, SWT.BORDER); field3Text.setLayoutData("grow, wrap"); Label field4Label = new Label(c1, SWT.NONE); field4Label.setText("Field 4"); Text field4Text = new Text(c1, SWT.BORDER); field4Text.setLayoutData("grow"); Composite c2 = new Composite(this, SWT.NONE); c2.setLayout(new MigLayout("", "", "[grow]")); Button startButton = new Button(c2, SWT.NONE); startButton.setText("START"); startButton.setBackground(getDisplay().getSystemColor(SWT.COLOR_GREEN)); startButton.setLayoutData("grow, wrap"); Button stopButton = new Button(c2, SWT.NONE); stopButton.setText("STOP"); stopButton.setBackground(getDisplay().getSystemColor(SWT.COLOR_RED)); stopButton.setLayoutData("grow, wrap"); Button advancedButton = new Button(c2, SWT.NONE); advancedButton.setText("ADVANCED"); advancedButton.setLayoutData("grow, wrap"); ColorSelector cs = new ColorSelector(c2); Button colorSelectorButton = cs.getButton(); colorSelectorButton.setText("COLOR"); colorSelectorButton.setLayoutData("grow"); } } static class Composite2 extends Composite { public Composite2(Composite parent) { super(parent, SWT.NONE); setLayout(new MigLayout("", "[grow]", "[grow]")); Text statusText = new Text(this, SWT.MULTI | SWT.BORDER); statusText.setEditable(false); statusText.setLayoutData("grow"); } } static class Composite3 extends Composite { public Composite3(Composite parent) { super(parent, SWT.NONE); setLayout(new MigLayout("", "[grow]", "[grow][grow]")); Button b1 = new Button(this, SWT.NONE); b1.setText("Button 1"); b1.setLayoutData("grow, wrap"); Button b2 = new Button(this, SWT.NONE); b2.setText("Button 2"); b2.setLayoutData("grow"); } } static class MyComposite2 extends Composite { public MyComposite2(Composite parent) { super(parent, SWT.NONE); setLayout(new MigLayout("", "[grow, fill]", "[grow, fill][]")); Composite c1 = new Composite(this, SWT.BORDER); c1.setLayout(new MigLayout("", "[grow][grow][grow][grow]", "[grow]")); c1.setLayoutData("wrap"); int[] styles = { SWT.SINGLE, SWT.MULTI }; for (int style = 0; style < styles.length; style++) { ListViewer lv = createListViewer(c1, styles[style]); lv.getList().setLayoutData("grow"); } int[] selectionStyle = { SWT.SINGLE, SWT.MULTI }; int[] checkStyle = { SWT.NONE, SWT.CHECK }; for (int selection = 0; selection < selectionStyle.length; selection++) { for (int check = 0; check < checkStyle.length; check++) { int style = selectionStyle[selection] | checkStyle[check]; TreeViewer tv = createTreeViewer(c1, style); tv.getTree().setLayoutData("grow"); } } Composite c2 = new Composite(this, SWT.BORDER); c2.setLayout(new MigLayout("", "[grow]", "")); ComboViewer cv = createComboViewer(c2); cv.getCombo().setLayoutData("grow"); } private ComboViewer createComboViewer(Composite parent) { ComboViewer viewer = new ComboViewer(parent, SWT.NONE); viewer.setLabelProvider(new LabelProvider() { @Override public String getText(Object element) { return ((ListItem) element).name; } }); viewer.setContentProvider(new IStructuredContentProvider() { @SuppressWarnings("unchecked") @Override public Object[] getElements(Object inputElement) { return ((List<ListItem>) inputElement).toArray(); } @Override public void dispose() { } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } }); List<ListItem> input = new ArrayList<ListItem>(); for (int i = 0; i < 20; i++) { input.add(new ListItem("Item " + i, i)); } viewer.setInput(input); return viewer; } private ListViewer createListViewer(Composite parent, int style) { ListViewer viewer = new ListViewer(parent, style); viewer.setLabelProvider(new LabelProvider() { @Override public String getText(Object element) { return ((ListItem) element).name; } }); viewer.setContentProvider(new IStructuredContentProvider() { @SuppressWarnings("unchecked") @Override public Object[] getElements(Object inputElement) { return ((List<ListItem>) inputElement).toArray(); } @Override public void dispose() { } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } }); List<ListItem> input = new ArrayList<ListItem>(); for (int i = 0; i < 20; i++) { input.add(new ListItem("Item " + i, i)); } viewer.setInput(input); return viewer; } private TreeViewer createTreeViewer(Composite parent, int style) { TreeViewer viewer = new TreeViewer(parent, style); viewer.setContentProvider(new ITreeContentProvider() { public Object[] getChildren(Object parentElement) { return ((TreeNode) parentElement).getChildren().toArray(); } public Object getParent(Object element) { return ((TreeNode) element).getParent(); } public boolean hasChildren(Object element) { return ((TreeNode) element).getChildren().size() > 0; } public Object[] getElements(Object inputElement) { return ((TreeNode) inputElement).getChildren().toArray(); } public void dispose() { } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } }); viewer.setInput(getRootNode()); return viewer; } private TreeNode getRootNode() { TreeNode root = new TreeNode("root"); root.addChild(new TreeNode("child 1").addChild(new TreeNode("subchild 1"))); root.addChild(new TreeNode("child 2").addChild(new TreeNode("subchild 2") .addChild(new TreeNode("grandchild 1")))); return root; } } static class ListItem { public String name; public int value; public ListItem(String n, int v) { name = n; value = v; } } static class TreeNode { private String name; private List<TreeNode> children = new ArrayList<TreeNode>(); private TreeNode parent; public TreeNode(String n) { name = n; } protected Object getParent() { return parent; } public TreeNode addChild(TreeNode child) { children.add(child); child.parent = this; return this; } public List<TreeNode> getChildren() { return children; } public String toString() { return name; } } static class MyComposite3 extends Composite { public MyComposite3(Composite parent) { super(parent, SWT.NONE); setLayout(new MigLayout("", "[grow]", "[grow]")); Table table = createTable(); table.setLayoutData("grow"); } private Table createTable() { final String[] VALUE_SET = new String[] {"xxx", "yyy", "zzz"}; final String NAME_PROPERTY = "name"; final String VALUE_PROPERTY = "value"; Table table = new Table(this, SWT.FULL_SELECTION); final TableViewer viewer = new TableViewer(table); TableLayout layout = new TableLayout(); layout.addColumnData(new ColumnWeightData(50, 75, true)); layout.addColumnData(new ColumnWeightData(50, 75, true)); table.setLayout(layout); TableColumn column = new TableColumn(table, SWT.CENTER); column.setText("Name"); column = new TableColumn(table, SWT.NONE); column.setText("Value"); table.setHeaderVisible(true); viewer.setLabelProvider(new ITableLabelProvider() { @Override public void removeListener(ILabelProviderListener lpl) { } @Override public boolean isLabelProperty(Object element, String property) { return false; } @Override public void dispose() { } @Override public void addListener(ILabelProviderListener lpl) { } @Override public String getColumnText(Object element, int columnIndex) { switch (columnIndex) { case 0: return ((EditableTableItem) element).name; case 1: Number index = ((EditableTableItem) element).value; return VALUE_SET[index.intValue()]; default: return "Invalid column: " + columnIndex; } } @Override public Image getColumnImage(Object element, int columnIndex) { return null; } }); viewer.setContentProvider(new IStructuredContentProvider() { @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } @Override public void dispose() { } @Override public Object[] getElements(Object inputElement) { return (Object[]) inputElement; } }); viewer.setCellModifier(new ICellModifier() { @Override public void modify(Object element, String property, Object value) { TableItem tableItem = (TableItem) element; EditableTableItem data = (EditableTableItem) tableItem.getData(); if (NAME_PROPERTY.equals(property)) { data.name = value.toString(); } else { data.value = (Integer) value; } viewer.refresh(data); } @Override public Object getValue(Object element, String property) { if (NAME_PROPERTY.equals(property)) { return ((EditableTableItem) element).name; } else { return ((EditableTableItem) element).value; } } @Override public boolean canModify(Object element, String property) { return true; } }); viewer.setCellEditors(new CellEditor[] { new TextCellEditor(table), new ComboBoxCellEditor(table, VALUE_SET) }); viewer.setInput(new Object[] { new EditableTableItem("Item 1", 0), new EditableTableItem("Item 2", 1) }); viewer.setColumnProperties(new String[] {NAME_PROPERTY, VALUE_PROPERTY}); createMenu(table, viewer); return table; } private void createMenu(Table table, TableViewer viewer) { MenuManager popupMenu = new MenuManager(); IAction newRowAction = new NewRowAction(viewer); popupMenu.add(newRowAction); Menu menu = popupMenu.createContextMenu(table); table.setMenu(menu); } } static class EditableTableItem { public String name; public Integer value; public EditableTableItem(String name, Integer value) { this.name = name; this.value = value; } } static class NewRowAction extends Action { private TableViewer viewer; public NewRowAction(TableViewer viewer) { super("Insert New Row"); this.viewer = viewer; } @Override public void run() { EditableTableItem newItem = new EditableTableItem( "new row", new Integer(2)); viewer.add(newItem); } } static class MyComposite4 extends Composite { public MyComposite4(Composite parent) { super(parent, SWT.NONE); setLayout(new MigLayout()); createPasswordDialogButton(); createMessageDialogButton(); createMessageBoxButton(); createErrorDialogButton(); createWizardDialogButton(); } private Button createPasswordDialogButton() { Button dialogButton = new Button(this, SWT.PUSH); dialogButton.setText("Password Dialog..."); dialogButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { UserNamePasswordDialog d = new UserNamePasswordDialog(getShell()); d.open(); } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); return dialogButton; } private Button createMessageDialogButton() { Button dialogButton = new Button(this, SWT.PUSH); dialogButton.setText("Message Dialog..."); dialogButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { MessageDialog dialog = new MessageDialog(getShell(), "Greeting Dialog", null, "Hello! How are you today?", MessageDialog.QUESTION, new String[] { "Good", "Been better", "Excited about SWT!" }, 0); dialog.open(); } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); return dialogButton; } private Button createMessageBoxButton() { Button dialogButton = new Button(this, SWT.PUSH); dialogButton.setText("Message Box..."); dialogButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { MessageBox dialog = new MessageBox(getShell(), SWT.OK | SWT.CANCEL); dialog.setMessage("Do you wish to continue?"); dialog.open(); } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); return dialogButton; } private Button createErrorDialogButton() { Button dialogButton = new Button(this, SWT.PUSH); dialogButton.setText("Error Dialog..."); dialogButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { ErrorDialog errorDialog = new ErrorDialog(getShell(), "Test Error Dialog", "This is a test error dialog", createStatus(), IStatus.ERROR | IStatus.INFO); errorDialog.open(); } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); return dialogButton; } private IStatus createStatus() { final String dummyPlugin = "some plugin"; IStatus[] statuses = new IStatus[2]; statuses[0] = new Status(IStatus.ERROR, dummyPlugin, IStatus.OK, "Oh no! An error occurred!", new Exception()); statuses[1] = new Status(IStatus.INFO, dummyPlugin, IStatus.OK, "More errors!?!?", new Exception()); MultiStatus multiStatus = new MultiStatus(dummyPlugin, IStatus.OK, statuses, "Several errors have occurred.", new Exception()); return multiStatus; } private Button createWizardDialogButton() { Button dialogButton = new Button(this, SWT.PUSH); dialogButton.setText("Wizard Dialog..."); dialogButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { WizardDialog dialog = new WizardDialog(getShell(), new ProjectWizard()); dialog.open(); } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); return dialogButton; } } static class UserNamePasswordDialog extends Dialog { private static final int RESET_ID = IDialogConstants.NO_TO_ALL_ID + 1; private Text userNameText; private Text passwordText; public UserNamePasswordDialog(Shell parentShell) { super(parentShell); } @Override protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText("Username/Password Dialog"); } @Override protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); composite.setLayout(new MigLayout("", "[][grow]", "")); Label userNameLabel = new Label(composite, SWT.NONE); userNameLabel.setText("Username: " ); userNameText = new Text(composite, SWT.SINGLE | SWT.BORDER); userNameText.setLayoutData("grow, wrap"); Label passwordLabel = new Label(composite, SWT.NONE); passwordLabel.setText("Password: "); passwordText = new Text(composite, SWT.SINGLE | SWT.PASSWORD | SWT.BORDER); passwordText.setLayoutData("grow"); return composite; } @Override protected void createButtonsForButtonBar(Composite parent) { super.createButtonsForButtonBar(parent); createButton(parent, RESET_ID, "Reset All", false); } @Override protected void buttonPressed(int buttonId) { if (buttonId == RESET_ID) { userNameText.setText(""); passwordText.setText(""); } else { super.buttonPressed(buttonId); } } } static class DirectoryPage extends WizardPage { public static final String PAGE_NAME = "Directory"; private Button button; public DirectoryPage() { super(PAGE_NAME, "Directory Page", null); } @Override public void createControl(Composite parent) { Composite topLevel = new Composite(parent, SWT.NONE); topLevel.setLayout(new MigLayout()); button = new Button(topLevel, SWT.CHECK); button.setText("Use default directory?"); setControl(topLevel); setPageComplete(true); } public boolean useDefaultDirectory() { return button.getSelection(); } } static class ChooseDirectoryPage extends WizardPage { public static final String PAGE_NAME = "Choose Directory"; private Text text; public ChooseDirectoryPage() { super(PAGE_NAME, "Choose Directory Page", null); } @Override public void createControl(Composite parent) { Composite topLevel = new Composite(parent, SWT.NONE); topLevel.setLayout(new MigLayout("", "[][grow][]", "")); Label l = new Label(topLevel, SWT.CENTER); l.setText("Enter the directory to use:"); text = new Text(topLevel, SWT.SINGLE | SWT.BORDER); text.setEditable(false); text.setLayoutData("grow"); Button b = new Button(topLevel, SWT.PUSH); b.setText("Choose Directory"); b.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { DirectoryDialog dialog = new DirectoryDialog(getShell()); String directory = dialog.open(); text.setText(directory); } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); setControl(topLevel); setPageComplete(true); } public String getDirectory() { return text.getText(); } } static class SummaryPage extends WizardPage { public static final String PAGE_NAME = "Summary"; private Label textLabel; private Composite topLevel; public SummaryPage() { super(PAGE_NAME, "Summary Page", null); } @Override public void createControl(Composite parent) { topLevel = new Composite(parent, SWT.NONE); topLevel.setLayout(new MigLayout()); textLabel = new Label(topLevel, SWT.CENTER); textLabel.setText(""); textLabel.setLayoutData("grow"); setControl(topLevel); setPageComplete(true); } public void updateText(String newText) { textLabel.setText(newText); topLevel.pack(); } } static class ProjectWizard extends Wizard { public void addPages() { addPage(new DirectoryPage()); addPage(new ChooseDirectoryPage()); addPage(new SummaryPage()); } @Override public boolean performFinish() { DirectoryPage dirPage = getDirectoryPage(); if (dirPage.useDefaultDirectory()) { System.out.println("Using default directory"); } else { ChooseDirectoryPage choosePage = getChoosePage(); System.out.println("Using directory: " + choosePage.getDirectory()); } return true; } private ChooseDirectoryPage getChoosePage() { return (ChooseDirectoryPage) getPage(ChooseDirectoryPage.PAGE_NAME); } private DirectoryPage getDirectoryPage() { return (DirectoryPage) getPage(DirectoryPage.PAGE_NAME); } @Override public boolean performCancel() { System.out.println("Perform Cancel called"); return true; } @Override public IWizardPage getNextPage(IWizardPage page) { if (page instanceof DirectoryPage) { DirectoryPage dirPage = (DirectoryPage) page; if (dirPage.useDefaultDirectory()) { SummaryPage summaryPage = (SummaryPage) getPage(SummaryPage.PAGE_NAME); summaryPage.updateText("Using default directory"); return summaryPage; } } IWizardPage nextPage = super.getNextPage(page); if (nextPage instanceof SummaryPage) { SummaryPage summary = (SummaryPage) nextPage; DirectoryPage dirPage = getDirectoryPage(); summary.updateText(dirPage.useDefaultDirectory() ? "Using default directory" : "Using directory: " + getChoosePage().getDirectory()); } return nextPage; } } static class MyComposite5 extends Composite { public MyComposite5(Composite parent) { super(parent, SWT.NONE); setLayout(new MigLayout("", "[grow, fill]", "[grow, fill]")); Text text = createTextArea(); text.setLayoutData("grow"); } private Text createTextArea() { Text text = new Text(this, SWT.MULTI | SWT.BORDER); DropTarget target = new DropTarget(text, DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT); target.setTransfer(new Transfer[] { FileTransfer.getInstance() }); target.addDropListener(new DropTargetAdapter() { @Override public void drop(DropTargetEvent event) { DropTarget target = (DropTarget) event.widget; Text t = (Text) target.getControl(); String[] fileList = (String[]) event.data; t.setText(read(fileList[0])); } }); return text; } private String read(String path) { String text = ""; BufferedReader br = null; try { File file = new File(path); br = new BufferedReader(new FileReader(file)); String line = ""; while ((line = br.readLine()) != null) { text += line + System.getProperty("line.separator"); } int lastIndex = text.length() - System.getProperty("line.separator").length(); text = text.substring(0, lastIndex); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } return text; } } public static void show() { SWTApp app = new SWTApp(); app.setBlockOnOpen(true); app.open(); Display.getCurrent().dispose(); } }
Monday, May 14, 2012
SWT/JFace Examples
This example contains a lot of examples how to use SWT/JFace components with MigLayout. Not all SWT/JFace components are covered here.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment