Example usage for org.eclipse.swt.widgets Canvas setData

List of usage examples for org.eclipse.swt.widgets Canvas setData

Introduction

In this page you can find the example usage for org.eclipse.swt.widgets Canvas setData.

Prototype

@Override
    public void setData(String key, Object value) 

Source Link

Usage

From source file:DoubleBuffer.java

public DoubleBuffer() {
    shell.setLayout(new FillLayout());

    final Image imageEclipse = new Image(display, "java2s.gif");

    //      final Canvas canvas = new Canvas(shell, SWT.NULL);
    //      canvas.addPaintListener(new PaintListener() {
    //         public void paintControl(PaintEvent e) {
    //            Point size = canvas.getSize();
    ///*from  www  . ja va  2  s. c om*/
    //            int x1 = (int) (Math.random() * size.x);
    //            int y1 = (int) (Math.random() * size.y);
    //            int x2 = Math.max(canvas.getBounds().width - x1 - 10, 50);
    //            int y2 = Math.max(canvas.getBounds().height - y1 - 10, 50);
    //
    //            
    //            e.gc.drawRoundRectangle(x1, y1, x2, y2, 5, 5);
    //
    //            display.timerExec(100, new Runnable() {
    //               public void run() {
    //                  canvas.redraw();
    //               }
    //            });
    //            
    //         }
    //      });

    final Canvas doubleBufferedCanvas = new Canvas(shell, SWT.NO_BACKGROUND);

    doubleBufferedCanvas.addPaintListener(new PaintListener() {
        public void paintControl(PaintEvent e) {
            // Creates new image only absolutely necessary.
            Image image = (Image) doubleBufferedCanvas.getData("double-buffer-image");
            if (image == null || image.getBounds().width != doubleBufferedCanvas.getSize().x
                    || image.getBounds().height != doubleBufferedCanvas.getSize().y) {
                image = new Image(display, doubleBufferedCanvas.getSize().x, doubleBufferedCanvas.getSize().y);
                doubleBufferedCanvas.setData("double-buffer-image", image);
            }

            // Initializes the graphics context of the image. 
            GC imageGC = new GC(image);
            imageGC.setBackground(e.gc.getBackground());
            imageGC.setForeground(e.gc.getForeground());
            imageGC.setFont(e.gc.getFont());

            // Fills background. 
            Rectangle imageSize = image.getBounds();
            imageGC.fillRectangle(0, 0, imageSize.width + 1, imageSize.height + 1);

            // Performs actual drawing here ...
            Point size = doubleBufferedCanvas.getSize();

            int x1 = (int) (Math.random() * size.x);
            int y1 = (int) (Math.random() * size.y);
            int x2 = Math.max(doubleBufferedCanvas.getBounds().width - x1 - 10, 50);
            int y2 = Math.max(doubleBufferedCanvas.getBounds().height - y1 - 10, 50);

            imageGC.drawRoundRectangle(x1, y1, x2, y2, 5, 5);

            // Draws the buffer image onto the canvas. 
            e.gc.drawImage(image, 0, 0);

            imageGC.dispose();

            display.timerExec(100, new Runnable() {
                public void run() {
                    doubleBufferedCanvas.redraw();
                }
            });
        }
    });

    shell.setSize(300, 200);
    shell.open();
    //textUser.forceFocus();

    // Set up the event loop.
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            // If no more entries in event queue
            display.sleep();
        }
    }

    display.dispose();
}

From source file:DNDExample.java

private Control createWidget(int type, Composite parent, String prefix) {
    switch (type) {
    case BUTTON_CHECK: {
        Button button = new Button(parent, SWT.CHECK);
        button.setText(prefix + " Check box");
        return button;
    }//  w w  w.j av a2 s  .c om
    case BUTTON_TOGGLE: {
        Button button = new Button(parent, SWT.TOGGLE);
        button.setText(prefix + " Toggle button");
        return button;
    }
    case BUTTON_RADIO: {
        Button button = new Button(parent, SWT.RADIO);
        button.setText(prefix + " Radio button");
        return button;
    }
    case TABLE: {
        Table table = new Table(parent, SWT.BORDER | SWT.MULTI);
        TableColumn column1 = new TableColumn(table, SWT.NONE);
        TableColumn column2 = new TableColumn(table, SWT.NONE);
        for (int i = 0; i < 10; i++) {
            TableItem item = new TableItem(table, SWT.NONE);
            item.setText(0, prefix + " name " + i);
            item.setText(1, prefix + " value " + i);
        }
        column1.pack();
        column2.pack();
        return table;
    }
    case TEXT: {
        Text text = new Text(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
        text.setText(prefix + " Text");
        return text;
    }
    case TREE: {
        Tree tree = new Tree(parent, SWT.BORDER);
        for (int i = 0; i < 3; i++) {
            TreeItem item = new TreeItem(tree, SWT.NONE);
            item.setText(prefix + " item " + i);
            for (int j = 0; j < 3; j++) {
                TreeItem subItem = new TreeItem(item, SWT.NONE);
                subItem.setText(prefix + " item " + j);
                for (int k = 0; k < 3; k++) {
                    TreeItem subsubItem = new TreeItem(subItem, SWT.NONE);
                    subsubItem.setText(prefix + " item " + k);
                }
            }
        }
        return tree;
    }
    case CANVAS: {
        Canvas canvas = new Canvas(parent, SWT.BORDER);
        canvas.setData("STRINGS", new String[] { prefix + " Canvas widget" });
        canvas.addPaintListener(new PaintListener() {
            public void paintControl(PaintEvent e) {
                Canvas c = (Canvas) e.widget;
                Image image = (Image) c.getData("IMAGE");
                if (image != null) {
                    e.gc.drawImage(image, 5, 5);
                } else {
                    String[] strings = (String[]) c.getData("STRINGS");
                    if (strings != null) {
                        FontMetrics metrics = e.gc.getFontMetrics();
                        int height = metrics.getHeight();
                        int y = 5;
                        for (int i = 0; i < strings.length; i++) {
                            e.gc.drawString(strings[i], 5, y);
                            y += height + 5;
                        }
                    }
                }
            }
        });
        return canvas;
    }
    case LABEL: {
        Label label = new Label(parent, SWT.BORDER);
        label.setText(prefix + " Label");
        return label;
    }
    case LIST: {
        List list = new List(parent, SWT.BORDER);
        list.setItems(new String[] { prefix + " Item a", prefix + " Item b", prefix + " Item c",
                prefix + " Item d" });
        return list;
    }
    default:
        throw new SWTError(SWT.ERROR_NOT_IMPLEMENTED);
    }
}

From source file:org.eclipse.swt.examples.dnd.DNDExample.java

private Control createWidget(int type, Composite parent, String prefix) {
    switch (type) {
    case BUTTON_CHECK: {
        Button button = new Button(parent, SWT.CHECK);
        button.setText(prefix + " Check box");
        return button;
    }//from  w  w w . ja  v a  2  s. com
    case BUTTON_TOGGLE: {
        Button button = new Button(parent, SWT.TOGGLE);
        button.setText(prefix + " Toggle button");
        return button;
    }
    case BUTTON_RADIO: {
        Button button = new Button(parent, SWT.RADIO);
        button.setText(prefix + " Radio button");
        return button;
    }
    case STYLED_TEXT: {
        StyledText text = new StyledText(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
        text.setText(prefix + " Styled Text");
        return text;
    }
    case TABLE: {
        Table table = new Table(parent, SWT.BORDER | SWT.MULTI);
        table.setHeaderVisible(true);
        TableColumn column0 = new TableColumn(table, SWT.LEFT);
        column0.setText("Name");
        TableColumn column1 = new TableColumn(table, SWT.RIGHT);
        column1.setText("Value");
        TableColumn column2 = new TableColumn(table, SWT.CENTER);
        column2.setText("Description");
        for (int i = 0; i < 10; i++) {
            TableItem item = new TableItem(table, SWT.NONE);
            item.setText(0, prefix + " name " + i);
            item.setText(1, prefix + " value " + i);
            item.setText(2, prefix + " description " + i);
            item.setImage(itemImage);
        }
        column0.pack();
        column1.pack();
        column2.pack();
        return table;
    }
    case TEXT: {
        Text text = new Text(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
        text.setText(prefix + " Text");
        return text;
    }
    case TREE: {
        Tree tree = new Tree(parent, SWT.BORDER | SWT.MULTI);
        tree.setHeaderVisible(true);
        TreeColumn column0 = new TreeColumn(tree, SWT.LEFT);
        column0.setText("Name");
        TreeColumn column1 = new TreeColumn(tree, SWT.RIGHT);
        column1.setText("Value");
        TreeColumn column2 = new TreeColumn(tree, SWT.CENTER);
        column2.setText("Description");
        for (int i = 0; i < 3; i++) {
            TreeItem item = new TreeItem(tree, SWT.NONE);
            item.setText(0, prefix + " name " + i);
            item.setText(1, prefix + " value " + i);
            item.setText(2, prefix + " description " + i);
            item.setImage(itemImage);
            for (int j = 0; j < 3; j++) {
                TreeItem subItem = new TreeItem(item, SWT.NONE);
                subItem.setText(0, prefix + " name " + i + " " + j);
                subItem.setText(1, prefix + " value " + i + " " + j);
                subItem.setText(2, prefix + " description " + i + " " + j);
                subItem.setImage(itemImage);
                for (int k = 0; k < 3; k++) {
                    TreeItem subsubItem = new TreeItem(subItem, SWT.NONE);
                    subsubItem.setText(0, prefix + " name " + i + " " + j + " " + k);
                    subsubItem.setText(1, prefix + " value " + i + " " + j + " " + k);
                    subsubItem.setText(2, prefix + " description " + i + " " + j + " " + k);
                    subsubItem.setImage(itemImage);
                }
            }
        }
        column0.pack();
        column1.pack();
        column2.pack();
        return tree;
    }
    case CANVAS: {
        Canvas canvas = new Canvas(parent, SWT.BORDER);
        canvas.setData("STRINGS", new String[] { prefix + " Canvas widget" });
        canvas.addPaintListener(e -> {
            Canvas c = (Canvas) e.widget;
            Image image = (Image) c.getData("IMAGE");
            if (image != null) {
                e.gc.drawImage(image, 5, 5);
            } else {
                String[] strings = (String[]) c.getData("STRINGS");
                if (strings != null) {
                    FontMetrics metrics = e.gc.getFontMetrics();
                    int height = metrics.getHeight();
                    int y = 5;
                    for (String string : strings) {
                        e.gc.drawString(string, 5, y);
                        y += height + 5;
                    }
                }
            }
        });
        return canvas;
    }
    case LABEL: {
        Label label = new Label(parent, SWT.BORDER);
        label.setText(prefix + " Label");
        return label;
    }
    case LIST: {
        List list = new List(parent, SWT.BORDER | SWT.MULTI);
        list.setItems(prefix + " Item a", prefix + " Item b", prefix + " Item c", prefix + " Item d");
        return list;
    }
    case COMBO: {
        Combo combo = new Combo(parent, SWT.BORDER);
        combo.setItems("Item a", "Item b", "Item c", "Item d");
        return combo;
    }
    default:
        throw new SWTError(SWT.ERROR_NOT_IMPLEMENTED);
    }
}