/* * 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; } }