package holeg.ui.view.dialog; import holeg.model.Edge; import holeg.preferences.ImagePreference; import holeg.ui.controller.Control; import holeg.ui.model.GuiSettings; import holeg.ui.view.image.Import; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.*; /** * Popup for Editing Edges. * * @author Gruppe14 */ public class EditEdgesPopUp extends JDialog { private final JTextField capacityField; private float capacity; private final JRadioButton rdbtnChangeForAll; private final JRadioButton rdbtnChangeForNew; private final JRadioButton rdbtnChangeForAll1; private final Control control; /** * Constructor. */ public EditEdgesPopUp(JFrame parentFrame, Control control) { super((java.awt.Frame) null, true); setModalityType(java.awt.Dialog.ModalityType.APPLICATION_MODAL); this.setTitle("Edit Capacities of Edges"); setBounds(100, 100, 400, 220); setLocationRelativeTo(parentFrame); getContentPane().setLayout(new BorderLayout()); JPanel contentPanel = new JPanel(); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(null); this.setIconImage(Import.loadImage(ImagePreference.Logo, 30, 30)); JLabel lblMaximumCapacity = new JLabel("Maximum Capacity:"); lblMaximumCapacity.setFont(new Font("Tahoma", Font.PLAIN, 11)); lblMaximumCapacity.setBounds(10, 11, 98, 14); contentPanel.add(lblMaximumCapacity); capacityField = new JTextField(); capacityField.setBounds(107, 8, 120, 20); contentPanel.add(capacityField); capacityField.setColumns(10); rdbtnChangeForAll = new JRadioButton("Change for all existing Edges only"); rdbtnChangeForAll.setBounds(10, 39, 330, 23); contentPanel.add(rdbtnChangeForAll); rdbtnChangeForNew = new JRadioButton("Change for new created Edges only"); rdbtnChangeForNew.setBounds(10, 65, 330, 23); contentPanel.add(rdbtnChangeForNew); rdbtnChangeForAll1 = new JRadioButton("Change for all existing and new created Edges"); rdbtnChangeForAll1.setBounds(10, 95, 400, 23); contentPanel.add(rdbtnChangeForAll1); JButton btnCancel = new JButton("Cancel"); btnCancel.setActionCommand("Cancel"); btnCancel.addActionListener(clicked -> dispose()); btnCancel.setBounds(285, 147, 89, 23); contentPanel.add(btnCancel); JButton btnOk1 = new JButton("OK"); btnOk1.addActionListener(clicked -> { try { capacity = Float.parseFloat(capacityField.getText()); if (capacity < 0) { throw new NumberFormatException(); } if (rdbtnChangeForAll.isSelected()) { changeForExisting(capacity); dispose(); } else if (rdbtnChangeForNew.isSelected()) { changeForNew(capacity); dispose(); } else if (rdbtnChangeForAll1.isSelected()) { changeForExAndNew(capacity); dispose(); } else { JOptionPane.showMessageDialog(new JFrame(), "Please select one of the options"); } } catch (NumberFormatException eex) { JOptionPane.showMessageDialog(new JFrame(), "Please enter a number greater or equal 0 in the Field for Maximum Capacity"); } }); btnOk1.setBounds(186, 147, 89, 23); contentPanel.add(btnOk1); this.setTitle("Edit Edge Capacities"); ButtonGroup bG = new ButtonGroup(); bG.add(rdbtnChangeForAll1); bG.add(rdbtnChangeForNew); bG.add(rdbtnChangeForAll); this.control = control; this.setVisible(true); } /** * set edge capacity for new edges. * * @param cap * the capacity */ public void changeForNew(float cap) { GuiSettings.maxCapacityForNewCreatedEdges = cap; control.resetSimulation(); } /** * Set Capacity for all existing Edges. * * @param cap * the Capacity */ public void changeForExisting(float cap) { /* * for(SubNet sn: controller.getSimManager().getSubNets()){ for(CpsEdge * edge: sn.getEdges()){ edge.setCapacity(cap); } } for(CpsEdge edge: * controller.getSimManager().getBrokenEdges()){ edge.setCapacity(cap); * } */ for (Edge edge : control.getModel().getEdgesOnCanvas()) { edge.maxCapacity = cap; } control.resetSimulation(); control.calculateStateAndVisualForCurrentTimeStep(); } /** * Set the Capacity for all existing and new edges. * * @param cap * the capacity */ public void changeForExAndNew(float cap) { changeForNew(cap); changeForExisting(cap); } }