Browse Source

Refactor management of table columns in GUISimulator.UpdateTableModel.

accumulation-v4.7
Dave Parker 5 years ago
parent
commit
c697613722
  1. 51
      prism/src/userinterface/simulator/GUISimulator.java

51
prism/src/userinterface/simulator/GUISimulator.java

@ -40,6 +40,8 @@ import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector; import java.util.Vector;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
@ -2221,8 +2223,13 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect
repaint(); repaint();
} }
enum UpdateTableModelColumn {
ACTION, PROB, UPDATE
};
class UpdateTableModel extends AbstractTableModel class UpdateTableModel extends AbstractTableModel
{ {
private List<UpdateTableModelColumn> visibleColumns = new ArrayList<>();
public boolean oldUpdate; public boolean oldUpdate;
private int oldStep; private int oldStep;
@ -2235,7 +2242,7 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect
public int getColumnCount() public int getColumnCount()
{ {
return pathActive ? 3 : 0;
return visibleColumns.size();
} }
public int getRowCount() public int getRowCount()
@ -2251,12 +2258,12 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect
{ {
if (pathActive) { if (pathActive) {
try { try {
switch (columnIndex) {
case 0:
switch (visibleColumns.get(columnIndex)) {
case ACTION:
return engine.getTransitionActionString(rowIndex); return engine.getTransitionActionString(rowIndex);
case 1:
case PROB:
return "" + engine.getTransitionProbability(rowIndex); return "" + engine.getTransitionProbability(rowIndex);
case 2:
case UPDATE:
return engine.getTransitionUpdateString(rowIndex); return engine.getTransitionUpdateString(rowIndex);
default: default:
return ""; return "";
@ -2268,21 +2275,21 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect
return ""; return "";
} }
public String getColumnName(int column)
public String getColumnName(int columnIndex)
{ {
if (pathActive) { if (pathActive) {
switch (column) {
case 0:
switch (visibleColumns.get(columnIndex)) {
case ACTION:
return engine.getModel().getActionStringDescription(); return engine.getModel().getActionStringDescription();
case 1:
case PROB:
return parsedModel == null ? "Probability" : parsedModel.getModelType().probabilityOrRate(); return parsedModel == null ? "Probability" : parsedModel.getModelType().probabilityOrRate();
case 2:
case UPDATE:
return "Update"; return "Update";
default: default:
return ""; return "";
} }
} else
return "";
}
return "";
} }
/** /**
@ -2295,12 +2302,11 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect
} }
oldUpdate = false; oldUpdate = false;
oldStep = -1; oldStep = -1;
setVisibleColumns();
doEnables(); doEnables();
fireTableDataChanged(); fireTableDataChanged();
currentUpdatesTable.setEnabled(true); currentUpdatesTable.setEnabled(true);
currentUpdatesTable.setToolTipText("Double click on an update to manually execute it"); currentUpdatesTable.setToolTipText("Double click on an update to manually execute it");
if (getRowCount() > 0) { if (getRowCount() > 0) {
currentUpdatesTable.getSelectionModel().setSelectionInterval(0, 0); currentUpdatesTable.getSelectionModel().setSelectionInterval(0, 0);
} }
@ -2311,19 +2317,18 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect
*/ */
public void updateUpdatesTable(int oldStep) throws PrismException public void updateUpdatesTable(int oldStep) throws PrismException
{ {
if (oldStep == pathTable.getRowCount() - 1) // if current state selected
{
if (oldStep == pathTable.getRowCount() - 1) {
// if current state selected
updateUpdatesTable(); updateUpdatesTable();
} else { } else {
this.oldStep = oldStep; this.oldStep = oldStep;
oldUpdate = true; oldUpdate = true;
setVisibleColumns();
doEnables(); doEnables();
engine.computeTransitionsForStep(oldStep); engine.computeTransitionsForStep(oldStep);
fireTableDataChanged(); fireTableDataChanged();
currentUpdatesTable.setEnabled(false); currentUpdatesTable.setEnabled(false);
currentUpdatesTable.setToolTipText(null); currentUpdatesTable.setToolTipText(null);
if (getRowCount() > 0) { if (getRowCount() > 0) {
int selectThis = engine.getChoiceOfPathStep(oldStep); int selectThis = engine.getChoiceOfPathStep(oldStep);
currentUpdatesTable.getSelectionModel().setSelectionInterval(selectThis, selectThis); currentUpdatesTable.getSelectionModel().setSelectionInterval(selectThis, selectThis);
@ -2331,6 +2336,16 @@ public class GUISimulator extends GUIPlugin implements MouseListener, ListSelect
} }
} }
public void setVisibleColumns()
{
visibleColumns.clear();
visibleColumns.add(UpdateTableModelColumn.ACTION);
if (parsedModel != null && parsedModel.getModelType().isProbabilistic()) {
visibleColumns.add(UpdateTableModelColumn.PROB);
}
visibleColumns.add(UpdateTableModelColumn.UPDATE);
}
public void restartUpdatesTable() public void restartUpdatesTable()
{ {
fireTableStructureChanged(); fireTableStructureChanged();

Loading…
Cancel
Save