- private void addBrowseField(final MetaInfo<E> info, int nhgap,
- final boolean dir) {
- final JTextField field = new JTextField();
- field.setToolTipText(info.getDescription());
- String value = info.getString(false);
- reload(value);
- field.setText(value);
-
- info.addReloadedListener(new Runnable() {
- @Override
- public void run() {
- String value = info.getString(false);
- reload(value);
- field.setText(value);
- }
- });
- info.addSaveListener(new Runnable() {
- @Override
- public void run() {
- String value = field.getText();
- if (isChanged(value)) {
- info.setString(value);
- }
- }
- });
-
- JButton browseButton = new JButton("...");
- browseButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- JFileChooser chooser = new JFileChooser();
- chooser.setCurrentDirectory(null);
- chooser.setFileSelectionMode(dir ? JFileChooser.DIRECTORIES_ONLY
- : JFileChooser.FILES_ONLY);
- if (chooser.showOpenDialog(ConfigItem.this) == JFileChooser.APPROVE_OPTION) {
- File file = chooser.getSelectedFile();
- if (file != null) {
- String value = file.getAbsolutePath();
- if (isChanged(value)) {
- info.setString(value);
- }
- field.setText(value);
- }
- }
- }
- });
+ /**
+ * Retrieve the associated graphical component that was created with
+ * {@link ConfigItem#createField(int)}.
+ *
+ * @param item
+ * the item number to get for an array of values, or -1 to get
+ * the whole value (has no effect if {@link MetaInfo#isArray()}
+ * is FALSE)
+ *
+ * @return the graphical component
+ */
+ protected JComponent getField(int item) {
+ if (item < 0) {
+ return field;
+ }