diff --git a/prism/src/userinterface/simulator/GUISimulator.java b/prism/src/userinterface/simulator/GUISimulator.java index cc5e0700..f2b9b356 100644 --- a/prism/src/userinterface/simulator/GUISimulator.java +++ b/prism/src/userinterface/simulator/GUISimulator.java @@ -59,8 +59,7 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect private GUIPrismFileFilter[] txtFilter; private JMenu simulatorMenu; private JPopupMenu pathPopupMenu; - - + //Current State private ModulesFile parsedModel; private boolean pathActive; @@ -82,11 +81,14 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect public GUISimulator(GUIPrism gui) { super(gui, true); - pathTableModel = new PathTableModel(new SimulationView()); - updateTableModel = new UpdateTableModel(); - this.gui = gui; this.engine = gui.getPrism().getSimulator(); + + SimulationView view = new SimulationView(); + pathTableModel = new PathTableModel(view); + + updateTableModel = new UpdateTableModel(); + initComponents(); initPopups(); @@ -112,6 +114,7 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect } }); + view.refreshToDefaultView(); pathActive = false; engineBuilt = false; @@ -2489,6 +2492,7 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect private boolean stepsVisible; private boolean showTime; private boolean showCumulativeTime; + private boolean useChangeRenderer; public SimulationView() { @@ -2497,8 +2501,6 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect this.visibleRewardColumns = new ArrayList(); this.rewards = new ArrayList(); - - refreshToDefaultView(); } public boolean showSteps() @@ -2603,6 +2605,21 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect return engine; } + public boolean isChangeRenderer() + { + return useChangeRenderer; + } + + public void setRenderer(boolean isChangeRenderer) + { + if (useChangeRenderer != isChangeRenderer) + { + useChangeRenderer = isChangeRenderer; + + GUISimulator.this.setRenderer(useChangeRenderer); + } + } + public void refreshToDefaultView() { visibleVariables.clear(); @@ -2610,14 +2627,21 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect visibleRewardColumns.clear(); rewards.clear(); + + useChangeRenderer = (gui.getPrism().getSettings().getInteger(PrismSettings.SIMULATOR_RENDER_ALL_VALUES) == 0); + + if (useChangeRenderer != usingChangeRenderer()) + { + GUISimulator.this.setRenderer(useChangeRenderer); + } if (pathActive) { try { stepsVisible = true; - showTime = parsedModel.getType() == ModulesFile.STOCHASTIC; - showCumulativeTime = parsedModel.getType() == ModulesFile.STOCHASTIC;; + showTime = false; + showCumulativeTime = parsedModel.getType() == ModulesFile.STOCHASTIC; for (int i = 0; i < engine.getNumVariables(); i++) { @@ -3258,9 +3282,13 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect return updateTableModel.oldStep; } - public void notifySettings(PrismSettings settings) + public boolean usingChangeRenderer() + { + return ((GUISimulatorPathTable)pathTable).usingChangeRenderer(); + } + + public void setRenderer(boolean displayStyleFast) { - displayStyleFast = settings.getInteger(PrismSettings.SIMULATOR_RENDER_ALL_VALUES) == 0; if(displayStyleFast) { ((GUISimulatorPathTable)pathTable).switchToChangeRenderer(); @@ -3405,4 +3433,9 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect return engine.getDistributionIndexOfUpdate(row); } } + + public void notifySettings(PrismSettings settings) { + // TODO Auto-generated method stub + + } } diff --git a/prism/src/userinterface/simulator/GUISimulatorPathTable.java b/prism/src/userinterface/simulator/GUISimulatorPathTable.java index dbf2989f..95677df6 100644 --- a/prism/src/userinterface/simulator/GUISimulatorPathTable.java +++ b/prism/src/userinterface/simulator/GUISimulatorPathTable.java @@ -91,6 +91,11 @@ public class GUISimulatorPathTable extends GUIGroupedTable } + public boolean usingChangeRenderer() + { + return ((PathChangeTableRenderer)getDefaultRenderer(Object.class)).onlyShowChange(); + } + public void switchToChangeRenderer() { setDefaultRenderer(Object.class, new PathChangeTableRenderer(true)); diff --git a/prism/src/userinterface/simulator/GUIViewDialog.form b/prism/src/userinterface/simulator/GUIViewDialog.form index 101b7971..3e237cea 100644 --- a/prism/src/userinterface/simulator/GUIViewDialog.form +++ b/prism/src/userinterface/simulator/GUIViewDialog.form @@ -14,6 +14,8 @@ + + @@ -532,18 +534,18 @@ - + - - + + - + @@ -553,11 +555,13 @@ - + - + + + @@ -567,11 +571,9 @@ - - - - - + + + @@ -629,6 +631,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/prism/src/userinterface/simulator/GUIViewDialog.java b/prism/src/userinterface/simulator/GUIViewDialog.java index a816ddbd..bd8ec5d2 100644 --- a/prism/src/userinterface/simulator/GUIViewDialog.java +++ b/prism/src/userinterface/simulator/GUIViewDialog.java @@ -63,17 +63,20 @@ public class GUIViewDialog extends JDialog implements KeyListener // 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; @@ -85,6 +88,10 @@ public class GUIViewDialog extends JDialog implements KeyListener 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; @@ -97,8 +104,6 @@ public class GUIViewDialog extends JDialog implements KeyListener private javax.swing.JButton selectAllVisibleVariablesButton; private javax.swing.JCheckBox showCumulativeTimeCheckBox; private javax.swing.JCheckBox showTimeCheckBox; - private javax.swing.JPanel timePanel; - private javax.swing.JPanel timeTabPanel; private javax.swing.JPanel topInnerTimePanel; private javax.swing.JPanel variablePanel; private javax.swing.JTabbedPane variableTabPane; @@ -173,8 +178,15 @@ public class GUIViewDialog extends JDialog implements KeyListener visibleRewardList.setModel(visibleRewardListModel); hiddenRewardList.setModel(hiddenRewardListModel); + + showCumulativeTimeCheckBox.setEnabled(view.canShowTime()); + showTimeCheckBox.setEnabled(view.canShowTime()); + + pathStyle.add(renderAllButton); + pathStyle.add(changeRenderingButton); - variableTabPane.setEnabledAt(2, view.canShowTime()); + renderAllButton.setSelected(!view.isChangeRenderer()); + changeRenderingButton.setSelected(view.isChangeRenderer()); makeVariableHiddenButton.setIcon(GUIPrism.getIconFromImage("smallArrowRight.png")); makeRewardHiddenButton.setIcon(GUIPrism.getIconFromImage("smallArrowRight.png")); @@ -196,6 +208,7 @@ public class GUIViewDialog extends JDialog implements KeyListener 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(); @@ -235,12 +248,16 @@ public class GUIViewDialog extends JDialog implements KeyListener hiddenRewardScrollList = new javax.swing.JScrollPane(); hiddenRewardList = new javax.swing.JList(); selectAllHiddenRewardsButton = new javax.swing.JButton(); - timeTabPanel = new javax.swing.JPanel(); - timePanel = new javax.swing.JPanel(); + 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"); @@ -509,11 +526,11 @@ public class GUIViewDialog extends JDialog implements KeyListener variableTabPane.addTab("Reward visibility", rewardTabPanel); - timeTabPanel.setLayout(new java.awt.BorderLayout()); + otherTabPanel.setLayout(new java.awt.BorderLayout()); - timePanel.setLayout(new java.awt.GridBagLayout()); + boxPanel.setLayout(new javax.swing.BoxLayout(boxPanel, javax.swing.BoxLayout.Y_AXIS)); - timePanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5)); + boxPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5)); innerTimePanel.setLayout(new java.awt.BorderLayout()); innerTimePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Time properties")); @@ -533,18 +550,32 @@ public class GUIViewDialog extends JDialog implements KeyListener innerTimePanel.add(topInnerTimePanel, java.awt.BorderLayout.NORTH); - 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; - timePanel.add(innerTimePanel, gridBagConstraints); + boxPanel.add(innerTimePanel); + innerTimePanel.getAccessibleContext().setAccessibleName("Time properties"); - timeTabPanel.add(timePanel, java.awt.BorderLayout.CENTER); + pathStylePanel.setLayout(new java.awt.BorderLayout()); - variableTabPane.addTab("Time", timeTabPanel); + 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); @@ -665,7 +696,7 @@ public class GUIViewDialog extends JDialog implements KeyListener view.showTime(showTimeCheckBox.isSelected()); view.showCumulativeTime(showCumulativeTimeCheckBox.isSelected()); view.setVariableVisibility(visibleVariableListModel.getVariables(), hiddenVariableListModel.getVariables()); - + view.setRenderer(changeRenderingButton.isSelected()); view.setVisibleRewardListItems(visibleRewardListModel.getRewards()); dispose(); @@ -783,7 +814,7 @@ public class GUIViewDialog extends JDialog implements KeyListener { this.isCumulative = isCumulative; } - + public GUISimulator.RewardStructure getRewardStructure() { return rewardStructure;