/*
* Copyright 2016 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.red.jface.text.link;
import java.util.Collection;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.link.LinkedModeModel;
import org.eclipse.jface.text.link.LinkedModeUI;
import org.eclipse.jface.text.link.LinkedPosition;
import org.eclipse.jface.text.link.LinkedPositionGroup;
/**
* @author Michal Anglart
*
*/
public class RedEditorLinkedModeUI extends LinkedModeUI {
public static void enableLinkedMode(final ITextViewer viewer, final Collection<IRegion> regionsToLinkedEdit) {
try {
final LinkedModeModel model = new LinkedModeModel();
for (final IRegion region : regionsToLinkedEdit) {
final LinkedPositionGroup group = new LinkedPositionGroup();
group.addPosition(new LinkedPosition(viewer.getDocument(), region.getOffset(), region.getLength()));
model.addGroup(group);
}
model.forceInstall();
final LinkedModeUI linkedModeUi = new RedEditorLinkedModeUI(model, viewer);
linkedModeUi.enter();
} catch (final BadLocationException e) {
throw new IllegalStateException("Invalid location for linked mode regions", e);
}
}
public RedEditorLinkedModeUI(final LinkedModeModel model, final ITextViewer... viewers) {
super(model, viewers);
}
}