org.biojava.nbio.structure.align.gui.ConfigPDBInstallPanel Maven / Gradle / Ivy
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
* Created on Apr 6, 2010
* Author: Andreas Prlic
*
*/
package org.biojava.nbio.structure.align.gui;
import org.biojava.nbio.structure.align.util.UserConfiguration;
import org.biojava.nbio.structure.align.webstart.WebStartMain;
import org.biojava.nbio.structure.gui.util.PDBUploadPanel;
import org.biojava.nbio.structure.io.LocalPDBDirectory.FetchBehavior;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
public class ConfigPDBInstallPanel extends JPanel
{
/**
*
*/
private static final long serialVersionUID = -1055193854675583808L;
JCheckBox fromFtp;
JComboBox fileType;
JTextField pdbDir;
private static ConfigPDBInstallPanel instance = new ConfigPDBInstallPanel();
static JDialog dialog;
private ConfigPDBInstallPanel(){
UserConfiguration config = WebStartMain.getWebStartConfig();
fileType = PDBUploadPanel.getFileFormatSelect();
Box vBox = Box.createVerticalBox();
Box hBox = Box.createHorizontalBox();
pdbDir = new JTextField(20);
String conf = System.getProperty(UserConfiguration.PDB_DIR);
if ( conf != null){
pdbDir.setText(conf);
}
JLabel l01 = new JLabel("Directory containing PDBs");
//panel.add(l01);
//panel.add(f);
hBox.add(l01);
hBox.add(pdbDir);
vBox.add(hBox);
if ( config != null) {
pdbDir.setText( config.getPdbFilePath() );
}
Action action = new ChooseDirAction(pdbDir, config);
JButton chooser = new JButton(action);
hBox.add(chooser);
Box hBox3 = Box.createHorizontalBox();
JLabel label2 = new JLabel("Fetch missing PDBs from ftp site:");
fromFtp = new JCheckBox();
fromFtp.setMnemonic(KeyEvent.VK_F);
fromFtp.setSelected(true);
if ( config != null)
fromFtp.setSelected(config.getFetchBehavior() != FetchBehavior.LOCAL_ONLY);
JLabel ftype = new JLabel("File format:");
hBox3.add(Box.createGlue());
hBox3.add(ftype);
hBox3.add(fileType);
hBox3.add(Box.createGlue());
hBox3.add(label2);
hBox3.add(fromFtp);
vBox.add(hBox3);
this.add(vBox);
}
public static void showDialog(){
if ( dialog != null) {
dialog.setVisible(true);
return;
}
dialog = new JDialog();
dialog.setSize(new Dimension(600,300));
Box vBox = Box.createVerticalBox();
vBox.add(instance);
UIManager.LookAndFeelInfo[] lookAndFeels = UIManager.getInstalledLookAndFeels();
JPanel panel = new JPanel();
for(int i = 0; i < lookAndFeels.length; i++){
JButton button = new JButton(lookAndFeels[i].getName());
button.addActionListener(new MyAction(dialog));
panel.add(button);
}
JTabbedPane jTab = new JTabbedPane();
jTab.addTab("Select User Interface", null, panel, "Select the Look and Feel of the application.");
vBox.add(jTab);
vBox.add(Box.createGlue());
JButton apply = new JButton("Apply");
apply.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent event) {
instance.applyValues();
dialog.dispose();
}
});
JButton close = new JButton("Cancel");
close.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent event) {
dialog.dispose();
}
});
Box hBoxb = Box.createHorizontalBox();
hBoxb.add(Box.createGlue());
hBoxb.add(close,BorderLayout.EAST);
hBoxb.add(apply,BorderLayout.EAST);
vBox.add(hBoxb);
dialog.getContentPane().add(vBox);
dialog.setVisible(true);
}
protected void applyValues()
{
UserConfiguration config = WebStartMain.getWebStartConfig();
String dir = pdbDir.getText();
config.setPdbFilePath(dir);
boolean fromFtpF = fromFtp.isSelected();
if(fromFtpF) {
config.setFetchBehavior(FetchBehavior.FETCH_REMEDIATED);
} else {
config.setFetchBehavior(FetchBehavior.LOCAL_ONLY);
}
String fileFormat = (String)fileType.getSelectedItem();
config.setFileFormat(fileFormat);
}
public JCheckBox getFromFtp()
{
return fromFtp;
}
public void setFromFtp(JCheckBox fromFtp)
{
System.out.println(fromFtp);
this.fromFtp = fromFtp;
}
public JTextField getPDBDirField(){
return pdbDir;
}
public void setPDBDirField(JTextField dir){
pdbDir = dir;
}
}
class MyAction implements ActionListener{
JDialog dialog;
public MyAction(JDialog dialog) {
this.dialog= dialog;
}
@Override
@SuppressWarnings("unused")
public void actionPerformed(ActionEvent ae){
Object EventSource = ae.getSource();
String lookAndFeelClassName = null;
UIManager.LookAndFeelInfo[] looks = UIManager.getInstalledLookAndFeels();
for(int i = 0; i < looks.length; i++){
if(ae.getActionCommand().equals(looks[i].getName())){
lookAndFeelClassName = looks[i].getClassName();
break;
}
}
try{
UIManager.setLookAndFeel(lookAndFeelClassName);
SwingUtilities.updateComponentTreeUI(dialog);
SwingUtilities.updateComponentTreeUI( AlignmentGui.getInstanceNoVisibilityChange());
}
catch(Exception e){
JOptionPane.showMessageDialog(dialog, "Can't change look and feel:"
+ lookAndFeelClassName, "Invalid PLAF", JOptionPane.ERROR_MESSAGE);
}
}
}