|
@@ -24,6 +24,8 @@ import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.Timer;
|
|
|
+import java.util.TimerTask;
|
|
|
|
|
|
import javax.swing.AbstractAction;
|
|
|
import javax.swing.ActionMap;
|
|
@@ -78,6 +80,7 @@ import classes.IdCounter;
|
|
|
import classes.IdCounterElem;
|
|
|
import interfaces.CategoryListener;
|
|
|
import ui.controller.Control;
|
|
|
+import ui.controller.UpdateController;
|
|
|
import ui.model.Model;
|
|
|
|
|
|
|
|
@@ -90,6 +93,9 @@ import ui.model.Model;
|
|
|
*/
|
|
|
public class GUI<E> implements CategoryListener {
|
|
|
|
|
|
+
|
|
|
+ private boolean click = false;
|
|
|
+
|
|
|
private JFrame frmCyberPhysical;
|
|
|
|
|
|
private final SimulationMenu simMenu;
|
|
@@ -262,6 +268,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
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;
|
|
|
+
|
|
|
|
|
|
* Create the application.
|
|
|
*
|
|
@@ -283,7 +291,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
simMenu = new SimulationMenu(model, control);
|
|
|
initialize();
|
|
|
updateCategories(model.getCategories());
|
|
|
-
|
|
|
+ updCon = new UpdateController(model, controller);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -680,8 +688,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
controller.addElementCanvasObject(tempCpsObject.getID(), ele.getEleName(), ele.getAmount(),
|
|
|
ele.getEnergy());
|
|
|
}
|
|
|
- refreshTableHolonElement();
|
|
|
- refreshTableProperties();
|
|
|
+ updCon.refreshTableHolonElement(tableModelHolonElementMulti, tableModelHolonElementSingle);
|
|
|
+ updCon.refreshTableProperties(tableModelProperties);
|
|
|
controller.calculateStateForTimeStep(model.getCurIteration());
|
|
|
}
|
|
|
}
|
|
@@ -699,8 +707,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
HolonObject obj = (HolonObject) getActualCps();
|
|
|
for (HolonElement e : selectedElements) {
|
|
|
controller.deleteElementCanvas(obj.getID(), e.getId());
|
|
|
- refreshTableHolonElement();
|
|
|
- refreshTableProperties();
|
|
|
+ updCon.refreshTableHolonElement(tableModelHolonElementMulti, tableModelHolonElementSingle);
|
|
|
+ updCon.refreshTableProperties(tableModelProperties);
|
|
|
controller.calculateStateForTimeStep(model.getCurIteration());
|
|
|
|
|
|
}
|
|
@@ -714,8 +722,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
controller.deleteElementCanvas(i, e.getId());
|
|
|
}
|
|
|
}
|
|
|
- refreshTableHolonElement();
|
|
|
- refreshTableProperties();
|
|
|
+ updCon.refreshTableHolonElement(tableModelHolonElementMulti, tableModelHolonElementSingle);
|
|
|
+ updCon.refreshTableProperties(tableModelProperties);
|
|
|
eleToDelete.clear();
|
|
|
selectedElements.clear();
|
|
|
}
|
|
@@ -796,7 +804,7 @@ 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 (getHolonObj(yMouse) != null) {
|
|
|
+ if (updCon.getHolonObj(yMouse, tableModelHolonElementMulti) != null) {
|
|
|
|
|
|
if (selectedValueBX == 5) {
|
|
|
HolonElement eleBTemp = getActualHolonElement(null, yBMouse, 0);
|
|
@@ -857,7 +865,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- refreshTableProperties();
|
|
|
+ updCon.refreshTableProperties(tableModelProperties);
|
|
|
tableModelHolonElementSingle.fireTableDataChanged();
|
|
|
controller.calculateStateForTimeStep(model.getCurIteration());
|
|
|
unitGraph.repaint();
|
|
@@ -917,9 +925,10 @@ public class GUI<E> implements CategoryListener {
|
|
|
((HolonSwitch) getActualCps()).setManualState(bTemp);
|
|
|
}
|
|
|
}
|
|
|
- } else if (getActualCps() instanceof HolonObject) {
|
|
|
- getActualCps().setName(temp.toString());
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ getActualCps().setName(temp.toString());
|
|
|
+
|
|
|
} else {
|
|
|
temp = tableModelProperties.getValueAt(selValueY, selValueX);
|
|
|
btemp = tableModelProperties.getValueAt(mousePos.y / tableProperties.getRowHeight(),
|
|
@@ -1010,24 +1019,51 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void mouseReleased(MouseEvent e) {
|
|
|
try {
|
|
|
if (dragging) {
|
|
|
- int x = (int) canvas.getMousePosition().getX();
|
|
|
- int y = (int) canvas.getMousePosition().getY();
|
|
|
- AbstractCpsObject h = null;
|
|
|
- if (tempCps.getClass() == HolonObject.class) {
|
|
|
- h = new HolonObject(tempCps);
|
|
|
- }
|
|
|
- if (tempCps.getClass() == HolonSwitch.class) {
|
|
|
- h = new HolonSwitch(tempCps);
|
|
|
- }
|
|
|
- if (tempCps.getClass() == HolonTransformer.class) {
|
|
|
- h = new HolonTransformer(tempCps);
|
|
|
- }
|
|
|
+ if (((JScrollPane) tabbedPane.getSelectedComponent()).getViewport()
|
|
|
+ .getComponent(0) instanceof UpperNodeCanvas) {
|
|
|
+ UpperNodeCanvas unc = ((UpperNodeCanvas) ((JScrollPane) tabbedPane.getSelectedComponent())
|
|
|
+ .getViewport().getComponent(0));
|
|
|
|
|
|
- h.setPosition(x, y);
|
|
|
- controller.addObjectCanvas(h);
|
|
|
- canvas.invalidate();
|
|
|
- canvas.repaint();
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ h.setPosition(x, y);
|
|
|
+
|
|
|
+ controller.addObjUpperNode(h, unc.upperNode);
|
|
|
+ unc.invalidate();
|
|
|
+ unc.repaint();
|
|
|
+ } else {
|
|
|
+ int x = (int) canvas.getMousePosition().getX();
|
|
|
+ int y = (int) canvas.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);
|
|
|
+ }
|
|
|
+
|
|
|
+ h.setPosition(x, y);
|
|
|
|
|
|
+ controller.addObjectCanvas(h);
|
|
|
+ canvas.invalidate();
|
|
|
+ canvas.repaint();
|
|
|
+ }
|
|
|
dragging = false;
|
|
|
}
|
|
|
} catch (Exception eex) {
|
|
@@ -1053,8 +1089,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
.getPathForLocation(e.getX(), e.getY()).getLastPathComponent();
|
|
|
if (selectedNode.getLevel() == 2) {
|
|
|
controller.searchCategoryObject(selectedNode.getParent().toString(), selectedNode.toString());
|
|
|
- deleteRows(tableModelHolonElementSingle);
|
|
|
- deleteRows(tableModelHolonElementMulti);
|
|
|
+ updCon.deleteRows(tableModelHolonElementSingle);
|
|
|
+ updCon.deleteRows(tableModelHolonElementMulti);
|
|
|
|
|
|
|
|
|
|
|
@@ -1212,7 +1248,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
|
|
|
|
|
|
if (temp instanceof HolonObject) {
|
|
|
- refreshTableHolonElement();
|
|
|
+ updCon.refreshTableHolonElement(tableModelHolonElementMulti, tableModelHolonElementSingle);
|
|
|
Object[] tempEnergy = { Languages.getLanguage()[73], ((HolonObject) temp).getCurrentEnergy() };
|
|
|
tableModelProperties.addRow(tempEnergy);
|
|
|
tableModelProperties.setCellEditable(0, 1, true);
|
|
@@ -1221,8 +1257,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
}
|
|
|
|
|
|
else if (temp instanceof HolonSwitch) {
|
|
|
- deleteRows(tableModelHolonElementSingle);
|
|
|
- deleteRows(tableModelHolonElementMulti);
|
|
|
+ updCon.deleteRows(tableModelHolonElementSingle);
|
|
|
+ updCon.deleteRows(tableModelHolonElementMulti);
|
|
|
Object[] tempMode = { Languages.getLanguage()[74], ((HolonSwitch) temp).getManualMode() };
|
|
|
tableModelProperties.addRow(tempMode);
|
|
|
if (((HolonSwitch) temp).getManualMode()) {
|
|
@@ -1241,8 +1277,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
tableModelProperties.setCellEditable(0, 1, true);
|
|
|
tableModelProperties.setCellEditable(2, 1, true);
|
|
|
} else {
|
|
|
- deleteRows(tableModelHolonElementSingle);
|
|
|
- deleteRows(tableModelHolonElementMulti);
|
|
|
+ updCon.deleteRows(tableModelHolonElementSingle);
|
|
|
+ updCon.deleteRows(tableModelHolonElementMulti);
|
|
|
}
|
|
|
|
|
|
ArrayList<CpsEdge> tempArray = temp.getConnections();
|
|
@@ -1298,8 +1334,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
tableModelProperties.setCellEditable(2, 1, true);
|
|
|
tableModelProperties.setCellEditable(3, 1, true);
|
|
|
} else if (getActualCps() == null) {
|
|
|
- deleteRows(tableModelHolonElementSingle);
|
|
|
- deleteRows(tableModelHolonElementMulti);
|
|
|
+ updCon.deleteRows(tableModelHolonElementSingle);
|
|
|
+ updCon.deleteRows(tableModelHolonElementMulti);
|
|
|
}
|
|
|
|
|
|
if (model.getSelectedCpsObjects().size() > 1) {
|
|
@@ -1308,21 +1344,15 @@ public class GUI<E> implements CategoryListener {
|
|
|
tableHolonElement.setModel(tableModelHolonElementSingle);
|
|
|
}
|
|
|
|
|
|
- if (canvas.click && temp instanceof CpsUpperNode) {
|
|
|
- UpperNodeCanvas unc = new UpperNodeCanvas(model, controller, (CpsUpperNode) temp);
|
|
|
- unc.setBorder(null);
|
|
|
- unc.setBackground(Color.WHITE);
|
|
|
- unc.setPreferredSize(new Dimension(model.getCanvasX(), model.getCanvasY()));
|
|
|
- JScrollPane sp = new JScrollPane(unc);
|
|
|
- sp.setBorder(null);
|
|
|
- tabbedPane.add(temp.getName(), sp);
|
|
|
+ if (doubleClick() && temp instanceof CpsUpperNode) {
|
|
|
+ openNewUpperNodeTab();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void mouseReleased(MouseEvent e) {
|
|
|
- refreshTableHolonElement();
|
|
|
- refreshTableProperties();
|
|
|
+ updCon.refreshTableHolonElement(tableModelHolonElementMulti, tableModelHolonElementSingle);
|
|
|
+ updCon.refreshTableProperties(tableModelProperties);
|
|
|
if (model.getSelectedCpsObjects().size() > 1) {
|
|
|
tableHolonElement.setModel(tableModelHolonElementMulti);
|
|
|
} else if (model.getSelectedCpsObjects().size() == 1) {
|
|
@@ -1473,7 +1503,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
Languages.setLanguage(0);
|
|
|
refreshLanguages();
|
|
|
- refreshTableProperties();
|
|
|
+ updCon.refreshTableProperties(tableModelProperties);
|
|
|
}
|
|
|
});
|
|
|
spanishBtn.addActionListener(new ActionListener() {
|
|
@@ -1482,7 +1512,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
Languages.setLanguage(1);
|
|
|
refreshLanguages();
|
|
|
- refreshTableProperties();
|
|
|
+ updCon.refreshTableProperties(tableModelProperties);
|
|
|
}
|
|
|
});
|
|
|
germanBtn.addActionListener(new ActionListener() {
|
|
@@ -1491,7 +1521,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
Languages.setLanguage(2);
|
|
|
refreshLanguages();
|
|
|
- refreshTableProperties();
|
|
|
+ updCon.refreshTableProperties(tableModelProperties);
|
|
|
}
|
|
|
});
|
|
|
czechBtn.addActionListener(new ActionListener() {
|
|
@@ -1500,7 +1530,7 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
Languages.setLanguage(3);
|
|
|
refreshLanguages();
|
|
|
- refreshTableProperties();
|
|
|
+ updCon.refreshTableProperties(tableModelProperties);
|
|
|
}
|
|
|
});
|
|
|
chineseBtn.addActionListener(new ActionListener() {
|
|
@@ -1509,7 +1539,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
Languages.setLanguage(4);
|
|
|
refreshLanguages();
|
|
|
- refreshTableProperties();
|
|
|
+ updCon.refreshTableProperties(tableModelProperties);
|
|
|
+ ;
|
|
|
}
|
|
|
});
|
|
|
|
|
@@ -1605,10 +1636,8 @@ public class GUI<E> implements CategoryListener {
|
|
|
splitPane.setLeftComponent(scrollPane1);
|
|
|
splitPaneCanvasConsole.setLeftComponent(panelTapped_SimMenu);
|
|
|
tabbedPane.addTab("View", canvasSP);
|
|
|
- tabbedPane.setTabComponentAt(0, new ButtonTabComponent(tabbedPane));
|
|
|
- tabbedPane.addTab("Statistics", statScrollPane);
|
|
|
- tabbedPane.setTabComponentAt(1, new ButtonTabComponent(tabbedPane));
|
|
|
-
|
|
|
+ tabbedPane.addTab("Statistics", statScrollPane);
|
|
|
+
|
|
|
splitPaneCanvasConsole.setRightComponent(console);
|
|
|
splitPane1.setLeftComponent(splitPaneCanvasConsole);
|
|
|
splitPane1.setRightComponent(splitHolonElPro);
|
|
@@ -1828,98 +1857,6 @@ public class GUI<E> implements CategoryListener {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- * Search for clicked HolonObject through the mouse's y-Coord.
|
|
|
- *
|
|
|
- * @param yValue
|
|
|
- * the Y Coordination
|
|
|
- * @return clicked HolonObject
|
|
|
- */
|
|
|
- private HolonObject getHolonObj(int yValue) {
|
|
|
- final int yTemp = (int) Math.floor(yValue / 16);
|
|
|
- HolonObject obtTemp = null;
|
|
|
- String temp = tableModelHolonElementMulti.getValueAt(yTemp, 0).toString();
|
|
|
- int idTemp = Integer.parseInt(temp.split(", ")[1]);
|
|
|
- obtTemp = (HolonObject) controller.searchByID(idTemp);
|
|
|
- return obtTemp;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- * Update the HolonElement Table, that means erase all rows and add the new
|
|
|
- * rows with new data.
|
|
|
- */
|
|
|
- private void refreshTableHolonElement() {
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- if (model.getSelectedCpsObjects().size() > 1) {
|
|
|
- deleteRows(tableModelHolonElementMulti);
|
|
|
- fillElementTable(model.getSelectedCpsObjects());
|
|
|
- tableModelHolonElementMulti.fireTableDataChanged();
|
|
|
- } else if (model.getSelectedCpsObjects().size() == 1) {
|
|
|
- deleteRows(tableModelHolonElementSingle);
|
|
|
- fillElementTable(model.getSelectedCpsObjects());
|
|
|
- tableModelHolonElementSingle.fireTableDataChanged();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- * Erase all information of the HolonElement Model.
|
|
|
- *
|
|
|
- * @param t
|
|
|
- * the Table
|
|
|
- */
|
|
|
- private void deleteRows(PropertyTable t) {
|
|
|
- if (t.getRowCount() > 0) {
|
|
|
- for (int i = t.getRowCount() - 1; i > -1; i--) {
|
|
|
- t.removeRow(i);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- * Add the Information of the given ArrayList in the HolonElement Model as
|
|
|
- * Name,Energy and Amount.
|
|
|
- *
|
|
|
- * @param objects
|
|
|
- * ArrayList to be displayed
|
|
|
- */
|
|
|
- private void fillElementTable(ArrayList<AbstractCpsObject> objects) {
|
|
|
- if (objects.size() > 1) {
|
|
|
- for (AbstractCpsObject o : objects) {
|
|
|
- if (o instanceof HolonObject) {
|
|
|
- for (HolonElement he : ((HolonObject) o).getElements()) {
|
|
|
- Object[] temp = { o.getName() + ", " + o.getID(), he.getId(), he.getEleName(), he.getEnergy(),
|
|
|
- he.getAmount(), he.getActive() };
|
|
|
- tableModelHolonElementMulti.addRow(temp);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } else if (objects.size() == 1) {
|
|
|
- AbstractCpsObject o = objects.get(0);
|
|
|
- if (o instanceof HolonObject) {
|
|
|
- for (HolonElement he : ((HolonObject) o).getElements()) {
|
|
|
- Object[] temp = { he.getId(), he.getEleName(), he.getEnergy(), he.getAmount(), he.getActive() };
|
|
|
- tableModelHolonElementSingle.addRow(temp);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- * Update the information concerning properties of the selected CpsObject.
|
|
|
- */
|
|
|
- private void refreshTableProperties() {
|
|
|
- if (model.getSelectedCpsObjects().size() == 1) {
|
|
|
- AbstractCpsObject tempCps = getActualCps();
|
|
|
- if (tempCps != null && tempCps.getClass() == HolonObject.class) {
|
|
|
- tableModelProperties.removeRow(2);
|
|
|
- Object[] tempEnergy = { Languages.getLanguage()[73], ((HolonObject) tempCps).getCurrentEnergy() };
|
|
|
- tableModelProperties.insertRow(2, tempEnergy);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
* Adds a Popup.
|
|
|
*
|
|
@@ -2004,4 +1941,78 @@ public class GUI<E> implements CategoryListener {
|
|
|
|
|
|
lblImageSize.setText(Languages.getLanguage()[94]);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ * Checks if a double click was made.
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ *
|
|
|
+ * @return true if doublecklick, false if not
|
|
|
+ */
|
|
|
+ private boolean doubleClick() {
|
|
|
+ if (click) {
|
|
|
+ click = false;
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ click = true;
|
|
|
+ Timer t = new Timer("doubleclickTimer", false);
|
|
|
+ t.schedule(new TimerTask() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ click = false;
|
|
|
+ }
|
|
|
+ }, 350);
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * Open a new Tab with an UpperNodeCanvas
|
|
|
+ */
|
|
|
+ private void openNewUpperNodeTab() {
|
|
|
+
|
|
|
+ UpperNodeCanvas unc;
|
|
|
+ if (((JScrollPane) tabbedPane.getSelectedComponent()).getViewport().getComponent(0) instanceof MyCanvas) {
|
|
|
+ unc = new UpperNodeCanvas(model, controller, (CpsUpperNode) temp, "");
|
|
|
+ } else {
|
|
|
+ unc = new UpperNodeCanvas(model, controller, (CpsUpperNode) temp,
|
|
|
+ ((UpperNodeCanvas) ((JScrollPane) tabbedPane.getSelectedComponent()).getViewport()
|
|
|
+ .getComponent(0)).path + " -> ");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ boolean dupl = false;
|
|
|
+ for (int i = 2; i < tabbedPane.getTabCount() && dupl == false; i++) {
|
|
|
+ if (((UpperNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i)).getViewport().getComponent(0)).upperNode
|
|
|
+ .getID() == temp.getID()) {
|
|
|
+ dupl = true;
|
|
|
+ tabbedPane.setSelectedComponent(tabbedPane.getComponentAt(i));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!dupl) {
|
|
|
+
|
|
|
+ unc.setBorder(null);
|
|
|
+ unc.setBackground(Color.WHITE);
|
|
|
+ unc.setPreferredSize(new Dimension(model.getCanvasX(), model.getCanvasY()));
|
|
|
+
|
|
|
+ unc.addMouseListener(new MouseAdapter() {
|
|
|
+ @Override
|
|
|
+ public void mousePressed(MouseEvent e) {
|
|
|
+ temp = unc.tempCps;
|
|
|
+ if (doubleClick() && temp instanceof CpsUpperNode) {
|
|
|
+ openNewUpperNodeTab();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ JScrollPane sp = new JScrollPane(unc);
|
|
|
+ sp.setBorder(null);
|
|
|
+ tabbedPane.add(temp.getName(), sp);
|
|
|
+ tabbedPane.setSelectedComponent(sp);
|
|
|
+ tabbedPane.setTabComponentAt(tabbedPane.getTabCount() - 1, new ButtonTabComponent(tabbedPane));
|
|
|
+ temp = null;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|