//============================================================================== // // Copyright (c) 2002- // Authors: // * Andrew Hinton (University of Birmingham) // * Dave Parker (University of Birmingham) // //------------------------------------------------------------------------------ // // This file is part of PRISM. // // PRISM is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // PRISM is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with PRISM; if not, write to the Free Software Foundation, // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // //============================================================================== package userinterface.properties; import javax.swing.*; import java.awt.*; import javax.swing.border.*; import javax.swing.table.*; import java.util.*; import parser.*; import prism.*; import userinterface.*; public class GUIResultsTable extends javax.swing.JDialog { private static int noOpen = 0; private GUIMultiProperties guiProps; private GUIExperiment exp; private JPanel topPanel; private JButton closeButton; private JScrollPane scroller; private JTable table; private ResultsTableModel tableModel; /** Creates a new instance of GUIResultsTable */ public GUIResultsTable(GUIPrism parent, GUIMultiProperties guiProps, GUIExperiment exp) { super(parent, "Experiment Results", false); this.guiProps = guiProps; this.exp = exp; //setup table tableModel = new ResultsTableModel(exp); table = new JTable(); table.setModel(tableModel); table.setCellSelectionEnabled(true); table.setRowHeight(getFontMetrics(table.getFont()).getHeight() + 4); //initialise initComponents(); getRootPane().setDefaultButton(closeButton); setResizable(true); pack(); setLocationRelativeTo(getParent()); // centre } /** This method is called from within the constructor to initialize the form. */ private void initComponents() { addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(); } }); JLabel topLabel = new JLabel("Results of \'" + exp.getPropertyString() + "\' for \'" + exp.getDefinedConstantsString() + "\'"); JPanel tmpPanel = new JPanel(); tmpPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); tmpPanel.setLayout(new BorderLayout(10, 10)); tmpPanel.add(topLabel, BorderLayout.NORTH); tmpPanel.add(topLabel, BorderLayout.NORTH); topPanel = new JPanel(); topPanel.setBorder(new TitledBorder("Results")); topPanel.setLayout(new BorderLayout()); JPanel borderPanel = new JPanel(); borderPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); borderPanel.setLayout(new BorderLayout()); JScrollPane sp = new JScrollPane(); sp.setViewportView(table); borderPanel.add(sp, BorderLayout.CENTER); topPanel.add(borderPanel); topPanel.setPreferredSize(new Dimension(500,200)); tmpPanel.add(topPanel, BorderLayout.CENTER); JPanel tmpPanel2 = new JPanel(); tmpPanel2.setLayout(new BorderLayout()); closeButton = new JButton("Close"); closeButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { closeDialog(); } }); tmpPanel2.add(closeButton, BorderLayout.EAST); tmpPanel.add(tmpPanel2, BorderLayout.SOUTH); this.getContentPane().add(tmpPanel); } public void show() { noOpen++; setLocation(getX()+(noOpen*50), getY()+(noOpen*50)); super.show(); } public void dispose() { noOpen--; super.dispose(); } private void closeDialog() { setVisible(false); dispose(); } class ResultsTableModel extends AbstractTableModel { String headings[]; ArrayList cells; int numRows, numCols; public ResultsTableModel(GUIExperiment exp) { headings = exp.getResults().getHeadingsArray(); cells = exp.getResults().toArrayList(); numRows = cells.size(); numCols = headings.length; //prop = new ArrayList(); } public String getColumnName(int j) { return headings[j]; } public int getColumnCount() { return numCols; } public int getRowCount() { return numRows; } public Object getValueAt(int i, int j) { String[] line = (String[])cells.get(i); if (j