From 4086aff8dd513155a4435cd50c7ad28b812c29ba Mon Sep 17 00:00:00 2001 From: wspear Date: Mon, 31 Oct 2005 23:10:58 +0000 Subject: [PATCH] Improved layout, added otf option, added configuration history, enabled resizing git-svn-id: file:///mnt/fast/tau2git/svnroot/trunk/tau2@3751 a8e31b63-e6ca-409b-a01b-2eec1b506579 --- tools/src/tauconf/Build.sh | 2 +- tools/src/tauconf/bin/TAU_Conf.jar | Bin 179059 -> 221372 bytes tools/src/tauconf/src/tau_conf/TAU_Conf.java | 3292 +++++++++++------- 3 files changed, 2059 insertions(+), 1235 deletions(-) diff --git a/tools/src/tauconf/Build.sh b/tools/src/tauconf/Build.sh index 54c4c89e4..ae427600d 100755 --- a/tools/src/tauconf/Build.sh +++ b/tools/src/tauconf/Build.sh @@ -1,7 +1,7 @@ #!/bin/sh cp -r src/tau_conf . -javac tau_conf/TAU_Conf.java +javac -cp ../contrib/swing-layout-0.7.1.jar tau_conf/TAU_Conf.java jar -cf TAU_Conf.jar tau_conf mv TAU_Conf.jar bin rm -rf tau_conf diff --git a/tools/src/tauconf/bin/TAU_Conf.jar b/tools/src/tauconf/bin/TAU_Conf.jar index 22d014d08ee8b940461e8546408e01485239b326..cce500bc97cbeec22bcd1ade5738b03fe2f6f352 100644 GIT binary patch delta 160568 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

Y4yD;y?M5YXi}_SWO0`~WQ;VqF^cwT$D?1H7 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

N^i=d(l^pZ=*FZsqCC~;g0*akM@1Sv9EJzwil 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뿛Uyu-F1a->oW))$gmHi6`01-C?g`95pc_O< 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 TaQ)--&(ScAX8(4Y56%ApDecIW diff --git a/tools/src/tauconf/src/tau_conf/TAU_Conf.java b/tools/src/tauconf/src/tau_conf/TAU_Conf.java index fb1443e60..0b90a3804 100644 --- a/tools/src/tauconf/src/tau_conf/TAU_Conf.java +++ b/tools/src/tauconf/src/tau_conf/TAU_Conf.java @@ -5,6 +5,8 @@ */ package tau_conf; +import java.util.HashMap; +import java.util.Vector; import javax.swing.*; import java.io.*; /** @@ -20,6 +22,12 @@ public TAU_Conf() { String configureline = "./configure"; String instline = "./installtau"; + Vector cbholder=new Vector(); + Vector comholder = new Vector(); + Vector savedconf = new Vector(); + Vector allconf= new Vector(); + HashMap commap = new HashMap(64); + HashMap fieldmap= new HashMap(64); /** This method is called from within the constructor to * initialize the form. @@ -33,83 +41,83 @@ private void initComponents() { jFileChooser1 = new javax.swing.JFileChooser(); tabPane = new javax.swing.JTabbedPane(); installationPanel = new javax.swing.JPanel(); - compilerPanel = new javax.swing.JPanel(); - cccompLabel = new javax.swing.JLabel(); - cppcompLabel = new javax.swing.JLabel(); - fortrancompLabel = new javax.swing.JLabel(); - String[] ccCompStrings = { "Default","cc","gcc","KCC","pgcc","guidec","xlc","ecc","pathcc" }; - ccCombo = new javax.swing.JComboBox(ccCompStrings); - String[] cppCompStrings = { "Default","CC","KCC","g++","xlC","cxx","pgCC","FCC","guidec++","aCC","c++","ecpc","icpc","pathCC" }; - cppCombo = new javax.swing.JComboBox(cppCompStrings); - String[] fortranCompStrings = {"Default","gnu","sgi","ibm","ibm64","hp","cray","pgi","absoft","fujitsu","sun","compaq","kai","nec","hitachi","intel","absoft","lahey","nagware","pathscale"}; - fortranCombo = new javax.swing.JComboBox(fortranCompStrings); - defccTextField = new javax.swing.JTextField(); - defcppTextField = new javax.swing.JTextField(); - deffortranTextField = new javax.swing.JTextField(); - defccCheckBox = new javax.swing.JCheckBox(); - defcppCheckBox = new javax.swing.JCheckBox(); - deffortranCheckBox = new javax.swing.JCheckBox(); - cQjButton = new javax.swing.JButton(); - cppQjButton = new javax.swing.JButton(); - fortQjButton = new javax.swing.JButton(); - pdtPanel = new javax.swing.JPanel(); + papijPanel = new javax.swing.JPanel(); + papiQjButton = new javax.swing.JButton(); + papiCheckBox = new javax.swing.JCheckBox(); + papiButton = new javax.swing.JButton(); + papiTextField = new javax.swing.JTextField(); + papiwallQjButton = new javax.swing.JButton(); + papiwallCheckBox = new javax.swing.JCheckBox(); + papivirtQjButton = new javax.swing.JButton(); + papivirtCheckBox = new javax.swing.JCheckBox(); + multcountQjButton = new javax.swing.JButton(); + multiplecountCheckBox = new javax.swing.JCheckBox(); + pdtjPanel = new javax.swing.JPanel(); + pdtQjButton = new javax.swing.JButton(); pdtCheckBox = new javax.swing.JCheckBox(); + pdtButton = new javax.swing.JButton(); + pdtdirField = new javax.swing.JTextField(); + pdtcppQjButton = new javax.swing.JButton(); pdtCompilerLabel = new javax.swing.JLabel(); String[] pdtcCompStrings = { "Default","CC","KCC","g++","xlC","cxx","pgCC","FCC","guidec++","aCC","c++","ecpc","icpc" }; pdtcppCombo = new javax.swing.JComboBox(pdtcCompStrings); - pdtdirField = new javax.swing.JTextField(); - pdtButton = new javax.swing.JButton(); defpdtCheckBox = new javax.swing.JCheckBox(); defpdtTextField = new javax.swing.JTextField(); - pdtQjButton = new javax.swing.JButton(); - pdtcppQjButton = new javax.swing.JButton(); - papiPanel = new javax.swing.JPanel(); - papiCheckBox = new javax.swing.JCheckBox(); - papiTextField = new javax.swing.JTextField(); - papiwallCheckBox = new javax.swing.JCheckBox(); - papivirtCheckBox = new javax.swing.JCheckBox(); - multiplecountCheckBox = new javax.swing.JCheckBox(); - papiButton = new javax.swing.JButton(); - papiQjButton = new javax.swing.JButton(); - papiwallQjButton = new javax.swing.JButton(); - papivirtQjButton = new javax.swing.JButton(); - multcountQjButton = new javax.swing.JButton(); + compilerjPanel = new javax.swing.JPanel(); + cppQjButton = new javax.swing.JButton(); + cppcompLabel = new javax.swing.JLabel(); + String[] cppCompStrings = { "Default","CC","KCC","g++","xlC","cxx","pgCC","FCC","guidec++","aCC","c++","ecpc","icpc","pathCC" }; + cppCombo = new javax.swing.JComboBox(cppCompStrings); + defcppCheckBox = new javax.swing.JCheckBox(); + defcppTextField = new javax.swing.JTextField(); + cQjButton = new javax.swing.JButton(); + cccompLabel = new javax.swing.JLabel(); + String[] ccCompStrings = { "Default","cc","gcc","KCC","pgcc","guidec","xlc","ecc","pathcc" }; + ccCombo = new javax.swing.JComboBox(ccCompStrings); + defccCheckBox = new javax.swing.JCheckBox(); + fortQjButton = new javax.swing.JButton(); + defccTextField = new javax.swing.JTextField(); + fortrancompLabel = new javax.swing.JLabel(); + String[] fortranCompStrings = {"Default","gnu","sgi","ibm","ibm64","hp","cray","pgi","absoft","fujitsu","sun","compaq","kai","nec","hitachi","intel","absoft","lahey","nagware","pathscale"}; + fortranCombo = new javax.swing.JComboBox(fortranCompStrings); + deffortranCheckBox = new javax.swing.JCheckBox(); + deffortranTextField = new javax.swing.JTextField(); messagePannel = new javax.swing.JPanel(); - mpiPanel = new javax.swing.JPanel(); + mpijPanel = new javax.swing.JPanel(); + mpiQjButton = new javax.swing.JButton(); mpiCheckBox = new javax.swing.JCheckBox(); + mpiincQjButton = new javax.swing.JButton(); mpiincCheckBox = new javax.swing.JCheckBox(); + mpiincButton = new javax.swing.JButton(); mpiincTextField = new javax.swing.JTextField(); + mpilibQjButton = new javax.swing.JButton(); mpilibCheckBox = new javax.swing.JCheckBox(); + mpilibButton = new javax.swing.JButton(); mpilibTextField = new javax.swing.JTextField(); + altmpiQjButton = new javax.swing.JButton(); altmpiCheckBox = new javax.swing.JCheckBox(); altmpiTextField = new javax.swing.JTextField(); + tagQjButton = new javax.swing.JButton(); tagCheckBox = new javax.swing.JCheckBox(); tagTextField = new javax.swing.JTextField(); - nocomCheckBox = new javax.swing.JCheckBox(); - mpitraceCheckBox = new javax.swing.JCheckBox(); - mpiincButton = new javax.swing.JButton(); - mpilibButton = new javax.swing.JButton(); - mpiQjButton = new javax.swing.JButton(); - mpiincQjButton = new javax.swing.JButton(); - mpilibQjButton = new javax.swing.JButton(); - altmpiQjButton = new javax.swing.JButton(); - tagQjButton = new javax.swing.JButton(); nocommQjButton = new javax.swing.JButton(); + nocomCheckBox = new javax.swing.JCheckBox(); mpitraceQjButton = new javax.swing.JButton(); - shmemPanel = new javax.swing.JPanel(); + mpitraceCheckBox = new javax.swing.JCheckBox(); + shmemjPanel = new javax.swing.JPanel(); + shmemQjButton = new javax.swing.JButton(); shmemCheckBox = new javax.swing.JCheckBox(); + shmemincQjButton = new javax.swing.JButton(); shmemincCheckBox = new javax.swing.JCheckBox(); + shmemincButton = new javax.swing.JButton(); shmemincTextField = new javax.swing.JTextField(); + shmemlibQjButton = new javax.swing.JButton(); shmemlibCheckBox = new javax.swing.JCheckBox(); + shmemlibButton = new javax.swing.JButton(); shmemlibTextField = new javax.swing.JTextField(); + altshmemQjButton = new javax.swing.JButton(); altshmemCheckBox = new javax.swing.JCheckBox(); altshmemTextField = new javax.swing.JTextField(); - shmemincButton = new javax.swing.JButton(); - shmemlibButton = new javax.swing.JButton(); - shmemQjButton = new javax.swing.JButton(); - shmemincQjButton = new javax.swing.JButton(); - shmemlibQjButton = new javax.swing.JButton(); - altshmemQjButton = new javax.swing.JButton(); outputPanel = new javax.swing.JPanel(); profilePanel = new javax.swing.JPanel(); profileCheckBox = new javax.swing.JCheckBox(); @@ -139,6 +147,10 @@ private void initComponents() { slog2QjButton = new javax.swing.JButton(); vtfQjButton = new javax.swing.JButton(); slog2eQjButton = new javax.swing.JButton(); + otfQjButton = new javax.swing.JButton(); + otfCheckBox = new javax.swing.JCheckBox(); + jButton1 = new javax.swing.JButton(); + otfTextField = new javax.swing.JTextField(); jPanel5 = new javax.swing.JPanel(); profphaseCheckBox = new javax.swing.JCheckBox(); depthlimitCheckBox = new javax.swing.JCheckBox(); @@ -212,7 +224,6 @@ private void initComponents() { pythonlibButton = new javax.swing.JButton(); pythonincQjButton = new javax.swing.JButton(); pythonlibQjButton = new javax.swing.JButton(); - jLabel3 = new javax.swing.JLabel(); jdkPanel = new javax.swing.JPanel(); usejdkCheckBox = new javax.swing.JCheckBox(); jdkField = new javax.swing.JTextField(); @@ -239,6 +250,17 @@ private void initComponents() { archQjButton = new javax.swing.JButton(); useroptQjButton = new javax.swing.JButton(); noexQjButton = new javax.swing.JButton(); + jPanel2 = new javax.swing.JPanel(); + jPanel3 = new javax.swing.JPanel(); + allconfComboBox = new javax.swing.JComboBox(allconf); + loadallconfButton = new javax.swing.JButton(); + savedconfComboBox = new javax.swing.JComboBox(savedconf); + loadsavedconfButton = new javax.swing.JButton(); + jLabel3 = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + removeconfButton = new javax.swing.JButton(); + saveconfButton = new javax.swing.JButton(); + custconfTextField = new javax.swing.JTextField(); commandPanel = new javax.swing.JPanel(); confButton = new javax.swing.JButton(); confjScrollPane = new javax.swing.JScrollPane(commandTextArea); @@ -255,163 +277,156 @@ private void initComponents() { profstatsCheckBox.setText("Profile Stats [-PROFILESTATS]"); jFileChooser1.setFileSelectionMode(javax.swing.JFileChooser.DIRECTORIES_ONLY); - getContentPane().setLayout(null); - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - setTitle("tau_setup"); - setResizable(false); - installationPanel.setLayout(null); - - compilerPanel.setLayout(null); - - compilerPanel.setBorder(new javax.swing.border.EtchedBorder()); - cccompLabel.setText("C Compiler [-cc=]:"); - compilerPanel.add(cccompLabel); - cccompLabel.setBounds(10, 70, 280, 15); - - cppcompLabel.setText("C++ Compiler [-c++=]:"); - compilerPanel.add(cppcompLabel); - cppcompLabel.setBounds(10, 10, 280, 15); - - fortrancompLabel.setText("Fortran Compiler [-fortran=]:"); - compilerPanel.add(fortrancompLabel); - fortrancompLabel.setBounds(10, 130, 280, 15); - - ccCombo.setToolTipText("Specifies the name of the C compiler"); - ccCombo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ccComboActionPerformed(evt); - } - }); - - compilerPanel.add(ccCombo); - ccCombo.setBounds(300, 70, 90, 24); - - cppCombo.setToolTipText("Specifies the name of the C++ compiler"); - cppCombo.addActionListener(new java.awt.event.ActionListener() { + setTitle("TAU_Conf"); + papijPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + papiQjButton.setText("?"); + papiQjButton.setToolTipText("More Info"); + papiQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + papiQjButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cppComboActionPerformed(evt); + papiQjButtonActionPerformed(evt); } }); - compilerPanel.add(cppCombo); - cppCombo.setBounds(300, 10, 90, 24); - - fortranCombo.setToolTipText("Specifies the name of the Fortran compiler"); - fortranCombo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - fortranComboActionPerformed(evt); + papiCheckBox.setText("PAPI [-papi=]:"); + papiCheckBox.setToolTipText("Specify location of PAPI (Performance API)"); + papiCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + papiCheckBoxStateChanged(evt); } }); - compilerPanel.add(fortranCombo); - fortranCombo.setBounds(300, 130, 90, 24); - - defccTextField.setPreferredSize(new java.awt.Dimension(200, 19)); - defccTextField.addActionListener(new java.awt.event.ActionListener() { + papiButton.setText("Browse"); + papiButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - defccTextFieldActionPerformed(evt); + papiButtonActionPerformed(evt); } }); - compilerPanel.add(defccTextField); - defccTextField.setBounds(300, 100, 200, 19); - - defcppTextField.setPreferredSize(new java.awt.Dimension(200, 19)); - defcppTextField.addActionListener(new java.awt.event.ActionListener() { + papiTextField.setPreferredSize(new java.awt.Dimension(200, 19)); + papiTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - defcppTextFieldActionPerformed(evt); + papiTextFieldActionPerformed(evt); } }); - compilerPanel.add(defcppTextField); - defcppTextField.setBounds(300, 40, 200, 19); - - deffortranTextField.setPreferredSize(new java.awt.Dimension(200, 19)); - deffortranTextField.addActionListener(new java.awt.event.ActionListener() { + papiwallQjButton.setText("?"); + papiwallQjButton.setToolTipText("More Info"); + papiwallQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + papiwallQjButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - deffortranTextFieldActionPerformed(evt); + papiwallQjButtonActionPerformed(evt); } }); - compilerPanel.add(deffortranTextField); - deffortranTextField.setBounds(300, 160, 200, 19); - - defccCheckBox.setText("User Defined"); - defccCheckBox.setToolTipText("Specify an alternate C compiler (e.g. *xlc*)"); - defccCheckBox.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - defccCheckBoxItemStateChanged(evt); + papiwallCheckBox.setText("PAPI Wallclock [-PAPIWALLCLOCK]"); + papiwallCheckBox.setToolTipText("Use PAPI to access wallclock time. Needs -papi"); + papiwallCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + papiwallCheckBoxStateChanged(evt); } }); - compilerPanel.add(defccCheckBox); - defccCheckBox.setBounds(10, 90, 280, 23); - - defcppCheckBox.setText("User Defined"); - defcppCheckBox.setToolTipText("Specify an alternate C++ compiler (e.g. *xlC*)"); - defcppCheckBox.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - defcppCheckBoxItemStateChanged(evt); + papivirtQjButton.setText("?"); + papivirtQjButton.setToolTipText("More Info"); + papivirtQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + papivirtQjButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + papivirtQjButtonActionPerformed(evt); } }); - compilerPanel.add(defcppCheckBox); - defcppCheckBox.setBounds(10, 30, 280, 23); - - deffortranCheckBox.setText("User Defined"); - deffortranCheckBox.setToolTipText("Specify an alternate Fortran compiler"); - deffortranCheckBox.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - deffortranCheckBoxItemStateChanged(evt); + papivirtCheckBox.setText("PAPI Virtual [-PAPIVIRTUAL]"); + papivirtCheckBox.setToolTipText("Use PAPI for virtual (user) time calculation"); + papivirtCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + papivirtCheckBoxStateChanged(evt); } }); - compilerPanel.add(deffortranCheckBox); - deffortranCheckBox.setBounds(10, 150, 280, 23); - - cQjButton.setText("?"); - cQjButton.setToolTipText("More Info"); - cQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - cQjButton.addActionListener(new java.awt.event.ActionListener() { + multcountQjButton.setText("?"); + multcountQjButton.setToolTipText("More Info"); + multcountQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + multcountQjButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cQjButtonActionPerformed(evt); + multcountQjButtonActionPerformed(evt); } }); - compilerPanel.add(cQjButton); - cQjButton.setBounds(600, 70, 20, 20); - - cppQjButton.setText("?"); - cppQjButton.setToolTipText("More Info"); - cppQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - cppQjButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cppQjButtonActionPerformed(evt); + multiplecountCheckBox.setText("Multiple Counters [-MULTIPLECOUNTERS]"); + multiplecountCheckBox.setToolTipText("Use multiple hardware counters and time"); + multiplecountCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + multiplecountCheckBoxStateChanged(evt); } }); - compilerPanel.add(cppQjButton); - cppQjButton.setBounds(600, 10, 20, 20); - - fortQjButton.setText("?"); - fortQjButton.setToolTipText("More Info"); - fortQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - fortQjButton.addActionListener(new java.awt.event.ActionListener() { + org.jdesktop.layout.GroupLayout papijPanelLayout = new org.jdesktop.layout.GroupLayout(papijPanel); + papijPanel.setLayout(papijPanelLayout); + papijPanelLayout.setHorizontalGroup( + papijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, papijPanelLayout.createSequentialGroup() + .addContainerGap() + .add(papijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, papijPanelLayout.createSequentialGroup() + .add(papijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(papiQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(papiwallQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(papijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, papijPanelLayout.createSequentialGroup() + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(papiCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(papiButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(papiTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 393, Short.MAX_VALUE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, papijPanelLayout.createSequentialGroup() + .add(23, 23, 23) + .add(papijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(papivirtCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 197, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(papiwallCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 239, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))) + .add(papivirtQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(org.jdesktop.layout.GroupLayout.LEADING, papijPanelLayout.createSequentialGroup() + .add(multcountQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(multiplecountCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 284, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + papijPanelLayout.setVerticalGroup( + papijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, papijPanelLayout.createSequentialGroup() + .addContainerGap() + .add(papijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(papiQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(papiCheckBox) + .add(papiButton) + .add(papiTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(papijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(papiwallQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(papiwallCheckBox)) + .add(1, 1, 1) + .add(papijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) + .add(papivirtQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(papivirtCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(papijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(multcountQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(multiplecountCheckBox)) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + pdtjPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + pdtQjButton.setText("?"); + pdtQjButton.setToolTipText("More Info"); + pdtQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + pdtQjButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - fortQjButtonActionPerformed(evt); + pdtQjButtonActionPerformed(evt); } }); - compilerPanel.add(fortQjButton); - fortQjButton.setBounds(600, 130, 20, 20); - - installationPanel.add(compilerPanel); - compilerPanel.setBounds(10, 10, 630, 190); - - pdtPanel.setLayout(null); - - pdtPanel.setBorder(new javax.swing.border.EtchedBorder()); pdtCheckBox.setText("PDT [-pdt=]:"); pdtCheckBox.setToolTipText("Specify location of PDT (Program Database Toolkit)"); pdtCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -420,23 +435,13 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - pdtPanel.add(pdtCheckBox); - pdtCheckBox.setBounds(5, 4, 290, 23); - - pdtCompilerLabel.setText("PDT C++ Compiler [-pdt_c++=]:"); - pdtPanel.add(pdtCompilerLabel); - pdtCompilerLabel.setBounds(10, 50, 280, 15); - - pdtcppCombo.setToolTipText("Specify a different PDT C++ compiler"); - pdtcppCombo.addActionListener(new java.awt.event.ActionListener() { + pdtButton.setText("Browse"); + pdtButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - pdtcppComboActionPerformed(evt); + pdtButtonActionPerformed(evt); } }); - pdtPanel.add(pdtcppCombo); - pdtcppCombo.setBounds(300, 50, 90, 24); - pdtdirField.setPreferredSize(new java.awt.Dimension(200, 19)); pdtdirField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -444,18 +449,23 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - pdtPanel.add(pdtdirField); - pdtdirField.setBounds(300, 10, 200, 19); - - pdtButton.setText("Browse"); - pdtButton.addActionListener(new java.awt.event.ActionListener() { + pdtcppQjButton.setText("?"); + pdtcppQjButton.setToolTipText("More Info"); + pdtcppQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + pdtcppQjButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - pdtButtonActionPerformed(evt); + pdtcppQjButtonActionPerformed(evt); } }); - pdtPanel.add(pdtButton); - pdtButton.setBounds(510, 10, 80, 25); + pdtCompilerLabel.setText("PDT C++ Compiler [-pdt_c++=]:"); + + pdtcppCombo.setToolTipText("Specify a different PDT C++ compiler"); + pdtcppCombo.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + pdtcppComboActionPerformed(evt); + } + }); defpdtCheckBox.setText("User Defined"); defpdtCheckBox.setToolTipText("Specify an alternate C++ compiler (e.g. *xlC*)"); @@ -465,9 +475,6 @@ public void itemStateChanged(java.awt.event.ItemEvent evt) { } }); - pdtPanel.add(defpdtCheckBox); - defpdtCheckBox.setBounds(10, 80, 280, 23); - defpdtTextField.setPreferredSize(new java.awt.Dimension(200, 19)); defpdtTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -475,163 +482,261 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - pdtPanel.add(defpdtTextField); - defpdtTextField.setBounds(300, 80, 200, 19); - - pdtQjButton.setText("?"); - pdtQjButton.setToolTipText("More Info"); - pdtQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - pdtQjButton.addActionListener(new java.awt.event.ActionListener() { + org.jdesktop.layout.GroupLayout pdtjPanelLayout = new org.jdesktop.layout.GroupLayout(pdtjPanel); + pdtjPanel.setLayout(pdtjPanelLayout); + pdtjPanelLayout.setHorizontalGroup( + pdtjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, pdtjPanelLayout.createSequentialGroup() + .addContainerGap() + .add(pdtjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, pdtjPanelLayout.createSequentialGroup() + .add(pdtQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pdtCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 104, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(31, 31, 31) + .add(pdtButton)) + .add(org.jdesktop.layout.GroupLayout.TRAILING, pdtjPanelLayout.createSequentialGroup() + .add(pdtcppQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pdtjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pdtCompilerLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 205, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(defpdtCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 106, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pdtjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(defpdtTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 366, Short.MAX_VALUE) + .add(pdtcppCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(pdtdirField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 366, Short.MAX_VALUE)) + .addContainerGap()) + ); + pdtjPanelLayout.setVerticalGroup( + pdtjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, pdtjPanelLayout.createSequentialGroup() + .addContainerGap() + .add(pdtjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(pdtQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(pdtCheckBox) + .add(pdtButton) + .add(pdtdirField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pdtjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(pdtcppQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(pdtCompilerLabel) + .add(pdtcppCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pdtjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(defpdtCheckBox) + .add(defpdtTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + compilerjPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + cppQjButton.setText("?"); + cppQjButton.setToolTipText("More Info"); + cppQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + cppQjButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - pdtQjButtonActionPerformed(evt); + cppQjButtonActionPerformed(evt); } }); - pdtPanel.add(pdtQjButton); - pdtQjButton.setBounds(600, 10, 20, 20); + cppcompLabel.setText("C++ Compiler [-c++=]:"); - pdtcppQjButton.setText("?"); - pdtcppQjButton.setToolTipText("More Info"); - pdtcppQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - pdtcppQjButton.addActionListener(new java.awt.event.ActionListener() { + cppCombo.setToolTipText("Specifies the name of the C++ compiler"); + cppCombo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - pdtcppQjButtonActionPerformed(evt); + cppComboActionPerformed(evt); } }); - pdtPanel.add(pdtcppQjButton); - pdtcppQjButton.setBounds(600, 50, 20, 20); - - installationPanel.add(pdtPanel); - pdtPanel.setBounds(10, 210, 630, 110); - - papiPanel.setLayout(null); - - papiPanel.setBorder(new javax.swing.border.EtchedBorder()); - papiCheckBox.setText("PAPI [-papi=]:"); - papiCheckBox.setToolTipText("Specify location of PAPI (Performance API)"); - papiCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - papiCheckBoxStateChanged(evt); + defcppCheckBox.setText("User Defined"); + defcppCheckBox.setToolTipText("Specify an alternate C++ compiler (e.g. *xlC*)"); + defcppCheckBox.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + defcppCheckBoxItemStateChanged(evt); } }); - papiPanel.add(papiCheckBox); - papiCheckBox.setBounds(10, 10, 290, 23); - - papiTextField.setPreferredSize(new java.awt.Dimension(200, 19)); - papiTextField.addActionListener(new java.awt.event.ActionListener() { + defcppTextField.setPreferredSize(new java.awt.Dimension(200, 19)); + defcppTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - papiTextFieldActionPerformed(evt); + defcppTextFieldActionPerformed(evt); } }); - papiPanel.add(papiTextField); - papiTextField.setBounds(300, 10, 200, 19); - - papiwallCheckBox.setText("PAPI Wallclock [-PAPIWALLCLOCK]"); - papiwallCheckBox.setToolTipText("Use PAPI to access wallclock time. Needs -papi"); - papiwallCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - papiwallCheckBoxStateChanged(evt); + cQjButton.setText("?"); + cQjButton.setToolTipText("More Info"); + cQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + cQjButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cQjButtonActionPerformed(evt); } }); - papiPanel.add(papiwallCheckBox); - papiwallCheckBox.setBounds(20, 30, 350, 23); + cccompLabel.setText("C Compiler [-cc=]:"); - papivirtCheckBox.setText("PAPI Virtual [-PAPIVIRTUAL]"); - papivirtCheckBox.setToolTipText("Use PAPI for virtual (user) time calculation"); - papivirtCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - papivirtCheckBoxStateChanged(evt); + ccCombo.setToolTipText("Specifies the name of the C compiler"); + ccCombo.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ccComboActionPerformed(evt); } }); - papiPanel.add(papivirtCheckBox); - papivirtCheckBox.setBounds(20, 50, 330, 23); - - multiplecountCheckBox.setText("Multiple Counters [-MULTIPLECOUNTERS]"); - multiplecountCheckBox.setToolTipText("Use multiple hardware counters and time"); - multiplecountCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - multiplecountCheckBoxStateChanged(evt); + defccCheckBox.setText("User Defined"); + defccCheckBox.setToolTipText("Specify an alternate C compiler (e.g. *xlc*)"); + defccCheckBox.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + defccCheckBoxItemStateChanged(evt); } }); - papiPanel.add(multiplecountCheckBox); - multiplecountCheckBox.setBounds(10, 80, 330, 23); - - papiButton.setText("Browse"); - papiButton.addActionListener(new java.awt.event.ActionListener() { + fortQjButton.setText("?"); + fortQjButton.setToolTipText("More Info"); + fortQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + fortQjButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - papiButtonActionPerformed(evt); + fortQjButtonActionPerformed(evt); } }); - papiPanel.add(papiButton); - papiButton.setBounds(510, 10, 80, 25); - - papiQjButton.setText("?"); - papiQjButton.setToolTipText("More Info"); - papiQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - papiQjButton.addActionListener(new java.awt.event.ActionListener() { + defccTextField.setPreferredSize(new java.awt.Dimension(200, 19)); + defccTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - papiQjButtonActionPerformed(evt); + defccTextFieldActionPerformed(evt); } }); - papiPanel.add(papiQjButton); - papiQjButton.setBounds(600, 10, 20, 20); + fortrancompLabel.setText("Fortran Compiler [-fortran=]:"); - papiwallQjButton.setText("?"); - papiwallQjButton.setToolTipText("More Info"); - papiwallQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - papiwallQjButton.addActionListener(new java.awt.event.ActionListener() { + fortranCombo.setToolTipText("Specifies the name of the Fortran compiler"); + fortranCombo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - papiwallQjButtonActionPerformed(evt); + fortranComboActionPerformed(evt); } }); - papiPanel.add(papiwallQjButton); - papiwallQjButton.setBounds(600, 30, 20, 20); - - papivirtQjButton.setText("?"); - papivirtQjButton.setToolTipText("More Info"); - papivirtQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - papivirtQjButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - papivirtQjButtonActionPerformed(evt); + deffortranCheckBox.setText("User Defined"); + deffortranCheckBox.setToolTipText("Specify an alternate Fortran compiler"); + deffortranCheckBox.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + deffortranCheckBoxItemStateChanged(evt); } }); - papiPanel.add(papivirtQjButton); - papivirtQjButton.setBounds(600, 50, 20, 20); - - multcountQjButton.setText("?"); - multcountQjButton.setToolTipText("More Info"); - multcountQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - multcountQjButton.addActionListener(new java.awt.event.ActionListener() { + deffortranTextField.setPreferredSize(new java.awt.Dimension(200, 19)); + deffortranTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - multcountQjButtonActionPerformed(evt); + deffortranTextFieldActionPerformed(evt); } }); - papiPanel.add(multcountQjButton); - multcountQjButton.setBounds(600, 80, 20, 20); - - installationPanel.add(papiPanel); - papiPanel.setBounds(10, 330, 630, 110); - + org.jdesktop.layout.GroupLayout compilerjPanelLayout = new org.jdesktop.layout.GroupLayout(compilerjPanel); + compilerjPanel.setLayout(compilerjPanelLayout); + compilerjPanelLayout.setHorizontalGroup( + compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, compilerjPanelLayout.createSequentialGroup() + .addContainerGap() + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, compilerjPanelLayout.createSequentialGroup() + .add(cppQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(cppcompLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 149, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(defcppCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 106, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .add(org.jdesktop.layout.GroupLayout.LEADING, compilerjPanelLayout.createSequentialGroup() + .add(cQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(defccCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 106, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(cccompLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 115, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .add(org.jdesktop.layout.GroupLayout.LEADING, compilerjPanelLayout.createSequentialGroup() + .add(fortQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(deffortranCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 106, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(fortrancompLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 182, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, compilerjPanelLayout.createSequentialGroup() + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(cppCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(ccCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(defcppTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 389, Short.MAX_VALUE))) + .add(fortranCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(defccTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 389, Short.MAX_VALUE) + .add(deffortranTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 389, Short.MAX_VALUE)) + .addContainerGap()) + ); + compilerjPanelLayout.setVerticalGroup( + compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, compilerjPanelLayout.createSequentialGroup() + .addContainerGap() + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(cppQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(cppcompLabel) + .add(cppCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(defcppCheckBox) + .add(defcppTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(cQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(cccompLabel) + .add(ccCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(defccCheckBox) + .add(defccTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(4, 4, 4) + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(fortQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(fortrancompLabel) + .add(fortranCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(compilerjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(deffortranCheckBox) + .add(deffortranTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + org.jdesktop.layout.GroupLayout installationPanelLayout = new org.jdesktop.layout.GroupLayout(installationPanel); + installationPanel.setLayout(installationPanelLayout); + installationPanelLayout.setHorizontalGroup( + installationPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, installationPanelLayout.createSequentialGroup() + .addContainerGap() + .add(installationPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(papijPanel) + .add(compilerjPanel) + .add(pdtjPanel)) + .addContainerGap()) + ); + installationPanelLayout.setVerticalGroup( + installationPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, installationPanelLayout.createSequentialGroup() + .addContainerGap() + .add(compilerjPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pdtjPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(papijPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(315, 315, 315)) + ); tabPane.addTab("Compilers", installationPanel); - messagePannel.setLayout(null); - messagePannel.setMinimumSize(new java.awt.Dimension(600, 300)); messagePannel.setPreferredSize(new java.awt.Dimension(600, 300)); - mpiPanel.setLayout(null); + mpijPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + mpiQjButton.setText("?"); + mpiQjButton.setToolTipText("More Info"); + mpiQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + mpiQjButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + mpiQjButtonActionPerformed(evt); + } + }); - mpiPanel.setBorder(new javax.swing.border.EtchedBorder()); mpiCheckBox.setText("MPI [-mpi]"); mpiCheckBox.setToolTipText("Specify use of TAU MPI wrapper library"); mpiCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -640,8 +745,14 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - mpiPanel.add(mpiCheckBox); - mpiCheckBox.setBounds(10, 10, 290, 23); + mpiincQjButton.setText("?"); + mpiincQjButton.setToolTipText("More Info"); + mpiincQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + mpiincQjButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + mpiincQjButtonActionPerformed(evt); + } + }); mpiincCheckBox.setText("MPI Includes [-mpiinc=]:"); mpiincCheckBox.setToolTipText("Specify location of MPI include dir and use the TAU MPI Profiling and Tracing Interface"); @@ -651,8 +762,12 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - mpiPanel.add(mpiincCheckBox); - mpiincCheckBox.setBounds(10, 40, 290, 23); + mpiincButton.setText("Browse"); + mpiincButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + mpiincButtonActionPerformed(evt); + } + }); mpiincTextField.setPreferredSize(new java.awt.Dimension(200, 19)); mpiincTextField.addActionListener(new java.awt.event.ActionListener() { @@ -661,8 +776,14 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - mpiPanel.add(mpiincTextField); - mpiincTextField.setBounds(300, 40, 200, 19); + mpilibQjButton.setText("?"); + mpilibQjButton.setToolTipText("More Info"); + mpilibQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + mpilibQjButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + mpilibQjButtonActionPerformed(evt); + } + }); mpilibCheckBox.setText("MPI Librararies [-mpilib=]:"); mpilibCheckBox.setToolTipText("Specify location of MPI library dir and use the TAU MPI Profiling and Tracing Interface."); @@ -672,139 +793,20 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - mpiPanel.add(mpilibCheckBox); - mpilibCheckBox.setBounds(10, 70, 290, 23); - - mpilibTextField.setPreferredSize(new java.awt.Dimension(200, 19)); - mpilibTextField.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - mpilibTextFieldActionPerformed(evt); - } - }); - - mpiPanel.add(mpilibTextField); - mpilibTextField.setBounds(300, 70, 200, 19); - - altmpiCheckBox.setToolTipText("Specify a different MPI library e.g., -mpilibrary=-lmpi_r"); - altmpiCheckBox.setLabel("Alt. MPI LIbrary [-mpilibrary=]:"); - altmpiCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - altmpiCheckBoxStateChanged(evt); - } - }); - - mpiPanel.add(altmpiCheckBox); - altmpiCheckBox.setBounds(10, 100, 290, 23); - - altmpiTextField.setPreferredSize(new java.awt.Dimension(200, 19)); - altmpiTextField.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - altmpiTextFieldActionPerformed(evt); - } - }); - - mpiPanel.add(altmpiTextField); - altmpiTextField.setBounds(300, 100, 200, 19); - - tagCheckBox.setText("Tag [-tag=]:"); - tagCheckBox.setToolTipText("Specify a tag to identify the installation"); - tagCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - tagCheckBoxStateChanged(evt); - } - }); - - mpiPanel.add(tagCheckBox); - tagCheckBox.setBounds(10, 130, 290, 23); - - tagTextField.setPreferredSize(new java.awt.Dimension(200, 19)); - tagTextField.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - tagTextFieldActionPerformed(evt); - } - }); - - mpiPanel.add(tagTextField); - tagTextField.setBounds(300, 130, 200, 19); - - nocomCheckBox.setText("nocomm [-nocomm]"); - nocomCheckBox.setToolTipText("Disable tracking communication events in MPI library"); - nocomCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - nocomCheckBoxStateChanged(evt); - } - }); - - mpiPanel.add(nocomCheckBox); - nocomCheckBox.setBounds(10, 160, 290, 23); - - mpitraceCheckBox.setText("MPI Trace [-MPITRACE]"); - mpitraceCheckBox.setToolTipText("Generate event traces for MPI events and their ancestors"); - mpitraceCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - mpitraceCheckBoxStateChanged(evt); - } - }); - - mpiPanel.add(mpitraceCheckBox); - mpitraceCheckBox.setBounds(10, 190, 290, 23); - - mpiincButton.setText("Browse"); - mpiincButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - mpiincButtonActionPerformed(evt); - } - }); - - mpiPanel.add(mpiincButton); - mpiincButton.setBounds(510, 40, 80, 25); - - mpilibButton.setText("Browse"); - mpilibButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - mpilibButtonActionPerformed(evt); - } - }); - - mpiPanel.add(mpilibButton); - mpilibButton.setBounds(510, 70, 80, 25); - - mpiQjButton.setText("?"); - mpiQjButton.setToolTipText("More Info"); - mpiQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - mpiQjButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - mpiQjButtonActionPerformed(evt); - } - }); - - mpiPanel.add(mpiQjButton); - mpiQjButton.setBounds(600, 10, 20, 20); - - mpiincQjButton.setText("?"); - mpiincQjButton.setToolTipText("More Info"); - mpiincQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - mpiincQjButton.addActionListener(new java.awt.event.ActionListener() { + mpilibButton.setText("Browse"); + mpilibButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - mpiincQjButtonActionPerformed(evt); + mpilibButtonActionPerformed(evt); } }); - mpiPanel.add(mpiincQjButton); - mpiincQjButton.setBounds(600, 40, 20, 20); - - mpilibQjButton.setText("?"); - mpilibQjButton.setToolTipText("More Info"); - mpilibQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - mpilibQjButton.addActionListener(new java.awt.event.ActionListener() { + mpilibTextField.setPreferredSize(new java.awt.Dimension(200, 19)); + mpilibTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - mpilibQjButtonActionPerformed(evt); + mpilibTextFieldActionPerformed(evt); } }); - mpiPanel.add(mpilibQjButton); - mpilibQjButton.setBounds(600, 70, 20, 20); - altmpiQjButton.setText("?"); altmpiQjButton.setToolTipText("More Info"); altmpiQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -814,8 +816,20 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - mpiPanel.add(altmpiQjButton); - altmpiQjButton.setBounds(600, 100, 20, 20); + altmpiCheckBox.setToolTipText("Specify a different MPI library e.g., -mpilibrary=-lmpi_r"); + altmpiCheckBox.setLabel("Alt. MPI LIbrary [-mpilibrary=]:"); + altmpiCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + altmpiCheckBoxStateChanged(evt); + } + }); + + altmpiTextField.setPreferredSize(new java.awt.Dimension(200, 19)); + altmpiTextField.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + altmpiTextFieldActionPerformed(evt); + } + }); tagQjButton.setText("?"); tagQjButton.setToolTipText("More Info"); @@ -826,8 +840,20 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - mpiPanel.add(tagQjButton); - tagQjButton.setBounds(600, 130, 20, 20); + tagCheckBox.setText("Tag [-tag=]:"); + tagCheckBox.setToolTipText("Specify a tag to identify the installation"); + tagCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + tagCheckBoxStateChanged(evt); + } + }); + + tagTextField.setPreferredSize(new java.awt.Dimension(200, 19)); + tagTextField.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + tagTextFieldActionPerformed(evt); + } + }); nocommQjButton.setText("?"); nocommQjButton.setToolTipText("More Info"); @@ -838,8 +864,13 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - mpiPanel.add(nocommQjButton); - nocommQjButton.setBounds(600, 160, 20, 20); + nocomCheckBox.setText("nocomm [-nocomm]"); + nocomCheckBox.setToolTipText("Disable tracking communication events in MPI library"); + nocomCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + nocomCheckBoxStateChanged(evt); + } + }); mpitraceQjButton.setText("?"); mpitraceQjButton.setToolTipText("More Info"); @@ -850,15 +881,116 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - mpiPanel.add(mpitraceQjButton); - mpitraceQjButton.setBounds(600, 190, 20, 20); - - messagePannel.add(mpiPanel); - mpiPanel.setBounds(10, 10, 630, 220); + mpitraceCheckBox.setText("MPI Trace [-MPITRACE]"); + mpitraceCheckBox.setToolTipText("Generate event traces for MPI events and their ancestors"); + mpitraceCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + mpitraceCheckBoxStateChanged(evt); + } + }); - shmemPanel.setLayout(null); + org.jdesktop.layout.GroupLayout mpijPanelLayout = new org.jdesktop.layout.GroupLayout(mpijPanel); + mpijPanel.setLayout(mpijPanelLayout); + mpijPanelLayout.setHorizontalGroup( + mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .addContainerGap() + .add(mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .add(mpiQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpiCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 91, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .add(mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .add(mpilibQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpilibCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 190, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .add(mpiincQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpiincCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 182, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .add(mpiincButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpiincTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .add(mpilibButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(mpilibTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE) + .add(altmpiTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE) + .add(tagTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE))))) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .add(altmpiQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(altmpiCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 216, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .add(tagQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tagCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 101, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .add(nocommQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(nocomCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 153, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .add(mpitraceQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpitraceCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 167, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + mpijPanelLayout.setVerticalGroup( + mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, mpijPanelLayout.createSequentialGroup() + .addContainerGap() + .add(mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(mpiQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(mpiCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(mpiincQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(mpiincCheckBox) + .add(mpiincButton) + .add(mpiincTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(mpilibQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(mpilibCheckBox) + .add(mpilibButton) + .add(mpilibTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(altmpiQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(altmpiCheckBox) + .add(altmpiTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(tagQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(tagCheckBox) + .add(tagTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(nocommQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(nocomCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(mpijPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(mpitraceQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(mpitraceCheckBox)) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + shmemjPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + shmemQjButton.setText("?"); + shmemQjButton.setToolTipText("More Info"); + shmemQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + shmemQjButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + shmemQjButtonActionPerformed(evt); + } + }); - shmemPanel.setBorder(new javax.swing.border.EtchedBorder()); shmemCheckBox.setText("SHMEM [-shmem]"); shmemCheckBox.setToolTipText("Specify use of TAU SHMEM wrapper library"); shmemCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -867,8 +999,14 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - shmemPanel.add(shmemCheckBox); - shmemCheckBox.setBounds(10, 10, 290, 23); + shmemincQjButton.setText("?"); + shmemincQjButton.setToolTipText("More Info"); + shmemincQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + shmemincQjButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + shmemincQjButtonActionPerformed(evt); + } + }); shmemincCheckBox.setText("Shmem Includes [-shmeminc=]:"); shmemincCheckBox.setToolTipText("Specify location of SHMEM include dir and use the TAU SHMEM Profiling and Tracing Interface"); @@ -878,8 +1016,12 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - shmemPanel.add(shmemincCheckBox); - shmemincCheckBox.setBounds(10, 40, 290, 23); + shmemincButton.setText("Browse"); + shmemincButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + shmemincButtonActionPerformed(evt); + } + }); shmemincTextField.setPreferredSize(new java.awt.Dimension(200, 19)); shmemincTextField.addActionListener(new java.awt.event.ActionListener() { @@ -888,8 +1030,14 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - shmemPanel.add(shmemincTextField); - shmemincTextField.setBounds(300, 40, 200, 19); + shmemlibQjButton.setText("?"); + shmemlibQjButton.setToolTipText("More Info"); + shmemlibQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + shmemlibQjButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + shmemlibQjButtonActionPerformed(evt); + } + }); shmemlibCheckBox.setText("Shmem Libraries [-shmemlib=]:"); shmemlibCheckBox.setToolTipText("Specify location of SHMEM library dir and use the TAU MPI Profiling and Tracing Interface"); @@ -899,8 +1047,12 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - shmemPanel.add(shmemlibCheckBox); - shmemlibCheckBox.setBounds(10, 70, 290, 23); + shmemlibButton.setText("Browse"); + shmemlibButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + shmemlibButtonActionPerformed(evt); + } + }); shmemlibTextField.setPreferredSize(new java.awt.Dimension(200, 19)); shmemlibTextField.addActionListener(new java.awt.event.ActionListener() { @@ -909,8 +1061,14 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - shmemPanel.add(shmemlibTextField); - shmemlibTextField.setBounds(300, 70, 200, 19); + altshmemQjButton.setText("?"); + altshmemQjButton.setToolTipText("More Info"); + altshmemQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + altshmemQjButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + altshmemQjButtonActionPerformed(evt); + } + }); altshmemCheckBox.setText("Alt. Shmem Library [-shmemlibrary=]:"); altshmemCheckBox.setToolTipText("Specify a different SHMEM library e.g., -shmemlibrary=-lsmac"); @@ -920,9 +1078,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - shmemPanel.add(altshmemCheckBox); - altshmemCheckBox.setBounds(10, 100, 290, 23); - altshmemTextField.setPreferredSize(new java.awt.Dimension(200, 19)); altshmemTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -930,87 +1085,96 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - shmemPanel.add(altshmemTextField); - altshmemTextField.setBounds(300, 100, 200, 19); - - shmemincButton.setText("Browse"); - shmemincButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - shmemincButtonActionPerformed(evt); - } - }); - - shmemPanel.add(shmemincButton); - shmemincButton.setBounds(510, 40, 80, 25); - - shmemlibButton.setText("Browse"); - shmemlibButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - shmemlibButtonActionPerformed(evt); - } - }); - - shmemPanel.add(shmemlibButton); - shmemlibButton.setBounds(510, 70, 80, 25); - - shmemQjButton.setText("?"); - shmemQjButton.setToolTipText("More Info"); - shmemQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - shmemQjButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - shmemQjButtonActionPerformed(evt); - } - }); - - shmemPanel.add(shmemQjButton); - shmemQjButton.setBounds(603, 10, 20, 20); - - shmemincQjButton.setText("?"); - shmemincQjButton.setToolTipText("More Info"); - shmemincQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - shmemincQjButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - shmemincQjButtonActionPerformed(evt); - } - }); - - shmemPanel.add(shmemincQjButton); - shmemincQjButton.setBounds(603, 40, 20, 20); - - shmemlibQjButton.setText("?"); - shmemlibQjButton.setToolTipText("More Info"); - shmemlibQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - shmemlibQjButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - shmemlibQjButtonActionPerformed(evt); - } - }); - - shmemPanel.add(shmemlibQjButton); - shmemlibQjButton.setBounds(603, 70, 20, 20); - - altshmemQjButton.setText("?"); - altshmemQjButton.setToolTipText("More Info"); - altshmemQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); - altshmemQjButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - altshmemQjButtonActionPerformed(evt); - } - }); - - shmemPanel.add(altshmemQjButton); - altshmemQjButton.setBounds(603, 100, 20, 20); - - messagePannel.add(shmemPanel); - shmemPanel.setBounds(10, 240, 630, 130); - + org.jdesktop.layout.GroupLayout shmemjPanelLayout = new org.jdesktop.layout.GroupLayout(shmemjPanel); + shmemjPanel.setLayout(shmemjPanelLayout); + shmemjPanelLayout.setHorizontalGroup( + shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, shmemjPanelLayout.createSequentialGroup() + .addContainerGap() + .add(shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, shmemjPanelLayout.createSequentialGroup() + .add(shmemQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(shmemCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 136, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, shmemjPanelLayout.createSequentialGroup() + .add(shmemincQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(shmemincCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 224, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(shmemincButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(shmemincTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, shmemjPanelLayout.createSequentialGroup() + .add(shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, shmemjPanelLayout.createSequentialGroup() + .add(shmemlibQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(shmemlibCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 224, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(shmemlibButton)) + .add(org.jdesktop.layout.GroupLayout.LEADING, shmemjPanelLayout.createSequentialGroup() + .add(altshmemQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(altshmemCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 262, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(altshmemTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE) + .add(shmemlibTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)))) + .addContainerGap()) + ); + shmemjPanelLayout.setVerticalGroup( + shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, shmemjPanelLayout.createSequentialGroup() + .addContainerGap() + .add(shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(shmemQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(shmemCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(shmemincQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(shmemincCheckBox) + .add(shmemincButton) + .add(shmemincTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(shmemlibQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(shmemlibCheckBox)) + .add(org.jdesktop.layout.GroupLayout.LEADING, shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(shmemlibButton) + .add(shmemlibTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, shmemjPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(altshmemQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(altshmemCheckBox)) + .add(altshmemTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + org.jdesktop.layout.GroupLayout messagePannelLayout = new org.jdesktop.layout.GroupLayout(messagePannel); + messagePannel.setLayout(messagePannelLayout); + messagePannelLayout.setHorizontalGroup( + messagePannelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, messagePannelLayout.createSequentialGroup() + .addContainerGap() + .add(messagePannelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(mpijPanel) + .add(shmemjPanel)) + .addContainerGap()) + ); + messagePannelLayout.setVerticalGroup( + messagePannelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, messagePannelLayout.createSequentialGroup() + .addContainerGap() + .add(mpijPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(shmemjPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(142, 142, 142)) + ); tabPane.addTab("Message Passing", messagePannel); - outputPanel.setLayout(null); - - profilePanel.setLayout(null); - - profilePanel.setBorder(new javax.swing.border.EtchedBorder()); + profilePanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); profileCheckBox.setSelected(true); profileCheckBox.setText("Profile [-PROFILE]"); profileCheckBox.setToolTipText("Generate profiles (summary statistics) (default)"); @@ -1020,9 +1184,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - profilePanel.add(profileCheckBox); - profileCheckBox.setBounds(10, 10, 260, 23); - compensateCheckBox.setText("Compensate [-COMPENSATE]"); compensateCheckBox.setToolTipText("Compensate for profiling measurement perturbation"); compensateCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1031,9 +1192,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - profilePanel.add(compensateCheckBox); - compensateCheckBox.setBounds(10, 30, 280, 23); - profcallpathCheckBox.setText("Callpath Profiling [-PROFILECALLPATH]"); profcallpathCheckBox.setToolTipText("Generate call path profiles"); profcallpathCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1042,9 +1200,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - profilePanel.add(profcallpathCheckBox); - profcallpathCheckBox.setBounds(10, 50, 280, 23); - profheadroomCheckBox.setText("Profile Headroom [-PROFILEHEADROOM]"); profheadroomCheckBox.setToolTipText("Track memory free (or headroom) at each func entry"); profheadroomCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1053,9 +1208,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - profilePanel.add(profheadroomCheckBox); - profheadroomCheckBox.setBounds(10, 70, 290, 23); - profmemoryCheckBox.setText("Profile Memory [-PROFILEMEMORY]"); profmemoryCheckBox.setToolTipText("Track heap memory utilization at each function entry"); profmemoryCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1064,9 +1216,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - profilePanel.add(profmemoryCheckBox); - profmemoryCheckBox.setBounds(10, 90, 280, 23); - memorypQjButton.setText("?"); memorypQjButton.setToolTipText("More Info"); memorypQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1076,9 +1225,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - profilePanel.add(memorypQjButton); - memorypQjButton.setBounds(600, 90, 20, 20); - profileQjButton.setText("?"); profileQjButton.setToolTipText("More Info"); profileQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1088,9 +1234,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - profilePanel.add(profileQjButton); - profileQjButton.setBounds(600, 10, 20, 20); - compensateQjButton.setText("?"); compensateQjButton.setToolTipText("More Info"); compensateQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1100,9 +1243,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - profilePanel.add(compensateQjButton); - compensateQjButton.setBounds(600, 30, 20, 20); - callpathQjButton.setText("?"); callpathQjButton.setToolTipText("More Info"); callpathQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1112,9 +1252,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - profilePanel.add(callpathQjButton); - callpathQjButton.setBounds(600, 50, 20, 20); - headroomQjButton.setText("?"); headroomQjButton.setToolTipText("More Info"); headroomQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1124,15 +1261,62 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - profilePanel.add(headroomQjButton); - headroomQjButton.setBounds(600, 70, 20, 20); - - outputPanel.add(profilePanel); - profilePanel.setBounds(10, 10, 630, 120); - - tracePanel.setLayout(null); - - tracePanel.setBorder(new javax.swing.border.EtchedBorder()); + org.jdesktop.layout.GroupLayout profilePanelLayout = new org.jdesktop.layout.GroupLayout(profilePanel); + profilePanel.setLayout(profilePanelLayout); + profilePanelLayout.setHorizontalGroup( + profilePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, profilePanelLayout.createSequentialGroup() + .addContainerGap() + .add(profilePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(org.jdesktop.layout.GroupLayout.LEADING, profilePanelLayout.createSequentialGroup() + .add(profilePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(profileQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(compensateQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(callpathQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(headroomQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(profilePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, profilePanelLayout.createSequentialGroup() + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(profileCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 135, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, profilePanelLayout.createSequentialGroup() + .add(2, 2, 2) + .add(compensateCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 207, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(profcallpathCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 269, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(profheadroomCheckBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE))) + .add(org.jdesktop.layout.GroupLayout.LEADING, profilePanelLayout.createSequentialGroup() + .add(memorypQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(profmemoryCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 244, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .add(325, 325, 325)) + ); + profilePanelLayout.setVerticalGroup( + profilePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, profilePanelLayout.createSequentialGroup() + .addContainerGap() + .add(profilePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(profileQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(profileCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(profilePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(compensateQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(compensateCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(profilePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(callpathQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(profcallpathCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(profilePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(headroomQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(profheadroomCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(profilePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(memorypQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(profmemoryCheckBox)) + .addContainerGap()) + ); + + tracePanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); traceCheckBox.setText("Trace [-TRACE]"); traceCheckBox.setToolTipText("Generate TAU event traces"); traceCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1141,9 +1325,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - tracePanel.add(traceCheckBox); - traceCheckBox.setBounds(10, 10, 290, 23); - epilogCheckBox.setText("Epilog [-epilog=]:"); epilogCheckBox.setToolTipText("Specify location of EPILOG Tracing package"); epilogCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1152,9 +1333,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - tracePanel.add(epilogCheckBox); - epilogCheckBox.setBounds(10, 40, 290, 23); - epilogTextField.setPreferredSize(new java.awt.Dimension(200, 19)); epilogTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1162,9 +1340,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tracePanel.add(epilogTextField); - epilogTextField.setBounds(300, 40, 200, 19); - slog2CheckBox.setText("SLOG2 [-slog2]:"); slog2CheckBox.setToolTipText("Specify use of TAU internal SLOG2 SDK/Jumpshot Package"); slog2CheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1173,9 +1348,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - tracePanel.add(slog2CheckBox); - slog2CheckBox.setBounds(10, 70, 290, 23); - slog2exCheckBox.setText("Use External SLOG2SDK [-slog2=]:"); slog2exCheckBox.setToolTipText("Specify location of SLOG2 SDK/Jumpshot Package"); slog2exCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1184,9 +1356,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - tracePanel.add(slog2exCheckBox); - slog2exCheckBox.setBounds(20, 90, 280, 23); - slog2TextField.setPreferredSize(new java.awt.Dimension(200, 19)); slog2TextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1194,9 +1363,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tracePanel.add(slog2TextField); - slog2TextField.setBounds(300, 90, 200, 19); - vtfCheckBox.setText("VTF [-vtf=]:"); vtfCheckBox.setToolTipText("Specify location of VTF3 Trace Generation Package"); vtfCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1205,9 +1371,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - tracePanel.add(vtfCheckBox); - vtfCheckBox.setBounds(10, 120, 290, 23); - vtfTextField.setPreferredSize(new java.awt.Dimension(200, 19)); vtfTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1215,9 +1378,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tracePanel.add(vtfTextField); - vtfTextField.setBounds(300, 120, 200, 19); - epilogButton.setText("Browse"); epilogButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1225,9 +1385,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tracePanel.add(epilogButton); - epilogButton.setBounds(510, 40, 80, 25); - slog2Button.setText("Browse"); slog2Button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1235,9 +1392,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tracePanel.add(slog2Button); - slog2Button.setBounds(510, 90, 80, 25); - vtfButton.setText("Browse"); vtfButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1245,9 +1399,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tracePanel.add(vtfButton); - vtfButton.setBounds(510, 120, 80, 25); - traceQjButton.setText("?"); traceQjButton.setToolTipText("More Info"); traceQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1257,9 +1408,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tracePanel.add(traceQjButton); - traceQjButton.setBounds(600, 10, 20, 20); - epilogQjButton.setText("?"); epilogQjButton.setToolTipText("More Info"); epilogQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1269,9 +1417,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tracePanel.add(epilogQjButton); - epilogQjButton.setBounds(600, 40, 20, 20); - slog2QjButton.setText("?"); slog2QjButton.setToolTipText("More Info"); slog2QjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1281,9 +1426,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tracePanel.add(slog2QjButton); - slog2QjButton.setBounds(600, 70, 20, 20); - vtfQjButton.setText("?"); vtfQjButton.setToolTipText("More Info"); vtfQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1293,9 +1435,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tracePanel.add(vtfQjButton); - vtfQjButton.setBounds(600, 120, 20, 20); - slog2eQjButton.setText("?"); slog2eQjButton.setToolTipText("More Info"); slog2eQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1305,15 +1444,122 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tracePanel.add(slog2eQjButton); - slog2eQjButton.setBounds(600, 90, 20, 20); - - outputPanel.add(tracePanel); - tracePanel.setBounds(10, 140, 630, 160); + otfQjButton.setText("?"); + otfQjButton.setToolTipText("More Info"); + otfQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); + otfQjButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + otfQjButtonActionPerformed(evt); + } + }); - jPanel5.setLayout(null); + otfCheckBox.setText("OTF [-otf=]:"); + otfCheckBox.setToolTipText("Specify location of OTF Trace Generation Package"); + otfCheckBox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); + otfCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0)); + otfCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + otfCheckBoxStateChanged(evt); + } + }); - jPanel5.setBorder(new javax.swing.border.EtchedBorder()); + jButton1.setText("Browse"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout tracePanelLayout = new org.jdesktop.layout.GroupLayout(tracePanel); + tracePanel.setLayout(tracePanelLayout); + tracePanelLayout.setHorizontalGroup( + tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, tracePanelLayout.createSequentialGroup() + .addContainerGap() + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, tracePanelLayout.createSequentialGroup() + .add(traceQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(traceCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 119, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, tracePanelLayout.createSequentialGroup() + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, tracePanelLayout.createSequentialGroup() + .add(epilogQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(epilogCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 136, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, tracePanelLayout.createSequentialGroup() + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(slog2QjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(slog2eQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(slog2CheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 124, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(org.jdesktop.layout.GroupLayout.LEADING, tracePanelLayout.createSequentialGroup() + .add(21, 21, 21) + .add(slog2exCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 241, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(epilogButton) + .add(slog2Button) + .add(vtfButton) + .add(jButton1)))))) + .add(org.jdesktop.layout.GroupLayout.LEADING, tracePanelLayout.createSequentialGroup() + .add(vtfQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(vtfCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 98, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .add(org.jdesktop.layout.GroupLayout.LEADING, tracePanelLayout.createSequentialGroup() + .add(otfQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(otfCheckBox))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(vtfTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE) + .add(slog2TextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE) + .add(epilogTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE) + .add(otfTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE)))) + .addContainerGap()) + ); + tracePanelLayout.setVerticalGroup( + tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, tracePanelLayout.createSequentialGroup() + .addContainerGap() + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(traceQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(traceCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(epilogQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(epilogButton) + .add(epilogCheckBox) + .add(epilogTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(slog2QjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(slog2CheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(slog2eQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(slog2exCheckBox) + .add(slog2Button) + .add(slog2TextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(vtfQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(vtfCheckBox) + .add(vtfButton) + .add(vtfTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tracePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(otfQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(otfCheckBox) + .add(jButton1) + .add(otfTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + + jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorder()); profphaseCheckBox.setText("Phase Profiling [-PROFILEPHASE]"); profphaseCheckBox.setToolTipText("Generate phase based profiles"); profphaseCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1322,9 +1568,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - jPanel5.add(profphaseCheckBox); - profphaseCheckBox.setBounds(10, 10, 290, 23); - depthlimitCheckBox.setText("Depth Limit [-DEPTHLIMIT]:"); depthlimitCheckBox.setToolTipText("Disable instrumentation beyond a certain depth"); depthlimitCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1333,9 +1576,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - jPanel5.add(depthlimitCheckBox); - depthlimitCheckBox.setBounds(10, 30, 290, 23); - phaseQjButton.setText("?"); phaseQjButton.setToolTipText("More Info"); phaseQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1345,9 +1585,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - jPanel5.add(phaseQjButton); - phaseQjButton.setBounds(600, 10, 20, 20); - depthQjButton.setText("?"); depthQjButton.setToolTipText("More Info"); depthQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1357,21 +1594,65 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - jPanel5.add(depthQjButton); - depthQjButton.setBounds(600, 30, 20, 20); - - outputPanel.add(jPanel5); - jPanel5.setBounds(10, 310, 630, 60); - + org.jdesktop.layout.GroupLayout jPanel5Layout = new org.jdesktop.layout.GroupLayout(jPanel5); + jPanel5.setLayout(jPanel5Layout); + jPanel5Layout.setHorizontalGroup( + jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel5Layout.createSequentialGroup() + .addContainerGap() + .add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel5Layout.createSequentialGroup() + .add(phaseQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(profphaseCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 227, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel5Layout.createSequentialGroup() + .add(depthQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(depthlimitCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 197, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .add(378, 378, 378)) + ); + jPanel5Layout.setVerticalGroup( + jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel5Layout.createSequentialGroup() + .addContainerGap() + .add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(phaseQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(profphaseCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(depthQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(depthlimitCheckBox)) + .addContainerGap()) + ); + + org.jdesktop.layout.GroupLayout outputPanelLayout = new org.jdesktop.layout.GroupLayout(outputPanel); + outputPanel.setLayout(outputPanelLayout); + outputPanelLayout.setHorizontalGroup( + outputPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, outputPanelLayout.createSequentialGroup() + .addContainerGap() + .add(outputPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(tracePanel) + .add(profilePanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 643, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel5, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 643, Short.MAX_VALUE)) + .addContainerGap()) + ); + outputPanelLayout.setVerticalGroup( + outputPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, outputPanelLayout.createSequentialGroup() + .addContainerGap() + .add(profilePanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tracePanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jPanel5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addContainerGap(32, Short.MAX_VALUE)) + ); tabPane.addTab("Tracing/Profiling", outputPanel); - threadPanel.setLayout(null); - threadPanel.setMinimumSize(new java.awt.Dimension(600, 300)); threadPanel.setPreferredSize(new java.awt.Dimension(600, 300)); - ompPanel.setLayout(null); - - ompPanel.setBorder(new javax.swing.border.EtchedBorder()); + ompPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); ompCheckBox.setText("openMP [-openmp]"); ompCheckBox.setToolTipText("Use OpenMP threads"); ompCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1380,9 +1661,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - ompPanel.add(ompCheckBox); - ompCheckBox.setBounds(10, 10, 290, 23); - opariCheckBox.setText("Use Opari [-opari=]:"); opariCheckBox.setToolTipText("Specify location of Opari OpenMP tool (use with above)"); opariCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1391,9 +1669,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - ompPanel.add(opariCheckBox); - opariCheckBox.setBounds(10, 40, 290, 23); - opariTextField.setPreferredSize(new java.awt.Dimension(200, 19)); opariTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1401,9 +1676,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - ompPanel.add(opariTextField); - opariTextField.setBounds(300, 40, 200, 19); - opariregionCheckBox.setText("Region [-opari_region]"); opariregionCheckBox.setToolTipText("Report performance data for all OpenMP regions"); opariregionCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1412,9 +1684,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - ompPanel.add(opariregionCheckBox); - opariregionCheckBox.setBounds(30, 60, 270, 23); - opariconstructCheckBox.setText("Construct [-opari_construct]"); opariconstructCheckBox.setToolTipText("Report performance data for all OpenMP constructs"); opariconstructCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1423,9 +1692,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - ompPanel.add(opariconstructCheckBox); - opariconstructCheckBox.setBounds(30, 80, 270, 23); - opariButton.setText("Browse"); opariButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1433,9 +1699,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - ompPanel.add(opariButton); - opariButton.setBounds(510, 40, 80, 25); - openmpQjButton.setText("?"); openmpQjButton.setToolTipText("More Info"); openmpQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1445,9 +1708,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - ompPanel.add(openmpQjButton); - openmpQjButton.setBounds(600, 10, 20, 20); - opariQjButton.setText("?"); opariQjButton.setToolTipText("More Info"); opariQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1457,9 +1717,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - ompPanel.add(opariQjButton); - opariQjButton.setBounds(600, 40, 20, 20); - opariregionQjButton.setText("?"); opariregionQjButton.setToolTipText("More Info"); opariregionQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1469,9 +1726,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - ompPanel.add(opariregionQjButton); - opariregionQjButton.setBounds(600, 60, 20, 20); - opariconstructQjButton.setText("?"); opariconstructQjButton.setToolTipText("More Info"); opariconstructQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1481,15 +1735,61 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - ompPanel.add(opariconstructQjButton); - opariconstructQjButton.setBounds(600, 80, 20, 20); - - threadPanel.add(ompPanel); - ompPanel.setBounds(10, 60, 630, 110); - - charmPanel.setLayout(null); - - charmPanel.setBorder(new javax.swing.border.EtchedBorder()); + org.jdesktop.layout.GroupLayout ompPanelLayout = new org.jdesktop.layout.GroupLayout(ompPanel); + ompPanel.setLayout(ompPanelLayout); + ompPanelLayout.setHorizontalGroup( + ompPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, ompPanelLayout.createSequentialGroup() + .addContainerGap() + .add(ompPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(openmpQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(opariQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(opariregionQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(opariconstructQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(ompPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, ompPanelLayout.createSequentialGroup() + .add(23, 23, 23) + .add(ompPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(opariconstructCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 202, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(org.jdesktop.layout.GroupLayout.LEADING, ompPanelLayout.createSequentialGroup() + .add(opariCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 151, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(opariButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(opariTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE)) + .add(opariregionCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 166, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .add(org.jdesktop.layout.GroupLayout.LEADING, ompPanelLayout.createSequentialGroup() + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(ompCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 145, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + ompPanelLayout.setVerticalGroup( + ompPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, ompPanelLayout.createSequentialGroup() + .addContainerGap() + .add(ompPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(openmpQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(ompCheckBox)) + .add(6, 6, 6) + .add(ompPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(opariQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(opariCheckBox) + .add(opariButton) + .add(opariTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(8, 8, 8) + .add(ompPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(opariregionQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(opariregionCheckBox)) + .add(40, 40, 40)) + .add(org.jdesktop.layout.GroupLayout.TRAILING, ompPanelLayout.createSequentialGroup() + .add(99, 99, 99) + .add(ompPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(opariconstructQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(opariconstructCheckBox)) + .add(12, 12, 12)) + ); + + charmPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); charmCheckBox.setText("charm++ [-charm=]:"); charmCheckBox.setToolTipText("Use charm++ thread package"); charmCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1498,9 +1798,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - charmPanel.add(charmCheckBox); - charmCheckBox.setBounds(10, 10, 290, 23); - charmTextField.setPreferredSize(new java.awt.Dimension(200, 19)); charmTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1508,9 +1805,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - charmPanel.add(charmTextField); - charmTextField.setBounds(300, 10, 200, 19); - charmButton.setText("Browse"); charmButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1518,9 +1812,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - charmPanel.add(charmButton); - charmButton.setBounds(510, 10, 80, 25); - charmQjButton.setText("?"); charmQjButton.setToolTipText("More Info"); charmQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1530,15 +1821,34 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - charmPanel.add(charmQjButton); - charmQjButton.setBounds(600, 10, 20, 20); - - threadPanel.add(charmPanel); - charmPanel.setBounds(10, 180, 630, 40); - - tulipthreadsPanel.setLayout(null); - - tulipthreadsPanel.setBorder(new javax.swing.border.EtchedBorder()); + org.jdesktop.layout.GroupLayout charmPanelLayout = new org.jdesktop.layout.GroupLayout(charmPanel); + charmPanel.setLayout(charmPanelLayout); + charmPanelLayout.setHorizontalGroup( + charmPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, charmPanelLayout.createSequentialGroup() + .addContainerGap() + .add(charmQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(charmCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 160, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(charmButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(charmTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE) + .addContainerGap()) + ); + charmPanelLayout.setVerticalGroup( + charmPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, charmPanelLayout.createSequentialGroup() + .addContainerGap() + .add(charmPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(charmQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(charmCheckBox) + .add(charmButton) + .add(charmTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(18, 18, 18)) + ); + + tulipthreadsPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); tulipCheckBox.setText("tulip threads [-tulipthread=]:"); tulipCheckBox.setToolTipText("Specify location of Tulip/Smarts package"); tulipCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1547,9 +1857,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - tulipthreadsPanel.add(tulipCheckBox); - tulipCheckBox.setBounds(10, 10, 290, 23); - tulipTextField.setPreferredSize(new java.awt.Dimension(200, 19)); tulipTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1557,9 +1864,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tulipthreadsPanel.add(tulipTextField); - tulipTextField.setBounds(300, 10, 200, 19); - smartCheckBox.setText("Use smart API [-smart]"); smartCheckBox.setToolTipText("Use SMARTS API for threads (use with above)"); smartCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1568,9 +1872,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - tulipthreadsPanel.add(smartCheckBox); - smartCheckBox.setBounds(20, 30, 280, 23); - tulipButton.setText("Browse"); tulipButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1578,9 +1879,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tulipthreadsPanel.add(tulipButton); - tulipButton.setBounds(510, 10, 80, 25); - tulipQjButton.setText("?"); tulipQjButton.setToolTipText("More Info"); tulipQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1590,9 +1888,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tulipthreadsPanel.add(tulipQjButton); - tulipQjButton.setBounds(600, 10, 20, 20); - smartQjButton.setText("?"); smartQjButton.setToolTipText("More Info"); smartQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1602,15 +1897,45 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - tulipthreadsPanel.add(smartQjButton); - smartQjButton.setBounds(600, 30, 20, 20); - - threadPanel.add(tulipthreadsPanel); - tulipthreadsPanel.setBounds(10, 280, 630, 70); - - pthreadsPanel.setLayout(null); - - pthreadsPanel.setBorder(new javax.swing.border.EtchedBorder()); + org.jdesktop.layout.GroupLayout tulipthreadsPanelLayout = new org.jdesktop.layout.GroupLayout(tulipthreadsPanel); + tulipthreadsPanel.setLayout(tulipthreadsPanelLayout); + tulipthreadsPanelLayout.setHorizontalGroup( + tulipthreadsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, tulipthreadsPanelLayout.createSequentialGroup() + .addContainerGap() + .add(tulipthreadsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(tulipQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(smartQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tulipthreadsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, tulipthreadsPanelLayout.createSequentialGroup() + .add(tulipCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 207, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tulipButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tulipTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 298, Short.MAX_VALUE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, tulipthreadsPanelLayout.createSequentialGroup() + .add(21, 21, 21) + .add(smartCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 168, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + tulipthreadsPanelLayout.setVerticalGroup( + tulipthreadsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, tulipthreadsPanelLayout.createSequentialGroup() + .addContainerGap() + .add(tulipthreadsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(tulipQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(tulipCheckBox) + .add(tulipButton) + .add(tulipTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tulipthreadsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(smartCheckBox) + .add(smartQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + pthreadsPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); pthreadsCheckBox.setText("pthreads [-pthread]"); pthreadsCheckBox.setToolTipText("Use pthread thread package"); pthreadsCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1619,9 +1944,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - pthreadsPanel.add(pthreadsCheckBox); - pthreadsCheckBox.setBounds(10, 10, 290, 23); - pthreadsQjButton.setText("?"); pthreadsQjButton.setToolTipText("More Info"); pthreadsQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1631,15 +1953,28 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - pthreadsPanel.add(pthreadsQjButton); - pthreadsQjButton.setBounds(600, 10, 20, 20); - - threadPanel.add(pthreadsPanel); - pthreadsPanel.setBounds(10, 10, 630, 40); - - sprocPanel.setLayout(null); - - sprocPanel.setBorder(new javax.swing.border.EtchedBorder()); + org.jdesktop.layout.GroupLayout pthreadsPanelLayout = new org.jdesktop.layout.GroupLayout(pthreadsPanel); + pthreadsPanel.setLayout(pthreadsPanelLayout); + pthreadsPanelLayout.setHorizontalGroup( + pthreadsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, pthreadsPanelLayout.createSequentialGroup() + .addContainerGap() + .add(pthreadsQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pthreadsCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 148, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(457, 457, 457)) + ); + pthreadsPanelLayout.setVerticalGroup( + pthreadsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, pthreadsPanelLayout.createSequentialGroup() + .addContainerGap() + .add(pthreadsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(pthreadsQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(pthreadsCheckBox)) + .add(10, 10, 10)) + ); + + sprocPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); sprocCheckBox.setText("sproc [-sproc]"); sprocCheckBox.setToolTipText("Use SGI sproc thread package"); sprocCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1648,9 +1983,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - sprocPanel.add(sprocCheckBox); - sprocCheckBox.setBounds(10, 10, 290, 23); - sprocQjButton.setText("?"); sprocQjButton.setToolTipText("More Info"); sprocQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1660,21 +1992,61 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - sprocPanel.add(sprocQjButton); - sprocQjButton.setBounds(600, 10, 20, 20); - - threadPanel.add(sprocPanel); - sprocPanel.setBounds(10, 230, 630, 40); - + org.jdesktop.layout.GroupLayout sprocPanelLayout = new org.jdesktop.layout.GroupLayout(sprocPanel); + sprocPanel.setLayout(sprocPanelLayout); + sprocPanelLayout.setHorizontalGroup( + sprocPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, sprocPanelLayout.createSequentialGroup() + .addContainerGap() + .add(sprocQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(sprocCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 113, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(492, 492, 492)) + ); + sprocPanelLayout.setVerticalGroup( + sprocPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, sprocPanelLayout.createSequentialGroup() + .addContainerGap() + .add(sprocPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(sprocQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(sprocCheckBox)) + .add(10, 10, 10)) + ); + + org.jdesktop.layout.GroupLayout threadPanelLayout = new org.jdesktop.layout.GroupLayout(threadPanel); + threadPanel.setLayout(threadPanelLayout); + threadPanelLayout.setHorizontalGroup( + threadPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, threadPanelLayout.createSequentialGroup() + .addContainerGap() + .add(threadPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pthreadsPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 643, Short.MAX_VALUE) + .add(ompPanel) + .add(charmPanel) + .add(sprocPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 643, Short.MAX_VALUE) + .add(tulipthreadsPanel)) + .addContainerGap()) + ); + threadPanelLayout.setVerticalGroup( + threadPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, threadPanelLayout.createSequentialGroup() + .addContainerGap() + .add(pthreadsPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(7, 7, 7) + .add(ompPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 135, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(charmPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 59, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(sprocPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tulipthreadsPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addContainerGap(74, Short.MAX_VALUE)) + ); tabPane.addTab("Threads", threadPanel); - generalPanel.setLayout(null); - generalPanel.setMinimumSize(new java.awt.Dimension(600, 300)); generalPanel.setPreferredSize(new java.awt.Dimension(600, 300)); - dyninstPanel.setLayout(null); - - dyninstPanel.setBorder(new javax.swing.border.EtchedBorder()); + dyninstPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); dyninstCheckBox.setText("Dyninst [-dyninst=]:"); dyninstCheckBox.setToolTipText("Specify location of DynInst Package"); dyninstCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1683,9 +2055,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - dyninstPanel.add(dyninstCheckBox); - dyninstCheckBox.setBounds(10, 10, 280, 23); - dyninstTextField.setPreferredSize(new java.awt.Dimension(200, 19)); dyninstTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1693,9 +2062,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dyninstPanel.add(dyninstTextField); - dyninstTextField.setBounds(300, 10, 200, 19); - dyninstButton.setText("Browse"); dyninstButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1703,9 +2069,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dyninstPanel.add(dyninstButton); - dyninstButton.setBounds(510, 10, 80, 25); - dyninstQjButton.setText("?"); dyninstQjButton.setToolTipText("More Info"); dyninstQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1715,15 +2078,34 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dyninstPanel.add(dyninstQjButton); - dyninstQjButton.setBounds(600, 10, 20, 20); - - generalPanel.add(dyninstPanel); - dyninstPanel.setBounds(10, 60, 630, 40); - - pclPanel.setLayout(null); - - pclPanel.setBorder(new javax.swing.border.EtchedBorder()); + org.jdesktop.layout.GroupLayout dyninstPanelLayout = new org.jdesktop.layout.GroupLayout(dyninstPanel); + dyninstPanel.setLayout(dyninstPanelLayout); + dyninstPanelLayout.setHorizontalGroup( + dyninstPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, dyninstPanelLayout.createSequentialGroup() + .addContainerGap() + .add(dyninstQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(dyninstCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 154, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(dyninstButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(dyninstTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 351, Short.MAX_VALUE) + .addContainerGap()) + ); + dyninstPanelLayout.setVerticalGroup( + dyninstPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, dyninstPanelLayout.createSequentialGroup() + .addContainerGap() + .add(dyninstPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(dyninstQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(dyninstCheckBox) + .add(dyninstButton) + .add(dyninstTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + + pclPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); pclCheckBox.setText("PCL [-pcl=]:"); pclCheckBox.setToolTipText("Specify location of PCL (Performance Counter Library)"); pclCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1732,9 +2114,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - pclPanel.add(pclCheckBox); - pclCheckBox.setBounds(10, 10, 280, 23); - pclTextField.setPreferredSize(new java.awt.Dimension(200, 19)); pclTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1742,9 +2121,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - pclPanel.add(pclTextField); - pclTextField.setBounds(300, 10, 200, 19); - pclButton.setText("Browse"); pclButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1752,9 +2128,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - pclPanel.add(pclButton); - pclButton.setBounds(510, 10, 80, 25); - pclQjButton.setText("?"); pclQjButton.setToolTipText("More Info"); pclQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1762,17 +2135,36 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { public void actionPerformed(java.awt.event.ActionEvent evt) { pclQjButtonActionPerformed(evt); } - }); - - pclPanel.add(pclQjButton); - pclQjButton.setBounds(600, 10, 20, 20); - - generalPanel.add(pclPanel); - pclPanel.setBounds(10, 10, 630, 40); - - timePanel.setLayout(null); + }); - timePanel.setBorder(new javax.swing.border.EtchedBorder()); + org.jdesktop.layout.GroupLayout pclPanelLayout = new org.jdesktop.layout.GroupLayout(pclPanel); + pclPanel.setLayout(pclPanelLayout); + pclPanelLayout.setHorizontalGroup( + pclPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, pclPanelLayout.createSequentialGroup() + .addContainerGap() + .add(pclQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pclCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 99, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pclButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pclTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 406, Short.MAX_VALUE) + .addContainerGap()) + ); + pclPanelLayout.setVerticalGroup( + pclPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, pclPanelLayout.createSequentialGroup() + .addContainerGap() + .add(pclPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(pclQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(pclCheckBox) + .add(pclButton) + .add(pclTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + + timePanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); cputimeCheckBox.setText("CPU Time [-CPUTIME]"); cputimeCheckBox.setToolTipText("Use usertime+system time instead of wallclock time"); cputimeCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1781,9 +2173,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - timePanel.add(cputimeCheckBox); - cputimeCheckBox.setBounds(10, 30, 280, 23); - craytimeCheckBox.setText("Cray Timers [-CRAYTIMERS]"); craytimeCheckBox.setToolTipText("Use fast nanosecond timers on Cray X1 systems"); craytimeCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1792,9 +2181,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - timePanel.add(craytimeCheckBox); - craytimeCheckBox.setBounds(10, 60, 290, 23); - linuxtimeCheckBox.setText("Linux Timers [-LINUXTIMERS]"); linuxtimeCheckBox.setToolTipText("Use low overhead TSC Counter for wallclock time"); linuxtimeCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1803,9 +2189,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - timePanel.add(linuxtimeCheckBox); - linuxtimeCheckBox.setBounds(10, 80, 300, 23); - sgitimeCheckBox.setText("SGI Timers [-SGITIMERS]"); sgitimeCheckBox.setToolTipText("Use fast nanosecond timers on SGI R10000 systems"); sgitimeCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1814,12 +2197,7 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - timePanel.add(sgitimeCheckBox); - sgitimeCheckBox.setBounds(10, 100, 300, 23); - jLabel2.setText("Timer Type"); - timePanel.add(jLabel2); - jLabel2.setBounds(70, 10, 120, 15); cputQjButton.setText("?"); cputQjButton.setToolTipText("More Info"); @@ -1830,9 +2208,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - timePanel.add(cputQjButton); - cputQjButton.setBounds(600, 30, 20, 20); - craytQjButton.setText("?"); craytQjButton.setToolTipText("More Info"); craytQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1842,9 +2217,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - timePanel.add(craytQjButton); - craytQjButton.setBounds(600, 60, 20, 20); - linuxtQjButton.setText("?"); linuxtQjButton.setToolTipText("More Info"); linuxtQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1854,9 +2226,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - timePanel.add(linuxtQjButton); - linuxtQjButton.setBounds(600, 80, 20, 20); - sgitQjButton.setText("?"); sgitQjButton.setToolTipText("More Info"); sgitQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1866,15 +2235,58 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - timePanel.add(sgitQjButton); - sgitQjButton.setBounds(600, 100, 20, 20); - - generalPanel.add(timePanel); - timePanel.setBounds(10, 210, 630, 130); - - musePanel.setLayout(null); - - musePanel.setBorder(new javax.swing.border.EtchedBorder()); + org.jdesktop.layout.GroupLayout timePanelLayout = new org.jdesktop.layout.GroupLayout(timePanel); + timePanel.setLayout(timePanelLayout); + timePanelLayout.setHorizontalGroup( + timePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, timePanelLayout.createSequentialGroup() + .addContainerGap() + .add(timePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, timePanelLayout.createSequentialGroup() + .add(timePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(craytQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(linuxtQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(sgitQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(timePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(craytimeCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 290, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(org.jdesktop.layout.GroupLayout.LEADING, timePanelLayout.createSequentialGroup() + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(timePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(sgitimeCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 300, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(linuxtimeCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 300, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))) + .add(org.jdesktop.layout.GroupLayout.LEADING, timePanelLayout.createSequentialGroup() + .add(22, 22, 22) + .add(cputimeCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 280, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 120, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(cputQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(305, 305, 305)) + ); + timePanelLayout.setVerticalGroup( + timePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, timePanelLayout.createSequentialGroup() + .addContainerGap() + .add(jLabel2) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 6, Short.MAX_VALUE) + .add(timePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) + .add(cputimeCheckBox) + .add(cputQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(timePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(craytQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(craytimeCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(timePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(linuxtimeCheckBox) + .add(linuxtQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(timePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(sgitimeCheckBox) + .add(sgitQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + + musePanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); museCheckBox.setText("Muse [-muse]"); museCheckBox.setToolTipText("Specify the use of MAGNET/MUSE"); museCheckBox.addActionListener(new java.awt.event.ActionListener() { @@ -1883,9 +2295,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - musePanel.add(museCheckBox); - museCheckBox.setBounds(5, 5, 300, 23); - museeventCheckBox.setText("Muse Event [-muse_event]"); museeventCheckBox.setToolTipText("Specify the use of MAGNET/MUSE w/ non-monotonically increasing values"); museeventCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1894,9 +2303,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - musePanel.add(museeventCheckBox); - museeventCheckBox.setBounds(20, 30, 290, 23); - musemultCheckBox.setText(" Muse Multiple [-muse_multiple]"); musemultCheckBox.setToolTipText("Specify the use of MAGNET/MUSE w/ monotonically increasing values"); musemultCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1905,9 +2311,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - musePanel.add(musemultCheckBox); - musemultCheckBox.setBounds(20, 50, 290, 23); - musemQjButton.setText("?"); musemQjButton.setToolTipText("More Info"); musemQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1917,9 +2320,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - musePanel.add(musemQjButton); - musemQjButton.setBounds(600, 50, 20, 20); - museeQjButton.setText("?"); museeQjButton.setToolTipText("More Info"); museeQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1929,9 +2329,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - musePanel.add(museeQjButton); - museeQjButton.setBounds(600, 30, 20, 20); - museQjButton.setText("?"); museQjButton.setToolTipText("More Info"); museQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -1941,19 +2338,75 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - musePanel.add(museQjButton); - museQjButton.setBounds(600, 10, 20, 20); - - generalPanel.add(musePanel); - musePanel.setBounds(10, 110, 630, 90); - + org.jdesktop.layout.GroupLayout musePanelLayout = new org.jdesktop.layout.GroupLayout(musePanel); + musePanel.setLayout(musePanelLayout); + musePanelLayout.setHorizontalGroup( + musePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, musePanelLayout.createSequentialGroup() + .addContainerGap() + .add(musePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(musemQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(org.jdesktop.layout.GroupLayout.LEADING, musePanelLayout.createSequentialGroup() + .add(musePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(museQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(museeQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(musePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(museCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(org.jdesktop.layout.GroupLayout.LEADING, musePanelLayout.createSequentialGroup() + .add(21, 21, 21) + .add(musePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(musemultCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 229, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(museeventCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 190, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))))) + .add(355, 355, 355)) + ); + musePanelLayout.setVerticalGroup( + musePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, musePanelLayout.createSequentialGroup() + .addContainerGap() + .add(musePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(museQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(museCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(musePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(museeQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(museeventCheckBox)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 6, Short.MAX_VALUE) + .add(musePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(musemQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(musemultCheckBox)) + .add(23, 23, 23)) + ); + + org.jdesktop.layout.GroupLayout generalPanelLayout = new org.jdesktop.layout.GroupLayout(generalPanel); + generalPanel.setLayout(generalPanelLayout); + generalPanelLayout.setHorizontalGroup( + generalPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, generalPanelLayout.createSequentialGroup() + .addContainerGap() + .add(generalPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pclPanel) + .add(dyninstPanel) + .add(musePanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 643, Short.MAX_VALUE) + .add(timePanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 643, Short.MAX_VALUE)) + .addContainerGap()) + ); + generalPanelLayout.setVerticalGroup( + generalPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, generalPanelLayout.createSequentialGroup() + .addContainerGap() + .add(pclPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(dyninstPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(musePanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(timePanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addContainerGap(78, Short.MAX_VALUE)) + ); tabPane.addTab("Data Tools", generalPanel); - jPanel1.setLayout(null); - - pythonPanel.setLayout(null); - - pythonPanel.setBorder(new javax.swing.border.EtchedBorder()); + pythonPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); usepythonCheckBox.setText("Use Python [-pythoninc=]:"); usepythonCheckBox.setToolTipText("Specify location of Python include directory"); usepythonCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1962,9 +2415,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - pythonPanel.add(usepythonCheckBox); - usepythonCheckBox.setBounds(10, 30, 290, 23); - pythonincField.setPreferredSize(new java.awt.Dimension(200, 19)); pythonincField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1972,9 +2422,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - pythonPanel.add(pythonincField); - pythonincField.setBounds(300, 30, 200, 19); - pythonlibCheckBox.setText("Python Libraries [-pythonlib=]:"); pythonlibCheckBox.setToolTipText("Specify location of Python lib directory"); pythonlibCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -1983,9 +2430,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - pythonPanel.add(pythonlibCheckBox); - pythonlibCheckBox.setBounds(10, 60, 290, 23); - pythonlibField.setPreferredSize(new java.awt.Dimension(200, 19)); pythonlibField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -1993,9 +2437,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - pythonPanel.add(pythonlibField); - pythonlibField.setBounds(300, 60, 200, 19); - pythonincButton.setText("Browse"); pythonincButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -2003,9 +2444,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - pythonPanel.add(pythonincButton); - pythonincButton.setBounds(510, 30, 80, 25); - pythonlibButton.setText("Browse"); pythonlibButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -2013,9 +2451,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - pythonPanel.add(pythonlibButton); - pythonlibButton.setBounds(510, 60, 80, 25); - pythonincQjButton.setText("?"); pythonincQjButton.setToolTipText("More Info"); pythonincQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -2025,9 +2460,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - pythonPanel.add(pythonincQjButton); - pythonincQjButton.setBounds(600, 30, 20, 20); - pythonlibQjButton.setText("?"); pythonlibQjButton.setToolTipText("More Info"); pythonlibQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -2037,19 +2469,48 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - pythonPanel.add(pythonlibQjButton); - pythonlibQjButton.setBounds(600, 60, 20, 20); - - jLabel3.setText("For use only when measuring the performance of python programs."); - pythonPanel.add(jLabel3); - jLabel3.setBounds(10, 10, 590, 15); - - jPanel1.add(pythonPanel); - pythonPanel.setBounds(10, 10, 630, 90); - - jdkPanel.setLayout(null); - - jdkPanel.setBorder(new javax.swing.border.EtchedBorder()); + org.jdesktop.layout.GroupLayout pythonPanelLayout = new org.jdesktop.layout.GroupLayout(pythonPanel); + pythonPanel.setLayout(pythonPanelLayout); + pythonPanelLayout.setHorizontalGroup( + pythonPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, pythonPanelLayout.createSequentialGroup() + .addContainerGap() + .add(pythonPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pythonincQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(pythonlibQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pythonPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(usepythonCheckBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.TRAILING, pythonlibCheckBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 219, Short.MAX_VALUE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pythonPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pythonincButton) + .add(pythonlibButton)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pythonPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pythonincField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 286, Short.MAX_VALUE) + .add(pythonlibField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 286, Short.MAX_VALUE)) + .addContainerGap()) + ); + pythonPanelLayout.setVerticalGroup( + pythonPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, pythonPanelLayout.createSequentialGroup() + .addContainerGap() + .add(pythonPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(pythonincQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(usepythonCheckBox) + .add(pythonincButton) + .add(pythonincField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(6, 6, 6) + .add(pythonPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(pythonlibQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(pythonlibCheckBox) + .add(pythonlibButton) + .add(pythonlibField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + + jdkPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); usejdkCheckBox.setText("Use JDK [-jdk=]:"); usejdkCheckBox.setToolTipText("Specify location of JAVA 2 Development Kit (jdk1.2+)"); usejdkCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -2058,9 +2519,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - jdkPanel.add(usejdkCheckBox); - usejdkCheckBox.setBounds(10, 30, 280, 23); - jdkField.setPreferredSize(new java.awt.Dimension(200, 19)); jdkField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -2068,9 +2526,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - jdkPanel.add(jdkField); - jdkField.setBounds(300, 30, 200, 19); - usejavatimersCheckBox.setText("Java Timers [-JAVACPUTIME]"); usejavatimersCheckBox.setToolTipText("Use JVMPI thread specific cpu time"); usejavatimersCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -2079,9 +2534,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - jdkPanel.add(usejavatimersCheckBox); - usejavatimersCheckBox.setBounds(10, 60, 290, 23); - jdkButton.setText("Browse"); jdkButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -2089,12 +2541,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - jdkPanel.add(jdkButton); - jdkButton.setBounds(510, 30, 80, 25); - - jLabel1.setText("For use only when measuring the performance of Java programs with JVMPI."); - jdkPanel.add(jLabel1); - jLabel1.setBounds(10, 10, 580, 15); + jLabel1.setText("For use only when measuring the performance of Java programs."); jdkQjButton.setText("?"); jdkQjButton.setToolTipText("More Info"); @@ -2105,9 +2552,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - jdkPanel.add(jdkQjButton); - jdkQjButton.setBounds(600, 30, 20, 20); - javatQjButton.setText("?"); javatQjButton.setToolTipText("More Info"); javatQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -2117,15 +2561,49 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - jdkPanel.add(javatQjButton); - javatQjButton.setBounds(600, 60, 20, 20); - - jPanel1.add(jdkPanel); - jdkPanel.setBounds(10, 110, 630, 90); - - dirarcPanel.setLayout(null); - - dirarcPanel.setBorder(new javax.swing.border.EtchedBorder()); + org.jdesktop.layout.GroupLayout jdkPanelLayout = new org.jdesktop.layout.GroupLayout(jdkPanel); + jdkPanel.setLayout(jdkPanelLayout); + jdkPanelLayout.setHorizontalGroup( + jdkPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jdkPanelLayout.createSequentialGroup() + .addContainerGap() + .add(jdkPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jdkPanelLayout.createSequentialGroup() + .add(jdkPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(org.jdesktop.layout.GroupLayout.LEADING, jdkPanelLayout.createSequentialGroup() + .add(jdkQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(usejdkCheckBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, jdkPanelLayout.createSequentialGroup() + .add(javatQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(usejavatimersCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 204, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jdkButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jdkField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 301, Short.MAX_VALUE)) + .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 405, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + jdkPanelLayout.setVerticalGroup( + jdkPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jdkPanelLayout.createSequentialGroup() + .addContainerGap() + .add(jLabel1) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jdkPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jdkQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(usejdkCheckBox) + .add(jdkButton) + .add(jdkField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jdkPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(javatQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(usejavatimersCheckBox)) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + dirarcPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); installdirCheckBox.setText("Custom Installation Directory [-prefix=]:"); installdirCheckBox.setToolTipText("Specify a target installation directory"); installdirCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -2134,9 +2612,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - dirarcPanel.add(installdirCheckBox); - installdirCheckBox.setBounds(10, 10, 290, 23); - installdirField.setPreferredSize(new java.awt.Dimension(200, 19)); installdirField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -2144,9 +2619,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dirarcPanel.add(installdirField); - installdirField.setBounds(300, 10, 200, 19); - archdirCheckBox.setText("Custom Arch Directory [-exec-prefix=]:"); archdirCheckBox.setToolTipText("Specify a target architecture directory"); archdirCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -2155,9 +2627,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - dirarcPanel.add(archdirCheckBox); - archdirCheckBox.setBounds(10, 40, 290, 23); - archdirField.setPreferredSize(new java.awt.Dimension(200, 19)); archdirField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -2165,12 +2634,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dirarcPanel.add(archdirField); - archdirField.setBounds(300, 40, 200, 19); - archLabel.setText("Architecture [-arch=]:"); - dirarcPanel.add(archLabel); - archLabel.setBounds(10, 70, 280, 15); archCombo.setToolTipText("Specify a target architecture"); archCombo.addActionListener(new java.awt.event.ActionListener() { @@ -2179,9 +2643,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dirarcPanel.add(archCombo); - archCombo.setBounds(300, 70, 90, 24); - useroptCheckBox.setText("Use User Options [-useropt=]:"); useroptCheckBox.setToolTipText("list of commandline parameters"); useroptCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -2190,9 +2651,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - dirarcPanel.add(useroptCheckBox); - useroptCheckBox.setBounds(10, 100, 280, 23); - useroptField.setPreferredSize(new java.awt.Dimension(200, 19)); useroptField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -2200,9 +2658,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dirarcPanel.add(useroptField); - useroptField.setBounds(300, 100, 200, 19); - noexceptCheckBox.setText("No Exceptions [-noex]"); noexceptCheckBox.setToolTipText("Use no exceptions while compiling the library"); noexceptCheckBox.addChangeListener(new javax.swing.event.ChangeListener() { @@ -2211,9 +2666,6 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { } }); - dirarcPanel.add(noexceptCheckBox); - noexceptCheckBox.setBounds(10, 130, 280, 23); - installdirButton.setText("Browse"); installdirButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -2221,9 +2673,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dirarcPanel.add(installdirButton); - installdirButton.setBounds(510, 10, 80, 25); - archdirButton.setText("Browse"); archdirButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -2231,9 +2680,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dirarcPanel.add(archdirButton); - archdirButton.setBounds(510, 40, 80, 25); - custinstQjButton.setText("?"); custinstQjButton.setToolTipText("More Info"); custinstQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -2243,9 +2689,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dirarcPanel.add(custinstQjButton); - custinstQjButton.setBounds(600, 10, 20, 20); - custarchQjButton.setText("?"); custarchQjButton.setToolTipText("More Info"); custarchQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -2255,9 +2698,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dirarcPanel.add(custarchQjButton); - custarchQjButton.setBounds(600, 40, 20, 20); - archQjButton.setText("?"); archQjButton.setToolTipText("More Info"); archQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -2267,9 +2707,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dirarcPanel.add(archQjButton); - archQjButton.setBounds(600, 70, 20, 20); - useroptQjButton.setText("?"); useroptQjButton.setToolTipText("More Info"); useroptQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -2279,9 +2716,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dirarcPanel.add(useroptQjButton); - useroptQjButton.setBounds(600, 100, 20, 20); - noexQjButton.setText("?"); noexQjButton.setToolTipText("More Info"); noexQjButton.setMargin(new java.awt.Insets(1, 1, 1, 1)); @@ -2291,20 +2725,216 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - dirarcPanel.add(noexQjButton); - noexQjButton.setBounds(600, 130, 20, 20); + org.jdesktop.layout.GroupLayout dirarcPanelLayout = new org.jdesktop.layout.GroupLayout(dirarcPanel); + dirarcPanel.setLayout(dirarcPanelLayout); + dirarcPanelLayout.setHorizontalGroup( + dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createSequentialGroup() + .addContainerGap() + .add(dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createSequentialGroup() + .add(dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createSequentialGroup() + .add(custinstQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(installdirCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 279, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createSequentialGroup() + .add(useroptQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(useroptCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 215, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createSequentialGroup() + .add(archQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(archLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE)) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createSequentialGroup() + .add(custarchQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(archdirCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 271, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createSequentialGroup() + .add(dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(installdirButton) + .add(archdirButton)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(installdirField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE) + .add(archdirField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)) + .add(archCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(useroptField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 310, Short.MAX_VALUE))) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createSequentialGroup() + .add(noexQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(noexceptCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 163, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + dirarcPanelLayout.setVerticalGroup( + dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createSequentialGroup() + .addContainerGap() + .add(dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(custinstQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(installdirCheckBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 23, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(installdirButton) + .add(installdirField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createSequentialGroup() + .add(6, 6, 6) + .add(dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(custarchQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(archdirCheckBox) + .add(archdirButton))) + .add(org.jdesktop.layout.GroupLayout.LEADING, dirarcPanelLayout.createSequentialGroup() + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(archdirField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .add(7, 7, 7) + .add(dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(archQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(archLabel) + .add(archCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(10, 10, 10) + .add(dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(useroptQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(useroptCheckBox) + .add(useroptField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(dirarcPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(noexQjButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(noexceptCheckBox)) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel1Layout.createSequentialGroup() + .addContainerGap() + .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(dirarcPanel) + .add(pythonPanel) + .add(jdkPanel)) + .addContainerGap()) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel1Layout.createSequentialGroup() + .addContainerGap() + .add(pythonPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jdkPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(dirarcPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addContainerGap(100, Short.MAX_VALUE)) + ); + tabPane.addTab("Misc", jPanel1); - jPanel1.add(dirarcPanel); - dirarcPanel.setBounds(10, 210, 630, 160); + jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + getConfs(allconf,".all_configs"); + allconfComboBox.setSelectedIndex(allconf.size()-1); - tabPane.addTab("Misc", jPanel1); + loadallconfButton.setText("Load"); + loadallconfButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + loadallconfButtonActionPerformed(evt); + } + }); + + getConfs(savedconf,".saved_configs"); + savedconfComboBox.setSelectedIndex(savedconf.size()-1); + + loadsavedconfButton.setText("Load"); + loadsavedconfButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + loadsavedconfButtonActionPerformed(evt); + } + }); + + jLabel3.setText("all_configs"); - getContentPane().add(tabPane); - tabPane.setBounds(10, 10, 660, 480); + jLabel4.setText("saved_configs"); - commandPanel.setLayout(null); + removeconfButton.setText("Remove Selected"); + removeconfButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + removeconfButtonActionPerformed(evt); + } + }); - commandPanel.setBorder(new javax.swing.border.EtchedBorder()); + saveconfButton.setText("Save Current Configuration As: "); + saveconfButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + saveconfButtonActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel3Layout.createSequentialGroup() + .addContainerGap() + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(allconfComboBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 615, Short.MAX_VALUE) + .add(savedconfComboBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 615, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel3Layout.createSequentialGroup() + .add(loadsavedconfButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(removeconfButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 150, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 70, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(loadallconfButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel3Layout.createSequentialGroup() + .add(saveconfButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 240, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(custconfTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 369, Short.MAX_VALUE))) + .addContainerGap()) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel3Layout.createSequentialGroup() + .addContainerGap() + .add(jLabel3) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(allconfComboBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(loadallconfButton) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jLabel4) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(savedconfComboBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(loadsavedconfButton) + .add(removeconfButton)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(saveconfButton) + .add(custconfTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + + org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel2Layout.createSequentialGroup() + .addContainerGap() + .add(jPanel3) + .addContainerGap()) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel2Layout.createSequentialGroup() + .add(10, 10, 10) + .add(jPanel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addContainerGap(253, Short.MAX_VALUE)) + ); + tabPane.addTab("Configurations", jPanel2); + + commandPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); confButton.setText("Configure Tau"); confButton.setToolTipText("Run the generated TAU configure command"); confButton.addActionListener(new java.awt.event.ActionListener() { @@ -2313,19 +2943,12 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - commandPanel.add(confButton); - confButton.setBounds(10, 50, 150, 25); - confjScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); confjScrollPane.setAutoscrolls(true); - confjScrollPane.setPreferredSize(new java.awt.Dimension(600, 35)); confjScrollPane.setRequestFocusEnabled(false); commandTextArea.setText("./configure"); confjScrollPane.setViewportView(commandTextArea); - commandPanel.add(confjScrollPane); - confjScrollPane.setBounds(10, 10, 630, 35); - makejButton.setText("Make Tau"); makejButton.setToolTipText("Clean TAU and install the most recent configuration specified"); makejButton.addActionListener(new java.awt.event.ActionListener() { @@ -2334,19 +2957,12 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - commandPanel.add(makejButton); - makejButton.setBounds(170, 50, 150, 25); - instjScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); instjScrollPane.setAutoscrolls(true); - instjScrollPane.setPreferredSize(new java.awt.Dimension(600, 35)); instjScrollPane.setRequestFocusEnabled(false); instTextArea.setText("./installtau"); instjScrollPane.setViewportView(instTextArea); - commandPanel.add(instjScrollPane); - instjScrollPane.setBounds(10, 90, 630, 35); - instButton.setText("Install Tau"); instButton.setToolTipText("Install TAU with the indicated command"); instButton.addActionListener(new java.awt.event.ActionListener() { @@ -2355,11 +2971,37 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - commandPanel.add(instButton); - instButton.setBounds(10, 130, 150, 25); - - getContentPane().add(commandPanel); - commandPanel.setBounds(10, 500, 650, 170); + org.jdesktop.layout.GroupLayout commandPanelLayout = new org.jdesktop.layout.GroupLayout(commandPanel); + commandPanel.setLayout(commandPanelLayout); + commandPanelLayout.setHorizontalGroup( + commandPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, commandPanelLayout.createSequentialGroup() + .addContainerGap() + .add(commandPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(instjScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 644, Short.MAX_VALUE) + .add(confjScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 644, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.LEADING, commandPanelLayout.createSequentialGroup() + .add(confButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 150, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(makejButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 150, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(instButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 150, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + commandPanelLayout.setVerticalGroup( + commandPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, commandPanelLayout.createSequentialGroup() + .addContainerGap() + .add(confjScrollPane, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 38, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(commandPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(confButton) + .add(makejButton)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(instjScrollPane, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 38, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(instButton) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); resetButton.setText("Reset"); resetButton.setToolTipText("Returns settings to default"); @@ -2369,9 +3011,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - getContentPane().add(resetButton); - resetButton.setBounds(350, 680, 150, 25); - exitButton.setText("Exit"); exitButton.setToolTipText("Exits the program"); exitButton.addActionListener(new java.awt.event.ActionListener() { @@ -2380,13 +3019,127 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - getContentPane().add(exitButton); - exitButton.setBounds(510, 680, 150, 25); - + org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .addContainerGap() + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(commandPanel) + .add(tabPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 672, Short.MAX_VALUE))) + .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() + .add(378, 378, 378) + .add(resetButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 150, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(exitButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 150, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() + .addContainerGap() + .add(tabPane, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 507, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(commandPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(exitButton) + .add(resetButton)) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); - setBounds((screenSize.width-693)/2, (screenSize.height-747)/2, 693, 747); + setBounds((screenSize.width-706)/2, (screenSize.height-769)/2, 706, 769); + }// + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { + int returnVal = jFileChooser1.showOpenDialog(null); + + if (returnVal == JFileChooser.APPROVE_OPTION) { + File file = jFileChooser1.getSelectedFile(); + String filename = file.getAbsolutePath(); + otfTextField.setText(filename); + } + } + + private void otfCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { + if(otfCheckBox.isSelected()){ + if(configureline.indexOf(" -otf=")==-1){ + configureline+=" -otf="; + configureline+=otfTextField.getText()+" "; + } + + if(!traceCheckBox.isSelected()){ + traceCheckBox.doClick(); + } + } + + else{ + int start = configureline.indexOf(" -otf="); + if(start>-1){ + int end = configureline.indexOf(" ", start+1); + if(end==-1){ + configureline = configureline.substring(0, start); + } else{ + configureline = configureline.substring(0, start)+configureline.substring(end+1); + } + + } + } + + commandTextArea.setText(configureline); updateITCommand(); } - // + + private void otfQjButtonActionPerformed(java.awt.event.ActionEvent evt) { +JOptionPane.showMessageDialog(null, +"Specifies the location of the Open Trace Format (OTF) package.", + "-otf=",JOptionPane.INFORMATION_MESSAGE); + } + + private void loadallconfButtonActionPerformed(java.awt.event.ActionEvent evt) { +// TODO add your handling code here: + parseConf((String)(this.allconfComboBox.getSelectedItem())); + } + + private void loadsavedconfButtonActionPerformed(java.awt.event.ActionEvent evt) { +// TODO add your handling code here: + String saved=(String)(this.savedconfComboBox.getSelectedItem()); + System.out.println(saved.substring(saved.indexOf(" :> ")+3)); + parseConf(saved.substring(saved.indexOf(" :> ")+3)); + } + + private void removeconfButtonActionPerformed(java.awt.event.ActionEvent evt) { +// TODO add your handling code here: + savedconf.remove(this.savedconfComboBox.getSelectedIndex()); //.getSelected(); + this.savedconfComboBox.setSelectedIndex(this.savedconfComboBox.getItemCount()-1); + try{ + //fos = new FileOutputStream(filename,true); + BufferedWriter bw=new BufferedWriter(new FileWriter(".saved_configs")); + //if(confs.size()>1)bw.newLine(); + for(int i=0;i ");} + else + savedconf.add(this.custconfTextField.getText()+" :> "+configureline.substring(configureline.indexOf(" ")+1)); + //+System.out.println( "A"+ configureline.substring(configureline.indexOf(" ")+1) +"B" ); + writeConfs(savedconf,".saved_configs"); + //this.savedconfComboBox.addItem(savedconf.get(savedconf.size()-1)); + this.savedconfComboBox.setSelectedIndex(savedconfComboBox.getItemCount()-1); + } private void useroptFieldActionPerformed(java.awt.event.ActionEvent evt) { if(this.useroptCheckBox.isSelected()){ @@ -2940,197 +3693,9 @@ private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) { } private void resetButtonActionPerformed(java.awt.event.ActionEvent evt) { - if(this.defcppCheckBox.isSelected()) - this.defcppCheckBox.setSelected(false); - - if(this.cppCombo.getSelectedIndex()!=0) - this.cppCombo.setSelectedIndex(0); - - if(this.defccCheckBox.isSelected()) - this.defccCheckBox.setSelected(false); - - if(this.ccCombo.getSelectedIndex()!=0) - this.ccCombo.setSelectedIndex(0); - - if(this.deffortranCheckBox.isSelected()) - this.deffortranCheckBox.setSelected(false); - - if(this.fortranCombo.getSelectedIndex()!=0) - this.fortranCombo.setSelectedIndex(0); - - if(pdtCheckBox.isSelected()) - pdtCheckBox.setSelected(false); - - if(pdtcppCombo.getSelectedIndex()!=0) - pdtcppCombo.setSelectedIndex(0); - - if(defpdtCheckBox.isSelected()) - defpdtCheckBox.setSelected(false); - - if(papiwallCheckBox.isSelected()) - papiwallCheckBox.setSelected(false); - - if(papivirtCheckBox.isSelected()) - papivirtCheckBox.setSelected(false); - - if(papiCheckBox.isSelected()) - papiCheckBox.setSelected(false); - - if(multiplecountCheckBox.isSelected()) - multiplecountCheckBox.setSelected(false); - - if(mpiCheckBox.isSelected()) - mpiCheckBox.setSelected(false); - - if(mpiincCheckBox.isSelected()) - mpiincCheckBox.setSelected(false); - - if(mpilibCheckBox.isSelected()) - mpilibCheckBox.setSelected(false); - - if(altmpiCheckBox.isSelected()) - altmpiCheckBox.setSelected(false); - - if(tagCheckBox.isSelected()) - tagCheckBox.setSelected(false); - - if(nocomCheckBox.isSelected()) - nocomCheckBox.setSelected(false); - - if(mpitraceCheckBox.isSelected()) - mpitraceCheckBox.setSelected(false); - - if(shmemCheckBox.isSelected()) - shmemCheckBox.setSelected(false); - - if(shmemincCheckBox.isSelected()) - shmemincCheckBox.setSelected(false); - - if(shmemlibCheckBox.isSelected()) - shmemlibCheckBox.setSelected(false); - - if(altshmemCheckBox.isSelected()) - altshmemCheckBox.setSelected(false); - - if(profphaseCheckBox.isSelected()) - profphaseCheckBox.setSelected(false); - - if(depthlimitCheckBox.isSelected()) - depthlimitCheckBox.setSelected(false); - - if(!profileCheckBox.isSelected()) - profileCheckBox.setSelected(true); - - if(profcallpathCheckBox.isSelected()) - profcallpathCheckBox.setSelected(false); - - if(compensateCheckBox.isSelected()) - compensateCheckBox.setSelected(false); - - if(profmemoryCheckBox.isSelected()) - profmemoryCheckBox.setSelected(false); - - if(profheadroomCheckBox.isSelected()) - profheadroomCheckBox.setSelected(false); - - if(epilogCheckBox.isSelected()) - epilogCheckBox.setSelected(false); - - if(slog2CheckBox.isSelected()) - slog2CheckBox.setSelected(false); - - if(slog2exCheckBox.isSelected()) - slog2exCheckBox.setSelected(false); - - if(vtfCheckBox.isSelected()) - vtfCheckBox.setSelected(false); - - if(traceCheckBox.isSelected()) - traceCheckBox.setSelected(false); - - if(pthreadsCheckBox.isSelected()) - pthreadsCheckBox.setSelected(false); - - if(opariregionCheckBox.isSelected()) - opariregionCheckBox.setSelected(false); - - if(opariconstructCheckBox.isSelected()) - opariconstructCheckBox.setSelected(false); - - if(opariCheckBox.isSelected()) - opariCheckBox.setSelected(false); - - if(ompCheckBox.isSelected()) - ompCheckBox.setSelected(false); - - if(charmCheckBox.isSelected()) - sprocCheckBox.setSelected(false); - - if(sprocCheckBox.isSelected()) - sprocCheckBox.setSelected(false); - - if(tulipCheckBox.isSelected()) - tulipCheckBox.setSelected(false); - - if(smartCheckBox.isSelected()) - smartCheckBox.setSelected(false); - - if(pclCheckBox.isSelected()) - pclCheckBox.setSelected(false); - - if(dyninstCheckBox.isSelected()) - dyninstCheckBox.setSelected(false); - - if(museeventCheckBox.isSelected()) - museeventCheckBox.setSelected(false); + //System.out.println(this.); + this.reset(); - if(musemultCheckBox.isSelected()) - musemultCheckBox.setSelected(false); - - if(museCheckBox.isSelected()) - museCheckBox.setSelected(false); - - if(cputimeCheckBox.isSelected()) - cputimeCheckBox.setSelected(false); - - if(craytimeCheckBox.isSelected()) - craytimeCheckBox.setSelected(false); - - if(sgitimeCheckBox.isSelected()) - sgitimeCheckBox.setSelected(false); - - if(linuxtimeCheckBox.isSelected()) - linuxtimeCheckBox.setSelected(false); - - if(usepythonCheckBox.isSelected()) - usepythonCheckBox.setSelected(false); - - if(pythonlibCheckBox.isSelected()) - pythonlibCheckBox.setSelected(false); - - if(usejdkCheckBox.isSelected()) - usejdkCheckBox.setSelected(false); - - if(usejavatimersCheckBox.isSelected()) - usejavatimersCheckBox.setSelected(false); - - if(installdirCheckBox.isSelected()) - installdirCheckBox.setSelected(false); - - if(archdirCheckBox.isSelected()) - archdirCheckBox.setSelected(false); - - if(archCombo.getSelectedIndex()!=0) - archCombo.setSelectedIndex(0); - - if(useroptCheckBox.isSelected()) - useroptCheckBox.setSelected(false); - - if(noexceptCheckBox.isSelected()) - noexceptCheckBox.setSelected(false); - - configureline="./configure"; - commandTextArea.setText(configureline); updateITCommand(); } private void instButtonActionPerformed(java.awt.event.ActionEvent evt) { @@ -3757,6 +4322,12 @@ private void confButtonActionPerformed(java.awt.event.ActionEvent evt) { } catch (Exception e) { e.printStackTrace();} confButton.setEnabled(true); + + //getConfs(allconf,".all_configs"); + if(configureline.equals("./configure")){ + this.allconfComboBox.addItem("");} + else + this.allconfComboBox.addItem(configureline.substring(configureline.indexOf(" "))); } private void deffortranCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) { @@ -4277,11 +4848,6 @@ private void ccComboActionPerformed(java.awt.event.ActionEvent evt) { private void charmCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { String entry =" -charm="; if(charmCheckBox.isSelected()){ - if(ompCheckBox.isSelected()||pthreadsCheckBox.isSelected()||sprocCheckBox.isSelected()||tulipCheckBox.isSelected()) - { - charmCheckBox.setSelected(false); - return; - } if(configureline.indexOf(entry)==-1){ configureline+=entry; configureline+=charmTextField.getText()+" "; @@ -4307,11 +4873,7 @@ private void charmCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { private void smartCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { String entry=" -smart "; if(smartCheckBox.isSelected()){ - if(ompCheckBox.isSelected()||charmCheckBox.isSelected()||sprocCheckBox.isSelected()||pthreadsCheckBox.isSelected()) - { - smartCheckBox.setSelected(false); - return; - } + if(!tulipCheckBox.isSelected()){ tulipCheckBox.doClick(); } @@ -4339,12 +4901,6 @@ private void tulipButtonActionPerformed(java.awt.event.ActionEvent evt) { private void tulipCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { String entry=" -tulipthread="; if(tulipCheckBox.isSelected()){ - if(ompCheckBox.isSelected()||charmCheckBox.isSelected()||sprocCheckBox.isSelected()||pthreadsCheckBox.isSelected()) - { - tulipCheckBox.setSelected(false); - return; - } - if(configureline.indexOf(entry)==-1){ configureline+=entry; @@ -4374,13 +4930,6 @@ private void tulipCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { private void sprocCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { String entry=" -sproc "; if(sprocCheckBox.isSelected()){ - - if(pthreadsCheckBox.isSelected()||charmCheckBox.isSelected()||ompCheckBox.isSelected()||tulipCheckBox.isSelected()) - { - sprocCheckBox.setSelected(false); - return; - } - if(configureline.indexOf(entry)==-1){ configureline+=entry; } @@ -4405,12 +4954,6 @@ private void opariconstructCheckBoxStateChanged(javax.swing.event.ChangeEvent ev String entry=" -opari_construct "; if(opariconstructCheckBox.isSelected()){ - if(pthreadsCheckBox.isSelected()||charmCheckBox.isSelected()||sprocCheckBox.isSelected()||tulipCheckBox.isSelected()) - { - opariconstructCheckBox.setSelected(false); - return; - } - if(!opariCheckBox.isSelected()){ opariCheckBox.doClick(); } @@ -4429,12 +4972,6 @@ private void opariregionCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) String entry=" -opari_region "; if(opariregionCheckBox.isSelected()){ - if(pthreadsCheckBox.isSelected()||charmCheckBox.isSelected()||sprocCheckBox.isSelected()||tulipCheckBox.isSelected()) - { - opariregionCheckBox.setSelected(false); - return; - } - if(!opariCheckBox.isSelected()){ opariCheckBox.doClick(); } @@ -4462,11 +4999,6 @@ private void opariButtonActionPerformed(java.awt.event.ActionEvent evt) { private void opariCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { String entry=" -opari="; if(opariCheckBox.isSelected()){ - if(pthreadsCheckBox.isSelected()||charmCheckBox.isSelected()||sprocCheckBox.isSelected()||tulipCheckBox.isSelected()) - { - opariCheckBox.setSelected(false); - return; - } if(!ompCheckBox.isSelected()){ ompCheckBox.doClick(); @@ -4499,13 +5031,6 @@ private void opariCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { private void ompCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { String entry=" -openmp "; if(ompCheckBox.isSelected()){ - - if(pthreadsCheckBox.isSelected()||charmCheckBox.isSelected()||sprocCheckBox.isSelected()||tulipCheckBox.isSelected()) - { - ompCheckBox.setSelected(false); - return; - } - if(configureline.indexOf(entry)==-1){ configureline+=entry; } @@ -4525,17 +5050,9 @@ private void ompCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { private void pthreadsCheckBoxStateChanged(javax.swing.event.ChangeEvent evt) { String entry=" -pthread "; if(pthreadsCheckBox.isSelected()){ - - if(ompCheckBox.isSelected()||charmCheckBox.isSelected()||sprocCheckBox.isSelected()||tulipCheckBox.isSelected()) - { - pthreadsCheckBox.setSelected(false); - return; - } - if(configureline.indexOf(entry)==-1){ configureline+=entry; } - } else{ if(configureline.indexOf(entry)>-1) configureline = configureline.replaceFirst(entry,""); @@ -5457,7 +5974,301 @@ public void run() { }); } + private void initcb(){ + cbholder.add(altmpiCheckBox); + cbholder.add(altshmemCheckBox); + cbholder.add(archdirCheckBox); + cbholder.add(charmCheckBox); + cbholder.add(compensateCheckBox); + cbholder.add(cputimeCheckBox); + cbholder.add(craytimeCheckBox); + cbholder.add(defccCheckBox); + cbholder.add(defcppCheckBox); + cbholder.add(deffortranCheckBox); + cbholder.add(defpdtCheckBox); + cbholder.add(depthlimitCheckBox); + cbholder.add(dyninstCheckBox); + cbholder.add(epilogCheckBox); + cbholder.add(installdirCheckBox); + cbholder.add(linuxtimeCheckBox); + cbholder.add(mpiCheckBox); + cbholder.add(mpiincCheckBox); + cbholder.add(mpilibCheckBox); + cbholder.add(mpitraceCheckBox); + cbholder.add(multiplecountCheckBox); + + cbholder.add(museeventCheckBox); + cbholder.add(musemultCheckBox); + + cbholder.add(museCheckBox); + + cbholder.add(nocomCheckBox); + cbholder.add(noexceptCheckBox); + + + cbholder.add(opariconstructCheckBox); + cbholder.add(opariregionCheckBox); + + cbholder.add(opariCheckBox); + + cbholder.add(ompCheckBox); + + cbholder.add(papiCheckBox); + cbholder.add(papivirtCheckBox); + cbholder.add(papiwallCheckBox); + cbholder.add(pclCheckBox); + cbholder.add(pdtCheckBox); + cbholder.add(profcallpathCheckBox); + cbholder.add(profheadroomCheckBox); + cbholder.add(profileCheckBox); + cbholder.add(profmemoryCheckBox); + cbholder.add(profphaseCheckBox); + cbholder.add(profstatsCheckBox); + cbholder.add(pthreadsCheckBox); + cbholder.add(pythonlibCheckBox); + cbholder.add(sgitimeCheckBox); + cbholder.add(shmemCheckBox); + cbholder.add(shmemincCheckBox); + cbholder.add(shmemlibCheckBox); + cbholder.add(slog2CheckBox); + cbholder.add(slog2exCheckBox); + cbholder.add(smartCheckBox); + cbholder.add(sprocCheckBox); + cbholder.add(tagCheckBox); + + cbholder.add(vtfCheckBox); + cbholder.add(otfCheckBox); + + cbholder.add(traceCheckBox); + cbholder.add(tulipCheckBox); + cbholder.add(usejavatimersCheckBox); + cbholder.add(usejdkCheckBox); + cbholder.add(usepythonCheckBox); + cbholder.add(useroptCheckBox); + + cbholder.add(opariCheckBox); + cbholder.add(opariconstructCheckBox); + cbholder.add(opariregionCheckBox); + cbholder.add(papiCheckBox); + cbholder.add(papivirtCheckBox); + //Set up the mapping between commands and checkboxes + commap.put(" -mpilibrary=",altmpiCheckBox); + commap.put(" -shmemlibrary=",altshmemCheckBox); + commap.put(" -exec-prefix=",archdirCheckBox); + commap.put(" -charm=",charmCheckBox); + commap.put(" -COMPENSATE",compensateCheckBox); + commap.put(" -CPUTIME",cputimeCheckBox); + commap.put(" -CRAYTIME",craytimeCheckBox); + commap.put(" -cc=",defccCheckBox); + commap.put(" -c++=",defcppCheckBox); + commap.put(" -fortran=",deffortranCheckBox); + commap.put(" -pdt_c++",defpdtCheckBox); + commap.put(" -DEPTHLIMIT",depthlimitCheckBox); + commap.put(" -dyninst=",dyninstCheckBox); + commap.put(" -epilog=",epilogCheckBox); + commap.put(" -prefix=",installdirCheckBox); + commap.put(" -LINUXTIMERS",linuxtimeCheckBox); + commap.put(" -mpi",mpiCheckBox); + commap.put(" -mpiinc=",mpiincCheckBox); + commap.put(" -mpilib=",mpilibCheckBox); + commap.put(" -MPITRACE",mpitraceCheckBox); + commap.put(" -MULTIPLECOUNTERS",multiplecountCheckBox); + + commap.put(" -muse_event",museeventCheckBox); + commap.put(" -muse_multiple",musemultCheckBox); + + commap.put(" -muse",museCheckBox); + + commap.put(" -nocomm",nocomCheckBox); + commap.put(" -noex",noexceptCheckBox); + + + commap.put(" -opari_construct",opariconstructCheckBox); + commap.put(" -opari_region",opariregionCheckBox); + + commap.put(" -opari=",opariCheckBox); + + commap.put(" -openmp",ompCheckBox); + + commap.put(" -papi=",papiCheckBox); + commap.put(" -PAPIVIRTUAL",papivirtCheckBox); + commap.put(" -PAPIWALLCLOCK",papiwallCheckBox); + commap.put(" -pcl=",pclCheckBox); + commap.put(" -pdt=",pdtCheckBox); + commap.put(" -PROFILECALLPATH",profcallpathCheckBox); + commap.put(" -PROFILEHEADROOM",profheadroomCheckBox); + commap.put(" -profile",profileCheckBox); + commap.put(" -PROFILEMEMORY",profmemoryCheckBox); + commap.put(" -PROFILEPHASE",profphaseCheckBox); + commap.put(" -PROFILESTATS",profstatsCheckBox); + commap.put(" -pthread",pthreadsCheckBox); + commap.put(" -pythonlib=",pythonlibCheckBox); + commap.put(" -SGITIMERS",sgitimeCheckBox); + commap.put(" -shmem",shmemCheckBox); + commap.put(" -shemeinc=",shmemincCheckBox); + commap.put(" -shmemlib=",shmemlibCheckBox); + commap.put(" -slog2",slog2CheckBox); + commap.put(" -slog2=",slog2exCheckBox); + commap.put(" -smart",smartCheckBox); + commap.put(" -sproc",sprocCheckBox); + commap.put(" -tag=",tagCheckBox); + + commap.put(" -vtf=",vtfCheckBox); + commap.put(" -otf=",otfCheckBox); + + commap.put(" -TRACE",traceCheckBox); + commap.put(" -tulipthread=",tulipCheckBox); + commap.put(" -JAVACPUTIME",usejavatimersCheckBox); + commap.put(" -jdk=",usejdkCheckBox); + commap.put(" -pythoninc=",usepythonCheckBox); + commap.put(" -useropt=",useroptCheckBox); + + commap.put(" -opari=",opariCheckBox); + commap.put(" -opari_construct",opariconstructCheckBox); + commap.put(" -opari_region",opariregionCheckBox); + commap.put(" -papi=",papiCheckBox); + commap.put(" -PAPIVIRTUAL",papivirtCheckBox); + //map the command names to the field objects where required + fieldmap.put(" -c++=",defcppTextField); + fieldmap.put(" -cc=",defccTextField); + fieldmap.put(" -fortran=",deffortranTextField); + fieldmap.put(" -pdt=",pdtdirField); + fieldmap.put(" -pdt_c++",defpdtTextField); + fieldmap.put(" -papi=",papiTextField); + fieldmap.put(" -mpiinc=",mpiincTextField); + fieldmap.put(" -mpilib=",mpilibTextField); + fieldmap.put(" -mpilibrary=",altmpiTextField); + fieldmap.put(" -tag=",tagTextField); + fieldmap.put(" -shemeinc=",shmemincTextField); + fieldmap.put(" -shmemlib=",shmemlibTextField); + fieldmap.put(" -shmemlibrary=",altshmemTextField); + fieldmap.put(" -epilog=",epilogTextField); + fieldmap.put(" -slog2=",slog2TextField); + fieldmap.put(" -vtf=",vtfTextField); + fieldmap.put(" -otf=",otfTextField); + fieldmap.put(" -opari=",opariTextField); + fieldmap.put(" -charm=",charmTextField); + fieldmap.put(" -tulipthread=",tulipTextField); + fieldmap.put(" -pcl=",pclTextField); + fieldmap.put(" -dyninst=",dyninstTextField); + fieldmap.put(" -pythoninc=",pythonincField); + fieldmap.put(" -pythonlib=",pythonlibField); + fieldmap.put(" -jdk=",jdkField); + fieldmap.put(" -prefix=",installdirField); + fieldmap.put(" -exec-prefix=",archdirField); + fieldmap.put(" -useropt=",useroptField); + + } + + private void initcom(){ + comholder.add(archCombo); + comholder.add(ccCombo); + comholder.add(cppCombo); + comholder.add(fortranCombo); + comholder.add(pdtcppCombo); + } + + private void reset(){ + //Component[] allcomps = this.getComponents(); + //this.get + + if(cbholder.size()==0){initcb();} + + if(comholder.size()==0){initcom();} + + for(int i=0;i1)bw.newLine(); + bw.write((String)(confs.get(confs.size()-1))); + //System.out.println((String)(confs.get(confs.size()-1))); + bw.close(); + }catch(IOException e){e.printStackTrace();} + } + +/* private void getSavedConfs(){ + + }*/ + // Variables declaration - do not modify + private javax.swing.JComboBox allconfComboBox; private javax.swing.JCheckBox altmpiCheckBox; private javax.swing.JButton altmpiQjButton; private javax.swing.JTextField altmpiTextField; @@ -5484,7 +6295,7 @@ public void run() { private javax.swing.JTextArea commandTextArea; private javax.swing.JCheckBox compensateCheckBox; private javax.swing.JButton compensateQjButton; - private javax.swing.JPanel compilerPanel; + private javax.swing.JPanel compilerjPanel; private javax.swing.JButton confButton; private javax.swing.JScrollPane confjScrollPane; private javax.swing.JComboBox cppCombo; @@ -5495,6 +6306,7 @@ public void run() { private javax.swing.JButton craytQjButton; private javax.swing.JCheckBox craytimeCheckBox; private javax.swing.JButton custarchQjButton; + private javax.swing.JTextField custconfTextField; private javax.swing.JButton custinstQjButton; private javax.swing.JCheckBox defccCheckBox; private javax.swing.JTextField defccTextField; @@ -5529,11 +6341,15 @@ public void run() { private javax.swing.JCheckBox installdirCheckBox; private javax.swing.JTextField installdirField; private javax.swing.JScrollPane instjScrollPane; + private javax.swing.JButton jButton1; private javax.swing.JFileChooser jFileChooser1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel4; private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel5; private javax.swing.JButton javatQjButton; private javax.swing.JButton jdkButton; @@ -5542,16 +6358,18 @@ public void run() { private javax.swing.JButton jdkQjButton; private javax.swing.JButton linuxtQjButton; private javax.swing.JCheckBox linuxtimeCheckBox; + private javax.swing.JButton loadallconfButton; + private javax.swing.JButton loadsavedconfButton; private javax.swing.JButton makejButton; private javax.swing.JButton memorypQjButton; private javax.swing.JPanel messagePannel; private javax.swing.JCheckBox mpiCheckBox; - private javax.swing.JPanel mpiPanel; private javax.swing.JButton mpiQjButton; private javax.swing.JButton mpiincButton; private javax.swing.JCheckBox mpiincCheckBox; private javax.swing.JButton mpiincQjButton; private javax.swing.JTextField mpiincTextField; + private javax.swing.JPanel mpijPanel; private javax.swing.JButton mpilibButton; private javax.swing.JCheckBox mpilibCheckBox; private javax.swing.JButton mpilibQjButton; @@ -5582,12 +6400,15 @@ public void run() { private javax.swing.JCheckBox opariregionCheckBox; private javax.swing.JButton opariregionQjButton; private javax.swing.JButton openmpQjButton; + private javax.swing.JCheckBox otfCheckBox; + private javax.swing.JButton otfQjButton; + private javax.swing.JTextField otfTextField; private javax.swing.JPanel outputPanel; private javax.swing.JButton papiButton; private javax.swing.JCheckBox papiCheckBox; - private javax.swing.JPanel papiPanel; private javax.swing.JButton papiQjButton; private javax.swing.JTextField papiTextField; + private javax.swing.JPanel papijPanel; private javax.swing.JCheckBox papivirtCheckBox; private javax.swing.JButton papivirtQjButton; private javax.swing.JCheckBox papiwallCheckBox; @@ -5600,11 +6421,11 @@ public void run() { private javax.swing.JButton pdtButton; private javax.swing.JCheckBox pdtCheckBox; private javax.swing.JLabel pdtCompilerLabel; - private javax.swing.JPanel pdtPanel; private javax.swing.JButton pdtQjButton; private javax.swing.JComboBox pdtcppCombo; private javax.swing.JButton pdtcppQjButton; private javax.swing.JTextField pdtdirField; + private javax.swing.JPanel pdtjPanel; private javax.swing.JButton phaseQjButton; private javax.swing.JCheckBox profcallpathCheckBox; private javax.swing.JCheckBox profheadroomCheckBox; @@ -5625,16 +6446,19 @@ public void run() { private javax.swing.JCheckBox pythonlibCheckBox; private javax.swing.JTextField pythonlibField; private javax.swing.JButton pythonlibQjButton; + private javax.swing.JButton removeconfButton; private javax.swing.JButton resetButton; + private javax.swing.JButton saveconfButton; + private javax.swing.JComboBox savedconfComboBox; private javax.swing.JButton sgitQjButton; private javax.swing.JCheckBox sgitimeCheckBox; private javax.swing.JCheckBox shmemCheckBox; - private javax.swing.JPanel shmemPanel; private javax.swing.JButton shmemQjButton; private javax.swing.JButton shmemincButton; private javax.swing.JCheckBox shmemincCheckBox; private javax.swing.JButton shmemincQjButton; private javax.swing.JTextField shmemincTextField; + private javax.swing.JPanel shmemjPanel; private javax.swing.JButton shmemlibButton; private javax.swing.JCheckBox shmemlibCheckBox; private javax.swing.JButton shmemlibQjButton;