Revision: 453 http://skycastle.svn.sourceforge.net/skycastle/?rev=453&view=rev Author: zzorn Date: 2008-04-13 03:45:17 -0700 (Sun, 13 Apr 2008) Log Message: ----------- Implemented PanelUi Modified Paths: -------------- trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PanelUi.java trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/TextFieldUi.java trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/example/UiDemo.java Modified: trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PanelUi.java =================================================================== --- trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PanelUi.java 2008-04-13 01:07:40 UTC (rev 452) +++ trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PanelUi.java 2008-04-13 10:45:17 UTC (rev 453) @@ -1,28 +1,106 @@ package org.skycastle.ui; +import org.skycastle.util.ParameterChecker; + import javax.swing.*; +import java.awt.FlowLayout; +import java.util.ArrayList; +import java.util.List; /** * A panel that can hold other UI objects. * * @author Hans Haggstrom */ -public class PanelUi +public final class PanelUi extends UiObject { //====================================================================== + // Private Fields + + private JPanel myPanel; + + private List<UiObject> myUiObjects = new ArrayList<UiObject>( 7 ); + + //====================================================================== // Private Constants private static final long serialVersionUID = 1L; //====================================================================== + // Public Methods + + //---------------------------------------------------------------------- + // Other Public Methods + + /** + * Adds the specified UiObject. + * + * @param addedUiObject should not be null or already added. + */ + public void addUi( final UiObject addedUiObject ) + { + ParameterChecker.checkNotNull( addedUiObject, "addedUiObject" ); + ParameterChecker.checkNotAlreadyContained( addedUiObject, myUiObjects, "myUiObjects" ); + + myUiObjects.add( addedUiObject ); + + addUiObjectToPanel( addedUiObject ); + } + + + /** + * Removes the specified UiObject. + * + * @param removedUi should not be null, and should be present. + */ + public void removeUi( final UiObject removedUi ) + { + ParameterChecker.checkNotNull( removedUi, "removedUi" ); + ParameterChecker.checkContained( removedUi, myUiObjects, "myUiObjects" ); + + myUiObjects.remove( removedUi ); + + removeUiObjectFromPanel( removedUi ); + } + + //====================================================================== // Protected Methods @Override protected JComponent createUi() { - throw new UnsupportedOperationException( "This method has not yet been implemented." ); // IMPLEMENT + myPanel = new JPanel(); + // TODO: Use some better layout manager / system? + myPanel.setLayout( new FlowLayout() ); + + for ( final UiObject uiObject : myUiObjects ) + { + addUiObjectToPanel( uiObject ); + } + + return myPanel; } + //====================================================================== + // Private Methods + + private void addUiObjectToPanel( final UiObject uiObject ) + { + if ( myPanel != null ) + { + myPanel.add( uiObject.getUi() ); + } + } + + + private void removeUiObjectFromPanel( final UiObject uiObject ) + { + if ( myPanel != null ) + { + myPanel.remove( uiObject.getUi() ); + } + } + } Modified: trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/TextFieldUi.java =================================================================== --- trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/TextFieldUi.java 2008-04-13 01:07:40 UTC (rev 452) +++ trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/TextFieldUi.java 2008-04-13 10:45:17 UTC (rev 453) @@ -1,5 +1,6 @@ package org.skycastle.ui; +import org.skycastle.core.GameObjectId; import org.skycastle.util.parameters.ParameterMetadata; import org.skycastle.util.parameters.ParameterValidationException; import org.skycastle.util.parameters.ValidationError; @@ -28,6 +29,15 @@ //====================================================================== // Public Methods + public TextFieldUi() + { + } + + public TextFieldUi( GameObjectId gameObjectId, String propertyIdentifier ) + { + myPropertyReference.setReference( gameObjectId, propertyIdentifier ); + } + public PropertyReference getPropertyReference() { return myPropertyReference; @@ -118,7 +128,9 @@ private void updateValue() { - myTextField.setText( String.valueOf( myPropertyReference.getProperty( getId(), Object.class, " " ) ) ); + myTextField.setText( String.valueOf( myPropertyReference.getProperty( getId(), + Object.class, + " " ) ) ); } } Modified: trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/example/UiDemo.java =================================================================== --- trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/example/UiDemo.java 2008-04-13 01:07:40 UTC (rev 452) +++ trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/example/UiDemo.java 2008-04-13 10:45:17 UTC (rev 453) @@ -5,6 +5,7 @@ import org.skycastle.messaging.MessageListener; import org.skycastle.messaging.updates.property.PropertyChangedMessage; import org.skycastle.ui.ClientUi; +import org.skycastle.ui.PanelUi; import org.skycastle.ui.SwingClientUi; import org.skycastle.ui.TextFieldUi; import org.skycastle.util.parameters.ParameterValidationException; @@ -27,13 +28,12 @@ ClientUi swingClientUi = new SwingClientUi(); - final TextFieldUi textFieldUi = new TextFieldUi(); - - GameObject gameObject = context.createGameObject(); + final GameObject gameObject = context.createGameObject(); try { gameObject.addProperty( "hp", "10", "Hitpoints" ); + gameObject.addProperty( "mana", "5", "Mana points" ); } catch ( ParameterValidationException e ) { @@ -54,8 +54,12 @@ } ); - textFieldUi.getPropertyReference().setReference( gameObject.getId(), "hp" ); - swingClientUi.setRootUi( textFieldUi ); + final TextFieldUi hp = new TextFieldUi( gameObject.getId(), "hp" ); + final TextFieldUi mana = new TextFieldUi( gameObject.getId(), "mana" ); + final PanelUi panelUi = new PanelUi(); + panelUi.addUi( hp ); + panelUi.addUi( mana ); + swingClientUi.setRootUi( panelUi ); swingClientUi.start(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.