|
@@ -148,8 +148,6 @@ public class GUI<E> implements CategoryListener {
|
|
// In this section are all the Holonelements that correspond to the clicked
|
|
// In this section are all the Holonelements that correspond to the clicked
|
|
// HolonObject with consumption/production, name and amount.
|
|
// HolonObject with consumption/production, name and amount.
|
|
|
|
|
|
- // Table for HolonElements --> all cells are editable
|
|
|
|
- private JTable tableHolonElement = new JTable();
|
|
|
|
// Model for single or multi selection
|
|
// Model for single or multi selection
|
|
private final JPanel scrollElements = new JPanel();
|
|
private final JPanel scrollElements = new JPanel();
|
|
private JScrollPane tableHolonElementScrollPane = new JScrollPane();
|
|
private JScrollPane tableHolonElementScrollPane = new JScrollPane();
|
|
@@ -624,11 +622,11 @@ public class GUI<E> implements CategoryListener {
|
|
// single-selection mode (CPS-Object)
|
|
// single-selection mode (CPS-Object)
|
|
model.getMultiTable().setColumnIdentifiers(columnNamesMulti);
|
|
model.getMultiTable().setColumnIdentifiers(columnNamesMulti);
|
|
model.getSingleTable().setColumnIdentifiers(columnNamesSingle);
|
|
model.getSingleTable().setColumnIdentifiers(columnNamesSingle);
|
|
- tableHolonElement.setBorder(null);
|
|
|
|
- tableHolonElement.setFillsViewportHeight(true);
|
|
|
|
- tableHolonElement.setCellSelectionEnabled(true);
|
|
|
|
- tableHolonElement.setColumnSelectionAllowed(true);
|
|
|
|
- tableHolonElementScrollPane.setViewportView(tableHolonElement);
|
|
|
|
|
|
+ model.getTableHolonElement().setBorder(null);
|
|
|
|
+ model.getTableHolonElement().setFillsViewportHeight(true);
|
|
|
|
+ model.getTableHolonElement().setCellSelectionEnabled(true);
|
|
|
|
+ model.getTableHolonElement().setColumnSelectionAllowed(true);
|
|
|
|
+ tableHolonElementScrollPane.setViewportView(model.getTableHolonElement());
|
|
scrollElements.setLayout(new BorderLayout(0, 0));
|
|
scrollElements.setLayout(new BorderLayout(0, 0));
|
|
scrollElements.add(panelHolonEl, BorderLayout.NORTH);
|
|
scrollElements.add(panelHolonEl, BorderLayout.NORTH);
|
|
scrollElements.add(tableHolonElementScrollPane);
|
|
scrollElements.add(tableHolonElementScrollPane);
|
|
@@ -728,9 +726,9 @@ public class GUI<E> implements CategoryListener {
|
|
});
|
|
});
|
|
/*
|
|
/*
|
|
* Communication between HolonElement Table and displayed Graph and
|
|
* Communication between HolonElement Table and displayed Graph and
|
|
- * Properties, as well as selection of differet HolonElements
|
|
|
|
|
|
+ * Properties, as well as selection of different HolonElements
|
|
*/
|
|
*/
|
|
- tableHolonElement.addMouseListener(new MouseAdapter() {
|
|
|
|
|
|
+ model.getTableHolonElement().addMouseListener(new MouseAdapter() {
|
|
public void mousePressed(MouseEvent e) {
|
|
public void mousePressed(MouseEvent e) {
|
|
HolonObject obj = (HolonObject) updCon.getActualCps();
|
|
HolonObject obj = (HolonObject) updCon.getActualCps();
|
|
yValueElements = e.getY();
|
|
yValueElements = e.getY();
|
|
@@ -787,7 +785,7 @@ public class GUI<E> implements CategoryListener {
|
|
/*
|
|
/*
|
|
* Triggered every time a change is made
|
|
* Triggered every time a change is made
|
|
*/
|
|
*/
|
|
- tableHolonElement.addPropertyChangeListener(new PropertyChangeListener() {
|
|
|
|
|
|
+ model.getTableHolonElement().addPropertyChangeListener(new PropertyChangeListener() {
|
|
@Override
|
|
@Override
|
|
public void propertyChange(PropertyChangeEvent evt) {
|
|
public void propertyChange(PropertyChangeEvent evt) {
|
|
try {
|
|
try {
|
|
@@ -797,8 +795,8 @@ public class GUI<E> implements CategoryListener {
|
|
int selectedValueBY = (int) Math.floor(yBMouse / 16);
|
|
int selectedValueBY = (int) Math.floor(yBMouse / 16);
|
|
// for multi-selection mode
|
|
// for multi-selection mode
|
|
if (model.getSelectedCpsObjects().size() > 1) {
|
|
if (model.getSelectedCpsObjects().size() > 1) {
|
|
- int selectedValueX = (int) Math.floor(xThis / (tableHolonElement.getWidth() / 6));
|
|
|
|
- int selectedValueBX = (int) Math.floor(xBThis / (tableHolonElement.getWidth() / 6));
|
|
|
|
|
|
+ int selectedValueX = (int) Math.floor(xThis / (model.getTableHolonElement().getWidth() / 6));
|
|
|
|
+ int selectedValueBX = (int) Math.floor(xBThis / (model.getTableHolonElement().getWidth() / 6));
|
|
if (updCon.getHolonObj(yMouse, model.getMultiTable()) != null) {
|
|
if (updCon.getHolonObj(yMouse, model.getMultiTable()) != null) {
|
|
// For last column (boolean with a checkbox)
|
|
// For last column (boolean with a checkbox)
|
|
if (selectedValueBX == 5) {
|
|
if (selectedValueBX == 5) {
|
|
@@ -830,8 +828,8 @@ public class GUI<E> implements CategoryListener {
|
|
}
|
|
}
|
|
} // For single-selection mode
|
|
} // For single-selection mode
|
|
else if (model.getSelectedCpsObjects().size() == 1) {
|
|
else if (model.getSelectedCpsObjects().size() == 1) {
|
|
- int selectedValueX = (int) Math.floor(xThis / (tableHolonElement.getWidth() / 5));
|
|
|
|
- int selectedValueBX = (int) Math.floor(xBThis / (tableHolonElement.getWidth() / 5));
|
|
|
|
|
|
+ int selectedValueX = (int) Math.floor(xThis / (model.getTableHolonElement().getWidth() / 5));
|
|
|
|
+ int selectedValueBX = (int) Math.floor(xBThis / (model.getTableHolonElement().getWidth() / 5));
|
|
if (updCon.getActualCps() != null && updCon.getActualCps().getClass() == HolonObject.class) {
|
|
if (updCon.getActualCps() != null && updCon.getActualCps().getClass() == HolonObject.class) {
|
|
// For last column (boolean with a checkbox)
|
|
// For last column (boolean with a checkbox)
|
|
if (selectedValueBX == 4) {
|
|
if (selectedValueBX == 4) {
|
|
@@ -1238,122 +1236,7 @@ public class GUI<E> implements CategoryListener {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// Write new data in the PropertyTable
|
|
// Write new data in the PropertyTable
|
|
- if (temp != null) {
|
|
|
|
- // Name of the CpsObject
|
|
|
|
- Object[] tempName = { Languages.getLanguage()[72], temp.getName() };
|
|
|
|
- model.getPropertyTable().addRow(tempName);
|
|
|
|
- // Id of the CpsObject
|
|
|
|
- Object[] tempId = { "ID", temp.getID() };
|
|
|
|
- model.getPropertyTable().addRow(tempId);
|
|
|
|
- // For HolonObjects the Total Energy (production or
|
|
|
|
- // consumption) is calculated
|
|
|
|
- if (temp instanceof HolonObject) {
|
|
|
|
- updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
|
|
|
|
- Object[] tempEnergy = { Languages.getLanguage()[73], ((HolonObject) temp).getCurrentEnergy() };
|
|
|
|
- model.getPropertyTable().addRow(tempEnergy);
|
|
|
|
- model.getPropertyTable().setCellEditable(0, 1, true);
|
|
|
|
- model.getPropertyTable().setCellEditable(2, 1, false);
|
|
|
|
- model.getPropertyTable().setCellEditable(3, 1, false);
|
|
|
|
- } // For HolonSwitches is showed the actual status (active
|
|
|
|
- // or inactive)
|
|
|
|
- else if (temp instanceof HolonSwitch) {
|
|
|
|
- updCon.deleteRows(model.getSingleTable());
|
|
|
|
- updCon.deleteRows(model.getMultiTable());
|
|
|
|
- Object[] tempMode = { Languages.getLanguage()[74], ((HolonSwitch) temp).getManualMode() };
|
|
|
|
- model.getPropertyTable().addRow(tempMode);
|
|
|
|
- if (((HolonSwitch) temp).getManualMode()) {
|
|
|
|
- Object[] tempActive = { Languages.getLanguage()[75],
|
|
|
|
- ((HolonSwitch) temp).getActiveManual() };
|
|
|
|
- model.getPropertyTable().addRow(tempActive);
|
|
|
|
- model.getPropertyTable().setCellEditable(3, 1, true);
|
|
|
|
- } else {
|
|
|
|
- Object[] tempActive = { Languages.getLanguage()[75],
|
|
|
|
- ((HolonSwitch) temp).getActiveAt()[model.getCurIteration()] };
|
|
|
|
- model.getPropertyTable().addRow(tempActive);
|
|
|
|
- model.getPropertyTable().setCellEditable(3, 1, false);
|
|
|
|
- }
|
|
|
|
- unitGraph.repaintWithNewSwitch((HolonSwitch) temp);
|
|
|
|
- elementGraph.setText(temp.getName());
|
|
|
|
- model.getPropertyTable().setCellEditable(0, 1, true);
|
|
|
|
- model.getPropertyTable().setCellEditable(2, 1, true);
|
|
|
|
- } else if (temp instanceof CpsUpperNode) {
|
|
|
|
- updCon.deleteRows(model.getSingleTable());
|
|
|
|
- updCon.deleteRows(model.getMultiTable());
|
|
|
|
- Object[] numEle = { "Number of Elements", ((CpsUpperNode) temp).getNodes().size() };
|
|
|
|
- Object[] numObj = { "Number of HolonObject", ((CpsUpperNode) temp).getNumHolonObj().size() };
|
|
|
|
- Object[] numSwi = { "Number of HolonSwitch", ((CpsUpperNode) temp).getNumSwitches().size() };
|
|
|
|
- Object[] numUpp = { "Number of UpperNodes", ((CpsUpperNode) temp).getNumUpperNodes().size() };
|
|
|
|
- model.getPropertyTable().addRow(numEle);
|
|
|
|
- model.getPropertyTable().addRow(numObj);
|
|
|
|
- model.getPropertyTable().addRow(numSwi);
|
|
|
|
- model.getPropertyTable().addRow(numUpp);
|
|
|
|
- } else {
|
|
|
|
- updCon.deleteRows(model.getSingleTable());
|
|
|
|
- updCon.deleteRows(model.getMultiTable());
|
|
|
|
- }
|
|
|
|
- // For Objects the only editable cell is the name
|
|
|
|
- ArrayList<CpsEdge> tempArray = temp.getConnections();
|
|
|
|
- // If the clicked object has connections
|
|
|
|
- if (!tempArray.isEmpty()) {
|
|
|
|
- boolean first = true;
|
|
|
|
- for (CpsEdge temp2 : tempArray) {
|
|
|
|
- if (first) {
|
|
|
|
- first = false;
|
|
|
|
- if (temp.getID() != temp2.getA().getID()) {
|
|
|
|
- Object[] tempConnection = { temp.getName() + Languages.getLanguage()[76],
|
|
|
|
- temp2.getA().getName() + Languages.getLanguage()[77]
|
|
|
|
- + temp2.getA().getID() };
|
|
|
|
- model.getPropertyTable().addRow(tempConnection);
|
|
|
|
- } else {
|
|
|
|
- Object[] tempConnection = { temp.getName() + Languages.getLanguage()[76],
|
|
|
|
- temp2.getB().getName() + Languages.getLanguage()[77]
|
|
|
|
- + temp2.getB().getID() };
|
|
|
|
- model.getPropertyTable().addRow(tempConnection);
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- if (temp.getID() != temp2.getA().getID()) {
|
|
|
|
- Object[] tempConnection = { "", temp2.getA().getName() + Languages.getLanguage()[77]
|
|
|
|
- + temp2.getA().getID() };
|
|
|
|
- model.getPropertyTable().addRow(tempConnection);
|
|
|
|
- } else {
|
|
|
|
- Object[] tempConnection = { "", temp2.getB().getName() + Languages.getLanguage()[77]
|
|
|
|
- + temp2.getB().getID() };
|
|
|
|
- model.getPropertyTable().addRow(tempConnection);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- } // If the clicked Object is an edge
|
|
|
|
- else if (model.getSelectedEdge() != null) {
|
|
|
|
- // Name displayed
|
|
|
|
- Object[] tempName = { Languages.getLanguage()[72],
|
|
|
|
- Languages.getLanguage()[78] + model.getSelectedEdge().getA().getName()
|
|
|
|
- + Languages.getLanguage()[79] + model.getSelectedEdge().getB().getName() };
|
|
|
|
- model.getPropertyTable().addRow(tempName);
|
|
|
|
- // Current Flow displayed
|
|
|
|
- Object[] tempFlow = { Languages.getLanguage()[80], model.getSelectedEdge().getFlow() };
|
|
|
|
- model.getPropertyTable().addRow(tempFlow);
|
|
|
|
- // Max Capacity displayed
|
|
|
|
- Object[] tempCapacity = { Languages.getLanguage()[81], model.getSelectedEdge().getCapacity() };
|
|
|
|
- model.getPropertyTable().addRow(tempCapacity);
|
|
|
|
- // Status displayed
|
|
|
|
- Object[] tempStatus = { Languages.getLanguage()[82], model.getSelectedEdge().getState() };
|
|
|
|
- model.getPropertyTable().addRow(tempStatus);
|
|
|
|
- // For edges, the only possible editable cell is the max
|
|
|
|
- // flow
|
|
|
|
- model.getPropertyTable().setCellEditable(0, 1, false);
|
|
|
|
- model.getPropertyTable().setCellEditable(2, 1, true);
|
|
|
|
- model.getPropertyTable().setCellEditable(3, 1, true);
|
|
|
|
- } else if (updCon.getActualCps() == null) {
|
|
|
|
- updCon.deleteRows(model.getSingleTable());
|
|
|
|
- updCon.deleteRows(model.getMultiTable());
|
|
|
|
- } // Update of the HolonElementTable (Single- or
|
|
|
|
- // Multi-Selection)
|
|
|
|
- if (model.getSelectedCpsObjects().size() > 1) {
|
|
|
|
- tableHolonElement.setModel(model.getMultiTable());
|
|
|
|
- } else if (model.getSelectedCpsObjects().size() == 1) {
|
|
|
|
- tableHolonElement.setModel(model.getSingleTable());
|
|
|
|
- }
|
|
|
|
|
|
+ updCon.paintProperties(temp);
|
|
// New Tab with NodeOfNode
|
|
// New Tab with NodeOfNode
|
|
if (doubleClick() && temp instanceof CpsUpperNode) {
|
|
if (doubleClick() && temp instanceof CpsUpperNode) {
|
|
openNewUpperNodeTab();
|
|
openNewUpperNodeTab();
|
|
@@ -1365,9 +1248,9 @@ public class GUI<E> implements CategoryListener {
|
|
updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
|
|
updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
|
|
updCon.refreshTableProperties(model.getPropertyTable());
|
|
updCon.refreshTableProperties(model.getPropertyTable());
|
|
if (model.getSelectedCpsObjects().size() > 1) {
|
|
if (model.getSelectedCpsObjects().size() > 1) {
|
|
- tableHolonElement.setModel(model.getMultiTable());
|
|
|
|
|
|
+ model.getTableHolonElement().setModel(model.getMultiTable());
|
|
} else if (model.getSelectedCpsObjects().size() == 1) {
|
|
} else if (model.getSelectedCpsObjects().size() == 1) {
|
|
- tableHolonElement.setModel(model.getSingleTable());
|
|
|
|
|
|
+ model.getTableHolonElement().setModel(model.getSingleTable());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|