package org.intellij.plugins.markdown.ui.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.intellij.plugins.markdown.ui.actions.MarkdownActionUtil; import org.intellij.plugins.markdown.ui.split.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 = MarkdownActionUtil.findSplitEditor(e); e.getPresentation().setEnabled(splitFileEditor != null); if (myLayoutToSet != null && splitFileEditor != null) { e.getPresentation().putClientProperty(SELECTED_PROPERTY, splitFileEditor.getCurrentEditorLayout() == myLayoutToSet); } } @Override public void actionPerformed(AnActionEvent e) { final SplitFileEditor splitFileEditor = MarkdownActionUtil.findSplitEditor(e); if (splitFileEditor != null) { if (myLayoutToSet == null) { splitFileEditor.triggerLayoutChange(); } else { splitFileEditor.triggerLayoutChange(myLayoutToSet); e.getPresentation().putClientProperty(SELECTED_PROPERTY, true); } } } }