protected void createActions() { super.createActions(); //... add other editor actions here }
@Override public void run() { enableSanityChecking(true); if (!canHandleMove((IEditorInput) originalElement, (IEditorInput) movedElement)) { close(true); return; rememberSelection(); final IDocumentProvider d= getDocumentProvider(); final String previousContent; IDocumentUndoManager previousUndoManager=null; IDocument changed= null; boolean wasDirty= isDirty(); changed= d.getDocument(getEditorInput()); if (changed != null) { if (wasDirty) setInput((IEditorInput) movedElement); IDocument newDocument= getDocumentProvider().getDocument(movedElement); if (newDocument != null) { IDocumentUndoManager newUndoManager= DocumentUndoManagerRegistry.getDocumentUndoManager(newDocument); validateState(getEditorInput()); d.getDocument(getEditorInput()).set(previousContent); updateStatusField(ITextEditorActionConstants.STATUS_CATEGORY_ELEMENT_STATE); restoreSelection(); };
public void partOpened(IWorkbenchPart part) { // Restore the saved state if any if (part == AbstractTextEditor.this && fMementoToRestore != null && containsSavedState(fMementoToRestore)) doRestoreState(fMementoToRestore); fMementoToRestore= null; }
@Override public void run() { enableSanityChecking(true); close(false); } };
@Override public void elementDeleted(Object deletedElement) { if (deletedElement != null && deletedElement.equals(getEditorInput())) { Runnable r = () -> { enableSanityChecking(true); close(false); }; execute(r, false); } }
fVerticalRuler= createVerticalRuler(); fSourceViewer= createSourceViewer(parent, fVerticalRuler, styles); getSelectionProvider().addSelectionChangedListener(getSelectionChangedListener()); initializeViewerFont(fSourceViewer); initializeViewerColors(fSourceViewer); initializeFindScopeColor(fSourceViewer); initializeDragAndDrop(fSourceViewer); styledText.addMouseListener(getCursorListener()); styledText.addKeyListener(getCursorListener()); if (getHelpContextId() != null) PlatformUI.getWorkbench().getHelpSystem().setHelp(styledText, getHelpContextId()); manager.addMenuListener(getContextMenuListener()); fTextContextMenu= manager.createContextMenu(styledText); getEditorSite().registerContextMenu(fEditorContextMenuId, manager, getSelectionProvider(), isEditorInputIncludedInContextMenu()); else if (fCompatibilityMode) getEditorSite().registerContextMenu(DEFAULT_EDITOR_CONTEXT_MENU_ID, manager, getSelectionProvider(), isEditorInputIncludedInContextMenu()); String partId= getEditorSite().getId(); if (partId != null) getEditorSite().registerContextMenu(partId + ".EditorContext", manager, getSelectionProvider(), isEditorInputIncludedInContextMenu()); //$NON-NLS-1$ getEditorSite().registerContextMenu(COMMON_EDITOR_CONTEXT_MENU_ID, manager, getSelectionProvider(), false);
ISaveablesLifecycleListener listener= getSite().getService(ISaveablesLifecycleListener.class); if (listener == null) fSavable= null; close(isSaveOnCloseNeeded()); listener.handleLifecycleEvent(new SaveablesLifecycleEvent(this, SaveablesLifecycleEvent.POST_CLOSE, getSaveables(), false)); fSavable.disconnectEditor(); fSavable= null; boolean mustSendLifeCycleEvent= false; if (fSavable != null) { listener.handleLifecycleEvent(new SaveablesLifecycleEvent(this, SaveablesLifecycleEvent.POST_CLOSE, getSaveables(), false)); fSavable.disconnectEditor(); fSavable= null; IEditorInput oldInput= getEditorInput(); if (oldInput != null) getDocumentProvider().disconnect(oldInput); updateDocumentProvider(input); IDocumentProvider provider= getDocumentProvider(); if (provider == null) { IStatus s= new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, IStatus.OK, EditorMessages.Editor_error_no_provider, null); initializeTitle(input); initializeSourceViewer(input);
if (getFontPropertyPreferenceKey().equals(property)) initializeViewerColors(fSourceViewer); } else if (PREFERENCE_COLOR_FIND_SCOPE.equals(property)) { initializeFindScopeColor(fSourceViewer); } else if (PREFERENCE_USE_CUSTOM_CARETS.equals(property)) { updateCaret(); } else if (PREFERENCE_WIDE_CARET.equals(property)) { updateCaret(); if (affectsTextPresentation(event)) fSourceViewer.invalidateTextPresentation(); IHyperlinkDetector[] detectors= getSourceViewerConfiguration().getHyperlinkDetectors(fSourceViewer); int stateMask= getSourceViewerConfiguration().getHyperlinkStateMask(fSourceViewer); ITextViewerExtension6 textViewer6= (ITextViewerExtension6)fSourceViewer; textViewer6.setHyperlinkDetectors(detectors, stateMask); if (fSourceViewer instanceof ITextViewerExtension6) { ITextViewerExtension6 textViewer6= (ITextViewerExtension6)fSourceViewer; IHyperlinkDetector[] detectors= getSourceViewerConfiguration().getHyperlinkDetectors(fSourceViewer); int stateMask= getSourceViewerConfiguration().getHyperlinkStateMask(fSourceViewer); textViewer6.setHyperlinkDetectors(detectors, stateMask); IColumnSupport support= (IColumnSupport) getAdapter(IColumnSupport.class); for (int i= 0; i < difference.length; i++) { RulerColumnDescriptor desc= RulerColumnRegistry.getDefault().getColumnDescriptor(difference[i]); IAction action= getAction(ITextEditorActionConstants.SHOW_WHITESPACE_CHARACTERS);
Shell shell= getSite().getShell(); final IDocumentProvider provider= getDocumentProvider(); if (provider == null) { close(false); return; final IEditorInput input= getEditorInput(); if (provider.isDeleted(input)) { if (isSaveAsAllowed()) { IProgressMonitor pm= getProgressMonitor(); performSaveAs(pm); if (pm.isCanceled()) handleEditorInputChanged(); } else { close(false); msg= EditorMessages.Editor_error_activated_deleted_close_message; if (MessageDialog.openConfirm(shell, title, msg)) close(false); extension.synchronize(input); } else { doSetInput(input);
private void updateCaret() { if (fSourceViewer == null) return; StyledText styledText= fSourceViewer.getTextWidget(); InsertMode mode= getInsertMode(); styledText.setCaret(null); disposeNonDefaultCaret(); if (getPreferenceStore() == null || !getPreferenceStore().getBoolean(PREFERENCE_USE_CUSTOM_CARETS)) Assert.isTrue(fNonDefaultCaret == null); else if (fIsOverwriting) fNonDefaultCaret= createOverwriteCaret(styledText); else if (SMART_INSERT == mode) fNonDefaultCaret= createInsertCaret(styledText); else if (INSERT == mode) fNonDefaultCaret= createRawInsertModeCaret(styledText); if (fNonDefaultCaret != null) { styledText.setCaret(fNonDefaultCaret); fNonDefaultCaretImage= fNonDefaultCaret.getImage(); } else if (fInitialCaret != styledText.getCaret()) styledText.setCaret(fInitialCaret); }
private Caret createRawInsertModeCaret(StyledText styledText) { // don't draw special raw caret if no smart mode is enabled if (!getLegalInsertModes().contains(SMART_INSERT)) return createInsertCaret(styledText); Caret caret= new Caret(styledText, SWT.NULL); Image image= createRawInsertModeCaretImage(styledText); if (image != null) caret.setImage(image); else { // XXX: Filed request to get a caret with auto-height: https://bugs.eclipse.org/bugs/show_bug.cgi?id=118612 caret.setSize(getCaretWidthPreference(), styledText.getLineHeight()); } caret.setFont(styledText.getFont()); return caret; }
/** * Selects and reveals the specified ranges in this text editor. * * @param selectionStart the offset of the selection * @param selectionLength the length of the selection * @param revealStart the offset of the revealed range * @param revealLength the length of the revealed range * @since 3.0 */ protected void selectAndReveal(int selectionStart, int selectionLength, int revealStart, int revealLength) { if (fSourceViewer == null) return; ISelection selection= getSelectionProvider().getSelection(); if (selection instanceof ITextSelection) { ITextSelection textSelection= (ITextSelection) selection; if (textSelection.getOffset() != 0 || textSelection.getLength() != 0) markInNavigationHistory(); } StyledText widget= fSourceViewer.getTextWidget(); widget.setRedraw(false); { adjustHighlightRange(revealStart, revealLength); fSourceViewer.revealRange(revealStart, revealLength); fSourceViewer.setSelectedRange(selectionStart, selectionLength); markInNavigationHistory(); } widget.setRedraw(true); }
IStatusLineManager statusLineManager= getStatusLineManager(); ISelectionProvider selectionProvider= getSelectionProvider(); if (statusLineManager != null && selectionProvider != null) fEditorStatusLine= new EditorStatusLine(statusLineManager, selectionProvider); IStatusLineManager manager= getStatusLineManager(); if (manager != null) fMarkRegionTarget= (fSourceViewer == null ? null : new MarkRegionTarget(fSourceViewer, manager)); IStatusLineManager manager= getStatusLineManager(); if (manager != null) fIncrementalFindTarget= (fSourceViewer == null ? null : new IncrementalFindTarget(fSourceViewer, manager)); fColumnSupport= createColumnSupport(); return (T) fColumnSupport;
/** * Initializes the background color used for highlighting the document ranges * defining search scopes. * * @param viewer the viewer to initialize * @since 2.0 */ private void initializeFindScopeColor(ISourceViewer viewer) { IPreferenceStore store= getPreferenceStore(); if (store != null) { StyledText styledText= viewer.getTextWidget(); Color color= createColor(store, PREFERENCE_COLOR_FIND_SCOPE, styledText.getDisplay()); IFindReplaceTarget target= viewer.getFindReplaceTarget(); if (target != null && target instanceof IFindReplaceTargetExtension) ((IFindReplaceTargetExtension) target).setScopeHighlightColor(color); if (fFindScopeHighlightColor != null) fFindScopeHighlightColor.dispose(); fFindScopeHighlightColor= color; } }
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); if (isEditable()) { addAction(menu, ITextEditorActionConstants.GROUP_UNDO, ITextEditorActionConstants.UNDO); addAction(menu, ITextEditorActionConstants.GROUP_UNDO, ITextEditorActionConstants.REVERT_TO_SAVED); addAction(menu, ITextEditorActionConstants.GROUP_SAVE, ITextEditorActionConstants.SAVE); addAction(menu, ITextEditorActionConstants.GROUP_COPY, ITextEditorActionConstants.CUT); addAction(menu, ITextEditorActionConstants.GROUP_COPY, ITextEditorActionConstants.COPY); addAction(menu, ITextEditorActionConstants.GROUP_COPY, ITextEditorActionConstants.PASTE); IAction action= getAction(ITextEditorActionConstants.QUICK_ASSIST); if (action != null && action.isEnabled()) addAction(menu, ITextEditorActionConstants.GROUP_EDIT, ITextEditorActionConstants.QUICK_ASSIST); } else { addAction(menu, ITextEditorActionConstants.GROUP_COPY, ITextEditorActionConstants.COPY);
private Caret createRawInsertModeCaret(StyledText styledText) { // don't draw special raw caret if no smart mode is enabled if (!getLegalInsertModes().contains(SMART_INSERT)) return createInsertCaret(styledText); Caret caret= new Caret(styledText, SWT.NULL); Image image= createRawInsertModeCaretImage(styledText); caret.setImage(image); caret.setFont(styledText.getFont()); return caret; }
/** * Sets up this editor's context menu before it is made visible. * <p> * Subclasses may extend to add other actions.</p> * * @param menu the menu */ protected void editorContextMenuAboutToShow(IMenuManager menu) { menu.add(new Separator(ITextEditorActionConstants.GROUP_UNDO)); menu.add(new GroupMarker(ITextEditorActionConstants.GROUP_SAVE)); menu.add(new Separator(ITextEditorActionConstants.GROUP_COPY)); menu.add(new Separator(ITextEditorActionConstants.GROUP_PRINT)); menu.add(new Separator(ITextEditorActionConstants.GROUP_EDIT)); menu.add(new Separator(ITextEditorActionConstants.GROUP_FIND)); menu.add(new Separator(IWorkbenchActionConstants.GROUP_ADD)); menu.add(new Separator(ITextEditorActionConstants.GROUP_REST)); menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); if (isEditable()) { addAction(menu, ITextEditorActionConstants.GROUP_UNDO, ITextEditorActionConstants.UNDO); addAction(menu, ITextEditorActionConstants.GROUP_UNDO, ITextEditorActionConstants.REVERT_TO_SAVED); addAction(menu, ITextEditorActionConstants.GROUP_SAVE, ITextEditorActionConstants.SAVE); addAction(menu, ITextEditorActionConstants.GROUP_COPY, ITextEditorActionConstants.CUT); addAction(menu, ITextEditorActionConstants.GROUP_COPY, ITextEditorActionConstants.COPY); addAction(menu, ITextEditorActionConstants.GROUP_COPY, ITextEditorActionConstants.PASTE); } else { addAction(menu, ITextEditorActionConstants.GROUP_COPY, ITextEditorActionConstants.COPY); } }
/** * Sets up the ruler context menu before it is made visible. * <p> * Subclasses may extend to add other actions.</p> * * @param menu the menu */ protected void rulerContextMenuAboutToShow(IMenuManager menu) { menu.add(new Separator(ITextEditorActionConstants.GROUP_REST)); menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); for (Iterator<IMenuListener> i= fRulerContextMenuListeners.iterator(); i.hasNext();) i.next().menuAboutToShow(menu); addAction(menu, ITextEditorActionConstants.RULER_MANAGE_BOOKMARKS); addAction(menu, ITextEditorActionConstants.RULER_MANAGE_TASKS); }
fVerticalRuler= createVerticalRuler(); fSourceViewer= createSourceViewer(parent, fVerticalRuler, styles); getSelectionProvider().addSelectionChangedListener(getSelectionChangedListener()); initializeViewerFont(fSourceViewer); initializeViewerColors(fSourceViewer); initializeFindScopeColor(fSourceViewer); initializeDragAndDrop(fSourceViewer); styledText.addMouseListener(getCursorListener()); styledText.addKeyListener(getCursorListener()); if (getHelpContextId() != null) PlatformUI.getWorkbench().getHelpSystem().setHelp(styledText, getHelpContextId()); manager.addMenuListener(getContextMenuListener()); fTextContextMenu= manager.createContextMenu(styledText); getEditorSite().registerContextMenu(fEditorContextMenuId, manager, getSelectionProvider(), isEditorInputIncludedInContextMenu()); else if (fCompatibilityMode) getEditorSite().registerContextMenu(DEFAULT_EDITOR_CONTEXT_MENU_ID, manager, getSelectionProvider(), isEditorInputIncludedInContextMenu()); String partId= getEditorSite().getId(); if (partId != null) getEditorSite().registerContextMenu(partId + ".EditorContext", manager, getSelectionProvider(), isEditorInputIncludedInContextMenu()); //$NON-NLS-1$ getEditorSite().registerContextMenu(COMMON_EDITOR_CONTEXT_MENU_ID, manager, getSelectionProvider(), false);
ISaveablesLifecycleListener listener= (ISaveablesLifecycleListener)getSite().getService(ISaveablesLifecycleListener.class); if (listener == null) fSavable= null; close(isSaveOnCloseNeeded()); listener.handleLifecycleEvent(new SaveablesLifecycleEvent(this, SaveablesLifecycleEvent.POST_CLOSE, getSaveables(), false)); fSavable.disconnectEditor(); fSavable= null; boolean mustSendLifeCycleEvent= false; if (fSavable != null) { listener.handleLifecycleEvent(new SaveablesLifecycleEvent(this, SaveablesLifecycleEvent.POST_CLOSE, getSaveables(), false)); fSavable.disconnectEditor(); fSavable= null; IEditorInput oldInput= getEditorInput(); if (oldInput != null) getDocumentProvider().disconnect(oldInput); updateDocumentProvider(input); IDocumentProvider provider= getDocumentProvider(); if (provider == null) { IStatus s= new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, IStatus.OK, EditorMessages.Editor_error_no_provider, null); initializeTitle(input); initializeSourceViewer(input);