<<<<<<< HEAD package ui.propertypanels; import classes.Project; import classes.TypeSelection; import java.awt.Color; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ItemEvent; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JColorChooser; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JSpinner; import javax.swing.JTextField; import javax.swing.SpinnerNumberModel; import simulation.VehicleType; import trafficdefinition.HotSpot; import ui.controls.SimTimeEdit; import ui.dialogs.DlgSelectTypes; /** * @author PapaleonLe01 */ public class PnlHotSpotProperties extends JPanel { private static final long serialVersionUID = 1L; private JButton btnChangeColor = null; private JButton btnSelectVehicleTypes = null; private JCheckBox chkDirectionIn = null; private JCheckBox chkDirectionOut = null; private HotSpot currentHotSpot = null; // @jve:decl-index=0: private ButtonGroup IncomingTimeTypeGroup = new ButtonGroup(); // @jve:decl-index=0: private JLabel lblColorTitle = null; private JLabel lblIncomingEndTime = null; private JLabel lblInIcon = null; private JLabel lblNameTitle = null; private JLabel lblNumberOfVehiclesTitle = null; private JLabel lblOutgoingBeginTime = null; private JLabel lblOutgoingEndTime = null; private JLabel lblOutIcon = null; private JRadioButton rbIncomingTypeArrival = null; private JRadioButton rbIncomingTypeDeparture = null; private JSpinner spnNumberOfVehicles = null; private SimTimeEdit steIncomingBeginTime = null; private SimTimeEdit steIncomingEndTime = null; private SimTimeEdit steOutgoingBeginTime = null; private SimTimeEdit steOutgoingEndTime = null; private JTextField txtName = null; private JCheckBox chkEnabled = null; private JLabel lblIncomingBeginTime = null; /** * This is the default constructor */ public PnlHotSpotProperties() { super(); initialize(); } public void setHotSpot(HotSpot hotSpot) { currentHotSpot = hotSpot; txtName.setText(currentHotSpot.getName()); spnNumberOfVehicles.setValue(currentHotSpot.getNumberOfVehicles()); btnChangeColor.setBackground(currentHotSpot.getColor()); chkDirectionIn.setSelected(currentHotSpot.isDirectionIn()); chkDirectionOut.setSelected(currentHotSpot.isDirectionOut()); if (currentHotSpot.getDirectionInType() == HotSpot.DirectionInTimeType.TimeOfArrivalToDestination) { rbIncomingTypeArrival.setSelected(true); rbIncomingTypeDeparture.setSelected(false); } else if (currentHotSpot.getDirectionInType() == HotSpot.DirectionInTimeType.TimeOfDepartureFromSource) { rbIncomingTypeArrival.setSelected(false); rbIncomingTypeDeparture.setSelected(true); } steIncomingBeginTime.setValue(currentHotSpot.getDirectionInBeginTime()); steIncomingEndTime.setValue(currentHotSpot.getDirectionInEndTime()); steOutgoingBeginTime.setValue(currentHotSpot.getDirectionOutBeginTime()); steOutgoingEndTime.setValue(currentHotSpot.getDirectionOutEndTime()); chkEnabled.setSelected(currentHotSpot.isEnabled()); } /** * This method initializes btnChangeColor * @return javax.swing.JButton * @uml.property name="btnChangeColor" */ private JButton getBtnChangeColor() { if (btnChangeColor == null) { btnChangeColor = new JButton(); btnChangeColor.setPreferredSize(new Dimension(86, 20)); btnChangeColor.setText(""); btnChangeColor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { ChangeColor(); } }); } return btnChangeColor; } /** * This method initializes btnSelectVehicleTypes * @return javax.swing.JButton * @uml.property name="btnSelectVehicleTypes" */ private JButton getBtnSelectVehicleTypes() { if (btnSelectVehicleTypes == null) { btnSelectVehicleTypes = new JButton(); btnSelectVehicleTypes.setPreferredSize(new Dimension(150, 20)); btnSelectVehicleTypes.setIcon(new ImageIcon(getClass().getResource("/resources/icons/vehicletypes.png"))); btnSelectVehicleTypes.setText("Vehicle types..."); btnSelectVehicleTypes.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { SelectVehicleTypes(); } }); } return btnSelectVehicleTypes; } /** * This method initializes chkDirectionIn * @return javax.swing.JCheckBox * @uml.property name="chkDirectionIn" */ private JCheckBox getChkDirectionIn() { if (chkDirectionIn == null) { chkDirectionIn = new JCheckBox(); chkDirectionIn.setText("Incoming"); chkDirectionIn.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { DisableEnableIncomingControls(true); currentHotSpot.setDirectionIn(true); } else { DisableEnableIncomingControls(false); currentHotSpot.setDirectionIn(false); } } }); } return chkDirectionIn; } /** * This method initializes chkDirectionOut * @return javax.swing.JCheckBox * @uml.property name="chkDirectionOut" */ private JCheckBox getChkDirectionOut() { if (chkDirectionOut == null) { chkDirectionOut = new JCheckBox(); chkDirectionOut.setText("Outgoing"); chkDirectionOut.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { DisableEnableOutgoingControls(true); currentHotSpot.setDirectionOut(true); } else { DisableEnableOutgoingControls(false); currentHotSpot.setDirectionOut(false); } } }); } return chkDirectionOut; } /** * This method initializes rbIncomingTypeArrival * @return javax.swing.JRadioButton * @uml.property name="rbIncomingTypeArrival" */ private JRadioButton getRbIncomingTypeArrival() { if (rbIncomingTypeArrival == null) { rbIncomingTypeArrival = new JRadioButton(); rbIncomingTypeArrival.setText("Time of arrival to destination"); rbIncomingTypeArrival.setEnabled(false); rbIncomingTypeArrival.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { currentHotSpot.setDirectionInType(HotSpot.DirectionInTimeType.TimeOfArrivalToDestination); } else { currentHotSpot.setDirectionInType(HotSpot.DirectionInTimeType.TimeOfDepartureFromSource); } } }); } return rbIncomingTypeArrival; } /** * This method initializes rbIncomingTypeDeparture * @return javax.swing.JRadioButton * @uml.property name="rbIncomingTypeDeparture" */ private JRadioButton getRbIncomingTypeDeparture() { if (rbIncomingTypeDeparture == null) { rbIncomingTypeDeparture = new JRadioButton(); rbIncomingTypeDeparture.setText("Time of departure from source"); rbIncomingTypeDeparture.setEnabled(false); rbIncomingTypeDeparture.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { currentHotSpot.setDirectionInType(HotSpot.DirectionInTimeType.TimeOfDepartureFromSource); } else { currentHotSpot.setDirectionInType(HotSpot.DirectionInTimeType.TimeOfArrivalToDestination); } } }); } return rbIncomingTypeDeparture; } /** * This method initializes spnNumberOfVehicles * @return javax.swing.JSpinner * @uml.property name="spnNumberOfVehicles" */ private JSpinner getSpnNumberOfVehicles() { if (spnNumberOfVehicles == null) { spnNumberOfVehicles = new JSpinner(); spnNumberOfVehicles.setPreferredSize(new Dimension(70, 20)); spnNumberOfVehicles.setModel(new SpinnerNumberModel(1, 1, 1000000, 1)); spnNumberOfVehicles.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { currentHotSpot.setNumberOfVehicles((Integer) spnNumberOfVehicles.getValue()); } }); } return spnNumberOfVehicles; } /** * This method initializes steIncomingBeginTime * @return ui.SimTimeEdit * @uml.property name="steIncomingBeginTime" */ private SimTimeEdit getSteIncomingBeginTime() { if (steIncomingBeginTime == null) { steIncomingBeginTime = new SimTimeEdit(); steIncomingBeginTime.setEnabled(false); steIncomingBeginTime.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { currentHotSpot.setDirectionInBeginTime(steIncomingBeginTime.getValue()); } }); } return steIncomingBeginTime; } /** * This method initializes steIncomingEndTime * @return ui.SimTimeEdit * @uml.property name="steIncomingEndTime" */ private SimTimeEdit getSteIncomingEndTime() { if (steIncomingEndTime == null) { steIncomingEndTime = new SimTimeEdit(); steIncomingEndTime.setEnabled(false); steIncomingEndTime.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { currentHotSpot.setDirectionInEndTime(steIncomingEndTime.getValue()); } }); } return steIncomingEndTime; } /** * This method initializes steOutgoingBeginTime * @return ui.SimTimeEdit * @uml.property name="steOutgoingBeginTime" */ private SimTimeEdit getSteOutgoingBeginTime() { if (steOutgoingBeginTime == null) { steOutgoingBeginTime = new SimTimeEdit(); steOutgoingBeginTime.setEnabled(false); steOutgoingBeginTime.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { currentHotSpot.setDirectionOutBeginTime(steOutgoingBeginTime.getValue()); } }); } return steOutgoingBeginTime; } /** * This method initializes steOutgoingEndTime * @return ui.SimTimeEdit * @uml.property name="steOutgoingEndTime" */ private SimTimeEdit getSteOutgoingEndTime() { if (steOutgoingEndTime == null) { steOutgoingEndTime = new SimTimeEdit(); steOutgoingEndTime.setEnabled(false); steOutgoingEndTime.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { currentHotSpot.setDirectionOutEndTime(steOutgoingEndTime.getValue()); } }); } return steOutgoingEndTime; } /** * This method initializes txtName * @return javax.swing.JTextField * @uml.property name="txtName" */ private JTextField getTxtName() { if (txtName == null) { txtName = new JTextField(); txtName.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent e) { currentHotSpot.setName(txtName.getText()); } }); } return txtName; } /** * This method initializes this * * @return void */ private void initialize() { GridBagConstraints gridBagConstraints4 = new GridBagConstraints(); gridBagConstraints4.gridx = 0; gridBagConstraints4.insets = new Insets(10, 0, 0, 10); gridBagConstraints4.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints4.gridy = 8; lblIncomingBeginTime = new JLabel(); lblIncomingBeginTime.setText("Begin Time:"); lblIncomingBeginTime.setEnabled(false); GridBagConstraints gridBagConstraints33 = new GridBagConstraints(); gridBagConstraints33.gridx = 0; gridBagConstraints33.fill = GridBagConstraints.BOTH; gridBagConstraints33.gridy = 8; GridBagConstraints gridBagConstraints6 = new GridBagConstraints(); gridBagConstraints6.gridx = 1; gridBagConstraints6.anchor = GridBagConstraints.WEST; gridBagConstraints6.gridy = 3; GridBagConstraints gridBagConstraints3 = new GridBagConstraints(); gridBagConstraints3.gridx = 1; gridBagConstraints3.anchor = GridBagConstraints.WEST; gridBagConstraints3.gridy = 11; lblOutIcon = new JLabel(); lblOutIcon.setText(""); lblOutIcon.setIcon(new ImageIcon(getClass().getResource("/resources/icons/hotspotout.png"))); GridBagConstraints gridBagConstraints21 = new GridBagConstraints(); gridBagConstraints21.gridx = 1; gridBagConstraints21.anchor = GridBagConstraints.WEST; gridBagConstraints21.gridy = 5; lblInIcon = new JLabel(); lblInIcon.setText(""); lblInIcon.setIcon(new ImageIcon(getClass().getResource("/resources/icons/hotspotin.png"))); GridBagConstraints gridBagConstraints19 = new GridBagConstraints(); gridBagConstraints19.gridx = 0; gridBagConstraints19.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints19.insets = new Insets(5, 0, 0, 5); gridBagConstraints19.gridy = 13; lblOutgoingEndTime = new JLabel(); lblOutgoingEndTime.setText("End time:"); lblOutgoingEndTime.setEnabled(false); GridBagConstraints gridBagConstraints18 = new GridBagConstraints(); gridBagConstraints18.gridx = 0; gridBagConstraints18.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints18.insets = new Insets(5, 0, 0, 5); gridBagConstraints18.gridy = 12; lblOutgoingBeginTime = new JLabel(); lblOutgoingBeginTime.setText("Begin time:"); lblOutgoingBeginTime.setEnabled(false); GridBagConstraints gridBagConstraints17 = new GridBagConstraints(); gridBagConstraints17.gridx = 0; gridBagConstraints17.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints17.insets = new Insets(5, 0, 0, 10); gridBagConstraints17.gridy = 9; lblIncomingEndTime = new JLabel(); lblIncomingEndTime.setText("End time:"); lblIncomingEndTime.setEnabled(false); GridBagConstraints gridBagConstraints16 = new GridBagConstraints(); gridBagConstraints16.gridx = 0; gridBagConstraints16.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints16.insets = new Insets(10, 0, 0, 5); gridBagConstraints16.gridy = 7; GridBagConstraints gridBagConstraints14 = new GridBagConstraints(); gridBagConstraints14.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints14.gridx = 1; gridBagConstraints14.gridy = 13; gridBagConstraints14.weighty = 1.0D; gridBagConstraints14.insets = new Insets(5, 10, 0, 0); GridBagConstraints gridBagConstraints13 = new GridBagConstraints(); gridBagConstraints13.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints13.gridx = 0; gridBagConstraints13.gridy = 13; gridBagConstraints13.weighty = 1.0D; gridBagConstraints13.insets = new Insets(5, 0, 0, 10); GridBagConstraints gridBagConstraints121 = new GridBagConstraints(); gridBagConstraints121.insets = new Insets(5, 10, 2, 0); gridBagConstraints121.gridy = 12; gridBagConstraints121.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints121.gridx = 1; GridBagConstraints gridBagConstraints11 = new GridBagConstraints(); gridBagConstraints11.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints11.gridx = 0; gridBagConstraints11.gridy = 12; gridBagConstraints11.insets = new Insets(5, 0, 0, 10); GridBagConstraints gridBagConstraints101 = new GridBagConstraints(); gridBagConstraints101.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints101.gridx = 1; gridBagConstraints101.gridy = 9; gridBagConstraints101.insets = new Insets(5, 10, 2, 0); GridBagConstraints gridBagConstraints91 = new GridBagConstraints(); gridBagConstraints91.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints91.gridx = 0; gridBagConstraints91.gridy = 9; gridBagConstraints91.insets = new Insets(5, 0, 0, 10); GridBagConstraints gridBagConstraints81 = new GridBagConstraints(); gridBagConstraints81.insets = new Insets(10, 10, 2, 0); gridBagConstraints81.gridy = 8; gridBagConstraints81.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints81.gridx = 1; GridBagConstraints gridBagConstraints61 = new GridBagConstraints(); gridBagConstraints61.anchor = GridBagConstraints.WEST; gridBagConstraints61.gridx = 0; gridBagConstraints61.gridy = 7; gridBagConstraints61.gridwidth = 2; gridBagConstraints61.insets = new Insets(0, 20, 0, 0); GridBagConstraints gridBagConstraints51 = new GridBagConstraints(); gridBagConstraints51.anchor = GridBagConstraints.WEST; gridBagConstraints51.gridx = 0; gridBagConstraints51.gridy = 6; gridBagConstraints51.weightx = 0.0D; gridBagConstraints51.gridwidth = 2; gridBagConstraints51.insets = new Insets(0, 20, 0, 0); GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); gridBagConstraints2.gridx = 0; gridBagConstraints2.insets = new Insets(0, 10, 0, 0); gridBagConstraints2.anchor = GridBagConstraints.WEST; gridBagConstraints2.gridy = 11; GridBagConstraints gridBagConstraints12 = new GridBagConstraints(); gridBagConstraints12.gridx = 0; gridBagConstraints12.anchor = GridBagConstraints.WEST; gridBagConstraints12.insets = new Insets(0, 10, 0, 0); gridBagConstraints12.gridy = 5; GridBagConstraints gridBagConstraints32 = new GridBagConstraints(); gridBagConstraints32.gridx = 1; gridBagConstraints32.anchor = GridBagConstraints.WEST; gridBagConstraints32.gridy = 1; GridBagConstraints gridBagConstraints41 = new GridBagConstraints(); gridBagConstraints41.gridx = 0; gridBagConstraints41.insets = new Insets(10, 2, 10, 2); gridBagConstraints41.anchor = GridBagConstraints.NORTH; gridBagConstraints41.gridwidth = 2; gridBagConstraints41.gridy = 4; GridBagConstraints gridBagConstraints31 = new GridBagConstraints(); gridBagConstraints31.gridx = 1; gridBagConstraints31.insets = new Insets(2, 0, 2, 10); gridBagConstraints31.fill = GridBagConstraints.BOTH; gridBagConstraints31.gridy = 2; GridBagConstraints gridBagConstraints7 = new GridBagConstraints(); gridBagConstraints7.gridx = 0; gridBagConstraints7.anchor = GridBagConstraints.WEST; gridBagConstraints7.insets = new Insets(0, 10, 0, 0); gridBagConstraints7.gridy = 2; lblColorTitle = new JLabel(); lblColorTitle.setText("Color:"); GridBagConstraints gridBagConstraints5 = new GridBagConstraints(); gridBagConstraints5.gridx = 0; gridBagConstraints5.anchor = GridBagConstraints.WEST; gridBagConstraints5.insets = new Insets(0, 10, 0, 5); gridBagConstraints5.gridy = 1; lblNumberOfVehiclesTitle = new JLabel(); lblNumberOfVehiclesTitle.setText("Number of vehicles:"); GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints1.gridy = 0; gridBagConstraints1.weightx = 1.0; gridBagConstraints1.insets = new Insets(10, 0, 0, 10); gridBagConstraints1.gridx = 1; GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.insets = new Insets(10, 10, 0, 0); gridBagConstraints.gridy = 0; lblNameTitle = new JLabel(); lblNameTitle.setText("Name:"); this.setSize(315, 433); this.setLayout(new GridBagLayout()); this.add(lblNameTitle, gridBagConstraints); this.add(getTxtName(), gridBagConstraints1); this.add(lblNumberOfVehiclesTitle, gridBagConstraints5); this.add(lblColorTitle, gridBagConstraints7); this.add(getBtnChangeColor(), gridBagConstraints31); this.add(getBtnSelectVehicleTypes(), gridBagConstraints41); this.add(getSpnNumberOfVehicles(), gridBagConstraints32); this.add(getChkDirectionIn(), gridBagConstraints12); this.add(getChkDirectionOut(), gridBagConstraints2); this.add(getRbIncomingTypeDeparture(), gridBagConstraints51); this.add(getRbIncomingTypeArrival(), gridBagConstraints61); this.add(getSteIncomingBeginTime(), gridBagConstraints81); this.add(getSteIncomingEndTime(), gridBagConstraints101); this.add(getSteOutgoingBeginTime(), gridBagConstraints121); this.add(getSteOutgoingEndTime(), gridBagConstraints14); this.add(lblInIcon, gridBagConstraints21); this.add(lblOutIcon, gridBagConstraints3); this.add(getChkEnabled(), gridBagConstraints6); this.add(lblIncomingBeginTime, gridBagConstraints4); this.add(lblIncomingEndTime, gridBagConstraints17); this.add(lblOutgoingBeginTime, gridBagConstraints18); this.add(lblOutgoingEndTime, gridBagConstraints19); IncomingTimeTypeGroup.add(rbIncomingTypeArrival); IncomingTimeTypeGroup.add(rbIncomingTypeDeparture); } protected void ChangeColor() { Color newColor = JColorChooser.showDialog(this, "Select flow color", currentHotSpot.getColor()); if (newColor != null) { currentHotSpot.setColor(newColor); btnChangeColor.setBackground(newColor); } } protected void DisableEnableIncomingControls(boolean b) { rbIncomingTypeArrival.setEnabled(b); rbIncomingTypeDeparture.setEnabled(b); lblIncomingBeginTime.setEnabled(b); lblIncomingEndTime.setEnabled(b); steIncomingBeginTime.setEnabled(b); steIncomingEndTime.setEnabled(b); } protected void DisableEnableOutgoingControls(boolean b) { lblOutgoingBeginTime.setEnabled(b); lblOutgoingEndTime.setEnabled(b); steOutgoingBeginTime.setEnabled(b); steOutgoingEndTime.setEnabled(b); } protected void SelectVehicleTypes() { // Create a type selection that contains all the vehicle types of the // project, each with a 0 probability TypeSelection<VehicleType> projectVehicleTypes = new TypeSelection<VehicleType>(Project.getCurrentlyLoadedProject().getVehicleTypes()); // Get a copy of the layer's vehicle types (so that if the user cancels, // the // changes won't be permanent) TypeSelection<VehicleType> hotspotVehicleTypes = new TypeSelection<VehicleType>(currentHotSpot.getVehicleSelection()); // Show the vehicle selection dialog hotspotVehicleTypes.addTypesNotInSelection(projectVehicleTypes); DlgSelectTypes<VehicleType> dlg = new DlgSelectTypes<VehicleType>(hotspotVehicleTypes); dlg.setVisible(true); if (dlg.getAnswer() == JOptionPane.OK_OPTION) { // Remove any types that have 0 probability hotspotVehicleTypes.removeTypesWithZeroPercentage(); // Set the selected types to the layer currentHotSpot.setVehicleSelection(hotspotVehicleTypes); } } /** * This method initializes chkEnabled * @return javax.swing.JCheckBox * @uml.property name="chkEnabled" */ private JCheckBox getChkEnabled() { if (chkEnabled == null) { chkEnabled = new JCheckBox(); chkEnabled.setText("Enabled"); chkEnabled.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { currentHotSpot.setEnabled(chkEnabled.isSelected()); } }); } return chkEnabled; } } // @jve:decl-index=0:visual-constraint="10,10" ======= package ui.propertypanels; import classes.Project; import classes.TypeSelection; import java.awt.Color; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ItemEvent; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JColorChooser; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JSpinner; import javax.swing.JTextField; import javax.swing.SpinnerNumberModel; import simulation.VehicleType; import trafficdefinition.HotSpot; import ui.controls.SimTimeEdit; import ui.dialogs.DlgSelectTypes; /** * @author PapaleonLe01 */ public class PnlHotSpotProperties extends JPanel { private static final long serialVersionUID = 1L; private JButton btnChangeColor = null; private JButton btnSelectVehicleTypes = null; private JCheckBox chkDirectionIn = null; private JCheckBox chkDirectionOut = null; private HotSpot currentHotSpot = null; // @jve:decl-index=0: private ButtonGroup IncomingTimeTypeGroup = new ButtonGroup(); // @jve:decl-index=0: private JLabel lblColorTitle = null; private JLabel lblIncomingEndTime = null; private JLabel lblInIcon = null; private JLabel lblNameTitle = null; private JLabel lblNumberOfVehiclesTitle = null; private JLabel lblOutgoingBeginTime = null; private JLabel lblOutgoingEndTime = null; private JLabel lblOutIcon = null; private JRadioButton rbIncomingTypeArrival = null; private JRadioButton rbIncomingTypeDeparture = null; private JSpinner spnNumberOfVehicles = null; private SimTimeEdit steIncomingBeginTime = null; private SimTimeEdit steIncomingEndTime = null; private SimTimeEdit steOutgoingBeginTime = null; private SimTimeEdit steOutgoingEndTime = null; private JTextField txtName = null; private JCheckBox chkEnabled = null; private JLabel lblIncomingBeginTime = null; /** * This is the default constructor */ public PnlHotSpotProperties() { super(); initialize(); } public void setHotSpot(HotSpot hotSpot) { currentHotSpot = hotSpot; txtName.setText(currentHotSpot.getName()); spnNumberOfVehicles.setValue(currentHotSpot.getNumberOfVehicles()); btnChangeColor.setBackground(currentHotSpot.getColor()); chkDirectionIn.setSelected(currentHotSpot.isDirectionIn()); chkDirectionOut.setSelected(currentHotSpot.isDirectionOut()); if (currentHotSpot.getDirectionInType() == HotSpot.DirectionInTimeType.TimeOfArrivalToDestination) { rbIncomingTypeArrival.setSelected(true); rbIncomingTypeDeparture.setSelected(false); } else if (currentHotSpot.getDirectionInType() == HotSpot.DirectionInTimeType.TimeOfDepartureFromSource) { rbIncomingTypeArrival.setSelected(false); rbIncomingTypeDeparture.setSelected(true); } steIncomingBeginTime.setValue(currentHotSpot.getDirectionInBeginTime()); steIncomingEndTime.setValue(currentHotSpot.getDirectionInEndTime()); steOutgoingBeginTime.setValue(currentHotSpot.getDirectionOutBeginTime()); steOutgoingEndTime.setValue(currentHotSpot.getDirectionOutEndTime()); chkEnabled.setSelected(currentHotSpot.isEnabled()); } /** * This method initializes btnChangeColor * @return javax.swing.JButton * @uml.property name="btnChangeColor" */ private JButton getBtnChangeColor() { if (btnChangeColor == null) { btnChangeColor = new JButton(); btnChangeColor.setPreferredSize(new Dimension(86, 20)); btnChangeColor.setText(""); btnChangeColor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { ChangeColor(); } }); } return btnChangeColor; } /** * This method initializes btnSelectVehicleTypes * @return javax.swing.JButton * @uml.property name="btnSelectVehicleTypes" */ private JButton getBtnSelectVehicleTypes() { if (btnSelectVehicleTypes == null) { btnSelectVehicleTypes = new JButton(); btnSelectVehicleTypes.setPreferredSize(new Dimension(150, 20)); btnSelectVehicleTypes.setIcon(new ImageIcon(getClass().getResource("/resources/icons/vehicletypes.png"))); btnSelectVehicleTypes.setText("Vehicle types..."); btnSelectVehicleTypes.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { SelectVehicleTypes(); } }); } return btnSelectVehicleTypes; } /** * This method initializes chkDirectionIn * @return javax.swing.JCheckBox * @uml.property name="chkDirectionIn" */ private JCheckBox getChkDirectionIn() { if (chkDirectionIn == null) { chkDirectionIn = new JCheckBox(); chkDirectionIn.setText("Incoming"); chkDirectionIn.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { DisableEnableIncomingControls(true); currentHotSpot.setDirectionIn(true); } else { DisableEnableIncomingControls(false); currentHotSpot.setDirectionIn(false); } } }); } return chkDirectionIn; } /** * This method initializes chkDirectionOut * @return javax.swing.JCheckBox * @uml.property name="chkDirectionOut" */ private JCheckBox getChkDirectionOut() { if (chkDirectionOut == null) { chkDirectionOut = new JCheckBox(); chkDirectionOut.setText("Outgoing"); chkDirectionOut.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { DisableEnableOutgoingControls(true); currentHotSpot.setDirectionOut(true); } else { DisableEnableOutgoingControls(false); currentHotSpot.setDirectionOut(false); } } }); } return chkDirectionOut; } /** * This method initializes rbIncomingTypeArrival * @return javax.swing.JRadioButton * @uml.property name="rbIncomingTypeArrival" */ private JRadioButton getRbIncomingTypeArrival() { if (rbIncomingTypeArrival == null) { rbIncomingTypeArrival = new JRadioButton(); rbIncomingTypeArrival.setText("Time of arrival to destination"); rbIncomingTypeArrival.setEnabled(false); rbIncomingTypeArrival.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { currentHotSpot.setDirectionInType(HotSpot.DirectionInTimeType.TimeOfArrivalToDestination); } else { currentHotSpot.setDirectionInType(HotSpot.DirectionInTimeType.TimeOfDepartureFromSource); } } }); } return rbIncomingTypeArrival; } /** * This method initializes rbIncomingTypeDeparture * @return javax.swing.JRadioButton * @uml.property name="rbIncomingTypeDeparture" */ private JRadioButton getRbIncomingTypeDeparture() { if (rbIncomingTypeDeparture == null) { rbIncomingTypeDeparture = new JRadioButton(); rbIncomingTypeDeparture.setText("Time of departure from source"); rbIncomingTypeDeparture.setEnabled(false); rbIncomingTypeDeparture.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { currentHotSpot.setDirectionInType(HotSpot.DirectionInTimeType.TimeOfDepartureFromSource); } else { currentHotSpot.setDirectionInType(HotSpot.DirectionInTimeType.TimeOfArrivalToDestination); } } }); } return rbIncomingTypeDeparture; } /** * This method initializes spnNumberOfVehicles * @return javax.swing.JSpinner * @uml.property name="spnNumberOfVehicles" */ private JSpinner getSpnNumberOfVehicles() { if (spnNumberOfVehicles == null) { spnNumberOfVehicles = new JSpinner(); spnNumberOfVehicles.setPreferredSize(new Dimension(70, 20)); spnNumberOfVehicles.setModel(new SpinnerNumberModel(1, 1, 1000000, 1)); spnNumberOfVehicles.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { currentHotSpot.setNumberOfVehicles((Integer) spnNumberOfVehicles.getValue()); } }); } return spnNumberOfVehicles; } /** * This method initializes steIncomingBeginTime * @return ui.SimTimeEdit * @uml.property name="steIncomingBeginTime" */ private SimTimeEdit getSteIncomingBeginTime() { if (steIncomingBeginTime == null) { steIncomingBeginTime = new SimTimeEdit(); steIncomingBeginTime.setEnabled(false); steIncomingBeginTime.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { currentHotSpot.setDirectionInBeginTime(steIncomingBeginTime.getValue()); } }); } return steIncomingBeginTime; } /** * This method initializes steIncomingEndTime * @return ui.SimTimeEdit * @uml.property name="steIncomingEndTime" */ private SimTimeEdit getSteIncomingEndTime() { if (steIncomingEndTime == null) { steIncomingEndTime = new SimTimeEdit(); steIncomingEndTime.setEnabled(false); steIncomingEndTime.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { currentHotSpot.setDirectionInEndTime(steIncomingEndTime.getValue()); } }); } return steIncomingEndTime; } /** * This method initializes steOutgoingBeginTime * @return ui.SimTimeEdit * @uml.property name="steOutgoingBeginTime" */ private SimTimeEdit getSteOutgoingBeginTime() { if (steOutgoingBeginTime == null) { steOutgoingBeginTime = new SimTimeEdit(); steOutgoingBeginTime.setEnabled(false); steOutgoingBeginTime.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { currentHotSpot.setDirectionOutBeginTime(steOutgoingBeginTime.getValue()); } }); } return steOutgoingBeginTime; } /** * This method initializes steOutgoingEndTime * @return ui.SimTimeEdit * @uml.property name="steOutgoingEndTime" */ private SimTimeEdit getSteOutgoingEndTime() { if (steOutgoingEndTime == null) { steOutgoingEndTime = new SimTimeEdit(); steOutgoingEndTime.setEnabled(false); steOutgoingEndTime.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { currentHotSpot.setDirectionOutEndTime(steOutgoingEndTime.getValue()); } }); } return steOutgoingEndTime; } /** * This method initializes txtName * @return javax.swing.JTextField * @uml.property name="txtName" */ private JTextField getTxtName() { if (txtName == null) { txtName = new JTextField(); txtName.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent e) { currentHotSpot.setName(txtName.getText()); } }); } return txtName; } /** * This method initializes this * * @return void */ private void initialize() { GridBagConstraints gridBagConstraints4 = new GridBagConstraints(); gridBagConstraints4.gridx = 0; gridBagConstraints4.insets = new Insets(10, 0, 0, 10); gridBagConstraints4.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints4.gridy = 8; lblIncomingBeginTime = new JLabel(); lblIncomingBeginTime.setText("Begin Time:"); lblIncomingBeginTime.setEnabled(false); GridBagConstraints gridBagConstraints33 = new GridBagConstraints(); gridBagConstraints33.gridx = 0; gridBagConstraints33.fill = GridBagConstraints.BOTH; gridBagConstraints33.gridy = 8; GridBagConstraints gridBagConstraints6 = new GridBagConstraints(); gridBagConstraints6.gridx = 1; gridBagConstraints6.anchor = GridBagConstraints.WEST; gridBagConstraints6.gridy = 3; GridBagConstraints gridBagConstraints3 = new GridBagConstraints(); gridBagConstraints3.gridx = 1; gridBagConstraints3.anchor = GridBagConstraints.WEST; gridBagConstraints3.gridy = 11; lblOutIcon = new JLabel(); lblOutIcon.setText(""); lblOutIcon.setIcon(new ImageIcon(getClass().getResource("/resources/icons/hotspotout.png"))); GridBagConstraints gridBagConstraints21 = new GridBagConstraints(); gridBagConstraints21.gridx = 1; gridBagConstraints21.anchor = GridBagConstraints.WEST; gridBagConstraints21.gridy = 5; lblInIcon = new JLabel(); lblInIcon.setText(""); lblInIcon.setIcon(new ImageIcon(getClass().getResource("/resources/icons/hotspotin.png"))); GridBagConstraints gridBagConstraints19 = new GridBagConstraints(); gridBagConstraints19.gridx = 0; gridBagConstraints19.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints19.insets = new Insets(5, 0, 0, 5); gridBagConstraints19.gridy = 13; lblOutgoingEndTime = new JLabel(); lblOutgoingEndTime.setText("End time:"); lblOutgoingEndTime.setEnabled(false); GridBagConstraints gridBagConstraints18 = new GridBagConstraints(); gridBagConstraints18.gridx = 0; gridBagConstraints18.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints18.insets = new Insets(5, 0, 0, 5); gridBagConstraints18.gridy = 12; lblOutgoingBeginTime = new JLabel(); lblOutgoingBeginTime.setText("Begin time:"); lblOutgoingBeginTime.setEnabled(false); GridBagConstraints gridBagConstraints17 = new GridBagConstraints(); gridBagConstraints17.gridx = 0; gridBagConstraints17.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints17.insets = new Insets(5, 0, 0, 10); gridBagConstraints17.gridy = 9; lblIncomingEndTime = new JLabel(); lblIncomingEndTime.setText("End time:"); lblIncomingEndTime.setEnabled(false); GridBagConstraints gridBagConstraints16 = new GridBagConstraints(); gridBagConstraints16.gridx = 0; gridBagConstraints16.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints16.insets = new Insets(10, 0, 0, 5); gridBagConstraints16.gridy = 7; GridBagConstraints gridBagConstraints14 = new GridBagConstraints(); gridBagConstraints14.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints14.gridx = 1; gridBagConstraints14.gridy = 13; gridBagConstraints14.weighty = 1.0D; gridBagConstraints14.insets = new Insets(5, 10, 0, 0); GridBagConstraints gridBagConstraints13 = new GridBagConstraints(); gridBagConstraints13.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints13.gridx = 0; gridBagConstraints13.gridy = 13; gridBagConstraints13.weighty = 1.0D; gridBagConstraints13.insets = new Insets(5, 0, 0, 10); GridBagConstraints gridBagConstraints121 = new GridBagConstraints(); gridBagConstraints121.insets = new Insets(5, 10, 2, 0); gridBagConstraints121.gridy = 12; gridBagConstraints121.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints121.gridx = 1; GridBagConstraints gridBagConstraints11 = new GridBagConstraints(); gridBagConstraints11.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints11.gridx = 0; gridBagConstraints11.gridy = 12; gridBagConstraints11.insets = new Insets(5, 0, 0, 10); GridBagConstraints gridBagConstraints101 = new GridBagConstraints(); gridBagConstraints101.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints101.gridx = 1; gridBagConstraints101.gridy = 9; gridBagConstraints101.insets = new Insets(5, 10, 2, 0); GridBagConstraints gridBagConstraints91 = new GridBagConstraints(); gridBagConstraints91.anchor = GridBagConstraints.NORTHEAST; gridBagConstraints91.gridx = 0; gridBagConstraints91.gridy = 9; gridBagConstraints91.insets = new Insets(5, 0, 0, 10); GridBagConstraints gridBagConstraints81 = new GridBagConstraints(); gridBagConstraints81.insets = new Insets(10, 10, 2, 0); gridBagConstraints81.gridy = 8; gridBagConstraints81.anchor = GridBagConstraints.NORTHWEST; gridBagConstraints81.gridx = 1; GridBagConstraints gridBagConstraints61 = new GridBagConstraints(); gridBagConstraints61.anchor = GridBagConstraints.WEST; gridBagConstraints61.gridx = 0; gridBagConstraints61.gridy = 7; gridBagConstraints61.gridwidth = 2; gridBagConstraints61.insets = new Insets(0, 20, 0, 0); GridBagConstraints gridBagConstraints51 = new GridBagConstraints(); gridBagConstraints51.anchor = GridBagConstraints.WEST; gridBagConstraints51.gridx = 0; gridBagConstraints51.gridy = 6; gridBagConstraints51.weightx = 0.0D; gridBagConstraints51.gridwidth = 2; gridBagConstraints51.insets = new Insets(0, 20, 0, 0); GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); gridBagConstraints2.gridx = 0; gridBagConstraints2.insets = new Insets(0, 10, 0, 0); gridBagConstraints2.anchor = GridBagConstraints.WEST; gridBagConstraints2.gridy = 11; GridBagConstraints gridBagConstraints12 = new GridBagConstraints(); gridBagConstraints12.gridx = 0; gridBagConstraints12.anchor = GridBagConstraints.WEST; gridBagConstraints12.insets = new Insets(0, 10, 0, 0); gridBagConstraints12.gridy = 5; GridBagConstraints gridBagConstraints32 = new GridBagConstraints(); gridBagConstraints32.gridx = 1; gridBagConstraints32.anchor = GridBagConstraints.WEST; gridBagConstraints32.gridy = 1; GridBagConstraints gridBagConstraints41 = new GridBagConstraints(); gridBagConstraints41.gridx = 0; gridBagConstraints41.insets = new Insets(10, 2, 10, 2); gridBagConstraints41.anchor = GridBagConstraints.NORTH; gridBagConstraints41.gridwidth = 2; gridBagConstraints41.gridy = 4; GridBagConstraints gridBagConstraints31 = new GridBagConstraints(); gridBagConstraints31.gridx = 1; gridBagConstraints31.insets = new Insets(2, 0, 2, 10); gridBagConstraints31.fill = GridBagConstraints.BOTH; gridBagConstraints31.gridy = 2; GridBagConstraints gridBagConstraints7 = new GridBagConstraints(); gridBagConstraints7.gridx = 0; gridBagConstraints7.anchor = GridBagConstraints.WEST; gridBagConstraints7.insets = new Insets(0, 10, 0, 0); gridBagConstraints7.gridy = 2; lblColorTitle = new JLabel(); lblColorTitle.setText("Color:"); GridBagConstraints gridBagConstraints5 = new GridBagConstraints(); gridBagConstraints5.gridx = 0; gridBagConstraints5.anchor = GridBagConstraints.WEST; gridBagConstraints5.insets = new Insets(0, 10, 0, 5); gridBagConstraints5.gridy = 1; lblNumberOfVehiclesTitle = new JLabel(); lblNumberOfVehiclesTitle.setText("Number of vehicles:"); GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL; gridBagConstraints1.gridy = 0; gridBagConstraints1.weightx = 1.0; gridBagConstraints1.insets = new Insets(10, 0, 0, 10); gridBagConstraints1.gridx = 1; GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.insets = new Insets(10, 10, 0, 0); gridBagConstraints.gridy = 0; lblNameTitle = new JLabel(); lblNameTitle.setText("Name:"); this.setSize(315, 433); this.setLayout(new GridBagLayout()); this.add(lblNameTitle, gridBagConstraints); this.add(getTxtName(), gridBagConstraints1); this.add(lblNumberOfVehiclesTitle, gridBagConstraints5); this.add(lblColorTitle, gridBagConstraints7); this.add(getBtnChangeColor(), gridBagConstraints31); this.add(getBtnSelectVehicleTypes(), gridBagConstraints41); this.add(getSpnNumberOfVehicles(), gridBagConstraints32); this.add(getChkDirectionIn(), gridBagConstraints12); this.add(getChkDirectionOut(), gridBagConstraints2); this.add(getRbIncomingTypeDeparture(), gridBagConstraints51); this.add(getRbIncomingTypeArrival(), gridBagConstraints61); this.add(getSteIncomingBeginTime(), gridBagConstraints81); this.add(getSteIncomingEndTime(), gridBagConstraints101); this.add(getSteOutgoingBeginTime(), gridBagConstraints121); this.add(getSteOutgoingEndTime(), gridBagConstraints14); this.add(lblInIcon, gridBagConstraints21); this.add(lblOutIcon, gridBagConstraints3); this.add(getChkEnabled(), gridBagConstraints6); this.add(lblIncomingBeginTime, gridBagConstraints4); this.add(lblIncomingEndTime, gridBagConstraints17); this.add(lblOutgoingBeginTime, gridBagConstraints18); this.add(lblOutgoingEndTime, gridBagConstraints19); IncomingTimeTypeGroup.add(rbIncomingTypeArrival); IncomingTimeTypeGroup.add(rbIncomingTypeDeparture); } protected void ChangeColor() { Color newColor = JColorChooser.showDialog(this, "Select flow color", currentHotSpot.getColor()); if (newColor != null) { currentHotSpot.setColor(newColor); btnChangeColor.setBackground(newColor); } } protected void DisableEnableIncomingControls(boolean b) { rbIncomingTypeArrival.setEnabled(b); rbIncomingTypeDeparture.setEnabled(b); lblIncomingBeginTime.setEnabled(b); lblIncomingEndTime.setEnabled(b); steIncomingBeginTime.setEnabled(b); steIncomingEndTime.setEnabled(b); } protected void DisableEnableOutgoingControls(boolean b) { lblOutgoingBeginTime.setEnabled(b); lblOutgoingEndTime.setEnabled(b); steOutgoingBeginTime.setEnabled(b); steOutgoingEndTime.setEnabled(b); } protected void SelectVehicleTypes() { // Create a type selection that contains all the vehicle types of the // project, each with a 0 probability TypeSelection<VehicleType> projectVehicleTypes = new TypeSelection<VehicleType>(Project.getCurrentlyLoadedProject().getVehicleTypes()); // Get a copy of the layer's vehicle types (so that if the user cancels, // the // changes won't be permanent) TypeSelection<VehicleType> hotspotVehicleTypes = new TypeSelection<VehicleType>(currentHotSpot.getVehicleSelection()); // Show the vehicle selection dialog hotspotVehicleTypes.addTypesNotInSelection(projectVehicleTypes); DlgSelectTypes<VehicleType> dlg = new DlgSelectTypes<VehicleType>(hotspotVehicleTypes); dlg.setVisible(true); if (dlg.getAnswer() == JOptionPane.OK_OPTION) { // Remove any types that have 0 probability hotspotVehicleTypes.removeTypesWithZeroPercentage(); // Set the selected types to the layer currentHotSpot.setVehicleSelection(hotspotVehicleTypes); } } /** * This method initializes chkEnabled * @return javax.swing.JCheckBox * @uml.property name="chkEnabled" */ private JCheckBox getChkEnabled() { if (chkEnabled == null) { chkEnabled = new JCheckBox(); chkEnabled.setText("Enabled"); chkEnabled.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { currentHotSpot.setEnabled(chkEnabled.isSelected()); } }); } return chkEnabled; } } // @jve:decl-index=0:visual-constraint="10,10" >>>>>>> origin/abdalla