Skip to content

Commit 691b503

Browse files
committed
Console: Do not used hardwired font sizes
On Linux and Java 8, the imposed font size of 12 renders at an unbearable half on hiDPI screens. This makes it so that the font size is always the default of the textarea/textpane. While at it, this also adds some of the LogPanel contextual commands to the ConsolePanel.
1 parent 8414686 commit 691b503

File tree

4 files changed

+22
-13
lines changed

4 files changed

+22
-13
lines changed

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

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131

3232
import java.awt.BorderLayout;
3333
import java.awt.Component;
34-
import java.awt.event.ActionEvent;
35-
import java.awt.event.ActionListener;
3634
import java.awt.event.WindowAdapter;
3735
import java.awt.event.WindowEvent;
3836
import java.io.File;
@@ -323,13 +321,7 @@ protected JMenuBar createConsoleMenu() {
323321
final JMenu edit = new JMenu("Edit");
324322
menuBar.add(edit);
325323
final JMenuItem editClear = new JMenuItem("Clear");
326-
editClear.addActionListener(new ActionListener() {
327-
328-
@Override
329-
public void actionPerformed(ActionEvent e) {
330-
getConsolePane().clear();
331-
}
332-
});
324+
editClear.addActionListener(e -> getConsolePane().clear());
333325
edit.add(editClear);
334326
return menuBar;
335327
}

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,13 @@
3535
import java.awt.Font;
3636
import java.awt.FontMetrics;
3737

38+
import javax.swing.JMenuItem;
3839
import javax.swing.JPanel;
40+
import javax.swing.JPopupMenu;
3941
import javax.swing.JScrollPane;
4042
import javax.swing.JTextArea;
4143
import javax.swing.JTextPane;
44+
import javax.swing.KeyStroke;
4245
import javax.swing.text.BadLocationException;
4346
import javax.swing.text.Style;
4447
import javax.swing.text.StyleConstants;
@@ -109,7 +112,7 @@ private synchronized void initGui() {
109112
setLayout(new MigLayout("inset 0", "[grow,fill]", "[grow,fill,align top]"));
110113

111114
textPane = new JTextPane();
112-
textPane.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
115+
textPane.setFont(new Font(Font.MONOSPACED, Font.PLAIN, textPane.getFont().getSize()));
113116
textPane.setEditable(false);
114117

115118
doc = textPane.getStyledDocument();
@@ -137,9 +140,23 @@ private synchronized void initGui() {
137140
final int lineHeight = fm.getHeight();
138141
scrollPane.getHorizontalScrollBar().setUnitIncrement(charWidth);
139142
scrollPane.getVerticalScrollBar().setUnitIncrement(2 * lineHeight);
140-
143+
textPane.setComponentPopupMenu(initMenu());
141144
add(scrollPane);
142145
}
146+
147+
private JPopupMenu initMenu() {
148+
final JPopupMenu menu = new JPopupMenu();
149+
JMenuItem item = new JMenuItem("Copy");
150+
item.setAccelerator(KeyStroke.getKeyStroke("control C"));
151+
item.addActionListener( e-> textPane.copy());
152+
menu.add(item);
153+
item = new JMenuItem("Clear");
154+
item.setAccelerator(KeyStroke.getKeyStroke("alt C"));
155+
item.addActionListener(e -> clear());
156+
menu.add(item);
157+
return menu;
158+
}
159+
143160
// -- Helper methods --
144161

145162
private Style createStyle(final String name, final Style parent,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class ItemTextPane {
8585
ItemTextPane(final Context context) {
8686
context.inject(this);
8787
textPane.setEditable(false);
88-
textPane.setFont(new Font("monospaced", Font.PLAIN, 12));
88+
textPane.setFont(new Font(Font.MONOSPACED, Font.PLAIN, textPane.getFont().getSize()));
8989
}
9090

9191
// -- ItemTextPane methods --

src/main/java/org/scijava/ui/swing/viewer/text/SwingTextDisplayPanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public SwingTextDisplayPanel(final TextDisplay display,
7979
textArea = new JEditorPane();
8080
textArea.setPreferredSize(new Dimension(600, 500));
8181
textArea.setEditable(false);
82-
final Font font = new Font(Font.MONOSPACED, Font.PLAIN, 12);
82+
final Font font = new Font(Font.MONOSPACED, Font.PLAIN, textArea.getFont().getSize());
8383
textArea.setFont(font);
8484
textArea.addHyperlinkListener(this);
8585
setViewportView(textArea);

0 commit comments

Comments
 (0)