Example usage for org.eclipse.jface.util Util isMotif

List of usage examples for org.eclipse.jface.util Util isMotif

Introduction

In this page you can find the example usage for org.eclipse.jface.util Util isMotif.

Prototype

@Deprecated
public static boolean isMotif() 

Source Link

Document

Common WS query helper method.

Usage

From source file:com.imperial.fiksen.codesimilarity.compare.ParseTreeMergeViewer.java

License:Open Source License

/**
 * Creates a text merge viewer under the given parent control.
 * /*from w  w w.  j  a  v  a 2 s . c o  m*/
 * @param parent
 *            the parent control
 * @param style
 *            SWT style bits for top level composite of this viewer
 * @param configuration
 *            the configuration object
 */
public ParseTreeMergeViewer(Composite parent, int style, CompareConfiguration configuration) {
    super(style, ResourceBundle.getBundle(BUNDLE_NAME), configuration);

    operationHistoryListener = new IOperationHistoryListener() {
        public void historyNotification(OperationHistoryEvent event) {
            ParseTreeMergeViewer.this.historyNotification(event);
        }
    };
    OperationHistoryFactory.getOperationHistory().addOperationHistoryListener(operationHistoryListener);

    fMerger = new ParseTreeDocumentMerger(new IDocumentMergerInput() {
        public ITokenComparator createTokenComparator(String line) {
            return ParseTreeMergeViewer.this.createTokenComparator(line);
        }

        public CompareConfiguration getCompareConfiguration() {
            return ParseTreeMergeViewer.this.getCompareConfiguration();
        }

        public IDocument getDocument(char contributor) {
            switch (contributor) {
            case LEFT_CONTRIBUTOR:
                return fLeft.getSourceViewer().getDocument();
            case RIGHT_CONTRIBUTOR:
                return fRight.getSourceViewer().getDocument();
            case ANCESTOR_CONTRIBUTOR:
                return fAncestor.getSourceViewer().getDocument();
            }
            return null;
        }

        public int getHunkStart() {
            return ParseTreeMergeViewer.this.getHunkStart();
        }

        public Position getRegion(char contributor) {
            switch (contributor) {
            case LEFT_CONTRIBUTOR:
                return fLeft.getRegion();
            case RIGHT_CONTRIBUTOR:
                return fRight.getRegion();
            case ANCESTOR_CONTRIBUTOR:
                return fAncestor.getRegion();
            }
            return null;
        }

        public boolean isHunkOnLeft() {
            ITypedElement left = ((ICompareInput) getInput()).getRight();
            return left != null && Utilities.getAdapter(left, IHunk.class) != null;
        }

        public boolean isIgnoreAncestor() {
            return ParseTreeMergeViewer.this.isIgnoreAncestor();
        }

        public boolean isPatchHunk() {
            return ParseTreeMergeViewer.this.isPatchHunk();
        }

        public boolean isShowPseudoConflicts() {
            return fShowPseudoConflicts;
        }

        public boolean isThreeWay() {
            return ParseTreeMergeViewer.this.isThreeWay();
        }

        public boolean isPatchHunkOk() {
            return ParseTreeMergeViewer.this.isPatchHunkOk();
        }

    });

    int inheritedStyle = parent.getStyle();
    if ((inheritedStyle & SWT.LEFT_TO_RIGHT) != 0)
        fInheritedDirection = SWT.LEFT_TO_RIGHT;
    else if ((inheritedStyle & SWT.RIGHT_TO_LEFT) != 0)
        fInheritedDirection = SWT.RIGHT_TO_LEFT;
    else
        fInheritedDirection = SWT.NONE;

    if ((style & SWT.LEFT_TO_RIGHT) != 0)
        fTextDirection = SWT.LEFT_TO_RIGHT;
    else if ((style & SWT.RIGHT_TO_LEFT) != 0)
        fTextDirection = SWT.RIGHT_TO_LEFT;
    else
        fTextDirection = SWT.NONE;

    fSymbolicFontName = getSymbolicFontName();

    fIsMotif = Util.isMotif();
    fIsCarbon = Util.isCarbon();
    fIsMac = Util.isMac();

    if (fIsMotif)
        fMarginWidth = 0;

    fPreferenceChangeListener = new IPropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent event) {
            ParseTreeMergeViewer.this.handlePropertyChangeEvent(event);
        }
    };

    fPreferenceStore = createChainedPreferenceStore();
    if (fPreferenceStore != null) {
        fPreferenceStore.addPropertyChangeListener(fPreferenceChangeListener);

        fLeftIsLocal = Utilities.getBoolean(getCompareConfiguration(), "LEFT_IS_LOCAL", false); //$NON-NLS-1$
        fSynchronizedScrolling = fPreferenceStore.getBoolean(ComparePreferencePage.SYNCHRONIZE_SCROLLING);
        fShowPseudoConflicts = fPreferenceStore.getBoolean(ComparePreferencePage.SHOW_PSEUDO_CONFLICTS);
        // fUseSplines=
        // fPreferenceStore.getBoolean(ComparePreferencePage.USE_SPLINES);
        fUseSingleLine = fPreferenceStore.getBoolean(ComparePreferencePage.USE_SINGLE_LINE);
        fHighlightTokenChanges = fPreferenceStore.getBoolean(ComparePreferencePage.HIGHLIGHT_TOKEN_CHANGES);
        // fUseResolveUI=
        // fPreferenceStore.getBoolean(ComparePreferencePage.USE_RESOLVE_UI);
    }

    buildControl(parent);

    setColors();

    INavigatable nav = new INavigatable() {
        public boolean selectChange(int flag) {
            if (flag == INavigatable.FIRST_CHANGE || flag == INavigatable.LAST_CHANGE) {
                selectFirstDiff(flag == INavigatable.FIRST_CHANGE);
                return false;
            }
            return navigate(flag == INavigatable.NEXT_CHANGE, false, false);
        }

        public Object getInput() {
            return ParseTreeMergeViewer.this.getInput();
        }

        public boolean openSelectedChange() {
            return false;
        }

        public boolean hasChange(int flag) {
            return getNextVisibleDiff(flag == INavigatable.NEXT_CHANGE, false) != null;
        }
    };
    getControl().setData(INavigatable.NAVIGATOR_PROPERTY, nav);

    fBirdsEyeCursor = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND);

    JFaceResources.getFontRegistry().addListener(fPreferenceChangeListener);
    JFaceResources.getColorRegistry().addListener(fPreferenceChangeListener);
    updateFont();
}

From source file:org.eclipse.compare.codereview.compareEditor.RefacTextMergeViewer.java

License:Open Source License

/**
 * Creates a text merge viewer under the given parent control.
 *
 * @param parent the parent control//from w ww  .  j a  v  a  2  s . c o  m
 * @param style SWT style bits for top level composite of this viewer
 * @param configuration the configuration object
 */
public RefacTextMergeViewer(Composite parent, int style, CompareConfiguration configuration) {
    super(style, ResourceBundle.getBundle(BUNDLE_NAME), configuration);

    operationHistoryListener = new IOperationHistoryListener() {
        public void historyNotification(OperationHistoryEvent event) {
            RefacTextMergeViewer.this.historyNotification(event);
        }
    };
    OperationHistoryFactory.getOperationHistory().addOperationHistoryListener(operationHistoryListener);

    fMerger = new DocumentMerger(new IDocumentMergerInput() {
        public ITokenComparator createTokenComparator(String line) {
            return RefacTextMergeViewer.this.createTokenComparator(line);
        }

        public CompareConfiguration getCompareConfiguration() {
            return RefacTextMergeViewer.this.getCompareConfiguration();
        }

        public IDocument getDocument(char contributor) {
            switch (contributor) {
            case LEFT_CONTRIBUTOR:
                return fLeft.getSourceViewer().getDocument();
            case RIGHT_CONTRIBUTOR:
                return fRight.getSourceViewer().getDocument();
            case ANCESTOR_CONTRIBUTOR:
                return fAncestor.getSourceViewer().getDocument();
            }
            return null;
        }

        public int getHunkStart() {
            return RefacTextMergeViewer.this.getHunkStart();
        }

        public Position getRegion(char contributor) {
            switch (contributor) {
            case LEFT_CONTRIBUTOR:
                return fLeft.getRegion();
            case RIGHT_CONTRIBUTOR:
                return fRight.getRegion();
            case ANCESTOR_CONTRIBUTOR:
                return fAncestor.getRegion();
            }
            return null;
        }

        public boolean isHunkOnLeft() {
            ITypedElement left = ((ICompareInput) getInput()).getRight();
            return left != null && Utilities.getAdapter(left, IHunk.class) != null;
        }

        public boolean isIgnoreAncestor() {
            return RefacTextMergeViewer.this.isIgnoreAncestor();
        }

        public boolean isPatchHunk() {
            return RefacTextMergeViewer.this.isPatchHunk();
        }

        public boolean isShowPseudoConflicts() {
            return fShowPseudoConflicts;
        }

        public boolean isThreeWay() {
            return RefacTextMergeViewer.this.isThreeWay();
        }

        public boolean isPatchHunkOk() {
            return RefacTextMergeViewer.this.isPatchHunkOk();
        }

    });

    int inheritedStyle = parent.getStyle();
    if ((inheritedStyle & SWT.LEFT_TO_RIGHT) != 0)
        fInheritedDirection = SWT.LEFT_TO_RIGHT;
    else if ((inheritedStyle & SWT.RIGHT_TO_LEFT) != 0)
        fInheritedDirection = SWT.RIGHT_TO_LEFT;
    else
        fInheritedDirection = SWT.NONE;

    if ((style & SWT.LEFT_TO_RIGHT) != 0)
        fTextDirection = SWT.LEFT_TO_RIGHT;
    else if ((style & SWT.RIGHT_TO_LEFT) != 0)
        fTextDirection = SWT.RIGHT_TO_LEFT;
    else
        fTextDirection = SWT.NONE;

    fSymbolicFontName = getSymbolicFontName();

    fIsMotif = Util.isMotif();
    fIsCarbon = Util.isCarbon();
    fIsMac = Util.isMac();

    if (fIsMotif)
        fMarginWidth = 0;

    fPreferenceChangeListener = new IPropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent event) {
            RefacTextMergeViewer.this.handlePropertyChangeEvent(event);
        }
    };

    fPreferenceStore = createChainedPreferenceStore();
    if (fPreferenceStore != null) {
        fPreferenceStore.addPropertyChangeListener(fPreferenceChangeListener);

        fLeftIsLocal = Utilities.getBoolean(getCompareConfiguration(), "LEFT_IS_LOCAL", false); //$NON-NLS-1$
        fSynchronizedScrolling = fPreferenceStore.getBoolean(ComparePreferencePage.SYNCHRONIZE_SCROLLING);
        fShowPseudoConflicts = fPreferenceStore.getBoolean(ComparePreferencePage.SHOW_PSEUDO_CONFLICTS);
        //fUseSplines= fPreferenceStore.getBoolean(ComparePreferencePage.USE_SPLINES);
        fUseSingleLine = fPreferenceStore.getBoolean(ComparePreferencePage.USE_SINGLE_LINE);
        fHighlightTokenChanges = fPreferenceStore.getBoolean(ComparePreferencePage.HIGHLIGHT_TOKEN_CHANGES);
        //fUseResolveUI= fPreferenceStore.getBoolean(ComparePreferencePage.USE_RESOLVE_UI);
    }

    buildControl(parent);

    setColors();

    INavigatable nav = new INavigatable() {
        public boolean selectChange(int flag) {
            if (flag == INavigatable.FIRST_CHANGE || flag == INavigatable.LAST_CHANGE) {
                selectFirstDiff(flag == INavigatable.FIRST_CHANGE);
                return false;
            }
            return navigate(flag == INavigatable.NEXT_CHANGE, false, false);
        }

        public Object getInput() {
            return RefacTextMergeViewer.this.getInput();
        }

        public boolean openSelectedChange() {
            return false;
        }

        public boolean hasChange(int flag) {
            return getNextVisibleDiff(flag == INavigatable.NEXT_CHANGE, false) != null;
        }
    };
    fComposite.setData(INavigatable.NAVIGATOR_PROPERTY, nav);

    fBirdsEyeCursor = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND);

    JFaceResources.getFontRegistry().addListener(fPreferenceChangeListener);
    JFaceResources.getColorRegistry().addListener(fPreferenceChangeListener);
    updateFont();
}

From source file:org.eclipse.compare.contentmergeviewer.TextMergeViewer.java

License:Open Source License

/**
 * Creates a text merge viewer under the given parent control.
 *
 * @param parent the parent control//from  w  w  w .j av  a  2s.c o m
 * @param style SWT style bits for top level composite of this viewer
 * @param configuration the configuration object
 */
public TextMergeViewer(Composite parent, int style, CompareConfiguration configuration) {
    super(style, ResourceBundle.getBundle(BUNDLE_NAME), configuration);

    operationHistoryListener = new IOperationHistoryListener() {
        public void historyNotification(OperationHistoryEvent event) {
            TextMergeViewer.this.historyNotification(event);
        }
    };
    OperationHistoryFactory.getOperationHistory().addOperationHistoryListener(operationHistoryListener);

    fMerger = new DocumentMerger(new IDocumentMergerInput() {
        public ITokenComparator createTokenComparator(String line) {
            return TextMergeViewer.this.createTokenComparator(line);
        }

        public CompareConfiguration getCompareConfiguration() {
            return TextMergeViewer.this.getCompareConfiguration();
        }

        public IDocument getDocument(char contributor) {
            switch (contributor) {
            case LEFT_CONTRIBUTOR:
                return fLeft.getSourceViewer().getDocument();
            case RIGHT_CONTRIBUTOR:
                return fRight.getSourceViewer().getDocument();
            case ANCESTOR_CONTRIBUTOR:
                return fAncestor.getSourceViewer().getDocument();
            }
            return null;
        }

        public int getHunkStart() {
            return TextMergeViewer.this.getHunkStart();
        }

        public Position getRegion(char contributor) {
            switch (contributor) {
            case LEFT_CONTRIBUTOR:
                return fLeft.getRegion();
            case RIGHT_CONTRIBUTOR:
                return fRight.getRegion();
            case ANCESTOR_CONTRIBUTOR:
                return fAncestor.getRegion();
            }
            return null;
        }

        public boolean isHunkOnLeft() {
            ITypedElement left = ((ICompareInput) getInput()).getRight();
            return left != null && Utilities.getAdapter(left, IHunk.class) != null;
        }

        public boolean isIgnoreAncestor() {
            return TextMergeViewer.this.isIgnoreAncestor();
        }

        public boolean isPatchHunk() {
            return TextMergeViewer.this.isPatchHunk();
        }

        public boolean isShowPseudoConflicts() {
            return fShowPseudoConflicts;
        }

        public boolean isThreeWay() {
            return TextMergeViewer.this.isThreeWay();
        }

        public boolean isPatchHunkOk() {
            return TextMergeViewer.this.isPatchHunkOk();
        }

    });

    int inheritedStyle = parent.getStyle();
    if ((inheritedStyle & SWT.LEFT_TO_RIGHT) != 0)
        fInheritedDirection = SWT.LEFT_TO_RIGHT;
    else if ((inheritedStyle & SWT.RIGHT_TO_LEFT) != 0)
        fInheritedDirection = SWT.RIGHT_TO_LEFT;
    else
        fInheritedDirection = SWT.NONE;

    if ((style & SWT.LEFT_TO_RIGHT) != 0)
        fTextDirection = SWT.LEFT_TO_RIGHT;
    else if ((style & SWT.RIGHT_TO_LEFT) != 0)
        fTextDirection = SWT.RIGHT_TO_LEFT;
    else
        fTextDirection = SWT.NONE;

    fSymbolicFontName = getSymbolicFontName();

    fIsMotif = Util.isMotif();
    fIsCarbon = Util.isCarbon();
    fIsMac = Util.isMac();

    if (fIsMotif)
        fMarginWidth = 0;

    fPreferenceChangeListener = new IPropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent event) {
            TextMergeViewer.this.handlePropertyChangeEvent(event);
        }
    };

    fPreferenceStore = createChainedPreferenceStore();
    if (fPreferenceStore != null) {
        fPreferenceStore.addPropertyChangeListener(fPreferenceChangeListener);

        fLeftIsLocal = Utilities.getBoolean(getCompareConfiguration(), "LEFT_IS_LOCAL", false); //$NON-NLS-1$
        fSynchronizedScrolling = fPreferenceStore.getBoolean(ComparePreferencePage.SYNCHRONIZE_SCROLLING);
        fShowPseudoConflicts = fPreferenceStore.getBoolean(ComparePreferencePage.SHOW_PSEUDO_CONFLICTS);
        //fUseSplines= fPreferenceStore.getBoolean(ComparePreferencePage.USE_SPLINES);
        fUseSingleLine = fPreferenceStore.getBoolean(ComparePreferencePage.USE_SINGLE_LINE);
        fHighlightTokenChanges = fPreferenceStore.getBoolean(ComparePreferencePage.HIGHLIGHT_TOKEN_CHANGES);
        //fUseResolveUI= fPreferenceStore.getBoolean(ComparePreferencePage.USE_RESOLVE_UI);
    }

    buildControl(parent);

    setColors();

    INavigatable nav = new INavigatable() {
        public boolean selectChange(int flag) {
            if (flag == INavigatable.FIRST_CHANGE || flag == INavigatable.LAST_CHANGE) {
                selectFirstDiff(flag == INavigatable.FIRST_CHANGE);
                return false;
            }
            return navigate(flag == INavigatable.NEXT_CHANGE, false, false);
        }

        public Object getInput() {
            return TextMergeViewer.this.getInput();
        }

        public boolean openSelectedChange() {
            return false;
        }

        public boolean hasChange(int flag) {
            return getNextVisibleDiff(flag == INavigatable.NEXT_CHANGE, false) != null;
        }
    };
    fComposite.setData(INavigatable.NAVIGATOR_PROPERTY, nav);

    fBirdsEyeCursor = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND);

    JFaceResources.getFontRegistry().addListener(fPreferenceChangeListener);
    JFaceResources.getColorRegistry().addListener(fPreferenceChangeListener);
    updateFont();
}

From source file:org.eclipse.ui.internal.keys.NativeModifierKeyComparator.java

License:Open Source License

/**
 * Calculates a rank for a given modifier key.
 * /*from w  w w  .  ja v  a 2s .  co m*/
 * @param modifierKey
 *            The modifier key to rank; may be <code>null</code>.
 * @return The rank of this modifier key. This is a non-negative number
 *         where a lower number suggests a higher rank.
 */
private int rank(ModifierKey modifierKey) {

    if (Util.isWindows()) {
        return rankWindows(modifierKey);
    }

    if (Util.isGtk()) {
        // TODO Do a look-up on window manager.
        return rankGNOME(modifierKey);
    }

    if (Util.isMac()) {
        return rankMacOSX(modifierKey);
    }

    if (Util.isMotif()) {
        // TODO Do a look-up on window manager.
        return rankGNOME(modifierKey);
    }

    return UNKNOWN_KEY;
}

From source file:org.eclipse.ui.internal.presentations.BasicPartList.java

License:Open Source License

protected TableViewer createTableViewer(Composite parent, int style) {
    Table table = new Table(parent, SWT.SINGLE | (style & ~SWT.MULTI));
    table.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
    TableViewer tableViewer = new TableViewer(table) {
        /* (non-Javadoc)
         * @see org.eclipse.jface.viewers.TableViewer#internalRefresh(java.lang.Object)
         *//*  w ww.java 2 s  .  c  o  m*/
        protected void internalRefresh(Object element) {
            boolean usingMotif = Util.isMotif();
            try {
                // This avoids a "graphic is disposed" error on Motif by not letting
                // it redraw while we remove entries.  Some items in this table are
                // being removed and may have icons which may have already been
                // disposed elsewhere.
                if (usingMotif) {
                    getTable().setRedraw(false);
                }
                super.internalRefresh(element);
            } finally {
                if (usingMotif) {
                    getTable().setRedraw(true);
                }
            }
        }
    };
    tableViewer.addFilter(new NamePatternFilter());
    tableViewer.setContentProvider(new BasicStackListContentProvider());
    if (((TabBehaviour) Tweaklets.get(TabBehaviour.KEY)).sortEditorListAlphabetically()) {
        tableViewer.setComparator(new BasicStackListViewerComparator());
    }
    tableViewer.setLabelProvider(new BasicStackListLabelProvider());

    ColumnViewerToolTipSupport.enableFor(tableViewer);

    return tableViewer;
}

From source file:org.zamia.plugin.views.sim.SimulatorView.java

License:Open Source License

public void createPartControl(Composite aParent) {

    fDisplay = aParent.getDisplay();//  w  w w .ja v  a2  s. c om
    fShell = aParent.getShell();

    fYellow = fDisplay.getSystemColor(SWT.COLOR_YELLOW);
    fBlack = fDisplay.getSystemColor(SWT.COLOR_BLACK);
    fWhite = new Color(fDisplay, 50, 50, 50);

    fMinusIcon = ZamiaPlugin.getImage("/share/images/minus.gif");

    fColors = new Color[16];

    fColors[0] = new Color(fDisplay, 200, 100, 255); // purple
    fColors[1] = new Color(fDisplay, 200, 200, 200); // light gray
    fColors[2] = new Color(fDisplay, 255, 0, 0); // red
    fColors[3] = new Color(fDisplay, 150, 150, 255); // light blue
    fColors[4] = new Color(fDisplay, 255, 255, 0); // yellow
    fColors[5] = new Color(fDisplay, 150, 255, 150); // light green
    fColors[6] = new Color(fDisplay, 80, 80, 255); // blue
    fColors[7] = new Color(fDisplay, 170, 170, 170); // gray
    fColors[8] = new Color(fDisplay, 255, 120, 00); // orange
    fColors[9] = new Color(fDisplay, 120, 120, 120); // dark gray
    fColors[10] = new Color(fDisplay, 255, 150, 150); // light red
    fColors[11] = new Color(fDisplay, 139, 71, 38); // brown
    fColors[12] = new Color(fDisplay, 255, 0, 255); // magenta
    fColors[13] = new Color(fDisplay, 80, 255, 80); // green
    fColors[14] = new Color(fDisplay, 0, 255, 255); // cyan
    fColors[15] = new Color(fDisplay, 255, 255, 255); // white

    fControl = new Composite(aParent, SWT.NONE);

    fTraceDialog = new TraceDialog(getViewSite().getShell());
    fTraceDialog.setTitle("Select signals to trace");

    /*
     * setup gui
     */

    GridLayout gl = new GridLayout();
    fControl.setLayout(gl);
    gl.numColumns = 1;
    gl.horizontalSpacing = 0;
    gl.verticalSpacing = 0;
    gl.marginHeight = 0;
    gl.marginWidth = 0;

    // a coolbar for navigation and zoom

    CoolBar coolbar = new CoolBar(fControl, SWT.NONE);
    GridData gd = new GridData();
    gd.verticalAlignment = GridData.FILL;
    gd.grabExcessVerticalSpace = false;
    gd.horizontalAlignment = GridData.FILL;
    gd.grabExcessHorizontalSpace = true;
    coolbar.setLayoutData(gd);

    // Start coolitem

    Composite comp = new Composite(coolbar, SWT.NONE);

    gl = new GridLayout();
    gl.numColumns = 9;
    gl.horizontalSpacing = 2;
    gl.verticalSpacing = 0;
    gl.marginHeight = 0;
    gl.marginWidth = 0;
    comp.setLayout(gl);

    fInfoLabel = new Text(comp, SWT.BORDER);
    fInfoLabel.setText("Simulator not started yet.                ");
    fInfoLabel.setEditable(false);

    Label l = new Label(comp, SWT.NONE);
    l.setText(" Run :");

    fRunText = new Text(comp, SWT.BORDER | SWT.RIGHT);
    FontMetrics fm = new GC(fRunText).getFontMetrics();
    int width = 10 * fm.getAverageCharWidth();
    int height = fm.getHeight();
    fRunText.setLayoutData(new GridData(width, height));
    fRunText.setText("100");

    fTimeUnitCombo = new CCombo(comp, SWT.READ_ONLY | SWT.BORDER);
    fTimeUnitCombo.setItems(new String[] { "s", "ms", "\u00B5s", "ns" });
    fTimeUnitCombo.select(3);

    ToolBar tb = new ToolBar(comp, SWT.FLAT);

    fRunTI = new ToolItem(tb, SWT.NONE);
    Image icon = ZamiaPlugin.getImage("/share/images/run.gif");
    fRunTI.setImage(icon);
    fRunTI.setToolTipText("Run");
    fRunTI.setEnabled(false);
    fRunTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {

            String str = fRunText.getText();

            double factor;
            switch (fTimeUnitCombo.getSelectionIndex()) {
            case 0:
                factor = 1000000000000000.0;
                break;
            case 1:
                factor = 1000000000000.0;
                break;
            case 2:
                factor = 1000000000.0;
                break;
            default:
                factor = 1000000.0;
            }
            BigInteger aTime = new BigInteger(str).multiply(BigInteger.valueOf((long) factor));

            SimulationJob simJob = new SimulationJob(aTime);
            simJob.setPriority(Job.LONG);
            simJob.schedule();
        }
    });
    KeyAdapter simRunnerOnEnter = new KeyAdapter() {
        @Override
        public void keyReleased(KeyEvent e) {
            if (e.keyCode == SWT.CR) {
                fRunTI.notifyListeners(SWT.Selection, null);
            }
        }
    };
    fRunText.addKeyListener(simRunnerOnEnter);
    fTimeUnitCombo.addKeyListener(simRunnerOnEnter);

    fRestartTI = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/restart.gif");
    fRestartTI.setImage(icon);
    fRestartTI.setToolTipText("Restart");
    fRestartTI.setEnabled(false);
    fRestartTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            getValueForcer().reset();
            fCoverageTI.setSelection(false);
            doCoverage();
            Job resetJob = new Job("Resetting simulator...") {
                @Override
                protected IStatus run(IProgressMonitor iProgressMonitor) {
                    try {
                        fSimulator.reset();
                    } catch (ZamiaException e2) {
                        el.logException(e2);
                        ZamiaPlugin.showError(getSite().getShell(), "Simulator Error",
                                "Simulator exception caught", e2.toString());
                    }
                    return Status.OK_STATUS;
                }
            };
            resetJob.setPriority(Job.LONG);
            resetJob.schedule();
        }
    });

    fStopTI = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/minus.gif");
    fStopTI.setImage(icon);
    fStopTI.setToolTipText("Stop simulation");
    fStopTI.setEnabled(false);
    fStopTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            if (fSimulator instanceof IGSimRef) {
                ((IGSimRef) fSimulator).setMonitor(IGAbstractProgressMonitor.CANCELLED_MONITOR);
            }
        }
    });

    fTraceTI = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/trace.gif");
    fTraceTI.setImage(icon);
    fTraceTI.setToolTipText("Trace...");
    fTraceTI.setEnabled(false);
    fTraceTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            doTrace();
        }
    });
    fUnTraceTI = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/untrace.gif");
    fUnTraceTI.setImage(icon);
    fUnTraceTI.setToolTipText("Untrace");
    fUnTraceTI.setEnabled(false);
    fUnTraceTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            doUnTrace();
        }
    });

    fNewLineTI = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/new_line.gif");
    fNewLineTI.setImage(icon);
    fNewLineTI.setToolTipText("Add new group/marker line");
    fNewLineTI.setEnabled(false);
    fNewLineTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            doNewLine();
        }
    });

    fCoverageTI = new ToolItem(tb, SWT.CHECK);
    icon = ZamiaPlugin.getImage("/share/images/show_source.gif");
    fCoverageTI.setImage(icon);
    fCoverageTI.setToolTipText("Show simulated lines");
    fCoverageTI.setEnabled(false);
    fCoverageTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            doCoverage();
        }
    });

    fStaticAnalysisTI = new ToolItem(tb, SWT.CHECK);
    icon = ZamiaPlugin.getImage("/share/images/find.gif");
    fStaticAnalysisTI.setImage(icon);
    fStaticAnalysisTI.setToolTipText("Show statically analyzed suspected lines");
    fStaticAnalysisTI.setEnabled(true);
    fStaticAnalysisTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            doStaticAnalysis();
        }
    });

    CoolItem citem = new CoolItem(coolbar, SWT.NONE);
    citem.setControl(comp);
    calcSize(citem);

    // navigation coolitem

    comp = new Composite(coolbar, SWT.NONE);

    gl = new GridLayout();
    gl.numColumns = 1;
    gl.horizontalSpacing = 0;
    gl.verticalSpacing = 0;
    gl.marginHeight = 0;
    gl.marginWidth = 0;
    comp.setLayout(gl);

    tb = new ToolBar(comp, SWT.FLAT);

    fPrevTransTI = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/prev_transition.gif");
    fPrevTransTI.setImage(icon);
    fPrevTransTI.setToolTipText("Go to previous transition");
    fPrevTransTI.setEnabled(false);
    fPrevTransTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            gotoTransition(false);
        }
    });

    fNextTransTI = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/next_transition.gif");
    fNextTransTI.setImage(icon);
    fNextTransTI.setToolTipText("Go to next transition");
    fNextTransTI.setEnabled(false);
    fNextTransTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {

            gotoTransition(true);
        }
    });

    fGotoCycleTI = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/goto_cycle.gif");
    fGotoCycleTI.setImage(icon);
    fGotoCycleTI.setToolTipText("Go to time/cycle");
    fGotoCycleTI.setEnabled(false);
    fGotoCycleTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            gotoCycle();
        }
    });

    citem = new CoolItem(coolbar, SWT.NONE);
    citem.setControl(comp);
    calcSize(citem);

    // zoom coolitem

    comp = new Composite(coolbar, SWT.NONE);

    gl = new GridLayout();
    gl.numColumns = 1;
    gl.horizontalSpacing = 0;
    gl.verticalSpacing = 0;
    gl.marginHeight = 0;
    gl.marginWidth = 0;
    comp.setLayout(gl);

    tb = new ToolBar(comp, SWT.FLAT);
    tb.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));

    ToolItem ti = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/zoom100.gif");
    ti.setImage(icon);
    ti.setToolTipText("Zoom 1:1");
    ti.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            zoomDefault();
        }
    });

    ti = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/zoomin.gif");
    ti.setImage(icon);
    ti.setToolTipText("Zoom In 2x");
    ti.setEnabled(true);
    ti.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            zoomIn();
        }
    });
    ti = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/zoomout.gif");
    ti.setImage(icon);
    ti.setToolTipText("Zoom out 2x");
    ti.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            zoomOut();
        }
    });

    ti = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/zoomFull.gif");
    ti.setImage(icon);
    ti.setToolTipText("Zoom Full");
    ti.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            zoomFull();
        }
    });

    citem = new CoolItem(coolbar, SWT.NONE);
    citem.setControl(comp);
    calcSize(citem);

    // job coolitem

    comp = new Composite(coolbar, SWT.NONE);

    gl = new GridLayout();
    gl.numColumns = 1;
    gl.horizontalSpacing = 0;
    gl.verticalSpacing = 0;
    gl.marginHeight = 0;
    gl.marginWidth = 0;
    comp.setLayout(gl);

    tb = new ToolBar(comp, SWT.FLAT);
    tb.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));

    fJobTI = new ToolItem(tb, SWT.NONE);
    icon = ZamiaPlugin.getImage("/share/images/RedDot0.gif");
    fJobTI.setImage(icon);
    fJobTI.setToolTipText("Stop");
    fJobTI.setEnabled(false);
    fJobTI.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            fScheduler.cancelCurrentJob();
        }
    });

    citem = new CoolItem(coolbar, SWT.NONE);
    citem.setControl(comp);
    calcSize(citem);

    /*
     * waveform viewer
     */

    fWVComposite = new Composite(fControl, SWT.NONE);
    fWVComposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));

    // grid layout please
    gl = new GridLayout();
    fWVComposite.setLayout(gl);
    gl.numColumns = 1;
    gl.horizontalSpacing = 0;
    gl.verticalSpacing = 0;
    gl.marginHeight = 0;
    gl.marginWidth = 0;

    /*
     * waveform display sash with table on the left, canvas on the right
     */

    SashForm sash = new SashForm(fWVComposite, SWT.NONE);
    sash.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));

    Composite treeComposite = new Composite(sash, SWT.NONE);

    TreeColumnLayout treeColumnLayout = new TreeColumnLayout();

    treeComposite.setLayout(treeColumnLayout);

    fTree = new Tree(treeComposite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    fTree.setLinesVisible(true);

    if (Util.isMotif()) {
        // dark gray because motif uses black as highlight color
        Color bg = new Color(fDisplay, 80, 80, 80);
        fTree.setBackground(bg);
    } else {
        fTree.setBackground(fBlack);
    }
    fTree.setForeground(fDisplay.getSystemColor(SWT.COLOR_WHITE));

    TreeColumn column1 = new TreeColumn(fTree, SWT.LEFT);
    column1.setText("Signal");
    treeColumnLayout.setColumnData(column1, new ColumnWeightData(50, 150, true));

    TreeColumn column2 = new TreeColumn(fTree, SWT.LEFT);
    column2.setText("Value");
    treeColumnLayout.setColumnData(column2, new ColumnWeightData(50, 4096, true));

    fTree.setHeaderVisible(true);
    fTree.setRedraw(true);
    fTree.pack();

    fTree.addMouseListener(new MouseListener() {
        public void mouseDoubleClick(MouseEvent e) {
            TreeItem[] items = fTree.getSelection();

            if (items.length == 0)
                return;

            doDoubleClick((TraceLine) items[0].getData());
        }

        public void mouseDown(MouseEvent e) {
            fWaveformCanvas.redraw();
            fTree.forceFocus();
        }

        public void mouseUp(MouseEvent e) {
        }
    });

    fTree.addSelectionListener(new SelectionListener() {

        public void widgetDefaultSelected(SelectionEvent aE) {
        }

        public void widgetSelected(SelectionEvent aE) {
            moveCursor(fCursorTime);
            //repaint();
        }
    });

    fTree.addTreeListener(new TreeListener() {

        @Override
        public void treeCollapsed(TreeEvent aE) {
            if (aE.item instanceof TreeItem) {
                ((TreeItem) aE.item).setExpanded(false);
            }
            repaint();
        }

        @Override
        public void treeExpanded(TreeEvent aE) {
            if (aE.item instanceof TreeItem) {
                ((TreeItem) aE.item).setExpanded(true);
            }
            repaint();
        }
    });

    fTree.addKeyListener(new KeyListener() {

        public void keyPressed(KeyEvent aE) {

            if ((aE.stateMask & SWT.CTRL) != 0) {
                if (aE.keyCode == SWT.ARROW_LEFT) {

                    gotoTransition(false);
                    aE.doit = false;

                } else if (aE.keyCode == SWT.ARROW_RIGHT) {

                    gotoTransition(true);
                    aE.doit = false;

                } else if (aE.keyCode == SWT.KEYPAD_ADD || aE.keyCode == 'I' || aE.keyCode == 'i'
                        || aE.keyCode == '+') {

                    zoomIn();
                    aE.doit = false;

                } else if (aE.keyCode == SWT.KEYPAD_SUBTRACT || aE.keyCode == 'O' || aE.keyCode == 'o'
                        || aE.keyCode == '-') {

                    zoomOut();
                    aE.doit = false;

                } else if (aE.keyCode == SWT.KEYPAD_SUBTRACT || aE.keyCode == 'F' || aE.keyCode == 'f') {

                    zoomFull();
                    aE.doit = false;

                } else if (aE.keyCode == SWT.KEYPAD_1 || aE.keyCode == '1') {

                    zoomDefault();
                    aE.doit = false;

                } else if (aE.keyCode == 'l') {

                    doTrace();
                    aE.doit = false;

                }

                if ((aE.stateMask & SWT.SHIFT) != 0) {

                    if (aE.keyCode == 'g') {
                        doFindReferences(false);
                        aE.doit = false;
                    }
                    if (aE.keyCode == 'h') {
                        doFindReferences(true);
                        aE.doit = false;
                    }
                }
            } else {

                if (aE.keyCode == '\b' || aE.keyCode == 127) {

                    doUnTrace();
                    aE.doit = false;

                }
            }
        }

        public void keyReleased(KeyEvent aE) {
            // TODO Auto-generated method stub

        }
    });

    /*
     * tree drag and drop
     */

    Transfer[] types = new Transfer[] { TextTransfer.getInstance() };

    DragSource source = new DragSource(fTree, DND.DROP_MOVE);
    source.setTransfer(types);
    source.addDragListener(new DragSourceAdapter() {
        public void dragSetData(DragSourceEvent event) {

            //DragSource ds = (DragSource) event.widget;

            ArrayList<TraceLine> selection = getSelectedTraces();

            StringBuilder buf = new StringBuilder();
            int n = selection.size();
            for (int i = 0; i < n; i++) {

                TraceLine tl = selection.get(i);
                if (tl instanceof TraceLineSignal) {

                    TraceLineSignal tls = (TraceLineSignal) tl;

                    if (!tls.isFullSignal()) {
                        continue;
                    }
                }

                buf.append(selection.get(i).getUID());
                if (i < n - 1) {
                    buf.append(";");
                }
            }

            event.data = buf.toString();
        }
    });

    DropTarget target = new DropTarget(fTree, DND.DROP_MOVE);
    target.setTransfer(types);
    target.addDropListener(new DropTargetAdapter() {
        public void dragEnter(DropTargetEvent event) {
            if (event.detail == DND.DROP_DEFAULT) {
                event.detail = (event.operations & DND.DROP_COPY) != 0 ? DND.DROP_COPY : DND.DROP_NONE;
            }

            // Allow dropping text only
            for (int i = 0, n = event.dataTypes.length; i < n; i++) {
                if (TextTransfer.getInstance().isSupportedType(event.dataTypes[i])) {
                    event.currentDataType = event.dataTypes[i];
                }
            }
        }

        public void dragOver(DropTargetEvent event) {
            // Provide visual feedback
            event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL;
        }

        public void drop(DropTargetEvent event) {

            if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {

                DropTarget target = (DropTarget) event.widget;
                Tree tree = (Tree) target.getControl();
                String data = (String) event.data;

                if (!(event.item instanceof TreeItem)) {
                    return;
                }

                TreeItem treeItem = (TreeItem) event.item;

                TraceLine parentTL = (TraceLine) treeItem.getData();
                TreeItem parentItem = null;
                int index = -1;
                if (parentTL instanceof TraceLineSignal) {

                    TraceLineSignal tls = (TraceLineSignal) parentTL;
                    if (!tls.isFullSignal()) {
                        return;
                    }

                    parentItem = treeItem.getParentItem();

                    if (parentItem != null) {
                        TreeItem[] items = parentItem.getItems();
                        for (int i = 0; i < items.length; i++) {
                            if (items[i] == treeItem) {
                                index = i;
                                break;
                            }
                        }
                    } else {
                        TreeItem[] items = tree.getItems();
                        for (int i = 0; i < items.length; i++) {
                            if (items[i] == treeItem) {
                                index = i;
                                break;
                            }
                        }
                    }
                } else {
                    if (parentTL instanceof TraceLineMarkers) {

                        parentItem = treeItem;
                        index = 0;

                    } else {
                        return;
                    }
                }

                String uids[] = data.split(";");

                logger.info("SimulatorView: drop(): uids: %d", uids.length);

                if (uids != null) {

                    for (int i = 0; i < uids.length; i++) {

                        String uid = uids[i];
                        TraceLine tl = fUIDTraceLineMap.get(uid);

                        if (tl == null) {
                            continue;
                        }

                        TreeItem item = fTraceLineTreeItemMap.get(tl);

                        if (item == null) {
                            continue;
                        }

                        item.dispose();

                        if (parentItem != null) {
                            item = new TreeItem(parentItem, SWT.NONE, index);
                        } else {
                            item = new TreeItem(fTree, SWT.NONE, index);
                        }
                        item.setData(tl);
                        item.setText(new String[] { tl.getLabel(), "" });
                        fTraceLineTreeItemMap.put(tl, item);
                        item.setForeground(getColor(tl.getColor()));

                    }
                }

                updateValueColumn();
                repaint();
                saveTraces();
            }
        }
    });

    /*
     * tree tooltips
     */

    fTree.setToolTipText("");

    // Implement a "fake" tooltip
    final Listener labelListener = new Listener() {
        public void handleEvent(Event event) {
            Label label = (Label) event.widget;
            Shell shell = label.getShell();
            switch (event.type) {
            case SWT.MouseDown:
                shell.dispose();
                break;
            case SWT.MouseExit:
                shell.dispose();
                break;
            }
        }
    };

    Listener treeTooltipListener = new Listener() {
        Shell tip = null;

        Label label = null;

        public void handleEvent(Event event) {
            switch (event.type) {
            case SWT.Dispose:
            case SWT.KeyDown:
            case SWT.MouseMove: {
                if (tip == null)
                    break;
                tip.dispose();
                tip = null;
                label = null;
                break;
            }
            case SWT.MouseHover: {
                TreeItem item = fTree.getItem(new Point(event.x, event.y));
                if (item != null) {
                    if (tip != null && !tip.isDisposed()) {
                        tip.dispose();
                    }

                    TraceLine tl = (TraceLine) item.getData();
                    if (tl == null) {
                        return;
                    }

                    tip = new Shell(fShell, SWT.ON_TOP | SWT.NO_FOCUS | SWT.TOOL);
                    tip.setBackground(fDisplay.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                    FillLayout layout = new FillLayout();
                    layout.marginWidth = 2;
                    tip.setLayout(layout);
                    label = new Label(tip, SWT.NONE);
                    label.setForeground(fDisplay.getSystemColor(SWT.COLOR_INFO_FOREGROUND));
                    label.setBackground(fDisplay.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
                    //label.setData("_TABLEITEM", item);
                    label.setText(tl.getToolTip());
                    label.addListener(SWT.MouseExit, labelListener);
                    label.addListener(SWT.MouseDown, labelListener);
                    Point size = tip.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                    Rectangle rect = item.getBounds(0);
                    Point pt = fTree.toDisplay(rect.x, rect.y);
                    tip.setBounds(pt.x, pt.y, size.x, size.y);
                    tip.setVisible(true);
                }
            }
            }
        }
    };
    fTree.addListener(SWT.Dispose, treeTooltipListener);
    fTree.addListener(SWT.KeyDown, treeTooltipListener);
    fTree.addListener(SWT.MouseMove, treeTooltipListener);
    fTree.addListener(SWT.MouseHover, treeTooltipListener);

    createPopupMenu();

    fWaveformCanvas = new Canvas(sash,
            SWT.V_SCROLL | SWT.H_SCROLL | SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.DOUBLE_BUFFERED);
    fWaveformCanvas.addControlListener(new ControlAdapter() {
        public void controlResized(ControlEvent event) {
            handleResize();
            startCanvasPaintJob();
        }
    });
    fWaveformCanvas.addMouseListener(new MouseListener() {
        public void mouseDoubleClick(MouseEvent e) {
            TreeItem[] items = fTree.getSelection();

            if (items.length == 0)
                return;

            doDoubleClick((TraceLine) items[0].getData());
        }

        private TreeItem fSelectedItem;

        public void mouseDown(MouseEvent aEvent) {

            fSelectedItem = null;

            TreeItem[] items = fTree.getItems();
            int hh = Util.isMotif() ? 0 : fTree.getHeaderHeight();
            for (int i = 0; i < items.length; i++) {
                TreeItem item = items[i];

                if (selectRek(item, aEvent, hh)) {
                    break;
                }
            }

            moveCursor(tXI(aEvent.x + fXOffset - BORDER_WIDTH));
            fMousePressed = true;
            fTree.forceFocus();

            if (fSelectedItem != null) {
                TraceLine tl = (TraceLine) fSelectedItem.getData();
                if (tl instanceof TraceLineMarkers) {

                    TraceLineMarkers tlm = (TraceLineMarkers) tl;

                    TraceLineMarker marker = tlm.findNearestMarker(aEvent.x);

                    if (marker != null) {
                        int xdiff = aEvent.x - marker.getX();

                        //logger.info("xdiff: %d", xdiff);

                        if (xdiff >= 0 && xdiff <= 16) {
                            tlm.delete(marker);
                        } else {
                            String label = ZamiaPlugin.inputDialog(getSite().getShell(), "Marker Label",
                                    "Please enter a new label for the marker:", marker.getLabel());

                            if (label == null || label.length() < 1) {
                                return;
                            }

                            label = label.replace(':', ' ');

                            marker.setLabel(label);
                        }
                        saveTraces();
                        repaint();
                    }
                }
            }

        }

        private boolean selectRek(TreeItem aItem, MouseEvent aEvent, int aHH) {
            Rectangle r = aItem.getBounds(0);
            int ypos = r.y + aHH;
            int ypos2 = r.y + r.height + aHH;

            if (ypos <= aEvent.y && ypos2 >= aEvent.y) {

                fTree.setSelection(aItem);

                fSelectedItem = aItem;

                return true;
            } else {
                int n = aItem.getItemCount();
                for (int i = 0; i < n; i++) {
                    if (selectRek(aItem.getItem(i), aEvent, aHH)) {
                        return true;
                    }
                }
            }
            return false;
        }

        public void mouseUp(MouseEvent e) {
            fMousePressed = false;
        }
    });
    fWaveformCanvas.addMouseMoveListener(new MouseMoveListener() {

        public void mouseMove(MouseEvent e) {
            if (fMousePressed) {
                double d = (double) (e.x - BORDER_WIDTH + fXOffset) / fPixelsPerUnit * fFSPerUnit;
                moveCursor(BigInteger.valueOf((long) d).add(fStartTime));
            }
        }
    });

    /* Set up the paint canvas scroll bars */
    ScrollBar horizontal = fWaveformCanvas.getHorizontalBar();
    horizontal.setVisible(true);
    horizontal.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            scrollHorizontally((ScrollBar) event.widget);
        }
    });
    horizontal = fTree.getHorizontalBar();
    horizontal.setVisible(true);

    ScrollBar vertical = fWaveformCanvas.getVerticalBar();
    vertical.setVisible(false);

    vertical = fTree.getVerticalBar();
    vertical.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            scrollVertically((ScrollBar) event.widget);
        }
    });

    fTree.addSelectionListener(new SelectionAdapter() {

        void bold(TreeItem[] items) {
            for (TreeItem item : items) {
                boolean bold = Arrays.asList(fTree.getSelection()).contains(item);
                item.setFont(setBold(item.getFont(), bold));
                item.setBackground(bold ? fWhite : fBlack);
                bold(item.getItems());
            }
        }

        public void widgetSelected(SelectionEvent e) {
            super.widgetSelected(e);
            bold(fTree.getItems());
        }
    });
    handleResize();
    fWaveformCanvas.addPaintListener(new PaintListener() {
        @Override
        public void paintControl(PaintEvent aPaintEvent) {
            paintWaveformCanvas(aPaintEvent);
        }

    });

    int weights[] = { 45, 55 };
    sash.setWeights(weights);

    fWVComposite.addDisposeListener(new DisposeListener() {
        public void widgetDisposed(DisposeEvent e) {
            shutdown();
        }
    });
}

From source file:org.zamia.plugin.views.sim.SimulatorView.java

License:Open Source License

private void drawHighlight(TreeItem aTreeItem, HashSet<TraceLine> aSelectedTraces, GC aGC) {

    if (aTreeItem.getExpanded()) {
        int n = aTreeItem.getItemCount();
        for (int i = 0; i < n; i++) {
            TreeItem child = aTreeItem.getItem(i);
            drawHighlight(child, aSelectedTraces, aGC);
        }/*from  w w w. j av  a2s . c o m*/
    }

    if (aSelectedTraces.contains(aTreeItem.getData())) {
        int hh = Util.isMotif() ? 0 : fTree.getHeaderHeight();
        Rectangle clientArea = fWaveformCanvas.getClientArea();

        Rectangle r = aTreeItem.getBounds(0);
        int ypos = r.y + hh;
        if (ypos < 0 || ypos > clientArea.height) {
            return;
        }

        aGC.fillRectangle(0, ypos, clientArea.width, r.height);
    }
}