summaryrefslogtreecommitdiffstats
path: root/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsExample.java
diff options
context:
space:
mode:
Diffstat (limited to 'examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsExample.java')
-rw-r--r--examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsExample.java514
1 files changed, 0 insertions, 514 deletions
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsExample.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsExample.java
deleted file mode 100644
index 31d1dbc038..0000000000
--- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/graphics/GraphicsExample.java
+++ /dev/null
@@ -1,514 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.swt.examples.graphics;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import java.util.Vector;
-
-import org.eclipse.swt.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-
-public class GraphicsExample {
-
- Composite parent;
- GraphicsTab[] tabs;
- GraphicsTab tab;
- Object[] tabBackground;
-
- boolean animate;
-
- Listener redrawListener;
-
- ToolBar toolBar;
- Tree tabList;
- Canvas canvas;
- Composite controlPanel, tabPanel;
- ToolItem playItem, pauseItem, backItem, dbItem;
- Spinner timerSpinner;
-
- Menu backMenu;
- MenuItem customMI;
- Image customImage;
- Color customColor;
-
- Vector images;
-
- static boolean advanceGraphics, advanceGraphicsInit;
-
- static final int TIMER = 30;
- static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("examples_graphics"); //$NON-NLS-1$
-
-public GraphicsExample(final Composite parent) {
- this.parent = parent;
- redrawListener = new Listener() {
- public void handleEvent(Event e) {
- redraw();
- }
- };
- GridData data;
- GridLayout layout = new GridLayout(3, false);
- layout.horizontalSpacing = 1;
- parent.setLayout(layout);
- tabs = createTabs();
- images = new Vector();
- createToolBar(parent);
- createTabList(parent);
- final Sash sash = new Sash(parent, SWT.VERTICAL);
- createTabPanel(parent);
- data = new GridData(SWT.FILL, SWT.CENTER, true, false);
- data.horizontalSpan = 3;
- toolBar.setLayoutData(data);
- data = new GridData(SWT.CENTER, SWT.FILL, false, true);
- data.widthHint = tabList.computeSize(SWT.DEFAULT, SWT.DEFAULT).x + 50;
- tabList.setLayoutData(data);
- data = new GridData(SWT.CENTER, SWT.FILL, false, true);
- sash.setLayoutData(data);
- data = new GridData(SWT.FILL, SWT.FILL, true, true);
- tabPanel.setLayoutData(data);
- sash.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- if (event.detail != SWT.DRAG) {
- GridData data = (GridData)tabList.getLayoutData();
- data.widthHint = event.x - tabList.computeTrim(0, 0, 0, 0).width;
- parent.layout(true);
- animate = pauseItem.getEnabled();
- } else {
- animate = false;
- }
- }
- });
- setTab(tab);
- startAnimationTimer();
-}
-
-boolean checkAdvancedGraphics() {
- if (advanceGraphicsInit) return advanceGraphics;
- advanceGraphicsInit = true;
- Display display = Display.getCurrent();
- try {
- Path path = new Path(display);
- path.dispose();
- } catch (SWTException e) {
- Shell shell = display.getActiveShell(), newShell = null;
- if (shell == null) shell = newShell = new Shell(display);
- MessageBox dialog = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
- dialog.setText(RESOURCE_BUNDLE.getString("Warning")); //$NON-NLS-1$
- dialog.setMessage(RESOURCE_BUNDLE.getString("LibNotFound")); //$NON-NLS-1$
- dialog.open();
- if (newShell != null) newShell.dispose();
- return false;
- }
- return advanceGraphics = true;
-}
-
-void createCanvas(Composite parent) {
- canvas = new Canvas(parent, SWT.NO_BACKGROUND);
- canvas.addListener(SWT.Paint, new Listener() {
- public void handleEvent(Event event) {
- GC gc;
- Rectangle rect = canvas.getClientArea();
- Image buffer = null;
- if (dbItem.getSelection()) {
- buffer = new Image(canvas.getDisplay(), rect);
- gc = new GC(buffer);
- } else {
- gc = event.gc;
- }
- paintBackground(gc, rect);
- GraphicsTab tab = getTab();
- if (tab != null) tab.paint(gc, rect.width, rect.height);
- if (gc != event.gc) gc.dispose();
- if (buffer != null) {
- event.gc.drawImage(buffer, 0, 0);
- buffer.dispose();
- }
- }
- });
-}
-
-void createControlPanel(Composite parent) {
- Group group;
- controlPanel = group = new Group(parent, SWT.NONE);
- group.setText(getResourceString("Settings")); //$NON-NLS-1$
- controlPanel.setLayout(new RowLayout());
-}
-
-void createTabPanel(Composite parent) {
- tabPanel = new Composite(parent, SWT.NONE);
- GridData data;
- GridLayout layout = new GridLayout(1, false);
- layout.marginHeight = layout.marginWidth = 0;
- tabPanel.setLayout(layout);
- createCanvas(tabPanel);
- createControlPanel(tabPanel);
- data = new GridData(SWT.FILL, SWT.FILL, true, true);
- canvas.setLayoutData(data);
- data = new GridData(SWT.FILL, SWT.CENTER, true, false);
- controlPanel.setLayoutData(data);
-}
-
-void createToolBar(final Composite parent) {
- final Display display = parent.getDisplay();
-
- toolBar = new ToolBar(parent, SWT.FLAT);
- Listener toolBarListener = new Listener() {
- public void handleEvent(Event event) {
- switch (event.type) {
- case SWT.Selection: {
- if (event.widget == playItem) {
- animate = true;
- playItem.setEnabled(!animate);
- pauseItem.setEnabled(animate);
- } else if (event.widget == pauseItem) {
- animate = false;
- playItem.setEnabled(!animate);
- pauseItem.setEnabled(animate);
- } else if (event.widget == backItem) {
- final ToolItem toolItem = (ToolItem) event.widget;
- final ToolBar toolBar = toolItem.getParent();
- Rectangle toolItemBounds = toolItem.getBounds();
- Point point = toolBar.toDisplay(new Point(toolItemBounds.x, toolItemBounds.y));
- backMenu.setLocation(point.x, point.y + toolItemBounds.height);
- backMenu.setVisible(true);
- }
- }
- break;
- }
- }
- };
-
- playItem = new ToolItem(toolBar, SWT.PUSH);
- playItem.setText(getResourceString("Play")); //$NON-NLS-1$
- playItem.setImage(loadImage(display, "play.gif")); //$NON-NLS-1$
- playItem.addListener(SWT.Selection, toolBarListener);
-
- pauseItem = new ToolItem(toolBar, SWT.PUSH);
- pauseItem.setText(getResourceString("Pause")); //$NON-NLS-1$
- pauseItem.setImage(loadImage(display, "pause.gif")); //$NON-NLS-1$
- pauseItem.addListener(SWT.Selection, toolBarListener);
-
- backItem = new ToolItem(toolBar, SWT.PUSH);
- backItem.setText(getResourceString("Background")); //$NON-NLS-1$
- backItem.addListener(SWT.Selection, toolBarListener);
- String[] names = new String[]{
- getResourceString("White"), //$NON-NLS-1$
- getResourceString("Black"), //$NON-NLS-1$
- getResourceString("Red"), //$NON-NLS-1$
- getResourceString("Green"), //$NON-NLS-1$
- getResourceString("Blue"), //$NON-NLS-1$
- getResourceString("CustomColor"), //$NON-NLS-1$
- };
- Color[] colors = new Color[]{
- display.getSystemColor(SWT.COLOR_WHITE),
- display.getSystemColor(SWT.COLOR_BLACK),
- display.getSystemColor(SWT.COLOR_RED),
- display.getSystemColor(SWT.COLOR_GREEN),
- display.getSystemColor(SWT.COLOR_BLUE),
- null,
- };
- backMenu = new Menu(parent);
- Listener listener = new Listener() {
- public void handleEvent(Event event) {
- MenuItem item = (MenuItem)event.widget;
- if (customMI == item) {
- ColorDialog dialog = new ColorDialog(parent.getShell());
- RGB rgb = dialog.open();
- if (rgb == null) return;
- if (customColor != null) customColor.dispose();
- customColor = new Color(display, rgb);
- if (customImage != null) customImage.dispose();
- customImage = createImage(display, customColor);
- item.setData(new Object[]{customColor, customImage});
- item.setImage(customImage);
- }
- tabBackground = (Object[])item.getData();
- backItem.setImage((Image)tabBackground[1]);
- canvas.redraw();
- }
- };
- for (int i = 0; i < names.length; i++) {
- MenuItem item = new MenuItem(backMenu, SWT.NONE);
- item.setText(names[i]);
- item.addListener(SWT.Selection, listener);
- Image image = null;
- if (colors[i] != null) {
- image = createImage(display, colors[i]);
- images.addElement(image);
- item.setImage(image);
- } else {
- // custom menu item
- customMI = item;
- }
- item.setData(new Object[]{colors[i], image});
- if (tabBackground == null) {
- tabBackground = (Object[])item.getData();
- backItem.setImage((Image)tabBackground[1]);
- }
- }
-
- dbItem = new ToolItem(toolBar, SWT.CHECK);
- dbItem.setText(getResourceString("DoubleBuffer")); //$NON-NLS-1$
- dbItem.setImage(loadImage(display, "db.gif")); //$NON-NLS-1$
-
- ToolItem separator = new ToolItem(toolBar, SWT.SEPARATOR);
- Composite comp = new Composite(toolBar, SWT.NONE);
- GridData data;
- GridLayout layout = new GridLayout(1, false);
- layout.verticalSpacing = 0;
- layout.marginWidth = layout.marginHeight = 3;
- comp.setLayout(layout);
- timerSpinner = new Spinner(comp, SWT.BORDER | SWT.WRAP);
- data = new GridData(SWT.CENTER, SWT.CENTER, false, false);
- timerSpinner.setLayoutData(data);
- Label label = new Label(comp, SWT.NONE);
- label.setText(getResourceString("Animation")); //$NON-NLS-1$
- data = new GridData(SWT.CENTER, SWT.CENTER, false, false);
- label.setLayoutData(data);
- timerSpinner.setMaximum(1000);
- timerSpinner.setSelection(TIMER);
- timerSpinner.setSelection(TIMER);
- separator.setControl(comp);
- separator.setWidth(comp.computeSize(SWT.DEFAULT, SWT.DEFAULT).x);
-}
-
-Image createImage(Display display, Color color) {
- Image image = new Image(display, 16, 16);
- GC gc = new GC(image);
- gc.setBackground(color);
- Rectangle rect = image.getBounds();
- gc.fillRectangle(rect);
- if (color.equals(display.getSystemColor(SWT.COLOR_BLACK))) {
- gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
- }
- gc.drawRectangle(rect.x, rect.y, rect.width - 1, rect.height - 1);
- gc.dispose();
- return image;
-}
-
-void createTabList(Composite parent) {
- tabList = new Tree(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
- HashSet set = new HashSet();
- for (int i = 0; i < tabs.length; i++) {
- GraphicsTab tab = tabs[i];
- set.add(tab.getCategory());
- }
- for (Iterator iter = set.iterator(); iter.hasNext();) {
- String text = (String) iter.next();
- TreeItem item = new TreeItem(tabList, SWT.NONE);
- item.setText(text);
- }
- TreeItem[] items = tabList.getItems();
- for (int i = 0; i < items.length; i++) {
- TreeItem item = items[i];
- for (int j = 0; j < tabs.length; j++) {
- GraphicsTab tab = tabs[j];
- if (item.getText().equals(tab.getCategory())) {
- TreeItem item1 = new TreeItem(item, SWT.NONE);
- item1.setText(tab.getText());
- item1.setData(tab);
- }
- }
- }
- tabList.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- TreeItem item = (TreeItem)event.item;
- if (item != null) {
- setTab((GraphicsTab)item.getData());
- }
- }
- });
-}
-
-GraphicsTab[] createTabs() {
- return new GraphicsTab[] {
- new LineTab(this),
- new StarPolyTab(this),
- tab = new IntroTab(this),
- new BlackHoleTab(this),
- };
-}
-
-/**
- * Disposes all resources created by the receiver.
- */
-public void dispose() {
- if (tabs != null) {
- for (int i = 0; i < tabs.length; i++) {
- GraphicsTab tab = tabs[i];
- tab.dispose();
- }
- }
- tabs = null;
- if (images != null) {
- for (int i = 0; i < images.size(); i++) {
- ((Image)images.elementAt(i)).dispose();
- }
- }
- images = null;
- if (customColor != null) customColor.dispose();
- customColor = null;
- if (customImage != null) customImage.dispose();
- customImage = null;
-}
-
-TreeItem findItemByData(TreeItem[] items, Object data) {
- for (int i = 0; i < items.length; i++) {
- TreeItem item = items[i];
- if (item.getData() == data) return item;
- item = findItemByData(item.getItems(), data);
- if (item != null) return item;
- }
- return null;
-}
-
-/**
- * Gets the current tab.
- */
-public GraphicsTab getTab() {
- return tab;
-}
-
-Listener getRedrawListener() {
- return redrawListener;
-}
-
-/**
- * Gets a string from the resource bundle.
- * We don't want to crash because of a missing String.
- * Returns the key if not found.
- */
-static String getResourceString(String key) {
- try {
- return RESOURCE_BUNDLE.getString(key);
- } catch (MissingResourceException e) {
- return key;
- } catch (NullPointerException e) {
- return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
- }
-}
-
-static Image loadImage (Display display, Class clazz, String string) {
- InputStream stream = clazz.getResourceAsStream (string);
- if (stream == null) return null;
- Image image = null;
- try {
- image = new Image (display, stream);
- } catch (SWTException ex) {
- } finally {
- try {
- stream.close ();
- } catch (IOException ex) {}
- }
- return image;
-}
-
-Image loadImage(Display display, String name) {
- Image image = loadImage(display, GraphicsExample.class, name);
- if (image != null) images.addElement(image);
- return image;
-}
-
-void paintBackground(GC gc, Rectangle rect) {
- gc.setBackground((Color)tabBackground[0]);
- gc.fillRectangle(rect);
-}
-
-/**
- * Redraws the current tab.
- */
-public void redraw() {
- canvas.redraw();
-}
-
-/**
- * Grabs input focus.
- */
-public void setFocus() {
- tabList.setFocus();
-}
-
-/**
- * Sets the current tab.
- */
-public void setTab(GraphicsTab tab) {
- this.tab = tab;
- Control[] children = controlPanel.getChildren();
- for (int i = 0; i < children.length; i++) {
- Control control = children[i];
- control.dispose();
- }
- if (tab != null) {
- tab.createControlPanel(controlPanel);
- animate = tab.isAnimated();
- }
- playItem.setEnabled(!animate);
- pauseItem.setEnabled(animate);
- GridData data = (GridData)controlPanel.getLayoutData();
- children = controlPanel.getChildren();
- data.exclude = children.length == 0;
- controlPanel.setVisible(!data.exclude);
- if (data.exclude) {
- tabPanel.layout();
- } else {
- tabPanel.layout(children);
- }
- if (tab != null) {
- TreeItem[] selection = tabList.getSelection();
- if (selection.length == 0 || selection[0].getData() != tab) {
- TreeItem item = findItemByData(tabList.getItems(), tab);
- if (item != null) tabList.setSelection(new TreeItem[]{item});
- }
- }
- canvas.redraw();
-}
-
-void startAnimationTimer() {
- final Display display = Display.getCurrent();
- display.timerExec(timerSpinner.getSelection(), new Runnable() {
- public void run() {
- if (canvas.isDisposed()) return;
- if (animate) {
- GraphicsTab tab = getTab();
- if (tab != null && tab.isAnimated()) {
- Rectangle rect = canvas.getClientArea();
- tab.next(rect.width, rect.height);
- canvas.redraw();
- canvas.update();
- }
- }
- display.timerExec(timerSpinner.getSelection(), this);
- }
- });
-}
-
-public static void main(String[] args) {
- Display display = new Display();
- Shell shell = new Shell(display);
- shell.setText(getResourceString("SWTGraphics")); //$NON-NLS-1$
- final GraphicsExample example = new GraphicsExample(shell);
- shell.addListener(SWT.Close, new Listener() {
- public void handleEvent(Event event) {
- example.dispose();
- }
- });
- shell.open();
- while (!shell.isDisposed()) {
- if (!display.readAndDispatch()) display.sleep();
- }
-}
-}