3 import jalview.gui.Desktop;
4 import jalview.gui.PDBFetchPanel.PDBSearchOptionList;
5 import jalview.util.MessageManager;
6 import jalview.ws.uimodel.PDBSummaryListModel;
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<PDBSearchOptionList> searchTargetOptions = new JComboBox<PDBSearchOptionList>();
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<PDBSummaryListModel> jListSearchResult = new JList<PDBSummaryListModel>();
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();
57 public GPDBFetchPanel()
62 mainFrame.invalidate();
70 private void jbInit() throws Exception
72 back.setFont(new java.awt.Font("Verdana", 0, 12));
73 back.setText(MessageManager.getString("action.back"));
74 back.addActionListener(new java.awt.event.ActionListener()
76 public void actionPerformed(ActionEvent e)
78 backActionPerformed();
81 ok.setFont(new java.awt.Font("Verdana", 0, 12));
82 ok.setText(MessageManager.getString("action.ok"));
83 ok.addActionListener(new java.awt.event.ActionListener()
85 public void actionPerformed(ActionEvent e)
90 cancel.setFont(new java.awt.Font("Verdana", 0, 12));
91 cancel.setText(MessageManager.getString("action.cancel"));
92 cancel.addActionListener(new java.awt.event.ActionListener()
94 public void actionPerformed(ActionEvent e)
96 cancelActionPerformed();
99 actionPanel.add(back);
101 actionPanel.add(cancel);
104 .setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
105 jListSearchResult.setLayoutOrientation(JList.VERTICAL);
106 jListSearchResult.setVisibleRowCount(-1);
107 searchResultScroller.setPreferredSize(new Dimension(500, 300));
109 .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
110 resultPanel.add(searchResultScroller);
112 searchTargetOptions.setFont(new java.awt.Font("Verdana", 0, 12));
113 searchTargetOptions.addActionListener(new ActionListener()
116 public void actionPerformed(ActionEvent e)
118 searchStringAction();
122 populateSearchOptionCombo();
124 search.setFont(new java.awt.Font("Verdana", 0, 12));
125 search.getDocument().addDocumentListener(new DocumentListener()
128 public void insertUpdate(DocumentEvent e)
130 searchStringAction();
134 public void removeUpdate(DocumentEvent e)
136 searchStringAction();
140 public void changedUpdate(DocumentEvent e)
142 searchStringAction();
146 inputPanel.add(searchTargetOptions);
147 inputPanel.add(search);
150 this.setLayout(mainLayout);
151 this.add(inputPanel, java.awt.BorderLayout.NORTH);
152 this.add(resultPanel, java.awt.BorderLayout.CENTER);
153 this.add(actionPanel, java.awt.BorderLayout.SOUTH);
154 mainFrame.setVisible(true);
155 mainFrame.setContentPane(this);
156 mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
157 Desktop.addInternalFrame(mainFrame, frameTitle, 800, 400);
160 public abstract void searchStringAction();
162 public abstract void okActionPerformed();
164 public abstract void backActionPerformed();
166 public abstract void cancelActionPerformed();
168 protected abstract void populateSearchOptionCombo();