18c33cde5ae2b86a0f98a55382fe20954f7b5007
[jalview.git] / src / jalview / jbgui / GPDBFetchPanel.java
1 package jalview.jbgui;
2
3 import jalview.gui.Desktop;
4 import jalview.gui.PDBFetchPanel.PDBSearchOptionList;
5 import jalview.util.MessageManager;
6 import jalview.ws.uimodel.PDBSummaryListModel;
7
8 import java.awt.BorderLayout;
9 import java.awt.Dimension;
10 import java.awt.event.ActionEvent;
11 import java.awt.event.ActionListener;
12
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;
24
25 @SuppressWarnings("serial")
26 public abstract class GPDBFetchPanel extends JPanel
27 {
28   protected String frameTitle = "PDB Sequence Fetcher";
29
30   protected JInternalFrame mainFrame = new JInternalFrame(frameTitle);
31
32   protected JComboBox<PDBSearchOptionList> searchTargetOptions = new JComboBox<PDBSearchOptionList>();
33
34   protected JButton ok = new JButton();
35
36   protected JButton back = new JButton();
37   
38   protected JButton cancel = new JButton();
39   
40   protected JTextField search = new JTextField(20);
41   
42   protected JList<PDBSummaryListModel> jListSearchResult = new JList<PDBSummaryListModel>();
43
44   protected JScrollPane searchResultScroller = new JScrollPane(
45           jListSearchResult);
46
47   private JPanel actionPanel = new JPanel();
48
49   private JPanel resultPanel = new JPanel();
50
51   private JPanel inputPanel = new JPanel();
52
53   private BorderLayout mainLayout = new BorderLayout();
54
55
56
57   public GPDBFetchPanel()
58   {
59     try
60     {
61       jbInit();
62       mainFrame.invalidate();
63       mainFrame.pack();
64     } catch (Exception e)
65     {
66       e.printStackTrace();
67     }
68   }
69
70   private void jbInit() throws Exception
71   {
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()
75     {
76       public void actionPerformed(ActionEvent e)
77       {
78         backActionPerformed();
79       }
80     });
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()
84     {
85       public void actionPerformed(ActionEvent e)
86       {
87         okActionPerformed();
88       }
89     });
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()
93     {
94       public void actionPerformed(ActionEvent e)
95       {
96         cancelActionPerformed();
97       }
98     });
99     actionPanel.add(back);
100     actionPanel.add(ok);
101     actionPanel.add(cancel);
102
103     jListSearchResult
104             .setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
105     jListSearchResult.setLayoutOrientation(JList.VERTICAL);
106     jListSearchResult.setVisibleRowCount(-1);
107     searchResultScroller.setPreferredSize(new Dimension(500, 300));
108     searchResultScroller
109             .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
110     resultPanel.add(searchResultScroller);
111
112     searchTargetOptions.setFont(new java.awt.Font("Verdana", 0, 12));
113     searchTargetOptions.addActionListener(new ActionListener()
114     {
115       @Override
116       public void actionPerformed(ActionEvent e)
117       {
118         searchStringAction();
119       }
120     });
121
122     populateSearchOptionCombo();
123
124     search.setFont(new java.awt.Font("Verdana", 0, 12));
125     search.getDocument().addDocumentListener(new DocumentListener()
126     {
127       @Override
128       public void insertUpdate(DocumentEvent e)
129       {
130         searchStringAction();
131       }
132
133       @Override
134       public void removeUpdate(DocumentEvent e)
135       {
136         searchStringAction();
137       }
138
139       @Override
140       public void changedUpdate(DocumentEvent e)
141       {
142         searchStringAction();
143       }
144     });
145
146     inputPanel.add(searchTargetOptions);
147     inputPanel.add(search);
148
149
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);
158   }
159
160   public abstract void searchStringAction();
161
162   public abstract void okActionPerformed();
163
164   public abstract void backActionPerformed();
165
166   public abstract void cancelActionPerformed();
167
168   protected abstract void populateSearchOptionCombo();
169
170 }