@Override
public void actionPerformed(ActionEvent e)
{
- if (chimeraPath.getText().trim().length() > 0)
- {
- File f = new File(chimeraPath.getText());
- if (!f.canExecute())
- {
- JOptionPane.showInternalMessageDialog(Desktop.desktop,
- MessageManager.getString("label.invalid_path"),
- MessageManager.getString("label.invalid_name"),
- JOptionPane.ERROR_MESSAGE);
- }
- }
+ validateChimeraPath();
}
});
*/
public void ok_actionPerformed(ActionEvent e)
{
+ if (!validateSettings())
+ {
+ return;
+ }
+
/*
* Save Visual settings
*/
}
/**
+ * Do any necessary validation before saving settings.
+ *
+ * @return
+ */
+ private boolean validateSettings()
+ {
+ if (!validateStructure())
+ {
+ structureTab.requestFocusInWindow();
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ protected boolean validateStructure()
+ {
+ return validateChimeraPath();
+
+ }
+ /**
* DOCUMENT ME!
*/
public void startupFileTextfield_mouseClicked()
userIdWidthlabel.setEnabled(!autoIdWidth.isSelected());
}
+ /**
+ * Returns true if chimera path is to a valid executable, else show an error
+ * dialog.
+ */
+ private boolean validateChimeraPath()
+ {
+ if (chimeraPath.getText().trim().length() > 0)
+ {
+ File f = new File(chimeraPath.getText());
+ if (!f.canExecute())
+ {
+ JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ MessageManager.getString("label.invalid_chimera_path"),
+ MessageManager.getString("label.invalid_name"),
+ JOptionPane.ERROR_MESSAGE);
+ return false;
+ }
+ }
+ return true;
+ }
+
}
import java.awt.BorderLayout;
import java.awt.Color;
+import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
+import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
protected JCheckBox showNpTooltip = new JCheckBox();
/*
- * Annotations tab components
+ * Structure tab and components
*/
+ protected JPanel structureTab;
+
protected JCheckBox structFromPdb = new JCheckBox();
protected JCheckBox useRnaView = new JCheckBox();
*/
private void jbInit() throws Exception
{
- JTabbedPane tabbedPane = new JTabbedPane();
+ final JTabbedPane tabbedPane = new JTabbedPane();
this.setLayout(new BorderLayout());
JPanel okCancelPanel = initOkCancelPanel();
this.add(tabbedPane, BorderLayout.CENTER);
*/
wsTab.setLayout(new BorderLayout());
tabbedPane.add(wsTab, MessageManager.getString("label.web_services"));
+
+ /*
+ * Handler to validate a tab before leaving it - currently only for
+ * Structure.
+ */
+ tabbedPane.addChangeListener(new ChangeListener()
+ {
+ private Component lastTab;
+
+ @Override
+ public void stateChanged(ChangeEvent e)
+ {
+ if (lastTab == structureTab
+ && tabbedPane.getSelectedComponent() != structureTab)
+ {
+ if (!validateStructure())
+ {
+ tabbedPane.setSelectedComponent(structureTab);
+ return;
+ }
+ }
+ lastTab = tabbedPane.getSelectedComponent();
+ }
+
+ });
}
/**
*/
private JPanel initStructureTab()
{
- JPanel structureTab = new JPanel();
+ structureTab = new JPanel();
+
structureTab.setBorder(new TitledBorder(MessageManager
.getString("label.structure_options")));
structureTab.setLayout(null);
chimeraPath.setFont(verdana11);
chimeraPath.setText("");
chimeraPath.setBounds(new Rectangle(160, ypos, 300, height));
+ chimeraPath.addMouseListener(new MouseAdapter()
+ {
+ @Override
+ public void mouseClicked(MouseEvent e)
+ {
+ if (e.getClickCount() == 2)
+ {
+ String chosen = openFileChooser();
+ if (chosen != null)
+ {
+ chimeraPath.setText(chosen);
+ }
+ }
+ }
+ });
structureTab.add(chimeraPath);
+ structureTab.addFocusListener(new FocusAdapter()
+ {
+ @Override
+ public void focusLost(FocusEvent e)
+ {
+ validateStructure(e);
+ }
+
+ });
return structureTab;
}
/**
+ * Show a dialog for the user to choose a file. Returns the chosen path, or
+ * null on Cancel.
+ *
+ * @return
+ */
+ protected String openFileChooser()
+ {
+ String choice = null;
+ JFileChooser chooser = new JFileChooser();
+
+ // chooser.setFileView(new JalviewFileView());
+ chooser.setDialogTitle(MessageManager
+ .getString("label.open_local_file"));
+ chooser.setToolTipText(MessageManager.getString("action.open"));
+
+ int value = chooser.showOpenDialog(this);
+
+ if (value == JFileChooser.APPROVE_OPTION)
+ {
+ choice = chooser.getSelectedFile().getPath();
+ }
+ return choice;
+ }
+
+ /**
+ * Validate the structure tab preferences; if invalid, set focus on this tab.
+ *
+ * @param e
+ */
+ protected boolean validateStructure(FocusEvent e)
+ {
+ if (!validateStructure())
+ {
+ e.getComponent().requestFocusInWindow();
+ return false;
+ }
+ return true;
+ }
+
+ protected boolean validateStructure()
+ {
+ return false;
+ }
+
+ /**
* Initialises the Visual tabbed panel.
*
* @return