Jelajahi Sumber

Merge branch 'Ohne_Drag_and_Drop' of https://git.tk.informatik.tu-darmstadt.de/carlos.garcia/praktikum-holons into Ohne_Drag_and_Drop

# By Kevin Trometer (6) and dominik.rieder (2)
# Via Kevin Trometer
* 'Ohne_Drag_and_Drop' of https://git.tk.informatik.tu-darmstadt.de/carlos.garcia/praktikum-holons:
  canvas
  Rightcklick Delete
  kleiner nachtrag
  Better dnd
  AddElementPopUp bearbeitet
  delete exeptions behoben
  ich weiß wie ich dragging mache denke ich :)
  delete geht wieder

Conflicts:
	bin/ui/controller/ObjectControl.class
	bin/ui/model/Model.class
	bin/ui/view/GUI$3.class
	bin/ui/view/GUI$4.class
	bin/ui/view/GUI$5.class
	bin/ui/view/GUI$6.class
	bin/ui/view/GUI.class
Edgardo Palza 8 tahun lalu
induk
melakukan
f4de48ef8a
31 mengubah file dengan 125 tambahan dan 44 penghapusan
  1. 6 0
      bin/.gitignore
  2. TEMPAT SAMPAH
      bin/Interfaces/CategoryListener.class
  3. TEMPAT SAMPAH
      bin/Interfaces/ComparableObject.class
  4. TEMPAT SAMPAH
      bin/Interfaces/ObjectListener.class
  5. TEMPAT SAMPAH
      bin/classes/Category.class
  6. TEMPAT SAMPAH
      bin/classes/CpsObject.class
  7. TEMPAT SAMPAH
      bin/classes/HolonElement.class
  8. TEMPAT SAMPAH
      bin/classes/HolonObject.class
  9. TEMPAT SAMPAH
      bin/classes/HolonSwitch.class
  10. TEMPAT SAMPAH
      bin/classes/HolonTransformer.class
  11. TEMPAT SAMPAH
      bin/classes/Position.class
  12. TEMPAT SAMPAH
      bin/exceptions/newException1.class
  13. TEMPAT SAMPAH
      bin/tests/Tests1.class
  14. TEMPAT SAMPAH
      bin/tests/praktikumHolonsTestMinimal.class
  15. TEMPAT SAMPAH
      bin/ui/controller/CategoryController.class
  16. TEMPAT SAMPAH
      bin/ui/controller/Control$command.class
  17. TEMPAT SAMPAH
      bin/ui/controller/Control.class
  18. TEMPAT SAMPAH
      bin/ui/model/IdCounter.class
  19. TEMPAT SAMPAH
      bin/ui/model/tests.class
  20. TEMPAT SAMPAH
      bin/ui/view/AddElementPopUp.class
  21. TEMPAT SAMPAH
      bin/ui/view/AddObjectPopUp.class
  22. TEMPAT SAMPAH
      bin/ui/view/GUI$1.class
  23. TEMPAT SAMPAH
      bin/ui/view/GUI$2.class
  24. TEMPAT SAMPAH
      bin/ui/view/Main$1.class
  25. TEMPAT SAMPAH
      bin/ui/view/Main.class
  26. TEMPAT SAMPAH
      bin/ui/view/MyCanvas.class
  27. TEMPAT SAMPAH
      res/Images/house.png
  28. 42 3
      src/ui/view/AddElementPopUp.java
  29. 8 0
      src/ui/view/AddObjectPopUp.java
  30. 53 34
      src/ui/view/GUI.java
  31. 16 7
      src/ui/view/MyCanvas.java

+ 6 - 0
bin/.gitignore

@@ -0,0 +1,6 @@
+/Images/
+/Interfaces/
+/classes/
+/exceptions/
+/tests/
+/ui/

TEMPAT SAMPAH
bin/Interfaces/CategoryListener.class


TEMPAT SAMPAH
bin/Interfaces/ComparableObject.class


TEMPAT SAMPAH
bin/Interfaces/ObjectListener.class


TEMPAT SAMPAH
bin/classes/Category.class


TEMPAT SAMPAH
bin/classes/CpsObject.class


TEMPAT SAMPAH
bin/classes/HolonElement.class


TEMPAT SAMPAH
bin/classes/HolonObject.class


TEMPAT SAMPAH
bin/classes/HolonSwitch.class


TEMPAT SAMPAH
bin/classes/HolonTransformer.class


TEMPAT SAMPAH
bin/classes/Position.class


TEMPAT SAMPAH
bin/exceptions/newException1.class


TEMPAT SAMPAH
bin/tests/Tests1.class


TEMPAT SAMPAH
bin/tests/praktikumHolonsTestMinimal.class


TEMPAT SAMPAH
bin/ui/controller/CategoryController.class


TEMPAT SAMPAH
bin/ui/controller/Control$command.class


TEMPAT SAMPAH
bin/ui/controller/Control.class


TEMPAT SAMPAH
bin/ui/model/IdCounter.class


TEMPAT SAMPAH
bin/ui/model/tests.class


TEMPAT SAMPAH
bin/ui/view/AddElementPopUp.class


TEMPAT SAMPAH
bin/ui/view/AddObjectPopUp.class


TEMPAT SAMPAH
bin/ui/view/GUI$1.class


TEMPAT SAMPAH
bin/ui/view/GUI$2.class


TEMPAT SAMPAH
bin/ui/view/Main$1.class


TEMPAT SAMPAH
bin/ui/view/Main.class


TEMPAT SAMPAH
bin/ui/view/MyCanvas.class


TEMPAT SAMPAH
res/Images/house.png


+ 42 - 3
src/ui/view/AddElementPopUp.java

@@ -7,10 +7,17 @@ import javax.swing.JButton;
 import javax.swing.JDialog;
 import javax.swing.JPanel;
 import javax.swing.border.EmptyBorder;
+import javax.swing.JLabel;
+import javax.swing.JTextField;
+import javax.swing.JComboBox;
+import javax.swing.DefaultComboBoxModel;
 
 public class AddElementPopUp extends JDialog {
 
 	private final JPanel contentPanel = new JPanel();
+	private JTextField textField;
+	private JTextField textField_1;
+	private JTextField textField_2;
 
 	/**
 	 * Launch the application.
@@ -29,11 +36,44 @@ public class AddElementPopUp extends JDialog {
 	 * Create the dialog.
 	 */
 	public AddElementPopUp() {
-		setBounds(100, 100, 450, 300);
+		setBounds(100, 100, 300, 190);
 		getContentPane().setLayout(new BorderLayout());
-		contentPanel.setLayout(new FlowLayout());
 		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
 		getContentPane().add(contentPanel, BorderLayout.CENTER);
+		contentPanel.setLayout(null);
+		this.setTitle("Add default Element to Object");
+		
+		JLabel lblElementName = new JLabel("Element Name:");
+		lblElementName.setBounds(10, 11, 79, 14);
+		contentPanel.add(lblElementName);
+		
+		JLabel lblProvidedEnergy = new JLabel("Provided Energy:");
+		lblProvidedEnergy.setBounds(10, 49, 90, 14);
+		contentPanel.add(lblProvidedEnergy);
+		
+		JLabel lblAmount = new JLabel("Amount:");
+		lblAmount.setBounds(10, 84, 46, 14);
+		contentPanel.add(lblAmount);
+		
+		textField = new JTextField();
+		textField.setBounds(140, 8, 110, 20);
+		contentPanel.add(textField);
+		textField.setColumns(10);
+		
+		JComboBox comboBox = new JComboBox();
+		comboBox.setModel(new DefaultComboBoxModel(new String[] {"+", "-"}));
+		comboBox.setBounds(100, 46, 33, 20);
+		contentPanel.add(comboBox);
+		
+		textField_1 = new JTextField();
+		textField_1.setBounds(140, 46, 110, 20);
+		contentPanel.add(textField_1);
+		textField_1.setColumns(10);
+		
+		textField_2 = new JTextField();
+		textField_2.setBounds(140, 81, 110, 20);
+		contentPanel.add(textField_2);
+		textField_2.setColumns(10);
 		{
 			JPanel buttonPane = new JPanel();
 			buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
@@ -51,5 +91,4 @@ public class AddElementPopUp extends JDialog {
 			}
 		}
 	}
-
 }

+ 8 - 0
src/ui/view/AddObjectPopUp.java

@@ -19,6 +19,7 @@ import javax.swing.SwingConstants;
 public class AddObjectPopUp extends JDialog {
 
 	private final JPanel contentPanel = new JPanel();
+	private AddElementPopUp addElement;
 	private JTextField textField;
 	private JTextField textField_1;
 
@@ -44,6 +45,7 @@ public class AddObjectPopUp extends JDialog {
 		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
 		getContentPane().add(contentPanel, BorderLayout.CENTER);
 		contentPanel.setLayout(null);
+		this.setTitle("Add Object Menu");
 		{
 			JLabel lblName = new JLabel("Name:");
 			lblName.setHorizontalAlignment(SwingConstants.CENTER);
@@ -112,6 +114,12 @@ public class AddObjectPopUp extends JDialog {
 		}
 		{
 			JButton btnAddDefaultElement = new JButton("Add Default Element");
+			btnAddDefaultElement.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent arg0) {
+					addElement = new AddElementPopUp();
+					addElement.setVisible(true);
+				}
+			});
 			btnAddDefaultElement.setBounds(262, 95, 144, 23);
 			contentPanel.add(btnAddDefaultElement);
 		}

+ 53 - 34
src/ui/view/GUI.java

@@ -2,6 +2,7 @@ package ui.view;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Enumeration;
 
 import javax.swing.JFrame;
 import javax.swing.JList;
@@ -16,6 +17,8 @@ import javax.swing.JScrollPane;
 import javax.swing.JTabbedPane;
 import javax.swing.JTable;
 import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.MutableTreeNode;
+import javax.swing.tree.TreeNode;
 
 import ui.controller.Control;
 import ui.model.*;
@@ -31,6 +34,9 @@ import java.awt.Cursor;
 import java.awt.Image;
 import java.awt.Point;
 import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.dnd.DragSource;
 import java.awt.BorderLayout;
 
 import javax.swing.JPanel;
@@ -54,6 +60,7 @@ import java.awt.event.ComponentEvent;
 import java.awt.event.ComponentListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
 import java.awt.event.ActionEvent;
 
 public class GUI implements CategoryListener {
@@ -193,22 +200,6 @@ public class GUI implements CategoryListener {
 		tree.setRowHeight(icon.getIconHeight());
 		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() {
 			public void mouseReleased(MouseEvent e) {
 				try {
@@ -224,14 +215,29 @@ public class GUI implements CategoryListener {
 				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() {
 			@Override
 			public void valueChanged(TreeSelectionEvent e) {
 				try {
 					String name = tree.getLastSelectedPathComponent().toString();
 					System.out.println(name);
-					tree.clearSelection();
 					if (name.compareTo("Power Plant") == 0 || name.compareTo("House") == 0
 							|| name.compareTo("Switch") == 0 || name.compareTo("Transformer") == 0) {
 						dragging = true;
@@ -239,12 +245,10 @@ public class GUI implements CategoryListener {
 								"red Cursor");
 						frmCyberPhysical.setCursor(cursor);
 					}
-				} catch (Exception e2) {
-					// TODO: handle exception
-				}
+				} catch (Exception e2) {}
 			}
-		});
-
+		});*/
+	
 		scrollPane_1.setViewportView(tree);
 
 		scrollPane_1.setColumnHeaderView(panel);
@@ -287,18 +291,33 @@ public class GUI implements CategoryListener {
 			public void actionPerformed(ActionEvent arg0) {
 
 				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.");
 				}
 
 			}

+ 16 - 7
src/ui/view/MyCanvas.java

@@ -2,6 +2,8 @@ package ui.view;
 
 import java.awt.Graphics;
 import java.awt.Image;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionListener;
@@ -21,7 +23,8 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	private Image img = null; // Contains the image to draw on MyCanvas
 	private int x = 0;
 	private int y = 0;
-	ArrayList<CpsObject> choords;
+	Model model;
+	
 	boolean dragging = false;
 	boolean dropDelete = false;
 	CpsObject tempCPS = null;
@@ -31,11 +34,19 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	JMenuItem itemDelete = new JMenuItem("Delete Object");
 
 	public MyCanvas(Model model) {
+		this.model = model;
 		popmenu.add(itemDelete);
 		itemDelete.setEnabled(false);
+		itemDelete.addActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				model.getObjectsOnCanvas().remove(tempCPS);
+				repaint();
+			}
+		});
 		img = new ImageIcon(this.getClass().getResource("/Images/Dummy_House.png")).getImage().getScaledInstance(30, 30,
 				java.awt.Image.SCALE_SMOOTH);
-		choords = model.getObjectsOnCanvas();
+
 		this.addMouseListener(this);
 		this.addMouseMotionListener(this);
 	}
@@ -43,7 +54,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	public void paintComponent(Graphics g) {
 		// Draws the image to the canvas
 		super.paintComponent(g);
-		for (CpsObject cps : choords) {
+		for (CpsObject cps : model.getObjectsOnCanvas()) {
 			g.drawImage(img, cps.getPos().x, cps.getPos().y, null);
 		}
 	}
@@ -72,7 +83,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		x = e.getX();
 		y = e.getY();
 		dropDelete = false;
-		for (CpsObject cps : choords) {
+		for (CpsObject cps : model.getObjectsOnCanvas()) {
 			int cx = cps.getPos().x;
 			int cy = cps.getPos().y;
 			if (x - img.getWidth(null) <= cx && y - img.getHeight(null) <= cy && x + img.getWidth(null) >= cx
@@ -85,7 +96,6 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 				}
 			}
 		}
-
 	}
 
 	@Override
@@ -100,8 +110,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		}
 		// Rechtsklick Liste
 		if (e.getButton() == e.BUTTON3) {
-			if (dropDelete)
-				itemDelete.setEnabled(true);
+			if (dropDelete)itemDelete.setEnabled(true);
 			popmenu.show(e.getComponent(), e.getX(), e.getY());
 
 		}