private static void initializeHighlightRange(IEditorPart editorPart) { if (editorPart instanceof ITextEditor) { IAction toggleAction = editorPart .getEditorSite() .getActionBars() .getGlobalActionHandler( ITextEditorActionDefinitionIds.TOGGLE_SHOW_SELECTED_ELEMENT_ONLY); boolean enable = toggleAction != null; if (enable && editorPart instanceof DartEditor) { enable = DartToolsPlugin.getDefault() .getPreferenceStore() .getBoolean(PreferenceConstants.EDITOR_SHOW_SEGMENTS); } else { enable = enable && toggleAction.isEnabled() && toggleAction.isChecked(); } if (enable) { if (toggleAction instanceof TextEditorAction) { // Reset the action ((TextEditorAction) toggleAction).setEditor(null); // Restore the action ((TextEditorAction) toggleAction).setEditor((ITextEditor) editorPart); } else { // Uncheck toggleAction.run(); // Check toggleAction.run(); } } } }
/** * Implementation of the <code>IUpdate</code> prototype method discovers the operation through the * current editor's <code>ITextOperationTarget</code> adapter, and sets the enabled state * accordingly. */ public void update() { super.update(); if (!canModifyEditor()) { setEnabled(false); return; } ITextEditor editor = getTextEditor(); if (fOperationTarget == null && editor != null) fOperationTarget = (ITextOperationTarget) editor.getAdapter(ITextOperationTarget.class); boolean isEnabled = (fOperationTarget != null && fOperationTarget.canDoOperation(ITextOperationTarget.PREFIX) && fOperationTarget.canDoOperation(ITextOperationTarget.STRIP_PREFIX)); setEnabled(isEnabled); }
/* (non-Javadoc) * @see org.eclipse.ui.texteditor.IUpdate#update() */ @Override public void update() { super.update(); if (!isReadOnlyOperation() && !canModifyEditor()) { setEnabled(false); return; } ITextEditor editor = getTextEditor(); if (fOperationTarget == null && editor != null && fOperationCode != -1) fOperationTarget = (ITextOperationTarget) editor.getAdapter(ITextOperationTarget.class); boolean isEnabled = (fOperationTarget != null && fOperationTarget.canDoOperation(fOperationCode)); setEnabled(isEnabled); }
@Override public void run() { super.run(); final ISelection sel = getSelection(); if (sel == null || sel.isEmpty() || !(sel instanceof ITextSelection)) { return; } if (!validateEditorInputState()) { return; } final ITextEditor textEditor = getTextEditor(); final IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput()); final ITextSelection selection = extendSelectionToWholeLines(document, (ITextSelection) sel); final ITextSelection getSelection = getTextSelection(document, selection); String text; OtpErlangObject r1 = null; try { text = document.get(getSelection.getOffset(), getSelection.getLength()); // call erlang, with selection within text r1 = callErlang(selection.getOffset() - getSelection.getOffset(), selection.getLength(), text); } catch (final Exception e) { e.printStackTrace(); } final String newText = Util.stringValue(r1); if (newText == null) { final Status status = new Status( IStatus.ERROR, ErlangCore.PLUGIN_ID, ErlangStatus.INTERNAL_ERROR.getValue(), "indent returned " + r1 + " instead of a string", null); ErlLogger.error("INTERNAL ERROR: indent returned " + r1 + " instead of a string"); ErrorDialog.openError( textEditor.getSite().getShell(), ActionMessages.IndentAction_error_message, String.valueOf(r1), status); return; } final int startLine = selection.getStartLine(); final int endLine = selection.getEndLine(); final int nLines = endLine - startLine + 1; final Runnable runnable = new Runnable() { @Override public void run() { final IRewriteTarget target = (IRewriteTarget) textEditor.getAdapter(IRewriteTarget.class); if (target != null) { target.beginCompoundChange(); if (nLines > 1) { target.setRedraw(false); } } try { // ErlLogger.debug("'"+newText+"'"); if (!document.get(selection.getOffset(), selection.getLength()).equals(newText)) { document.replace(selection.getOffset(), selection.getLength(), newText); } selectAndReveal(selection.getOffset(), newText.length()); } catch (final BadLocationException e) { ErlLogger.warn(e); } if (target != null) { target.endCompoundChange(); if (nLines > 1) { target.setRedraw(true); } } } }; if (nLines > 50) { final Display display = textEditor.getEditorSite().getWorkbenchWindow().getShell().getDisplay(); BusyIndicator.showWhile(display, runnable); } else { runnable.run(); } }
/* (non-Javadoc) * @see org.eclipse.ui.texteditor.TextEditorAction#setEditor(org.eclipse.ui.texteditor.ITextEditor) */ @Override public void setEditor(ITextEditor editor) { super.setEditor(editor); fOperationTarget = null; }