mirror of
https://github.com/arduino/Arduino.git
synced 2025-03-14 11:29:26 +01:00
Move editor font resize listener code to Base
- Move editor font resize listener code to the Base class. - Cache and share the same listener for all components.
This commit is contained in:
parent
3aa81b0a89
commit
61bbc382b5
@ -8,9 +8,6 @@ import java.awt.Dimension;
|
|||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.KeyEvent;
|
|
||||||
import java.awt.event.KeyAdapter;
|
|
||||||
import java.awt.event.MouseWheelEvent;
|
|
||||||
import java.awt.event.WindowAdapter;
|
import java.awt.event.WindowAdapter;
|
||||||
import java.awt.event.WindowEvent;
|
import java.awt.event.WindowEvent;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
@ -35,8 +32,6 @@ import cc.arduino.packages.BoardPort;
|
|||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public abstract class AbstractTextMonitor extends AbstractMonitor {
|
public abstract class AbstractTextMonitor extends AbstractMonitor {
|
||||||
|
|
||||||
private final Base base;
|
|
||||||
|
|
||||||
protected JLabel noLineEndingAlert;
|
protected JLabel noLineEndingAlert;
|
||||||
protected TextAreaFIFO textArea;
|
protected TextAreaFIFO textArea;
|
||||||
protected JScrollPane scrollPane;
|
protected JScrollPane scrollPane;
|
||||||
@ -50,7 +45,10 @@ public abstract class AbstractTextMonitor extends AbstractMonitor {
|
|||||||
|
|
||||||
public AbstractTextMonitor(Base base, BoardPort boardPort) {
|
public AbstractTextMonitor(Base base, BoardPort boardPort) {
|
||||||
super(boardPort);
|
super(boardPort);
|
||||||
this.base = base;
|
|
||||||
|
// Add font size adjustment listeners. This has to be done here due to
|
||||||
|
// super(boardPort) invoking onCreateWindow(...) before we can store base.
|
||||||
|
base.addEditorFontResizeListeners(textArea);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -67,40 +65,6 @@ public abstract class AbstractTextMonitor extends AbstractMonitor {
|
|||||||
// whether or not to do so based on the autoscroll checkbox.
|
// whether or not to do so based on the autoscroll checkbox.
|
||||||
((DefaultCaret) textArea.getCaret()).setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
|
((DefaultCaret) textArea.getCaret()).setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
|
||||||
|
|
||||||
// Add "CTRL scroll" hotkey for font size adjustment.
|
|
||||||
textArea.addMouseWheelListener((MouseWheelEvent e) -> {
|
|
||||||
if (e.isControlDown()) {
|
|
||||||
if (e.getWheelRotation() < 0) {
|
|
||||||
base.handleFontSizeChange(1);
|
|
||||||
} else {
|
|
||||||
base.handleFontSizeChange(-1);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
e.getComponent().getParent().dispatchEvent(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add "CTRL (SHIFT) =/+" and "CTRL -" hotkeys for font size adjustment.
|
|
||||||
textArea.addKeyListener(new KeyAdapter() {
|
|
||||||
@Override
|
|
||||||
public void keyPressed(KeyEvent e) {
|
|
||||||
if (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK
|
|
||||||
|| e.getModifiersEx() == (KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK)) {
|
|
||||||
switch (e.getKeyCode()) {
|
|
||||||
case KeyEvent.VK_PLUS:
|
|
||||||
case KeyEvent.VK_EQUALS:
|
|
||||||
base.handleFontSizeChange(1);
|
|
||||||
break;
|
|
||||||
case KeyEvent.VK_MINUS:
|
|
||||||
if (!e.isShiftDown()) {
|
|
||||||
base.handleFontSizeChange(-1);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
scrollPane = new JScrollPane(textArea);
|
scrollPane = new JScrollPane(textArea);
|
||||||
|
|
||||||
mainPane.add(scrollPane, BorderLayout.CENTER);
|
mainPane.add(scrollPane, BorderLayout.CENTER);
|
||||||
|
@ -1877,6 +1877,81 @@ public class Base {
|
|||||||
getEditors().forEach(Editor::applyPreferences);
|
getEditors().forEach(Editor::applyPreferences);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MouseWheelListener editorFontResizeMouseWheelListener = null;
|
||||||
|
private KeyListener editorFontResizeKeyListener = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a {@link MouseWheelListener} and {@link KeyListener} to the given
|
||||||
|
* component that will make "CTRL scroll" and "CTRL +/-"
|
||||||
|
* (with optional SHIFT for +) increase/decrease the editor text size.
|
||||||
|
* This method is equivalent to calling
|
||||||
|
* {@link #addEditorFontResizeMouseWheelListener(Component)} and
|
||||||
|
* {@link #addEditorFontResizeKeyListener(Component)} on the given component.
|
||||||
|
* Note that this also affects components that use the editor font settings.
|
||||||
|
* @param comp - The component to add the listener to.
|
||||||
|
*/
|
||||||
|
public void addEditorFontResizeListeners(Component comp) {
|
||||||
|
this.addEditorFontResizeMouseWheelListener(comp);
|
||||||
|
this.addEditorFontResizeKeyListener(comp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a {@link MouseWheelListener} to the given component that will
|
||||||
|
* make "CTRL scroll" increase/decrease the editor text size.
|
||||||
|
* When CTRL is not pressed while scrolling, mouse wheel events are passed
|
||||||
|
* on to the parent of the given component.
|
||||||
|
* Note that this also affects components that use the editor font settings.
|
||||||
|
* @param comp - The component to add the listener to.
|
||||||
|
*/
|
||||||
|
public void addEditorFontResizeMouseWheelListener(Component comp) {
|
||||||
|
if (this.editorFontResizeMouseWheelListener == null) {
|
||||||
|
this.editorFontResizeMouseWheelListener = (MouseWheelEvent e) -> {
|
||||||
|
if (e.isControlDown()) {
|
||||||
|
if (e.getWheelRotation() < 0) {
|
||||||
|
this.handleFontSizeChange(1);
|
||||||
|
} else {
|
||||||
|
this.handleFontSizeChange(-1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
e.getComponent().getParent().dispatchEvent(e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
comp.addMouseWheelListener(this.editorFontResizeMouseWheelListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a {@link KeyListener} to the given component that will make "CTRL +/-"
|
||||||
|
* (with optional SHIFT for +) increase/decrease the editor text size.
|
||||||
|
* Note that this also affects components that use the editor font settings.
|
||||||
|
* @param comp - The component to add the listener to.
|
||||||
|
*/
|
||||||
|
public void addEditorFontResizeKeyListener(Component comp) {
|
||||||
|
if (this.editorFontResizeKeyListener == null) {
|
||||||
|
this.editorFontResizeKeyListener = new KeyAdapter() {
|
||||||
|
@Override
|
||||||
|
public void keyPressed(KeyEvent e) {
|
||||||
|
if (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK
|
||||||
|
|| e.getModifiersEx() == (KeyEvent.CTRL_DOWN_MASK
|
||||||
|
| KeyEvent.SHIFT_DOWN_MASK)) {
|
||||||
|
switch (e.getKeyCode()) {
|
||||||
|
case KeyEvent.VK_PLUS:
|
||||||
|
case KeyEvent.VK_EQUALS:
|
||||||
|
Base.this.handleFontSizeChange(1);
|
||||||
|
break;
|
||||||
|
case KeyEvent.VK_MINUS:
|
||||||
|
if (!e.isShiftDown()) {
|
||||||
|
Base.this.handleFontSizeChange(-1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
comp.addKeyListener(this.editorFontResizeKeyListener);
|
||||||
|
}
|
||||||
|
|
||||||
public List<JMenu> getBoardsCustomMenus() {
|
public List<JMenu> getBoardsCustomMenus() {
|
||||||
return boardsCustomMenus;
|
return boardsCustomMenus;
|
||||||
}
|
}
|
||||||
|
@ -26,9 +26,6 @@ import cc.arduino.ConsoleOutputStream;
|
|||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.text.*;
|
import javax.swing.text.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.KeyAdapter;
|
|
||||||
import java.awt.event.KeyEvent;
|
|
||||||
import java.awt.event.MouseWheelEvent;
|
|
||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
|
|
||||||
import static processing.app.Theme.scale;
|
import static processing.app.Theme.scale;
|
||||||
@ -64,7 +61,7 @@ public class EditorConsole extends JScrollPane {
|
|||||||
private SimpleAttributeSet stdOutStyle;
|
private SimpleAttributeSet stdOutStyle;
|
||||||
private SimpleAttributeSet stdErrStyle;
|
private SimpleAttributeSet stdErrStyle;
|
||||||
|
|
||||||
public EditorConsole(final Base base) {
|
public EditorConsole(Base base) {
|
||||||
document = new DefaultStyledDocument();
|
document = new DefaultStyledDocument();
|
||||||
|
|
||||||
consoleTextPane = new JTextPane(document);
|
consoleTextPane = new JTextPane(document);
|
||||||
@ -114,39 +111,8 @@ public class EditorConsole extends JScrollPane {
|
|||||||
|
|
||||||
EditorConsole.init(stdOutStyle, System.out, stdErrStyle, System.err);
|
EditorConsole.init(stdOutStyle, System.out, stdErrStyle, System.err);
|
||||||
|
|
||||||
// Add "CTRL scroll" hotkey for font size adjustment.
|
// Add font size adjustment listeners.
|
||||||
consoleTextPane.addMouseWheelListener((MouseWheelEvent e) -> {
|
base.addEditorFontResizeListeners(consoleTextPane);
|
||||||
if (e.isControlDown()) {
|
|
||||||
if (e.getWheelRotation() < 0) {
|
|
||||||
base.handleFontSizeChange(1);
|
|
||||||
} else {
|
|
||||||
base.handleFontSizeChange(-1);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
e.getComponent().getParent().dispatchEvent(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Add "CTRL (SHIFT) =/+" and "CTRL -" hotkeys for font size adjustment.
|
|
||||||
consoleTextPane.addKeyListener(new KeyAdapter() {
|
|
||||||
@Override
|
|
||||||
public void keyPressed(KeyEvent e) {
|
|
||||||
if (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK
|
|
||||||
|| e.getModifiersEx() == (KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK)) {
|
|
||||||
switch (e.getKeyCode()) {
|
|
||||||
case KeyEvent.VK_PLUS:
|
|
||||||
case KeyEvent.VK_EQUALS:
|
|
||||||
base.handleFontSizeChange(1);
|
|
||||||
break;
|
|
||||||
case KeyEvent.VK_MINUS:
|
|
||||||
if (!e.isShiftDown()) {
|
|
||||||
base.handleFontSizeChange(-1);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void applyPreferences() {
|
public void applyPreferences() {
|
||||||
|
@ -68,7 +68,7 @@ import processing.app.tools.DiscourseFormat;
|
|||||||
/**
|
/**
|
||||||
* Single tab, editing a single file, in the main window.
|
* Single tab, editing a single file, in the main window.
|
||||||
*/
|
*/
|
||||||
public class EditorTab extends JPanel implements SketchFile.TextStorage, MouseWheelListener {
|
public class EditorTab extends JPanel implements SketchFile.TextStorage {
|
||||||
protected Editor editor;
|
protected Editor editor;
|
||||||
protected SketchTextArea textarea;
|
protected SketchTextArea textarea;
|
||||||
protected RTextScrollPane scrollPane;
|
protected RTextScrollPane scrollPane;
|
||||||
@ -110,7 +110,7 @@ public class EditorTab extends JPanel implements SketchFile.TextStorage, MouseWh
|
|||||||
file.setStorage(this);
|
file.setStorage(this);
|
||||||
applyPreferences();
|
applyPreferences();
|
||||||
add(scrollPane, BorderLayout.CENTER);
|
add(scrollPane, BorderLayout.CENTER);
|
||||||
textarea.addMouseWheelListener(this);
|
editor.base.addEditorFontResizeMouseWheelListener(textarea);
|
||||||
}
|
}
|
||||||
|
|
||||||
private RSyntaxDocument createDocument(String contents) {
|
private RSyntaxDocument createDocument(String contents) {
|
||||||
@ -182,18 +182,6 @@ public class EditorTab extends JPanel implements SketchFile.TextStorage, MouseWh
|
|||||||
configurePopupMenu(textArea);
|
configurePopupMenu(textArea);
|
||||||
return textArea;
|
return textArea;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void mouseWheelMoved(MouseWheelEvent e) {
|
|
||||||
if (e.isControlDown()) {
|
|
||||||
if (e.getWheelRotation() < 0) {
|
|
||||||
editor.base.handleFontSizeChange(1);
|
|
||||||
} else {
|
|
||||||
editor.base.handleFontSizeChange(-1);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
e.getComponent().getParent().dispatchEvent(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void configurePopupMenu(final SketchTextArea textarea){
|
private void configurePopupMenu(final SketchTextArea textarea){
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user