package jetbrains.mps.vcs.diff.ui.merge; /*Generated by MPS */ import jetbrains.mps.vcs.diff.ui.common.ButtonsPainter; import jetbrains.mps.nodeEditor.EditorComponent; import jetbrains.mps.vcs.diff.ui.common.ChangeGroupLayout; import jetbrains.mps.vcs.diff.ui.common.FoldingAreaButton; import jetbrains.mps.vcs.diff.ui.common.ChangeGroup; import jetbrains.mps.ide.icons.IdeIcons; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import jetbrains.mps.vcs.diff.merge.MergeSession; import jetbrains.mps.vcs.diff.changes.ModelChange; import java.util.Arrays; import jetbrains.mps.vcs.diff.ui.common.DiffEditor; import javax.swing.Icon; public class MergeButtonsPainter extends ButtonsPainter { private MergeRootsPane myPane; private MergeButtonsPainter(MergeRootsPane pane, EditorComponent editorComponent, ChangeGroupLayout changeGroupLayout) { super(2, editorComponent, changeGroupLayout); myPane = pane; } @Override protected Iterable<FoldingAreaButton> createButtonsForChangeGroup(ChangeGroup changeGroup, int y) { int applyX = (isHighlightLeft() ? getX(0) : getX(1)); int excludeX = (isHighlightLeft() ? getX(1) : getX(0)); FoldingAreaButton apply = new MergeButtonsPainter.MyButton(changeGroup, applyX, y, "Apply", (isHighlightLeft() ? MergeButtonsPainter.MIRRORED_APPLY_ICON : IdeIcons.APPLY), new _FunctionTypes._void_P2_E0<MergeSession, Iterable<ModelChange>>() { public void invoke(MergeSession session, Iterable<ModelChange> changes) { session.applyChanges(changes); } }); FoldingAreaButton exclude = new MergeButtonsPainter.MyButton(changeGroup, excludeX, y, "Exclude", IdeIcons.EXCLUDE, new _FunctionTypes._void_P2_E0<MergeSession, Iterable<ModelChange>>() { public void invoke(MergeSession session, Iterable<ModelChange> changes) { session.excludeChanges(changes); } }); return Arrays.asList(apply, exclude); } public static MergeButtonsPainter addTo(MergeRootsPane pane, DiffEditor diffEditor, ChangeGroupLayout changeGroupLayout, boolean inspector) { EditorComponent editorComponent = diffEditor.getEditorComponent(inspector); MergeButtonsPainter painter = new MergeButtonsPainter(pane, editorComponent, changeGroupLayout); editorComponent.getLeftEditorHighlighter().addFoldingAreaPainter(painter); return painter; } private class MyButton extends FoldingAreaButton { private _FunctionTypes._void_P2_E0<? super MergeSession, ? super Iterable<ModelChange>> myAction; private MyButton(ChangeGroup changeGroup, int x, int y, String name, Icon icon, _FunctionTypes._void_P2_E0<? super MergeSession, ? super Iterable<ModelChange>> action) { super(changeGroup, x, y, name, icon); myAction = action; } @Override public void performAction() { getEditorComponent().getEditorContext().getRepository().getModelAccess().executeCommand(new Runnable() { public void run() { myAction.invoke(myPane.getMergeSession(), getChangeGroup().getChanges()); myPane.rehighlight(); } }); } } }