public void propertyChange(java.beans.PropertyChangeEvent e) { if (Control.showProperty) { log.debug( "Property change: ({}) old: ({}) new: ({})", e.getPropertyName(), e.getOldValue(), e.getNewValue()); } if (e.getPropertyName().equals(CarRoads.CARROADS_CHANGED_PROPERTY)) { CarRoads.instance().updateComboBox(roadComboBox); if (_engine != null) { roadComboBox.setSelectedItem(_engine.getRoadName()); } } if (e.getPropertyName().equals(EngineModels.ENGINEMODELS_CHANGED_PROPERTY)) { engineModels.updateComboBox(modelComboBox); if (_engine != null) { modelComboBox.setSelectedItem(_engine.getModel()); } } if (e.getPropertyName().equals(EngineTypes.ENGINETYPES_CHANGED_PROPERTY)) { engineTypes.updateComboBox(typeComboBox); if (_engine != null) { typeComboBox.setSelectedItem(_engine.getTypeName()); } } if (e.getPropertyName().equals(EngineLengths.ENGINELENGTHS_CHANGED_PROPERTY)) { engineLengths.updateComboBox(lengthComboBox); if (_engine != null) { lengthComboBox.setSelectedItem(_engine.getLength()); } } if (e.getPropertyName().equals(EngineManager.CONSISTLISTLENGTH_CHANGED_PROPERTY)) { manager.updateConsistComboBox(consistComboBox); if (_engine != null) { consistComboBox.setSelectedItem(_engine.getConsistName()); } } if (e.getPropertyName().equals(CarOwners.CAROWNERS_CHANGED_PROPERTY)) { CarOwners.instance().updateComboBox(ownerComboBox); if (_engine != null) { ownerComboBox.setSelectedItem(_engine.getOwner()); } } if (e.getPropertyName().equals(LocationManager.LISTLENGTH_CHANGED_PROPERTY)) { LocationManager.instance().updateComboBox(locationBox); if (_engine != null) { locationBox.setSelectedItem(_engine.getLocation()); } } if (e.getPropertyName().equals(EngineAttributeEditFrame.DISPOSE)) { editActive = false; } }
// Save, Delete, Add, Clear, Calculate buttons public void buttonActionPerformed(java.awt.event.ActionEvent ae) { if (ae.getSource() == saveButton) { // log.debug("engine save button activated"); String roadNum = roadNumberTextField.getText(); if (roadNum.length() > 10) { JOptionPane.showMessageDialog( this, Bundle.getMessage("engineRoadNum"), Bundle.getMessage("engineRoadLong"), JOptionPane.ERROR_MESSAGE); return; } // check to see if engine with road and number already exists Engine engine = manager.getByRoadAndNumber( (String) roadComboBox.getSelectedItem(), roadNumberTextField.getText()); if (engine != null) { if (_engine == null || !engine.getId().equals(_engine.getId())) { JOptionPane.showMessageDialog( this, Bundle.getMessage("engineExists"), Bundle.getMessage("engineCanNotUpdate"), JOptionPane.ERROR_MESSAGE); return; } } // if the road or number changes, the loco needs a new id if (_engine != null && _engine.getRoadName() != null && !_engine.getRoadName().equals(Engine.NONE) && (!_engine.getRoadName().equals(roadComboBox.getSelectedItem()) || !_engine.getNumber().equals(roadNumberTextField.getText()))) { String road = (String) roadComboBox.getSelectedItem(); String number = roadNumberTextField.getText(); manager.changeId(_engine, road, number); _engine.setRoadName(road); _engine.setNumber(number); } addEngine(); /* * all JMRI window position and size are now saved // save frame * size and position manager.setEditFrame(this); */ writeFiles(); if (Setup.isCloseWindowOnSaveEnabled()) { dispose(); } } if (ae.getSource() == deleteButton) { log.debug("engine delete button activated"); if (_engine != null && _engine.getRoadName().equals(roadComboBox.getSelectedItem()) && _engine.getNumber().equals(roadNumberTextField.getText())) { manager.deregister(_engine); _engine = null; // save engine file writeFiles(); } else { Engine e = manager.getByRoadAndNumber( (String) roadComboBox.getSelectedItem(), roadNumberTextField.getText()); if (e != null) { manager.deregister(e); // save engine file writeFiles(); } } } if (ae.getSource() == addButton) { String roadNum = roadNumberTextField.getText(); if (roadNum.length() > 10) { JOptionPane.showMessageDialog( this, Bundle.getMessage("engineRoadNum"), Bundle.getMessage("engineRoadLong"), JOptionPane.ERROR_MESSAGE); return; } Engine e = manager.getByRoadAndNumber( (String) roadComboBox.getSelectedItem(), roadNumberTextField.getText()); if (e != null) { log.info("Can not add, engine already exists"); JOptionPane.showMessageDialog( this, Bundle.getMessage("engineExists"), Bundle.getMessage("engineCanNotUpdate"), JOptionPane.ERROR_MESSAGE); return; } addEngine(); // save engine file writeFiles(); } if (ae.getSource() == clearRoadNumberButton) { roadNumberTextField.setText(""); roadNumberTextField.requestFocus(); } }
private void addEngine() { if (roadComboBox.getSelectedItem() != null && !roadComboBox.getSelectedItem().equals("")) { if (_engine == null || !_engine.getRoadName().equals(roadComboBox.getSelectedItem()) || !_engine.getNumber().equals(roadNumberTextField.getText())) { _engine = manager.newEngine( (String) roadComboBox.getSelectedItem(), roadNumberTextField.getText()); } if (modelComboBox.getSelectedItem() != null) { _engine.setModel((String) modelComboBox.getSelectedItem()); } if (typeComboBox.getSelectedItem() != null) { _engine.setTypeName((String) typeComboBox.getSelectedItem()); } _engine.setBunit(bUnitCheckBox.isSelected()); if (lengthComboBox.getSelectedItem() != null) { _engine.setLength((String) lengthComboBox.getSelectedItem()); } _engine.setBuilt(builtTextField.getText()); if (ownerComboBox.getSelectedItem() != null) { _engine.setOwner((String) ownerComboBox.getSelectedItem()); } if (consistComboBox.getSelectedItem() != null) { if (consistComboBox.getSelectedItem().equals(EngineManager.NONE)) { _engine.setConsist(null); if (_engine.isBunit()) _engine.setBlocking(Engine.B_UNIT_BLOCKING); else _engine.setBlocking(Engine.DEFAULT_BLOCKING_ORDER); } else { _engine.setConsist(manager.getConsistByName((String) consistComboBox.getSelectedItem())); if (_engine.getConsist() != null) { _engine.setBlocking(_engine.getConsist().getSize()); } } } // confirm that weight is a number if (!weightTextField.getText().equals("")) { try { Integer.parseInt(weightTextField.getText()); _engine.setWeightTons(weightTextField.getText()); } catch (Exception e) { JOptionPane.showMessageDialog( this, Bundle.getMessage("engineWeight"), Bundle.getMessage("engineCanNotWeight"), JOptionPane.ERROR_MESSAGE); } } // confirm that horsepower is a number if (!hpTextField.getText().equals("")) { try { Integer.parseInt(hpTextField.getText()); _engine.setHp(hpTextField.getText()); } catch (Exception e) { JOptionPane.showMessageDialog( this, Bundle.getMessage("engineHorsepower"), Bundle.getMessage("engineCanNotHp"), JOptionPane.ERROR_MESSAGE); } } if (locationBox.getSelectedItem() == null) { _engine.setLocation(null, null); } else { if (trackLocationBox.getSelectedItem() == null) { JOptionPane.showMessageDialog( this, Bundle.getMessage("rsFullySelect"), Bundle.getMessage("rsCanNotLoc"), JOptionPane.ERROR_MESSAGE); } else { String status = _engine.setLocation( (Location) locationBox.getSelectedItem(), (Track) trackLocationBox.getSelectedItem()); if (!status.equals(Track.OKAY)) { log.debug("Can't set engine's location because of {}", status); JOptionPane.showMessageDialog( this, MessageFormat.format( Bundle.getMessage("rsCanNotLocMsg"), new Object[] {_engine.toString(), status}), Bundle.getMessage("rsCanNotLoc"), JOptionPane.ERROR_MESSAGE); // does the user want to force the rolling stock to this track? int results = JOptionPane.showOptionDialog( this, MessageFormat.format( Bundle.getMessage("rsForce"), new Object[] { _engine.toString(), (Track) trackLocationBox.getSelectedItem() }), MessageFormat.format(Bundle.getMessage("rsOverride"), new Object[] {status}), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null); if (results == JOptionPane.YES_OPTION) { log.debug("Force rolling stock to track"); _engine.setLocation( (Location) locationBox.getSelectedItem(), (Track) trackLocationBox.getSelectedItem(), true); } } } } _engine.setComment(commentTextField.getText()); _engine.setValue(valueTextField.getText()); _engine.setIdTag((IdTag) rfidComboBox.getSelectedItem()); } }
public void loadEngine(Engine engine) { _engine = engine; if (!CarRoads.instance().containsName(engine.getRoadName())) { String msg = MessageFormat.format( Bundle.getMessage("roadNameNotExist"), new Object[] {engine.getRoadName()}); if (JOptionPane.showConfirmDialog( this, msg, Bundle.getMessage("engineAddRoad"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { CarRoads.instance().addName(engine.getRoadName()); } } roadComboBox.setSelectedItem(engine.getRoadName()); roadNumberTextField.setText(engine.getNumber()); if (!engineModels.containsName(engine.getModel())) { String msg = MessageFormat.format( Bundle.getMessage("modelNameNotExist"), new Object[] {engine.getModel()}); if (JOptionPane.showConfirmDialog( this, msg, Bundle.getMessage("engineAddModel"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { engineModels.addName(engine.getModel()); } } modelComboBox.setSelectedItem(engine.getModel()); if (!engineTypes.containsName(engine.getTypeName())) { String msg = MessageFormat.format( Bundle.getMessage("typeNameNotExist"), new Object[] {engine.getTypeName()}); if (JOptionPane.showConfirmDialog( this, msg, Bundle.getMessage("engineAddType"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { engineTypes.addName(engine.getTypeName()); } } typeComboBox.setSelectedItem(engine.getTypeName()); bUnitCheckBox.setSelected(engine.isBunit()); if (!engineLengths.containsName(engine.getLength())) { String msg = MessageFormat.format( Bundle.getMessage("lengthNameNotExist"), new Object[] {engine.getLength()}); if (JOptionPane.showConfirmDialog( this, msg, Bundle.getMessage("engineAddLength"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { engineLengths.addName(engine.getLength()); } } lengthComboBox.setSelectedItem(engine.getLength()); weightTextField.setText(engine.getWeightTons()); hpTextField.setText(engine.getHp()); locationBox.setSelectedItem(engine.getLocation()); Location l = locationManager.getLocationById(engine.getLocationId()); if (l != null) { l.updateComboBox(trackLocationBox); trackLocationBox.setSelectedItem(engine.getTrack()); } else { trackLocationBox.removeAllItems(); } builtTextField.setText(engine.getBuilt()); if (!CarOwners.instance().containsName(engine.getOwner())) { String msg = MessageFormat.format( Bundle.getMessage("ownerNameNotExist"), new Object[] {engine.getOwner()}); if (JOptionPane.showConfirmDialog( this, msg, Bundle.getMessage("addOwner"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { CarOwners.instance().addName(engine.getOwner()); } } consistComboBox.setSelectedItem(engine.getConsistName()); ownerComboBox.setSelectedItem(engine.getOwner()); valueTextField.setText(engine.getValue()); rfidComboBox.setSelectedItem(engine.getIdTag()); commentTextField.setText(engine.getComment()); setTitle(Bundle.getMessage("TitleEngineEdit")); }