package jalview.jbgui; import jalview.gui.AlignmentPanel; import jalview.gui.Desktop; import jalview.util.MessageManager; import jalview.ws.uimodel.PDBSearchResponse.PDBResponseSummary; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.ListSelectionModel; @SuppressWarnings("serial") public abstract class GStructureChooser extends JPanel implements ItemListener { protected String frameTitle = "Structure Chooser"; protected JInternalFrame mainFrame = new JInternalFrame(frameTitle); protected JComboBox filterOptionsComboBox = new JComboBox(); protected AlignmentPanel ap; protected JLabel resultLabel = new JLabel("Select : "); protected JButton ok = new JButton(); protected JButton cancel = new JButton(); protected JButton pdbFromFile = new JButton(); protected JTextField search = new JTextField(16); protected JPanel actionPanel = new JPanel(); protected JPanel filterPanel = new JPanel(); protected JPanel idInputPanel = new JPanel(); protected JPanel fileChooserPanel = new JPanel(); protected JPanel switchableViewsPanel = new JPanel(new CardLayout()); protected CardLayout switchableViewsLayout = (CardLayout) (switchableViewsPanel .getLayout()); protected BorderLayout mainLayout = new BorderLayout(); protected BorderLayout idInputPanelLayout = new BorderLayout(); protected BorderLayout fileChooserPanelLayout = new BorderLayout(); protected JCheckBox rememberSettings = new JCheckBox("Don't ask me again"); protected JCheckBox invertFilter = new JCheckBox("Invert"); protected ImageIcon loadingImage = new ImageIcon(getClass().getResource( "/images/loading.gif")); protected JLabel loadingImageLabel = new JLabel(loadingImage); protected static final String VIEWS_FILTER = "VIEWS_FILTER"; protected static final String VIEWS_FROM_FILE = "VIEWS_FROM_FILE"; protected static final String VIEWS_ENTER_ID = "VIEWS_ENTER_ID"; protected JList jListFoundStructures = new JList(); // protected JScrollPane foundStructuresScroller = new JScrollPane( // jListFoundStructures); protected JTable summaryTable = new JTable(); protected JScrollPane foundStructuresScroller = new JScrollPane( summaryTable); public GStructureChooser() { try { jbInit(); mainFrame.setVisible(false); mainFrame.invalidate(); mainFrame.pack(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { ok.setFont(new java.awt.Font("Verdana", 0, 12)); ok.setText(MessageManager.getString("action.view")); ok.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { ok_ActionPerformed(); } }); cancel.setFont(new java.awt.Font("Verdana", 0, 12)); cancel.setText(MessageManager.getString("action.cancel")); cancel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { mainFrame.dispose(); } }); pdbFromFile.setFont(new java.awt.Font("Verdana", 0, 12)); pdbFromFile.setText(" Select PDB File "); pdbFromFile.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { pdbFromFile_actionPerformed(); } }); jListFoundStructures .setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); jListFoundStructures.setLayoutOrientation(JList.VERTICAL); jListFoundStructures.setVisibleRowCount(-1); foundStructuresScroller.setPreferredSize(new Dimension(500, 300)); foundStructuresScroller .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); filterOptionsComboBox.setFont(new java.awt.Font("Verdana", 0, 12)); invertFilter.setFont(new java.awt.Font("Verdana", 0, 12)); rememberSettings.setFont(new java.awt.Font("Verdana", 0, 12)); filterOptionsComboBox.addItemListener(this); invertFilter.addItemListener(this); actionPanel.add(rememberSettings); actionPanel.add(ok); actionPanel.add(cancel); filterPanel.add(resultLabel); filterPanel.add(filterOptionsComboBox); loadingImageLabel.setVisible(false); filterPanel.add(loadingImageLabel); filterPanel.add(invertFilter); idInputPanel.setLayout(new FlowLayout()); idInputPanel.add(search); fileChooserPanel.setLayout(new FlowLayout()); fileChooserPanel.add(pdbFromFile); switchableViewsPanel.add(fileChooserPanel, VIEWS_FROM_FILE); switchableViewsPanel.add(idInputPanel, VIEWS_ENTER_ID); switchableViewsPanel.add(foundStructuresScroller, VIEWS_FILTER); this.setLayout(mainLayout); this.add(filterPanel, java.awt.BorderLayout.NORTH); this.add(switchableViewsPanel, java.awt.BorderLayout.CENTER); this.add(actionPanel, java.awt.BorderLayout.SOUTH); mainFrame.setVisible(true); mainFrame.setContentPane(this); mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Desktop.addInternalFrame(mainFrame, frameTitle, 800, 400); } private ImageIcon scaleImageIcone(ImageIcon imageIcon, int width, int height) { Image image = imageIcon.getImage(); // transform it Image newimg = image.getScaledInstance(width, height, java.awt.Image.SCALE_SMOOTH); // scale it the smooth way return new ImageIcon(newimg); } @Override public void itemStateChanged(ItemEvent e) { stateChanged(e); } public class FilterOptions { private String name; private String value; private String view; public FilterOptions(String name, String value, String view) { this.name = name; this.value = value; this.view = view; } // public FilterOptions(PDBDocField field, String view) // { // this.name = "Best " + field.getName(); // this.value = field.getCode(); // this.view = view; // } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getView() { return view; } public void setView(String view) { this.view = view; } public String toString() { return this.name; } } protected abstract void stateChanged(ItemEvent e); protected abstract void updateCurrentView(); protected abstract void ok_ActionPerformed(); protected abstract void populateFilterOptions(); protected abstract void pdbFromFile_actionPerformed(); }