--- /dev/null
+package jalview.jbgui;
+
+import jalview.gui.Desktop;
+import jalview.util.MessageManager;
+import jalview.ws.uimodel.PDBSearchOptionListModel;
+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 GEBIFetchPanel extends JPanel
+{
+ protected String frameTitle = "PDB Sequence Fetcher";
+
+ protected JInternalFrame mainFrame = new JInternalFrame(frameTitle);
+
+ protected JComboBox<PDBSearchOptionListModel> searchFeild = new JComboBox<PDBSearchOptionListModel>();
+
+ protected JButton ok = new JButton();
+
+ protected JButton back = new JButton();
+
+ protected JButton cancel = new JButton();
+
+ protected JTextField search = new JTextField(20);
+
+ protected JList<PDBSummaryListModel> jListSearchResult = new JList<PDBSummaryListModel>();
+
+ 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 GEBIFetchPanel()
+ {
+ 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);
+
+ searchFeild.setFont(new java.awt.Font("Verdana", 0, 12));
+ searchFeild.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ searchStringAction();
+ }
+ });
+
+ PDBSearchOptionListModel.populateCombo(searchFeild);
+
+ 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(searchFeild);
+ 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();
+
+}