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.
 
 
 
 
 
 

876 lines
31 KiB

//==============================================================================
//
// Copyright (c) 2002-
// Authors:
// * Mark Kattenbelt <mark.kattenbelt@comlab.ox.ac.uk> (University of Oxford, formerly 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.simulator;
import prism.*;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import userinterface.*;
import userinterface.simulator.SimulationView.*;
public class GUIViewDialog extends JDialog implements KeyListener
{
private static final long serialVersionUID = 1L;
//ATTRIBUTES
private boolean askOption;
private GUIPrism gui;
private SimulationView view;
private VariableListModel visibleVariableListModel;
private VariableListModel hiddenVariableListModel;
private RewardListModel visibleRewardListModel;
private RewardListModel hiddenRewardListModel;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel allPanel;
private javax.swing.JPanel bottomPanel;
private javax.swing.JPanel boxPanel;
private javax.swing.JPanel buttonPanel;
private javax.swing.JButton cancelButton;
private javax.swing.JPanel centerRewardColumn;
private javax.swing.JPanel centerRewardPanel;
private javax.swing.JPanel centerVariableColumn;
private javax.swing.JPanel centerVariablePanel;
private javax.swing.JRadioButton changeRenderingButton;
private javax.swing.JLabel hiddenLabel;
private javax.swing.JList hiddenRewardList;
private javax.swing.JScrollPane hiddenRewardScrollList;
private javax.swing.JList hiddenVariableList;
private javax.swing.JScrollPane hiddenVariableScrollList;
private javax.swing.JPanel innerPathStylePanel;
private javax.swing.JPanel innerTimePanel;
private javax.swing.JPanel leftRewardColumn;
private javax.swing.JPanel leftRewardPanel;
private javax.swing.JPanel leftVariableColumn;
private javax.swing.JPanel leftVariablePanel;
private javax.swing.JButton makeRewardHiddenButton;
private javax.swing.JButton makeRewardVisibleButton;
private javax.swing.JButton makeVariableHiddenButton;
private javax.swing.JButton makeVariableVisibleButton;
private javax.swing.JButton okayButton;
private javax.swing.JCheckBox optionCheckBox;
private javax.swing.JPanel otherTabPanel;
private javax.swing.ButtonGroup pathStyle;
private javax.swing.JPanel pathStylePanel;
private javax.swing.JRadioButton renderAllButton;
private javax.swing.JPanel rewardPanel;
private javax.swing.JPanel rewardTabPanel;
private javax.swing.JPanel rightRewardColumn;
private javax.swing.JPanel rightRewardPanel;
private javax.swing.JPanel rightVariableColumn;
private javax.swing.JPanel rightVariablePanel;
private javax.swing.JButton selectAllHiddenRewardsButton;
private javax.swing.JButton selectAllHiddenVariablesButton;
private javax.swing.JButton selectAllVisibleRewardsButton;
private javax.swing.JButton selectAllVisibleVariablesButton;
private javax.swing.JCheckBox showCumulativeTimeCheckBox;
private javax.swing.JCheckBox showTimeCheckBox;
private javax.swing.JPanel topInnerTimePanel;
private javax.swing.JPanel variablePanel;
private javax.swing.JTabbedPane variableTabPane;
private javax.swing.JPanel variableTabPanel;
private javax.swing.JLabel visibleLabel;
private javax.swing.JList visibleRewardList;
private javax.swing.JScrollPane visibleRewardScrollList;
private javax.swing.JList visibleVariableList;
private javax.swing.JScrollPane visibleVariableScrollList;
// End of variables declaration//GEN-END:variables
/**
* Creates new form GUIViewDialog
*/
public GUIViewDialog(GUIPrism parent, SimulationView view, GUISimulatorPathTableModel pathTableModel)
{
super(parent, "Configure View for Simulation", true);
this.gui = parent;
this.view = view;
//initialise
initComponents();
this.getRootPane().setDefaultButton(okayButton);
super.setBounds(new Rectangle(550, 300));
setResizable(true);
setLocationRelativeTo(getParent()); // centre
this.askOption = ((GUIPrism) this.getParent()).getPrism().getSettings().getBoolean(PrismSettings.SIMULATOR_NEW_PATH_ASK_VIEW);
optionCheckBox.setSelected(this.askOption);
showTimeCheckBox.setSelected(view.showTime());
showCumulativeTimeCheckBox.setSelected(view.showCumulativeTime());
visibleVariableListModel = new VariableListModel(view.getVisibleVariables());
hiddenVariableListModel = new VariableListModel(view.getHiddenVariables());
visibleVariableList.setModel(visibleVariableListModel);
hiddenVariableList.setModel(hiddenVariableListModel);
ArrayList<RewardListItem> visibleRewardColumn = new ArrayList<RewardListItem>();
ArrayList<RewardListItem> hiddenRewardColumn = new ArrayList<RewardListItem>();
for (RewardStructure reward : view.getRewards()) {
hiddenRewardColumn.add(new RewardListItem(reward, false));
hiddenRewardColumn.add(new RewardListItem(reward, true));
}
for (RewardStructureColumn rewardColumn : view.getVisibleRewardColumns()) {
for (RewardListItem rewardListItem : hiddenRewardColumn) {
if (rewardColumn.getRewardStructure().equals(rewardListItem.getRewardStructure())
&& rewardColumn.isCumulativeReward() == rewardListItem.isCumulative()) {
visibleRewardColumn.add(rewardListItem);
hiddenRewardColumn.remove(rewardListItem);
break;
}
}
}
visibleRewardListModel = new RewardListModel(visibleRewardColumn);
hiddenRewardListModel = new RewardListModel(hiddenRewardColumn);
visibleRewardList.setModel(visibleRewardListModel);
hiddenRewardList.setModel(hiddenRewardListModel);
showCumulativeTimeCheckBox.setEnabled(pathTableModel.canShowTime());
showTimeCheckBox.setEnabled(pathTableModel.canShowTime());
pathStyle.add(renderAllButton);
pathStyle.add(changeRenderingButton);
renderAllButton.setSelected(!view.isChangeRenderer());
changeRenderingButton.setSelected(view.isChangeRenderer());
makeVariableHiddenButton.setIcon(GUIPrism.getIconFromImage("smallArrowRight.png"));
makeRewardHiddenButton.setIcon(GUIPrism.getIconFromImage("smallArrowRight.png"));
makeVariableVisibleButton.setIcon(GUIPrism.getIconFromImage("smallArrowLeft.png"));
makeRewardVisibleButton.setIcon(GUIPrism.getIconFromImage("smallArrowLeft.png"));
this.setVisible(true);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents()
{
java.awt.GridBagConstraints gridBagConstraints;
visibleLabel = new javax.swing.JLabel();
hiddenLabel = new javax.swing.JLabel();
pathStyle = new javax.swing.ButtonGroup();
allPanel = new javax.swing.JPanel();
bottomPanel = new javax.swing.JPanel();
buttonPanel = new javax.swing.JPanel();
okayButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
optionCheckBox = new javax.swing.JCheckBox();
variableTabPane = new javax.swing.JTabbedPane();
variableTabPanel = new javax.swing.JPanel();
variablePanel = new javax.swing.JPanel();
leftVariableColumn = new javax.swing.JPanel();
leftVariablePanel = new javax.swing.JPanel();
visibleVariableScrollList = new javax.swing.JScrollPane();
visibleVariableList = new javax.swing.JList();
selectAllVisibleVariablesButton = new javax.swing.JButton();
centerVariableColumn = new javax.swing.JPanel();
centerVariablePanel = new javax.swing.JPanel();
makeVariableVisibleButton = new javax.swing.JButton();
makeVariableHiddenButton = new javax.swing.JButton();
rightVariableColumn = new javax.swing.JPanel();
rightVariablePanel = new javax.swing.JPanel();
hiddenVariableScrollList = new javax.swing.JScrollPane();
hiddenVariableList = new javax.swing.JList();
selectAllHiddenVariablesButton = new javax.swing.JButton();
rewardTabPanel = new javax.swing.JPanel();
rewardPanel = new javax.swing.JPanel();
leftRewardColumn = new javax.swing.JPanel();
leftRewardPanel = new javax.swing.JPanel();
visibleRewardScrollList = new javax.swing.JScrollPane();
visibleRewardList = new javax.swing.JList();
selectAllVisibleRewardsButton = new javax.swing.JButton();
centerRewardColumn = new javax.swing.JPanel();
centerRewardPanel = new javax.swing.JPanel();
makeRewardVisibleButton = new javax.swing.JButton();
makeRewardHiddenButton = new javax.swing.JButton();
rightRewardColumn = new javax.swing.JPanel();
rightRewardPanel = new javax.swing.JPanel();
hiddenRewardScrollList = new javax.swing.JScrollPane();
hiddenRewardList = new javax.swing.JList();
selectAllHiddenRewardsButton = new javax.swing.JButton();
otherTabPanel = new javax.swing.JPanel();
boxPanel = new javax.swing.JPanel();
innerTimePanel = new javax.swing.JPanel();
topInnerTimePanel = new javax.swing.JPanel();
showTimeCheckBox = new javax.swing.JCheckBox();
showCumulativeTimeCheckBox = new javax.swing.JCheckBox();
pathStylePanel = new javax.swing.JPanel();
innerPathStylePanel = new javax.swing.JPanel();
changeRenderingButton = new javax.swing.JRadioButton();
renderAllButton = new javax.swing.JRadioButton();
visibleLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
visibleLabel.setText("Visible Variables");
hiddenLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
hiddenLabel.setText("Hidden Variables");
addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(java.awt.event.WindowEvent evt)
{
closeDialog(evt);
}
});
allPanel.setLayout(new java.awt.BorderLayout());
allPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
bottomPanel.setLayout(new java.awt.BorderLayout());
buttonPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
okayButton.setText("Okay");
okayButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
okayButtonActionPerformed(evt);
}
});
buttonPanel.add(okayButton);
cancelButton.setText("Cancel");
cancelButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
cancelButtonActionPerformed(evt);
}
});
buttonPanel.add(cancelButton);
bottomPanel.add(buttonPanel, java.awt.BorderLayout.EAST);
optionCheckBox.setText("Always prompt for view configuration on path creation");
bottomPanel.add(optionCheckBox, java.awt.BorderLayout.WEST);
optionCheckBox.getAccessibleContext().setAccessibleName("optionCheckBox");
allPanel.add(bottomPanel, java.awt.BorderLayout.SOUTH);
getContentPane().add(allPanel, java.awt.BorderLayout.SOUTH);
variableTabPane.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
variableTabPanel.setLayout(new java.awt.BorderLayout());
variablePanel.setLayout(new java.awt.GridBagLayout());
variablePanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
leftVariableColumn.setLayout(new java.awt.BorderLayout());
leftVariableColumn.setBorder(javax.swing.BorderFactory.createTitledBorder("Visible variables"));
leftVariablePanel.setLayout(new java.awt.BorderLayout(0, 5));
leftVariablePanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
visibleVariableScrollList.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
visibleVariableScrollList.setViewportView(visibleVariableList);
leftVariablePanel.add(visibleVariableScrollList, java.awt.BorderLayout.CENTER);
selectAllVisibleVariablesButton.setText("Select All");
selectAllVisibleVariablesButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
selectAllVisibleVariablesButtonActionPerformed(evt);
}
});
leftVariablePanel.add(selectAllVisibleVariablesButton, java.awt.BorderLayout.SOUTH);
leftVariableColumn.add(leftVariablePanel, java.awt.BorderLayout.CENTER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.weighty = 1.0;
variablePanel.add(leftVariableColumn, gridBagConstraints);
centerVariableColumn.setLayout(new java.awt.BorderLayout());
centerVariablePanel.setLayout(new java.awt.GridBagLayout());
makeVariableVisibleButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
makeVariableVisibleButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.ipadx = 5;
gridBagConstraints.ipady = 5;
gridBagConstraints.insets = new java.awt.Insets(3, 10, 3, 10);
centerVariablePanel.add(makeVariableVisibleButton, gridBagConstraints);
makeVariableHiddenButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
makeVariableHiddenButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.ipadx = 5;
gridBagConstraints.ipady = 5;
gridBagConstraints.insets = new java.awt.Insets(3, 10, 3, 10);
centerVariablePanel.add(makeVariableHiddenButton, gridBagConstraints);
centerVariableColumn.add(centerVariablePanel, java.awt.BorderLayout.CENTER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
gridBagConstraints.weighty = 1.0;
variablePanel.add(centerVariableColumn, gridBagConstraints);
rightVariableColumn.setLayout(new java.awt.BorderLayout());
rightVariableColumn.setBorder(javax.swing.BorderFactory.createTitledBorder("Hidden variables"));
rightVariablePanel.setLayout(new java.awt.BorderLayout(0, 5));
rightVariablePanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
hiddenVariableScrollList.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
hiddenVariableScrollList.setViewportView(hiddenVariableList);
rightVariablePanel.add(hiddenVariableScrollList, java.awt.BorderLayout.CENTER);
selectAllHiddenVariablesButton.setText("Select All");
selectAllHiddenVariablesButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
selectAllHiddenVariablesButtonActionPerformed(evt);
}
});
rightVariablePanel.add(selectAllHiddenVariablesButton, java.awt.BorderLayout.SOUTH);
rightVariableColumn.add(rightVariablePanel, java.awt.BorderLayout.CENTER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.weighty = 1.0;
variablePanel.add(rightVariableColumn, gridBagConstraints);
variableTabPanel.add(variablePanel, java.awt.BorderLayout.CENTER);
variableTabPane.addTab("Variable visibility", variableTabPanel);
rewardTabPanel.setLayout(new java.awt.BorderLayout());
rewardPanel.setLayout(new java.awt.GridBagLayout());
rewardPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
leftRewardColumn.setLayout(new java.awt.BorderLayout());
leftRewardColumn.setBorder(javax.swing.BorderFactory.createTitledBorder("Visible reward structures"));
leftRewardPanel.setLayout(new java.awt.BorderLayout(0, 5));
leftRewardPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
visibleRewardScrollList.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
visibleRewardScrollList.setViewportView(visibleRewardList);
leftRewardPanel.add(visibleRewardScrollList, java.awt.BorderLayout.CENTER);
selectAllVisibleRewardsButton.setText("Select All");
selectAllVisibleRewardsButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
selectAllVisibleRewardsButtonActionPerformed(evt);
}
});
leftRewardPanel.add(selectAllVisibleRewardsButton, java.awt.BorderLayout.SOUTH);
leftRewardColumn.add(leftRewardPanel, java.awt.BorderLayout.CENTER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.weighty = 1.0;
rewardPanel.add(leftRewardColumn, gridBagConstraints);
centerRewardColumn.setLayout(new java.awt.BorderLayout());
centerRewardPanel.setLayout(new java.awt.GridBagLayout());
makeRewardVisibleButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
makeRewardVisibleButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.ipadx = 5;
gridBagConstraints.ipady = 5;
gridBagConstraints.insets = new java.awt.Insets(3, 10, 3, 10);
centerRewardPanel.add(makeRewardVisibleButton, gridBagConstraints);
makeRewardHiddenButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
makeRewardHiddenButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.ipadx = 5;
gridBagConstraints.ipady = 5;
gridBagConstraints.insets = new java.awt.Insets(3, 10, 3, 10);
centerRewardPanel.add(makeRewardHiddenButton, gridBagConstraints);
centerRewardColumn.add(centerRewardPanel, java.awt.BorderLayout.CENTER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
gridBagConstraints.weighty = 1.0;
rewardPanel.add(centerRewardColumn, gridBagConstraints);
rightRewardColumn.setLayout(new java.awt.BorderLayout());
rightRewardColumn.setBorder(javax.swing.BorderFactory.createTitledBorder("Hidden reward structures"));
rightRewardPanel.setLayout(new java.awt.BorderLayout(0, 5));
rightRewardPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
hiddenRewardScrollList.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
hiddenRewardScrollList.setViewportView(hiddenRewardList);
rightRewardPanel.add(hiddenRewardScrollList, java.awt.BorderLayout.CENTER);
selectAllHiddenRewardsButton.setText("Select All");
selectAllHiddenRewardsButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
selectAllHiddenRewardsButtonActionPerformed(evt);
}
});
rightRewardPanel.add(selectAllHiddenRewardsButton, java.awt.BorderLayout.SOUTH);
rightRewardColumn.add(rightRewardPanel, java.awt.BorderLayout.CENTER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.weighty = 1.0;
rewardPanel.add(rightRewardColumn, gridBagConstraints);
rewardTabPanel.add(rewardPanel, java.awt.BorderLayout.CENTER);
variableTabPane.addTab("Reward visibility", rewardTabPanel);
otherTabPanel.setLayout(new java.awt.BorderLayout());
boxPanel.setLayout(new javax.swing.BoxLayout(boxPanel, javax.swing.BoxLayout.Y_AXIS));
boxPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
innerTimePanel.setLayout(new java.awt.BorderLayout());
innerTimePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Time properties"));
topInnerTimePanel.setLayout(new java.awt.GridLayout(2, 1, 5, 5));
topInnerTimePanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
showTimeCheckBox.setText("Show the time spent in states");
showTimeCheckBox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
showTimeCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0));
topInnerTimePanel.add(showTimeCheckBox);
showTimeCheckBox.getAccessibleContext().setAccessibleName("");
showCumulativeTimeCheckBox.setText("Show the cumulative time");
showCumulativeTimeCheckBox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
showCumulativeTimeCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0));
topInnerTimePanel.add(showCumulativeTimeCheckBox);
innerTimePanel.add(topInnerTimePanel, java.awt.BorderLayout.NORTH);
boxPanel.add(innerTimePanel);
pathStylePanel.setLayout(new java.awt.BorderLayout());
pathStylePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Path style"));
innerPathStylePanel.setLayout(new java.awt.GridLayout(2, 1, 5, 5));
innerPathStylePanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
changeRenderingButton.setText("Render changes");
changeRenderingButton.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
changeRenderingButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
innerPathStylePanel.add(changeRenderingButton);
renderAllButton.setText("Render all values");
renderAllButton.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
renderAllButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
innerPathStylePanel.add(renderAllButton);
pathStylePanel.add(innerPathStylePanel, java.awt.BorderLayout.NORTH);
boxPanel.add(pathStylePanel);
otherTabPanel.add(boxPanel, java.awt.BorderLayout.NORTH);
variableTabPane.addTab("Other", otherTabPanel);
getContentPane().add(variableTabPane, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
private void selectAllHiddenRewardsButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_selectAllHiddenRewardsButtonActionPerformed
int[] indices = new int[hiddenRewardListModel.getSize()];
for (int i = 0; i < indices.length; i++)
indices[i] = i;
hiddenRewardList.setSelectedIndices(indices);
}//GEN-LAST:event_selectAllHiddenRewardsButtonActionPerformed
private void makeRewardHiddenButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_makeRewardHiddenButtonActionPerformed
int[] indices = visibleRewardList.getSelectedIndices();
for (int i = indices.length - 1; i >= 0; i--) {
RewardListItem rew = (RewardListItem) visibleRewardListModel.get(indices[i]);
visibleRewardListModel.removeReward(rew);
hiddenRewardListModel.addReward(rew);
}
}//GEN-LAST:event_makeRewardHiddenButtonActionPerformed
private void makeRewardVisibleButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_makeRewardVisibleButtonActionPerformed
int[] indices = hiddenRewardList.getSelectedIndices();
for (int i = indices.length - 1; i >= 0; i--) {
RewardListItem rew = (RewardListItem) hiddenRewardListModel.get(indices[i]);
hiddenRewardListModel.removeReward(rew);
visibleRewardListModel.addReward(rew);
}
}//GEN-LAST:event_makeRewardVisibleButtonActionPerformed
private void selectAllVisibleRewardsButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_selectAllVisibleRewardsButtonActionPerformed
int[] indices = new int[visibleRewardListModel.getSize()];
for (int i = 0; i < indices.length; i++)
indices[i] = i;
visibleRewardList.setSelectedIndices(indices);
}//GEN-LAST:event_selectAllVisibleRewardsButtonActionPerformed
private void selectAllVisibleVariablesButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_selectAllVisibleVariablesButtonActionPerformed
int[] indices = new int[visibleVariableListModel.getSize()];
for (int i = 0; i < indices.length; i++)
indices[i] = i;
visibleVariableList.setSelectedIndices(indices);
}//GEN-LAST:event_selectAllVisibleVariablesButtonActionPerformed
private void selectAllHiddenVariablesButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_selectAllHiddenVariablesButtonActionPerformed
int[] indices = new int[hiddenVariableListModel.getSize()];
for (int i = 0; i < indices.length; i++)
indices[i] = i;
hiddenVariableList.setSelectedIndices(indices);
}//GEN-LAST:event_selectAllHiddenVariablesButtonActionPerformed
private void makeVariableVisibleButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_makeVariableVisibleButtonActionPerformed
int[] indices = hiddenVariableList.getSelectedIndices();
for (int i = indices.length - 1; i >= 0; i--) {
Variable var = (Variable) hiddenVariableListModel.get(indices[i]);
hiddenVariableListModel.removeVariable(var);
visibleVariableListModel.addVariable(var);
}
}//GEN-LAST:event_makeVariableVisibleButtonActionPerformed
private void makeVariableHiddenButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_makeVariableHiddenButtonActionPerformed
int[] indices = visibleVariableList.getSelectedIndices();
for (int i = indices.length - 1; i >= 0; i--) {
Variable var = (Variable) visibleVariableListModel.get(indices[i]);
visibleVariableListModel.removeVariable(var);
hiddenVariableListModel.addVariable(var);
}
}//GEN-LAST:event_makeVariableHiddenButtonActionPerformed
private void okayButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_okayButtonActionPerformed
{//GEN-HEADEREND:event_okayButtonActionPerformed
if (optionCheckBox.isSelected() != this.askOption) {
this.askOption = !this.askOption;
try {
((GUIPrism) this.getParent()).getPrism().getSettings().set(PrismSettings.SIMULATOR_NEW_PATH_ASK_VIEW, this.askOption);
} catch (PrismException e) {
}
}
view.showTime(showTimeCheckBox.isSelected());
view.showCumulativeTime(showCumulativeTimeCheckBox.isSelected());
view.setVariableVisibility(visibleVariableListModel.getVariables(), hiddenVariableListModel.getVariables());
view.setRenderer(changeRenderingButton.isSelected());
view.setVisibleRewardListItems(visibleRewardListModel.getRewards());
dispose();
}//GEN-LAST:event_okayButtonActionPerformed
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cancelButtonActionPerformed
{//GEN-HEADEREND:event_cancelButtonActionPerformed
dispose();
}//GEN-LAST:event_cancelButtonActionPerformed
/** Closes the dialog */
private void closeDialog(java.awt.event.WindowEvent evt)//GEN-FIRST:event_closeDialog
{
setVisible(false);
dispose();
}//GEN-LAST:event_closeDialog
public void keyPressed(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
}
public void keyTyped(KeyEvent e)
{
}
class VariableListModel extends DefaultListModel
{
private static final long serialVersionUID = 1L;
public VariableListModel(ArrayList<Variable> variables)
{
super();
for (int i = 0; i < variables.size(); i++) {
super.add(i, variables.get(i));
}
}
public void removeVariable(Variable variable)
{
for (int i = 0; i < super.getSize(); i++) {
Variable var = (Variable) super.getElementAt(i);
if (var.equals(variable)) {
super.remove(i);
}
}
}
public void addVariable(Variable variable)
{
int i = 0;
while (i < super.getSize() && ((Variable) super.getElementAt(i)).getIndex() < variable.getIndex()) {
i++;
}
super.add(i, variable);
}
public ArrayList<Variable> getVariables()
{
ArrayList<Variable> list = new ArrayList<Variable>();
for (int i = 0; i < super.getSize(); i++) {
list.add((Variable) super.getElementAt(i));
}
return list;
}
}
class RewardListItem
{
private RewardStructure rewardStructure;
private boolean isCumulative;
public RewardListItem(RewardStructure rewardStructure, boolean isCumulative)
{
this.rewardStructure = rewardStructure;
this.isCumulative = isCumulative;
}
public String toString()
{
String res = rewardStructure.toString();
if (isCumulative)
return res + " (cumulative)";
else {
if (!rewardStructure.isStateEmpty() && !rewardStructure.isTransitionEmpty())
return res + " (state and transition)";
else if (!rewardStructure.isStateEmpty())
return res + " (state)";
else if (!rewardStructure.isTransitionEmpty())
return res + " (transition)";
else
return res + " (empty)";
}
}
public boolean isCumulative()
{
return isCumulative;
}
public void setCumulative(boolean isCumulative)
{
this.isCumulative = isCumulative;
}
public RewardStructure getRewardStructure()
{
return rewardStructure;
}
public void setRewardStructure(RewardStructure rewardStructure)
{
this.rewardStructure = rewardStructure;
}
public boolean equals(Object obj)
{
if (obj instanceof RewardListItem) {
RewardListItem item = (RewardListItem) obj;
return (item.getRewardStructure().equals(this.rewardStructure) && item.isCumulative() == isCumulative);
}
return false;
}
}
class RewardListModel extends DefaultListModel
{
private static final long serialVersionUID = 1L;
public RewardListModel(ArrayList<RewardListItem> rewardListItems)
{
for (int i = 0; i < rewardListItems.size(); i++) {
super.add(i, rewardListItems.get(i));
}
}
public void removeReward(RewardListItem reward)
{
for (int i = 0; i < super.getSize(); i++) {
RewardListItem rew = (RewardListItem) super.getElementAt(i);
if (rew.equals(reward)) {
super.remove(i);
}
}
}
public void addReward(RewardListItem reward)
{
int i = 0;
while (i < super.getSize() && ((RewardListItem) super.getElementAt(i)).getRewardStructure().getIndex() < reward.getRewardStructure().getIndex()) {
i++;
}
if (i < super.getSize() && ((RewardListItem) super.getElementAt(i)).getRewardStructure().getIndex() == reward.getRewardStructure().getIndex()
&& reward.isCumulative()) {
i++;
}
super.add(i, reward);
}
public ArrayList<RewardListItem> getRewards()
{
ArrayList<RewardListItem> list = new ArrayList<RewardListItem>();
for (int i = 0; i < super.getSize(); i++) {
list.add((RewardListItem) super.getElementAt(i));
}
return list;
}
}
}