org.biojava.nbio.structure.align.gui.DBSearchGUI 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 Nov 3, 2009
* Author: Andreas Prlic
*
*/
package org.biojava.nbio.structure.align.gui;
import org.biojava.nbio.structure.align.StructureAlignment;
import org.biojava.nbio.structure.align.util.ResourceManager;
import org.biojava.nbio.structure.gui.util.PDBUploadPanel;
import org.biojava.nbio.structure.gui.util.ScopSelectPanel;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
public class DBSearchGUI extends JPanel {
/**
*
*/
private static final long serialVersionUID = -5657960663049062301L;
StructureAlignment algorithm;
SelectPDBPanel tab1;
JTabbedPane tabPane;
PDBUploadPanel tab2;
ScopSelectPanel tab3;
JPanel listPane;
JButton abortB;
AlignmentCalcDB alicalc;
JProgressBar progress;
ProgressThreadDrawer drawer;
JTextField outFileLocation;
Boolean useDomainSplit = true;
static final ResourceManager resourceManager = ResourceManager.getResourceManager("ce");
public DBSearchGUI(){
tab1 = new SelectPDBPanel(false);
tab2 = new PDBUploadPanel(false);
tab3 = new ScopSelectPanel(false);
tabPane = new JTabbedPane();
tabPane.addTab("Select PDB ID", null, tab1,"Select PDB ID to align");
tabPane.addTab("Domains",null, tab3,"Domains");
tabPane.addTab("Custom files",null, tab2,"Align your own files.");
listPane = createListPane();
// build up UO
Box vBox = Box.createVerticalBox();
vBox.add(tabPane);
vBox.add(listPane);
//domainSelectPane = createDomainSelectPane();
//vBox.add(domainSelectPane);
//vBox.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
vBox.add(Box.createGlue());
this.add(vBox);
this.setVisible(true);
}
public boolean isDomainSplit(){
return useDomainSplit;
}
public JTabbedPane getTabPane()
{
return tabPane;
}
public void setTabPane(JTabbedPane tabPane)
{
this.tabPane = tabPane;
}
public ScopSelectPanel getScopSelectPanel(){
return tab3;
}
public SelectPDBPanel getSelectPDBPanel(){
return tab1;
}
public PDBUploadPanel getPDBUploadPanel(){
return tab2;
}
public String getOutFileLocation(){
return outFileLocation.getText();
}
private JPanel createListPane() {
//JTabbedPane tabP = new JTabbedPane();
JLabel lable = new JLabel("Select Output Directory");
JPanel dir = new JPanel();
outFileLocation = new JTextField(20);
JButton chB = new JButton("Select");
Box fileSelectBox = Box.createHorizontalBox();
fileSelectBox.add(lable);
fileSelectBox.add(outFileLocation);
fileSelectBox.add(chB);
fileSelectBox.add(Box.createGlue());
Box hBox = Box.createVerticalBox();
hBox.add(fileSelectBox);
Box panel =createDomainSelectPane();
hBox.add(panel);
dir.add(hBox);
chB.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
chooser.setDialogTitle("Select Output Directory");
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//
// disable the "All files" option.
//
chooser.setAcceptAllFileFilterUsed(false);
//
// In response to a button click:
int returnVal = chooser.showSaveDialog(null);
if ( returnVal == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
outFileLocation.setText(file.getPath());
outFileLocation.repaint();
}
}
});
//tabP.addTab("Select Output Directory", null, dir,
// "Configure the folder that will contain the results.");
return dir;
}
private Box createDomainSelectPane() {
useDomainSplit = true;
String[] petStrings = { "Split proteins in Domains", "Use whole chains" };
//Create the combo box, select item at index 4.
//Indices start at 0, so 4 specifies the pig.
JComboBox domainList = new JComboBox(petStrings);
domainList.setSelectedIndex(0);
domainList.setToolTipText("Either align whole chains or SCOP domains and domains assigned with PDP, where no SCOP available.");
domainList.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
JComboBox box = (JComboBox)arg0.getSource();
int index = box.getSelectedIndex();
if ( index == 0)
useDomainSplit = true;
else
useDomainSplit = false;
}
});
JLabel label= new JLabel("Domains:");
Box domainBox = Box.createHorizontalBox();
domainBox.add(label);
domainBox.add(domainList);
domainBox.add(Box.createGlue());
//Box hBox = Box.createHorizontalBox();
//hBox.add(Box.createGlue());
return domainBox;
}
public void notifyCalcFinished(){
if ( drawer != null)
drawer.interrupt();
abortB.setEnabled(false);
progress.setIndeterminate(false);
}
public StructureAlignment getStructureAlignment() {
return algorithm;
}
}