From 134e31b6c5ad333846f8a0c30697be8ceedda204 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 28 Mar 2019 15:55:55 +0100 Subject: [PATCH 1/2] Remove Base dependency from AstractTextMonitor See https://github.com/arduino/Arduino/pull/8704#issuecomment-477585720 --- .../cc/arduino/packages/MonitorFactory.java | 7 +++---- .../processing/app/AbstractTextMonitor.java | 19 +++++++++++++++---- app/src/processing/app/Editor.java | 3 ++- app/src/processing/app/EditorTab.java | 2 -- app/src/processing/app/NetworkMonitor.java | 4 ++-- app/src/processing/app/SerialMonitor.java | 4 ++-- 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/app/src/cc/arduino/packages/MonitorFactory.java b/app/src/cc/arduino/packages/MonitorFactory.java index 1682eb34185..3be7723b586 100644 --- a/app/src/cc/arduino/packages/MonitorFactory.java +++ b/app/src/cc/arduino/packages/MonitorFactory.java @@ -30,24 +30,23 @@ package cc.arduino.packages; import processing.app.AbstractMonitor; -import processing.app.Base; import processing.app.NetworkMonitor; import processing.app.SerialMonitor; public class MonitorFactory { - public AbstractMonitor newMonitor(Base base, BoardPort port) { + public AbstractMonitor newMonitor(BoardPort port) { if ("network".equals(port.getProtocol())) { if ("yes".equals(port.getPrefs().get("ssh_upload"))) { // the board is SSH capable - return new NetworkMonitor(base, port); + return new NetworkMonitor(port); } else { // SSH not supported, no monitor support return null; } } - return new SerialMonitor(base, port); + return new SerialMonitor(port); } } diff --git a/app/src/processing/app/AbstractTextMonitor.java b/app/src/processing/app/AbstractTextMonitor.java index 64a0928e55e..d83b5a5519e 100644 --- a/app/src/processing/app/AbstractTextMonitor.java +++ b/app/src/processing/app/AbstractTextMonitor.java @@ -8,6 +8,8 @@ import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.KeyListener; +import java.awt.event.MouseWheelListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.text.SimpleDateFormat; @@ -43,12 +45,21 @@ public abstract class AbstractTextMonitor extends AbstractMonitor { protected JComboBox lineEndings; protected JComboBox serialRates; - public AbstractTextMonitor(Base base, BoardPort boardPort) { + public AbstractTextMonitor(BoardPort boardPort) { super(boardPort); + } - // 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 + public synchronized void addMouseWheelListener(MouseWheelListener l) { + super.addMouseWheelListener(l); + textArea.addMouseWheelListener(l); + } + + @Override + public synchronized void addKeyListener(KeyListener l) { + super.addKeyListener(l); + textArea.addKeyListener(l); + textField.addKeyListener(l); } @Override diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index 49c092fd9d2..cb910d089cd 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -2214,7 +2214,7 @@ public void handleSerial() { return; } - serialMonitor = new MonitorFactory().newMonitor(base, port); + serialMonitor = new MonitorFactory().newMonitor(port); if (serialMonitor == null) { String board = port.getPrefs().get("board"); @@ -2223,6 +2223,7 @@ public void handleSerial() { return; } + base.addEditorFontResizeListeners(serialMonitor); Base.setIcon(serialMonitor); // If currently uploading, disable the monitor (it will be later diff --git a/app/src/processing/app/EditorTab.java b/app/src/processing/app/EditorTab.java index 25c45d9d854..9ea7b435a19 100644 --- a/app/src/processing/app/EditorTab.java +++ b/app/src/processing/app/EditorTab.java @@ -30,8 +30,6 @@ import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.MouseWheelListener; -import java.awt.event.MouseWheelEvent; import java.io.IOException; diff --git a/app/src/processing/app/NetworkMonitor.java b/app/src/processing/app/NetworkMonitor.java index 3ab20314ba4..b7f08026ace 100644 --- a/app/src/processing/app/NetworkMonitor.java +++ b/app/src/processing/app/NetworkMonitor.java @@ -31,8 +31,8 @@ public class NetworkMonitor extends AbstractTextMonitor implements MessageConsum private Channel channel; private int connectionAttempts; - public NetworkMonitor(Base base, BoardPort port) { - super(base, port); + public NetworkMonitor(BoardPort port) { + super(port); onSendCommand(new ActionListener() { public void actionPerformed(ActionEvent event) { diff --git a/app/src/processing/app/SerialMonitor.java b/app/src/processing/app/SerialMonitor.java index d4f59019eae..d69b5ae27db 100644 --- a/app/src/processing/app/SerialMonitor.java +++ b/app/src/processing/app/SerialMonitor.java @@ -32,8 +32,8 @@ public class SerialMonitor extends AbstractTextMonitor { private Serial serial; private int serialRate; - public SerialMonitor(Base base, BoardPort port) { - super(base, port); + public SerialMonitor(BoardPort port) { + super(port); serialRate = PreferencesData.getInteger("serial.debug_rate"); serialRates.setSelectedItem(serialRate + " " + tr("baud")); From 0312ef7353a85e6123f7333840165f59d6207749 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 28 Mar 2019 15:44:45 +0100 Subject: [PATCH 2/2] Some small makeup - use diamond notation <> to remove redundant type specification - do no cache listeners, because it makes the code heavier for a a very small gain in memory usage. - removed redundant "this" keywords --- .../processing/app/AbstractTextMonitor.java | 4 +- app/src/processing/app/Base.java | 65 ++++++++----------- 2 files changed, 30 insertions(+), 39 deletions(-) diff --git a/app/src/processing/app/AbstractTextMonitor.java b/app/src/processing/app/AbstractTextMonitor.java index d83b5a5519e..3e8d38b5d30 100644 --- a/app/src/processing/app/AbstractTextMonitor.java +++ b/app/src/processing/app/AbstractTextMonitor.java @@ -116,7 +116,7 @@ public void windowGainedFocus(WindowEvent e) { minimumSize.setSize(minimumSize.getWidth() / 3, minimumSize.getHeight()); noLineEndingAlert.setMinimumSize(minimumSize); - lineEndings = new JComboBox(new String[]{tr("No line ending"), tr("Newline"), tr("Carriage return"), tr("Both NL & CR")}); + lineEndings = new JComboBox<>(new String[]{tr("No line ending"), tr("Newline"), tr("Carriage return"), tr("Both NL & CR")}); lineEndings.addActionListener((ActionEvent event) -> { PreferencesData.setInteger("serial.line_ending", lineEndings.getSelectedIndex()); noLineEndingAlert.setForeground(pane.getBackground()); @@ -126,7 +126,7 @@ public void windowGainedFocus(WindowEvent e) { lineEndings.setMaximumSize(lineEndings.getMinimumSize()); - serialRates = new JComboBox(); + serialRates = new JComboBox<>(); for (String rate : serialRateStrings) { serialRates.addItem(rate + " " + tr("baud")); } diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index ef4d9b30a4e..6895c31d0be 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -1870,9 +1870,6 @@ public void handleFontSizeChange(int change) { 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 +/-" @@ -1884,8 +1881,8 @@ public void handleFontSizeChange(int change) { * @param comp - The component to add the listener to. */ public void addEditorFontResizeListeners(Component comp) { - this.addEditorFontResizeMouseWheelListener(comp); - this.addEditorFontResizeKeyListener(comp); + addEditorFontResizeMouseWheelListener(comp); + addEditorFontResizeKeyListener(comp); } /** @@ -1897,20 +1894,17 @@ public void addEditorFontResizeListeners(Component comp) { * @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); - } + comp.addMouseWheelListener(e -> { + if (e.isControlDown()) { + if (e.getWheelRotation() < 0) { + this.handleFontSizeChange(1); } else { - e.getComponent().getParent().dispatchEvent(e); + this.handleFontSizeChange(-1); } - }; - } - comp.addMouseWheelListener(this.editorFontResizeMouseWheelListener); + } else { + e.getComponent().getParent().dispatchEvent(e); + } + }); } /** @@ -1920,29 +1914,26 @@ public void addEditorFontResizeMouseWheelListener(Component comp) { * @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(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 getBoardsCustomMenus() {