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

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

Introduction

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

Prototype

public Object getData(String key) 

Source Link

Document

Returns the application defined property of the receiver with the specified name, or null if it has not been set.

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  w  w  w . ja v a2 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;
    }/*from   w w  w  .j a  v a2s  .co  m*/
    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   www .j  a v  a2 s.c o  m
    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);
    }
}