[skycastle-commits] SF.net SVN: skycastle: [450] trunk/skycastle/modules

  • From: zzorn@xxxxxxxxxxxxxxxxxxxxx
  • To: skycastle-commits@xxxxxxxxxxxxx
  • Date: Thu, 10 Apr 2008 05:48:58 -0700

Revision: 450
          http://skycastle.svn.sourceforge.net/skycastle/?rev=450&view=rev
Author:   zzorn
Date:     2008-04-10 05:48:52 -0700 (Thu, 10 Apr 2008)

Log Message:
-----------
Some more UI code

Modified Paths:
--------------
    
trunk/skycastle/modules/core/src/main/java/org/skycastle/core/property/PropertyFacade.java
    
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReference.java
    
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReferenceImpl.java
    trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/TextFieldUi.java
    trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/UiObject.java

Added Paths:
-----------
    
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionButtonUi.java
    
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReference.java
    
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReferenceImpl.java
    
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReferenceListener.java
    
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReferenceListener.java

Removed Paths:
-------------
    
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyListener.java

Modified: 
trunk/skycastle/modules/core/src/main/java/org/skycastle/core/property/PropertyFacade.java
===================================================================
--- 
trunk/skycastle/modules/core/src/main/java/org/skycastle/core/property/PropertyFacade.java
  2008-04-08 08:39:57 UTC (rev 449)
+++ 
trunk/skycastle/modules/core/src/main/java/org/skycastle/core/property/PropertyFacade.java
  2008-04-10 12:48:52 UTC (rev 450)
@@ -15,9 +15,6 @@
         extends Serializable
 {
 
-    //======================================================================
-    // Public Methods
-
     /**
      * @param propertyIdentifier identifier of the property to get.
      * @param defaultValue       the default value of the property.
@@ -37,7 +34,8 @@
      * @throws ParameterValidationException describing the error if there was a
      *                                      problem with setting the property 
value.
      */
-    void setPropertyValue( String propertyIdentifier, Serializable value ) 
throws ParameterValidationException;
+    void setPropertyValue( String propertyIdentifier, Serializable value )
+            throws ParameterValidationException;
 
     /**
      * @param propertyIdentifier the name of the property to check for.

Added: 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionButtonUi.java
===================================================================
--- 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionButtonUi.java   
                            (rev 0)
+++ 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionButtonUi.java   
    2008-04-10 12:48:52 UTC (rev 450)
@@ -0,0 +1,107 @@
+package org.skycastle.ui;
+
+import org.skycastle.core.ActionMetadata;
+import org.skycastle.util.parameters.ParameterSet;
+import org.skycastle.util.parameters.ParameterSetImpl;
+
+import javax.swing.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+/**
+ * An UI object that shows a button, which will invoke a specified action when 
pressed.
+ *
+ * @author Hans Haggstrom
+ */
+// TODO: Option for wether this action button UI should be a toolbutton or 
full button?  Maybe automatially resizing based on availabel space / importance 
/ user preference / layout?
+public class ActionButtonUi
+        extends UiObject
+{
+
+    //======================================================================
+    // Private Fields
+
+    private final ActionReference myActionReference = new 
ActionReferenceImpl();
+
+    private JButton myButton = null;
+    private ParameterSet myParameters = new ParameterSetImpl();
+
+    //======================================================================
+    // Private Constants
+
+    private static final long serialVersionUID = 1L;
+
+    //======================================================================
+    // Protected Methods
+
+    @Override
+    protected JComponent createUi()
+    {
+        myButton = new JButton();
+
+        updateAction();
+
+        myActionReference.addActionReferenceListener( new 
ActionReferenceListener()
+        {
+
+            public void onActionMetadataChanged( final ActionReference 
actionReference )
+            {
+                updateAction();
+            }
+
+
+            public void onActionDisappeared( final ActionReference 
actionReference )
+            {
+                updateAction();
+            }
+
+
+            public void onActionAppeared( final ActionReference 
actionReference )
+            {
+                updateAction();
+            }
+
+        } );
+
+        myButton.addActionListener( new ActionListener()
+        {
+
+            public void actionPerformed( final ActionEvent e )
+            {
+                if ( myActionReference.isAvailable() )
+                {
+                    myActionReference.invokeAction( myParameters );
+                }
+            }
+
+        } );
+
+        return myButton;
+    }
+
+    //======================================================================
+    // Private Methods
+
+    private void updateAction()
+    {
+        if ( myActionReference.isAvailable() )
+        {
+            myButton.setEnabled( true );
+            final ActionMetadata actionMetadata = 
myActionReference.getMetadata();
+
+            myButton.setText( 
actionMetadata.getUiMetadata().getUserReadableName() );
+            myButton.setToolTipText( 
actionMetadata.getUiMetadata().getDescription() );
+
+            // TODO: Set icon based on the icon metadata
+        }
+        else
+        {
+            myButton.setEnabled( false );
+
+            myButton.setText( "" );
+            myButton.setToolTipText( null );
+            myButton.setIcon( null );
+        }
+    }
+
+}

Added: 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReference.java
===================================================================
--- 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReference.java  
                            (rev 0)
+++ 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReference.java  
    2008-04-10 12:48:52 UTC (rev 450)
@@ -0,0 +1,26 @@
+package org.skycastle.ui;
+
+import org.skycastle.core.ActionMetadata;
+import org.skycastle.util.parameters.ParameterSet;
+
+import java.io.Serializable;
+
+/**
+ * @author Hans Haggstrom
+ */
+public interface ActionReference
+        extends Serializable
+{
+
+    void addActionReferenceListener( final ActionReferenceListener listener );
+
+    /**
+     * @return true if this action is currently available.  If false, the 
getMetadata and invoke action methods will throw exceptions if called.
+     */
+    boolean isAvailable();
+
+    ActionMetadata getMetadata();
+
+    void invokeAction( ParameterSet parameters );
+
+}

Added: 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReferenceImpl.java
===================================================================
--- 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReferenceImpl.java
                          (rev 0)
+++ 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReferenceImpl.java
  2008-04-10 12:48:52 UTC (rev 450)
@@ -0,0 +1,44 @@
+package org.skycastle.ui;
+
+import org.skycastle.core.ActionMetadata;
+import org.skycastle.util.parameters.ParameterSet;
+
+/**
+ * @author Hans Haggstrom
+ */
+public class ActionReferenceImpl
+        implements ActionReference
+{
+
+    //======================================================================
+    // Private Constants
+
+    private static final long serialVersionUID = 1L;
+
+    //======================================================================
+    // Public Methods
+
+    //----------------------------------------------------------------------
+    // ActionReference Implementation
+
+    public void addActionReferenceListener( final ActionReferenceListener 
listener )
+    {
+        throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
+    }
+
+    public boolean isAvailable()
+    {
+        throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
+    }
+
+    public ActionMetadata getMetadata()
+    {
+        throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
+    }
+
+    public void invokeAction( final ParameterSet parameters )
+    {
+        throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
+    }
+
+}

Added: 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReferenceListener.java
===================================================================
--- 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReferenceListener.java
                              (rev 0)
+++ 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/ActionReferenceListener.java
      2008-04-10 12:48:52 UTC (rev 450)
@@ -0,0 +1,16 @@
+package org.skycastle.ui;
+
+/**
+ * @author Hans Haggstrom
+ */
+public interface ActionReferenceListener
+{
+
+    void onActionMetadataChanged( ActionReference actionReference );
+
+    void onActionDisappeared( ActionReference actionReference );
+
+
+    void onActionAppeared( ActionReference actionReference );
+
+}

Deleted: 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyListener.java
===================================================================
--- 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyListener.java 
    2008-04-08 08:39:57 UTC (rev 449)
+++ 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyListener.java 
    2008-04-10 12:48:52 UTC (rev 450)
@@ -1,25 +0,0 @@
-package org.skycastle.ui;
-
-import org.skycastle.util.parameters.ParameterMetadata;
-
-/**
- * A listener that is notified of property value changes.
- *
- * @author Hans Haggstrom
- */
-public interface PropertyListener
-{
-    void onPropertyValueChange( Object newValue );
-
-    void onPropertyMetadataChanged( ParameterMetadata newMetadata );
-
-    /**
-     * Called when the property is no longer available.
-     */
-    void onPropertyDissappeared();
-
-    /**
-     * Called when a new property is available.
-     */
-    void onPropertyAppeared( ParameterMetadata parameterMetadata, Object 
parameterValue, boolean editable );
-}

Modified: 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReference.java
===================================================================
--- 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReference.java
    2008-04-08 08:39:57 UTC (rev 449)
+++ 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReference.java
    2008-04-10 12:48:52 UTC (rev 450)
@@ -76,15 +76,16 @@
     /**
      * @param listener a listener that is notified when the value changes.
      */
-    void addChangeListener( PropertyListener listener );
+    void addChangeListener( PropertyReferenceListener listener );
 
     /**
      * @param listener listener to remove.
      */
-    void removeChangeListener( PropertyListener listener );
+    void removeChangeListener( PropertyReferenceListener listener );
 
     /**
      * @return true if the property is editable.
      */
     boolean isEditable();
+
 }

Modified: 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReferenceImpl.java
===================================================================
--- 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReferenceImpl.java
        2008-04-08 08:39:57 UTC (rev 449)
+++ 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReferenceImpl.java
        2008-04-10 12:48:52 UTC (rev 450)
@@ -10,6 +10,18 @@
 public class PropertyReferenceImpl
         implements PropertyReference
 {
+
+    //======================================================================
+    // Private Constants
+
+    private static final long serialVersionUID = 1L;
+
+    //======================================================================
+    // Public Methods
+
+    //----------------------------------------------------------------------
+    // PropertyReference Implementation
+
     public GameObjectId getGameObjectId()
     {
         throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
@@ -51,12 +63,12 @@
         throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
     }
 
-    public void addChangeListener( final PropertyListener listener )
+    public void addChangeListener( final PropertyReferenceListener listener )
     {
         throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
     }
 
-    public void removeChangeListener( final PropertyListener listener )
+    public void removeChangeListener( final PropertyReferenceListener listener 
)
     {
         throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
     }
@@ -65,4 +77,5 @@
     {
         throw new UnsupportedOperationException( "This method has not yet been 
implemented." ); // IMPLEMENT
     }
+
 }

Copied: 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReferenceListener.java
 (from rev 449, 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyListener.java)
===================================================================
--- 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReferenceListener.java
                            (rev 0)
+++ 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/PropertyReferenceListener.java
    2008-04-10 12:48:52 UTC (rev 450)
@@ -0,0 +1,25 @@
+package org.skycastle.ui;
+
+import org.skycastle.util.parameters.ParameterMetadata;
+
+/**
+ * A listener that is notified of property value changes.
+ *
+ * @author Hans Haggstrom
+ */
+public interface PropertyReferenceListener
+{
+    void onPropertyValueChange( Object newValue );
+
+    void onPropertyMetadataChanged( ParameterMetadata newMetadata );
+
+    /**
+     * Called when the property is no longer available.
+     */
+    void onPropertyDissappeared();
+
+    /**
+     * Called when a new property is available.
+     */
+    void onPropertyAppeared( ParameterMetadata parameterMetadata, Object 
parameterValue, boolean editable );
+}

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-08 08:39:57 UTC (rev 449)
+++ trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/TextFieldUi.java  
2008-04-10 12:48:52 UTC (rev 450)
@@ -17,20 +17,25 @@
 public class TextFieldUi
         extends UiObject
 {
+
+    //======================================================================
+    // Private Fields
+
     private final PropertyReference myPropertyReference = new 
PropertyReferenceImpl();
+
     private JTextField myTextField;
 
-    public TextFieldUi()
-    {
-    }
+    //======================================================================
+    // Protected Methods
 
     @Override
     protected JComponent createUi()
     {
         myTextField = new JTextField();
 
-        myPropertyReference.addChangeListener( new PropertyListener()
+        myPropertyReference.addChangeListener( new PropertyReferenceListener()
         {
+
             public void onPropertyValueChange( final Object newValue )
             {
                 // TODO: Only update the text field if it is not currently 
being actively edited?
@@ -38,11 +43,13 @@
                 updateValue( newValue );
             }
 
+
             public void onPropertyMetadataChanged( final ParameterMetadata 
newMetadata )
             {
                 updateDescription( newMetadata );
             }
 
+
             public void onPropertyDissappeared()
             {
                 myTextField.setEditable( false );
@@ -52,6 +59,7 @@
                 updateDescription( null );
             }
 
+
             public void onPropertyAppeared( final ParameterMetadata 
parameterMetadata, final Object parameterValue, final boolean editable )
             {
                 myTextField.setEditable( editable );
@@ -60,12 +68,14 @@
                 updateValue( parameterValue );
                 updateDescription( parameterMetadata );
             }
+
         } );
 
         // TODO: Check for correctness while the field is being edited
 
         myTextField.addActionListener( new ActionListener()
         {
+
             public void actionPerformed( final ActionEvent e )
             {
                 try
@@ -79,14 +89,21 @@
 
                     // Show errors as tooltip, or on other error indicator?
                     final List<ValidationError> validationErrors = 
e1.getValidationErrors();
+
+                    // DEBUG:
+                    e1.printStackTrace();
                 }
             }
+
         } );
 
 
         return myTextField;
     }
 
+    //======================================================================
+    // Private Methods
+
     private void updateDescription( final ParameterMetadata parameterMetadata )
     {
         if ( parameterMetadata != null )
@@ -99,6 +116,7 @@
         }
     }
 
+
     private void updateValue( final Object parameterValue )
     {
         if ( parameterValue != null )
@@ -110,4 +128,5 @@
             myTextField.setText( "" );
         }
     }
+
 }

Modified: 
trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/UiObject.java
===================================================================
--- trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/UiObject.java     
2008-04-08 08:39:57 UTC (rev 449)
+++ trunk/skycastle/modules/ui/src/main/java/org/skycastle/ui/UiObject.java     
2008-04-10 12:48:52 UTC (rev 450)
@@ -11,6 +11,7 @@
  * Typically provides ports for connecting to properties or other GameObjects, 
and showing some data about
  * them, or providing some access to them.
  */
+// TODO: A way to get a label for UIObjects also, to display in tab captions, 
property lists, etc.
 public abstract class UiObject
         extends PojoGameObject
 {


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: [450] trunk/skycastle/modules