001package jmri.jmrit.operations.rollingstock.engines;
002
003import java.awt.Dimension;
004import java.util.List;
005import java.util.ResourceBundle;
006
007import jmri.InstanceManager;
008import jmri.jmrit.operations.OperationsXml;
009import jmri.jmrit.operations.rollingstock.RollingStockSetFrame;
010import jmri.jmrit.operations.setup.Control;
011import jmri.util.swing.JmriJOptionPane;
012
013/**
014 * Frame for user to place engine on the layout
015 *
016 * @author Dan Boudreau Copyright (C) 2008, 2010
017 */
018public class EngineSetFrame extends RollingStockSetFrame<Engine> {
019
020    protected static final ResourceBundle rb = ResourceBundle
021            .getBundle("jmri.jmrit.operations.rollingstock.engines.JmritOperationsEnginesBundle");
022
023    EngineManager manager = InstanceManager.getDefault(EngineManager.class);
024    EngineManagerXml managerXml = InstanceManager.getDefault(EngineManagerXml.class);
025
026    Engine _engine;
027
028    public EngineSetFrame() {
029        super(Bundle.getMessage("TitleEngineSet"));
030    }
031
032    @Override
033    public void initComponents() {
034        super.initComponents();
035
036        // build menu
037        addHelpMenu("package.jmri.jmrit.operations.Operations_LocomotivesSet", true); // NOI18N
038
039        // disable location unknown, final destination fields
040        locationUnknownCheckBox.setVisible(false);
041        paneOptional.setVisible(false);
042        pFinalDestination.setVisible(false);
043        autoTrainCheckBox.setVisible(false);
044
045        // tool tips
046        outOfServiceCheckBox.setToolTipText(getRb().getString("TipLocoOutOfService"));
047
048        initMinimumSize(new Dimension(Control.panelWidth500, Control.panelHeight300));
049    }
050
051    public void load(Engine engine) {
052        _engine = engine;
053        super.load(engine);
054    }
055
056    @Override
057    protected ResourceBundle getRb() {
058        return rb;
059    }
060
061    @Override
062    protected boolean save() {
063        if (!super.save()) {
064            return false;
065        }
066        // check for train change
067        checkTrain(_engine);
068        // is this engine part of a consist?
069        if (_engine.getConsist() != null) {
070            if (JmriJOptionPane.showConfirmDialog(this, Bundle.getMessage("engineInConsist"),
071                    Bundle.getMessage("enginePartConsist"), JmriJOptionPane.YES_NO_OPTION) == JmriJOptionPane.YES_OPTION) {
072                // convert cars list to rolling stock list
073                List<Engine> list = _engine.getConsist().getEngines();
074                if (!updateGroup(list)) {
075                    return false;
076                }
077            }
078        }
079        OperationsXml.save();
080        return true;
081    }
082
083//    private final static Logger log = LoggerFactory.getLogger(EngineSetFrame.class);
084}