예제 #1
0
 /** {@inheritDoc} */
 @Override
 public void apply(final Document document) {
   cursorOffset = document.getCursorOffset();
   for (final Change change : changes) {
     document.replace(change.getOffset(), change.getLength(), change.getText());
   }
   if (linkedEditor != null && linkedModeModel != null) {
     LinkedMode mode = linkedEditor.getLinkedMode();
     LinkedModel model = linkedEditor.createLinkedModel();
     if (linkedModeModel.getEscapePosition() != 0) {
       model.setEscapePosition(linkedModeModel.getEscapePosition());
     } else {
       model.setEscapePosition(cursorOffset);
     }
     List<LinkedModelGroup> groups = new ArrayList<>();
     for (LinkedPositionGroup positionGroup : linkedModeModel.getGroups()) {
       LinkedModelGroup group = linkedEditor.createLinkedGroup();
       LinkedData data = positionGroup.getData();
       if (data != null) {
         LinkedModelData modelData = linkedEditor.createLinkedModelData();
         modelData.setType("link");
         modelData.setValues(data.getValues());
         group.setData(modelData);
       }
       List<Position> positions = new ArrayList<>();
       for (Region region : positionGroup.getPositions()) {
         positions.add(new Position(region.getOffset(), region.getLength()));
       }
       group.setPositions(positions);
       groups.add(group);
     }
     model.setGroups(groups);
     mode.enterLinkedMode(model);
   }
 }