3 import jalview.gui.Desktop;
4 import jalview.util.MessageManager;
5 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
6 import jalview.ws.uimodel.PDBSearchResponse.PDBResponseSummary;
8 import java.awt.BorderLayout;
9 import java.awt.Dimension;
10 import java.awt.event.ActionEvent;
11 import java.awt.event.ActionListener;
13 import javax.swing.JButton;
14 import javax.swing.JComboBox;
15 import javax.swing.JFrame;
16 import javax.swing.JInternalFrame;
17 import javax.swing.JList;
18 import javax.swing.JPanel;
19 import javax.swing.JScrollPane;
20 import javax.swing.JTextField;
21 import javax.swing.ListSelectionModel;
22 import javax.swing.event.DocumentEvent;
23 import javax.swing.event.DocumentListener;
25 @SuppressWarnings("serial")
26 public abstract class GPDBFetchPanel extends JPanel
28 protected String frameTitle = "PDB Sequence Fetcher";
30 protected JInternalFrame mainFrame = new JInternalFrame(frameTitle);
32 protected JComboBox<PDBDocField> searchTargetOptions = new JComboBox<PDBDocField>();
34 protected JButton ok = new JButton();
36 protected JButton back = new JButton();
38 protected JButton cancel = new JButton();
40 protected JTextField search = new JTextField(20);
42 protected JList<PDBResponseSummary> jListSearchResult = new JList<PDBResponseSummary>();
44 protected JScrollPane searchResultScroller = new JScrollPane(
47 private JPanel actionPanel = new JPanel();
49 private JPanel resultPanel = new JPanel();
51 private JPanel inputPanel = new JPanel();
53 private BorderLayout mainLayout = new BorderLayout();
55 public GPDBFetchPanel()
60 mainFrame.invalidate();
68 private void jbInit() throws Exception
70 back.setFont(new java.awt.Font("Verdana", 0, 12));
71 back.setText(MessageManager.getString("action.back"));
72 back.addActionListener(new java.awt.event.ActionListener()
74 public void actionPerformed(ActionEvent e)
76 backActionPerformed();
79 ok.setFont(new java.awt.Font("Verdana", 0, 12));
80 ok.setText(MessageManager.getString("action.ok"));
81 ok.addActionListener(new java.awt.event.ActionListener()
83 public void actionPerformed(ActionEvent e)
88 cancel.setFont(new java.awt.Font("Verdana", 0, 12));
89 cancel.setText(MessageManager.getString("action.cancel"));
90 cancel.addActionListener(new java.awt.event.ActionListener()
92 public void actionPerformed(ActionEvent e)
94 cancelActionPerformed();
97 actionPanel.add(back);
99 actionPanel.add(cancel);
102 .setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
103 jListSearchResult.setLayoutOrientation(JList.VERTICAL);
104 jListSearchResult.setVisibleRowCount(-1);
105 searchResultScroller.setPreferredSize(new Dimension(500, 300));
107 .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
108 resultPanel.add(searchResultScroller);
110 searchTargetOptions.setFont(new java.awt.Font("Verdana", 0, 12));
111 searchTargetOptions.addActionListener(new ActionListener()
114 public void actionPerformed(ActionEvent e)
116 searchStringAction();
120 populateSearchOptionComboBox();
122 search.setFont(new java.awt.Font("Verdana", 0, 12));
123 search.getDocument().addDocumentListener(new DocumentListener()
126 public void insertUpdate(DocumentEvent e)
128 searchStringAction();
132 public void removeUpdate(DocumentEvent e)
134 searchStringAction();
138 public void changedUpdate(DocumentEvent e)
140 searchStringAction();
144 inputPanel.add(searchTargetOptions);
145 inputPanel.add(search);
147 this.setLayout(mainLayout);
148 this.add(inputPanel, java.awt.BorderLayout.NORTH);
149 this.add(resultPanel, java.awt.BorderLayout.CENTER);
150 this.add(actionPanel, java.awt.BorderLayout.SOUTH);
151 mainFrame.setVisible(true);
152 mainFrame.setContentPane(this);
153 mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
154 Desktop.addInternalFrame(mainFrame, frameTitle, 800, 400);
157 public abstract void searchStringAction();
159 public abstract void okActionPerformed();
161 public abstract void backActionPerformed();
163 public abstract void cancelActionPerformed();
165 protected abstract void populateSearchOptionComboBox();