/** Saves event into the list. */ public synchronized void save() { myEvent.setNEID(myNE.getId()); myEvent.setEnabled(true); myEvent.setDescription(desc.getText()); int h = (Integer) hh.getValue(); int m = (Integer) mm.getValue(); double s = (Double) ss.getValue(); myEvent.setTime(h + (m / 60.0) + (s / 3600.0)); myEventManager.clearEvent(myEvent); myEventManager.addEvent(myEvent); if (eventTable != null) eventTable.updateData(); return; }
protected JPanel createForm() { JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)); // Time JPanel pT = new JPanel(new FlowLayout()); pT.setBorder(BorderFactory.createTitledBorder("Start Time")); hh = new JSpinner(new SpinnerNumberModel(Util.getHours(myrow.getTime()), 0, 99, 1)); hh.setEditor(new JSpinner.NumberEditor(hh, "00")); pT.add(hh); pT.add(new JLabel("h ")); mm = new JSpinner(new SpinnerNumberModel(Util.getMinutes(myrow.getTime()), 0, 59, 1)); mm.setEditor(new JSpinner.NumberEditor(mm, "00")); pT.add(mm); pT.add(new JLabel("m ")); ss = new JSpinner(new SpinnerNumberModel(Util.getSeconds(myrow.getTime()), 0, 59, 1)); ss.setEditor(new JSpinner.NumberEditor(ss, "00")); pT.add(ss); pT.add(new JLabel("s")); panel.add(pT); // Green JPanel pG = new JPanel(new BorderLayout()); pG.setBorder(BorderFactory.createTitledBorder("Green (sec.)")); green = new JSpinner(new SpinnerNumberModel(myrow.getGreen() * conversion, 0.0, 99999.99, 1)); green.setEditor(new JSpinner.NumberEditor(green, "####0.##")); pG.add(green); panel.add(pG); // Red JPanel pR = new JPanel(new BorderLayout()); pR.setBorder(BorderFactory.createTitledBorder("Red (sec.)")); red = new JSpinner(new SpinnerNumberModel(myrow.getRed() * conversion, 0.0, 99999.99, 1)); red.setEditor(new JSpinner.NumberEditor(red, "####0.##")); pR.add(red); panel.add(pR); JPanel bp = new JPanel(new FlowLayout()); JButton bOK = new JButton(" OK "); bOK.setActionCommand(cmdOK); bOK.addActionListener(new ButtonEventsListener()); JButton bCancel = new JButton("Cancel"); bCancel.setActionCommand(cmdCancel); bCancel.addActionListener(new ButtonEventsListener()); bp.add(bOK); bp.add(bCancel); panel.add(bp); return panel; }
/** Reaction to value changes in the form. */ public void stateChanged(ChangeEvent e) { String nm = ((JComponent) e.getSource()).getName(); double x; if (nm.equals(nmSpinMaxFlow)) { x = (Double) spinMaxFlow.getValue(); mf = x; } if (nm.equals(nmSpinCapDrop)) { x = (Double) spinCapDrop.getValue(); drp = x; } if (nm.equals(nmSpinCritDen)) { x = (Double) spinCritDen.getValue(); if (x <= jd) cd = x; } if (nm.equals(nmSpinJamDen)) { x = (Double) spinJamDen.getValue(); if (x >= cd) jd = x; } if (nm.equals(nmSpinVff)) { x = (Double) spinVff.getValue(); if (x > 0.0) cd = mf / x; double xx = (Double) spinWc.getValue(); if (xx > 0.0) jd = cd + (mf / xx); } if (nm.equals(nmSpinWc)) { x = (Double) spinWc.getValue(); if (x > 0.0) jd = cd + (mf / x); } updateSpinners(); updateFDSeries(); return; }
/** * Initializes event editing panel. * * @param ne Network Element. * @param em Event Manager. * @param evt Event. */ protected void initialize(AbstractNetworkElement ne, EventManager em) { myNE = ne; myEventManager = em; setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); JPanel pH = new JPanel(new FlowLayout()); JLabel lD = new JLabel( "<html><font color=\"blue\">" + TypesHWC.typeString(myNE.getType()) + " " + myNE.toString() + "</font></html>"); pH.add(lD); add(pH); // Box dp = Box.createVerticalBox(); JPanel pD = new JPanel(new BorderLayout()); pD.setBorder(BorderFactory.createTitledBorder("Description")); desc.setText(myEvent.getDescription()); pD.add(new JScrollPane(desc), BorderLayout.CENTER); // dp.add(pD); add(pD); fillPanel(); // Box fp = Box.createVerticalBox(); JPanel pT = new JPanel(new FlowLayout()); pT.setBorder(BorderFactory.createTitledBorder("Activation Time")); hh = new JSpinner(new SpinnerNumberModel(Util.getHours(myEvent.getTime()), 0, 99, 1)); hh.setEditor(new JSpinner.NumberEditor(hh, "00")); pT.add(hh); pT.add(new JLabel("h ")); mm = new JSpinner(new SpinnerNumberModel(Util.getMinutes(myEvent.getTime()), 0, 59, 1)); mm.setEditor(new JSpinner.NumberEditor(mm, "00")); pT.add(mm); pT.add(new JLabel("m ")); ss = new JSpinner(new SpinnerNumberModel(Util.getSeconds(myEvent.getTime()), 0, 59.99, 1)); ss.setEditor(new JSpinner.NumberEditor(ss, "00.##")); pT.add(ss); pT.add(new JLabel("s")); // fp.add(pT); add(pT); winEE = new WindowEventEditor(this, null); winEE.setVisible(true); return; }
/** Updates spinner values. */ private void updateSpinners() { spinMaxFlow.setValue((Double) mf); spinCapDrop.setValue((Double) drp); spinCritDen.setValue((Double) cd); spinJamDen.setValue((Double) jd); spinVff.setValue((Double) (mf / cd)); spinWc.setValue((Double) (mf / (jd - cd))); return; }
/** Fills the panel with event specific fields. */ protected void fillPanel() { JLabel l; Box fdp = Box.createVerticalBox(); fdp.setBorder(BorderFactory.createTitledBorder("Fundamental Diagram")); fdChart = makeFDChart(); ChartPanel cp = new ChartPanel(fdChart); cp.setMinimumDrawWidth(100); cp.setMinimumDrawHeight(60); cp.setPreferredSize(new Dimension(250, 80)); fdp.add(new JScrollPane(cp)); JPanel prmp = new JPanel(new SpringLayout()); l = new JLabel("Capacity:", JLabel.TRAILING); prmp.add(l); spinMaxFlow = new JSpinner(new SpinnerNumberModel(mf, 0, 99999, 1.0)); spinMaxFlow.setEditor(new JSpinner.NumberEditor(spinMaxFlow, "####0.00")); spinMaxFlow.addChangeListener(this); spinMaxFlow.setName(nmSpinMaxFlow); l.setLabelFor(spinMaxFlow); prmp.add(spinMaxFlow); l = new JLabel("Cap.Drop:", JLabel.TRAILING); prmp.add(l); spinCapDrop = new JSpinner(new SpinnerNumberModel(drp, 0, 99999, 1.0)); spinCapDrop.setEditor(new JSpinner.NumberEditor(spinCapDrop, "####0.00")); spinCapDrop.addChangeListener(this); spinCapDrop.setName(nmSpinCapDrop); l.setLabelFor(spinCapDrop); prmp.add(spinCapDrop); l = new JLabel("C.Density:", JLabel.TRAILING); prmp.add(l); spinCritDen = new JSpinner(new SpinnerNumberModel(cd, 0, 99999, 1.0)); spinCritDen.setEditor(new JSpinner.NumberEditor(spinCritDen, "####0.00")); spinCritDen.addChangeListener(this); spinCritDen.setName(nmSpinCritDen); l.setLabelFor(spinCritDen); prmp.add(spinCritDen); l = new JLabel(" V:", JLabel.TRAILING); prmp.add(l); spinVff = new JSpinner(new SpinnerNumberModel(mf / cd, 0, 200, 1.0)); spinVff.setEditor(new JSpinner.NumberEditor(spinVff, "#0.00")); spinVff.addChangeListener(this); spinVff.setName(nmSpinVff); l.setLabelFor(spinVff); prmp.add(spinVff); l = new JLabel("J.Density:", JLabel.TRAILING); prmp.add(l); spinJamDen = new JSpinner(new SpinnerNumberModel(jd, 0, 99999, 1.0)); spinJamDen.setEditor(new JSpinner.NumberEditor(spinJamDen, "####0.00")); spinJamDen.addChangeListener(this); spinJamDen.setName(nmSpinJamDen); l.setLabelFor(spinJamDen); prmp.add(spinJamDen); l = new JLabel(" W:", JLabel.TRAILING); prmp.add(l); if (jd == cd) jd = cd + 1; int ulim = (int) Math.max(Math.ceil(mf / (jd - cd)), 999); spinWc = new JSpinner(new SpinnerNumberModel(mf / (jd - cd), 0, ulim, 1.0)); spinWc.setEditor(new JSpinner.NumberEditor(spinWc, "#0.00")); spinWc.addChangeListener(this); spinWc.setName(nmSpinWc); l.setLabelFor(spinWc); prmp.add(spinWc); SpringUtilities.makeCompactGrid(prmp, 3, 4, 2, 2, 2, 2); fdp.add(prmp); // add(new JScrollPane(fdp)); add(fdp); return; }
/** Saves controller properties. */ public synchronized void save() { ((ControllerSimpleSignal) controller).setOffset(((Double) offset.getValue()) / conversion); ((ControllerSimpleSignal) controller).setCycleTable(cycledata); super.save(); return; }
/** Fills the panel with simple signal specific fields. */ protected void fillPanel() { if (controller != null) { Vector<CycleDataRow> cd = ((ControllerSimpleSignal) controller).getCycleTable(); for (int i = 0; i < cd.size(); i++) { CycleDataRow cdr = ((ControllerSimpleSignal) controller) .new CycleDataRow(cd.get(i).getTime(), cd.get(i).getGreen(), cd.get(i).getRed()); cycledata.add(cdr); } } // offset JPanel pO = new JPanel(new BorderLayout()); pO.setBorder(BorderFactory.createTitledBorder("Offset (sec.)")); offset = new JSpinner( new SpinnerNumberModel( ((ControllerSimpleSignal) controller).getOffset() * conversion, 0.0, 99999.99, 10)); offset.setEditor(new JSpinner.NumberEditor(offset, "####0.##")); pO.add(offset); add(pO); // table JPanel tabpanel = new JPanel(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); tabpanel.setBorder(BorderFactory.createTitledBorder("Cycle Schedule")); cycletable = new JTable(cycletablemodel); cycletable.setPreferredScrollableViewportSize(new Dimension(200, 50)); cycletable.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { int row = cycletable.rowAtPoint(new Point(e.getX(), e.getY())); if ((row > cycledata.size() - 1) || (row < 0)) return; try { WindowEdit winEdit = new WindowEdit(null, cycledata.get(row)); winEdit.setVisible(true); cycletablemodel.deleterow(row); cycletablemodel.addrow(winEdit.getMyRow()); } catch (Exception excp) { } } } }); c.fill = GridBagConstraints.HORIZONTAL; c.ipady = 100; c.weightx = 0.5; c.gridwidth = 3; c.gridx = 0; c.gridy = 0; tabpanel.add(new JScrollPane(cycletable), c); c.ipady = 0; c.gridy = 1; c.gridwidth = 1; c.gridx = 0; tabpanel.add(buttonAdd, c); c.gridx = 1; tabpanel.add(buttonDelete, c); add(tabpanel); // configure buttons buttonAdd.setEnabled(true); buttonAdd.addActionListener(new ButtonAddListener()); buttonDelete.setEnabled(true); buttonDelete.addActionListener(new ButtonDeleteListener()); return; }