From 0120c91c6d1d9d499e627d4268d874e7ed4cd779 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 24 Feb 2014 16:48:30 +0100 Subject: [PATCH] Generify to support move to right and move to down actions --- .../com/intellij/ide/actions/SplitAction.java | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/actions/SplitAction.java b/platform/platform-impl/src/com/intellij/ide/actions/SplitAction.java index 5e8de1b19bf1..aa2ce0014ba9 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/SplitAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/SplitAction.java @@ -18,38 +18,45 @@ package com.intellij.ide.actions; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx; import com.intellij.openapi.fileEditor.impl.EditorWindow; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; /** * @author Vladimir Kondratyev + * @author Konstantin Bulenkov */ public abstract class SplitAction extends AnAction implements DumbAware { private final int myOrientation; + private final boolean myCloseSource; - protected SplitAction(final int orientation){ + protected SplitAction(final int orientation) { + this(orientation, false); + } + + protected SplitAction(final int orientation, boolean closeSource) { myOrientation = orientation; + myCloseSource = closeSource; } public void actionPerformed(final AnActionEvent event) { - final Project project = CommonDataKeys.PROJECT.getData(event.getDataContext()); + final Project project = event.getData(CommonDataKeys.PROJECT); final FileEditorManagerEx fileEditorManager = FileEditorManagerEx.getInstanceEx(project); - final EditorWindow window = EditorWindow.DATA_KEY.getData(event.getDataContext()); + final EditorWindow window = event.getData(EditorWindow.DATA_KEY); + final VirtualFile file = event.getData(CommonDataKeys.VIRTUAL_FILE); fileEditorManager.createSplitter(myOrientation, window); + + if (myCloseSource && window != null && file != null) { + window.closeFile(file, false, false); + } } public void update(final AnActionEvent event) { - final Project project = CommonDataKeys.PROJECT.getData(event.getDataContext()); - final Presentation presentation = event.getPresentation(); - if (project == null) { - presentation.setEnabled(false); - return; - } - final FileEditorManagerEx fileEditorManager = FileEditorManagerEx.getInstanceEx(project); - presentation.setEnabled(fileEditorManager.hasOpenedFile ()); + final Project project = event.getData(CommonDataKeys.PROJECT); + final boolean enabled = project != null && FileEditorManagerEx.getInstanceEx(project).hasOpenedFile(); + event.getPresentation().setEnabled(enabled); } }