123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- 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;
- /**
- * Template HolonObject
- */
- private HolonObject template;
- /**
- * HolonElementList
- */
- DefaultListModel<String> listModel;
- /**
- * HolonElement List
- */
- JList<String> list;
- /**
- * Category the Template should be inserted into
- */
- private String category;
- // Template Attributes
- // PopUp Parts
- private Control controller;
- /**
- * Category Selection
- */
- Choice choice;
- /**
- * name textfield
- */
- private JTextField textField_name;
- /**
- * textField for path
- */
- private JTextField textField_imagePath;
- /**
- * Image Preview
- */
- JLabel lblImagePreview;
- /**
- * parent Frame
- */
-
- private Model model;
-
- JFrame parent;
- /**
- * Create the dialog.
- *
- * @param edit
- * true if edit
- * @param obj
- * the object
- * @param model
- * @param cat
- * the categorie
- */
- public CreateTemplatePopUp(HolonObject obj, Model model,
- JFrame parentFrame, Control controller) {
- setResizable(false);
- /*
- * use Category Controller an stuff lul
- */
- /*
- * initialize Data
- */
- template = new HolonObject(obj);
- this.parent = parentFrame;
- this.controller = controller;
- this.model=model;//Thankfully that was in the ctor already.
- /*
- * 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());
- /**
- * Content Panel
- */
- JPanel contentPanel = new JPanel();
- contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
- getContentPane().add(contentPanel, BorderLayout.CENTER);
- contentPanel.setLayout(null);
- /**
- * Category Label
- */
- JLabel lblCategory = new JLabel("Category:");
- lblCategory.setBounds(12, 13, 68, 22);
- contentPanel.add(lblCategory);
- /**
- * Category Choice
- */
- choice = new Choice();
- choice.setBounds(86, 13, 172, 22);
- contentPanel.add(choice);
- // add categories
- if (model.getCategories().size() == 0)// if no categorie exist: create
- // new Template Category
- try {
- this.controller.addCategory("Template");
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- // add Categories to the choice
- for (Category c : model.getCategories())
- choice.add(c.getName());
- /**
- * Name Label
- */
- JLabel lblName = new JLabel("Name:");
- lblName.setBounds(12, 48, 56, 16);
- contentPanel.add(lblName);
- /**
- * Name Textfield
- */
- textField_name = new JTextField();
- textField_name.setBounds(86, 48, 172, 22);
- contentPanel.add(textField_name);
- textField_name.setColumns(10);
- textField_name.setText(template.getName());
- /**
- * Image Path Lable
- */
- JLabel lblImage = new JLabel("Image:");
- lblImage.setBounds(12, 89, 56, 16);
- contentPanel.add(lblImage);
- /**
- * Image Path Text Field
- */
- textField_imagePath = new JTextField();
- textField_imagePath.setBounds(86, 86, 172, 22);
- contentPanel.add(textField_imagePath);
- textField_imagePath.setColumns(10);
- textField_imagePath.setText(template.getImage());
- /**
- * Browse Image Button
- */
- JButton btnBrowseImage = new JButton("BrowseImage");
- btnBrowseImage.setBounds(268, 85, 117, 25);
- contentPanel.add(btnBrowseImage);
- btnBrowseImage.addActionListener(actionevent -> {
- fileChooser();
- });
- /**
- * Image Preview
- */
- lblImagePreview = new JLabel("Image Preview");
- lblImagePreview.setIcon(new ImageIcon(Util.loadImage(this,
- template.getImage(), 62, 62)));
- lblImagePreview.setBounds(298, 13, 62, 62);
- contentPanel.add(lblImagePreview);
- /**
- * Holon Element List
- */
- listModel = new DefaultListModel<String>();
- /**
- * Add Elements to List
- */
- for (HolonElement he : template.getElements())
- listModel.addElement(he.getAmount() + " * " + he.getEleName()
- + ": " + he.getOverallEnergy() + "U");
- /**
- * Add ScrollPane to List
- */
- JScrollPane scrollPane = new JScrollPane();
- scrollPane.setBounds(22, 118, 236, 150);
- contentPanel.add(scrollPane);
- list = new JList<String>(listModel);
- scrollPane.setViewportView(list);
- /**
- * Delete Element Button
- */
- JButton btnDeleteElement = new JButton("Delete Element");
- btnDeleteElement.setBounds(268, 228, 140, 25);
- contentPanel.add(btnDeleteElement);
- btnDeleteElement.addActionListener(e -> removeElement());
- /**
- * Edit Element Button
- */
- JButton btnEditElement = new JButton("Edit Element");
- btnEditElement.setBounds(268, 190, 140, 25);
- contentPanel.add(btnEditElement);
- btnEditElement.addActionListener(e -> editElement());
- /**
- * Add Element Button
- */
- JButton btnAddElement = new JButton("Add Element");
- btnAddElement.setBounds(268, 152, 140, 25);
- contentPanel.add(btnAddElement);
- btnAddElement.addActionListener(e -> addElement());
- /**
- * Cancel Button
- */
- JButton btnCancel = new JButton("Cancel");
- btnCancel.setBounds(384, 277, 74, 25);
- contentPanel.add(btnCancel);
- btnCancel.addActionListener(e -> dispose());
- /**
- * Add Template Button
- */
- JButton btnAddTemplate = new JButton("Add Template");
- btnAddTemplate.setBounds(75, 271, 113, 25);
- contentPanel.add(btnAddTemplate);
- btnAddTemplate.addActionListener(e -> createTemplate());
- /**
- * Title
- */
- setTitle("Create Template Menu");
- }
- /**
- * Choose the file.
- */
- private void fileChooser() {
- JFileChooser fileChooser = new JFileChooser();
- FileNameExtensionFilter filter = new FileNameExtensionFilter(
- "png, jpg or jpeg", "png", "jpg", "jpeg");
- fileChooser.setFileFilter(filter);
- int returnValue = fileChooser.showOpenDialog(null);
- if (returnValue == JFileChooser.APPROVE_OPTION) {
- File selectedFile = fileChooser.getSelectedFile();
- String filePath = selectedFile.getAbsolutePath();
- textField_imagePath.setText(filePath);
- ImageIcon icon = new ImageIcon(Util.loadImage(this, filePath, 62,
- 62, Image.SCALE_SMOOTH));
- lblImagePreview.setIcon(icon);
- } else {
- System.out.println("Failed to Load");
- }
- }
- /**
- * create the template and add it to the category
- */
- private void createTemplate() {
- try {
- template.setName(textField_name.getText());
- template.setImage(textField_imagePath.getText());
- template.getElements().forEach(
- ele -> ele.setSaving(new Pair<String, String>(choice
- .getSelectedItem(), template.getName())));
- controller.addObject(controller.searchCategory(choice
- .getItem(choice.getSelectedIndex())), template.getName(),
- template.getElements(), template.getImage());
- this.dispose();
- } catch (IOException e) {
- System.out
- .println("Could not create Template: Category not found!");
- e.printStackTrace();
- }
- }
- /**
- * Add an Holon Element to the template
- */
- private void addElement() {
- AddElementPopUp popUp = new AddElementPopUp(parent, model);
- popUp.setActualCps(template);
- popUp.setVisible(true);
- HolonElement he = popUp.getElement();
- if (he != null) {
- listModel.addElement(he.getAmount() + " * " + he.getEleName()
- + ": " + he.getOverallEnergy() + "U");
- template.addElement(he);
- he.setSaving(new Pair<>(category, textField_name.getText()));
- }
- }
- /**
- * Removes the Selected Element from the template
- */
- private void removeElement() {
- int index = list.getSelectedIndex();
- if (index == -1)
- return;
- template.deleteElement(index);
- listModel.remove(index);
- }
- /**
- * Edits the selected HolonElement
- */
- private void editElement() {
- int index = list.getSelectedIndex();
- if (index == -1)
- return;
-
- AddElementPopUp popUp = new AddElementPopUp(parent, model);
- popUp.setActualCps(template);
- popUp.setElement(template.getElements().get(index));
- popUp.setVisible(true);
- HolonElement he = popUp.getElement();
- if (he != null) {
- listModel.remove(index);
- listModel.addElement(he.getAmount() + " * " + he.getEleName()
- + ": " + he.getOverallEnergy() + "U");
- template.deleteElement(index);
- template.addElement(he);
- he.setSaving(new Pair<>(category, textField_name.getText()));
- }
- }
- }
|