You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/07/02 15:59:50 UTC

[2/2] git commit: ISIS-455: render CSS for action identifiers

ISIS-455: render CSS for action identifiers

* also a fix for rendering prototype bulk actions


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/5ca7bf71
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/5ca7bf71
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/5ca7bf71

Branch: refs/heads/master
Commit: 5ca7bf71df93921d56702df739973cd67c5223f7
Parents: 956e590
Author: Dan Haywood <da...@apache.org>
Authored: Tue Jul 2 14:55:18 2013 +0100
Committer: Dan Haywood <da...@apache.org>
Committed: Tue Jul 2 14:55:18 2013 +0100

----------------------------------------------------------------------
 .../viewer/wicket/viewer/IsisWicketModule.java  |  2 +-
 .../viewer/wicket/model/links/LinkAndLabel.java |  8 ++++-
 .../additionallinks/AdditionalLinksPanel.java   |  1 +
 .../cssmenu/AppActionsCssMenuLinkFactory.java   |  3 +-
 .../ajaxtable/BulkActionsLinkFactory.java       |  5 ++-
 .../entity/EntityActionLinkFactory.java         |  4 ++-
 .../components/widgets/cssmenu/CssMenuItem.java | 35 ++++++++++++++++----
 .../components/widgets/cssmenu/CssMenuPanel.css |  6 +++-
 .../viewer/wicket/ui/pages/PageAbstract.css     |  2 ++
 .../isis/applib/annotation/MemberGroups.java    | 16 ++++-----
 10 files changed, 60 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/5ca7bf71/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
index b31cce9..971a7d0 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
@@ -47,9 +47,9 @@ import org.apache.isis.viewer.wicket.viewer.settings.WicketViewerSettingsDefault
  *     protected void configure() {
  *         bind(ComponentFactoryRegistrar.class).to(ComponentFactoryRegistrarForMyApp.class);
  *              
+ *         bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("My App");
  *         bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("application.css");
  *         bind(String.class).annotatedWith(Names.named("applicationJs")).toInstance("application.js");
- *         bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("My App");
  *         bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance("Hello, welcome to my app");
  *         bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("MyApp v1.0.0");
  *      }

http://git-wip-us.apache.org/repos/asf/isis/blob/5ca7bf71/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
index 717a528..0b779a5 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
@@ -31,13 +31,15 @@ public class LinkAndLabel implements Serializable {
     private final String disabledReasonIfAny;
     private final boolean blobOrClob;
     private final boolean prototype;
+    private final String actionIdentifier;
 
-    public LinkAndLabel(final AbstractLink link, final String label, String disabledReasonIfAny, final boolean blobOrClob, final boolean prototype) {
+    public LinkAndLabel(final AbstractLink link, final String label, String disabledReasonIfAny, final boolean blobOrClob, final boolean prototype, final String actionIdentifier) {
         this.link = link;
         this.label = label;
         this.disabledReasonIfAny = disabledReasonIfAny;
         this.blobOrClob = blobOrClob;
         this.prototype = prototype;
+        this.actionIdentifier = actionIdentifier;
     }
 
     public AbstractLink getLink() {
@@ -60,4 +62,8 @@ public class LinkAndLabel implements Serializable {
         return prototype;
     }
     
+    public String getActionIdentifier() {
+        return actionIdentifier;
+    }
+    
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/5ca7bf71/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
index 92b7162..68d40b2 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
@@ -82,6 +82,7 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
                 if(linkAndLabel.isPrototype()) {
                     link.add(new CssClassAppender("prototype"));
                 }
+                link.add(new CssClassAppender(linkAndLabel.getActionIdentifier()));
                 viewTitleLabel.add(new CssClassAppender(StringUtils.toLowerDashed(linkAndLabel.getLabel())));
                 link.addOrReplace(viewTitleLabel);
                 item.addOrReplace(link);

http://git-wip-us.apache.org/repos/asf/isis/blob/5ca7bf71/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuLinkFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuLinkFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuLinkFactory.java
index 9e77876..214349c 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuLinkFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuLinkFactory.java
@@ -52,8 +52,9 @@ class AppActionsCssMenuLinkFactory implements CssMenuLinkFactory {
 
         final boolean blobOrClob = CssMenuItem.returnsBlobOrClob(action);
         final boolean prototype = CssMenuItem.isExplorationOrPrototype(action);
+        final String actionIdentifier = CssMenuItem.actionIdentifierFor(action);
         
-        return new LinkAndLabel(link, actionLabel, null, blobOrClob, prototype);
+        return new LinkAndLabel(link, actionLabel, null, blobOrClob, prototype, actionIdentifier);
     }
 
     

http://git-wip-us.apache.org/repos/asf/isis/blob/5ca7bf71/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
index f80c8ef..fac0a17 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/BulkActionsLinkFactory.java
@@ -101,6 +101,9 @@ final class BulkActionsLinkFactory implements CssMenuLinkFactory {
 
         };
         link.add(new JGrowlBehaviour());
-        return new LinkAndLabel(link, objectAction.getName(), null, false, CssMenuItem.isExplorationOrPrototype(objectAction));
+        final boolean explorationOrPrototype = CssMenuItem.isExplorationOrPrototype(objectAction);
+        final String actionIdentifier = CssMenuItem.actionIdentifierFor(objectAction);
+
+        return new LinkAndLabel(link, objectAction.getName(), null, false, explorationOrPrototype, actionIdentifier);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/5ca7bf71/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityActionLinkFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityActionLinkFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityActionLinkFactory.java
index 99335b8..d042e93 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityActionLinkFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityActionLinkFactory.java
@@ -84,7 +84,9 @@ public final class EntityActionLinkFactory implements CssMenuLinkFactory {
 
         final boolean blobOrClob = CssMenuItem.returnsBlobOrClob(action);
         final boolean prototype = CssMenuItem.isExplorationOrPrototype(action);
-        return new LinkAndLabel(link, label, disabledReasonIfAny, blobOrClob, prototype);
+        final String actionIdentifier = CssMenuItem.actionIdentifierFor(action);
+
+        return new LinkAndLabel(link, label, disabledReasonIfAny, blobOrClob, prototype, actionIdentifier);
     }
 
     private AbstractLink createLink(final ObjectAdapterMemento adapterMemento, final ObjectAction action, final String linkId, final ObjectAdapter adapter) {

http://git-wip-us.apache.org/repos/asf/isis/blob/5ca7bf71/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItem.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItem.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItem.java
index 4c566d7..bfd3a09 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItem.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItem.java
@@ -36,6 +36,7 @@ import org.apache.wicket.markup.html.form.SubmitLink;
 import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.wicket.model.Model;
 
+import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.Clob;
@@ -107,7 +108,12 @@ public class CssMenuItem implements Serializable {
             cssMenuItem.setPrototyping(prototype);
             return this;
         }
-        
+
+        public Builder withActionIdentifier(String actionIdentifier) {
+            cssMenuItem.setActionIdentifier(actionIdentifier);
+            return this;
+        }
+
         /**
          * Returns the built {@link CssMenuItem}, associating with
          * {@link #parent(CssMenuItem) parent} (if specified).
@@ -119,6 +125,7 @@ public class CssMenuItem implements Serializable {
             return cssMenuItem;
         }
 
+
     }
 
     private final String name;
@@ -135,6 +142,8 @@ public class CssMenuItem implements Serializable {
 
     static final String ID_SUB_MENU_ITEMS = "subMenuItems";
 
+    private String actionIdentifier;
+
 
 
     /**
@@ -144,9 +153,10 @@ public class CssMenuItem implements Serializable {
         return new Builder(name);
     }
 
-    /**
-     * @param prototype
-     */
+    public void setActionIdentifier(String actionIdentifier) {
+        this.actionIdentifier = actionIdentifier;
+    }
+
     public void setPrototyping(boolean prototype) {
         this.prototype = prototype;
         
@@ -256,8 +266,9 @@ public class CssMenuItem implements Serializable {
         // check if returns blob or clob (if so, then add CSS to suppress veil)
         final boolean blobOrClob = returnsBlobOrClob(objectAction);
         final boolean prototype = isExplorationOrPrototype(objectAction);
+        final String actionIdentifier = actionIdentifierFor(objectAction);
 
-        return newSubMenuItem(actionLabel).link(link).enabled(reasonDisabledIfAny).returnsBlobOrClob(blobOrClob).prototyping(prototype);
+        return newSubMenuItem(actionLabel).link(link).enabled(reasonDisabledIfAny).returnsBlobOrClob(blobOrClob).prototyping(prototype).withActionIdentifier(actionIdentifier);
     }
 
     public static boolean returnsBlobOrClob(final ObjectAction objectAction) {
@@ -276,6 +287,15 @@ public class CssMenuItem implements Serializable {
         return action.getType().isExploration() || action.getType().isPrototype();
     }
 
+    public static String actionIdentifierFor(ObjectAction action) {
+        @SuppressWarnings("unused")
+        final Identifier identifier = action.getIdentifier();
+        
+        final String className = action.getOnType().getShortIdentifier();
+        final String actionId = action.getId();
+        return className+"-"+actionId;
+    }
+
     
     /**
      * Creates a {@link Builder} for a submenu item where the provided {@link CssMenuLinkFactory} is able to provide the target adapter. 
@@ -287,7 +307,7 @@ public class CssMenuItem implements Serializable {
         final AbstractLink link = linkAndLabel.getLink();
         final String actionLabel = linkAndLabel.getLabel();
 
-        return this.newSubMenuItem(actionLabel).link(link);
+        return this.newSubMenuItem(actionLabel).link(link).prototyping(linkAndLabel.isPrototype());
     }
 
     // //////////////////////////////////////////////////////////////
@@ -317,6 +337,8 @@ public class CssMenuItem implements Serializable {
             if(this.prototype) {
                 link.add(new CssClassAppender("prototype"));
             }
+            link.add(new CssClassAppender(this.actionIdentifier));
+            
             // .. and hide label
             Components.permanentlyHide(markupContainer, CssMenuItem.ID_MENU_LABEL);
             return link;
@@ -361,4 +383,5 @@ public class CssMenuItem implements Serializable {
         return IsisContext.getAuthenticationSession();
     }
 
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/5ca7bf71/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuPanel.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuPanel.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuPanel.css
index abe5df2..98d7fec 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuPanel.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuPanel.css
@@ -319,4 +319,8 @@
     color: grey;
     background-color:#FFFFFF;
     cursor: default;
-}
\ No newline at end of file
+}
+
+.entityActions a.prototype span {
+	color: lightblue;
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/5ca7bf71/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
index d988bfe..b2881d4 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
@@ -842,3 +842,5 @@ div#jGrowl div.jGrowl-closer {
     padding-top: 0px;
 }
 
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/5ca7bf71/core/applib/src/main/java/org/apache/isis/applib/annotation/MemberGroups.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/MemberGroups.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/MemberGroups.java
index 9aed671..e643c95 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/MemberGroups.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/MemberGroups.java
@@ -25,26 +25,22 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-/**
- * Indicates that the class has additional facets, and specifies the how to
- * obtain the <tt>FacetFactory</tt> to manufacture them.
- * 
- * <p>
- * At least one named factory (as per {@link #facetFactoryNames()}) or one class
- * factory (as per {@link #facetFactoryClasses()}) should be specified.
- */
 @Inherited
 @Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 public @interface MemberGroups {
 
     /**
-     * Array of group names, as they appear as names in the {@link MemberOrder} annotation.
+     * Names of groups of properties, as they appear as the <tt>name</tt> attribute of the 
+     * {@link MemberOrder} annotation.
      * 
      * <p>
-     * The order in this list determines the order that the groups will be rendered.  By convention
+     * The order in this list determines the order that the property groups will be rendered.  By convention
      * any {@link MemberOrder} that does not have a {@link MemberOrder#name() name} is considered
      * to be in the default group, whose name is hard-coded as <i>General</i>.
+     * 
+     * <p>
+     * In the case of the Wicket viewer, these property groups are rendered down the left hand side.
      */
     String[] value() default {};