[skycastle-commits] SF.net SVN: skycastle: [453] trunk/skycastle/modules/ui/src/main/java/org/ skycastle/ui

  • From: zzorn@xxxxxxxxxxxxxxxxxxxxx
  • To: skycastle-commits@xxxxxxxxxxxxx
  • Date: Sun, 13 Apr 2008 03:45:18 -0700

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.

Other related posts:

  • » [skycastle-commits] SF.net SVN: skycastle: [453] trunk/skycastle/modules/ui/src/main/java/org/ skycastle/ui