[vassalengine-svn-trunk] [vassalengine-svn] SF.net SVN: vassalengine:[4157] VASSAL-src/trunk/src/VA
Brought to you by:
rodneykinney,
uckelman
From: <uck...@us...> - 2008-09-29 19:42:15
|
Revision: 4157 http://vassalengine.svn.sourceforge.net/vassalengine/?rev=4157&view=rev Author: uckelman Date: 2008-09-29 19:41:27 +0000 (Mon, 29 Sep 2008) Log Message: ----------- Merged mkiefte@4106. * Added getLocalizedProperty methods where there were none (and there was a getProperty method). * Fixed getLocalizedProperty methods that did not call super.getLocalizedProperty(). * Hidden decorators jump to innermost GamePiece of hidden. * Summary format for mouse over stack viewers call getLocalizedProperty instead of getProperty. * Property sources return empty string if localized and no property match. Modified Paths: -------------- VASSAL-src/trunk/src/VASSAL/build/module/properties/SumProperties.java VASSAL-src/trunk/src/VASSAL/counters/Footprint.java VASSAL-src/trunk/src/VASSAL/counters/FreeRotator.java VASSAL-src/trunk/src/VASSAL/counters/Hideable.java VASSAL-src/trunk/src/VASSAL/counters/Immobilized.java VASSAL-src/trunk/src/VASSAL/counters/Labeler.java VASSAL-src/trunk/src/VASSAL/counters/Marker.java VASSAL-src/trunk/src/VASSAL/counters/MovementMarkable.java VASSAL-src/trunk/src/VASSAL/counters/Obscurable.java VASSAL-src/trunk/src/VASSAL/counters/PropertySheet.java VASSAL-src/trunk/src/VASSAL/counters/Restricted.java VASSAL-src/trunk/src/VASSAL/tools/FormattedString.java Modified: VASSAL-src/trunk/src/VASSAL/build/module/properties/SumProperties.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/properties/SumProperties.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/build/module/properties/SumProperties.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -25,36 +25,44 @@ /** * For property names of the form sum(name), returns the value of - * the named property summed over a list of pieces + * the named property summed over a list of pieces. + * * @author rkinney - * */ public class SumProperties implements PropertySource { protected Collection<GamePiece> pieces; - public SumProperties(Collection<GamePiece> pieces) { this.pieces = pieces; } public Object getProperty(Object key) { Object value = null; - String keyString = key.toString(); + final String keyString = key.toString(); if (keyString.startsWith("sum(") && keyString.endsWith(")")) { - String propertyName = keyString.substring(4,keyString.length()-1); + final String propertyName = keyString.substring(4,keyString.length()-1); int sum = 0; + boolean indeterminate = false; for (GamePiece p : pieces) { - final Object val = p.getProperty(propertyName); + final Object val = p.getLocalizedProperty(propertyName); if (val != null) { try { sum += Integer.parseInt(val.toString()); } catch (NumberFormatException e) { - // Treat non-numeric values as zero } } + else { + indeterminate = true; + } } - value = String.valueOf(sum); + + if (sum == 0 && indeterminate) { + value = "?"; + } + else { + value = String.valueOf(sum) + (indeterminate ? "+?" : ""); + } } else if (pieces.size() > 0) { value = pieces.iterator().next().getProperty(key); Modified: VASSAL-src/trunk/src/VASSAL/counters/Footprint.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Footprint.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/counters/Footprint.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -212,10 +212,18 @@ } } + @Override + public Object getLocalizedProperty(Object key) { + if (Properties.MOVED.equals(key)) { + final Object value = piece.getProperty(key); + return value == null ? super.getProperty(key) : value; + } + return super.getLocalizedProperty(key); + } + public Object getProperty(Object key) { - /* If this piece has a real MovementMarkable trait, - * use it to store the MOVED status - */ + // If this piece has a real MovementMarkable trait, + // use it to store the MOVED status if (Properties.MOVED.equals(key)) { final Object value = piece.getProperty(key); return value == null ? super.getProperty(key) : value; @@ -227,7 +235,6 @@ * setMoved is called with an argument of true each time the piece is moved. * The argument is false when the unit is marked as not moved. */ - public void setMoved(boolean justMoved) { if (justMoved) { recordCurrentPosition(); Modified: VASSAL-src/trunk/src/VASSAL/counters/FreeRotator.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/FreeRotator.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/counters/FreeRotator.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -502,11 +502,24 @@ super.setProperty(key, val); } + @Override + public Object getLocalizedProperty(Object key) { + if ((name + FACING).equals(key)) { + return String.valueOf(angleIndex + 1); + } + else if ((name + DEGREES).equals(key)) { + return String.valueOf((int) (Math.abs(validAngles[angleIndex]))); + } + else { + return super.getLocalizedProperty(key); + } + } + public Object getProperty(Object key) { - if ((name+FACING).equals(key)) { + if ((name + FACING).equals(key)) { return String.valueOf(angleIndex + 1); } - else if ((name+DEGREES).equals(key)) { + else if ((name + DEGREES).equals(key)) { return String.valueOf((int) (Math.abs(validAngles[angleIndex]))); } else { Modified: VASSAL-src/trunk/src/VASSAL/counters/Hideable.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Hideable.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/counters/Hideable.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -67,6 +67,29 @@ } } + @Override + public Object getLocalizedProperty(Object key) { + if (invisibleToMe()) { + return ((BasicPiece) Decorator.getInnermost(this)).getLocalizedPublicProperty(key); + } + else if (HIDDEN_BY.equals(key)) { + return hiddenBy; + } + else if (Properties.INVISIBLE_TO_ME.equals(key)) { + return invisibleToMe() ? Boolean.TRUE : Boolean.FALSE; + } + else if (Properties.INVISIBLE_TO_OTHERS.equals(key)) { + return invisibleToOthers() ? Boolean.TRUE : Boolean.FALSE; + } + else if (Properties.VISIBLE_STATE.equals(key)) { + return String.valueOf(invisibleToOthers()) + + invisibleToMe() + piece.getProperty(key); + } + else { + return super.getLocalizedProperty(key); + } + } + public Object getProperty(Object key) { if (HIDDEN_BY.equals(key)) { return hiddenBy; @@ -78,7 +101,8 @@ return invisibleToOthers() ? Boolean.TRUE : Boolean.FALSE; } else if (Properties.VISIBLE_STATE.equals(key)) { - return String.valueOf(invisibleToOthers())+invisibleToMe()+piece.getProperty(key); + return String.valueOf(invisibleToOthers()) + + invisibleToMe() + piece.getProperty(key); } else { return super.getProperty(key); Modified: VASSAL-src/trunk/src/VASSAL/counters/Immobilized.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Immobilized.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/counters/Immobilized.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -162,6 +162,31 @@ return null; } + @Override + public Object getLocalizedProperty(Object key) { + if (Properties.NO_STACK.equals(key)) { + return Boolean.TRUE; + } + else if (Properties.TERRAIN.equals(key)) { + return Boolean.valueOf(moveIfSelected || neverMove); + } + else if (Properties.IGNORE_GRID.equals(key)) { + return Boolean.valueOf(ignoreGrid); + } + else if (Properties.SELECT_EVENT_FILTER.equals(key)) { + return selectFilter; + } + else if (Properties.MOVE_EVENT_FILTER.equals(key)) { + return moveFilter; + } + else if (Properties.NON_MOVABLE.equals(key)) { + return neverMove; + } + else { + return super.getLocalizedProperty(key); + } + } + public Object getProperty(Object key) { if (Properties.NO_STACK.equals(key)) { return Boolean.TRUE; Modified: VASSAL-src/trunk/src/VASSAL/counters/Labeler.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Labeler.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/counters/Labeler.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -137,6 +137,19 @@ propertyName = st.nextToken("TextLabel"); } + @Override + public Object getLocalizedProperty(Object key) { + if (key.equals(propertyName)) { + return getLocalizedLabel(); + } + else if (Properties.VISIBLE_STATE.equals(key)) { + return getLocalizedLabel() + piece.getProperty(key); + } + else { + return super.getLocalizedProperty(key); + } + } + public Object getProperty(Object key) { if (key.equals(propertyName)) { return getLabel(); Modified: VASSAL-src/trunk/src/VASSAL/counters/Marker.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Marker.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/counters/Marker.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -19,6 +19,8 @@ package VASSAL.counters; import java.awt.Component; +import java.awt.Graphics; +import java.awt.Rectangle; import java.awt.Shape; import java.util.Arrays; import java.util.ArrayList; @@ -31,10 +33,11 @@ import VASSAL.tools.SequenceEncoder; /** - * A generic Decorator that retains in its state the value of a - * property. That is, if setProperty() is invoked with a key that's one of - * getKeys(), the String value of that property will be reflected in - * the myGetState() method. */ + * A generic Decorator that retains in its state the value of a property. + * That is, if {@link #setProperty(Object,Object)} is invoked with a key + * that is one of {@link #getKeys()}, the <code>String</code> value of that + * property will be reflected in the {@link #myGetState(String)} method. + */ public class Marker extends Decorator implements EditablePiece { public static final String ID = "mark;"; @@ -66,7 +69,7 @@ Arrays.fill(values, ""); } - public void draw(java.awt.Graphics g, int x, int y, java.awt.Component obs, double zoom) { + public void draw(Graphics g, int x, int y, Component obs, double zoom) { piece.draw(g, x, y, obs, zoom); } @@ -74,7 +77,7 @@ return piece.getName(); } - public java.awt.Rectangle boundingBox() { + public Rectangle boundingBox() { return piece.boundingBox(); } @@ -92,7 +95,12 @@ } public Object getLocalizedProperty(Object key) { - return getProperty(key); + for (int i = 0; i < keys.length; ++i) { + if (keys[i].equals(key)) { + return values[i]; + } + } + return super.getLocalizedProperty(key); } public void setProperty(Object key, Object value) { Modified: VASSAL-src/trunk/src/VASSAL/counters/MovementMarkable.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/MovementMarkable.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/counters/MovementMarkable.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -166,6 +166,16 @@ return HelpFile.getReferenceManualPage("MarkMoved.htm"); } + @Override + public Object getLocalizedProperty(Object key) { + if (Properties.MOVED.equals(key)) { + return isMoved() ? Boolean.TRUE : Boolean.FALSE; + } + else { + return super.getLocalizedProperty(key); + } + } + public Object getProperty(Object key) { if (Properties.MOVED.equals(key)) { return isMoved() ? Boolean.TRUE : Boolean.FALSE; Modified: VASSAL-src/trunk/src/VASSAL/counters/Obscurable.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Obscurable.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/counters/Obscurable.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -280,6 +280,18 @@ if (obscuredToMe()) { return ((BasicPiece) Decorator.getInnermost(this)).getLocalizedPublicProperty(key); } + else if (Properties.OBSCURED_TO_ME.equals(key)) { + return Boolean.valueOf(obscuredToMe()); + } + else if (Properties.OBSCURED_TO_OTHERS.equals(key)) { + return Boolean.valueOf(obscuredToOthers()); + } + else if (ID.equals(key)) { + return obscuredBy; + } + else if (Properties.VISIBLE_STATE.equals(key)) { + return myGetState()+isPeeking()+piece.getProperty(key); + } else { return super.getLocalizedProperty(key); } Modified: VASSAL-src/trunk/src/VASSAL/counters/PropertySheet.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/PropertySheet.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/counters/PropertySheet.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -560,16 +560,17 @@ } } + @Override + public Object getLocalizedProperty(Object key) { + final Object value = properties.get(key); + return value == null ? super.getLocalizedProperty(key) : value; + } + public Object getProperty(Object key) { final Object value = properties.get(key); return value == null ? super.getProperty(key) : value; } - public Object getLocalizedProperty(Object key) { - final Object value = properties.get(key); - return value == null ? super.getLocalizedProperty(key) : value; - } - public String getDescription() { return "Property Sheet"; } @@ -582,8 +583,10 @@ return new Ed(this); } - - /** A generic panel for editing unit traits. Not directly related to "PropertySheets" **/ + /** + * A generic panel for editing unit traits. + * Not directly related to "PropertySheets". + */ static class PropertyPanel extends JPanel implements FocusListener { private static final long serialVersionUID = 1L; Modified: VASSAL-src/trunk/src/VASSAL/counters/Restricted.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Restricted.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/counters/Restricted.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -154,6 +154,16 @@ } } + @Override + public Object getLocalizedProperty(Object key) { + if (Properties.RESTRICTED.equals(key)) { + return Boolean.valueOf(isRestricted()); + } + else { + return super.getLocalizedProperty(key); + } + } + public Object getProperty(Object key) { if (Properties.RESTRICTED.equals(key)) { return Boolean.valueOf(isRestricted()); Modified: VASSAL-src/trunk/src/VASSAL/tools/FormattedString.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/tools/FormattedString.java 2008-09-29 19:13:14 UTC (rev 4156) +++ VASSAL-src/trunk/src/VASSAL/tools/FormattedString.java 2008-09-29 19:41:27 UTC (rev 4157) @@ -78,6 +78,7 @@ public String getText(PropertySource ps) { return getText(ps, false); } + public String getLocalizedText(PropertySource ps) { return getText(ps, true); } @@ -88,7 +89,7 @@ new SequenceEncoder.Decoder(formatString, '$'); boolean isProperty = true; while (st.hasMoreTokens()) { - String token = st.nextToken(); + final String token = st.nextToken(); isProperty = !isProperty; if (token.length() > 0) { /* @@ -98,17 +99,18 @@ buffer.append(token); } else if (props.containsKey(token)) { - String value = props.get(token); + final String value = props.get(token); if (value != null) { buffer.append(value); } } else if (ps != null) { - Object value = localized ? ps.getLocalizedProperty(token) : ps.getProperty(token); + final Object value = + localized ? ps.getLocalizedProperty(token) : ps.getProperty(token); if (value != null) { buffer.append(value.toString()); } - else { + else if (!localized) { buffer.append(token); } } @@ -128,5 +130,4 @@ public void setDefaultProperties(PropertySource defaultProperties) { this.defaultProperties = defaultProperties; } - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ vassalengine-svn mailing list vas...@li... https://lists.sourceforge.net/lists/listinfo/vassalengine-svn |