From a9e03fa0e75b5b338021de982acbbb8277e08706 Mon Sep 17 00:00:00 2001 From: Fudge Date: Mon, 2 Dec 2019 15:43:23 +0200 Subject: Allow attaching class, method, field, and parameter javadocs (#185) * bring liach pr to modern enigma * bump version * fuck off vscode * switch to COMMENT and write comments before * it was already after, what do you want * oops * put inner classes at the end * remove indents and use all caps * add refreshmappings command * Update src/main/java/cuchaz/enigma/translation/mapping/serde/EnigmaMappingsWriter.java * Delete RefreshEnigmaMappingsCommand.java * Update CommandMain.java * ok --- .../cuchaz/enigma/gui/dialog/JavadocDialog.java | 88 ++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java (limited to 'src/main/java/cuchaz/enigma/gui/dialog') diff --git a/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java b/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java new file mode 100644 index 0000000..84e4d8f --- /dev/null +++ b/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java @@ -0,0 +1,88 @@ +/******************************************************************************* + * Copyright (c) 2015 Jeff Martin. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser General Public + * License v3.0 which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl.html + *
+ * Contributors: + * Jeff Martin - initial API and implementation + ******************************************************************************/ + +package cuchaz.enigma.gui.dialog; + +import cuchaz.enigma.utils.Utils; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; + +public class JavadocDialog { + + private static JavadocDialog instance = null; + + private JFrame frame; + + private JavadocDialog(JFrame parent, JTextArea text, Callback callback) { + // init frame + frame = new JFrame("Edit Javadocs"); + final Container pane = frame.getContentPane(); + pane.setLayout(new BorderLayout()); + + // editor panel + text.setTabSize(2); + pane.add(new JScrollPane(text), BorderLayout.CENTER); + text.addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent event) { + switch (event.getKeyCode()) { + case KeyEvent.VK_ENTER: + if (event.isControlDown()) + callback.closeUi(frame, true); + break; + case KeyEvent.VK_ESCAPE: + callback.closeUi(frame, false); + break; + default: + break; + } + } + }); + + // buttons panel + JPanel buttonsPanel = new JPanel(); + FlowLayout buttonsLayout = new FlowLayout(); + buttonsLayout.setAlignment(FlowLayout.RIGHT); + buttonsPanel.setLayout(buttonsLayout); + buttonsPanel.add(Utils.unboldLabel(new JLabel("Edit javadocs here."))); + JButton cancelButton = new JButton("Cancel"); + cancelButton.addActionListener(event -> { + // close (hide) the dialog + callback.closeUi(frame, false); + }); + buttonsPanel.add(cancelButton); + JButton saveButton = new JButton("Save"); + saveButton.addActionListener(event -> { + // exit enigma + callback.closeUi(frame, true); + }); + buttonsPanel.add(saveButton); + pane.add(buttonsPanel, BorderLayout.SOUTH); + + // show the frame + frame.setSize(600, 400); + frame.setLocationRelativeTo(parent); + frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); + } + + public static void init(JFrame parent, JTextArea area, Callback callback) { + instance = new JavadocDialog(parent, area, callback); + instance.frame.doLayout(); + instance.frame.setVisible(true); + } + + public interface Callback { + void closeUi(JFrame frame, boolean save); + } +} -- cgit v1.2.3