AddObjectPopUp.java 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. package ui.view;
  2. import java.awt.BorderLayout;
  3. import java.awt.Component;
  4. import java.awt.FlowLayout;
  5. import java.awt.Image;
  6. import java.awt.event.*;
  7. import java.awt.image.ImageProducer;
  8. import java.io.*;
  9. import java.util.ArrayList;
  10. import javax.swing.DefaultListModel;
  11. import javax.swing.ImageIcon;
  12. import javax.swing.JButton;
  13. import javax.swing.JDialog;
  14. import javax.swing.JFileChooser;
  15. import javax.swing.JPanel;
  16. import javax.swing.JScrollPane;
  17. import javax.swing.ListModel;
  18. import javax.swing.ListSelectionModel;
  19. import javax.swing.border.EmptyBorder;
  20. import javax.swing.filechooser.FileNameExtensionFilter;
  21. import javax.swing.JLabel;
  22. import javax.swing.JTextField;
  23. import javax.swing.JList;
  24. import javax.swing.JOptionPane;
  25. import javax.swing.SwingConstants;
  26. import classes.Category;
  27. import classes.HolonElement;
  28. import classes.HolonObject;
  29. import javax.swing.JScrollBar;
  30. import javax.swing.ScrollPaneConstants;
  31. import ui.controller.Control;
  32. public class AddObjectPopUp extends JDialog {
  33. private final JPanel contentPanel = new JPanel();
  34. private AddElementPopUp addElement;
  35. private JTextField objectName;
  36. private JTextField sourcePath;
  37. private ArrayList<HolonElement> hElements;
  38. private DefaultListModel listModel;
  39. private JList list;
  40. private String imagePath;
  41. private HolonObject theObject;
  42. private Control controller;
  43. private File selectedFile = null;
  44. private String filePath = " ";
  45. private String givenCategory;
  46. private JLabel lblImagePreview;
  47. /**
  48. * Launch the application.
  49. */
  50. public static void main(String[] args) {
  51. try {
  52. AddObjectPopUp dialog = new AddObjectPopUp();
  53. dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
  54. dialog.setVisible(true);
  55. } catch (Exception e) {
  56. e.printStackTrace();
  57. }
  58. }
  59. /**
  60. * Create the dialog.
  61. */
  62. public AddObjectPopUp() {
  63. setBounds(100, 100, 450, 342);
  64. getContentPane().setLayout(new BorderLayout());
  65. contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
  66. getContentPane().add(contentPanel, BorderLayout.CENTER);
  67. contentPanel.setLayout(null);
  68. hElements = new ArrayList<HolonElement>();
  69. this.setTitle("Add Object Menu");
  70. {
  71. JLabel lblName = new JLabel("Name:");
  72. lblName.setHorizontalAlignment(SwingConstants.CENTER);
  73. lblName.setBounds(28, 21, 76, 14);
  74. contentPanel.add(lblName);
  75. }
  76. {
  77. objectName = new JTextField();
  78. objectName.setBounds(98, 18, 172, 20);
  79. contentPanel.add(objectName);
  80. objectName.setColumns(10);
  81. }
  82. {
  83. JButton btnBrowseImage = new JButton("Browse Image");
  84. btnBrowseImage.setBounds(10, 75, 134, 23);
  85. contentPanel.add(btnBrowseImage);
  86. btnBrowseImage.addMouseListener(new MouseAdapter() {
  87. public void mouseClicked(MouseEvent e) {
  88. fileChooser();
  89. }
  90. });
  91. }
  92. {
  93. sourcePath = new JTextField();
  94. sourcePath.setBounds(148, 77, 271, 20);
  95. contentPanel.add(sourcePath);
  96. sourcePath.setColumns(10);
  97. }
  98. {
  99. JButton btnAddDefaultElement = new JButton("Add Element");
  100. btnAddDefaultElement.addActionListener(new ActionListener() {
  101. public void actionPerformed(ActionEvent arg0) {
  102. addElement = new AddElementPopUp();
  103. addElement.setVisible(true);
  104. HolonElement hl = addElement.getElement();
  105. addElement(hl);
  106. }
  107. });
  108. btnAddDefaultElement.setBounds(270, 144, 142, 23);
  109. contentPanel.add(btnAddDefaultElement);
  110. }
  111. {
  112. JScrollPane scrollPane = new JScrollPane();
  113. scrollPane.setBounds(10, 114, 236, 150);
  114. contentPanel.add(scrollPane);
  115. {
  116. listModel = new DefaultListModel();
  117. HolonElement hel = new HolonElement("Test", 100, 5);
  118. String name = hel.getEleName();
  119. /*
  120. * for (int i = 0; i < 11; i++) { hel.setEleName(name + i);
  121. * addElement(hel); }
  122. */
  123. list = new JList(listModel);
  124. scrollPane.setViewportView(list);
  125. }
  126. }
  127. {
  128. JButton btnNewButton = new JButton("Delete Element");
  129. btnNewButton.addActionListener(new ActionListener() {
  130. public void actionPerformed(ActionEvent e) {
  131. int selectedIndex = list.getSelectedIndex();
  132. if (selectedIndex != -1) {
  133. listModel.remove(selectedIndex);
  134. hElements.remove(selectedIndex);
  135. }
  136. }
  137. });
  138. btnNewButton.setBounds(270, 182, 142, 27);
  139. contentPanel.add(btnNewButton);
  140. }
  141. {
  142. lblImagePreview = new JLabel("");
  143. lblImagePreview.setBounds(295, 3, 50, 50);
  144. contentPanel.add(lblImagePreview);
  145. }
  146. {
  147. JPanel buttonPane = new JPanel();
  148. buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
  149. getContentPane().add(buttonPane, BorderLayout.SOUTH);
  150. {
  151. JButton okButton = new JButton("OK");
  152. okButton.addMouseListener(new MouseAdapter() {
  153. public void mouseClicked(MouseEvent e) {
  154. Component frame = null;
  155. if (objectName.getText().length() == 0) {
  156. JOptionPane.showMessageDialog(frame, "please enter a name");
  157. } else if (!sourcePath.getText().equals(filePath)) {
  158. JOptionPane.showMessageDialog(frame, "No image selected!");
  159. } else {
  160. copieFile();
  161. theObject = new HolonObject(objectName.getText());
  162. theObject.setElements(hElements);
  163. theObject.setImage(imagePath);
  164. controller.addObjectCategory(controller.searchCategory(givenCategory), theObject);
  165. System.out.println(theObject.getImage());
  166. System.out.println(givenCategory);
  167. dispose();
  168. }
  169. }
  170. });
  171. okButton.setActionCommand("OK");
  172. buttonPane.add(okButton);
  173. getRootPane().setDefaultButton(okButton);
  174. }
  175. {
  176. JButton cancelButton = new JButton("Cancel");
  177. cancelButton.setActionCommand("Cancel");
  178. buttonPane.add(cancelButton);
  179. cancelButton.addActionListener(new ActionListener() {
  180. public void actionPerformed(ActionEvent e) {
  181. dispose();
  182. }
  183. });
  184. }
  185. }
  186. }
  187. public void addElement(HolonElement hl) {
  188. hElements.add(hl);
  189. listModel.addElement(hl.getAmount() + "x: " + hl.getEleName() + " " + hl.getEnergy() + "U");
  190. }
  191. protected void fileChooser() {
  192. // TODO Auto-generated method stub
  193. JFileChooser FileChooser = new JFileChooser();
  194. FileNameExtensionFilter filter = new FileNameExtensionFilter("png, jpg or jpeg", "png", "jpg", "jpeg");
  195. FileChooser.setFileFilter(filter);
  196. int returnValue = FileChooser.showOpenDialog(null);
  197. if (returnValue == JFileChooser.APPROVE_OPTION) {
  198. selectedFile = FileChooser.getSelectedFile();
  199. filePath = selectedFile.getAbsolutePath();
  200. sourcePath.setText(filePath);
  201. // Image image = createImage((ImageProducer) selectedFile);
  202. ImageIcon icon = new ImageIcon(
  203. new ImageIcon(filePath).getImage().getScaledInstance(50, 50, Image.SCALE_SMOOTH));
  204. lblImagePreview.setIcon(icon);
  205. } else {
  206. System.out.println("Failed to Load");
  207. }
  208. }
  209. protected void copieFile() {
  210. InputStream inStream = null;
  211. OutputStream outStream = null;
  212. try {
  213. File source = new File(filePath);
  214. File dest = new File(System.getProperty("user.dir") + "/bin/Images/", selectedFile.getName());
  215. imagePath = "/Images/" + selectedFile.getName();
  216. inStream = new FileInputStream(source);
  217. outStream = new FileOutputStream(dest);
  218. byte[] buffer = new byte[1024];
  219. int length;
  220. while ((length = inStream.read(buffer)) > 0) {
  221. outStream.write(buffer, 0, length);
  222. }
  223. if (inStream != null)
  224. inStream.close();
  225. if (outStream != null)
  226. outStream.close();
  227. System.out.println("File Copied..");
  228. } catch (IOException e1) {
  229. e1.printStackTrace();
  230. }
  231. }
  232. public HolonObject getObject() {
  233. return theObject;
  234. }
  235. public void setController(Control controller) {
  236. this.controller = controller;
  237. }
  238. public void setCategory(String cat) {
  239. givenCategory = cat;
  240. }
  241. }