@NotNull List<TerminalAction> actions,
@Nullable final Predicate<KeyEvent> elseAction) {
for (final TerminalAction action : actions) {
+ if (action.isHidden()) {
+ continue;
+ }
AnAction a = new DumbAwareAction() {
@Override
public void actionPerformed(AnActionEvent e) {
@Override
protected JediTermWidget createInnerTerminalWidget(TabbedSettingsProvider settingsProvider) {
- return new JBTerminalWidget(mySettingsProvider, myParent);
+ return new JBTerminalWidget(myProject, mySettingsProvider, myParent);
}
@Override
package org.jetbrains.plugins.terminal;
+import com.google.common.base.Predicate;
import com.intellij.openapi.Disposable;
+import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
+import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.ui.SearchTextField;
import com.intellij.ui.components.JBScrollBar;
import com.intellij.ui.components.JBScrollPane;
import com.jediterm.terminal.model.StyleState;
import com.jediterm.terminal.model.TerminalTextBuffer;
import com.jediterm.terminal.ui.JediTermWidget;
+import com.jediterm.terminal.ui.TerminalAction;
import com.jediterm.terminal.ui.settings.SettingsProvider;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import javax.swing.event.DocumentListener;
import java.awt.*;
+import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
+import java.util.List;
public class JBTerminalWidget extends JediTermWidget implements Disposable{
- public JBTerminalWidget(JBTerminalSystemSettingsProvider settingsProvider, Disposable parent) {
+ private final Project myProject;
+
+ public JBTerminalWidget(Project project, JBTerminalSystemSettingsProvider settingsProvider, Disposable parent) {
super(settingsProvider);
+ myProject = project;
setName("terminal");
JBTabbedTerminalWidget.convertActions(this, getActions());
});
return bar;
}
-
+
+ @Override
+ public List<TerminalAction> getActions() {
+ List<TerminalAction> actions = super.getActions();
+ if (!TerminalOptionsProvider.getInstance().overrideIdeShortcuts()) {
+ actions
+ .add(new TerminalAction("EditorEscape", new KeyStroke[]{KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)}, new Predicate<KeyEvent>() {
+ @Override
+ public boolean apply(KeyEvent input) {
+ if (!myTerminalPanel.getTerminalTextBuffer().isUsingAlternateBuffer()) {
+ ToolWindowManager.getInstance(myProject).activateEditorComponent();
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ }).withHidden(true));
+ }
+ return actions;
+ };
+
@Override
public void dispose() {
}