下面列出了org.eclipse.jface.text.IRewriteTarget#endCompoundChange ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void doPasteXbaseCode(XbaseClipboardData xbaseClipboardData, boolean withImports) {
IRewriteTarget target = Adapters.adapt(getTextEditor(), IRewriteTarget.class);
if (target != null) {
target.beginCompoundChange();
}
try {
textOperationTarget.doOperation(operationCode);
if (withImports) {
importsUtil.addImports(xbaseClipboardData.getImports(), xbaseClipboardData.getStaticImports(),
xbaseClipboardData.getExtensionImports(), getXtextDocument());
}
} catch (Exception e) {
XbaseActivator.getInstance().getLog().log(new Status(IStatus.ERROR,
XbaseActivator.getInstance().getBundle().getSymbolicName(), "Unexpected internal error: ", e));
} finally {
if (target != null) {
target.endCompoundChange();
}
}
}
private void doPasteJavaCode(String textFromClipboard, JavaImportData javaImportsContent, boolean withImports) {
IRewriteTarget target = Adapters.adapt(getTextEditor(), IRewriteTarget.class);
if (target != null) {
target.beginCompoundChange();
}
try {
textOperationTarget.doOperation(operationCode);
if (withImports) {
importsUtil.addImports(javaImportsContent.getImports(), javaImportsContent.getStaticImports(),
new String[] {}, getXtextDocument());
}
} catch (Exception e) {
XbaseActivator.getInstance().getLog().log(new Status(IStatus.ERROR,
XbaseActivator.getInstance().getBundle().getSymbolicName(), "Unexpected internal error: ", e));
} finally {
if (target != null) {
target.endCompoundChange();
}
}
}
@Override
public void doOperation(int operation) {
if (operation == ITextOperationTarget.PASTE && isAutoFormattingEnable()) {
final IRewriteTarget target = getRewriteTarget();
target.beginCompoundChange();
final IDocumentAutoFormatter formatter = getDocumentAutoFormatter();
formatter.beginAutoFormat();
try {
super.doOperation(operation);
} finally {
formatter.endAutoFormat();
target.endCompoundChange();
}
} else {
super.doOperation(operation);
}
}
@Override
protected boolean doExecuteResult(ITextEditor editor, Object minibufferResult) {
// use widget to avoid unpleasant scrolling side effects of IRewriteTarget
Control widget = getTextWidget(editor);
// wrap in compound change and no redraw
IRewriteTarget rt = (IRewriteTarget) editor.getAdapter(IRewriteTarget.class);
try {
if (rt != null) {
rt.beginCompoundChange();
}
widget.setRedraw(false);
int offset = rs.updateRectangle(editor, document, selection, (String)minibufferResult, isReplace(),false);
if (offset > 0) {
selectAndReveal(editor, offset, offset);
}
} finally {
if (rt != null) {
rt.endCompoundChange();
}
widget.setRedraw(true);
}
return true;
}
/**
* Ends the compound change.
*/
private void endCompoundEdit() {
ITextViewer viewer= getTextViewer();
if (!fEditInProgress || viewer == null || !(viewer instanceof ITextViewerExtension))
return;
IRewriteTarget target= ((ITextViewerExtension) viewer).getRewriteTarget();
if (target != null) {
target.endCompoundChange();
}
fEditInProgress= false;
}
/**
* Ends the compound change.
*/
public void endCompoundEdit() {
if (!fEditInProgress || fEditor == null)
return;
fExitStrategy.disarm();
IRewriteTarget target= (IRewriteTarget)fEditor.getAdapter(IRewriteTarget.class);
if (target != null) {
target.endCompoundChange();
}
fResult= null;
fEditInProgress= false;
}
private void doPasteWithImportsOperation() {
ITextEditor editor= getTextEditor();
IJavaElement inputElement= JavaUI.getEditorInputTypeRoot(editor.getEditorInput());
Clipboard clipboard= new Clipboard(getDisplay());
try {
ClipboardData importsData= (ClipboardData)clipboard.getContents(fgTransferInstance);
if (importsData != null && inputElement instanceof ICompilationUnit && !importsData.isFromSame(inputElement)) {
// combine operation and adding of imports
IRewriteTarget target= (IRewriteTarget)editor.getAdapter(IRewriteTarget.class);
if (target != null) {
target.beginCompoundChange();
}
try {
fOperationTarget.doOperation(fOperationCode);
addImports((ICompilationUnit)inputElement, importsData);
} catch (CoreException e) {
JavaPlugin.log(e);
} finally {
if (target != null) {
target.endCompoundChange();
}
}
} else {
fOperationTarget.doOperation(fOperationCode);
}
} finally {
clipboard.dispose();
}
}
private void endCompoundChange(ITextViewer viewer) {
if (viewer instanceof ITextViewerExtension) {
ITextViewerExtension extension= (ITextViewerExtension) viewer;
IRewriteTarget target= extension.getRewriteTarget();
target.endCompoundChange();
}
}
/**
* Get the undo Runnable wrappers
*
* @param editor
* @return begin and end undoProtect wrappers
*/
protected Runnable[] undoProtect(ITextEditor editor, final MacroCount keepCount) {
Runnable[] result = new Runnable[2];
// use widget to avoid unpleasant scrolling side effects of IRewriteTarget
final Control widget = getTextWidget(editor);;
final IRewriteTarget rt = (IRewriteTarget) editor.getAdapter(IRewriteTarget.class);;
result[0] = new Runnable() {
public void run() {
if (rt != null) {
rt.beginCompoundChange();
}
setRedraw(widget,false);
}
};
result[1] = new Runnable() {
public void run() {
setRedraw(widget, true);
if (rt != null) {
rt.endCompoundChange();
}
if (!isInterrupted() && keepCount != null) {
// we've finished one more loop of the main macro
keepCount.addCounter();
}
}
};
return result;
}
/**
* @see com.mulgasoft.emacsplus.minibuffer.IMinibufferExecutable#executeResult(org.eclipse.ui.texteditor.ITextEditor, java.lang.Object)
*/
public boolean doExecuteResult(ITextEditor editor, Object minibufferResult) {
if (minibufferResult != null && ((String)minibufferResult).length() > 0) {
String key = (String)minibufferResult;
ITextSelection selection = getImpliedSelection(editor, getCurrentSelection(editor));
IDocument document = getThisDocument(editor);
// if called with ^U, then delete text as well
boolean delete = isEditable() && getCallCount() > 1;
String[] rect;
// use widget to avoid unpleasant scrolling side effects of IRewriteTarget
Control widget = getTextWidget(editor);
IRewriteTarget rt = (IRewriteTarget) editor.getAdapter(IRewriteTarget.class);
try {
if (delete) {
// wrap in compound change and no redraw
widget.setRedraw(false);
if (rt != null) {
rt.beginCompoundChange();
}
}
rect = new RectangleSupport(document,editor).copyRectangle(editor, document, selection, delete);
if (rect != null && rect.length > 0) {
TecoRegister.getInstance().put(key,rect);
showResultMessage(editor, String.format(COPIED, key), false);
}
} catch (BadLocationException e) {
showResultMessage(editor, BAD_INSERT_LOCATION, true);
} finally {
if (rt != null) {
rt.endCompoundChange();
}
widget.setRedraw(true);
}
} else {
showResultMessage(editor, NO_REGISTER, true);
}
return true;
}