Merge branch 'releases/Release_2_11_3_Branch'
[jalview.git] / src / jalview / jbgui / GStructureViewer.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.jbgui;
22
23 import java.awt.BorderLayout;
24 import java.awt.GridLayout;
25 import java.awt.event.ActionEvent;
26 import java.awt.event.ActionListener;
27
28 import javax.swing.JInternalFrame;
29 import javax.swing.JLabel;
30 import javax.swing.JMenu;
31 import javax.swing.JMenuBar;
32 import javax.swing.JMenuItem;
33 import javax.swing.JPanel;
34 import javax.swing.JRadioButtonMenuItem;
35
36 import jalview.api.structures.JalviewStructureDisplayI;
37 import jalview.gui.ColourMenuHelper.ColourChangeListener;
38 import jalview.util.ImageMaker.TYPE;
39 import jalview.util.MessageManager;
40
41 @SuppressWarnings("serial")
42 public abstract class GStructureViewer extends JInternalFrame
43         implements JalviewStructureDisplayI, ColourChangeListener
44 {
45   // private AAStructureBindingModel bindingModel;
46
47   protected JMenu savemenu;
48
49   protected JMenu viewMenu;
50
51   protected JMenu colourMenu;
52
53   protected JMenu chainMenu;
54
55   protected JMenu hetatmMenu;
56
57   protected JMenu viewerActionMenu;
58
59   protected JMenuItem alignStructs;
60
61   protected JMenuItem fitToWindow;
62
63   protected JRadioButtonMenuItem seqColour;
64
65   protected JRadioButtonMenuItem chainColour;
66
67   protected JRadioButtonMenuItem chargeColour;
68
69   protected JRadioButtonMenuItem viewerColour;
70
71   protected JMenuItem helpItem;
72
73   protected JLabel statusBar;
74
75   protected JPanel statusPanel;
76
77   /**
78    * Constructor
79    */
80   public GStructureViewer()
81   {
82     try
83     {
84       jbInit();
85     } catch (Exception ex)
86     {
87       ex.printStackTrace();
88     }
89   }
90
91   private void jbInit() throws Exception
92   {
93     setFrameIcon(null);
94     setName("jalview-structureviewer");
95
96     JMenuBar menuBar = new JMenuBar();
97     this.setJMenuBar(menuBar);
98
99     JMenu fileMenu = new JMenu();
100     fileMenu.setText(MessageManager.getString("action.file"));
101
102     savemenu = new JMenu();
103     savemenu.setActionCommand(
104             MessageManager.getString("action.save_image"));
105     savemenu.setText(MessageManager.getString("action.save_as"));
106
107     JMenuItem pdbFile = new JMenuItem();
108     pdbFile.setText(MessageManager.getString("label.pdb_file"));
109     pdbFile.addActionListener(new ActionListener()
110     {
111       @Override
112       public void actionPerformed(ActionEvent actionEvent)
113       {
114         pdbFile_actionPerformed();
115       }
116     });
117
118     JMenuItem png = new JMenuItem();
119     png.setText("PNG");
120     png.addActionListener(new ActionListener()
121     {
122       @Override
123       public void actionPerformed(ActionEvent actionEvent)
124       {
125         makePDBImage(TYPE.PNG);
126       }
127     });
128
129     JMenuItem eps = new JMenuItem();
130     eps.setText("EPS");
131     eps.addActionListener(new ActionListener()
132     {
133       @Override
134       public void actionPerformed(ActionEvent actionEvent)
135       {
136         makePDBImage(TYPE.EPS);
137       }
138     });
139
140     JMenuItem viewMapping = new JMenuItem();
141     viewMapping.setText(MessageManager.getString("label.view_mapping"));
142     viewMapping.addActionListener(new ActionListener()
143     {
144       @Override
145       public void actionPerformed(ActionEvent actionEvent)
146       {
147         viewMapping_actionPerformed();
148       }
149     });
150
151     viewMenu = new JMenu();
152     viewMenu.setText(MessageManager.getString("action.view"));
153
154     chainMenu = new JMenu();
155     chainMenu.setText(MessageManager.getString("action.show_chain"));
156
157     hetatmMenu = new JMenu();
158     hetatmMenu.setText(MessageManager.getString("action.show_hetatm"));
159
160     fitToWindow = new JMenuItem();
161     fitToWindow.setText(MessageManager.getString("label.fit_to_window"));
162     fitToWindow.addActionListener(new ActionListener()
163     {
164       @Override
165       public void actionPerformed(ActionEvent actionEvent)
166       {
167         fitToWindow_actionPerformed();
168       }
169     });
170
171     JMenu helpMenu = new JMenu();
172     helpMenu.setText(MessageManager.getString("action.help"));
173     helpItem = new JMenuItem();
174     helpItem.addActionListener(new ActionListener()
175     {
176       @Override
177       public void actionPerformed(ActionEvent actionEvent)
178       {
179         showHelp_actionPerformed();
180       }
181     });
182     alignStructs = new JMenuItem();
183     alignStructs.setText(
184             MessageManager.getString("label.superpose_structures"));
185     alignStructs.addActionListener(new ActionListener()
186     {
187       @Override
188       public void actionPerformed(ActionEvent actionEvent)
189       {
190         alignStructsWithAllAlignPanels();
191       }
192     });
193
194     viewerActionMenu = new JMenu(); // text set in sub-classes
195     viewerActionMenu.setVisible(false);
196     viewerActionMenu.add(alignStructs);
197     colourMenu = new JMenu();
198     colourMenu.setText(MessageManager.getString("label.colours"));
199     fileMenu.add(savemenu);
200     fileMenu.add(viewMapping);
201     savemenu.add(pdbFile);
202     savemenu.add(png);
203     savemenu.add(eps);
204     viewMenu.add(chainMenu);
205     viewMenu.add(hetatmMenu);
206     helpMenu.add(helpItem);
207
208     menuBar.add(fileMenu);
209     menuBar.add(viewMenu);
210     menuBar.add(colourMenu);
211     menuBar.add(viewerActionMenu);
212     menuBar.add(helpMenu);
213
214     statusPanel = new JPanel();
215     statusPanel.setLayout(new GridLayout());
216     this.getContentPane().add(statusPanel, BorderLayout.SOUTH);
217     statusBar = new JLabel();
218     statusPanel.add(statusBar, null);
219   }
220
221   protected void fitToWindow_actionPerformed()
222   {
223     getBinding().focusView();
224   }
225
226   protected void highlightSelection_actionPerformed()
227   {
228   }
229
230   protected void viewerColour_actionPerformed()
231   {
232   }
233
234   protected abstract String alignStructsWithAllAlignPanels();
235
236   public void pdbFile_actionPerformed()
237   {
238
239   }
240
241   public void makePDBImage(TYPE imageType)
242   {
243
244   }
245
246   public void viewMapping_actionPerformed()
247   {
248
249   }
250
251   public void seqColour_actionPerformed()
252   {
253
254   }
255
256   public void chainColour_actionPerformed()
257   {
258
259   }
260
261   public void chargeColour_actionPerformed()
262   {
263
264   }
265
266   public void background_actionPerformed()
267   {
268
269   }
270
271   public void showHelp_actionPerformed()
272   {
273
274   }
275 }