001package jmri.jmrit.operations.rollingstock.engines; 002 003import org.jdom2.Element; 004 005import jmri.InstanceManager; 006import jmri.InstanceManagerAutoDefault; 007import jmri.jmrit.operations.rollingstock.RollingStockAttribute; 008 009/** 010 * Represents the types of engines a railroad can have. 011 * 012 * @author Daniel Boudreau Copyright (C) 2008, 2014 013 */ 014public class EngineTypes extends RollingStockAttribute implements InstanceManagerAutoDefault { 015 016 private static final String TYPES = Bundle.getMessage("engineDefaultTypes"); 017 018 // for property change 019 public static final String ENGINETYPES_CHANGED_PROPERTY = "EngineTypesLength"; // NOI18N 020 public static final String ENGINETYPES_NAME_CHANGED_PROPERTY = "EngineTypesName"; // NOI18N 021 022 public EngineTypes() { 023 } 024 025 @Override 026 protected String getDefaultNames() { 027 return TYPES; 028 } 029 030 @Override 031 public void addName(String type) { 032 super.addName(type); 033 setDirtyAndFirePropertyChange(ENGINETYPES_CHANGED_PROPERTY, null, type); 034 } 035 036 @Override 037 public void deleteName(String type) { 038 super.deleteName(type); 039 setDirtyAndFirePropertyChange(ENGINETYPES_CHANGED_PROPERTY, type, null); 040 } 041 042 public void replaceName(String oldName, String newName) { 043 super.addName(newName); 044 setDirtyAndFirePropertyChange(ENGINETYPES_NAME_CHANGED_PROPERTY, oldName, newName); 045 // need to keep old name so location manager can replace properly 046 super.deleteName(oldName); 047 } 048 049 /** 050 * Create an XML element to represent this Entry. This member has to remain 051 * synchronized with the detailed DTD in operations-engines.dtd. 052 * @param root The common Element for operations-engines.dtd. 053 * 054 */ 055 public void store(Element root) { 056 store(root, Xml.TYPES, Xml.TYPE); 057 } 058 059 public void load(Element root) { 060 load(root, Xml.TYPES, Xml.TYPE, Xml.ENGINE_TYPES); 061 } 062 063 protected void setDirtyAndFirePropertyChange(String p, Object old, Object n) { 064 // Set dirty 065 InstanceManager.getDefault(EngineManagerXml.class).setDirty(true); 066 super.firePropertyChange(p, old, n); 067 } 068 069// private final static Logger log = LoggerFactory.getLogger(EngineTypes.class); 070 071}