本文整理汇总了Java中org.eclipse.jface.text.link.LinkedPositionGroup.addPosition方法的典型用法代码示例。如果您正苦于以下问题:Java LinkedPositionGroup.addPosition方法的具体用法?Java LinkedPositionGroup.addPosition怎么用?Java LinkedPositionGroup.addPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.eclipse.jface.text.link.LinkedPositionGroup
的用法示例。
在下文中一共展示了LinkedPositionGroup.addPosition方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: setUpLinkedMode
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
/**
* 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);
}
}
示例2: setUpLinkedMode
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
/**
* 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
* @param closingCharacter the exit character
*/
protected void setUpLinkedMode(IDocument document, char closingCharacter) {
if (getTextViewer() != null && autocloseBrackets()) {
int offset= getReplacementOffset() + getCursorPosition();
int exit= getReplacementOffset() + getReplacementString().length();
try {
LinkedPositionGroup group= new LinkedPositionGroup();
group.addPosition(new LinkedPosition(document, offset, 0, LinkedPositionGroup.NO_STOP));
LinkedModeModel model= new LinkedModeModel();
model.addGroup(group);
model.forceInstall();
LinkedModeUI ui= new EditorLinkedModeUI(model, getTextViewer());
ui.setSimpleMode(true);
ui.setExitPolicy(new ExitPolicy(closingCharacter, document));
ui.setExitPosition(getTextViewer(), exit, 0, Integer.MAX_VALUE);
ui.setCyclingMode(LinkedModeUI.CYCLE_NEVER);
ui.enter();
} catch (BadLocationException x) {
JavaPlugin.log(x);
}
}
}
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:32,代码来源:AbstractJavaCompletionProposal.java
示例3: startLinkedEdit
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
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);
}
示例4: getLinkedModeModel
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
protected LinkedModeModel getLinkedModeModel(ITextViewer viewer) throws BadLocationException {
Indexable<SourceRange> sourceSubElements = proposal.getSourceSubElements();
if(sourceSubElements == null || sourceSubElements.isEmpty()) {
return null;
}
LinkedModeModel model = new LinkedModeModel();
IDocument document = viewer.getDocument();
int replaceOffset = getReplaceOffset();
firstLinkedModeGroupPosition = -1;
for (SourceRange sr : sourceSubElements) {
LinkedPositionGroup group = new LinkedPositionGroup();
int posOffset = replaceOffset + sr.getOffset();
group.addPosition(new LinkedPosition(document, posOffset, sr.getLength()));
if(firstLinkedModeGroupPosition == -1) {
firstLinkedModeGroupPosition = posOffset;
}
model.addGroup(group);
}
return model;
}
示例5: apply
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
public void apply(IDocument document) {
try {
if (fentry.arguments > 0) {
StringBuffer displayKey = new StringBuffer(fentry.key);
for (int j=0; j < fentry.arguments; j++)
displayKey.append("{}");
document.replace(fReplacementOffset, fReplacementLength, displayKey.toString());
if (TexlipsePlugin.getDefault().getPreferenceStore()
.getBoolean(TexlipseProperties.SMART_PARENS)){
LinkedModeModel model= new LinkedModeModel();
for (int j=0; j < fentry.arguments; j++){
int newOffset = fReplacementOffset + fentry.key.length() + j*2 + 1;
LinkedPositionGroup group = new LinkedPositionGroup();
group.addPosition(new LinkedPosition(document, newOffset, 0, LinkedPositionGroup.NO_STOP));
model.addGroup(group);
}
model.forceInstall();
LinkedModeUI ui = new EditorLinkedModeUI(model, fviewer);
ui.setSimpleMode(false);
ui.setExitPolicy(new ExitPolicy('}', fviewer));
ui.setExitPosition(fviewer, fReplacementOffset + displayKey.length(),
0, Integer.MAX_VALUE);
ui.setCyclingMode(LinkedModeUI.CYCLE_NEVER);
ui.enter();
}
} else {
document.replace(fReplacementOffset, fReplacementLength, fentry.key);
}
} catch (BadLocationException x) {
}
}
示例6: createLinkedGroupFromReplaceEdits
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
protected LinkedPositionGroup createLinkedGroupFromReplaceEdits(List<ReplaceEdit> edits, XtextEditor xtextEditor,
final String originalName, SubMonitor progress) {
if (edits == null)
return null;
final IXtextDocument document = xtextEditor.getDocument();
LinkedPositionGroup group = new LinkedPositionGroup();
Iterable<LinkedPosition> linkedPositions = filter(
Iterables.transform(edits, new Function<ReplaceEdit, LinkedPosition>() {
public LinkedPosition apply(ReplaceEdit edit) {
try {
String textToReplace = document.get(edit.getOffset(), edit.getLength());
int indexOf = textToReplace.indexOf(originalName);
if (indexOf != -1) {
int calculatedOffset = edit.getOffset() + indexOf;
return new LinkedPosition(document, calculatedOffset, originalName.length());
}
} catch (BadLocationException exc) {
LOG.error("Skipping invalid text edit " + notNull(edit), exc);
}
return null;
}
}), Predicates.notNull());
progress.worked(10);
final int invocationOffset = xtextEditor.getInternalSourceViewer().getSelectedRange().x;
int i = 0;
for (LinkedPosition position : sortPositions(linkedPositions, invocationOffset)) {
try {
position.setSequenceNumber(i);
i++;
group.addPosition(position);
} catch (BadLocationException e) {
LOG.error(e.getMessage(), e);
return null;
}
}
return group;
}
示例7: apply
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
@Override
public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) {
apply(viewer.getDocument());
try {
LinkedModeModel model = new LinkedModeModel();
StringBuffer insert = new StringBuffer();
insert.append(macro.name);
insert.append("(");
int parameterOffset = position.offset + insert.length();
for (int k = 0; k < macro.parameters.length; k++) {
LinkedPositionGroup group = new LinkedPositionGroup();
if (k > 0)
// space between parameters
parameterOffset++;
group.addPosition(new LinkedPosition(viewer.getDocument(), parameterOffset, macro.parameters[k].length(),
LinkedPositionGroup.NO_STOP));
model.addGroup(group);
parameterOffset += macro.parameters[k].length();
}
model.forceInstall();
LinkedModeUI ui = new EditorLinkedModeUI(model, viewer);
ui.setExitPosition(viewer, parameterOffset + 1, 0, Integer.MAX_VALUE);
ui.setCyclingMode(LinkedModeUI.CYCLE_ALWAYS);
ui.enter();
fSelectedRegion = ui.getSelectedRegion();
} catch (Exception e) {
e.printStackTrace();
}
}
示例8: apply
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
/**
* Special code added to allow tabstop positions so we can easily tab past the quotes for Events/Attributes.
*/
@Override
public void apply(ITextViewer viewer, char trigger, int stateMask, int offset)
{
super.apply(viewer, trigger, stateMask, offset);
// See if there are any positions that should be linked. Last is always exit, first is cursor position
if (_positions != null && _positions.length > 0)
{
IDocument document = viewer.getDocument();
boolean validPrefix = isValidPrefix(getPrefix(document, offset), getDisplayString());
int shift = (validPrefix) ? offset - this._replacementOffset : 0;
try
{
LinkedModeModel.closeAllModels(document); // Exit out of any existing linked mode
LinkedModeModel model = new LinkedModeModel();
int i = 0;
for (int pos : _positions)
{
LinkedPositionGroup group = new LinkedPositionGroup();
group.addPosition(new LinkedPosition(document, (offset - shift) + pos, 0, i++));
model.addGroup(group);
}
model.forceInstall();
LinkedModeUI ui = new LinkedModeUI(model, viewer);
ui.setCyclingMode(LinkedModeUI.CYCLE_ALWAYS);
ui.setExitPosition(viewer, (offset - shift) + _positions[_positions.length - 1], 0, Integer.MAX_VALUE);
ui.enter();
}
catch (BadLocationException e)
{
IdeLog.logError(XMLPlugin.getDefault(), e);
}
}
}
示例9: apply
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
/**
* Special code added to allow tabstop positions so we can easily tab past the quotes for Events/Attributes.
*/
@Override
public void apply(ITextViewer viewer, char trigger, int stateMask, int offset)
{
super.apply(viewer, trigger, stateMask, offset);
// See if there are any positions that should be linked. Last is always exit, first is cursor position
if (_positions != null && _positions.length > 0)
{
IDocument document = viewer.getDocument();
boolean validPrefix = isValidPrefix(getPrefix(document, offset), getDisplayString());
int shift = (validPrefix) ? offset - this._replacementOffset : 0;
try
{
LinkedModeModel.closeAllModels(document); // Exit out of any existing linked mode
LinkedModeModel model = new LinkedModeModel();
int i = 0;
for (int pos : _positions)
{
LinkedPositionGroup group = new LinkedPositionGroup();
group.addPosition(new LinkedPosition(document, (offset - shift) + pos, 0, i++));
model.addGroup(group);
}
model.forceInstall();
LinkedModeUI ui = new LinkedModeUI(model, viewer);
ui.setCyclingMode(LinkedModeUI.CYCLE_ALWAYS);
ui.setExitPosition(viewer, (offset - shift) + _positions[_positions.length - 1], 0, Integer.MAX_VALUE);
ui.enter();
}
catch (BadLocationException e)
{
IdeLog.logError(HTMLPlugin.getDefault(), e);
}
}
}
示例10: apply
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
@Override
public void apply(IDocument document, char trigger, int offset) {
super.apply(document, trigger, offset);
int baseOffset= getReplacementOffset();
String replacement= getReplacementString();
if (fArgumentOffsets != null && getTextViewer() != null) {
try {
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));
}
LinkedModeUI ui= new EditorLinkedModeUI(model, getTextViewer());
ui.setExitPosition(getTextViewer(), baseOffset + replacement.length(), 0, Integer.MAX_VALUE);
ui.setExitPolicy(new ExitPolicy(')', document));
ui.setDoContextInfo(true);
ui.setCyclingMode(LinkedModeUI.CYCLE_WHEN_NO_PARENT);
ui.enter();
fSelectedRegion= ui.getSelectedRegion();
} catch (BadLocationException e) {
JavaPlugin.log(e);
openErrorDialog(e);
}
} else {
fSelectedRegion= new Region(baseOffset + replacement.length(), 0);
}
}
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:39,代码来源:FilledArgumentNamesMethodProposal.java
示例11: goToLinkedMode
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
private void goToLinkedMode(ITextViewer viewer, int offset, IDocument doc, int exitPos, int iPar,
List<Integer> offsetsAndLens) throws BadLocationException {
if (!goToLinkedMode) {
return;
}
if (offsetsAndLens.size() > 0) {
LinkedModeModel model = new LinkedModeModel();
for (int i = 0; i < offsetsAndLens.size(); i++) {
Integer offs = offsetsAndLens.get(i);
i++;
Integer len = offsetsAndLens.get(i);
if (i == 1) {
firstParameterLen = len;
}
int location = offset + iPar + offs + 1;
LinkedPositionGroup group = new LinkedPositionGroup();
ProposalPosition proposalPosition = new ProposalPosition(doc, location, len, 0,
new ICompletionProposal[0]);
group.addPosition(proposalPosition);
model.addGroup(group);
}
model.forceInstall();
final LinkedModeUI ui = new EditorLinkedModeUI(model, viewer);
ui.setDoContextInfo(true); //set it to request the ctx info from the completion processor
ui.setExitPosition(viewer, exitPos, 0, Integer.MAX_VALUE);
Runnable r = new Runnable() {
@Override
public void run() {
ui.enter();
}
};
RunInUiThread.async(r);
}
}
示例12: start
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
public void start() {
if (getActiveLinkedMode() != null) {
// for safety; should already be handled in RenameJavaElementAction
fgActiveLinkedMode.startFullDialog();
return;
}
ISourceViewer viewer = fEditor.getViewer();
IDocument document = viewer.getDocument();
ITypeScriptFile tsFile = fEditor.getTypeScriptFile();
tsFile.setDisableChanged(true);
fOriginalSelection = viewer.getSelectedRange();
int offset = fOriginalSelection.x;
try {
fLinkedPositionGroup = new LinkedPositionGroup();
if (viewer instanceof ITextViewerExtension6) {
IUndoManager undoManager = ((ITextViewerExtension6) viewer).getUndoManager();
if (undoManager instanceof IUndoManagerExtension) {
IUndoManagerExtension undoManagerExtension = (IUndoManagerExtension) undoManager;
IUndoContext undoContext = undoManagerExtension.getUndoContext();
IOperationHistory operationHistory = OperationHistoryFactory.getOperationHistory();
fStartingUndoOperation = operationHistory.getUndoOperation(undoContext);
}
}
// Find occurrences
List<OccurrencesResponseItem> occurrences = tsFile.occurrences(offset).get(1000, TimeUnit.MILLISECONDS);
// Create Eclipse linked position from the occurrences list.
int start, length;
for (int i = 0; i < occurrences.size(); i++) {
OccurrencesResponseItem item = occurrences.get(i);
start = tsFile.getPosition(item.getStart());
length = tsFile.getPosition(item.getEnd()) - start;
LinkedPosition linkedPosition = new LinkedPosition(document, start, length, i);
if (i == 0) {
fOriginalName = document.get(start, length);
fNamePosition = linkedPosition;
}
fLinkedPositionGroup.addPosition(linkedPosition);
}
fLinkedModeModel = new LinkedModeModel();
fLinkedModeModel.addGroup(fLinkedPositionGroup);
fLinkedModeModel.forceInstall();
fLinkedModeModel.addLinkingListener(new EditorHighlightingSynchronizer(fEditor));
fLinkedModeModel.addLinkingListener(new EditorSynchronizer());
LinkedModeUI ui = new EditorLinkedModeUI(fLinkedModeModel, viewer);
ui.setExitPosition(viewer, offset, 0, Integer.MAX_VALUE);
ui.setExitPolicy(new ExitPolicy(document));
ui.enter();
viewer.setSelectedRange(fOriginalSelection.x, fOriginalSelection.y); // by
// default,
// full
// word
// is
// selected;
// restore
// original
// selection
if (viewer instanceof IEditingSupportRegistry) {
IEditingSupportRegistry registry = (IEditingSupportRegistry) viewer;
registry.register(fFocusEditingSupport);
}
openSecondaryPopup();
// startAnimation();
fgActiveLinkedMode = this;
} catch (Exception e) {
JSDTTypeScriptUIPlugin.log(e);
}
}
示例13: enterLinkedModeForPrefix
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
/**
* Enters the linked mode for editing the namespace prefix we generated.
*/
private void enterLinkedModeForPrefix(IDocument document,
ITextViewer viewer, IDOMElement rootElement, String prefix)
throws BadLocationException {
int linkedPosSequence = 0;
// The prefix is the first thing entered at the start position
LinkedPosition pos1 = new LinkedPosition(document, startPosition,
prefix.length(), linkedPosSequence++);
// The prefix is also at the cursor position + 2 (those two following
// characters are '<' and '/')
LinkedPosition pos2 = new LinkedPosition(document, cursorPosition + 2,
prefix.length(), linkedPosSequence++);
IDOMElement rootDomElement = (IDOMElement) rootElement;
// TODO: use UiBinderConstants.XMLNS_PREFIX, but that has been modified in
// a parallel CL. Will switch to using that constant in the latter of this
// and that other CL.
final String xmlnsPrefix = "xmlns:";
String fullPrefixName = xmlnsPrefix + prefix;
IDOMAttr domAttribute = (IDOMAttr) rootDomElement.getAttributeNode(fullPrefixName);
LinkedPosition pos3 = new LinkedPosition(document,
domAttribute.getStartOffset() + xmlnsPrefix.length(),
prefix.length(), linkedPosSequence++);
LinkedPositionGroup group = new LinkedPositionGroup();
group.addPosition(pos1);
group.addPosition(pos2);
group.addPosition(pos3);
// Boilerplate stuff below
LinkedModeModel model = new LinkedModeModel();
model.addGroup(group);
model.forceInstall();
LinkedModeUI ui = new LinkedModeUI(model, viewer);
ui.enter();
wasLinkedModeEntered = true;
}
示例14: apply
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) {
try {
Point seletion= viewer.getSelectedRange();
// get full ast
CompilationUnit root= SharedASTProvider.getAST(fContext.getCompilationUnit(), SharedASTProvider.WAIT_YES, null);
ASTNode nameNode= NodeFinder.perform(root, fNode.getStartPosition(), fNode.getLength());
final int pos= fNode.getStartPosition();
ASTNode[] sameNodes;
if (nameNode instanceof SimpleName) {
sameNodes= LinkedNodeFinder.findByNode(root, (SimpleName) nameNode);
} else {
sameNodes= new ASTNode[] { nameNode };
}
// sort for iteration order, starting with the node @ offset
Arrays.sort(sameNodes, new Comparator<ASTNode>() {
public int compare(ASTNode o1, ASTNode o2) {
return rank(o1) - rank(o2);
}
/**
* Returns the absolute rank of an <code>ASTNode</code>. Nodes
* preceding <code>offset</code> are ranked last.
*
* @param node the node to compute the rank for
* @return the rank of the node with respect to the invocation offset
*/
private int rank(ASTNode node) {
int relativeRank= node.getStartPosition() + node.getLength() - pos;
if (relativeRank < 0)
return Integer.MAX_VALUE + relativeRank;
else
return relativeRank;
}
});
IDocument document= viewer.getDocument();
LinkedPositionGroup group= new LinkedPositionGroup();
for (int i= 0; i < sameNodes.length; i++) {
ASTNode elem= sameNodes[i];
group.addPosition(new LinkedPosition(document, elem.getStartPosition(), elem.getLength(), i));
}
LinkedModeModel model= new LinkedModeModel();
model.addGroup(group);
model.forceInstall();
if (fContext instanceof AssistContext) {
IEditorPart editor= ((AssistContext)fContext).getEditor();
if (editor instanceof JavaEditor) {
model.addLinkingListener(new EditorHighlightingSynchronizer((JavaEditor) editor));
}
}
LinkedModeUI ui= new EditorLinkedModeUI(model, viewer);
ui.setExitPolicy(new DeleteBlockingExitPolicy(document));
ui.setExitPosition(viewer, offset, 0, LinkedPositionGroup.NO_STOP);
ui.enter();
if (fValueSuggestion != null) {
document.replace(nameNode.getStartPosition(), nameNode.getLength(), fValueSuggestion);
IRegion selectedRegion= ui.getSelectedRegion();
seletion= new Point(selectedRegion.getOffset(), fValueSuggestion.length());
}
viewer.setSelectedRange(seletion.x, seletion.y); // by default full word is selected, restore original selection
} catch (BadLocationException e) {
JavaPlugin.log(e);
}
}
示例15: apply
import org.eclipse.jface.text.link.LinkedPositionGroup; //导入方法依赖的package包/类
@Override
public void apply(IDocument document) {
try {
//default apply
int lineOfOffset = document.getLineOfOffset(fReplacementOffset);
document.replace(fReplacementOffset, fReplacementLength, fReplacementString);
if (SharedCorePlugin.inTestMode()) {
return;
}
int lineOffset = document.getLineOffset(lineOfOffset);
int lineLength = document.getLineLength(lineOfOffset);
String lineDelimiter = document.getLineDelimiter(lineOfOffset);
int lineDelimiterLen = lineDelimiter != null ? lineDelimiter.length() : 0;
ISourceViewer viewer = sourceViewer;
LinkedModeModel model = new LinkedModeModel();
LinkedPositionGroup group = new LinkedPositionGroup();
//the len-3 is because of the end of the string: " = " because the replacement string is
//something like "xxx = "
ProposalPosition proposalPosition = new ProposalPosition(document, fReplacementOffset,
fReplacementString.length() - 3, 0, new ICompletionProposal[0]);
group.addPosition(proposalPosition);
model.addGroup(group);
model.forceInstall();
final LinkedModeUI ui = new EditorLinkedModeUI(model, viewer);
ui.setExitPosition(viewer, lineOffset + lineLength - lineDelimiterLen, 0, Integer.MAX_VALUE);
Runnable r = new Runnable() {
@Override
public void run() {
ui.enter();
}
};
RunInUiThread.async(r);
} catch (Throwable x) {
// ignore
Log.log(x);
}
}