summaryrefslogtreecommitdiff
path: root/plugins/terminal/src/org/jetbrains/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/terminal/src/org/jetbrains/plugins')
-rw-r--r--plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java16
-rw-r--r--plugins/terminal/src/org/jetbrains/plugins/terminal/OpenLocalTerminalAction.java53
-rw-r--r--plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java23
3 files changed, 21 insertions, 71 deletions
diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java
index caaa54166e7d..f67f84412a02 100644
--- a/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java
+++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/LocalTerminalDirectRunner.java
@@ -16,6 +16,7 @@ import com.jediterm.pty.PtyProcessTtyConnector;
import com.jediterm.terminal.TtyConnector;
import com.pty4j.PtyProcess;
import com.pty4j.util.PtyUtil;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
@@ -63,6 +64,11 @@ public class LocalTerminalDirectRunner extends AbstractTerminalRunner<PtyProcess
return null;
}
+ @NotNull
+ public static LocalTerminalDirectRunner createTerminalRunner(Project project) {
+ return new LocalTerminalDirectRunner(project);
+ }
+
@Override
protected PtyProcess createProcess(@Nullable String directory) throws ExecutionException {
Map<String, String> envs = new HashMap<String, String>(System.getenv());
@@ -77,10 +83,14 @@ public class LocalTerminalDirectRunner extends AbstractTerminalRunner<PtyProcess
}
private String currentProjectFolder() {
- for (VirtualFile vf : ProjectRootManager.getInstance(myProject).getContentRoots()) {
- return vf.getCanonicalPath();
+ final ProjectRootManager projectRootManager = ProjectRootManager.getInstance(myProject);
+
+ final VirtualFile[] roots = projectRootManager.getContentRoots();
+ if (roots.length == 1) {
+ roots[0].getCanonicalPath();
}
- return null;
+ final VirtualFile baseDir = myProject.getBaseDir();
+ return baseDir == null ? null : baseDir.getCanonicalPath();
}
@Override
diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/OpenLocalTerminalAction.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/OpenLocalTerminalAction.java
deleted file mode 100644
index 4d93dd9fc46e..000000000000
--- a/plugins/terminal/src/org/jetbrains/plugins/terminal/OpenLocalTerminalAction.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.jetbrains.plugins.terminal;
-
-import com.intellij.openapi.actionSystem.AnAction;
-import com.intellij.openapi.actionSystem.AnActionEvent;
-import com.intellij.openapi.actionSystem.CommonDataKeys;
-import com.intellij.openapi.project.DumbAware;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.wm.ToolWindow;
-import com.intellij.openapi.wm.ToolWindowManager;
-import icons.TerminalIcons;
-import org.jetbrains.annotations.NotNull;
-
-/**
- * @author traff
- */
-public class OpenLocalTerminalAction extends AnAction implements DumbAware {
- public OpenLocalTerminalAction() {
- super("Open Terminal...", null, TerminalIcons.OpenTerminal);
- }
-
- @Override
- public void update(final AnActionEvent e) {
- e.getPresentation().setVisible(true);
- e.getPresentation().setEnabled(true);
- }
-
- public void actionPerformed(final AnActionEvent e) {
- runLocalTerminal(e);
- }
-
- public void runLocalTerminal(AnActionEvent event) {
- final Project project = event.getData(CommonDataKeys.PROJECT);
- runLocalTerminal(project);
- }
-
- public static void runLocalTerminal(final Project project) {
- ToolWindow terminal = ToolWindowManager.getInstance(project).getToolWindow("Terminal");
- if (terminal.isActive()) {
- TerminalView.getInstance(project).openLocalSession(project, terminal);
- }
- terminal.activate(new Runnable() {
- @Override
- public void run() {
-
- }
- }, true);
- }
-
- @NotNull
- public static LocalTerminalDirectRunner createTerminalRunner(Project project) {
- return new LocalTerminalDirectRunner(project);
- }
-}
diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java
index 14b992a7c143..32b7c9b13c06 100644
--- a/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java
+++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/TerminalView.java
@@ -1,7 +1,6 @@
package org.jetbrains.plugins.terminal;
import com.intellij.icons.AllIcons;
-import com.intellij.notification.EventLog;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.project.DumbAwareAction;
@@ -23,7 +22,6 @@ import com.intellij.util.ui.UIUtil;
import com.jediterm.terminal.ui.JediTermWidget;
import com.jediterm.terminal.ui.TabbedTerminalWidget;
import com.jediterm.terminal.ui.TerminalWidget;
-import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.terminal.vfs.TerminalSessionVirtualFileImpl;
@@ -54,7 +52,7 @@ public class TerminalView {
public void initTerminal(final ToolWindow toolWindow) {
- LocalTerminalDirectRunner terminalRunner = OpenLocalTerminalAction.createTerminalRunner(myProject);
+ LocalTerminalDirectRunner terminalRunner = LocalTerminalDirectRunner.createTerminalRunner(myProject);
toolWindow.setToHideOnEmptyContent(true);
@@ -99,14 +97,9 @@ public class TerminalView {
}
}
- private Content createTerminalInContentPanel(@Nullable LocalTerminalDirectRunner terminalRunner,
+ private Content createTerminalInContentPanel(@NotNull AbstractTerminalRunner terminalRunner,
final @NotNull ToolWindow toolWindow) {
- SimpleToolWindowPanel panel = new SimpleToolWindowPanel(false, true) {
- @Override
- public Object getData(@NonNls String dataId) {
- return PlatformDataKeys.HELP_ID.is(dataId) ? EventLog.HELP_ID : super.getData(dataId);
- }
- };
+ SimpleToolWindowPanel panel = new SimpleToolWindowPanel(false, true);
final Content content = ContentFactory.SERVICE.getInstance().createContent(panel, "", false);
content.setCloseable(true);
@@ -162,14 +155,14 @@ public class TerminalView {
}
public void openLocalSession(Project project, ToolWindow terminal) {
- LocalTerminalDirectRunner terminalRunner = OpenLocalTerminalAction.createTerminalRunner(project);
+ LocalTerminalDirectRunner terminalRunner = LocalTerminalDirectRunner.createTerminalRunner(project);
openSession(terminal, terminalRunner);
}
private void openSession(@NotNull ToolWindow toolWindow, @NotNull AbstractTerminalRunner terminalRunner) {
if (myTerminalWidget == null) {
toolWindow.getContentManager().removeAllContents(true);
- final Content content = createTerminalInContentPanel(null, toolWindow);
+ final Content content = createTerminalInContentPanel(terminalRunner, toolWindow);
toolWindow.getContentManager().addContent(content);
}
else {
@@ -184,7 +177,7 @@ public class TerminalView {
}, true);
}
- private ActionToolbar createToolbar(@Nullable final LocalTerminalDirectRunner terminalRunner,
+ private ActionToolbar createToolbar(@Nullable final AbstractTerminalRunner terminalRunner,
@NotNull final JBTabbedTerminalWidget terminal, @NotNull ToolWindow toolWindow) {
DefaultActionGroup group = new DefaultActionGroup();
@@ -215,10 +208,10 @@ public class TerminalView {
private static class NewSession extends DumbAwareAction {
- private final LocalTerminalDirectRunner myTerminalRunner;
+ private final AbstractTerminalRunner myTerminalRunner;
private final TerminalWidget myTerminal;
- public NewSession(@NotNull LocalTerminalDirectRunner terminalRunner, @NotNull TerminalWidget terminal) {
+ public NewSession(@NotNull AbstractTerminalRunner terminalRunner, @NotNull TerminalWidget terminal) {
super("New Session", "Create New Terminal Session", AllIcons.General.Add);
myTerminalRunner = terminalRunner;
myTerminal = terminal;