Example usage for org.eclipse.jface.window ToolTip ToolTip

List of usage examples for org.eclipse.jface.window ToolTip ToolTip

Introduction

In this page you can find the example usage for org.eclipse.jface.window ToolTip ToolTip.

Prototype

public ToolTip(Control control, int style, boolean manualActivation) 

Source Link

Usage

From source file:com.nokia.tools.variant.compare.ui.CustomCheckedTreeViewer.java

License:Open Source License

private void initViewer() {
    tooltipBG = new Color(getTree().getDisplay(), new RGB(245, 245, 200));
    tooltipFG = new Color(getTree().getDisplay(), new RGB(0, 0, 0));
    highlightBG = new Color(getTree().getDisplay(), new RGB(255, 255, 200));

    getTree().addDisposeListener(new DisposeListener() {
        public void widgetDisposed(DisposeEvent e) {
            tooltipBG.dispose();/*  ww  w  .j a  va2s  .c  o m*/
            tooltipFG.dispose();
            highlightBG.dispose();

        }
    });

    setUseHashlookup(true);
    addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            doCheckStateChanged(event.getElement());
        }
    });
    addTreeListener(new ITreeViewerListener() {
        public void treeCollapsed(TreeExpansionEvent event) {
        }

        public void treeExpanded(TreeExpansionEvent event) {
            Widget item = findItem(event.getElement());

            if (item instanceof TreeItem) {
                initializeItem((TreeItem) item);
            }
        }
    });
    new ToolTip(getControl(), ToolTip.NO_RECREATE, false) {

        @Override
        protected Composite createToolTipContentArea(Event event, Composite parent) {
            Composite area = new Composite(parent, SWT.NONE);
            area.setLayout(new GridLayout());

            area.setBackground(tooltipBG);
            area.setForeground(tooltipFG);
            Label label = new Label(area, SWT.NONE);
            label.setText("Unknown");
            label.setBackground(tooltipBG);
            label.setForeground(tooltipFG);

            String text = getTooltipText(new Point(event.x, event.y));
            if (text != null) {
                label.setText(text);
            }

            //             
            // computeShift(event,parent);

            return area;
        }

        String getTooltipText(Point p) {

            TreeItem item = getTree().getItem(p);
            if (item == null) {
                return null;
            }

            String tooltip = null;
            IBaseLabelProvider blp = getLabelProvider();

            if (blp instanceof ITableTooltipProvider) {
                int offset = 0;
                int width = 0;
                int columnIndex = -1;
                for (int idx : getTree().getColumnOrder()) {
                    TreeColumn column = getTree().getColumn(idx);
                    int offset2 = offset + column.getWidth();
                    if (p.x >= offset && p.x < offset2) {
                        columnIndex = idx;
                        width = column.getWidth();
                        break;
                    }
                    offset = offset2;
                }

                Rectangle bounds = item.getBounds();
                bounds.x += offset;
                bounds.width = width;

                tooltip = ((ITableTooltipProvider) blp).getColumnTooltip(item.getData(), columnIndex);
            }

            return tooltip;
        }

        @Override
        protected Object getToolTipArea(Event event) {
            Point p = new Point(event.x, event.y);

            TreeItem item = getTree().getItem(p);
            if (item == null) {
                return null;
            }

            String tooltip = null;
            IBaseLabelProvider blp = getLabelProvider();

            if (blp instanceof ITableTooltipProvider) {
                int offset = 0;
                int width = 0;
                int columnIndex = -1;
                for (int idx : getTree().getColumnOrder()) {
                    TreeColumn column = getTree().getColumn(idx);
                    int offset2 = offset + column.getWidth();
                    if (event.x >= offset && event.x < offset2) {
                        columnIndex = idx;
                        width = column.getWidth();
                        break;
                    }
                    offset = offset2;
                }

                Rectangle bounds = item.getBounds();
                bounds.x += offset;
                bounds.width = width;

                tooltip = ((ITableTooltipProvider) blp).getColumnTooltip(item.getData(), columnIndex);
                if (tooltip != null && tooltip.trim().length() > 0) {
                    return bounds;
                }
            }
            return null;
        }
    };

    getTree().addListener(SWT.EraseItem, new Listener() {
        public void handleEvent(Event event) {
            // Gradient selection color
            if ((event.detail & SWT.SELECTED) != 0) {
                return;
            }

            // event.detail &= ~SWT.HOT;
            // if ((event.detail & SWT.SELECTED) == 0)
            // return; /* item not selected */
            // int clientWidth = getTree().getClientArea().width;
            // GC gc = event.gc;
            // Color oldForeground = gc.getForeground();
            // Color oldBackground = gc.getBackground();
            // //gc.setForeground(gc.getDevice().getSystemColor(SWT.
            // COLOR_BLACK
            // // ));
            // //gc.setBackground(gc.getDevice().getSystemColor(SWT.
            // COLOR_WHITE
            // // ));
            // gc.fillGradientRectangle(0 + clientWidth - 1, event.y,
            // -clientWidth, event.height, false);
            // gc.setForeground(oldForeground);
            // gc.setBackground(oldBackground);
            // event.detail &= ~SWT.SELECTED;
        }
    });

    getTree().addListener(SWT.MeasureItem, new Listener() {
        public void handleEvent(Event event) {
            TreeItem item = (TreeItem) event.item;
            Object data = item.getData();
            IBaseLabelProvider blp = getLabelProvider();
            if (!(blp instanceof ITableAnnotationProvider)) {
                return;
            }
            ITableAnnotationProvider prov = (ITableAnnotationProvider) blp;
            String annotation = prov.getAnnotationText(data, event.index);
            if (annotation == null) {
                return;
            }
            int colWidth = getTree().getColumn(event.index).getWidth();

            GC gc = event.gc;
            Font font = prov.getAnnotationFont(data, event.index);
            gc.setFont(font == null ? item.getFont(event.index) : font);
            Point extent = gc.textExtent(annotation + "  ");
            event.width += extent.x;
            event.width = Math.max(colWidth - 1, event.width);

        }
    });
    getTree().addListener(SWT.PaintItem, new Listener() {
        public void handleEvent(Event event) {
            TreeItem item = (TreeItem) event.item;

            // Rectangle bounds = item.getBounds();
            // if (!event.gc.getClipping().intersects(bounds)) {
            // return;
            // }

            Object data = item.getData();
            IBaseLabelProvider blp = getLabelProvider();
            if (!(blp instanceof ITableAnnotationProvider)) {
                return;
            }
            if (blp instanceof ICheckEnabledLabelProvider) {
                ICheckEnabledLabelProvider checkProvider = (ICheckEnabledLabelProvider) blp;
                if (!checkProvider.isCheckEnabled(data)) {
                    redrawTreeItemCheckBox(event, disabledCheckBox);
                }
            }
            ITableAnnotationProvider prov = (ITableAnnotationProvider) blp;
            GC gc = event.gc;

            int offset = 0;
            int width = 0;
            TreeColumn column = null;
            for (int idx : getTree().getColumnOrder()) {
                column = getTree().getColumn(idx);
                width = column.getWidth();

                if (idx == event.index) {
                    break;
                }

            }

            String annotation = prov.getAnnotationText(data, event.index);
            if (annotation == null) {
                return;
            }

            String text = item.getText(event.index);
            Point ext2 = gc.textExtent(text);
            int space = gc.getFontMetrics().getAverageCharWidth();

            Font font = prov.getAnnotationFont(data, event.index);
            Color foreground = prov.getAnnotationForeground(data, event.index);
            gc.setFont(font == null ? item.getFont(event.index) : font);
            if ((event.detail & SWT.SELECTED) == 0 && foreground != null) {
                gc.setForeground(foreground);
            } else {
                // gc.setForeground(gc.getDevice().getSystemColor(SWT.
                // COLOR_WHITE));
            }

            // gc.setBackground(tooltipBG);
            Point extent = gc.textExtent(annotation + " ");
            if (ext2.x + space + extent.x > column.getWidth()) {
                gc.drawText(" " + annotation, event.x + ext2.x + space, event.y + (event.height - extent.y) / 2,
                        true);
            } else {
                gc.drawText(" " + annotation, event.x + width - extent.x,
                        event.y + (event.height - extent.y) / 2, true);
            }

            offset += width;

        }
    });
}

From source file:com.nokia.tools.variant.navigator.views.NavigatorComposite.java

License:Open Source License

public NavigatorComposite(Composite parent, int style, NavigatorViewer viewer) {
    super(parent, style | SWT.DOUBLE_BUFFERED);

    addKeyListener(this);
    this.listeners = new ListenerList();
    this.buttons = new ArrayList<NavigatorButton>();
    this.buttonListener = new SelectionListener() {
        public void widgetDefaultSelected(SelectionEvent e) {
            setSelectedWidget((NavigatorButton) e.widget);
        }/*from   w  w  w . j  a va 2s .  c om*/

        public void widgetSelected(SelectionEvent e) {
            setSelectedWidget((NavigatorButton) e.widget);
        }
    };
    this.addFocusListener(new FocusListener() {
        public void focusGained(FocusEvent e) {
            if (selectedButton != null && selectedButton.getSelectedLabel() != null) {
                NavigatorLabel label = selectedButton.getSelectedLabel();
                label.updateColors(true);
                Rectangle bounds = label.getBounds();
                redraw(bounds.x, bounds.y, bounds.width, bounds.height, false);
            }
        }

        public void focusLost(FocusEvent e) {
            if (selectedButton != null && selectedButton.getSelectedLabel() != null) {
                NavigatorLabel label = selectedButton.getSelectedLabel();
                label.updateColors(false);
                Rectangle bounds = label.getBounds();
                redraw(bounds.x, bounds.y, bounds.width, bounds.height, false);
            }
        }
    });
    setBackground(ColorConstants.white);
    addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDown(MouseEvent e) {
            setFocus();

            for (NavigatorButton button : getButtons()) {
                if (button.getBounds().contains(e.x, e.y)) {
                    NavigatorLabel label = button.getSelectedLabel();

                    if (button.isExpanded()) {
                        for (NavigatorLabel child : button.getLabels()) {
                            if (child.getBounds().contains(e.x, e.y)) {
                                setSelectedWidget(child);
                                return;
                            }
                        }
                    }

                    if (button.isSelected()) {
                        if (button.isNonExpanded()) {
                            button.setExpanded(true);
                        } else {
                            button.setSelectedLabel(null);
                            redraw();
                            setSelectedWidget(button);
                            break;
                            // button.setExpanded(!button.isExpanded());
                        }

                        setSelectedWidget(label == null ? button : button.isExpanded() ? label : button);
                    } else {
                        setSelectedWidget(label == null ? button : label);
                    }

                    break;
                }
            }
        }
    });
    addDisposeListener(DisposeHandler.INSTANCE);
    addPaintListener(PaintHandler.INSTANCE);
    addControlListener(ControlHandler.INSTANCE);

    new ToolTip(this, ToolTip.NO_RECREATE, false) {
        @Override
        protected Composite createToolTipContentArea(Event event, Composite parent) {
            Composite area = new Composite(parent, SWT.NONE);
            area.setLayout(new Layout() {
                @Override
                protected Point computeSize(Composite composite, int hint, int hint2, boolean flushCache) {
                    Point size = new Point(5, 5);

                    for (Control child : composite.getChildren()) {
                        Point cs = child.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                        if (cs.x > 250) {
                            cs = child.computeSize(250, SWT.DEFAULT);
                        }
                        size.x = Math.max(size.x, cs.x + 10);
                        size.y += cs.y + 5;
                    }

                    return size;
                }

                @Override
                protected void layout(Composite composite, boolean flushCache) {
                    Point csize = composite.getSize();
                    int y = 5;

                    for (Control child : composite.getChildren()) {
                        Point cs = child.computeSize(csize.x - 10, SWT.DEFAULT);
                        child.setBounds(5, y, cs.x, cs.y);
                        y += cs.y + 5;
                    }

                }
            });

            area.setBackground(COLOR_TT_BACKGROUND);
            area.setForeground(COLOR_TT_FOREGROUND);

            Label label = new Label(area, SWT.WRAP);
            label.setText("Undefined");
            label.setBackground(COLOR_TT_BACKGROUND);
            label.setForeground(COLOR_TT_FOREGROUND);

            Point point = new Point(event.x, event.y);
            String text = null;

            outer: for (NavigatorButton button : getButtons()) {
                if (button.getBounds().contains(point)) {
                    text = button.getButtonDescription();
                    if (button.isExpanded()) {
                        for (NavigatorLabel labelItem : button.getLabels()) {
                            if (labelItem.getBounds().contains(point)) {
                                text = labelItem.getToolTipText();
                                break outer;
                            }
                        }
                    }
                    break;
                }
            }
            if (text != null) {
                label.setText(text);
            }

            return area;
        }

        @Override
        protected Object getToolTipArea(Event event) {
            String text = null;
            Rectangle bounds = null;

            outer: for (NavigatorButton button : getButtons()) {
                if (button.getBounds().contains(event.x, event.y)) {
                    text = button.getButtonDescription();
                    bounds = button.getBounds();
                    if (button.isExpanded()) {
                        for (NavigatorLabel labelItem : button.getLabels()) {
                            if (labelItem.getBounds().contains(event.x, event.y)) {
                                text = labelItem.getToolTipText();
                                bounds = labelItem.getBounds();
                                break outer;
                            }
                        }
                    }
                    break;
                }
            }
            return text != null && text.length() > 0 ? bounds : null;
        }

        @Override
        public Point getLocation(Point tipSize, Event event) {
            Rectangle bounds = null;
            outer: for (NavigatorButton button : getButtons()) {
                if (button.getBounds().contains(event.x, event.y)) {
                    bounds = button.getBounds();
                    if (button.isExpanded()) {
                        for (NavigatorLabel labelItem : button.getLabels()) {
                            if (labelItem.getBounds().contains(event.x, event.y)) {
                                bounds = labelItem.getBounds();
                                break outer;
                            }
                        }
                    }
                    break;
                }
            }

            if (bounds == null) {
                return super.getLocation(tipSize, event);
            }
            ScrolledComposite sc = SWTUtil.getScrolledComposite(NavigatorComposite.this);
            Rectangle ca = sc.getClientArea();
            Point caBottom = sc.toDisplay(ca.x, ca.y + ca.height);
            Point display = NavigatorComposite.this.toDisplay(bounds.x, bounds.y + bounds.height);
            display.y = Math.min(display.y, caBottom.y);

            return display;
        }
    };

}

From source file:com.nokia.tools.vct.internal.common.ui.navigator.NavigatorComposite.java

License:Open Source License

public NavigatorComposite(Composite parent, int style, NavigatorViewer viewer) {
    super(parent, style | SWT.DOUBLE_BUFFERED);

    ITheme theme = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme();
    ColorRegistry colorRegistry = theme.getColorRegistry();
    tooltipBackgroundColor = colorRegistry
            .get("com.nokia.tools.vct.common.ui.navigator.TooltipBackgroundColor");
    tooltipForegroundColor = colorRegistry
            .get("com.nokia.tools.vct.common.ui.navigator.TooltipForegroundColor");
    mainBackgroundColor = colorRegistry.get("com.nokia.tools.vct.common.ui.navigator.MainBackgroundColor");

    addKeyListener(this);
    this.listeners = new ListenerList();
    this.buttons = new ArrayList<NavigatorButton>();
    this.buttonListener = new SelectionListener() {
        public void widgetDefaultSelected(SelectionEvent e) {
            setSelectedWidget((NavigatorButton) e.widget);
        }/*  w w  w .  j a  va2  s . c om*/

        public void widgetSelected(SelectionEvent e) {
            setSelectedWidget((NavigatorButton) e.widget);
        }
    };
    this.addFocusListener(new FocusListener() {
        public void focusGained(FocusEvent e) {
            if (selectedButton != null && selectedButton.getSelectedLabel() != null) {
                NavigatorLabel label = selectedButton.getSelectedLabel();
                label.updateColors(true);
                Rectangle bounds = label.getBounds();
                redraw(bounds.x, bounds.y, bounds.width, bounds.height, false);
            }
        }

        public void focusLost(FocusEvent e) {
            if (selectedButton != null && selectedButton.getSelectedLabel() != null) {
                NavigatorLabel label = selectedButton.getSelectedLabel();
                label.updateColors(false);
                Rectangle bounds = label.getBounds();
                redraw(bounds.x, bounds.y, bounds.width, bounds.height, false);
            }
        }
    });
    setBackground(mainBackgroundColor);
    addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDown(MouseEvent e) {
            setFocus();

            for (NavigatorButton button : getButtons()) {
                if (button.getBounds().contains(e.x, e.y)) {
                    NavigatorLabel label = button.getSelectedLabel();

                    if (button.isExpanded()) {
                        for (NavigatorLabel child : button.getLabels()) {
                            if (child.getBounds().contains(e.x, e.y)) {
                                setSelectedWidget(child);
                                return;
                            }
                        }
                    }

                    if (button.isSelected()) {
                        if (button.isNonExpanded()) {
                            button.setExpanded(true);
                        } else {
                            button.setSelectedLabel(null);
                            redraw();
                            setSelectedWidget(button);
                            break;
                            // button.setExpanded(!button.isExpanded());
                        }

                        setSelectedWidget(label == null ? button : button.isExpanded() ? label : button);
                    } else {
                        setSelectedWidget(label == null ? button : label);
                    }

                    break;
                }
            }
        }
    });
    addDisposeListener(DisposeHandler.INSTANCE);
    addPaintListener(PaintHandler.INSTANCE);
    addControlListener(ControlHandler.INSTANCE);

    new ToolTip(this, ToolTip.NO_RECREATE, false) {
        @Override
        protected Composite createToolTipContentArea(Event event, Composite parent) {
            Composite area = new Composite(parent, SWT.NONE);
            area.setLayout(new Layout() {
                @Override
                protected Point computeSize(Composite composite, int hint, int hint2, boolean flushCache) {
                    Point size = new Point(5, 5);

                    for (Control child : composite.getChildren()) {
                        Point cs = child.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                        if (cs.x > 250) {
                            cs = child.computeSize(250, SWT.DEFAULT);
                        }
                        size.x = Math.max(size.x, cs.x + 10);
                        size.y += cs.y + 5;
                    }

                    return size;
                }

                @Override
                protected void layout(Composite composite, boolean flushCache) {
                    Point csize = composite.getSize();
                    int y = 5;

                    for (Control child : composite.getChildren()) {
                        Point cs = child.computeSize(csize.x - 10, SWT.DEFAULT);
                        child.setBounds(5, y, cs.x, cs.y);
                        y += cs.y + 5;
                    }

                }
            });

            area.setBackground(tooltipBackgroundColor);
            area.setForeground(tooltipForegroundColor);

            Label label = new Label(area, SWT.WRAP);
            label.setText("Undefined");
            label.setBackground(tooltipBackgroundColor);
            label.setForeground(tooltipForegroundColor);

            Point point = new Point(event.x, event.y);
            String text = null;

            outer: for (NavigatorButton button : getButtons()) {
                if (button.getBounds().contains(point)) {
                    text = button.getButtonDescription();
                    if (button.isExpanded()) {
                        for (NavigatorLabel labelItem : button.getLabels()) {
                            if (labelItem.getBounds().contains(point)) {
                                text = labelItem.getToolTipText();
                                break outer;
                            }
                        }
                    }
                    break;
                }
            }
            if (text != null) {
                if (text.length() > 200) {
                    int i = Math.min(text.indexOf("\n", 199), text.indexOf("\r", 199));
                    if (i >= 199 && i < 250) {
                        text = text.substring(0, i);
                    } else {
                        text = text.substring(0, 200);
                    }
                    text += "\n\r...";
                }
                label.setText(text);
            }

            return area;
        }

        @Override
        protected Object getToolTipArea(Event event) {
            String text = null;
            Rectangle bounds = null;

            outer: for (NavigatorButton button : getButtons()) {
                if (button.getBounds().contains(event.x, event.y)) {
                    text = button.getButtonDescription();
                    bounds = button.getBounds();
                    if (button.isExpanded()) {
                        for (NavigatorLabel labelItem : button.getLabels()) {
                            if (labelItem.getBounds().contains(event.x, event.y)) {
                                text = labelItem.getToolTipText();
                                bounds = labelItem.getBounds();
                                break outer;
                            }
                        }
                    }
                    break;
                }
            }
            return text != null && text.length() > 0 ? bounds : null;
        }

        @Override
        public Point getLocation(Point tipSize, Event event) {
            Rectangle bounds = null;
            outer: for (NavigatorButton button : getButtons()) {
                if (button.getBounds().contains(event.x, event.y)) {
                    bounds = button.getBounds();
                    if (button.isExpanded()) {
                        for (NavigatorLabel labelItem : button.getLabels()) {
                            if (labelItem.getBounds().contains(event.x, event.y)) {
                                bounds = labelItem.getBounds();
                                break outer;
                            }
                        }
                    }
                    break;
                }
            }

            if (bounds == null) {
                return super.getLocation(tipSize, event);
            }
            ScrolledComposite sc = SWTUtil.getScrolledComposite(NavigatorComposite.this);
            Rectangle ca = sc.getClientArea();
            Point caBottom = sc.toDisplay(ca.x, ca.y + ca.height);
            Point display = NavigatorComposite.this.toDisplay(bounds.x, bounds.y + bounds.height);
            display.y = Math.min(display.y, caBottom.y);

            return display;
        }
    };

}

From source file:net.certiv.fluentmark.outline.FluentOutlinePage.java

License:Open Source License

@SuppressWarnings("unused")
private void createToolTip() {
    new ToolTip(viewer.getControl(), ToolTip.RECREATE, false) {

        @Override/*  w w  w .  jav  a  2s  .  c  om*/
        protected Composite createToolTipContentArea(Event event, Composite parent) {

            Composite comp = new Composite(parent, SWT.NONE);
            comp.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
            GridLayoutFactory.swtDefaults().margins(2, 2).spacing(4, 1).applyTo(comp);

            Object tipItem = getToolTipItem(new Point(event.x, event.y));
            if (tipItem instanceof PagePart) {
                PagePart part = (PagePart) tipItem;
                Label label = new Label(comp, SWT.WRAP);
                label.setBackground(comp.getBackground());
                label.setText(part.getTooltip());
            }
            return comp;
        }

        @Override
        protected boolean shouldCreateToolTip(Event event) {
            final Object eventItem = getToolTipItem(new Point(event.x, event.y));
            boolean shouldCreate = eventItem != null && eventItem instanceof PagePart
                    && super.shouldCreateToolTip(event);
            if (!shouldCreate)
                hide();
            return shouldCreate;
        }

        protected Object getToolTipItem(Point point) {
            Tree control = (Tree) viewer.getControl();
            TreeItem item = control.getItem(point);
            if (item != null)
                return item.getData();
            return null;
        }
    };
}

From source file:net.heartsome.cat.common.ui.wizard.TSTitleAreaDialog.java

License:Open Source License

/**
 * Re-layout the labels for the new message.
 * //from   w ww .  j  a  v a 2  s.co  m
 * @param forceLayout
 *            <code>true</code> to force a layout of the shell
 */
private void layoutForNewMessage(boolean forceLayout) {
    int verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    int horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    // If there are no images then layout as normal
    if (errorMessage == null && messageImage == null) {
        setImageLabelVisible(false);
        setLayoutsForNormalMessage(verticalSpacing, horizontalSpacing);
    } else {
        messageImageLabel.setVisible(true);
        bottomFillerLabel.setVisible(true);
        leftFillerLabel.setVisible(true);
        /**
         * Note that we do not use horizontalSpacing here as when the
         * background of the messages changes there will be gaps between the
         * icon label and the message that are the background color of the
         * shell. We add a leading space elsewhere to compendate for this.
         */
        FormData data = new FormData();
        data.left = new FormAttachment(0, H_GAP_IMAGE);
        data.top = new FormAttachment(titleLabel, verticalSpacing);
        messageImageLabel.setLayoutData(data);
        data = new FormData();
        data.top = new FormAttachment(messageImageLabel, 0);
        data.left = new FormAttachment(0, 0);
        data.bottom = new FormAttachment(messageLabel, 0, SWT.BOTTOM);
        data.right = new FormAttachment(messageImageLabel, 0, SWT.RIGHT);
        bottomFillerLabel.setLayoutData(data);
        data = new FormData();
        data.top = new FormAttachment(messageImageLabel, 0, SWT.TOP);
        data.left = new FormAttachment(0, 0);
        data.bottom = new FormAttachment(messageImageLabel, 0, SWT.BOTTOM);
        data.right = new FormAttachment(messageImageLabel, 0);
        leftFillerLabel.setLayoutData(data);
        FormData messageLabelData = new FormData();
        messageLabelData.top = new FormAttachment(titleLabel, verticalSpacing);
        messageLabelData.right = new FormAttachment(titleImageLabel);
        messageLabelData.left = new FormAttachment(messageImageLabel, 0);
        messageLabelData.height = messageLabelHeight;
        if (titleImageLargest)
            messageLabelData.bottom = new FormAttachment(titleImageLabel, 0, SWT.BOTTOM);
        messageLabel.setLayoutData(messageLabelData);
    }

    if (forceLayout) {
        getShell().layout();
    } else {
        // Do not layout before the dialog area has been created
        // to avoid incomplete calculations.
        if (dialogArea != null)
            workArea.getParent().layout(true);
    }

    int messageLabelUnclippedHeight = messageLabel.computeSize(messageLabel.getSize().x - xTrim, SWT.DEFAULT,
            true).y;
    boolean messageLabelClipped = messageLabelUnclippedHeight > messageLabel.getSize().y - yTrim;
    if (messageLabel.getData() instanceof ToolTip) {
        ToolTip toolTip = (ToolTip) messageLabel.getData();
        toolTip.hide();
        toolTip.deactivate();
        messageLabel.setData(null);
    }
    if (messageLabelClipped) {
        ToolTip tooltip = new ToolTip(messageLabel, ToolTip.NO_RECREATE, false) {

            protected Composite createToolTipContentArea(Event event, Composite parent) {
                Composite result = new Composite(parent, SWT.NONE);
                result.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                result.setLayout(new GridLayout());
                Text text = new Text(result, SWT.WRAP);
                text.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                text.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
                text.setText(messageLabel.getText());
                GridData gridData = new GridData();
                gridData.widthHint = messageLabel.getSize().x;
                text.setLayoutData(gridData);
                Dialog.applyDialogFont(result);
                return result;
            }

            public Point getLocation(Point tipSize, Event event) {
                return messageLabel.getShell().toDisplay(messageLabel.getLocation());
            }
        };
        messageLabel.setData(tooltip);
        tooltip.setPopupDelay(0);
        tooltip.activate();
    }
}

From source file:org.eclipse.mylyn.internal.wikitext.ui.editor.MarkupEditorOutline.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    super.createControl(parent);

    TreeViewer viewer = getTreeViewer();
    viewer.setUseHashlookup(true);//from w w w.j a va 2 s.  c om
    viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    viewer.setContentProvider(new BaseWorkbenchContentProvider());
    viewer.setLabelProvider(WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider());
    viewer.setInput(editor.getOutlineModel());

    viewer.addOpenListener(new IOpenListener() {
        public void open(OpenEvent event) {
            revealInEditor(event.getSelection(), true);
        }
    });
    viewer.addPostSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            revealInEditor(event.getSelection(), false);
        }
    });
    viewer.expandAll();

    new ToolTip(viewer.getControl(), ToolTip.RECREATE, false) {
        @Override
        protected Composite createToolTipContentArea(Event event, Composite parent) {

            Composite comp = new Composite(parent, SWT.NONE);
            comp.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));

            GridLayout gl = new GridLayout(1, false);
            gl.marginBottom = 2;
            gl.marginTop = 2;
            gl.marginHeight = 0;
            gl.marginWidth = 0;
            gl.marginLeft = 2;
            gl.marginRight = 2;
            gl.verticalSpacing = 1;
            comp.setLayout(gl);

            Object tipItem = getToolTipItem(new Point(event.x, event.y));
            if (tipItem instanceof OutlineItem) {
                OutlineItem outlineItem = (OutlineItem) tipItem;
                Label label = new Label(comp, SWT.WRAP);
                label.setBackground(comp.getBackground());
                label.setText(outlineItem.getTooltip());
            }

            return comp;
        }

        @Override
        protected boolean shouldCreateToolTip(Event event) {
            final Object eventItem = getToolTipItem(new Point(event.x, event.y));
            boolean shouldCreate = eventItem != null && eventItem instanceof OutlineItem
                    && super.shouldCreateToolTip(event);
            if (!shouldCreate) {
                hide();
            }
            return shouldCreate;
        }

        protected Object getToolTipItem(Point point) {
            TreeItem item = ((Tree) getTreeViewer().getControl()).getItem(point);
            if (item != null) {
                return item.getData();
            }
            return null;
        }
    };

    IPageSite site = getSite();
    site.setSelectionProvider(viewer);
    configureActionBars(site);

    MenuManager manager = new MenuManager("#PopUp"); //$NON-NLS-1$
    manager.setRemoveAllWhenShown(true);
    manager.addMenuListener(new IMenuListener() {
        public void menuAboutToShow(IMenuManager menuManager) {
            contextMenuAboutToShow(menuManager);
        }
    });
    viewer.getTree().setMenu(manager.createContextMenu(viewer.getTree()));

    site.registerContextMenu(MarkupEditor.ID + ".outlineContextMenu", manager, viewer); //$NON-NLS-1$

    configureDnd();
    configureActions();
}

From source file:org.eclipse.mylyn.wikitext.ui.editor.DefaultWikiTextSourceEditorOutline.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    super.createControl(parent);

    TreeViewer viewer = getTreeViewer();
    viewer.setUseHashlookup(true);//  w  w  w . j  a  va2  s.co m
    viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
    viewer.setContentProvider(new BaseWorkbenchContentProvider());
    viewer.setLabelProvider(WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider());
    viewer.setInput(getEditor().getAdapter(OutlineItem.class));

    viewer.addOpenListener(new IOpenListener() {
        public void open(OpenEvent event) {
            revealInEditor(event.getSelection());
        }
    });
    viewer.addPostSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            revealInEditor(event.getSelection());
        }
    });
    viewer.expandAll();

    updateSelectionToMatchEditor();

    new ToolTip(viewer.getControl(), ToolTip.RECREATE, false) {
        @Override
        protected Composite createToolTipContentArea(Event event, Composite parent) {

            Composite comp = new Composite(parent, SWT.NONE);
            comp.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));

            GridLayout gl = new GridLayout(1, false);
            gl.marginBottom = 2;
            gl.marginTop = 2;
            gl.marginHeight = 0;
            gl.marginWidth = 0;
            gl.marginLeft = 2;
            gl.marginRight = 2;
            gl.verticalSpacing = 1;
            comp.setLayout(gl);

            Object tipItem = getToolTipItem(new Point(event.x, event.y));
            if (tipItem instanceof OutlineItem) {
                OutlineItem outlineItem = (OutlineItem) tipItem;
                Label label = new Label(comp, SWT.WRAP);
                label.setBackground(comp.getBackground());
                label.setText(outlineItem.getTooltip());
            }

            return comp;
        }

        @Override
        protected boolean shouldCreateToolTip(Event event) {
            final Object eventItem = getToolTipItem(new Point(event.x, event.y));
            boolean shouldCreate = eventItem != null && eventItem instanceof OutlineItem
                    && super.shouldCreateToolTip(event);
            if (!shouldCreate) {
                hide();
            }
            return shouldCreate;
        }

        protected Object getToolTipItem(Point point) {
            TreeItem item = ((Tree) getTreeViewer().getControl()).getItem(point);
            if (item != null) {
                return item.getData();
            }
            return null;
        }
    };

    MenuManager manager = new MenuManager("#PopUp"); //$NON-NLS-1$
    manager.setRemoveAllWhenShown(true);
    manager.addMenuListener(new IMenuListener() {
        public void menuAboutToShow(IMenuManager menuManager) {
            contextMenuAboutToShow(menuManager);
        }
    });
    viewer.getTree().setMenu(manager.createContextMenu(viewer.getTree()));

}

From source file:org.eclipse.ui.internal.handlers.SpyHandler.java

License:Open Source License

/**
 * @param control/*from   w ww .  j  a  va2 s  . c om*/
 * @param offset
 * @param contributionInfo
 */
protected void doShowTooltip(Control control, Point offset, final ContributionInfo contributionInfo) {
    ToolTip toolTip = new ToolTip(control, ToolTip.NO_RECREATE, true) {

        protected Composite createToolTipContentArea(Event event, Composite parent) {
            // Create the content area
            Composite composite = new Composite(parent, SWT.NONE);
            Color fg = parent.getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND);
            Color bg = parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND);
            composite.setForeground(fg);
            composite.setBackground(bg);
            Text text = new Text(composite, SWT.READ_ONLY);
            text.setForeground(fg);
            text.setBackground(bg);
            String info = NLS.bind(ContributionInfoMessages.ContributionInfo_ContributedBy,
                    contributionInfo.getElementType(), contributionInfo.getBundleId());
            text.setText(info);
            GridLayoutFactory.fillDefaults().margins(2, 2).generateLayout(composite);
            return composite;
        }
    };
    toolTip.setHideOnMouseDown(false);
    toolTip.setHideDelay(3000);
    toolTip.show(offset);
}