-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.appletgui;
-
-import jalview.bin.JalviewLite;
-import jalview.datamodel.Alignment;
-import jalview.datamodel.AlignmentView;
-import jalview.datamodel.ColumnSelection;
-import jalview.datamodel.SeqCigar;
-import jalview.datamodel.SequenceI;
-import jalview.util.MessageManager;
-import jalview.viewmodel.PCAModel;
-
-import java.awt.BorderLayout;
-import javax.swing.JButton;
-import javax.swing.JCheckBoxMenuItem;
-import java.awt.Color;
-import java.awt.FlowLayout;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-
-public class PCAPanel extends EmbmenuFrame implements Runnable,
- ActionListener, ItemListener
-{
- RotatableCanvas rc;
-
- AlignViewport av;
-
- PCAModel pcaModel;
-
- int top = 0;
-
- public PCAPanel(AlignViewport av)
- {
- try
- {
- jbInit();
- } catch (Exception e)
- {
- e.printStackTrace();
- }
-
- for (int i = 1; i < 8; i++)
- {
- xCombobox.addItem("dim " + i);
- yCombobox.addItem("dim " + i);
- zCombobox.addItem("dim " + i);
- }
-
- this.av = av;
- boolean selected = av.getSelectionGroup() != null
- && av.getSelectionGroup().getSize() > 0;
- AlignmentView seqstrings = av.getAlignmentView(selected);
- boolean nucleotide = av.getAlignment().isNucleotide();
- SequenceI[] seqs;
- if (!selected)
- {
- seqs = av.getAlignment().getSequencesArray();
- }
- else
- {
- seqs = av.getSelectionGroup().getSequencesInOrder(av.getAlignment());
- }
- SeqCigar sq[] = seqstrings.getSequences();
- int length = sq[0].getWidth();
-
- for (int i = 0; i < seqs.length; i++)
- {
- if (sq[i].getWidth() != length)
- {
- System.out
- .println("Sequences must be equal length for PCA analysis");
- return;
- }
- }
- pcaModel = new PCAModel(seqstrings, seqs, nucleotide);
-
- rc = new RotatableCanvas(av);
- embedMenuIfNeeded(rc);
- add(rc, BorderLayout.CENTER);
-
- JalviewLite.addFrame(this,
- MessageManager.getString("label.principal_component_analysis"),
- 475, 400);
-
- Thread worker = new Thread(this);
- worker.start();
- }
-
- /**
- * DOCUMENT ME!
- */
- public void run()
- {
- // TODO progress indicator
- calcSettings.setEnabled(false);
- rc.setEnabled(false);
- try
- {
- nuclSetting.setState(pcaModel.isNucleotide());
- protSetting.setState(!pcaModel.isNucleotide());
- pcaModel.run();
- // ////////////////
- xCombobox.select(0);
- yCombobox.select(1);
- zCombobox.select(2);
-
- pcaModel.updateRc(rc);
- // rc.invalidate();
- top = pcaModel.getTop();
- } catch (OutOfMemoryError x)
- {
- System.err.println("Out of memory when calculating PCA.");
- return;
- }
- calcSettings.setEnabled(true);
-
- // TODO revert progress indicator
- rc.setEnabled(true);
- rc.repaint();
- this.repaint();
- }
-
- void doDimensionChange()
- {
- if (top == 0)
- {
- return;
- }
-
- int dim1 = top - xCombobox.getSelectedIndex();
- int dim2 = top - yCombobox.getSelectedIndex();
- int dim3 = top - zCombobox.getSelectedIndex();
- pcaModel.updateRcView(dim1, dim2, dim3);
- rc.img = null;
- rc.rotmat.setIdentity();
- rc.initAxes();
- rc.paint(rc.getGraphics());
- }
-
- public void actionPerformed(ActionEvent evt)
- {
- if (evt.getSource() == inputData)
- {
- showOriginalData();
- }
- if (evt.getSource() == resetButton)
- {
- xCombobox.select(0);
- yCombobox.select(1);
- zCombobox.select(2);
- doDimensionChange();
- }
- if (evt.getSource() == values)
- {
- values_actionPerformed();
- }
- }
-
- public void itemStateChanged(ItemEvent evt)
- {
- if (evt.getSource() == xCombobox)
- {
- xCombobox_actionPerformed();
- }
- else if (evt.getSource() == yCombobox)
- {
- yCombobox_actionPerformed();
- }
- else if (evt.getSource() == zCombobox)
- {
- zCombobox_actionPerformed();
- }
- else if (evt.getSource() == labels)
- {
- labels_itemStateChanged(evt);
- }
- else if (evt.getSource() == nuclSetting)
- {
- if (!pcaModel.isNucleotide())
- {
- pcaModel.setNucleotide(true);
- new Thread(this).start();
- }
- }
- else if (evt.getSource() == protSetting)
- {
- if (pcaModel.isNucleotide())
- {
- pcaModel.setNucleotide(false);
- new Thread(this).start();
- }
- }
- }
-
- protected void xCombobox_actionPerformed()
- {
- doDimensionChange();
- }
-
- protected void yCombobox_actionPerformed()
- {
- doDimensionChange();
- }
-
- protected void zCombobox_actionPerformed()
- {
- doDimensionChange();
- }
-
- public void values_actionPerformed()
- {
-
- CutAndPasteTransfer cap = new CutAndPasteTransfer(false, null);
- JFrame frame = new JFrame();
- frame.add(cap);
- JalviewLite.addFrame(frame,
- MessageManager.getString("label.pca_details"), 500, 500);
-
- cap.setText(pcaModel.getDetails());
- }
-
- void showOriginalData()
- {
- // decide if av alignment is sufficiently different to original data to
- // warrant a new window to be created
- // create new alignmnt window with hidden regions (unhiding hidden regions
- // yields unaligned seqs)
- // or create a selection box around columns in alignment view
- // test Alignment(SeqCigar[])
- char gc = '-';
- try
- {
- // we try to get the associated view's gap character
- // but this may fail if the view was closed...
- gc = av.getGapCharacter();
- } catch (Exception ex)
- {
- }
- ;
- Object[] alAndColsel = pcaModel.getSeqtrings()
- .getAlignmentAndColumnSelection(gc);
-
- if (alAndColsel != null && alAndColsel[0] != null)
- {
- Alignment al = new Alignment((SequenceI[]) alAndColsel[0]);
- AlignFrame af = new AlignFrame(al, av.applet,
- "Original Data for PCA", false);
-
- af.viewport.setHiddenColumns((ColumnSelection) alAndColsel[1]);
- }
- }
-
- public void labels_itemStateChanged(ItemEvent itemEvent)
- {
- rc.showLabels(labels.isSelected());
- }
-
- JPanel jPanel2 = new JPanel();
-
- JLabel jLabel1 = new JLabel();
-
- JLabel jLabel2 = new JLabel();
-
- JLabel jLabel3 = new JLabel();
-
- protected Choice xCombobox = new Choice();
-
- protected Choice yCombobox = new Choice();
-
- protected Choice zCombobox = new Choice();
-
- protected JButton resetButton = new JButton();
-
- FlowLayout flowLayout1 = new FlowLayout();
-
- BorderLayout borderLayout1 = new BorderLayout();
-
- JMenuBar menuBar1 = new JMenuBar();
-
- JMenu menu1 = new JMenu();
-
- JMenu menu2 = new JMenu();
-
- JMenu calcSettings = new JMenu();
-
- protected JCheckBoxMenuItem labels = new JCheckBoxMenuItem();
-
- protected JCheckBoxMenuItem protSetting = new JCheckBoxMenuItem();
-
- protected JCheckBoxMenuItem nuclSetting = new JCheckBoxMenuItem();
-
- JMenuItem values = new JMenuItem();
-
- JMenuItem inputData = new JMenuItem();
-
- private void jbInit() throws Exception
- {
- this.setLayout(borderLayout1);
- jPanel2.setLayout(flowLayout1);
- jLabel1.setFont(new java.awt.Font("Verdana", 0, 12));
- jLabel1.setText("x=");
- jLabel2.setFont(new java.awt.Font("Verdana", 0, 12));
- jLabel2.setText("y=");
- jLabel3.setFont(new java.awt.Font("Verdana", 0, 12));
- jLabel3.setText("z=");
- jPanel2.setBackground(Color.white);
- zCombobox.setFont(new java.awt.Font("Verdana", 0, 12));
- zCombobox.addItemListener(this);
- yCombobox.setFont(new java.awt.Font("Verdana", 0, 12));
- yCombobox.addItemListener(this);
- xCombobox.setFont(new java.awt.Font("Verdana", 0, 12));
- xCombobox.addItemListener(this);
- resetButton.setFont(new java.awt.Font("Verdana", 0, 12));
- resetButton.setLabel(MessageManager.getString("action.reset"));
- resetButton.addActionListener(this);
- this.setJMenuBar(menuBar1);
- menu1.setLabel(MessageManager.getString("action.file"));
- menu2.setLabel(MessageManager.getString("action.view"));
- calcSettings.setLabel(MessageManager.getString("action.change_params"));
- labels.setLabel(MessageManager.getString("label.labels"));
- labels.addItemListener(this);
- values.setLabel(MessageManager.getString("label.output_values"));
- values.addActionListener(this);
- inputData.setLabel(MessageManager.getString("label.input_data"));
- nuclSetting.setLabel(MessageManager
- .getString("label.nucleotide_matrix"));
- nuclSetting.addItemListener(this);
- protSetting.setLabel(MessageManager.getString("label.protein_matrix"));
- protSetting.addItemListener(this);
- this.add(jPanel2, BorderLayout.SOUTH);
- jPanel2.add(jLabel1, null);
- jPanel2.add(xCombobox, null);
- jPanel2.add(jLabel2, null);
- jPanel2.add(yCombobox, null);
- jPanel2.add(jLabel3, null);
- jPanel2.add(zCombobox, null);
- jPanel2.add(resetButton, null);
- menuBar1.add(menu1);
- menuBar1.add(menu2);
- menuBar1.add(calcSettings);
- menu2.add(labels);
- menu1.add(values);
- menu1.add(inputData);
- calcSettings.add(nuclSetting);
- calcSettings.add(protSetting);
- inputData.addActionListener(this);
- }
-
-}
+/*\r
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)\r
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors\r
+ * \r
+ * This file is part of Jalview.\r
+ * \r
+ * Jalview is free software: you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License \r
+ * as published by the Free Software Foundation, either version 3\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * Jalview is distributed in the hope that it will be useful, but \r
+ * WITHOUT ANY WARRANTY; without even the implied warranty \r
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
+ * PURPOSE. See the GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.\r
+ * The Jalview Authors are detailed in the 'AUTHORS' file.\r
+ */\r
+package jalview.appletgui;\r
+\r
+import jalview.bin.JalviewLite;\r
+import jalview.datamodel.Alignment;\r
+import jalview.datamodel.AlignmentView;\r
+import jalview.datamodel.ColumnSelection;\r
+import jalview.datamodel.SeqCigar;\r
+import jalview.datamodel.SequenceI;\r
+import jalview.util.MessageManager;\r
+import jalview.viewmodel.PCAModel;\r
+\r
+import java.awt.BorderLayout;\r
+import javax.swing.JButton;\r
+import javax.swing.JCheckBoxMenuItem;\r
+import java.awt.Color;\r
+import java.awt.FlowLayout;\r
+import javax.swing.JFrame;\r
+import javax.swing.JLabel;\r
+import javax.swing.JMenu;\r
+import javax.swing.JMenuBar;\r
+import javax.swing.JMenuItem;\r
+import javax.swing.JPanel;\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ActionListener;\r
+import java.awt.event.ItemEvent;\r
+import java.awt.event.ItemListener;\r
+\r
+public class PCAPanel extends EmbmenuFrame implements Runnable,\r
+ ActionListener, ItemListener\r
+{\r
+ RotatableCanvas rc;\r
+\r
+ AlignViewport av;\r
+\r
+ PCAModel pcaModel;\r
+\r
+ int top = 0;\r
+\r
+ public PCAPanel(AlignViewport av)\r
+ {\r
+ try\r
+ {\r
+ jbInit();\r
+ } catch (Exception e)\r
+ {\r
+ e.printStackTrace();\r
+ }\r
+\r
+ for (int i = 1; i < 8; i++)\r
+ {\r
+ xCombobox.addItem("dim " + i);\r
+ yCombobox.addItem("dim " + i);\r
+ zCombobox.addItem("dim " + i);\r
+ }\r
+\r
+ this.av = av;\r
+ boolean selected = av.getSelectionGroup() != null\r
+ && av.getSelectionGroup().getSize() > 0;\r
+ AlignmentView seqstrings = av.getAlignmentView(selected);\r
+ boolean nucleotide = av.getAlignment().isNucleotide();\r
+ SequenceI[] seqs;\r
+ if (!selected)\r
+ {\r
+ seqs = av.getAlignment().getSequencesArray();\r
+ }\r
+ else\r
+ {\r
+ seqs = av.getSelectionGroup().getSequencesInOrder(av.getAlignment());\r
+ }\r
+ SeqCigar sq[] = seqstrings.getSequences();\r
+ int length = sq[0].getWidth();\r
+\r
+ for (int i = 0; i < seqs.length; i++)\r
+ {\r
+ if (sq[i].getWidth() != length)\r
+ {\r
+ System.out\r
+ .println("Sequences must be equal length for PCA analysis");\r
+ return;\r
+ }\r
+ }\r
+ pcaModel = new PCAModel(seqstrings, seqs, nucleotide);\r
+\r
+ rc = new RotatableCanvas(av);\r
+ embedMenuIfNeeded(rc);\r
+ add(rc, BorderLayout.CENTER);\r
+\r
+ JalviewLite.addFrame(this,\r
+ MessageManager.getString("label.principal_component_analysis"),\r
+ 475, 400);\r
+\r
+ Thread worker = new Thread(this);\r
+ worker.start();\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ */\r
+ public void run()\r
+ {\r
+ // TODO progress indicator\r
+ calcSettings.setEnabled(false);\r
+ rc.setEnabled(false);\r
+ try\r
+ {\r
+ nuclSetting.setState(pcaModel.isNucleotide());\r
+ protSetting.setState(!pcaModel.isNucleotide());\r
+ pcaModel.run();\r
+ // ////////////////\r
+ xCombobox.select(0);\r
+ yCombobox.select(1);\r
+ zCombobox.select(2);\r
+\r
+ pcaModel.updateRc(rc);\r
+ // rc.invalidate();\r
+ top = pcaModel.getTop();\r
+ } catch (OutOfMemoryError x)\r
+ {\r
+ System.err.println("Out of memory when calculating PCA.");\r
+ return;\r
+ }\r
+ calcSettings.setEnabled(true);\r
+\r
+ // TODO revert progress indicator\r
+ rc.setEnabled(true);\r
+ rc.repaint();\r
+ this.repaint();\r
+ }\r
+\r
+ void doDimensionChange()\r
+ {\r
+ if (top == 0)\r
+ {\r
+ return;\r
+ }\r
+\r
+ int dim1 = top - xCombobox.getSelectedIndex();\r
+ int dim2 = top - yCombobox.getSelectedIndex();\r
+ int dim3 = top - zCombobox.getSelectedIndex();\r
+ pcaModel.updateRcView(dim1, dim2, dim3);\r
+ rc.img = null;\r
+ rc.rotmat.setIdentity();\r
+ rc.initAxes();\r
+ rc.paint(rc.getGraphics());\r
+ }\r
+\r
+ public void actionPerformed(ActionEvent evt)\r
+ {\r
+ if (evt.getSource() == inputData)\r
+ {\r
+ showOriginalData();\r
+ }\r
+ if (evt.getSource() == resetButton)\r
+ {\r
+ xCombobox.select(0);\r
+ yCombobox.select(1);\r
+ zCombobox.select(2);\r
+ doDimensionChange();\r
+ }\r
+ if (evt.getSource() == values)\r
+ {\r
+ values_actionPerformed();\r
+ }\r
+ }\r
+\r
+ public void itemStateChanged(ItemEvent evt)\r
+ {\r
+ if (evt.getSource() == xCombobox)\r
+ {\r
+ xCombobox_actionPerformed();\r
+ }\r
+ else if (evt.getSource() == yCombobox)\r
+ {\r
+ yCombobox_actionPerformed();\r
+ }\r
+ else if (evt.getSource() == zCombobox)\r
+ {\r
+ zCombobox_actionPerformed();\r
+ }\r
+ else if (evt.getSource() == labels)\r
+ {\r
+ labels_itemStateChanged(evt);\r
+ }\r
+ else if (evt.getSource() == nuclSetting)\r
+ {\r
+ if (!pcaModel.isNucleotide())\r
+ {\r
+ pcaModel.setNucleotide(true);\r
+ new Thread(this).start();\r
+ }\r
+ }\r
+ else if (evt.getSource() == protSetting)\r
+ {\r
+ if (pcaModel.isNucleotide())\r
+ {\r
+ pcaModel.setNucleotide(false);\r
+ new Thread(this).start();\r
+ }\r
+ }\r
+ }\r
+\r
+ protected void xCombobox_actionPerformed()\r
+ {\r
+ doDimensionChange();\r
+ }\r
+\r
+ protected void yCombobox_actionPerformed()\r
+ {\r
+ doDimensionChange();\r
+ }\r
+\r
+ protected void zCombobox_actionPerformed()\r
+ {\r
+ doDimensionChange();\r
+ }\r
+\r
+ public void values_actionPerformed()\r
+ {\r
+\r
+ CutAndPasteTransfer cap = new CutAndPasteTransfer(false, null);\r
+ JFrame frame = new JFrame();\r
+ frame.add(cap);\r
+ JalviewLite.addFrame(frame,\r
+ MessageManager.getString("label.pca_details"), 500, 500);\r
+\r
+ cap.setText(pcaModel.getDetails());\r
+ }\r
+\r
+ void showOriginalData()\r
+ {\r
+ // decide if av alignment is sufficiently different to original data to\r
+ // warrant a new window to be created\r
+ // create new alignmnt window with hidden regions (unhiding hidden regions\r
+ // yields unaligned seqs)\r
+ // or create a selection box around columns in alignment view\r
+ // test Alignment(SeqCigar[])\r
+ char gc = '-';\r
+ try\r
+ {\r
+ // we try to get the associated view's gap character\r
+ // but this may fail if the view was closed...\r
+ gc = av.getGapCharacter();\r
+ } catch (Exception ex)\r
+ {\r
+ }\r
+ ;\r
+ Object[] alAndColsel = pcaModel.getSeqtrings()\r
+ .getAlignmentAndColumnSelection(gc);\r
+\r
+ if (alAndColsel != null && alAndColsel[0] != null)\r
+ {\r
+ Alignment al = new Alignment((SequenceI[]) alAndColsel[0]);\r
+ AlignFrame af = new AlignFrame(al, av.applet,\r
+ "Original Data for PCA", false);\r
+\r
+ af.viewport.setHiddenColumns((ColumnSelection) alAndColsel[1]);\r
+ }\r
+ }\r
+\r
+ public void labels_itemStateChanged(ItemEvent itemEvent)\r
+ {\r
+ rc.showLabels(labels.isSelected());\r
+ }\r
+\r
+ JPanel jPanel2 = new JPanel();\r
+\r
+ JLabel jLabel1 = new JLabel();\r
+\r
+ JLabel jLabel2 = new JLabel();\r
+\r
+ JLabel jLabel3 = new JLabel();\r
+\r
+ protected Choice xCombobox = new Choice();\r
+\r
+ protected Choice yCombobox = new Choice();\r
+\r
+ protected Choice zCombobox = new Choice();\r
+\r
+ protected JButton resetButton = new JButton();\r
+\r
+ FlowLayout flowLayout1 = new FlowLayout();\r
+\r
+ BorderLayout borderLayout1 = new BorderLayout();\r
+\r
+ JMenuBar menuBar1 = new JMenuBar();\r
+\r
+ JMenu menu1 = new JMenu();\r
+\r
+ JMenu menu2 = new JMenu();\r
+\r
+ JMenu calcSettings = new JMenu();\r
+\r
+ protected JCheckBoxMenuItem labels = new JCheckBoxMenuItem();\r
+\r
+ protected JCheckBoxMenuItem protSetting = new JCheckBoxMenuItem();\r
+\r
+ protected JCheckBoxMenuItem nuclSetting = new JCheckBoxMenuItem();\r
+\r
+ JMenuItem values = new JMenuItem();\r
+\r
+ JMenuItem inputData = new JMenuItem();\r
+\r
+ private void jbInit() throws Exception\r
+ {\r
+ this.setLayout(borderLayout1);\r
+ jPanel2.setLayout(flowLayout1);\r
+ jLabel1.setFont(new java.awt.Font("Verdana", 0, 12));\r
+ jLabel1.setText("x=");\r
+ jLabel2.setFont(new java.awt.Font("Verdana", 0, 12));\r
+ jLabel2.setText("y=");\r
+ jLabel3.setFont(new java.awt.Font("Verdana", 0, 12));\r
+ jLabel3.setText("z=");\r
+ jPanel2.setBackground(Color.white);\r
+ zCombobox.setFont(new java.awt.Font("Verdana", 0, 12));\r
+ zCombobox.addItemListener(this);\r
+ yCombobox.setFont(new java.awt.Font("Verdana", 0, 12));\r
+ yCombobox.addItemListener(this);\r
+ xCombobox.setFont(new java.awt.Font("Verdana", 0, 12));\r
+ xCombobox.addItemListener(this);\r
+ resetButton.setFont(new java.awt.Font("Verdana", 0, 12));\r
+ resetButton.setLabel(MessageManager.getString("action.reset"));\r
+ resetButton.addActionListener(this);\r
+ this.setJMenuBar(menuBar1);\r
+ menu1.setLabel(MessageManager.getString("action.file"));\r
+ menu2.setLabel(MessageManager.getString("action.view"));\r
+ calcSettings.setLabel(MessageManager.getString("action.change_params"));\r
+ labels.setLabel(MessageManager.getString("label.labels"));\r
+ labels.addItemListener(this);\r
+ values.setLabel(MessageManager.getString("label.output_values"));\r
+ values.addActionListener(this);\r
+ inputData.setLabel(MessageManager.getString("label.input_data"));\r
+ nuclSetting.setLabel(MessageManager\r
+ .getString("label.nucleotide_matrix"));\r
+ nuclSetting.addItemListener(this);\r
+ protSetting.setLabel(MessageManager.getString("label.protein_matrix"));\r
+ protSetting.addItemListener(this);\r
+ this.add(jPanel2, BorderLayout.SOUTH);\r
+ jPanel2.add(jLabel1, null);\r
+ jPanel2.add(xCombobox, null);\r
+ jPanel2.add(jLabel2, null);\r
+ jPanel2.add(yCombobox, null);\r
+ jPanel2.add(jLabel3, null);\r
+ jPanel2.add(zCombobox, null);\r
+ jPanel2.add(resetButton, null);\r
+ menuBar1.add(menu1);\r
+ menuBar1.add(menu2);\r
+ menuBar1.add(calcSettings);\r
+ menu2.add(labels);\r
+ menu1.add(values);\r
+ menu1.add(inputData);\r
+ calcSettings.add(nuclSetting);\r
+ calcSettings.add(protSetting);\r
+ inputData.addActionListener(this);\r
+ }\r
+\r
+}\r