|
@@ -78,6 +78,7 @@ import classes.HolonSwitch;
|
|
|
import classes.HolonTransformer;
|
|
|
import classes.IdCounter;
|
|
|
import classes.IdCounterElem;
|
|
|
+import classes.TrackedDataSet;
|
|
|
import interfaces.CategoryListener;
|
|
|
import ui.controller.Control;
|
|
|
import ui.controller.UpdateController;
|
|
@@ -126,7 +127,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
|
|
|
private splitPane statSplitPane;
|
|
|
private JScrollPane statScrollPane;
|
|
|
- private UpperNodeCanvas unc;;
|
|
|
+ private UpperNodeCanvas unc;
|
|
|
|
|
|
private final JLabel maxGraph = new JLabel("100%");
|
|
|
private final JLabel medGraph = new JLabel("50%");
|
|
@@ -134,7 +135,6 @@ public class GUI<E> implements CategoryListener {
|
|
|
private final JLabel elementGraph = new JLabel("None ");
|
|
|
private final ArrayList<HolonElement> selectedElements = new ArrayList<HolonElement>();
|
|
|
private String holonEleNamesDisplayed = "None ";
|
|
|
- private HashMap<Integer, ArrayList<HolonElement>> eleToDelete = new HashMap<Integer, ArrayList<HolonElement>>();
|
|
|
private final JTree tree = new JTree();
|
|
|
/******************************************
|
|
|
************* Right Container*************
|
|
@@ -152,8 +152,6 @@ public class GUI<E> implements CategoryListener {
|
|
|
// Table for HolonElements --> all cells are editable
|
|
|
private JTable tableHolonElement = new JTable();
|
|
|
// Model for single or multi selection
|
|
|
- private PropertyTable tableModelHolonElementMulti = new PropertyTable();
|
|
|
- private PropertyTable tableModelHolonElementSingle = new PropertyTable();
|
|
|
private final JPanel scrollElements = new JPanel();
|
|
|
private JScrollPane tableHolonElementScrollPane = new JScrollPane();
|
|
|
|
|
@@ -184,7 +182,6 @@ public class GUI<E> implements CategoryListener {
|
|
|
}
|
|
|
};
|
|
|
private JPanel graphLabel = new JPanel();
|
|
|
- private DefaulTable tableModelProperties;
|
|
|
private final JScrollPane scrollProperties = new JScrollPane();
|
|
|
|
|
|
// In this section is the graph for the selected HolonElement of the clicked
|
|
@@ -261,14 +258,14 @@ public class GUI<E> implements CategoryListener {
|
|
|
|
|
|
private String[] columnNamesMulti = { "Object", "Nr.", "Device", "Energy", "Quantity", "Activated" };
|
|
|
private String[] columnNamesSingle = { "Nr.", "Device", "Energy", "Quantity", "Activated" };
|
|
|
- private String[] colNames = { "Field", "Information" };
|
|
|
+ private ArrayList<PropertyTable> tables = new ArrayList<PropertyTable>();
|
|
|
private String[] comboBoxCat = { "Category", "Object", "Switch" };
|
|
|
private String warningText = "Warning";
|
|
|
private String saveBeforeNew = "Do you want to save your current data?";
|
|
|
private String eraseCategory = "Do you really want to delete the Category ";
|
|
|
private String selectObjBeforeErase = "Please select a Category or an Object in order to delete something.";
|
|
|
|
|
|
- UpdateController updCon;
|
|
|
+ private UpdateController updCon;
|
|
|
|
|
|
/**
|
|
|
* Create the application.
|
|
@@ -626,8 +623,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
// Set up of the HolonElements section
|
|
|
// Two different Models: Multi for multi-selection mode and Single for
|
|
|
// single-selection mode (CPS-Object)
|
|
|
- tableModelHolonElementMulti.setColumnIdentifiers(columnNamesMulti);
|
|
|
- tableModelHolonElementSingle.setColumnIdentifiers(columnNamesSingle);
|
|
|
+ model.getMultiTable().setColumnIdentifiers(columnNamesMulti);
|
|
|
+ model.getSingleTable().setColumnIdentifiers(columnNamesSingle);
|
|
|
tableHolonElement.setBorder(null);
|
|
|
tableHolonElement.setFillsViewportHeight(true);
|
|
|
tableHolonElement.setCellSelectionEnabled(true);
|
|
@@ -643,9 +640,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
panelHolonEl.add(toolBarHolonEl);
|
|
|
|
|
|
// Set up of the Properties section
|
|
|
- tableModelProperties = new DefaulTable(1000, colNames.length);
|
|
|
- tableModelProperties.setColumnIdentifiers(colNames);
|
|
|
- tableProperties.setModel(tableModelProperties);
|
|
|
+ tableProperties.setModel(model.getPropertyTable());
|
|
|
tableProperties.setFillsViewportHeight(true);
|
|
|
tableProperties.setCellSelectionEnabled(true);
|
|
|
tableProperties.setColumnSelectionAllowed(true);
|
|
@@ -667,6 +662,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
scrollGraph.setRowHeaderView(graphLabel);
|
|
|
scrollGraph.setColumnHeaderView(toolBarGraph);
|
|
|
|
|
|
+ tables.add(model.getSingleTable());
|
|
|
+ tables.add(model.getMultiTable());
|
|
|
/***********************
|
|
|
* HolonElement Table Actions
|
|
|
**********************/
|
|
@@ -676,19 +673,19 @@ public class GUI<E> implements CategoryListener {
|
|
|
btnAddHolEL.addActionListener(new ActionListener() {
|
|
|
public void actionPerformed(ActionEvent arg0) {
|
|
|
if (model.getSelectedCpsObjects().size() == 1) {
|
|
|
- AbstractCpsObject tempCpsObject = getActualCps();
|
|
|
+ AbstractCpsObject tempCpsObject = updCon.getActualCps();
|
|
|
if (tempCpsObject != null && tempCpsObject.getClass() == HolonObject.class
|
|
|
&& tempCpsObject.getID() != 0) {
|
|
|
addElementPopUp = new AddElementPopUp();
|
|
|
- addElementPopUp.setActualCps(getActualCps());
|
|
|
+ addElementPopUp.setActualCps(updCon.getActualCps());
|
|
|
addElementPopUp.setVisible(true);
|
|
|
HolonElement ele = addElementPopUp.getElement();
|
|
|
if (ele != null) {
|
|
|
controller.addElementCanvasObject(tempCpsObject.getID(), ele.getEleName(), ele.getAmount(),
|
|
|
ele.getEnergy());
|
|
|
}
|
|
|
- updCon.refreshTableHolonElement(tableModelHolonElementMulti, tableModelHolonElementSingle);
|
|
|
- updCon.refreshTableProperties(tableModelProperties);
|
|
|
+ updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
|
|
|
+ updCon.refreshTableProperties(model.getPropertyTable());
|
|
|
controller.calculateStateForTimeStep(model.getCurIteration());
|
|
|
}
|
|
|
}
|
|
@@ -702,28 +699,28 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void actionPerformed(ActionEvent arg0) {
|
|
|
// For Single Selection of CpsObject
|
|
|
if (model.getSelectedCpsObjects().size() == 1) {
|
|
|
- if (getActualCps().getClass() == HolonObject.class) {
|
|
|
- HolonObject obj = (HolonObject) getActualCps();
|
|
|
+ if (updCon.getActualCps().getClass() == HolonObject.class) {
|
|
|
+ HolonObject obj = (HolonObject) updCon.getActualCps();
|
|
|
for (HolonElement e : selectedElements) {
|
|
|
controller.deleteElementCanvas(obj.getID(), e.getId());
|
|
|
- updCon.refreshTableHolonElement(tableModelHolonElementMulti, tableModelHolonElementSingle);
|
|
|
- updCon.refreshTableProperties(tableModelProperties);
|
|
|
+ updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
|
|
|
+ updCon.refreshTableProperties(model.getPropertyTable());
|
|
|
controller.calculateStateForTimeStep(model.getCurIteration());
|
|
|
// Names displayed in graph are not updated
|
|
|
}
|
|
|
- eleToDelete.clear();
|
|
|
+ model.getEleToDelete().clear();
|
|
|
selectedElements.clear();
|
|
|
}
|
|
|
// For MultiSelection of CpsObject
|
|
|
} else if (model.getSelectedCpsObjects().size() > 1) {
|
|
|
- for (Integer i : eleToDelete.keySet()) {
|
|
|
- for (HolonElement e : eleToDelete.get(i)) {
|
|
|
+ for (Integer i : model.getEleToDelete().keySet()) {
|
|
|
+ for (HolonElement e : model.getEleToDelete().get(i)) {
|
|
|
controller.deleteElementCanvas(i, e.getId());
|
|
|
}
|
|
|
}
|
|
|
- updCon.refreshTableHolonElement(tableModelHolonElementMulti, tableModelHolonElementSingle);
|
|
|
- updCon.refreshTableProperties(tableModelProperties);
|
|
|
- eleToDelete.clear();
|
|
|
+ updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
|
|
|
+ updCon.refreshTableProperties(model.getPropertyTable());
|
|
|
+ model.getEleToDelete().clear();
|
|
|
selectedElements.clear();
|
|
|
}
|
|
|
elementGraph.setText("None ");
|
|
@@ -736,14 +733,14 @@ public class GUI<E> implements CategoryListener {
|
|
|
*/
|
|
|
tableHolonElement.addMouseListener(new MouseAdapter() {
|
|
|
public void mousePressed(MouseEvent e) {
|
|
|
- HolonObject obj = (HolonObject) getActualCps();
|
|
|
+ HolonObject obj = (HolonObject) updCon.getActualCps();
|
|
|
yValueElements = e.getY();
|
|
|
HolonElement ele = null;
|
|
|
// Search for current clicked HolonElement
|
|
|
if (model.getSelectedCpsObjects().size() == 1) {
|
|
|
- ele = getActualHolonElement(obj, yValueElements, 0);
|
|
|
+ ele = updCon.getActualHolonElement(obj, yValueElements, 0, tables);
|
|
|
} else {
|
|
|
- ele = getActualHolonElement(null, yValueElements, 0);
|
|
|
+ ele = updCon.getActualHolonElement(null, yValueElements, 0, tables);
|
|
|
}
|
|
|
// Multi-Selection of HolonElements through control button +
|
|
|
// mouse click
|
|
@@ -757,12 +754,12 @@ public class GUI<E> implements CategoryListener {
|
|
|
}
|
|
|
unitGraph.repaintWithNewElement(selectedElements);
|
|
|
}
|
|
|
- getActualHolonElement(null, yValueElements, 2);
|
|
|
+ updCon.getActualHolonElement(null, yValueElements, 2, tables);
|
|
|
} // if no control-button pressed but a HolonElement choose
|
|
|
else if (ele != null) {
|
|
|
selectedElements.clear();
|
|
|
selectedElements.add(ele);
|
|
|
- getActualHolonElement(null, yValueElements, 1);
|
|
|
+ updCon.getActualHolonElement(null, yValueElements, 1, tables);
|
|
|
holonEleNamesDisplayed = ele.getEleName() + " ";
|
|
|
unitGraph.repaintWithNewElement(selectedElements);
|
|
|
} // If any empty space is clicked
|
|
@@ -803,18 +800,18 @@ public class GUI<E> implements CategoryListener {
|
|
|
if (model.getSelectedCpsObjects().size() > 1) {
|
|
|
int selectedValueX = (int) Math.floor(xThis / (tableHolonElement.getWidth() / 6));
|
|
|
int selectedValueBX = (int) Math.floor(xBThis / (tableHolonElement.getWidth() / 6));
|
|
|
- if (updCon.getHolonObj(yMouse, tableModelHolonElementMulti) != null) {
|
|
|
+ if (updCon.getHolonObj(yMouse, model.getMultiTable()) != null) {
|
|
|
// For last column (boolean with a checkbox)
|
|
|
if (selectedValueBX == 5) {
|
|
|
- HolonElement eleBTemp = getActualHolonElement(null, yBMouse, 0);
|
|
|
- String newBStuff = tableModelHolonElementMulti
|
|
|
- .getValueAt(selectedValueBY, selectedValueBX).toString();
|
|
|
+ HolonElement eleBTemp = updCon.getActualHolonElement(null, yBMouse, 0, tables);
|
|
|
+ String newBStuff = model.getMultiTable().getValueAt(selectedValueBY, selectedValueBX)
|
|
|
+ .toString();
|
|
|
Boolean bTemp = Boolean.parseBoolean(newBStuff);
|
|
|
eleBTemp.setActive(bTemp);
|
|
|
} else {
|
|
|
// Update of HolonElement
|
|
|
- HolonElement eleTemp = getActualHolonElement(null, yMouse, 0);
|
|
|
- String newStuff = tableModelHolonElementMulti.getValueAt(selectedValueY, selectedValueX)
|
|
|
+ HolonElement eleTemp = updCon.getActualHolonElement(null, yMouse, 0, tables);
|
|
|
+ String newStuff = model.getMultiTable().getValueAt(selectedValueY, selectedValueX)
|
|
|
.toString();
|
|
|
// Name update
|
|
|
if (selectedValueX == 2) {
|
|
@@ -836,19 +833,21 @@ public class GUI<E> implements CategoryListener {
|
|
|
else if (model.getSelectedCpsObjects().size() == 1) {
|
|
|
int selectedValueX = (int) Math.floor(xThis / (tableHolonElement.getWidth() / 5));
|
|
|
int selectedValueBX = (int) Math.floor(xBThis / (tableHolonElement.getWidth() / 5));
|
|
|
- if (getActualCps() != null && getActualCps().getClass() == HolonObject.class) {
|
|
|
+ if (updCon.getActualCps() != null && updCon.getActualCps().getClass() == HolonObject.class) {
|
|
|
// For last column (boolean with a checkbox)
|
|
|
if (selectedValueBX == 4) {
|
|
|
- HolonElement eleBTemp = getActualHolonElement((HolonObject) getActualCps(), yBMouse, 0);
|
|
|
- String newBStuff = tableModelHolonElementSingle
|
|
|
- .getValueAt(selectedValueBY, selectedValueBX).toString();
|
|
|
+ HolonElement eleBTemp = updCon
|
|
|
+ .getActualHolonElement((HolonObject) updCon.getActualCps(), yBMouse, 0, tables);
|
|
|
+ String newBStuff = model.getSingleTable().getValueAt(selectedValueBY, selectedValueBX)
|
|
|
+ .toString();
|
|
|
Boolean bTemp = Boolean.parseBoolean(newBStuff);
|
|
|
eleBTemp.setActive(bTemp);
|
|
|
} else {
|
|
|
// Update of HolonElement
|
|
|
- HolonElement eleTemp = getActualHolonElement((HolonObject) getActualCps(), yMouse, 0);
|
|
|
- String newStuff = tableModelHolonElementSingle
|
|
|
- .getValueAt(selectedValueY, selectedValueX).toString();
|
|
|
+ HolonElement eleTemp = updCon.getActualHolonElement((HolonObject) updCon.getActualCps(),
|
|
|
+ yMouse, 0, tables);
|
|
|
+ String newStuff = model.getSingleTable().getValueAt(selectedValueY, selectedValueX)
|
|
|
+ .toString();
|
|
|
// Name update
|
|
|
if (selectedValueX == 1) {
|
|
|
eleTemp.setEleName(newStuff);
|
|
@@ -864,8 +863,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- updCon.refreshTableProperties(tableModelProperties);
|
|
|
- tableModelHolonElementSingle.fireTableDataChanged();
|
|
|
+ updCon.refreshTableProperties(model.getPropertyTable());
|
|
|
+ model.getSingleTable().fireTableDataChanged();
|
|
|
controller.calculateStateForTimeStep(model.getCurIteration());
|
|
|
unitGraph.repaint();
|
|
|
} catch (Exception e) {
|
|
@@ -902,35 +901,35 @@ public class GUI<E> implements CategoryListener {
|
|
|
Point mousePos = tableProperties.getMousePosition();
|
|
|
int selValueY = (int) Math.floor(yProThis / 16);
|
|
|
int selValueX = (int) Math.floor(xProThis / (tableProperties.getWidth() / 2));
|
|
|
- if (getActualCps() != null) {
|
|
|
- temp = tableModelProperties.getValueAt(selValueY, selValueX);
|
|
|
- if (getActualCps() instanceof HolonSwitch) {
|
|
|
- btemp = tableModelProperties.getValueAt(mousePos.y / tableProperties.getRowHeight(),
|
|
|
+ if (updCon.getActualCps() != null) {
|
|
|
+ temp = model.getPropertyTable().getValueAt(selValueY, selValueX);
|
|
|
+ if (updCon.getActualCps() instanceof HolonSwitch) {
|
|
|
+ btemp = model.getPropertyTable().getValueAt(mousePos.y / tableProperties.getRowHeight(),
|
|
|
mousePos.x / (tableProperties.getWidth() / 2));
|
|
|
if (mousePos.y / tableProperties.getRowHeight() == 0) {
|
|
|
- getActualCps().setName(btemp.toString());
|
|
|
+ updCon.getActualCps().setName(btemp.toString());
|
|
|
} else if (mousePos.y / tableProperties.getRowHeight() == 2) {
|
|
|
Boolean bbTemp = Boolean.parseBoolean(btemp.toString());
|
|
|
- ((HolonSwitch) getActualCps()).setManualMode(bbTemp);
|
|
|
+ ((HolonSwitch) updCon.getActualCps()).setManualMode(bbTemp);
|
|
|
if (bbTemp) {
|
|
|
- tableModelProperties.setCellEditable(3, 1, true);
|
|
|
+ model.getPropertyTable().setCellEditable(3, 1, true);
|
|
|
} else {
|
|
|
- tableModelProperties.setCellEditable(3, 1, false);
|
|
|
+ model.getPropertyTable().setCellEditable(3, 1, false);
|
|
|
}
|
|
|
} else if (mousePos.y / tableProperties.getRowHeight() == 3) {
|
|
|
- if (((HolonSwitch) getActualCps()).getManualMode()) {
|
|
|
- tableModelProperties.setCellEditable(3, 1, true);
|
|
|
+ if (((HolonSwitch) updCon.getActualCps()).getManualMode()) {
|
|
|
+ model.getPropertyTable().setCellEditable(3, 1, true);
|
|
|
Boolean bTemp = Boolean.parseBoolean(temp.toString());
|
|
|
- ((HolonSwitch) getActualCps()).setManualState(bTemp);
|
|
|
+ ((HolonSwitch) updCon.getActualCps()).setManualState(bTemp);
|
|
|
}
|
|
|
}
|
|
|
} // else if (getActualCps() instanceof
|
|
|
// AbstractCpsObject) {
|
|
|
- getActualCps().setName(temp.toString());
|
|
|
+ updCon.getActualCps().setName(temp.toString());
|
|
|
// }
|
|
|
} else {
|
|
|
- temp = tableModelProperties.getValueAt(selValueY, selValueX);
|
|
|
- btemp = tableModelProperties.getValueAt(mousePos.y / tableProperties.getRowHeight(),
|
|
|
+ temp = model.getPropertyTable().getValueAt(selValueY, selValueX);
|
|
|
+ btemp = model.getPropertyTable().getValueAt(mousePos.y / tableProperties.getRowHeight(),
|
|
|
mousePos.x / (tableProperties.getWidth() / 2));
|
|
|
if (selValueY == 2) {
|
|
|
Float ftemp;
|
|
@@ -1026,22 +1025,25 @@ public class GUI<E> implements CategoryListener {
|
|
|
int x = (int) unc.getMousePosition().getX();
|
|
|
int y = (int) unc.getMousePosition().getY();
|
|
|
|
|
|
- AbstractCpsObject h = null;
|
|
|
- if (tempCps instanceof HolonObject) {
|
|
|
- h = new HolonObject(tempCps);
|
|
|
- }
|
|
|
- if (tempCps instanceof HolonSwitch) {
|
|
|
- h = new HolonSwitch(tempCps);
|
|
|
- }
|
|
|
- if (tempCps instanceof HolonTransformer) {
|
|
|
- h = new HolonTransformer(tempCps);
|
|
|
- }
|
|
|
+ if (x > unc.borderPos) {
|
|
|
|
|
|
- h.setPosition(x, y);
|
|
|
+ AbstractCpsObject h = null;
|
|
|
+ if (tempCps instanceof HolonObject) {
|
|
|
+ h = new HolonObject(tempCps);
|
|
|
+ }
|
|
|
+ if (tempCps instanceof HolonSwitch) {
|
|
|
+ h = new HolonSwitch(tempCps);
|
|
|
+ }
|
|
|
+ if (tempCps instanceof HolonTransformer) {
|
|
|
+ h = new HolonTransformer(tempCps);
|
|
|
+ }
|
|
|
+
|
|
|
+ h.setPosition(x, y);
|
|
|
|
|
|
- controller.addObjUpperNode(h, unc.upperNode);
|
|
|
- unc.invalidate();
|
|
|
- unc.repaint();
|
|
|
+ controller.addObjUpperNode(h, unc.upperNode);
|
|
|
+ unc.invalidate();
|
|
|
+ unc.repaint();
|
|
|
+ }
|
|
|
} else {
|
|
|
int x = (int) canvas.getMousePosition().getX();
|
|
|
int y = (int) canvas.getMousePosition().getY();
|
|
@@ -1088,8 +1090,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
.getPathForLocation(e.getX(), e.getY()).getLastPathComponent();
|
|
|
if (selectedNode.getLevel() == 2) {
|
|
|
controller.searchCategoryObject(selectedNode.getParent().toString(), selectedNode.toString());
|
|
|
- updCon.deleteRows(tableModelHolonElementSingle);
|
|
|
- updCon.deleteRows(tableModelHolonElementMulti);
|
|
|
+ updCon.deleteRows(model.getSingleTable());
|
|
|
+ updCon.deleteRows(model.getMultiTable());
|
|
|
// if (selected instanceof HolonObject && selected !=
|
|
|
// null) {
|
|
|
// selected = (HolonObject) selected;
|
|
@@ -1222,11 +1224,11 @@ public class GUI<E> implements CategoryListener {
|
|
|
unitGraph.empty();
|
|
|
elementGraph.setText(Languages.getLanguage()[25]);
|
|
|
}
|
|
|
- temp = getActualCps();
|
|
|
+ temp = updCon.getActualCps();
|
|
|
// Erase old data in the PropertyTable
|
|
|
- if (tableModelProperties.getRowCount() > 0) {
|
|
|
- for (int i = tableModelProperties.getRowCount() - 1; i > -1; i--) {
|
|
|
- tableModelProperties.removeRow(i);
|
|
|
+ if (model.getPropertyTable().getRowCount() > 0) {
|
|
|
+ for (int i = model.getPropertyTable().getRowCount() - 1; i > -1; i--) {
|
|
|
+ model.getPropertyTable().removeRow(i);
|
|
|
}
|
|
|
}
|
|
|
if (e.isControlDown() && temp != null) {
|
|
@@ -1240,44 +1242,55 @@ public class GUI<E> implements CategoryListener {
|
|
|
if (temp != null) {
|
|
|
// Name of the CpsObject
|
|
|
Object[] tempName = { Languages.getLanguage()[72], temp.getName() };
|
|
|
- tableModelProperties.addRow(tempName);
|
|
|
+ model.getPropertyTable().addRow(tempName);
|
|
|
// Id of the CpsObject
|
|
|
Object[] tempId = { "ID", temp.getID() };
|
|
|
- tableModelProperties.addRow(tempId);
|
|
|
+ model.getPropertyTable().addRow(tempId);
|
|
|
// For HolonObjects the Total Energy (production or
|
|
|
// consumption) is calculated
|
|
|
if (temp instanceof HolonObject) {
|
|
|
- updCon.refreshTableHolonElement(tableModelHolonElementMulti, tableModelHolonElementSingle);
|
|
|
+ updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
|
|
|
Object[] tempEnergy = { Languages.getLanguage()[73], ((HolonObject) temp).getCurrentEnergy() };
|
|
|
- tableModelProperties.addRow(tempEnergy);
|
|
|
- tableModelProperties.setCellEditable(0, 1, true);
|
|
|
- tableModelProperties.setCellEditable(2, 1, false);
|
|
|
- tableModelProperties.setCellEditable(3, 1, false);
|
|
|
+ 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(tableModelHolonElementSingle);
|
|
|
- updCon.deleteRows(tableModelHolonElementMulti);
|
|
|
+ updCon.deleteRows(model.getSingleTable());
|
|
|
+ updCon.deleteRows(model.getMultiTable());
|
|
|
Object[] tempMode = { Languages.getLanguage()[74], ((HolonSwitch) temp).getManualMode() };
|
|
|
- tableModelProperties.addRow(tempMode);
|
|
|
+ model.getPropertyTable().addRow(tempMode);
|
|
|
if (((HolonSwitch) temp).getManualMode()) {
|
|
|
Object[] tempActive = { Languages.getLanguage()[75],
|
|
|
((HolonSwitch) temp).getActiveManual() };
|
|
|
- tableModelProperties.addRow(tempActive);
|
|
|
- tableModelProperties.setCellEditable(3, 1, true);
|
|
|
+ model.getPropertyTable().addRow(tempActive);
|
|
|
+ model.getPropertyTable().setCellEditable(3, 1, true);
|
|
|
} else {
|
|
|
Object[] tempActive = { Languages.getLanguage()[75],
|
|
|
((HolonSwitch) temp).getActiveAt()[model.getCurIteration()] };
|
|
|
- tableModelProperties.addRow(tempActive);
|
|
|
- tableModelProperties.setCellEditable(3, 1, false);
|
|
|
+ model.getPropertyTable().addRow(tempActive);
|
|
|
+ model.getPropertyTable().setCellEditable(3, 1, false);
|
|
|
}
|
|
|
unitGraph.repaintWithNewSwitch((HolonSwitch) temp);
|
|
|
elementGraph.setText(temp.getName());
|
|
|
- tableModelProperties.setCellEditable(0, 1, true);
|
|
|
- tableModelProperties.setCellEditable(2, 1, true);
|
|
|
+ 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(tableModelHolonElementSingle);
|
|
|
- updCon.deleteRows(tableModelHolonElementMulti);
|
|
|
+ updCon.deleteRows(model.getSingleTable());
|
|
|
+ updCon.deleteRows(model.getMultiTable());
|
|
|
}
|
|
|
// For Objects the only editable cell is the name
|
|
|
ArrayList<CpsEdge> tempArray = temp.getConnections();
|
|
@@ -1291,22 +1304,22 @@ public class GUI<E> implements CategoryListener {
|
|
|
Object[] tempConnection = { temp.getName() + Languages.getLanguage()[76],
|
|
|
temp2.getA().getName() + Languages.getLanguage()[77]
|
|
|
+ temp2.getA().getID() };
|
|
|
- tableModelProperties.addRow(tempConnection);
|
|
|
+ model.getPropertyTable().addRow(tempConnection);
|
|
|
} else {
|
|
|
Object[] tempConnection = { temp.getName() + Languages.getLanguage()[76],
|
|
|
temp2.getB().getName() + Languages.getLanguage()[77]
|
|
|
+ temp2.getB().getID() };
|
|
|
- tableModelProperties.addRow(tempConnection);
|
|
|
+ model.getPropertyTable().addRow(tempConnection);
|
|
|
}
|
|
|
} else {
|
|
|
if (temp.getID() != temp2.getA().getID()) {
|
|
|
Object[] tempConnection = { "", temp2.getA().getName() + Languages.getLanguage()[77]
|
|
|
+ temp2.getA().getID() };
|
|
|
- tableModelProperties.addRow(tempConnection);
|
|
|
+ model.getPropertyTable().addRow(tempConnection);
|
|
|
} else {
|
|
|
Object[] tempConnection = { "", temp2.getB().getName() + Languages.getLanguage()[77]
|
|
|
+ temp2.getB().getID() };
|
|
|
- tableModelProperties.addRow(tempConnection);
|
|
|
+ model.getPropertyTable().addRow(tempConnection);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1317,30 +1330,30 @@ public class GUI<E> implements CategoryListener {
|
|
|
Object[] tempName = { Languages.getLanguage()[72],
|
|
|
Languages.getLanguage()[78] + model.getSelectedEdge().getA().getName()
|
|
|
+ Languages.getLanguage()[79] + model.getSelectedEdge().getB().getName() };
|
|
|
- tableModelProperties.addRow(tempName);
|
|
|
+ model.getPropertyTable().addRow(tempName);
|
|
|
// Current Flow displayed
|
|
|
Object[] tempFlow = { Languages.getLanguage()[80], model.getSelectedEdge().getFlow() };
|
|
|
- tableModelProperties.addRow(tempFlow);
|
|
|
+ model.getPropertyTable().addRow(tempFlow);
|
|
|
// Max Capacity displayed
|
|
|
Object[] tempCapacity = { Languages.getLanguage()[81], model.getSelectedEdge().getCapacity() };
|
|
|
- tableModelProperties.addRow(tempCapacity);
|
|
|
+ model.getPropertyTable().addRow(tempCapacity);
|
|
|
// Status displayed
|
|
|
Object[] tempStatus = { Languages.getLanguage()[82], model.getSelectedEdge().getState() };
|
|
|
- tableModelProperties.addRow(tempStatus);
|
|
|
+ model.getPropertyTable().addRow(tempStatus);
|
|
|
// For edges, the only possible editable cell is the max
|
|
|
// flow
|
|
|
- tableModelProperties.setCellEditable(0, 1, false);
|
|
|
- tableModelProperties.setCellEditable(2, 1, true);
|
|
|
- tableModelProperties.setCellEditable(3, 1, true);
|
|
|
- } else if (getActualCps() == null) {
|
|
|
- updCon.deleteRows(tableModelHolonElementSingle);
|
|
|
- updCon.deleteRows(tableModelHolonElementMulti);
|
|
|
+ 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(tableModelHolonElementMulti);
|
|
|
+ tableHolonElement.setModel(model.getMultiTable());
|
|
|
} else if (model.getSelectedCpsObjects().size() == 1) {
|
|
|
- tableHolonElement.setModel(tableModelHolonElementSingle);
|
|
|
+ tableHolonElement.setModel(model.getSingleTable());
|
|
|
}
|
|
|
// New Tab with NodeOfNode
|
|
|
if (doubleClick() && temp instanceof CpsUpperNode) {
|
|
@@ -1350,12 +1363,12 @@ public class GUI<E> implements CategoryListener {
|
|
|
|
|
|
@Override
|
|
|
public void mouseReleased(MouseEvent e) {
|
|
|
- updCon.refreshTableHolonElement(tableModelHolonElementMulti, tableModelHolonElementSingle);
|
|
|
- updCon.refreshTableProperties(tableModelProperties);
|
|
|
+ updCon.refreshTableHolonElement(model.getMultiTable(), model.getSingleTable());
|
|
|
+ updCon.refreshTableProperties(model.getPropertyTable());
|
|
|
if (model.getSelectedCpsObjects().size() > 1) {
|
|
|
- tableHolonElement.setModel(tableModelHolonElementMulti);
|
|
|
+ tableHolonElement.setModel(model.getMultiTable());
|
|
|
} else if (model.getSelectedCpsObjects().size() == 1) {
|
|
|
- tableHolonElement.setModel(tableModelHolonElementSingle);
|
|
|
+ tableHolonElement.setModel(model.getSingleTable());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1502,7 +1515,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
Languages.setLanguage(0);
|
|
|
refreshLanguages();
|
|
|
- updCon.refreshTableProperties(tableModelProperties);
|
|
|
+ updCon.refreshTableProperties(model.getPropertyTable());
|
|
|
}
|
|
|
});
|
|
|
spanishBtn.addActionListener(new ActionListener() {
|
|
@@ -1511,7 +1524,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
Languages.setLanguage(1);
|
|
|
refreshLanguages();
|
|
|
- updCon.refreshTableProperties(tableModelProperties);
|
|
|
+ updCon.refreshTableProperties(model.getPropertyTable());
|
|
|
}
|
|
|
});
|
|
|
germanBtn.addActionListener(new ActionListener() {
|
|
@@ -1520,7 +1533,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
Languages.setLanguage(2);
|
|
|
refreshLanguages();
|
|
|
- updCon.refreshTableProperties(tableModelProperties);
|
|
|
+ updCon.refreshTableProperties(model.getPropertyTable());
|
|
|
}
|
|
|
});
|
|
|
czechBtn.addActionListener(new ActionListener() {
|
|
@@ -1529,7 +1542,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
Languages.setLanguage(3);
|
|
|
refreshLanguages();
|
|
|
- updCon.refreshTableProperties(tableModelProperties);
|
|
|
+ updCon.refreshTableProperties(model.getPropertyTable());
|
|
|
}
|
|
|
});
|
|
|
chineseBtn.addActionListener(new ActionListener() {
|
|
@@ -1538,7 +1551,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
Languages.setLanguage(4);
|
|
|
refreshLanguages();
|
|
|
- updCon.refreshTableProperties(tableModelProperties);
|
|
|
+ updCon.refreshTableProperties(model.getPropertyTable());
|
|
|
;
|
|
|
}
|
|
|
});
|
|
@@ -1778,84 +1791,6 @@ public class GUI<E> implements CategoryListener {
|
|
|
return frmCyberPhysical;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * Getter for selected CpsObject.
|
|
|
- *
|
|
|
- * @return selected CpsObject
|
|
|
- */
|
|
|
- private AbstractCpsObject getActualCps() {
|
|
|
- int tempID = model.getSelectedObjectID();
|
|
|
- AbstractCpsObject tempCps = controller.searchByID(tempID);
|
|
|
- return tempCps;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Search for actual selected HolonElement.
|
|
|
- *
|
|
|
- * @param obj
|
|
|
- * selected HolonObject, if obj==null means multi-selection
|
|
|
- * active
|
|
|
- * @param yValue
|
|
|
- * Y-Coord in the HolonElementsTable
|
|
|
- * @param toMultiHash
|
|
|
- * 0 means no MultiSelection, 1 means MultiSelection without
|
|
|
- * Control, 2 means MultiSelection with Control
|
|
|
- * @return the selected HolonElement
|
|
|
- */
|
|
|
- private HolonElement getActualHolonElement(HolonObject obj, int yValue, int toMultiHash) {
|
|
|
- final int yTemp = (int) Math.floor(yValue / 16);
|
|
|
- int rowsTotal = 0;
|
|
|
- // Filter for search --> single and multi selection
|
|
|
- if (obj == null) {
|
|
|
- rowsTotal = tableModelHolonElementMulti.getRowCount();
|
|
|
- } else {
|
|
|
- rowsTotal = tableModelHolonElementSingle.getRowCount();
|
|
|
- }
|
|
|
- // search for the clicked HolonObject and HolonElement --> in the
|
|
|
- // HolonElementTable
|
|
|
- HolonObject obtTemp = null;
|
|
|
- HolonElement toReturnEle = null;
|
|
|
- int id = 0;
|
|
|
- if (rowsTotal != 0 && rowsTotal > yTemp) {
|
|
|
- // Multi-Selection search
|
|
|
- if (obj == null) {
|
|
|
- String tempStringObj = tableModelHolonElementMulti.getValueAt(yTemp, 0).toString();
|
|
|
- int idTempObj = Integer.parseInt(tempStringObj.split(", ")[1]);
|
|
|
- obtTemp = (HolonObject) controller.searchByID(idTempObj);
|
|
|
- id = Integer.parseInt(tableModelHolonElementMulti.getValueAt(yTemp, 1).toString());
|
|
|
- ArrayList<HolonElement> eleTemp = new ArrayList<HolonElement>();
|
|
|
- if (eleToDelete.containsKey(idTempObj) && toMultiHash == 2) {
|
|
|
- eleTemp = eleToDelete.get(idTempObj);
|
|
|
- if (!eleTemp.contains(obtTemp.searchElementById(id))) {
|
|
|
- eleTemp.add(obtTemp.searchElementById(id));
|
|
|
- eleToDelete.replace(idTempObj, eleTemp);
|
|
|
- }
|
|
|
- } else if (toMultiHash == 2) {
|
|
|
- eleTemp.add(obtTemp.searchElementById(id));
|
|
|
- eleToDelete.put(idTempObj, eleTemp);
|
|
|
- } else if (toMultiHash == 1) {
|
|
|
- eleToDelete = new HashMap<Integer, ArrayList<HolonElement>>();
|
|
|
- eleTemp.add(obtTemp.searchElementById(id));
|
|
|
- eleToDelete.put(idTempObj, eleTemp);
|
|
|
- } else if (toMultiHash == 0) {
|
|
|
- toReturnEle = obtTemp.searchElementById(id);
|
|
|
- }
|
|
|
- } // Single-Selection search
|
|
|
- else {
|
|
|
- eleToDelete = new HashMap<Integer, ArrayList<HolonElement>>();
|
|
|
- id = Integer.parseInt(tableModelHolonElementSingle.getValueAt(yTemp, 0).toString());
|
|
|
- toReturnEle = obj.searchElementById(id);
|
|
|
- }
|
|
|
- model.setSelectedHolonElement(toReturnEle);
|
|
|
- return toReturnEle;
|
|
|
- } // If no HolonObject selected
|
|
|
- else {
|
|
|
- eleToDelete = new HashMap<Integer, ArrayList<HolonElement>>();
|
|
|
- model.setSelectedHolonElement(null);
|
|
|
- return null;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* Adds a Popup.
|
|
|
*
|
|
@@ -1910,14 +1845,14 @@ public class GUI<E> implements CategoryListener {
|
|
|
for (int i = 0; i < columnNamesMulti.length; i++) {
|
|
|
columnNamesMulti[i] = tempArray[i + 17];
|
|
|
}
|
|
|
- tableModelHolonElementMulti.setColumnIdentifiers(columnNamesMulti);
|
|
|
+ model.getMultiTable().setColumnIdentifiers(columnNamesMulti);
|
|
|
for (int i = 0; i < columnNamesSingle.length; i++) {
|
|
|
columnNamesSingle[i] = tempArray[i + 18];
|
|
|
}
|
|
|
- tableModelHolonElementSingle.setColumnIdentifiers(columnNamesSingle);
|
|
|
- colNames[0] = tempArray[23];
|
|
|
- colNames[1] = tempArray[24];
|
|
|
- tableModelProperties.setColumnIdentifiers(colNames);
|
|
|
+ model.getSingleTable().setColumnIdentifiers(columnNamesSingle);
|
|
|
+ model.colNames[0] = tempArray[23];
|
|
|
+ model.colNames[1] = tempArray[24];
|
|
|
+ model.getPropertyTable().setColumnIdentifiers(model.colNames);
|
|
|
// Graph
|
|
|
elementGraph.setText(tempArray[25]);
|
|
|
holonEleNamesDisplayed = tempArray[25];
|
|
@@ -1981,6 +1916,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
// check if tab already open for clicked NodeOfNode
|
|
|
boolean dupl = false;
|
|
|
for (int i = 2; i < tabbedPane.getTabCount() && dupl == false; i++) {
|
|
|
+ System.out.println(i);
|
|
|
if (((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport().getComponent(0)).upperNode
|
|
|
.getID() == temp.getID()) {
|
|
|
dupl = true;
|
|
@@ -1995,10 +1931,12 @@ public class GUI<E> implements CategoryListener {
|
|
|
unc.addMouseListener(new MouseAdapter() {
|
|
|
@Override
|
|
|
public void mousePressed(MouseEvent e) {
|
|
|
- temp = unc.tempCps;
|
|
|
+ temp = ((UpperNodeCanvas) ((JScrollPane) tabbedPane.getSelectedComponent()).getViewport().getComponent(0)).tempCps;
|
|
|
if (doubleClick() && temp instanceof CpsUpperNode) {
|
|
|
openNewUpperNodeTab();
|
|
|
+ System.out.println("done");
|
|
|
}
|
|
|
+ // updCon.refreshTableProperties(table);
|
|
|
}
|
|
|
});
|
|
|
|