Browse Source

Adds a create Template PopUp

Andreas T. Meyer-Berg 6 years ago
parent
commit
7bcf99c9f6

+ 16 - 2
src/ui/controller/Control.java

@@ -2,10 +2,15 @@ package ui.controller;
 
 import api.CpsAlgorithm;
 import classes.*;
+
 import com.google.gson.JsonParseException;
+
 import interfaces.CategoryListener;
+
 import org.apache.commons.compress.archivers.ArchiveException;
+
 import ui.model.Model;
+import ui.view.CreateTemplatePopUp;
 import ui.view.FlexiblePane;
 import ui.view.MyCanvas;
 import ui.view.StatisticGraphPanel;
@@ -17,6 +22,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Hashtable;
 
+import javax.swing.JFrame;
+
 /**
  * The Class represents the controller in the model, controller view Pattern.
  *
@@ -906,8 +913,15 @@ public class Control {
         }
     }
     
-    public void createTemplate(AbstractCpsObject cps) {
-        System.out.println("Hello "+cps.getName());
+    /**
+     * creates a new Template for the given cps Object
+     * @param cps Object, which should become a template
+     * @param parentFrame 
+     */
+    public void createTemplate(AbstractCpsObject cps, JFrame parentFrame) {
+        CreateTemplatePopUp t =new CreateTemplatePopUp(cps,model,parentFrame);
+        t.setController(this);
+        t.setVisible(true);
     }
 
     public void getObjectsInDepth() {

+ 163 - 0
src/ui/view/CreateTemplatePopUp.java

@@ -0,0 +1,163 @@
+package ui.view;
+
+import classes.AbstractCpsObject;
+import classes.Category;
+import classes.HolonElement;
+import classes.HolonObject;
+import classes.Pair;
+import ui.controller.Control;
+import ui.model.Model;
+
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import javax.swing.filechooser.FileNameExtensionFilter;
+
+import java.awt.*;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.io.*;
+import java.util.ArrayList;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+/**
+ * PopUp for creating Holon Object Template.
+ * 
+ * @author Gruppe 07 (A.T.M-B)
+ */
+public class CreateTemplatePopUp extends JDialog {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Original Object to be templated
+	 */
+	private AbstractCpsObject originalObject;
+
+	/**
+	 * Category the Template should be inserted into
+	 */
+	private String givenCategory;
+	
+	private Control controller;
+	private JTextField textField_name;
+	private JTextField textField_imagePath;
+
+	
+	/**
+	 * Create the dialog.
+	 * 
+	 * @param edit
+	 *            true if edit
+	 * @param obj
+	 *            the object
+	 * @param model
+	 * @param cat
+	 *            the categorie
+	 */
+	public CreateTemplatePopUp(AbstractCpsObject obj, Model model,
+			JFrame parentFrame) {
+		/*
+		 * use Category Controller an stuff lul
+		 */
+
+		/*
+		 * initialize Data
+		 */
+		originalObject = obj;
+		
+		/*
+		 * create Frame and GUI
+		 */
+		setIconImage(Util.loadImage(this, "/Images/Dummy_House.png", 30, 30));
+		setBounds(100, 100, 476, 344);
+		setLocationRelativeTo(parentFrame);
+		getContentPane().setLayout(new BorderLayout());
+		
+		JPanel contentPanel = new JPanel();
+		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+		getContentPane().add(contentPanel, BorderLayout.CENTER);
+
+		contentPanel.setLayout(null);
+		
+		Choice choice = new Choice();
+		choice.setBounds(86, 13, 172, 36);
+		contentPanel.add(choice);
+		//add categories
+		for(Category c: model.getCategories())
+			choice.add(c.getName());
+		
+		JLabel lblCategory = new JLabel("Category:");
+		lblCategory.setBounds(12, 13, 68, 22);
+		contentPanel.add(lblCategory);
+		
+		JButton btnCancel = new JButton("Cancel");
+		btnCancel.setBounds(349, 257, 97, 25);
+		contentPanel.add(btnCancel);
+		btnCancel.addActionListener(e -> dispose());
+		
+		JButton btnAddTemplate = new JButton("Add Template");
+		btnAddTemplate.setBounds(235, 257, 113, 25);
+		contentPanel.add(btnAddTemplate);
+		
+		JLabel lblName = new JLabel("Name:");
+		lblName.setBounds(12, 48, 56, 16);
+		contentPanel.add(lblName);
+		
+		textField_name = new JTextField();
+		textField_name.setBounds(86, 48, 172, 22);
+		contentPanel.add(textField_name);
+		textField_name.setColumns(10);
+		textField_name.setText(obj.getName());
+		
+		JLabel lblImage = new JLabel("Image:");
+		lblImage.setBounds(12, 89, 56, 16);
+		contentPanel.add(lblImage);
+		
+		textField_imagePath = new JTextField();
+		textField_imagePath.setBounds(86, 86, 172, 22);
+		contentPanel.add(textField_imagePath);
+		textField_imagePath.setColumns(10);
+		textField_imagePath.setText(obj.getImage());
+		
+		JButton btnBrowseImage = new JButton("BrowseImage");
+		btnBrowseImage.setBounds(268, 85, 117, 25);
+		contentPanel.add(btnBrowseImage);
+		
+		JList list = new JList(((HolonObject)obj).getElements().toArray());
+		list.setBounds(12, 118, 221, 166);
+		contentPanel.add(list);
+		
+		JLabel lblNewLabel = new JLabel("New label");
+		lblNewLabel.setIcon(new ImageIcon(Util.loadImage(this, obj.getImage(),62,62)));
+		lblNewLabel.setBounds(298, 13, 62, 62);
+		contentPanel.add(lblNewLabel);
+		
+		JButton btnDeleteElement = new JButton("Delete Element");
+		btnDeleteElement.setBounds(245, 199, 140, 25);
+		contentPanel.add(btnDeleteElement);
+		
+		JButton btnEditElement = new JButton("Edit Element");
+		btnEditElement.setBounds(245, 161, 140, 25);
+		contentPanel.add(btnEditElement);
+		
+		JButton btnAddElement = new JButton("Add Element");
+		btnAddElement.setBounds(245, 123, 140, 25);
+		contentPanel.add(btnAddElement);
+	
+		setTitle("Create Template Menu");
+
+	}
+
+	/**
+	 * Sets the Controller.
+	 * 
+	 * @param controller
+	 *            the controller
+	 */
+	public void setController(Control controller) {
+		this.controller = controller;
+	}
+}

+ 1 - 1
src/ui/view/MyCanvas.java

@@ -359,7 +359,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		 * create Template
 		 */
 		itemCreateTemplate.addActionListener(actionEvent -> {
-			controller.createTemplate(tempCps);
+			controller.createTemplate(tempCps,(JFrame)SwingUtilities.getRoot(this));
 		});
 
 		this.addMouseListener(this);

+ 4 - 1
src/ui/view/UpperNodeCanvas.java

@@ -1,12 +1,15 @@
 package ui.view;
 
 import classes.*;
+
 import com.google.gson.JsonParseException;
+
 import ui.controller.Control;
 import ui.controller.UpdateController;
 import ui.model.Model;
 
 import javax.swing.*;
+
 import java.awt.*;
 import java.awt.datatransfer.UnsupportedFlavorException;
 import java.awt.event.MouseEvent;
@@ -319,7 +322,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 		 * create Template
 		 */
 		itemCreateTemplate.addActionListener(actionEvent -> {
-			controller.createTemplate(tempCps);
+			controller.createTemplate(tempCps, (JFrame)SwingUtilities.getRoot(this));
 		});
 
         this.addMouseListener(this);