package jalview.jbgui; import jalview.gui.Desktop; import jalview.gui.PDBFetchPanel.PDBSearchOptionList; import jalview.util.MessageManager; import jalview.ws.uimodel.PDBSummaryListModel; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; @SuppressWarnings("serial") public abstract class GPDBFetchPanel extends JPanel { protected String frameTitle = "PDB Sequence Fetcher"; protected JInternalFrame mainFrame = new JInternalFrame(frameTitle); protected JComboBox searchTargetOptions = new JComboBox(); protected JButton ok = new JButton(); protected JButton back = new JButton(); protected JButton cancel = new JButton(); protected JTextField search = new JTextField(20); protected JList jListSearchResult = new JList(); protected JScrollPane searchResultScroller = new JScrollPane( jListSearchResult); private JPanel actionPanel = new JPanel(); private JPanel resultPanel = new JPanel(); private JPanel inputPanel = new JPanel(); private BorderLayout mainLayout = new BorderLayout(); public GPDBFetchPanel() { try { jbInit(); mainFrame.invalidate(); mainFrame.pack(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { back.setFont(new java.awt.Font("Verdana", 0, 12)); back.setText(MessageManager.getString("action.back")); back.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { backActionPerformed(); } }); ok.setFont(new java.awt.Font("Verdana", 0, 12)); ok.setText(MessageManager.getString("action.ok")); ok.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { okActionPerformed(); } }); 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) { cancelActionPerformed(); } }); actionPanel.add(back); actionPanel.add(ok); actionPanel.add(cancel); jListSearchResult .setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); jListSearchResult.setLayoutOrientation(JList.VERTICAL); jListSearchResult.setVisibleRowCount(-1); searchResultScroller.setPreferredSize(new Dimension(500, 300)); searchResultScroller .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); resultPanel.add(searchResultScroller); searchTargetOptions.setFont(new java.awt.Font("Verdana", 0, 12)); searchTargetOptions.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { searchStringAction(); } }); populateSearchOptionCombo(); search.setFont(new java.awt.Font("Verdana", 0, 12)); search.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { searchStringAction(); } @Override public void removeUpdate(DocumentEvent e) { searchStringAction(); } @Override public void changedUpdate(DocumentEvent e) { searchStringAction(); } }); inputPanel.add(searchTargetOptions); inputPanel.add(search); this.setLayout(mainLayout); this.add(inputPanel, java.awt.BorderLayout.NORTH); this.add(resultPanel, 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); } public abstract void searchStringAction(); public abstract void okActionPerformed(); public abstract void backActionPerformed(); public abstract void cancelActionPerformed(); protected abstract void populateSearchOptionCombo(); }