Skip to content

Commit

Permalink
add non-localized validAppearances method, comparison
Browse files Browse the repository at this point in the history
code hints for dccSignalHead
  • Loading branch information
silverailscolo committed Oct 2, 2019
1 parent e8bf280 commit d9f625f
Show file tree
Hide file tree
Showing 9 changed files with 134 additions and 109 deletions.
19 changes: 19 additions & 0 deletions java/src/jmri/SignalHead.java
Expand Up @@ -109,8 +109,27 @@ public interface SignalHead extends Signal {
@Override
public void setHeld(boolean newHeld);

/**
* Get an array of appearance indexes valid for the mast type.
*
* @return array of appearance state values available on this mast type
*/
public int[] getValidStates();

/**
* Get an array of non-localized appearance keys valid for the mast type.
* For GUI application consider using (capitalized) {@link #getValidStateNames()}
*
* @return array of translated appearance names available on this mast type
*/
public String[] getValidStateKeys();

/**
* Get an array of localized appearance descriptions valid for the mast type.
* For persistance and comparison consider using {@link #getValidStateKeys()}
*
* @return array of translated appearance names
*/
public String[] getValidStateNames();

}
57 changes: 44 additions & 13 deletions java/src/jmri/implementation/AbstractSignalHead.java
Expand Up @@ -4,6 +4,8 @@
import jmri.SignalHead;
import jmri.Turnout;

import javax.annotation.Nonnull;

/**
* Abstract class providing the basic logic of the SignalHead interface.
*
Expand Down Expand Up @@ -135,7 +137,12 @@ public static int[] getDefaultValidStates() {
}

public static String[] getDefaultValidStateNames() {
return Arrays.copyOf(validStateNames, validStateNames.length);
String[] stateNames = new String[validStateKeys.length];
int i = 0;
for (String stateKey : validStateKeys) {
stateNames[i++] = Bundle.getMessage(stateKey);
}
return stateNames;
}

/**
Expand Down Expand Up @@ -165,25 +172,49 @@ public static String getDefaultStateName(int appearance) {
FLASHGREEN,
FLASHLUNAR
};
private static final String[] validStateNames = new String[]{
Bundle.getMessage("SignalHeadStateDark"),
Bundle.getMessage("SignalHeadStateRed"),
Bundle.getMessage("SignalHeadStateYellow"),
Bundle.getMessage("SignalHeadStateGreen"),
Bundle.getMessage("SignalHeadStateLunar"),
Bundle.getMessage("SignalHeadStateFlashingRed"),
Bundle.getMessage("SignalHeadStateFlashingYellow"),
Bundle.getMessage("SignalHeadStateFlashingGreen"),
Bundle.getMessage("SignalHeadStateFlashingLunar"),};
// private static final String[] validStateNames = new String[]{
// Bundle.getMessage("SignalHeadStateDark"),
// Bundle.getMessage("SignalHeadStateRed"),
// Bundle.getMessage("SignalHeadStateYellow"),
// Bundle.getMessage("SignalHeadStateGreen"),
// Bundle.getMessage("SignalHeadStateLunar"),
// Bundle.getMessage("SignalHeadStateFlashingRed"),
// Bundle.getMessage("SignalHeadStateFlashingYellow"),
// Bundle.getMessage("SignalHeadStateFlashingGreen"),
// Bundle.getMessage("SignalHeadStateFlashingLunar"),};
private static final String[] validStateKeys = new String[]{
"SignalHeadStateDark",
"SignalHeadStateRed",
"SignalHeadStateYellow",
"SignalHeadStateGreen",
"SignalHeadStateLunar",
"SignalHeadStateFlashingRed",
"SignalHeadStateFlashingYellow",
"SignalHeadStateFlashingGreen",
"SignalHeadStateFlashingLunar",};

/**
* @inheritDoc
*/
@Override
public int[] getValidStates() {
return Arrays.copyOf(validStates, validStates.length); // includes int for Lunar
}

/**
* @inheritDoc
*/
@Override
public String[] getValidStateKeys() {
return Arrays.copyOf(validStateKeys, validStateKeys.length); // includes int for Lunar
}

/**
* @inheritDoc
*/
@Override
public String[] getValidStateNames() {
return Arrays.copyOf(validStateNames, validStateNames.length); // includes Lunar
return getDefaultValidStateNames();
}

/**
Expand All @@ -205,7 +236,7 @@ public void vetoableChange(java.beans.PropertyChangeEvent evt) throws java.beans
}

@Override
public String getBeanType() {
public @Nonnull String getBeanType() {
return Bundle.getMessage("BeanNameSignalHead");
}

Expand Down
52 changes: 26 additions & 26 deletions java/src/jmri/implementation/DccSignalHead.java
Expand Up @@ -11,7 +11,7 @@

/**
* This class implements a SignalHead the maps the various appearances values to
* aspect values in the <B>Extended Accessory Decoder Control Packet Format</B>
* aspect values in the <b>Extended Accessory Decoder Control Packet Format</b>
* and outputs that packet to the DCC System via the generic CommandStation
* interface
* <p>
Expand Down Expand Up @@ -48,23 +48,22 @@ public DccSignalHead(String sys) {

void configureHead(String sys) {
//Set the default appearances
appearanceToOutput.put(Integer.valueOf(SignalHead.RED), getDefaultNumberForApperance(SignalHead.RED));
appearanceToOutput.put(Integer.valueOf(SignalHead.YELLOW), getDefaultNumberForApperance(SignalHead.YELLOW));
appearanceToOutput.put(Integer.valueOf(SignalHead.GREEN), getDefaultNumberForApperance(SignalHead.GREEN));
appearanceToOutput.put(Integer.valueOf(SignalHead.LUNAR), getDefaultNumberForApperance(SignalHead.LUNAR));
appearanceToOutput.put(Integer.valueOf(SignalHead.FLASHRED), getDefaultNumberForApperance(SignalHead.FLASHRED));
appearanceToOutput.put(Integer.valueOf(SignalHead.FLASHYELLOW), getDefaultNumberForApperance(SignalHead.FLASHYELLOW));
appearanceToOutput.put(Integer.valueOf(SignalHead.FLASHGREEN), getDefaultNumberForApperance(SignalHead.FLASHGREEN));
appearanceToOutput.put(Integer.valueOf(SignalHead.FLASHLUNAR), getDefaultNumberForApperance(SignalHead.FLASHLUNAR));
appearanceToOutput.put(Integer.valueOf(SignalHead.DARK), getDefaultNumberForApperance(SignalHead.DARK));
appearanceToOutput.put(SignalHead.RED, getDefaultNumberForApperance(SignalHead.RED));
appearanceToOutput.put(SignalHead.YELLOW, getDefaultNumberForApperance(SignalHead.YELLOW));
appearanceToOutput.put(SignalHead.GREEN, getDefaultNumberForApperance(SignalHead.GREEN));
appearanceToOutput.put(SignalHead.LUNAR, getDefaultNumberForApperance(SignalHead.LUNAR));
appearanceToOutput.put(SignalHead.FLASHRED, getDefaultNumberForApperance(SignalHead.FLASHRED));
appearanceToOutput.put(SignalHead.FLASHYELLOW, getDefaultNumberForApperance(SignalHead.FLASHYELLOW));
appearanceToOutput.put(SignalHead.FLASHGREEN, getDefaultNumberForApperance(SignalHead.FLASHGREEN));
appearanceToOutput.put(SignalHead.FLASHLUNAR, getDefaultNumberForApperance(SignalHead.FLASHLUNAR));
appearanceToOutput.put(SignalHead.DARK, getDefaultNumberForApperance(SignalHead.DARK));
//New method seperates the system name and address using $
if (sys.contains("$")) {
dccSignalDecoderAddress = Integer.parseInt(sys.substring(sys.indexOf("$") + 1, sys.length()));
String commandStationPrefix = sys.substring(0, sys.indexOf("$") - 1);
java.util.List<jmri.CommandStation> connList = jmri.InstanceManager.getList(jmri.CommandStation.class);

for (int x = 0; x < connList.size(); x++) {
jmri.CommandStation station = connList.get(x);
for (CommandStation station : connList) {
if (station.getSystemPrefix().equals(commandStationPrefix)) {
c = station;
break;
Expand Down Expand Up @@ -101,7 +100,7 @@ public void setAppearance(int newAppearance) {
updateOutput();

// notify listeners, if any
firePropertyChange("Appearance", Integer.valueOf(oldAppearance), Integer.valueOf(newAppearance));
firePropertyChange("Appearance", oldAppearance, newAppearance);
}
}

Expand All @@ -112,7 +111,7 @@ public void setLit(boolean newLit) {
if (oldLit != newLit) {
updateOutput();
// notify listeners, if any
firePropertyChange("Lit", Boolean.valueOf(oldLit), Boolean.valueOf(newLit));
firePropertyChange("Lit", oldLit, newLit);
}
}

Expand All @@ -129,7 +128,7 @@ public void setHeld(boolean newHeld) {
mHeld = newHeld;
if (oldHeld != newHeld) {
// notify listeners, if any
firePropertyChange("Held", Boolean.valueOf(oldHeld), Boolean.valueOf(newHeld));
firePropertyChange("Held", oldHeld, newHeld);
}
}

Expand All @@ -138,11 +137,11 @@ protected void updateOutput() {
int aspect = getOutputForAppearance(SignalHead.DARK);

if (getLit()) {
Integer app = Integer.valueOf(mAppearance);
Integer app = mAppearance;
if (appearanceToOutput.containsKey(app)) {
aspect = appearanceToOutput.get(app);
} else {
log.error("Unknown appearance " + mAppearance + " displays DARK");
log.error("Unknown appearance {} displays DARK", mAppearance);
}
/* switch( mAppearance ){
case SignalHead.DARK: aspect = 8 ; break;
Expand Down Expand Up @@ -172,9 +171,9 @@ protected void updateOutput() {
}
}

CommandStation c;
private CommandStation c;

boolean useAddressOffSet = false;
private boolean useAddressOffSet = false;

public void useAddressOffSet(boolean boo) {
useAddressOffSet = boo;
Expand All @@ -187,7 +186,7 @@ public boolean useAddressOffSet() {
protected HashMap<Integer, Integer> appearanceToOutput = new HashMap<Integer, Integer>();

public int getOutputForAppearance(int appearance) {
Integer app = Integer.valueOf(appearance);
Integer app = appearance;
if (!appearanceToOutput.containsKey(app)) {
log.error("Trying to get appearance " + appearance + " but it has not been configured");
return -1;
Expand All @@ -196,7 +195,7 @@ public int getOutputForAppearance(int appearance) {
}

public void setOutputForAppearance(int appearance, int number) {
Integer app = Integer.valueOf(appearance);
Integer app = appearance;
if (appearanceToOutput.containsKey(app)) {
log.debug("Appearance " + appearance + " is already defined as " + appearanceToOutput.get(app));
appearanceToOutput.remove(app);
Expand Down Expand Up @@ -229,10 +228,10 @@ public static int getDefaultNumberForApperance(int i) {
}
}

int packetSendCount = 3;
private int packetSendCount = 3;
/**
* Set Number of times the packet should be sent to the track.
* @param count - less than 1 is treated as 1.
* @param count - less than 1 is treated as 1
*/
public void setDccSignalHeadPacketSendCount(int count) {
if (count > 0) {
Expand All @@ -243,18 +242,19 @@ public void setDccSignalHeadPacketSendCount(int count) {
}

/**
* get the number of times the packet should be sent to the track.
* Get the number of times the packet should be sent to the track.
*
* @return the count.
* @return the count
*/
public int getDccSignalHeadPacketSendCount() {
return packetSendCount;
}

int dccSignalDecoderAddress;
private int dccSignalDecoderAddress;

@Override
boolean isTurnoutUsed(Turnout t) {
return false;
}

}
1 change: 1 addition & 0 deletions java/src/jmri/implementation/DefaultSignalHead.java
Expand Up @@ -165,6 +165,7 @@ protected void stopFlash() {
FLASHRED,
FLASHYELLOW,
FLASHGREEN,}; // No int for Lunar

final static private String[] VALID_STATE_NAMES = new String[]{
Bundle.getMessage("SignalHeadStateDark"),
Bundle.getMessage("SignalHeadStateRed"),
Expand Down
4 changes: 2 additions & 2 deletions java/src/jmri/implementation/MergSD2SignalHead.java
Expand Up @@ -332,7 +332,7 @@ public int[] getValidStates() {
case 4:
return Arrays.copyOf(validStates4Aspect, validStates4Aspect.length);
default:
log.warn("Unexpected number of apsects: " + mAspects);
log.warn("Unexpected number of aspects: {}", mAspects);
return Arrays.copyOf(validStates3Aspect, validStates3Aspect.length);
}
}
Expand All @@ -352,7 +352,7 @@ public String[] getValidStateNames() {
case 4:
return Arrays.copyOf(validStateNames4Aspect, validStateNames3Aspect.length);
default:
log.warn("Unexpected number of apsects: " + mAspects);
log.warn("Unexpected number of aspects: {}", mAspects);
return Arrays.copyOf(validStateNames3Aspect, validStateNames3Aspect.length);
}
}
Expand Down
4 changes: 2 additions & 2 deletions java/src/jmri/jmrit/beantable/SignalHeadTableAction.java
Expand Up @@ -213,10 +213,10 @@ public void setValueAt(Object value, int row, int col) {
if (newState == 99) {
if (stateNameList.length == 0) {
newState = SignalHead.DARK;
log.warn("New signal state not found so setting to Dark " + s.getDisplayName());
log.warn("New signal state not found so setting to Dark {}", s.getDisplayName());
} else {
newState = validStateList[0];
log.warn("New signal state not found so setting to the first available " + s.getDisplayName());
log.warn("New signal state not found so setting to the first available {}", s.getDisplayName());
}
}
if (log.isDebugEnabled()) {
Expand Down
20 changes: 10 additions & 10 deletions java/src/jmri/jmrit/display/Editor.java
Expand Up @@ -1933,25 +1933,25 @@ public void actionPerformed(ActionEvent a) {

protected IconAdder getSignalHeadEditor() {
IconAdder editor = new IconAdder("SignalHead");
editor.setIcon(0, Bundle.getMessage("SignalHeadStateRed"),
editor.setIcon(0, "SignalHeadStateRed",
"resources/icons/smallschematics/searchlights/left-red-marker.gif");
editor.setIcon(1, Bundle.getMessage("SignalHeadStateYellow"),
editor.setIcon(1, "SignalHeadStateYellow",
"resources/icons/smallschematics/searchlights/left-yellow-marker.gif");
editor.setIcon(2, Bundle.getMessage("SignalHeadStateGreen"),
editor.setIcon(2, "SignalHeadStateGreen",
"resources/icons/smallschematics/searchlights/left-green-marker.gif");
editor.setIcon(3, Bundle.getMessage("SignalHeadStateDark"),
editor.setIcon(3, "SignalHeadStateDark",
"resources/icons/smallschematics/searchlights/left-dark-marker.gif");
editor.setIcon(4, Bundle.getMessage("SignalHeadStateHeld"),
editor.setIcon(4, "SignalHeadStateHeld",
"resources/icons/smallschematics/searchlights/left-held-marker.gif");
editor.setIcon(5, Bundle.getMessage("SignalHeadStateLunar"),
editor.setIcon(5, "SignalHeadStateLunar",
"resources/icons/smallschematics/searchlights/left-lunar-marker.gif");
editor.setIcon(6, Bundle.getMessage("SignalHeadStateFlashingRed"),
editor.setIcon(6, "SignalHeadStateFlashingRed",
"resources/icons/smallschematics/searchlights/left-flashred-marker.gif");
editor.setIcon(7, Bundle.getMessage("SignalHeadStateFlashingYellow"),
editor.setIcon(7, "SignalHeadStateFlashingYellow",
"resources/icons/smallschematics/searchlights/left-flashyellow-marker.gif");
editor.setIcon(8, Bundle.getMessage("SignalHeadStateFlashingGreen"),
editor.setIcon(8, "SignalHeadStateFlashingGreen",
"resources/icons/smallschematics/searchlights/left-flashgreen-marker.gif");
editor.setIcon(9, Bundle.getMessage("SignalHeadStateFlashingLunar"),
editor.setIcon(9, "SignalHeadStateFlashingLunar",
"resources/icons/smallschematics/searchlights/left-flashlunar-marker.gif");
return editor;
}
Expand Down

0 comments on commit d9f625f

Please sign in to comment.