package org.asciidoc.intellij.actions.editorlayout;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.Toggleable;
import com.intellij.openapi.project.DumbAware;
import org.asciidoc.intellij.actions.AsciiDocActionUtil;
import org.asciidoc.intellij.ui.SplitFileEditor;
import org.jetbrains.annotations.Nullable;
abstract class BaseChangeSplitLayoutAction extends AnAction implements DumbAware, Toggleable {
@Nullable
private final SplitFileEditor.SplitEditorLayout myLayoutToSet;
protected BaseChangeSplitLayoutAction(@Nullable SplitFileEditor.SplitEditorLayout layoutToSet) {
myLayoutToSet = layoutToSet;
}
@Override
public void update(AnActionEvent e) {
final SplitFileEditor splitFileEditor = AsciiDocActionUtil.findSplitEditor(e);
e.getPresentation().setEnabledAndVisible(splitFileEditor != null);
if (myLayoutToSet != null && splitFileEditor != null) {
e.getPresentation().putClientProperty(SELECTED_PROPERTY, splitFileEditor.getCurrentEditorLayout() == myLayoutToSet);
}
}
@Override
public void actionPerformed(AnActionEvent e) {
final SplitFileEditor splitFileEditor = AsciiDocActionUtil.findSplitEditor(e);
if (splitFileEditor != null) {
if (myLayoutToSet == null) {
splitFileEditor.triggerLayoutChange();
}
else {
splitFileEditor.triggerLayoutChange(myLayoutToSet);
e.getPresentation().putClientProperty(SELECTED_PROPERTY, true);
}
}
}
}