AddObjectPopUp.java 6.8 KB

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