Skip to content

Commit 09616e4

Browse files
committed
#111: Hotkeys
In the RunScriptDialog: Press Ctrl-Enter or Enter to run the script Preiss ESC to cancel In the ScriptingConsole: Press F5 to run the current script
1 parent 200c2d3 commit 09616e4

File tree

3 files changed

+44
-19
lines changed

3 files changed

+44
-19
lines changed

src/main/java/org/openstreetmap/josm/plugins/scripting/ui/RunScriptDialog.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import javax.swing.*;
1717
import java.awt.*;
1818
import java.awt.event.ActionEvent;
19+
import java.awt.event.KeyEvent;
1920
import java.awt.event.WindowAdapter;
2021
import java.awt.event.WindowEvent;
2122
import java.io.File;
@@ -67,17 +68,32 @@ private JPanel buildInfoPanel() {
6768
private JPanel buildControlButtonPanel() {
6869
final var pnl = new JPanel(new FlowLayout(FlowLayout.CENTER));
6970
final var actRun = new RunAction();
70-
final var btn = new JButton(actRun);
71-
pnl.add(btn);
72-
btn.setFocusable(true);
73-
btn.registerKeyboardAction(actRun, KeyStroke.getKeyStroke("ENTER"), JComponent.WHEN_FOCUSED);
71+
final var btnRun = new JButton(actRun);
72+
pnl.add(btnRun);
73+
btnRun.setFocusable(true);
74+
btnRun.registerKeyboardAction(actRun, KeyStroke.getKeyStroke("ENTER"), JComponent.WHEN_FOCUSED);
7475
getRootPane().registerKeyboardAction(actRun,
7576
KeyStroke.getKeyStroke("ctrl ENTER"),
76-
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
77+
JComponent.WHEN_IN_FOCUSED_WINDOW
7778
);
78-
pnl.add(new JButton(new CancelAction()));
79-
final var helpAction = new ContextSensitiveHelpAction(HelpUtil.ht("/Plugin/Scripting#Run"));
80-
pnl.add(new JButton(helpAction));
79+
getRootPane().registerKeyboardAction(actRun,
80+
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0),
81+
JComponent.WHEN_IN_FOCUSED_WINDOW
82+
);
83+
final var actCancel = new CancelAction();
84+
final var btnCancel = new JButton(actCancel);
85+
pnl.add(btnCancel);
86+
btnCancel.registerKeyboardAction(actCancel,
87+
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_FOCUSED);
88+
getRootPane().registerKeyboardAction(actCancel,
89+
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0 /* no modifiers */),
90+
JComponent.WHEN_IN_FOCUSED_WINDOW
91+
);
92+
final var actHelp = new ContextSensitiveHelpAction(HelpUtil.ht("/Plugin/Scripting#Run"));
93+
final var btnHelp = new JButton(actHelp);
94+
pnl.add(btnHelp);
95+
btnHelp.registerKeyboardAction(actHelp,
96+
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_FOCUSED);
8197
return pnl;
8298
}
8399

src/main/java/org/openstreetmap/josm/plugins/scripting/ui/console/ScriptingConsole.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,13 +134,11 @@ protected JPanel buildControlPanel() {
134134
protected void build() {
135135
final Container c = getContentPane();
136136
c.setLayout(new BorderLayout());
137-
c.add(pnlScriptingConsole = new ScriptingConsolePanel(),
137+
c.add(pnlScriptingConsole = new ScriptingConsolePanel(getRootPane()),
138138
BorderLayout.CENTER);
139139
c.add(buildControlPanel(), BorderLayout.SOUTH);
140-
141140
setJMenuBar(buildMenuBar());
142141
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
143-
144142
setIconImage(ImageProvider.get("script-engine").getImage());
145143
}
146144

src/main/java/org/openstreetmap/josm/plugins/scripting/ui/console/ScriptingConsolePanel.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import javax.validation.constraints.Null;
1515
import java.awt.*;
1616
import java.awt.event.ActionEvent;
17+
import java.awt.event.KeyEvent;
1718
import java.beans.PropertyChangeEvent;
1819
import java.beans.PropertyChangeListener;
1920
import java.io.File;
@@ -35,13 +36,14 @@ public class ScriptingConsolePanel extends JPanel {
3536
private ScriptLogPanel log;
3637
private ScriptEditor editor;
3738
private ScriptErrorViewer errorViewer;
39+
private RunScriptAction actRun;
3840

3941
protected JPanel buildControlPanel() {
40-
final JPanel pnl = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
41-
pnl.setBorder(null);
42+
final var pnl = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
4243
pnl.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
43-
JButton btn = new JButton(new RunScriptAction(editor.getModel(), errorViewer.getModel()));
44-
pnl.add(btn);
44+
actRun = new RunScriptAction(editor.getModel(), errorViewer.getModel());
45+
final var btnRun = new JButton(actRun);
46+
pnl.add(btnRun);
4547
return pnl;
4648
}
4749

@@ -77,7 +79,7 @@ protected JSplitPane buildSplitPane() {
7779
return sp;
7880
}
7981

80-
protected void build() {
82+
protected void build(@NotNull JRootPane root) {
8183
// make sure errorViewer is built at the beginning
8284
errorViewer = new ScriptErrorViewer();
8385

@@ -92,6 +94,10 @@ protected void build() {
9294
updateScriptContentType(desc);
9395
});
9496
updateScriptContentType(editor.getModel().getScriptEngineDescriptor());
97+
root.registerKeyboardAction(actRun,
98+
KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0),
99+
JComponent.WHEN_IN_FOCUSED_WINDOW
100+
);
95101
}
96102

97103
protected void warnMissingSyntaxStyle(@Null ScriptEngineDescriptor desc) {
@@ -151,8 +157,13 @@ protected void updateScriptContentType(ScriptEngineDescriptor desc) {
151157
}
152158
}
153159

154-
public ScriptingConsolePanel() {
155-
build();
160+
/**
161+
* Creates the scripting console pane
162+
*
163+
* @param root the root pane of the window where this panel is going to be added
164+
*/
165+
public ScriptingConsolePanel(@NotNull JRootPane root) {
166+
build(root);
156167
}
157168

158169
/**
@@ -195,7 +206,7 @@ public RunScriptAction(@NotNull final ScriptEditorModel model, @NotNull final Sc
195206
this.model = model;
196207
this.errorModel = errorModel;
197208
putValue(SMALL_ICON, ImageProvider.get("media-playback-start", ImageProvider.ImageSizes.SMALLICON));
198-
putValue(SHORT_DESCRIPTION, tr("Execute the script"));
209+
putValue(SHORT_DESCRIPTION, tr("Execute the script (F5)"));
199210
putValue(NAME, tr("Run"));
200211
model.addPropertyChangeListener(this);
201212
updateEnabledState();

0 commit comments

Comments
 (0)