142 lines
7 KiB
Java
142 lines
7 KiB
Java
package info.augendre.name_picker;
|
|
|
|
import com.intellij.uiDesigner.core.GridConstraints;
|
|
import com.intellij.uiDesigner.core.GridLayoutManager;
|
|
import com.intellij.uiDesigner.core.Spacer;
|
|
|
|
import javax.swing.*;
|
|
import javax.swing.border.TitledBorder;
|
|
import java.awt.*;
|
|
import java.io.File;
|
|
import java.util.ResourceBundle;
|
|
|
|
/**
|
|
* Created by gaugendre on 18/04/2016 12:57.
|
|
*/
|
|
public class MainPanel {
|
|
private final JFrame mainFrame;
|
|
private JPanel mainPanel;
|
|
private JButton chooseAFileButton;
|
|
private JTextField fileNameField;
|
|
private JButton computeButton;
|
|
private JList<String> validNamesList;
|
|
private JPanel inputPanel;
|
|
private JPanel containerPanel;
|
|
private JScrollPane namesListScrollPane;
|
|
private File namesFile;
|
|
|
|
public MainPanel(JFrame mainFrame) {
|
|
this.mainFrame = mainFrame;
|
|
$$$setupUI$$$();
|
|
chooseAFileButton.addActionListener(new ChooseFileAction(this));
|
|
computeButton.addActionListener(e -> computeResults());
|
|
}
|
|
|
|
public void computeResults() {
|
|
SwingUtilities.invokeLater(new ComputeResults(this));
|
|
}
|
|
|
|
public JPanel getMainPanel() {
|
|
return mainPanel;
|
|
}
|
|
|
|
public File getNamesFile() {
|
|
return namesFile;
|
|
}
|
|
|
|
public void setNamesFile(File namesFile) {
|
|
this.namesFile = namesFile;
|
|
fileNameField.setText(namesFile.getAbsolutePath());
|
|
mainFrame.pack();
|
|
computeResults();
|
|
}
|
|
|
|
public JFrame getMainFrame() {
|
|
return mainFrame;
|
|
}
|
|
|
|
public JList getValidNamesList() {
|
|
return validNamesList;
|
|
}
|
|
|
|
private void createUIComponents() {
|
|
validNamesList = new JList<>();
|
|
}
|
|
|
|
/**
|
|
* Method generated by IntelliJ IDEA GUI Designer
|
|
* >>> IMPORTANT!! <<<
|
|
* DO NOT edit this method OR call it in your code!
|
|
*
|
|
* @noinspection ALL
|
|
*/
|
|
private void $$$setupUI$$$() {
|
|
createUIComponents();
|
|
mainPanel = new JPanel();
|
|
mainPanel.setLayout(new GridLayoutManager(3, 3, new Insets(0, 0, 0, 0), -1, -1));
|
|
containerPanel = new JPanel();
|
|
containerPanel.setLayout(new GridLayoutManager(2, 1, new Insets(0, 0, 0, 0), -1, -1));
|
|
mainPanel.add(containerPanel, new GridConstraints(1, 1, 1, 1, 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));
|
|
inputPanel = new JPanel();
|
|
inputPanel.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1));
|
|
containerPanel.add(inputPanel, new GridConstraints(0, 0, 1, 1, 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));
|
|
fileNameField = new JTextField();
|
|
fileNameField.setEditable(false);
|
|
inputPanel.add(fileNameField, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(250, -1), null, 0, false));
|
|
chooseAFileButton = new JButton();
|
|
this.$$$loadButtonText$$$(chooseAFileButton, ResourceBundle.getBundle("GUI").getString("button.choosefile"));
|
|
inputPanel.add(chooseAFileButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
|
|
computeButton = new JButton();
|
|
this.$$$loadButtonText$$$(computeButton, ResourceBundle.getBundle("GUI").getString("button.compute"));
|
|
inputPanel.add(computeButton, new GridConstraints(0, 2, 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 JPanel panel1 = new JPanel();
|
|
panel1.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
|
|
containerPanel.add(panel1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false));
|
|
panel1.setBorder(BorderFactory.createTitledBorder(ResourceBundle.getBundle("GUI").getString("label.valid_names")));
|
|
namesListScrollPane = new JScrollPane();
|
|
panel1.add(namesListScrollPane, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false));
|
|
namesListScrollPane.setViewportView(validNamesList);
|
|
final Spacer spacer1 = new Spacer();
|
|
mainPanel.add(spacer1, new GridConstraints(1, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_FIXED, 1, null, new Dimension(5, -1), null, 0, false));
|
|
final Spacer spacer2 = new Spacer();
|
|
mainPanel.add(spacer2, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_FIXED, 1, null, new Dimension(5, -1), null, 0, false));
|
|
final Spacer spacer3 = new Spacer();
|
|
mainPanel.add(spacer3, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(-1, 5), null, 1, false));
|
|
final Spacer spacer4 = new Spacer();
|
|
mainPanel.add(spacer4, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(-1, 5), null, 1, false));
|
|
}
|
|
|
|
/**
|
|
* @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
|
|
*/
|
|
public JComponent $$$getRootComponent$$$() {
|
|
return mainPanel;
|
|
}
|
|
}
|