while (true) { if (fEnvironments.isEmpty()) { model.addLinkingListener(fListener); fEnvironments.push(model); return true; if (model.canNestInto(top)) { model.addLinkingListener(fListener); fEnvironments.push(model); return true; } else { // force fEnvironments.pop(); top.exit(ILinkedModeListener.NONE);
index++; LinkedModeModel model= LinkedModeModel.getModel(document, offset); if (model != null) { LinkedPosition linkedPosition= model.findPosition(new LinkedPosition(document, offset, 0)); if (linkedPosition != null) { int linkedPositionOffset= linkedPosition.getOffset();
@Override public void apply(IDocument document, char trigger, int offset) { super.apply(document, trigger, offset); LinkedModeModel.closeAllModels(document); }
if (fIsSealed) throw new IllegalStateException("model is already installed"); //$NON-NLS-1$ enforceNotEmpty(); IDocument[] documents= getDocuments(); LinkedModeManager manager= LinkedModeManager.getLinkedManager(documents, force); fParentEnvironment.suspend(); } catch (BadLocationException e){ exit(ILinkedModeListener.NONE); throw e;
/** * This does the actual constructor work. * * @param model the linked mode model * @param targets the non-empty array of targets upon which the linked mode UI * should act */ private void constructor(LinkedModeModel model, LinkedModeUITarget[] targets) { Assert.isNotNull(model); Assert.isNotNull(targets); Assert.isTrue(targets.length > 0); Assert.isTrue(model.getTabStopSequence().size() > 0); fModel= model; fTargets= targets; fCurrentTarget= targets[0]; fIterator= new TabStopIterator(fModel.getTabStopSequence()); fIterator.setCycling(!fModel.isNested()); fModel.addLinkingListener(fLinkedListener); fAssistant= new ContentAssistant2(); fAssistant.addProposalListener(fProposalListener); // TODO find a way to set up content assistant. // fAssistant.setDocumentPartitioning(IJavaPartitions.JAVA_PARTITIONING); fCaretPosition.delete(); }
LinkedModeModel model = new LinkedModeModel(); model.addGroup(group); model.forceInstall(); model.addLinkingListener(new EditorSynchronizer(fEditor)); LinkedModeUI ui = new EditorLinkedModeUI(model, viewer); ui.setExitPosition(viewer, offset, 0, Integer.MAX_VALUE);
private void startLinkedEdit(List<IRegion> selections, ITextViewer viewer, Point originalSelection) throws BadLocationException { final LinkedPositionGroup linkedPositionGroup = new LinkedPositionGroup(); for (IRegion selection : selections) { linkedPositionGroup.addPosition(new LinkedPosition(viewer.getDocument(), selection.getOffset(), selection .getLength())); } LinkedModeModel model = new LinkedModeModel(); model.addGroup(linkedPositionGroup); model.forceInstall(); //FIXME can add a listener here to listen for the end of linked mode //model.addLinkingListener(null); LinkedModeUI ui = new EditorLinkedModeUI(model, viewer); ui.setExitPolicy(new DeleteBlockingExitPolicy(viewer.getDocument())); ui.enter(); // by default the text being edited is selected so restore original selection viewer.setSelectedRange(originalSelection.x, originalSelection.y); }
public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) { IDocument doc= viewer.getDocument(); LinkedPosition position= fLinkedPositionModel.findPosition(new LinkedPosition(doc, offset, 0)); if (position != null) { try { try { TextEdit edit= fProposal.computeEdits(offset, position, trigger, stateMask, fLinkedPositionModel); if (edit != null) { edit.apply(position.getDocument(), 0); } } catch (MalformedTreeException e) { throw new CoreException(new Status(IStatus.ERROR, JavaUI.ID_PLUGIN, IStatus.ERROR, "Unexpected exception applying edit", e)); //$NON-NLS-1$ } catch (BadLocationException e) { throw new CoreException(new Status(IStatus.ERROR, JavaUI.ID_PLUGIN, IStatus.ERROR, "Unexpected exception applying edit", e)); //$NON-NLS-1$ } } catch (CoreException e) { JavaPlugin.log(e); } } }
private void ensurePositionCategoryInstalled(final IDocument document, LinkedModeModel model) { if (!document.containsPositionCategory(getCategory())) { document.addPositionCategory(getCategory()); fUpdater= new InclusivePositionUpdater(getCategory()); document.addPositionUpdater(fUpdater); model.addLinkingListener(new ILinkedModeListener() { @Override public void left(LinkedModeModel environment, int flags) { ensurePositionCategoryRemoved(document); } @Override public void suspend(LinkedModeModel environment) {} @Override public void resume(LinkedModeModel environment, int flags) {} }); } }
public void cancel() { if (fLinkedModeModel != null) { fLinkedModeModel.exit(ILinkedModeListener.NONE); } linkedModeLeft(); }
private boolean isCanceled(IProgressMonitor progressMonitor) { return fCanceled || progressMonitor.isCanceled() || fPostSelectionValidator != null && !(fPostSelectionValidator.isValid(fSelection) || fForcedMarkOccurrencesSelection == fSelection) || LinkedModeModel.hasInstalledModel(fDocument); }
@Override public void customizeDocumentCommand(IDocument document, DocumentCommand command) { // invalidate the change to ensure that the change is performed on the document only. if (fModel.anyPositionContains(command.offset)) { command.doit= false; command.caretOffset= command.offset + command.length; } } };
fModel.stopForwarding(flags); fModel.exit(flags); };
if (LinkedModeModel.getModel(document, 0) != null && currentState != null && selOffsetAndLen.equals(currentState.startingSelection)
LinkedModeModel model= new LinkedModeModel(); for (int i= 0; i != fArgumentOffsets.length; i++) { LinkedPositionGroup group= new LinkedPositionGroup(); group.addPosition(new LinkedPosition(document, baseOffset + fArgumentOffsets[i], fArgumentLengths[i], LinkedPositionGroup.NO_STOP)); model.addGroup(group); model.forceInstall(); JavaEditor editor= getJavaEditor(); if (editor != null) { model.addLinkingListener(new EditorHighlightingSynchronizer(editor));
/** * Sets up a simple linked mode at {@link #getCursorPosition()} and an exit policy that will * exit the mode when <code>closingCharacter</code> is typed and an exit position at * <code>getCursorPosition() + 1</code>. * * @param document the document */ protected void setUpLinkedMode(IDocument document) { try { LinkedPositionGroup group= new LinkedPositionGroup(); group.addPosition(new LinkedPosition(document, getSelectionStart(), getSelectionLength(), LinkedPositionGroup.NO_STOP)); LinkedModeModel model= new LinkedModeModel(); model.addGroup(group); model.forceInstall(); LinkedModeUI ui= new LinkedModeUI(model, viewer); // ui.setSimpleMode(true); ui.setExitPolicy(new ExitPolicy(exitChars)); ui.setExitPosition(viewer, getCursorPosition() + getReplacementOffset(), 0, Integer.MAX_VALUE); ui.setCyclingMode(LinkedModeUI.CYCLE_NEVER); ui.enter(); } catch (BadLocationException e) { log.info(e.getMessage(), e); } }
@Override public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) { IDocument doc= viewer.getDocument(); LinkedPosition position= fLinkedPositionModel.findPosition(new LinkedPosition(doc, offset, 0)); if (position != null) { try { try { TextEdit edit= fProposal.computeEdits(offset, position, trigger, stateMask, fLinkedPositionModel); if (edit != null) { edit.apply(position.getDocument(), 0); } } catch (MalformedTreeException e) { throw new CoreException(new Status(IStatus.ERROR, JavaUI.ID_PLUGIN, IStatus.ERROR, "Unexpected exception applying edit", e)); //$NON-NLS-1$ } catch (BadLocationException e) { throw new CoreException(new Status(IStatus.ERROR, JavaUI.ID_PLUGIN, IStatus.ERROR, "Unexpected exception applying edit", e)); //$NON-NLS-1$ } } catch (CoreException e) { JavaPlugin.log(e); } } }
private void ensurePositionCategoryInstalled(final IDocument document, LinkedModeModel model) { if (!document.containsPositionCategory(getCategory())) { document.addPositionCategory(getCategory()); fUpdater= new InclusivePositionUpdater(getCategory()); document.addPositionUpdater(fUpdater); model.addLinkingListener(new ILinkedModeListener() { @Override public void left(LinkedModeModel environment, int flags) { ensurePositionCategoryRemoved(document); } @Override public void suspend(LinkedModeModel environment) {} @Override public void resume(LinkedModeModel environment, int flags) {} }); } }
public void cancel() { if (fLinkedModeModel != null) { fLinkedModeModel.exit(ILinkedModeListener.NONE); } linkedModeLeft(); }
/** * This does the actual constructor work. * * @param model the linked mode model * @param targets the non-empty array of targets upon which the linked mode UI * should act */ private void constructor(LinkedModeModel model, LinkedModeUITarget[] targets) { Assert.isNotNull(model); Assert.isNotNull(targets); Assert.isTrue(targets.length > 0); Assert.isTrue(model.getTabStopSequence().size() > 0); fModel= model; fTargets= targets; fCurrentTarget= targets[0]; fIterator= new TabStopIterator(fModel.getTabStopSequence()); fIterator.setCycling(!fModel.isNested()); fModel.addLinkingListener(fLinkedListener); fAssistant= new ContentAssistant2(); fAssistant.addProposalListener(fProposalListener); // TODO find a way to set up content assistant. // fAssistant.setDocumentPartitioning(IJavaPartitions.JAVA_PARTITIONING); fCaretPosition.delete(); }