/* Copyright (C) 2011 Diego Darriba, David Posada This program 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. This program 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 this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package es.uvigo.darwin.jmodeltest.gui; import java.awt.Component; import java.awt.Dimension; import java.awt.Point; import javax.swing.JLayeredPane; import javax.swing.JMenuBar; import es.uvigo.darwin.jmodeltest.ModelTest; import es.uvigo.darwin.jmodeltest.exe.RunConsense; import es.uvigo.darwin.jmodeltest.selection.InformationCriterion; public class Frame_Consense extends JModelTestFrame { private static final long serialVersionUID = 201104031005L; javax.swing.JPanel PanelConsense = new javax.swing.JPanel(); javax.swing.JButton RunButtonConsense = new javax.swing.JButton(); javax.swing.JButton CancelButtonConsense = new javax.swing.JButton(); javax.swing.JButton DefaultButtonConsense = new javax.swing.JButton(); javax.swing.JPanel PanelCriterion = new javax.swing.JPanel(); javax.swing.JRadioButton ButtonAIC = new javax.swing.JRadioButton(); javax.swing.JRadioButton ButtonAICc = new javax.swing.JRadioButton(); javax.swing.JRadioButton ButtonBIC = new javax.swing.JRadioButton(); javax.swing.JRadioButton ButtonDT = new javax.swing.JRadioButton(); javax.swing.ButtonGroup ButtonGroupCriterion = new javax.swing.ButtonGroup(); javax.swing.JPanel PanelConsensus = new javax.swing.JPanel(); javax.swing.JRadioButton ButtonMajority = new javax.swing.JRadioButton(); javax.swing.JRadioButton ButtonStrict = new javax.swing.JRadioButton(); javax.swing.ButtonGroup ButtonGroupConsensus = new javax.swing.ButtonGroup(); public static javax.swing.JSlider JSliderInterval = new javax.swing.JSlider(); public RunConsense runConsense; public Frame_Consense() { } public void initComponents() throws Exception { PanelConsense.setSize(new java.awt.Dimension(490, 210)); PanelConsense.setBorder(new javax.swing.plaf.BorderUIResource.TitledBorderUIResource(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, false), "Phylogenetic averaging", 4, 2, new java.awt.Font("Application", 1, 10), new java.awt.Color(102, 102, 153))); PanelConsense.setLocation(new java.awt.Point(10, 10)); PanelConsense.setVisible(true); PanelConsense.setLayout(null); RunButtonConsense.setVisible(true); RunButtonConsense.setSize(new java.awt.Dimension(190, 40)); RunButtonConsense.setText("Run"); RunButtonConsense.setLocation(new java.awt.Point(280, 160)); getRootPane().setDefaultButton(RunButtonConsense); CancelButtonConsense.setVisible(true); CancelButtonConsense.setSize(new java.awt.Dimension(110, 40)); CancelButtonConsense.setText("Cancel"); CancelButtonConsense.setLocation(new java.awt.Point(160, 160)); DefaultButtonConsense.setVisible(true); DefaultButtonConsense.setSize(new java.awt.Dimension(141, 40)); DefaultButtonConsense.setText("Default Settings"); DefaultButtonConsense.setLocation(new java.awt.Point(10, 160)); PanelCriterion.setSize(new java.awt.Dimension(300, 50)); PanelCriterion.setBorder(new javax.swing.plaf.BorderUIResource.TitledBorderUIResource(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, false), "Criterion for tree weights", 4, 2, new java.awt.Font("Application", 1, 10), new java.awt.Color(102, 102, 153))); PanelCriterion.setLocation(new java.awt.Point(20, 20)); PanelCriterion.setVisible(true); PanelCriterion.setLayout(null); ButtonAIC.setVisible(true); ButtonAIC.setSize(new java.awt.Dimension(60, 20)); ButtonAIC.setText("AIC"); ButtonAIC.setLocation(new java.awt.Point(20, 20)); ButtonAICc.setVisible(true); ButtonAICc.setSize(new java.awt.Dimension(60, 20)); ButtonAICc.setText("AICc"); ButtonAICc.setLocation(new java.awt.Point(90, 20)); ButtonBIC.setVisible(true); ButtonBIC.setSize(new java.awt.Dimension(60, 20)); ButtonBIC.setText("BIC"); ButtonBIC.setLocation(new java.awt.Point(160, 20)); ButtonDT.setVisible(true); ButtonDT.setSize(new java.awt.Dimension(60, 20)); ButtonDT.setText("DT"); ButtonDT.setLocation(new java.awt.Point(230, 20)); PanelConsensus.setSize(new java.awt.Dimension(240, 50)); PanelConsensus.setBorder(new javax.swing.plaf.BorderUIResource.TitledBorderUIResource(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, false), "Consensus type", 4, 2, new java.awt.Font("Application", 1, 10), new java.awt.Color(102, 102, 153))); PanelConsensus.setLocation(new java.awt.Point(20, 80)); PanelConsensus.setVisible(true); PanelConsensus.setLayout(null); ButtonMajority.setVisible(true); ButtonMajority.setSize(new java.awt.Dimension(120, 20)); ButtonMajority.setText("Majority rule"); ButtonMajority.setLocation(new java.awt.Point(20, 20)); ButtonMajority.setSelected(true); ButtonStrict.setVisible(true); ButtonStrict.setSize(new java.awt.Dimension(80, 20)); ButtonStrict.setText("Strict"); ButtonStrict.setLocation(new java.awt.Point(140, 20)); ButtonAIC.setEnabled(ModelTest.testAIC()); ButtonAICc.setEnabled(ModelTest.testAICc()); ButtonBIC.setEnabled(ModelTest.testBIC()); ButtonDT.setEnabled(ModelTest.testDT()); if (ButtonAIC.isEnabled()) ButtonAIC.setSelected(true); else if (ButtonAICc.isEnabled()) ButtonAICc.setSelected(true); else if (ButtonBIC.isEnabled()) ButtonBIC.setSelected(true); else if (ButtonDT.isEnabled()) ButtonDT.setSelected(true); ButtonGroupCriterion.add(ButtonAIC); ButtonGroupCriterion.add(ButtonAICc); ButtonGroupCriterion.add(ButtonBIC); ButtonGroupCriterion.add(ButtonDT); PanelCriterion.add(ButtonAIC); PanelCriterion.add(ButtonAICc); PanelCriterion.add(ButtonBIC); PanelCriterion.add(ButtonDT); ButtonGroupConsensus.add(ButtonMajority); ButtonGroupConsensus.add(ButtonStrict); PanelConsensus.add(ButtonMajority); PanelConsensus.add(ButtonStrict); JSliderInterval.setVisible(true); JSliderInterval.setToolTipText("Set the confidence interval for model averaging and/or parameter importance"); JSliderInterval.setBorder(new javax.swing.plaf.BorderUIResource.TitledBorderUIResource(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, false), "Confidence interval = 100%", 4, 2, new java.awt.Font("Application", 1, 10), new java.awt.Color(102, 102, 153))); JSliderInterval.setSize(new java.awt.Dimension(170, 70)); JSliderInterval.setLocation(new java.awt.Point(280, 80)); JSliderInterval.setMinimum(0); JSliderInterval.setMaximum(100); JSliderInterval.setValue(100); JSliderInterval.setMajorTickSpacing(20); JSliderInterval.setMinorTickSpacing(5); JSliderInterval.setPaintTicks(true); JSliderInterval.setPaintLabels(true); JSliderInterval.setEnabled(true); JSliderInterval.setFont(XManager.FONT_SLIDER); setLocation(new java.awt.Point(281, 80)); getContentPane().setLayout(null); setTitle("Phylogenetic averaging settings"); PanelConsense.add(PanelCriterion); PanelConsense.add(PanelConsensus); PanelConsense.add(JSliderInterval); PanelConsense.add(RunButtonConsense); PanelConsense.add(CancelButtonConsense); PanelConsense.add(DefaultButtonConsense); getContentPane().add(PanelConsense); setSize(new java.awt.Dimension(510, 250)); setResizable(false); // event handling RunButtonConsense.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { RunButtonConsenseActionPerformed(e); } }); CancelButtonConsense.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { CancelButtonConsenseActionPerformed(e); } }); DefaultButtonConsense.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { DefaultButtonConsenseActionPerformed(e); } }); JSliderInterval.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { JSliderIntervalStateChanged(e); } }); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { thisWindowClosing(e); } }); // END GENERATED CODE } private boolean mShown = false; public void addNotify() { super.addNotify(); if (mShown) return; // resize frame to account for menubar JMenuBar jMenuBar = getJMenuBar(); if (jMenuBar != null) { int jMenuBarHeight = jMenuBar.getPreferredSize().height; Dimension dimension = getSize(); dimension.height += jMenuBarHeight; setSize(dimension); // move down components in layered pane Component[] components = getLayeredPane().getComponentsInLayer(JLayeredPane.DEFAULT_LAYER.intValue()); for (int i = 0; i < components.length; i++) { Point location = components[i].getLocation(); location.move(location.x, location.y + jMenuBarHeight); components[i].setLocation(location); } } mShown = true; } // Close the window when the close box is clicked void thisWindowClosing(java.awt.event.WindowEvent e) { setVisible(false); dispose(); //System.exit(0); } public void JSliderIntervalStateChanged(javax.swing.event.ChangeEvent e) { JSliderInterval.setBorder(new javax.swing.plaf.BorderUIResource.TitledBorderUIResource(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, false), "Confidence interval = " + JSliderInterval.getValue() + "%", 4, 2, new java.awt.Font("Application", 1, 10), new java.awt.Color(102, 102, 153))); } public void RunButtonConsenseActionPerformed(java.awt.event.ActionEvent e) { InformationCriterion criterion; String consensusType; double credibleInterval; try { // get criterion if (ButtonAIC.isSelected()) { criterion = ModelTest.getMyAIC(); } else if (ButtonAICc.isSelected()) { criterion = ModelTest.getMyAICc(); } else if (ButtonBIC.isSelected()) { criterion = ModelTest.getMyBIC(); } else { criterion = ModelTest.getMyDT(); } // get consensus type if (ButtonMajority.isSelected()) consensusType = "50% majority rule"; else consensusType = "strict"; credibleInterval = JSliderInterval.getValue()/100.0; setVisible(false); dispose(); // run consense runConsense = new RunConsense(criterion, consensusType, credibleInterval); if (ButtonAIC.isSelected()) { ModelTest.setConsensusAIC(runConsense); } else if (ButtonAICc.isSelected()) { ModelTest.setConsensusAICc(runConsense); } else if (ButtonBIC.isSelected()) { ModelTest.setConsensusBIC(runConsense); } else { ModelTest.setConsensusDT(runConsense); } } catch (Exception f) { f.printStackTrace(); } } public void DefaultButtonConsenseActionPerformed (java.awt.event.ActionEvent e) { try { if (ModelTest.testAIC()) ButtonAIC.setSelected(true); else if (ModelTest.testAICc()) ButtonAICc.setSelected(true); else if (ModelTest.testBIC()) ButtonBIC.setSelected(true); else if (ModelTest.testDT()) ButtonDT.setEnabled(true); ButtonMajority.setSelected(true); JSliderInterval.setValue(100); } catch (Exception f) { f.printStackTrace(); } } public void CancelButtonConsenseActionPerformed (java.awt.event.ActionEvent e) { try { setVisible(false); dispose(); } catch (Exception f) { f.printStackTrace(); } } }