@Override public void createControl(Composite parent) { super.createControl(parent); final SourceViewer viewer = getSourceViewer(); viewer.unconfigure(); IPreferenceStore store = DartToolsPlugin.getDefault().getCombinedPreferenceStore(); viewer.configure( new DartSourceViewerConfiguration( DartToolsPlugin.getDefault().getDartTextTools().getColorManager(), store, null, null)); viewer.getControl().setFont(JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT)); }
void doRename(boolean showPreview) { cancel(); Image image = null; Label label = null; fShowPreview |= showPreview; try { ISourceViewer viewer = fEditor.getViewer(); if (viewer instanceof SourceViewer) { SourceViewer sourceViewer = (SourceViewer) viewer; Control viewerControl = sourceViewer.getControl(); if (viewerControl instanceof Composite) { Composite composite = (Composite) viewerControl; Display display = composite.getDisplay(); // Flush pending redraw requests: while (!display.isDisposed() && display.readAndDispatch()) {} // Copy editor area: GC gc = new GC(composite); Point size; try { size = composite.getSize(); image = new Image(gc.getDevice(), size.x, size.y); gc.copyArea(image, 0, 0); } finally { gc.dispose(); gc = null; } // Persist editor area while executing refactoring: label = new Label(composite, SWT.NONE); label.setImage(image); label.setBounds(0, 0, size.x, size.y); label.moveAbove(null); } } String newName = fNamePosition.getContent(); if (fOriginalName.equals(newName)) { return; } RenameSupport renameSupport = undoAndCreateRenameSupport(newName); if (renameSupport == null) { return; } Shell shell = fEditor.getSite().getShell(); if (renameSupport.hasUnresolvedNameReferences()) { fShowPreview = true; } boolean executed; if (fShowPreview) { // could have been updated by undoAndCreateRenameSupport(..) executed = renameSupport.openDialog(shell, true); } else { renameSupport.perform(shell, fEditor.getSite().getWorkbenchWindow()); executed = true; } if (executed) { restoreFullSelection(); } } catch (CoreException ex) { DartToolsPlugin.log(ex); } catch (InterruptedException ex) { // canceling is OK -> redo text changes in that case? } catch (InvocationTargetException ex) { DartToolsPlugin.log(ex); } catch (BadLocationException e) { DartToolsPlugin.log(e); } finally { if (label != null) { label.dispose(); } if (image != null) { image.dispose(); } } }
/* * overview ruler problem: displayed in both viewers. the diff editor ruler is actually custom drawn (see * TextMergeViewer.fBirdsEyeCanvas) the ruler that gets created in this method is longer than the editor, meaning its * not an overview (not next to the scrollbar) */ @SuppressWarnings("unused") private void createOverviewRuler(IDocument newInput, Class<SourceViewer> sourceViewerClazz) throws SecurityException, NoSuchMethodException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { sourceViewer.setOverviewRulerAnnotationHover(new CommentAnnotationHover(null)); OverviewRuler ruler = new OverviewRuler( new DefaultMarkerAnnotationAccess(), 15, EditorsPlugin.getDefault().getSharedTextColors()); Field compositeField = sourceViewerClazz.getDeclaredField("fComposite"); compositeField.setAccessible(true); ruler.createControl((Composite) compositeField.get(sourceViewer), sourceViewer); ruler.setModel(annotationModel); // ruler.setModel(compareAnnotationModel.leftAnnotationModel); // XXX should go through SourceViewerDecorationSupport instead // ruler.addAnnotationType("org.eclipse.mylyn.reviews.ui.comment.Annotation"); // ruler.setAnnotationTypeLayer("org.eclipse.mylyn.reviews.ui.comment.Annotation", 1); // ruler.update(); IAnnotationAccess annotationAccess = new DefaultMarkerAnnotationAccess(); final SourceViewerDecorationSupport support = new SourceViewerDecorationSupport( sourceViewer, ruler, annotationAccess, EditorsUI.getSharedTextColors()); Iterator<?> e = new MarkerAnnotationPreferences().getAnnotationPreferences().iterator(); while (e.hasNext()) { support.setAnnotationPreference((AnnotationPreference) e.next()); } support.install(EditorsUI.getPreferenceStore()); sourceViewer .getControl() .addDisposeListener( new DisposeListener() { public void widgetDisposed(DisposeEvent e) { support.dispose(); } }); Field overViewRulerField = sourceViewerClazz.getDeclaredField("fOverviewRuler"); overViewRulerField.setAccessible(true); if (overViewRulerField.get(sourceViewer) == null) { overViewRulerField.set(sourceViewer, ruler); } Method declareMethod = sourceViewerClazz.getDeclaredMethod("ensureOverviewHoverManagerInstalled"); declareMethod.setAccessible(true); declareMethod.invoke(sourceViewer); // overviewRuler is null Field hoverManager = sourceViewerClazz.getDeclaredField("fOverviewRulerHoveringController"); hoverManager.setAccessible(true); AnnotationBarHoverManager manager = (AnnotationBarHoverManager) hoverManager.get(sourceViewer); if (manager != null) { Field annotationHover = AnnotationBarHoverManager.class.getDeclaredField("fAnnotationHover"); annotationHover.setAccessible(true); IAnnotationHover hover = (IAnnotationHover) annotationHover.get(manager); annotationHover.set(manager, new CommentAnnotationHover(null)); } sourceViewer.showAnnotations(true); sourceViewer.showAnnotationsOverview(true); declareMethod = sourceViewerClazz.getDeclaredMethod("showAnnotationsOverview", new Class[] {Boolean.TYPE}); declareMethod.setAccessible(true); }
private Control createSyntaxPage(final Composite parent) { final Composite colorComposite = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); layout.marginHeight = 0; layout.marginWidth = 0; colorComposite.setLayout(layout); final Link link = new Link(colorComposite, SWT.NONE); link.setText(PreferencesMessages.ErlEditorColoringConfigurationBlock_link); link.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent e) { PreferencesUtil.createPreferenceDialogOn(parent.getShell(), e.text, null, null); } }); final GridData gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false); gridData.widthHint = 150; gridData.horizontalSpan = 2; link.setLayoutData(gridData); addFiller(colorComposite, 1); Label label; label = new Label(colorComposite, SWT.LEFT); label.setText(PreferencesMessages.ErlEditorPreferencePage_coloring_element); label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); final Composite editorComposite = new Composite(colorComposite, SWT.NONE); layout = new GridLayout(); layout.numColumns = 2; layout.marginHeight = 0; layout.marginWidth = 0; editorComposite.setLayout(layout); GridData gd = new GridData(SWT.FILL, SWT.BEGINNING, true, false); editorComposite.setLayoutData(gd); fListViewer = new TreeViewer(editorComposite, SWT.SINGLE | SWT.BORDER); final Tree tree = fListViewer.getTree(); final GridData gd_tree = new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1); gd_tree.widthHint = 100; tree.setLayoutData(gd_tree); fListViewer.setLabelProvider(new ColorListLabelProvider()); fListViewer.setContentProvider(new ColorListContentProvider()); fListViewer.setInput(fColors); fListViewer.setSelection(new StructuredSelection(fErlangCategory)); fListViewer.setSorter( new ViewerSorter() { @Override public int category(final Object element) { // don't sort the top level categories if (fErlangCategory.equals(element)) { return 0; } // if (fEdocCategory.equals(element)) { // return 1; // } // to sort semantic settings after partition based ones: // if (element instanceof SemanticHighlightingColorListItem) // return 1; return 0; } }); gd = new GridData(SWT.BEGINNING, SWT.BEGINNING, false, true); gd.heightHint = convertHeightInCharsToPixels(9); int maxWidth = 0; for (final TokenHighlight item : fColors.keySet()) { maxWidth = Math.max(maxWidth, convertWidthInCharsToPixels(item.getName().length())); } final ScrollBar vBar = ((Scrollable) fListViewer.getControl()).getVerticalBar(); if (vBar != null) { maxWidth += vBar.getSize().x * 3; // scrollbars and tree } // indentation guess gd.widthHint = maxWidth; fListViewer.getControl().setLayoutData(gd); fListViewer.expandAll(); final Composite stylesComposite = new Composite(editorComposite, SWT.NONE); layout = new GridLayout(); layout.marginHeight = 0; layout.marginWidth = 0; layout.numColumns = 2; stylesComposite.setLayout(layout); stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); fEnableCheckbox = new Button(stylesComposite, SWT.CHECK); fEnableCheckbox.setText(PreferencesMessages.ErlEditorPreferencePage_enable); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalAlignment = GridData.BEGINNING; gd.horizontalSpan = 2; fEnableCheckbox.setLayoutData(gd); // TODO hide this until reworking the dialog fEnableCheckbox.setVisible(false); fColorEditorLabel = new Label(stylesComposite, SWT.LEFT); fColorEditorLabel.setText(PreferencesMessages.ErlEditorPreferencePage_color); gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); gd.horizontalIndent = 20; fColorEditorLabel.setLayoutData(gd); fSyntaxForegroundColorEditor = new ColorSelector(stylesComposite); final Button foregroundColorButton = fSyntaxForegroundColorEditor.getButton(); gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); foregroundColorButton.setLayoutData(gd); new Label(stylesComposite, SWT.NONE); fBoldCheckBox = new Button(stylesComposite, SWT.CHECK); fBoldCheckBox.setText(PreferencesMessages.ErlEditorPreferencePage_bold); gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); gd.horizontalIndent = 20; gd.horizontalSpan = 2; fBoldCheckBox.setLayoutData(gd); fItalicCheckBox = new Button(stylesComposite, SWT.CHECK); fItalicCheckBox.setText(PreferencesMessages.ErlEditorPreferencePage_italic); gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); gd.horizontalIndent = 20; gd.horizontalSpan = 2; fItalicCheckBox.setLayoutData(gd); fStrikethroughCheckBox = new Button(stylesComposite, SWT.CHECK); fStrikethroughCheckBox.setText(PreferencesMessages.ErlEditorPreferencePage_strikeout); gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); gd.horizontalIndent = 20; gd.horizontalSpan = 2; fStrikethroughCheckBox.setLayoutData(gd); fUnderlineCheckBox = new Button(stylesComposite, SWT.CHECK); fUnderlineCheckBox.setText(PreferencesMessages.ErlEditorPreferencePage_underline); gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); gd.horizontalIndent = 20; gd.horizontalSpan = 2; fUnderlineCheckBox.setLayoutData(gd); label = new Label(colorComposite, SWT.LEFT); label.setText( PreferencesMessages.ErlEditorPreferencePage_preview + "\n - Currently the preview doesn't work, but this dialog does." + "\n - Open files need to be reopened to refresh the coloring."); label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); final String content = loadPreviewContentFromFile(getClass(), "ColorSettingPreviewCode.txt"); // $NON-NLS-1$ fPreviewViewer = createErlangPreviewer(colorComposite, fColorManager, fColors, content); final Control previewer = fPreviewViewer.getControl(); gd = new GridData(GridData.FILL_BOTH); gd.widthHint = convertWidthInCharsToPixels(20); gd.heightHint = convertHeightInCharsToPixels(5); gd.grabExcessHorizontalSpace = true; previewer.setLayoutData(gd); fListViewer.addSelectionChangedListener( new ISelectionChangedListener() { @Override public void selectionChanged(final SelectionChangedEvent event) { handleSyntaxColorListSelection(); } }); foregroundColorButton.addSelectionListener( new SelectionListener() { @Override public void widgetDefaultSelected(final SelectionEvent e) { // do nothing } @Override public void widgetSelected(final SelectionEvent e) { final TokenHighlight item = getHighlight(); final HighlightStyle data = fColors.get(item); if (data == null) { return; } data.setColor(fSyntaxForegroundColorEditor.getColorValue()); fPreviewViewer.invalidateTextPresentation(); } }); fBoldCheckBox.addSelectionListener( new SelectionListener() { @Override public void widgetDefaultSelected(final SelectionEvent e) { // do nothing } @Override public void widgetSelected(final SelectionEvent e) { final TokenHighlight item = getHighlight(); final HighlightStyle data = fColors.get(item); if (data == null) { return; } data.setStyle(SWT.BOLD, fBoldCheckBox.getSelection()); fPreviewViewer.invalidateTextPresentation(); } }); fItalicCheckBox.addSelectionListener( new SelectionListener() { @Override public void widgetDefaultSelected(final SelectionEvent e) { // do nothing } @Override public void widgetSelected(final SelectionEvent e) { final TokenHighlight item = getHighlight(); final HighlightStyle data = fColors.get(item); if (data == null) { return; } data.setStyle(SWT.ITALIC, fItalicCheckBox.getSelection()); fPreviewViewer.invalidateTextPresentation(); } }); fStrikethroughCheckBox.addSelectionListener( new SelectionListener() { @Override public void widgetDefaultSelected(final SelectionEvent e) { // do nothing } @Override public void widgetSelected(final SelectionEvent e) { final TokenHighlight item = getHighlight(); final HighlightStyle data = fColors.get(item); if (data == null) { return; } data.setStyle(TextAttribute.STRIKETHROUGH, fStrikethroughCheckBox.getSelection()); fPreviewViewer.invalidateTextPresentation(); } }); fUnderlineCheckBox.addSelectionListener( new SelectionListener() { @Override public void widgetDefaultSelected(final SelectionEvent e) { // do nothing } @Override public void widgetSelected(final SelectionEvent e) { final TokenHighlight item = getHighlight(); final HighlightStyle data = fColors.get(item); if (data == null) { return; } data.setStyle(TextAttribute.UNDERLINE, fUnderlineCheckBox.getSelection()); fPreviewViewer.invalidateTextPresentation(); } }); fEnableCheckbox.addSelectionListener( new SelectionListener() { @Override public void widgetDefaultSelected(final SelectionEvent e) { // do nothing } @Override public void widgetSelected(final SelectionEvent e) { fEnableCheckbox.setSelection(true); // final TokenHighlight item = getHighlight(); // if (item instanceof SemanticHighlightingColorListItem) { // final boolean enable = fEnableCheckbox.getSelection(); // getPreferenceStore().setValue( // ((SemanticHighlightingColorListItem) item) // .getEnableKey(), enable); // fEnableCheckbox.setSelection(enable); // fSyntaxForegroundColorEditor.getButton().setEnabled(enable); // fColorEditorLabel.setEnabled(enable); // fBoldCheckBox.setEnabled(enable); // fItalicCheckBox.setEnabled(enable); // fStrikethroughCheckBox.setEnabled(enable); // fUnderlineCheckBox.setEnabled(enable); // } } }); colorComposite.layout(false); return colorComposite; }