<<<<<<< HEAD package ui.controls; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.SpinnerDateModel; import javax.swing.SpinnerNumberModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; /** * User interface control that allows the user to enter and edit a simulation time either as a number (of seconds) or as a real time expressed as HH:mm */ public class SimTimeEdit extends JPanel implements ChangeListener { private static final long serialVersionUID = 1L; private JSpinner spnRealTime = null; private JSpinner spnSimTime = null; /** * The value that is assigned to the control */ private int value = 0; private JLabel lblRealTime = null; private JLabel lblSimTime = null; private List<ChangeListener> changeListeners = new ArrayList<ChangeListener>(); public void addChangeListener(ChangeListener c) { if (!changeListeners.contains(c)) { changeListeners.add(c); } } public void removeChangeListener(ChangeListener c) { if (changeListeners.contains(c)) { changeListeners.remove(c); } } private void NotifyValueChanged() { for (ChangeListener c : changeListeners) { c.stateChanged(new ChangeEvent(this)); } } /** * Returns the time value * @return * @uml.property name="value" */ public int getValue() { return value; } /** * Sets the specified value to the control. * @param value * @uml.property name="value" */ @SuppressWarnings("deprecation") public void setValue(int value) { this.value = value; //Create the date to be shown on the real time control Date d = new Date(); d.setHours(value / 3600); d.setMinutes((value % 3600) / 60); d.setSeconds((value % 3600) % 60); //Set the values spnRealTime.setValue(d); spnSimTime.setValue(value); spnSimTime.addChangeListener(this); spnRealTime.addChangeListener(this); } /** * This is the default constructor */ public SimTimeEdit() { super(); initialize(); setValue(0); } /** * This method initializes this * * @return void */ private void initialize() { GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); gridBagConstraints2.gridx = 0; gridBagConstraints2.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints2.insets = new Insets(0, 0, 0, 5); gridBagConstraints2.gridy = 1; lblSimTime = new JLabel(); lblSimTime.setText("Simulation time:"); GridBagConstraints gridBagConstraints11 = new GridBagConstraints(); gridBagConstraints11.gridx = 0; gridBagConstraints11.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints11.gridy = 0; lblRealTime = new JLabel(); lblRealTime.setText("Real time:"); GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.gridx = 1; gridBagConstraints1.weightx = 1.0D; gridBagConstraints1.weighty = 1.0D; gridBagConstraints1.insets = new Insets(0, 0, 0, 10); gridBagConstraints1.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints1.gridy = 1; GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.weighty = 1.0D; gridBagConstraints.weightx = 1.0D; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints.gridy = 0; this.setSize(163, 49); this.setLayout(new GridBagLayout()); this.add(getSpnRealTime(), gridBagConstraints); this.add(getSpnSimTime(), gridBagConstraints1); this.add(lblRealTime, gridBagConstraints11); this.add(lblSimTime, gridBagConstraints2); } /** * This method initializes spnRealTime * @return javax.swing.JSpinner * @uml.property name="spnRealTime" */ private JSpinner getSpnRealTime() { if (spnRealTime == null) { spnRealTime = new JSpinner(); spnRealTime.setModel(new SpinnerDateModel(new Date(), null, null, Calendar.MINUTE)); JSpinner.DateEditor de = new JSpinner.DateEditor(spnRealTime, "HH:mm"); spnRealTime.setEditor(de); spnRealTime.setPreferredSize(new Dimension(60, 20)); } return spnRealTime; } /** * This method initializes spnSimTime * @return javax.swing.JSpinner * @uml.property name="spnSimTime" */ private JSpinner getSpnSimTime() { if (spnSimTime == null) { spnSimTime = new JSpinner(); spnSimTime.setModel(new SpinnerNumberModel(0, 0, 86400, 60)); spnSimTime.setPreferredSize(new Dimension(60, 20)); } return spnSimTime; } @SuppressWarnings("deprecation") public void stateChanged(ChangeEvent e) { //Remove listeners to avoid a loop spnSimTime.removeChangeListener(this); spnRealTime.removeChangeListener(this); //Depending on the source of the event, update the other control if (e.getSource().equals(spnRealTime)) { Date d = (Date) spnRealTime.getValue(); value = d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds(); spnSimTime.setValue(value); } else if (e.getSource().equals(spnSimTime)) { value = (Integer) spnSimTime.getValue(); Date d = new Date(); d.setHours(value / 3600); d.setMinutes((value % 3600) / 60); d.setSeconds((value % 3600) % 60); spnRealTime.setValue(d); } //Re-register the listeners spnSimTime.addChangeListener(this); spnRealTime.addChangeListener(this); //Notify any registered listeners that the value has changed NotifyValueChanged(); } @Override public void setEnabled(boolean b) { super.setEnabled(b); //Enable / disable child controls spnRealTime.setEnabled(b); spnSimTime.setEnabled(b); lblSimTime.setEnabled(b); lblRealTime.setEnabled(b); } } // @jve:decl-index=0:visual-constraint="10,10" ======= package ui.controls; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.SpinnerDateModel; import javax.swing.SpinnerNumberModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; /** * User interface control that allows the user to enter and edit a simulation time either as a number (of seconds) or as a real time expressed as HH:mm */ public class SimTimeEdit extends JPanel implements ChangeListener { private static final long serialVersionUID = 1L; private JSpinner spnRealTime = null; private JSpinner spnSimTime = null; /** * The value that is assigned to the control */ private int value = 0; private JLabel lblRealTime = null; private JLabel lblSimTime = null; private List<ChangeListener> changeListeners = new ArrayList<ChangeListener>(); public void addChangeListener(ChangeListener c) { if (!changeListeners.contains(c)) { changeListeners.add(c); } } public void removeChangeListener(ChangeListener c) { if (changeListeners.contains(c)) { changeListeners.remove(c); } } private void NotifyValueChanged() { for (ChangeListener c : changeListeners) { c.stateChanged(new ChangeEvent(this)); } } /** * Returns the time value * @return * @uml.property name="value" */ public int getValue() { return value; } /** * Sets the specified value to the control. * @param value * @uml.property name="value" */ @SuppressWarnings("deprecation") public void setValue(int value) { this.value = value; //Create the date to be shown on the real time control Date d = new Date(); d.setHours(value / 3600); d.setMinutes((value % 3600) / 60); d.setSeconds((value % 3600) % 60); //Set the values spnRealTime.setValue(d); spnSimTime.setValue(value); spnSimTime.addChangeListener(this); spnRealTime.addChangeListener(this); } /** * This is the default constructor */ public SimTimeEdit() { super(); initialize(); setValue(0); } /** * This method initializes this * * @return void */ private void initialize() { GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); gridBagConstraints2.gridx = 0; gridBagConstraints2.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints2.insets = new Insets(0, 0, 0, 5); gridBagConstraints2.gridy = 1; lblSimTime = new JLabel(); lblSimTime.setText("Simulation time:"); GridBagConstraints gridBagConstraints11 = new GridBagConstraints(); gridBagConstraints11.gridx = 0; gridBagConstraints11.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints11.gridy = 0; lblRealTime = new JLabel(); lblRealTime.setText("Real time:"); GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.gridx = 1; gridBagConstraints1.weightx = 1.0D; gridBagConstraints1.weighty = 1.0D; gridBagConstraints1.insets = new Insets(0, 0, 0, 10); gridBagConstraints1.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints1.gridy = 1; GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.weighty = 1.0D; gridBagConstraints.weightx = 1.0D; gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints.gridy = 0; this.setSize(163, 49); this.setLayout(new GridBagLayout()); this.add(getSpnRealTime(), gridBagConstraints); this.add(getSpnSimTime(), gridBagConstraints1); this.add(lblRealTime, gridBagConstraints11); this.add(lblSimTime, gridBagConstraints2); } /** * This method initializes spnRealTime * @return javax.swing.JSpinner * @uml.property name="spnRealTime" */ private JSpinner getSpnRealTime() { if (spnRealTime == null) { spnRealTime = new JSpinner(); spnRealTime.setModel(new SpinnerDateModel(new Date(), null, null, Calendar.MINUTE)); JSpinner.DateEditor de = new JSpinner.DateEditor(spnRealTime, "HH:mm"); spnRealTime.setEditor(de); spnRealTime.setPreferredSize(new Dimension(60, 20)); } return spnRealTime; } /** * This method initializes spnSimTime * @return javax.swing.JSpinner * @uml.property name="spnSimTime" */ private JSpinner getSpnSimTime() { if (spnSimTime == null) { spnSimTime = new JSpinner(); spnSimTime.setModel(new SpinnerNumberModel(0, 0, 86400, 60)); spnSimTime.setPreferredSize(new Dimension(60, 20)); } return spnSimTime; } @SuppressWarnings("deprecation") public void stateChanged(ChangeEvent e) { //Remove listeners to avoid a loop spnSimTime.removeChangeListener(this); spnRealTime.removeChangeListener(this); //Depending on the source of the event, update the other control if (e.getSource().equals(spnRealTime)) { Date d = (Date) spnRealTime.getValue(); value = d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds(); spnSimTime.setValue(value); } else if (e.getSource().equals(spnSimTime)) { value = (Integer) spnSimTime.getValue(); Date d = new Date(); d.setHours(value / 3600); d.setMinutes((value % 3600) / 60); d.setSeconds((value % 3600) % 60); spnRealTime.setValue(d); } //Re-register the listeners spnSimTime.addChangeListener(this); spnRealTime.addChangeListener(this); //Notify any registered listeners that the value has changed NotifyValueChanged(); } @Override public void setEnabled(boolean b) { super.setEnabled(b); //Enable / disable child controls spnRealTime.setEnabled(b); spnSimTime.setEnabled(b); lblSimTime.setEnabled(b); lblRealTime.setEnabled(b); } } // @jve:decl-index=0:visual-constraint="10,10" >>>>>>> origin/abdalla