From 3cce6b8033e7ccf3ded022a92b58c402fe8b7469 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Tue, 23 Nov 2021 16:48:11 -0500 Subject: [PATCH] helping Android & copy right-click menu for Lua editor --- .../main/java/com/rusefi/ui/MessagesView.java | 33 ++--------------- .../java/com/rusefi/ui/lua/TextEditor.java | 10 ++++++ .../main/java/com/rusefi/ui/util/UiUtils.java | 36 +++++++++++++++++++ 3 files changed, 49 insertions(+), 30 deletions(-) diff --git a/java_console/ui/src/main/java/com/rusefi/ui/MessagesView.java b/java_console/ui/src/main/java/com/rusefi/ui/MessagesView.java index 2eb8a233b1..4d0541bef9 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/MessagesView.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/MessagesView.java @@ -5,14 +5,11 @@ import com.rusefi.core.EngineState; import com.rusefi.core.MessagesCentral; import com.rusefi.io.CommandQueue; import com.rusefi.ui.storage.Node; +import com.rusefi.ui.util.UiUtils; import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.text.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import java.text.SimpleDateFormat; import java.util.Date; @@ -33,24 +30,7 @@ public class MessagesView { this.config = config; messages.setEditable(false); - JPopupMenu menu = createPopupMenu(); - - messages.addMouseListener(new MouseAdapter() { - @Override - public void mousePressed(MouseEvent e) { - pop(e); - } - - @Override - public void mouseReleased(MouseEvent e) { - pop(e); - } - - private void pop(MouseEvent e) { - if (e.isPopupTrigger()) - menu.show(e.getComponent(), e.getX(), e.getY()); - } - }); + UiUtils.installPopupMenu(createPopupMenu(), messages); StyledDocument d = (StyledDocument) messages.getDocument(); bold = d.addStyle("StyleName", null); @@ -84,14 +64,7 @@ public class MessagesView { menu.add(selectAll); does not work? maybe wrong UI colors since control is not editable? */ - JMenuItem copy = new JMenuItem("Copy"); - copy.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - messages.copy(); - } - }); - menu.add(copy); + menu.add(UiUtils.createCopyMenu(messages)); menu.add(new JPopupMenu.Separator()); diff --git a/java_console/ui/src/main/java/com/rusefi/ui/lua/TextEditor.java b/java_console/ui/src/main/java/com/rusefi/ui/lua/TextEditor.java index a4876c2648..39e3c0227e 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/lua/TextEditor.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/lua/TextEditor.java @@ -1,6 +1,8 @@ package com.rusefi.ui.lua; import com.rusefi.config.generated.Fields; +import com.rusefi.ui.util.UiUtils; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.event.DocumentEvent; @@ -54,6 +56,14 @@ public class TextEditor { bottomArea.add(sizeLabel); installUndoRedoKeystrokes(); + UiUtils.installPopupMenu(createPopupMenu(), textArea); + } + + @NotNull + private JPopupMenu createPopupMenu() { + JPopupMenu menu = new JPopupMenu(); + menu.add(UiUtils.createCopyMenu(textArea)); + return menu; } private void updateSize() { diff --git a/java_console/ui/src/main/java/com/rusefi/ui/util/UiUtils.java b/java_console/ui/src/main/java/com/rusefi/ui/util/UiUtils.java index c1669e5696..48181ce3a5 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/util/UiUtils.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/util/UiUtils.java @@ -7,7 +7,12 @@ import org.jetbrains.annotations.NotNull; import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; +import javax.swing.text.JTextComponent; import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @@ -147,4 +152,35 @@ public class UiUtils { clearButton.setMnemonic('c'); return clearButton; } + + public static void installPopupMenu(JPopupMenu menu, JComponent component) { + component.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + pop(e); + } + + @Override + public void mouseReleased(MouseEvent e) { + pop(e); + } + + private void pop(MouseEvent e) { + if (e.isPopupTrigger()) + menu.show(e.getComponent(), e.getX(), e.getY()); + } + }); + } + + @NotNull + public static JMenuItem createCopyMenu(final JTextComponent control) { + JMenuItem copy = new JMenuItem("Copy"); + copy.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + control.copy(); + } + }); + return copy; + } }