List of usage examples for org.eclipse.swt.widgets Display syncExec
public void syncExec(Runnable runnable)
run()
method of the runnable to be invoked by the user-interface thread at the next reasonable opportunity. From source file:TableFillThread.java
public static void main(String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setText("Lazy Table"); shell.setLayout(new FillLayout()); final Table table = new Table(shell, SWT.BORDER | SWT.MULTI); table.setSize(200, 200);//from ww w . j a v a 2 s . co m Thread thread = new Thread() { public void run() { for (int i = 0; i < 20000; i++) { final int[] index = new int[] { i }; display.syncExec(new Runnable() { public void run() { if (table.isDisposed()) return; TableItem item = new TableItem(table, SWT.NONE); item.setText("Table Item " + index[0]); } }); } } }; thread.start(); shell.setSize(200, 200); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:SyncExecExample.java
public static void main(String[] args) { final Display display = new Display(); Shell shell = new Shell(display); final Runnable print = new Runnable() { public void run() { System.out.println("Print from thread: \t" + Thread.currentThread().getName()); }// ww w . j a va2 s . com }; final Thread applicationThread = new Thread("applicationThread") { public void run() { System.out.println("Hello from thread: \t" + Thread.currentThread().getName()); display.syncExec(print); System.out.println("Bye from thread: \t" + Thread.currentThread().getName()); } }; shell.setText("syncExec Example"); shell.setSize(300, 100); Button button = new Button(shell, SWT.CENTER); button.setText("Click to start"); button.setBounds(shell.getClientArea()); button.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { applicationThread.start(); } }); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) {// If no more entries in event queue display.sleep(); } } display.dispose(); }
From source file:Snippet7.java
public static void main(String[] args) { final Display display = new Display(); final Image image = new Image(display, 16, 16); GC gc = new GC(image); gc.setBackground(display.getSystemColor(SWT.COLOR_RED)); gc.fillRectangle(image.getBounds()); gc.dispose();//from w w w . ja v a 2 s . c o m final Shell shell = new Shell(display); shell.setText("Lazy Table"); shell.setLayout(new FillLayout()); final Table table = new Table(shell, SWT.BORDER | SWT.MULTI); table.setSize(200, 200); Thread thread = new Thread() { public void run() { for (int i = 0; i < 20000; i++) { if (table.isDisposed()) return; final int[] index = new int[] { i }; display.syncExec(new Runnable() { public void run() { if (table.isDisposed()) return; TableItem item = new TableItem(table, SWT.NONE); item.setText("Table Item " + index[0]); item.setImage(image); } }); } } }; thread.start(); shell.setSize(200, 200); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } image.dispose(); display.dispose(); }
From source file:org.eclipse.swt.snippets.Snippet7.java
public static void main(String[] args) { final Display display = new Display(); final Image image = new Image(display, 16, 16); GC gc = new GC(image); gc.setBackground(display.getSystemColor(SWT.COLOR_RED)); gc.fillRectangle(image.getBounds()); gc.dispose();/*from w w w . j a v a 2 s . c o m*/ final Shell shell = new Shell(display); shell.setText("Lazy Table"); shell.setLayout(new FillLayout()); final Table table = new Table(shell, SWT.BORDER | SWT.MULTI); table.setSize(200, 200); Thread thread = new Thread() { @Override public void run() { for (int i = 0; i < 20000; i++) { if (table.isDisposed()) return; final int[] index = new int[] { i }; display.syncExec(() -> { if (table.isDisposed()) return; TableItem item = new TableItem(table, SWT.NONE); item.setText("Table Item " + index[0]); item.setImage(image); }); } } }; thread.start(); shell.setSize(200, 200); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } image.dispose(); display.dispose(); }
From source file:org.eclipse.swt.snippets.Snippet130.java
public static void main(String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setText("Snippet 130"); shell.setLayout(new GridLayout()); final Text text = new Text(shell, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL); text.setLayoutData(new GridData(GridData.FILL_BOTH)); final int[] nextId = new int[1]; Button b = new Button(shell, SWT.PUSH); b.setText("invoke long running job"); b.addSelectionListener(widgetSelectedAdapter(e -> { Runnable longJob = new Runnable() { boolean done = false; int id; @Override// w ww . j a va 2 s . c o m public void run() { Thread thread = new Thread(() -> { id = nextId[0]++; display.syncExec(() -> { if (text.isDisposed()) return; text.append("\nStart long running task " + id); }); for (int i = 0; i < 100000; i++) { if (display.isDisposed()) return; System.out.println("do task that takes a long time in a separate thread " + id); } if (display.isDisposed()) return; display.syncExec(() -> { if (text.isDisposed()) return; text.append("\nCompleted long running task " + id); }); done = true; display.wake(); }); thread.start(); while (!done && !shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } }; BusyIndicator.showWhile(display, longJob); })); shell.setSize(250, 150); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:BusyCursorDisplay.java
public static void main(String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setLayout(new GridLayout()); final Text text = new Text(shell, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL); text.setLayoutData(new GridData(GridData.FILL_BOTH)); final int[] nextId = new int[1]; Button b = new Button(shell, SWT.PUSH); b.setText("invoke long running job"); b.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { Runnable longJob = new Runnable() { boolean done = false; int id; public void run() { Thread thread = new Thread(new Runnable() { public void run() { id = nextId[0]++; display.syncExec(new Runnable() { public void run() { if (text.isDisposed()) return; text.append("\nStart long running task " + id); }/* ww w .j a va 2 s .c o m*/ }); for (int i = 0; i < 100000; i++) { if (display.isDisposed()) return; System.out.println("do task that takes a long time in a separate thread " + id); } if (display.isDisposed()) return; display.syncExec(new Runnable() { public void run() { if (text.isDisposed()) return; text.append("\nCompleted long running task " + id); } }); done = true; display.wake(); } }); thread.start(); while (!done && !shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } }; BusyIndicator.showWhile(display, longJob); } }); shell.setSize(250, 150); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:org.eclipse.swt.snippets.Snippet151.java
public static void main(String[] args) { final Display display = new Display(); Shell shell = new Shell(display); shell.setText("Snippet 151"); shell.setLayout(new FillLayout()); final Table table = new Table(shell, SWT.BORDER | SWT.VIRTUAL); table.addListener(SWT.SetData, e -> { TableItem item = (TableItem) e.item; int index = table.indexOf(item); item.setText("Item " + data[index]); });//from w w w. j a v a2 s. com Thread thread = new Thread() { @Override public void run() { int count = 0; Random random = new Random(); while (count++ < 500) { if (table.isDisposed()) return; // add 10 random numbers to array and sort int grow = 10; int[] newData = new int[data.length + grow]; System.arraycopy(data, 0, newData, 0, data.length); int index = data.length; data = newData; for (int j = 0; j < grow; j++) { data[index++] = random.nextInt(); } Arrays.sort(data); display.syncExec(() -> { if (table.isDisposed()) return; table.setItemCount(data.length); table.clearAll(); }); try { Thread.sleep(500); } catch (Throwable t) { } } } }; thread.start(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:Snippet151.java
public static void main(String[] args) { final Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); final Table table = new Table(shell, SWT.BORDER | SWT.VIRTUAL); table.addListener(SWT.SetData, new Listener() { public void handleEvent(Event e) { TableItem item = (TableItem) e.item; int index = table.indexOf(item); item.setText("Item " + data[index]); }/* w w w. j a v a2s .com*/ }); Thread thread = new Thread() { public void run() { int count = 0; Random random = new Random(); while (count++ < 500) { if (table.isDisposed()) return; // add 10 random numbers to array and sort int grow = 10; int[] newData = new int[data.length + grow]; System.arraycopy(data, 0, newData, 0, data.length); int index = data.length; data = newData; for (int j = 0; j < grow; j++) { data[index++] = random.nextInt(); } Arrays.sort(data); display.syncExec(new Runnable() { public void run() { if (table.isDisposed()) return; table.setItemCount(data.length); table.clearAll(); } }); try { Thread.sleep(500); } catch (Throwable t) { } } } }; thread.start(); shell.open(); while (!shell.isDisposed() || thread.isAlive()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }
From source file:org.amanzi.splash.chart.Charts.java
public static void openChartEditor(final IEditorInput editorInput, final String editorId) { IWorkbench workbench = PlatformUI.getWorkbench(); final IWorkbenchPage page = workbench.getWorkbenchWindows()[0].getActivePage(); Display display = Display.getCurrent(); if (display == null) { display = Display.getDefault();// w w w . j av a 2s .c o m } display.syncExec(new Runnable() { @Override public void run() { try { NeoSplashUtil.logn("Try to open editor " + editorId); page.openEditor(editorInput, editorId); } catch (PartInitException e) { NeoSplashUtil.logn(e.getMessage()); } } }); }
From source file:SWT2D.java
private void run() { // Create top level shell final Display display = new Display(); final Shell shell = new Shell(display); shell.setText("Java 2D Example"); // GridLayout for canvas and button shell.setLayout(new GridLayout()); // Create container for AWT canvas final Composite canvasComp = new Composite(shell, SWT.EMBEDDED); // Set preferred size GridData data = new GridData(); data.widthHint = 600;/*w ww . j a va2 s . c o m*/ data.heightHint = 500; canvasComp.setLayoutData(data); // Create AWT Frame for Canvas java.awt.Frame canvasFrame = SWT_AWT.new_Frame(canvasComp); // Create Canvas and add it to the Frame final java.awt.Canvas canvas = new java.awt.Canvas(); canvasFrame.add(canvas); // Get graphical context and cast to Java2D final java.awt.Graphics2D g2d = (java.awt.Graphics2D) canvas.getGraphics(); // Enable antialiasing g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // Remember initial transform final java.awt.geom.AffineTransform origTransform = g2d.getTransform(); // Create Clear button and position it Button clearButton = new Button(shell, SWT.PUSH); clearButton.setText("Clear"); data = new GridData(); data.horizontalAlignment = GridData.CENTER; clearButton.setLayoutData(data); // Event processing for Clear button clearButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { // Delete word list and redraw canvas wordList.clear(); canvasComp.redraw(); } }); // Process canvas mouse clicks canvas.addMouseListener(new java.awt.event.MouseListener() { public void mouseClicked(java.awt.event.MouseEvent e) { } public void mouseEntered(java.awt.event.MouseEvent e) { } public void mouseExited(java.awt.event.MouseEvent e) { } public void mousePressed(java.awt.event.MouseEvent e) { // Manage pop-up editor display.syncExec(new Runnable() { public void run() { if (eShell == null) { // Create new Shell: non-modal! eShell = new Shell(shell, SWT.NO_TRIM | SWT.MODELESS); eShell.setLayout(new FillLayout()); // Text input field eText = new Text(eShell, SWT.BORDER); eText.setText("Text rotation in the SWT?"); eShell.pack(); // Set position (Display coordinates) java.awt.Rectangle bounds = canvas.getBounds(); org.eclipse.swt.graphics.Point pos = canvasComp.toDisplay(bounds.width / 2, bounds.height / 2); Point size = eShell.getSize(); eShell.setBounds(pos.x, pos.y, size.x, size.y); // Open Shell eShell.open(); } else if (!eShell.isVisible()) { // Editor versteckt, sichtbar machen eShell.setVisible(true); } else { // Editor is visible - get text String t = eText.getText(); // set editor invisible eShell.setVisible(false); // Add text to list and redraw canvas wordList.add(t); canvasComp.redraw(); } } }); } public void mouseReleased(java.awt.event.MouseEvent e) { } }); // Redraw the canvas canvasComp.addPaintListener(new PaintListener() { public void paintControl(PaintEvent e) { // Pass the redraw task to AWT event queue java.awt.EventQueue.invokeLater(new Runnable() { public void run() { // Compute canvas center java.awt.Rectangle bounds = canvas.getBounds(); int originX = bounds.width / 2; int originY = bounds.height / 2; // Reset canvas g2d.setTransform(origTransform); g2d.setColor(java.awt.Color.WHITE); g2d.fillRect(0, 0, bounds.width, bounds.height); // Set font g2d.setFont(new java.awt.Font("Myriad", java.awt.Font.PLAIN, 32)); double angle = 0d; // Prepare star shape double increment = Math.toRadians(30); Iterator iter = wordList.iterator(); while (iter.hasNext()) { // Determine text colors in RGB color cycle float red = (float) (0.5 + 0.5 * Math.sin(angle)); float green = (float) (0.5 + 0.5 * Math.sin(angle + Math.toRadians(120))); float blue = (float) (0.5 + 0.5 * Math.sin(angle + Math.toRadians(240))); g2d.setColor(new java.awt.Color(red, green, blue)); // Redraw text String text = (String) iter.next(); g2d.drawString(text, originX + 50, originY); // Rotate for next text output g2d.rotate(increment, originX, originY); angle += increment; } } }); } }); // Finish shell and open it shell.pack(); shell.open(); // SWT event processing while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); }