Example #1
0
  // 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();
    }
  }
Example #2
0
  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());
    }
  }
Example #3
0
  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"));
  }