Skip to content

Commit 9e1594d

Browse files
committed
Merge branch 'console-fixes'
2 parents 7087e68 + 3981aff commit 9e1594d

File tree

4 files changed

+36
-0
lines changed

4 files changed

+36
-0
lines changed

src/main/java/org/scijava/ui/swing/AbstractSwingUI.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,16 @@
3232

3333
import java.awt.BorderLayout;
3434
import java.awt.Component;
35+
import java.awt.event.ActionEvent;
36+
import java.awt.event.ActionListener;
3537
import java.awt.event.WindowAdapter;
3638
import java.awt.event.WindowEvent;
3739
import java.io.File;
3840

3941
import javax.swing.JFileChooser;
42+
import javax.swing.JMenu;
4043
import javax.swing.JMenuBar;
44+
import javax.swing.JMenuItem;
4145
import javax.swing.JPopupMenu;
4246
import javax.swing.WindowConstants;
4347

@@ -238,6 +242,22 @@ protected JMenuBar createMenus() {
238242
return menuBar;
239243
}
240244

245+
protected JMenuBar createConsoleMenu() {
246+
final JMenuBar menuBar = new JMenuBar();
247+
final JMenu edit = new JMenu("Edit");
248+
menuBar.add(edit);
249+
final JMenuItem editClear = new JMenuItem("Clear");
250+
editClear.addActionListener(new ActionListener() {
251+
252+
@Override
253+
public void actionPerformed(ActionEvent e) {
254+
getConsolePane().clear();
255+
}
256+
});
257+
edit.add(editClear);
258+
return menuBar;
259+
}
260+
241261
/**
242262
* Configures the application frame for subclass-specific settings (e.g., SDI
243263
* or MDI).

src/main/java/org/scijava/ui/swing/console/SwingConsolePane.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import java.awt.Component;
3636
import java.awt.Dimension;
3737
import java.awt.Font;
38+
import java.awt.FontMetrics;
3839

3940
import javax.swing.JPanel;
4041
import javax.swing.JScrollPane;
@@ -102,6 +103,11 @@ public JScrollPane getScrollPane() {
102103
return scrollPane;
103104
}
104105

106+
public void clear() {
107+
if (consolePanel == null) initConsolePanel();
108+
textPane.setText("");
109+
}
110+
105111
// -- ConsolePane methods --
106112

107113
@Override
@@ -179,6 +185,14 @@ private synchronized void initConsolePanel() {
179185

180186
scrollPane = new JScrollPane(textPanel);
181187
scrollPane.setPreferredSize(new Dimension(600, 600));
188+
189+
// Make the scroll bars move at a reasonable pace.
190+
final FontMetrics fm = scrollPane.getFontMetrics(scrollPane.getFont());
191+
final int charWidth = fm.charWidth('a');
192+
final int lineHeight = fm.getHeight();
193+
scrollPane.getHorizontalScrollBar().setUnitIncrement(charWidth);
194+
scrollPane.getVerticalScrollBar().setUnitIncrement(2 * lineHeight);
195+
182196
panel.add(scrollPane);
183197

184198
consolePanel = panel;

src/main/java/org/scijava/ui/swing/mdi/SwingMdiUI.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ protected void setupConsole() {
124124
desktopPane.add(frame);
125125
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
126126
frame.setContentPane(getConsolePane().getComponent());
127+
frame.setJMenuBar(createConsoleMenu());
127128
frame.pack();
128129
getConsolePane().setWindow(frame);
129130
}

src/main/java/org/scijava/ui/swing/sdi/SwingSDIUI.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ protected void setupConsole() {
115115
final JFrame frame = new JFrame("Console");
116116
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
117117
frame.setContentPane(getConsolePane().getComponent());
118+
frame.setJMenuBar(createConsoleMenu());
118119
frame.pack();
119120
getConsolePane().setWindow(frame);
120121
}

0 commit comments

Comments
 (0)