package ui.view; import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.*; import java.io.*; import java.util.ArrayList; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListModel; import javax.swing.ListSelectionModel; import javax.swing.border.EmptyBorder; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.SwingConstants; import classes.Category; import classes.HolonElement; import classes.HolonObject; import javax.swing.JScrollBar; import javax.swing.ScrollPaneConstants; import ui.controller.Control; public class AddObjectPopUp extends JDialog { private final JPanel contentPanel = new JPanel(); private AddElementPopUp addElement; private JTextField objectName; private JTextField sourcePath; private ArrayList hElements; private DefaultListModel listModel; private JList list; private String imagePath; private HolonObject theObject; private Control controller; private File selectedFile = null; private String filePath = " "; private String givenCategory; /** * Launch the application. */ public static void main(String[] args) { try { AddObjectPopUp dialog = new AddObjectPopUp(); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } /** * Create the dialog. */ public AddObjectPopUp() { setBounds(100, 100, 450, 300); getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(null); hElements = new ArrayList(); this.setTitle("Add Object Menu"); { JLabel lblName = new JLabel("Name:"); lblName.setHorizontalAlignment(SwingConstants.CENTER); lblName.setBounds(28, 11, 76, 14); contentPanel.add(lblName); } { objectName = new JTextField(); objectName.setBounds(135, 8, 86, 20); contentPanel.add(objectName); objectName.setColumns(10); } { JButton btnBrowseImage = new JButton("Browse Image"); btnBrowseImage.setBounds(10, 50, 112, 23); contentPanel.add(btnBrowseImage); btnBrowseImage.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { fileChooser(); } }); } { sourcePath = new JTextField(); sourcePath.setBounds(135, 51, 271, 20); contentPanel.add(sourcePath); sourcePath.setColumns(10); } { JButton btnAddDefaultElement = new JButton("Add Default Element"); btnAddDefaultElement.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { addElement = new AddElementPopUp(); addElement.setVisible(true); HolonElement hl = addElement.getElement(); addElement(hl); } }); btnAddDefaultElement.setBounds(262, 95, 144, 23); contentPanel.add(btnAddDefaultElement); } { JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(10, 84, 236, 133); contentPanel.add(scrollPane); { listModel = new DefaultListModel(); HolonElement hel = new HolonElement("Test", 100, 5); String name = hel.getEleName(); for (int i = 0; i < 11; i++) { hel.setEleName(name + i); addElement(hel); } list = new JList(listModel); scrollPane.setViewportView(list); } } { JButton btnNewButton = new JButton("Delete Default Element"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int selectedIndex = list.getSelectedIndex(); if (selectedIndex != -1) { listModel.remove(selectedIndex); hElements.remove(selectedIndex); } } }); btnNewButton.setBounds(262, 129, 144, 23); contentPanel.add(btnNewButton); } { JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { JButton okButton = new JButton("OK"); okButton.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { Component frame = null; if (!sourcePath.getText().equals(filePath)) { //JOptionPane.showMessageDialog(frame, "No image selected!"); } if(objectName.getText().length() == 0){ JOptionPane.showMessageDialog(frame, "please enter a name"); } else { copieFile(); theObject = new HolonObject(objectName.getText()); theObject.setElements(hElements); theObject.setImage(imagePath); controller.addNewObject(controller.searchCategory(givenCategory), theObject); System.out.println(theObject.getImage()); System.out.println(givenCategory); dispose(); } } }); okButton.setActionCommand("OK"); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); } { JButton cancelButton = new JButton("Cancel"); cancelButton.setActionCommand("Cancel"); buttonPane.add(cancelButton); } } } public void addElement(HolonElement hl) { hElements.add(hl); listModel.addElement(hl.getAmount() + "x: " + hl.getEleName() + " " + hl.getEnergy() + "U"); } protected void fileChooser() { // TODO Auto-generated method stub 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) { selectedFile = FileChooser.getSelectedFile(); filePath = selectedFile.getAbsolutePath(); sourcePath.setText(filePath); } else { System.out.println("Failed to Load"); } } protected void copieFile() { InputStream inStream = null; OutputStream outStream = null; try { File source = new File(filePath); File dest = new File(System.getProperty("user.dir") + "/bin/Images/", selectedFile.getName()); imagePath = "/Images/" + selectedFile.getName() ; inStream = new FileInputStream(source); outStream = new FileOutputStream(dest); byte[] buffer = new byte[1024]; int length; while ((length = inStream.read(buffer)) > 0) { outStream.write(buffer, 0, length); } if (inStream != null) inStream.close(); if (outStream != null) outStream.close(); System.out.println("File Copied.."); } catch (IOException e1) { e1.printStackTrace(); } } public HolonObject getObject(){ return theObject; } public void setController(Control controller){ this.controller = controller; } public void setCategory(String cat){ givenCategory = cat; } }