You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

187 lines
4.8 KiB

//==============================================================================
//
// Copyright (c) 2002-
// Authors:
// * Andrew Hinton <ug60axh@cs.bham.uc.uk> (University of Birmingham)
// * Dave Parker <dxp@cs.bham.uc.uk> (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<line.length) return line[j];
return "?";
}
}
}