diff --git a/src/main/java/info/augendre/caps_extractor/MainPanel.form b/src/main/java/info/augendre/caps_extractor/MainPanel.form index fe3d30e..0132684 100644 --- a/src/main/java/info/augendre/caps_extractor/MainPanel.form +++ b/src/main/java/info/augendre/caps_extractor/MainPanel.form @@ -1,6 +1,6 @@
- + @@ -8,40 +8,76 @@ - + + - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - +
diff --git a/src/main/java/info/augendre/caps_extractor/MainPanel.java b/src/main/java/info/augendre/caps_extractor/MainPanel.java index 028d81a..a5f47df 100644 --- a/src/main/java/info/augendre/caps_extractor/MainPanel.java +++ b/src/main/java/info/augendre/caps_extractor/MainPanel.java @@ -2,9 +2,14 @@ package info.augendre.caps_extractor; import com.intellij.uiDesigner.core.GridConstraints; import com.intellij.uiDesigner.core.GridLayoutManager; +import com.intellij.uiDesigner.core.Spacer; import javax.swing.*; import java.awt.*; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.StringSelection; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.ResourceBundle; @@ -16,6 +21,7 @@ public class MainPanel { private JTextField inputField; private JPanel contentPanel; private JTextField outputField; + private JButton copyToClipboardButton; private boolean parse; public MainPanel() { @@ -38,6 +44,15 @@ public class MainPanel { } } }); + copyToClipboardButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + String myString = outputField.getText(); + StringSelection stringSelection = new StringSelection(myString); + Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); + clpbrd.setContents(stringSelection, null); + } + }); } private String extractUpperCase(String s) { @@ -72,17 +87,30 @@ public class MainPanel { */ private void $$$setupUI$$$() { contentPanel = new JPanel(); - contentPanel.setLayout(new GridLayoutManager(2, 2, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.setLayout(new GridLayoutManager(3, 3, new Insets(10, 10, 10, 10), -1, -1)); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(2, 2, new Insets(0, 0, 0, 0), -1, -1)); + contentPanel.add(panel1, new GridConstraints(0, 0, 2, 3, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); inputField = new JTextField(); - contentPanel.add(inputField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false)); + panel1.add(inputField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false)); outputField = new JTextField(); - contentPanel.add(outputField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + outputField.setEditable(false); + outputField.setFocusable(false); + panel1.add(outputField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); final JLabel label1 = new JLabel(); this.$$$loadLabelText$$$(label1, ResourceBundle.getBundle("info/augendre/caps_extractor/strings").getString("label.input")); - contentPanel.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel1.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label2 = new JLabel(); this.$$$loadLabelText$$$(label2, ResourceBundle.getBundle("info/augendre/caps_extractor/strings").getString("label.output")); - contentPanel.add(label2, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + panel1.add(label2, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JPanel panel2 = new JPanel(); + panel2.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); + contentPanel.add(panel2, new GridConstraints(2, 1, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + copyToClipboardButton = new JButton(); + this.$$$loadButtonText$$$(copyToClipboardButton, ResourceBundle.getBundle("info/augendre/caps_extractor/strings").getString("button.to_clipboard")); + panel2.add(copyToClipboardButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final Spacer spacer1 = new Spacer(); + contentPanel.add(spacer1, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); label1.setLabelFor(inputField); label2.setLabelFor(outputField); } @@ -114,6 +142,33 @@ public class MainPanel { } } + /** + * @noinspection ALL + */ + private void $$$loadButtonText$$$(AbstractButton component, String text) { + StringBuffer result = new StringBuffer(); + boolean haveMnemonic = false; + char mnemonic = '\0'; + int mnemonicIndex = -1; + for (int i = 0; i < text.length(); i++) { + if (text.charAt(i) == '&') { + i++; + if (i == text.length()) break; + if (!haveMnemonic && text.charAt(i) != '&') { + haveMnemonic = true; + mnemonic = text.charAt(i); + mnemonicIndex = result.length(); + } + } + result.append(text.charAt(i)); + } + component.setText(result.toString()); + if (haveMnemonic) { + component.setMnemonic(mnemonic); + component.setDisplayedMnemonicIndex(mnemonicIndex); + } + } + /** * @noinspection ALL */ diff --git a/src/main/resources/info/augendre/caps_extractor/strings.properties b/src/main/resources/info/augendre/caps_extractor/strings.properties index e56bf5c..2844b01 100644 --- a/src/main/resources/info/augendre/caps_extractor/strings.properties +++ b/src/main/resources/info/augendre/caps_extractor/strings.properties @@ -6,4 +6,5 @@ menu.help=Help plain.title=Caps Extractor help.content=Enter some text in the first box.
\ All the upper case letters will be reflected in the latter box. -plain.help_title=Help \ No newline at end of file +plain.help_title=Help +button.to_clipboard=Copy to clipboard \ No newline at end of file diff --git a/src/main/resources/info/augendre/caps_extractor/strings_fr.properties b/src/main/resources/info/augendre/caps_extractor/strings_fr.properties index a680849..e837d17 100644 --- a/src/main/resources/info/augendre/caps_extractor/strings_fr.properties +++ b/src/main/resources/info/augendre/caps_extractor/strings_fr.properties @@ -6,4 +6,5 @@ menu.help=Aide plain.title=Extracteur de majuscules help.content=Entrez du texte dans le premier champ.
\ Toutes les lettres majuscules seront r\u00E9p\u00E9t\u00E9es dans le second champ. -plain.help_title=Aide \ No newline at end of file +plain.help_title=Aide +button.to_clipboard=Copier dans le presse-papiers \ No newline at end of file