package ui.view; import classes.AbstractCpsObject; import classes.HolonElement; import classes.HolonObject; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; /** * popup for adding an Holon Element to a holon Object. * * @author Gruppe14 */ public class AddElementPopUp extends JDialog { /** * Serial. */ private static final long serialVersionUID = 1L; private final JPanel contentPanel = new JPanel(); private JTextField elementName; private JTextField providedEnergy; private JTextField amount; private HolonElement hl; private AbstractCpsObject tempCps; // /** // * Launch the application. // * // * @param args // * standard // */ // public static void main(String[] args) { // try { // // AddElementPopUp dialog = new AddElementPopUp(); // dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); // dialog.setVisible(true); // } catch (Exception e) { // e.printStackTrace(); // } // } /** * Create the dialog. */ AddElementPopUp(JFrame parentFrame) { super((java.awt.Frame) null, true); this.setIconImage(Util.loadImage(this,"/Images/Dummy_House.png",30,30)); setModalityType(java.awt.Dialog.ModalityType.APPLICATION_MODAL); setBounds(100, 100, 400, 190); setLocationRelativeTo(parentFrame); getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(null); this.setTitle(Languages.getLanguage()[64]); JLabel lblElementName = new JLabel(Languages.getLanguage()[65]); lblElementName.setBounds(10, 11, 100, 14); contentPanel.add(lblElementName); JLabel lblProvidedEnergy = new JLabel(Languages.getLanguage()[66]); lblProvidedEnergy.setBounds(10, 49, 120, 14); contentPanel.add(lblProvidedEnergy); JLabel lblAmount = new JLabel(Languages.getLanguage()[67]); lblAmount.setBounds(10, 84, 100, 14); contentPanel.add(lblAmount); elementName = new JTextField(); elementName.addKeyListener(new KeyListener() { @Override public void keyPressed(KeyEvent arg0) { } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { elementName.setBackground(Color.WHITE); } }); elementName.setBounds(130, 8, 110, 20); contentPanel.add(elementName); elementName.setColumns(10); providedEnergy = new JTextField(); providedEnergy.setBounds(130, 46, 110, 20); contentPanel.add(providedEnergy); providedEnergy.setColumns(10); providedEnergy.setText("0"); amount = new JTextField(); amount.setBounds(130, 81, 110, 20); contentPanel.add(amount); amount.setColumns(10); amount.setText("1"); { JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { JButton okButton = new JButton("OK"); okButton.addActionListener(arg0 -> { boolean repeated = false; for (HolonElement e : ((HolonObject) tempCps).getElements()) { if (elementName.getText().equals(e.getEleName())) { repeated = true; break; } } if (elementName.getText().length() != 0 && !repeated) { try { float energy = Float.parseFloat(providedEnergy.getText()); int elementAmount = Integer.parseInt(amount.getText()); hl = new HolonElement(elementName.getText(), elementAmount, energy); dispose(); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(new JFrame(), Languages.getLanguage()[68]); } } else { // JOptionPane.showMessageDialog(new JFrame(), // "Please enter a Name"); if (elementName.getText().length() == 0) { JLabel errorString = new JLabel(Languages.getLanguage()[69]); errorString.setBounds(240, 8, 100, 20); contentPanel.add(errorString); } else if (repeated) { JLabel errorString = new JLabel(Languages.getLanguage()[70]); errorString.setBounds(250, 8, 100, 20); contentPanel.add(errorString); } elementName.setBackground(new Color(255, 50, 50)); } }); okButton.setActionCommand("OK"); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); } { JButton cancelButton = new JButton(Languages.getLanguage()[71]); cancelButton.setActionCommand("Cancel"); buttonPane.add(cancelButton); cancelButton.addActionListener(e -> dispose()); } } } /** * Sets the actual Cps. * * @param cps * actual Cps */ void setActualCps(AbstractCpsObject cps) { this.tempCps = cps; } /** * Returns the created Element. * * @return the Element */ public HolonElement getElement() { return hl; } }