model.addLinkingListener(new EditorHighlightingSynchronizer(
(PHPStructuredEditor) editor));
}
if (added) { // only set up UI if there are any positions set
LinkedModeUI ui = new EditorLinkedModeUI(model, viewer);
LinkedProposalPositionGroup.PositionInformation endPosition = linkedProposalModel
.getEndPosition();
if (endPosition != null && endPosition.getOffset() != -1) {
ui.setExitPosition(viewer, endPosition.getOffset()
+ endPosition.getLength(), 0, Integer.MAX_VALUE);
} else {
int cursorPosition = viewer.getSelectedRange().x;
if (cursorPosition != 0) {
ui.setExitPosition(viewer, cursorPosition, 0,
Integer.MAX_VALUE);
}
}
ui.setExitPolicy(new LinkedModeExitPolicy());
ui.enter();
IRegion region = ui.getSelectedRegion();
viewer.setSelectedRange(region.getOffset(), region.getLength());
viewer.revealRange(region.getOffset(), region.getLength());
}
}