blob: 56664cf5bad088a93e0bf16f70a8fe0f78550463 [file] [log] [blame]
package org.jetbrains.plugins.terminal;
import com.google.common.base.Predicate;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.DumbAwareAction;
import com.jediterm.terminal.ui.JediTermWidget;
import com.jediterm.terminal.ui.TabbedTerminalWidget;
import com.jediterm.terminal.ui.TerminalAction;
import com.jediterm.terminal.ui.TerminalWidget;
import com.jediterm.terminal.ui.settings.SettingsProvider;
import com.jediterm.terminal.ui.settings.TabbedSettingsProvider;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.util.List;
/**
* @author traff
*/
public class JBTabbedTerminalWidget extends TabbedTerminalWidget {
public JBTabbedTerminalWidget(@NotNull TabbedSettingsProvider settingsProvider, @NotNull Predicate<TerminalWidget> createNewSessionAction) {
super(settingsProvider, createNewSessionAction);
convertActions(this, getActions());
}
public static void convertActions(@NotNull JComponent component,
@NotNull List<TerminalAction> actions) {
convertActions(component, actions, null);
}
public static void convertActions(@NotNull JComponent component,
@NotNull List<TerminalAction> actions,
@Nullable final Predicate<KeyEvent> elseAction) {
for (final TerminalAction action : actions) {
AnAction a = new DumbAwareAction() {
@Override
public void actionPerformed(AnActionEvent e) {
KeyEvent event = e.getInputEvent() instanceof KeyEvent ? (KeyEvent)e.getInputEvent() : null;
if (!action.perform(event)) {
if (elseAction != null) {
elseAction.apply(event);
}
}
}
};
a.registerCustomShortcutSet(action.getKeyCode(), action.getModifiers(), component);
}
}
@Override
protected JediTermWidget createInnerTerminalWidget(SettingsProvider settingsProvider) {
return new JBTerminalWidget(settingsProvider);
}
}