|
@@ -2,6 +2,7 @@ package ui.view;
|
|
|
|
|
|
import java.io.File;
|
|
import java.io.File;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.Enumeration;
|
|
|
|
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JList;
|
|
import javax.swing.JList;
|
|
@@ -16,6 +17,8 @@ import javax.swing.JScrollPane;
|
|
import javax.swing.JTabbedPane;
|
|
import javax.swing.JTabbedPane;
|
|
import javax.swing.JTable;
|
|
import javax.swing.JTable;
|
|
import javax.swing.tree.DefaultTreeModel;
|
|
import javax.swing.tree.DefaultTreeModel;
|
|
|
|
+import javax.swing.tree.MutableTreeNode;
|
|
|
|
+import javax.swing.tree.TreeNode;
|
|
|
|
|
|
import ui.controller.Control;
|
|
import ui.controller.Control;
|
|
import ui.model.*;
|
|
import ui.model.*;
|
|
@@ -31,6 +34,9 @@ import java.awt.Cursor;
|
|
import java.awt.Image;
|
|
import java.awt.Image;
|
|
import java.awt.Point;
|
|
import java.awt.Point;
|
|
import java.awt.Toolkit;
|
|
import java.awt.Toolkit;
|
|
|
|
+import java.awt.datatransfer.Clipboard;
|
|
|
|
+import java.awt.datatransfer.DataFlavor;
|
|
|
|
+import java.awt.dnd.DragSource;
|
|
import java.awt.BorderLayout;
|
|
import java.awt.BorderLayout;
|
|
|
|
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JPanel;
|
|
@@ -54,6 +60,7 @@ import java.awt.event.ComponentEvent;
|
|
import java.awt.event.ComponentListener;
|
|
import java.awt.event.ComponentListener;
|
|
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.ActionEvent;
|
|
import java.awt.event.ActionEvent;
|
|
|
|
|
|
public class GUI implements CategoryListener {
|
|
public class GUI implements CategoryListener {
|
|
@@ -193,22 +200,6 @@ public class GUI implements CategoryListener {
|
|
tree.setRowHeight(icon.getIconHeight());
|
|
tree.setRowHeight(icon.getIconHeight());
|
|
tree.setCellRenderer(renderer);
|
|
tree.setCellRenderer(renderer);
|
|
|
|
|
|
- // Tree Drag and Drop
|
|
|
|
- TransferHandler transfer = new TransferHandler("text");
|
|
|
|
-
|
|
|
|
- // add a MouseListener to initiate the Drag on the appropriate
|
|
|
|
- // MouseEvent
|
|
|
|
- /*
|
|
|
|
- * tree.addMouseMotionListener(new MouseAdapter(){ public void
|
|
|
|
- * mouseDragged(MouseEvent e) { System.out.println("Drag"); Image img =
|
|
|
|
- * null; try { URL url = new URL(
|
|
|
|
- * "https://cdn4.iconfinder.com/data/icons/buildings-filled-1/60/house-home-building-construction-32.png"
|
|
|
|
- * ); img = ImageIO.read(url); } catch (IOException e1) {
|
|
|
|
- * System.out.println("Failed to load the Image!"); } JTree treep =
|
|
|
|
- * (JTree)e.getSource(); TransferHandler handle =
|
|
|
|
- * treep.getTransferHandler(); handle.setDragImage(img);
|
|
|
|
- * handle.exportAsDrag(treep, e, TransferHandler.MOVE); } });
|
|
|
|
- */
|
|
|
|
tree.addMouseListener(new MouseAdapter() {
|
|
tree.addMouseListener(new MouseAdapter() {
|
|
public void mouseReleased(MouseEvent e) {
|
|
public void mouseReleased(MouseEvent e) {
|
|
try {
|
|
try {
|
|
@@ -224,14 +215,29 @@ public class GUI implements CategoryListener {
|
|
frmCyberPhysical.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
|
frmCyberPhysical.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+ tree.addMouseListener(new MouseAdapter() {
|
|
|
|
+ public void mousePressed(MouseEvent e) {
|
|
|
|
+ try {
|
|
|
|
+ String name = tree.getPathForLocation(e.getX(), e.getY()).getLastPathComponent().toString();
|
|
|
|
+ //System.out.println(name);
|
|
|
|
+ if (name.compareTo("Power Plant") == 0 || name.compareTo("House") == 0
|
|
|
|
+ || name.compareTo("Switch") == 0 || name.compareTo("Transformer") == 0) {
|
|
|
|
+ dragging = true;
|
|
|
|
+ Cursor cursor = Toolkit.getDefaultToolkit().createCustomCursor(img, new Point(0, 0),"Image");
|
|
|
|
+ frmCyberPhysical.setCursor(cursor);
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e2) {}
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
|
|
|
|
+ /*
|
|
tree.addTreeSelectionListener(new TreeSelectionListener() {
|
|
tree.addTreeSelectionListener(new TreeSelectionListener() {
|
|
@Override
|
|
@Override
|
|
public void valueChanged(TreeSelectionEvent e) {
|
|
public void valueChanged(TreeSelectionEvent e) {
|
|
try {
|
|
try {
|
|
String name = tree.getLastSelectedPathComponent().toString();
|
|
String name = tree.getLastSelectedPathComponent().toString();
|
|
System.out.println(name);
|
|
System.out.println(name);
|
|
- tree.clearSelection();
|
|
|
|
if (name.compareTo("Power Plant") == 0 || name.compareTo("House") == 0
|
|
if (name.compareTo("Power Plant") == 0 || name.compareTo("House") == 0
|
|
|| name.compareTo("Switch") == 0 || name.compareTo("Transformer") == 0) {
|
|
|| name.compareTo("Switch") == 0 || name.compareTo("Transformer") == 0) {
|
|
dragging = true;
|
|
dragging = true;
|
|
@@ -239,12 +245,10 @@ public class GUI implements CategoryListener {
|
|
"red Cursor");
|
|
"red Cursor");
|
|
frmCyberPhysical.setCursor(cursor);
|
|
frmCyberPhysical.setCursor(cursor);
|
|
}
|
|
}
|
|
- } catch (Exception e2) {
|
|
|
|
- // TODO: handle exception
|
|
|
|
- }
|
|
|
|
|
|
+ } catch (Exception e2) {}
|
|
}
|
|
}
|
|
- });
|
|
|
|
-
|
|
|
|
|
|
+ });*/
|
|
|
|
+
|
|
scrollPane_1.setViewportView(tree);
|
|
scrollPane_1.setViewportView(tree);
|
|
|
|
|
|
scrollPane_1.setColumnHeaderView(panel);
|
|
scrollPane_1.setColumnHeaderView(panel);
|
|
@@ -287,18 +291,33 @@ public class GUI implements CategoryListener {
|
|
public void actionPerformed(ActionEvent arg0) {
|
|
public void actionPerformed(ActionEvent arg0) {
|
|
|
|
|
|
Object nodeInfo = tree.getLastSelectedPathComponent();
|
|
Object nodeInfo = tree.getLastSelectedPathComponent();
|
|
- DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) nodeInfo;
|
|
|
|
- String nodeName = selectedNode.getUserObject().toString();
|
|
|
|
- int depthOfNode = selectedNode.getLevel();
|
|
|
|
-
|
|
|
|
- switch (depthOfNode) {
|
|
|
|
- case 1:
|
|
|
|
- controller.deleteCategory(nodeName);
|
|
|
|
- break;
|
|
|
|
- case 2:
|
|
|
|
- DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode.getParent();
|
|
|
|
- controller.deleteObjectInCat(nodeName, parent.getUserObject().toString());
|
|
|
|
- break;
|
|
|
|
|
|
+ if(nodeInfo != null){
|
|
|
|
+ DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) nodeInfo;
|
|
|
|
+ String nodeName = selectedNode.getUserObject().toString();
|
|
|
|
+ int depthOfNode = selectedNode.getLevel();
|
|
|
|
+
|
|
|
|
+ switch (depthOfNode) {
|
|
|
|
+ case 1:
|
|
|
|
+ int dialogResult = JOptionPane.showConfirmDialog (null, "Do you realy want to delete the Category " + nodeName + "?","Warning", JOptionPane.YES_NO_OPTION);
|
|
|
|
+ if(dialogResult == JOptionPane.YES_OPTION){
|
|
|
|
+ controller.deleteCategory(nodeName);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case 2:
|
|
|
|
+ DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode.getParent();
|
|
|
|
+ controller.deleteObjectInCat(nodeName, parent.getUserObject().toString());
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ default :
|
|
|
|
+ JOptionPane.showMessageDialog(new JFrame(),
|
|
|
|
+ "Please select a Category or an Object in order to delete something.");
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ JOptionPane.showMessageDialog(new JFrame(),
|
|
|
|
+ "Please select a Category or an Object in order to delete something.");
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|