List of usage examples for org.eclipse.jface.util Util isMotif
@Deprecated public static boolean isMotif()
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); } }