You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by mg...@apache.org on 2014/12/18 21:46:14 UTC
isis git commit: ISIS-972 Make it possible to set FontAwesome icons
after the label for action links
Repository: isis
Updated Branches:
refs/heads/master c7fb77052 -> 21170a38b
ISIS-972 Make it possible to set FontAwesome icons after the label for action links
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/21170a38
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/21170a38
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/21170a38
Branch: refs/heads/master
Commit: 21170a38b8fe6005168dbcca7c5e53429ac11e40
Parents: c7fb770
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sat Dec 13 00:12:17 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Dec 18 22:43:33 2014 +0200
----------------------------------------------------------------------
.../viewer/wicket/model/links/LinkAndLabel.java | 9 +++-
.../actionmenu/CssClassFaBehavior.java | 36 ++++++++++++++
.../AdditionalLinksAsDropDownPanel.html | 1 -
.../AdditionalLinksAsListInlinePanel.html | 1 -
.../entityactions/AdditionalLinksPanel.java | 20 ++++----
.../actionmenu/serviceactions/CssMenuItem.java | 27 ++++++++---
.../serviceactions/CssSubMenuItemsPanel.html | 1 -
.../serviceactions/ServiceActionsPanel.html | 2 +-
.../serviceactions/ServiceActionsPanel.java | 7 +--
.../serviceactions/TertiaryActionsPanel.html | 1 -
.../serviceactions/TertiaryActionsPanel.java | 7 +--
.../collection/bulk/BulkActionsLinkFactory.java | 5 +-
.../linkandlabel/ActionLinkFactoryAbstract.java | 3 +-
.../isis/applib/annotation/ActionLayout.java | 10 ++++
.../isis/applib/annotation/CssClassFa.java | 2 +
.../core/metamodel/facets/FacetFactory.java | 4 --
...ssClassFaFacetForActionLayoutAnnotation.java | 9 ++--
...lassFaFacetOnActionFromLayoutProperties.java | 21 ++++++--
.../members/cssclassfa/CssClassFaFacet.java | 8 ++-
.../cssclassfa/CssClassFaFacetAbstract.java | 11 ++++-
.../CssClassFaFacetOnMemberAnnotation.java | 5 +-
.../CssClassFaFacetOnMemberFactory.java | 26 ++++++++--
...ClassFaFacetOnMemberFromConfiguredRegex.java | 5 +-
.../CssClassFaFacetOnMemberFromProperties.java | 8 ++-
.../CssClassFaFacetOnTypeAnnotation.java | 2 +-
.../layoutmetadata/ActionLayoutFacetRepr.java | 3 +-
.../layoutmetadata/CssClassFaFacetRepr.java | 3 +-
.../json/LayoutMetadataReaderFromJson.java | 8 +--
.../metamodel/spec/feature/ObjectAction.java | 5 ++
.../facetprocessor/FacetProcessor.java | 1 -
.../AbstractFacetFactoryJUnit4TestCase.java | 1 +
.../ActionLayoutAnnotationFacetFactoryTest.java | 51 ++++++++++++++++++++
...assFaAnnotationOnMemberFacetFactoryTest.java | 33 ++++++++++++-
.../cssclassfa/CssClassFaFacetAbstractTest.java | 2 +-
...ssClassFacetOnTypeAnnotationFactoryTest.java | 9 +++-
...ClassFaFacetOnTypeAnnotationFactoryTest.java | 32 +++++++++++-
.../src/main/java/dom/todo/ToDoItem.layout.json | 3 +-
37 files changed, 306 insertions(+), 76 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/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 658317c..3939436 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
@@ -46,6 +46,7 @@ public class LinkAndLabel implements Serializable {
private final String actionIdentifier;
private final String cssClass;
private final String cssClassFa;
+ private final ActionLayout.CssClassFaPosition cssClassFaPosition;
private final ActionLayout.Position position;
public LinkAndLabel(
@@ -58,6 +59,7 @@ public class LinkAndLabel implements Serializable {
final String identifier,
final String cssClass,
final String cssClassFa,
+ final ActionLayout.CssClassFaPosition cssClassFaPosition,
final ActionLayout.Position position) {
this.link = link;
this.label = label;
@@ -68,6 +70,7 @@ public class LinkAndLabel implements Serializable {
this.actionIdentifier = identifier;
this.cssClass = cssClass;
this.cssClassFa = cssClassFa;
+ this.cssClassFaPosition = cssClassFaPosition;
this.position = position;
}
@@ -107,6 +110,10 @@ public class LinkAndLabel implements Serializable {
return cssClassFa;
}
+ public ActionLayout.CssClassFaPosition getCssClassFaPosition() {
+ return cssClassFaPosition;
+ }
+
public ActionLayout.Position getPosition() {
return position;
}
@@ -121,4 +128,4 @@ public class LinkAndLabel implements Serializable {
};
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/CssClassFaBehavior.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/CssClassFaBehavior.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/CssClassFaBehavior.java
new file mode 100644
index 0000000..b1c2a77
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/CssClassFaBehavior.java
@@ -0,0 +1,36 @@
+package org.apache.isis.viewer.wicket.ui.components.actionmenu;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.isis.applib.annotation.ActionLayout;
+
+/**
+ * A behavior that prepends or appends the markup needed to show a Font Awesome icon
+ * for a LinkAndLabel
+ */
+public class CssClassFaBehavior extends Behavior {
+
+ private final String cssClassFa;
+ private final ActionLayout.CssClassFaPosition position;
+
+ public CssClassFaBehavior(final String cssClassFa, final ActionLayout.CssClassFaPosition position) {
+ this.cssClassFa = cssClassFa;
+ this.position = position;
+ }
+
+ @Override
+ public void beforeRender(final Component component) {
+ super.beforeRender(component);
+ if (position == null || ActionLayout.CssClassFaPosition.LEFT == position) {
+ component.getResponse().write("<span class=\""+cssClassFa+" fontAwesomeIcon\"></span>");
+ }
+ }
+
+ @Override
+ public void afterRender(final Component component) {
+ if (ActionLayout.CssClassFaPosition.RIGHT == position) {
+ component.getResponse().write("<span class=\""+cssClassFa+" fontAwesomeIcon\"></span>");
+ }
+ super.afterRender(component);
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksAsDropDownPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksAsDropDownPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksAsDropDownPanel.html
index 18a716c..a240cce 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksAsDropDownPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksAsDropDownPanel.html
@@ -32,7 +32,6 @@
<ul class="dropdown-menu dropdown-menu-right" role="menu">
<li wicket:id="additionalLinkItem" class="additionalLinkItem">
<a href="#" wicket:id="additionalLink">
- <span wicket:id="additionalLinkFontAwesome"></span>
<span wicket:id="additionalLinkTitle" class="additionalLinkItem">[link title]</span>
</a>
</li>
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksAsListInlinePanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksAsListInlinePanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksAsListInlinePanel.html
index 9fcacee..7cc41f1 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksAsListInlinePanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksAsListInlinePanel.html
@@ -27,7 +27,6 @@
<ul wicket:id="additionalLinkList" class="additionalLinkList additionalLinkListInline list-unstyled list-inline">
<li wicket:id="additionalLinkItem" class="additionalLinkItem">
<a href="#" wicket:id="additionalLink" class="btn btn-sm btn-default">
- <span wicket:id="additionalLinkFontAwesome"></span>
<span wicket:id="additionalLinkTitle" class="additionalLinkItem">[link title]</span>
</a>
</li>
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
index aa3cec9..5724453 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
@@ -28,9 +28,11 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.commons.lang.StringExtensions;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.links.ListOfLinksModel;
+import org.apache.isis.viewer.wicket.ui.components.actionmenu.CssClassFaBehavior;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
import org.apache.isis.viewer.wicket.ui.util.Components;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
@@ -41,7 +43,6 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
private static final String ID_ADDITIONAL_LINK_LIST = "additionalLinkList";
private static final String ID_ADDITIONAL_LINK_ITEM = "additionalLinkItem";
- private static final String ID_ADDITIONAL_LINK_FONT_AWESOME = "additionalLinkFontAwesome";
private static final String ID_ADDITIONAL_LINK_TITLE = "additionalLinkTitle";
public static final String ID_ADDITIONAL_LINK = "additionalLink";
@@ -102,15 +103,6 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
final AbstractLink link = linkAndLabel.getLink();
- final String cssClassFa = linkAndLabel.getCssClassFa();
- if(Strings.isNullOrEmpty(cssClassFa)) {
- Components.permanentlyHide(link, ID_ADDITIONAL_LINK_FONT_AWESOME);
- } else {
- Label dummy = new Label(ID_ADDITIONAL_LINK_FONT_AWESOME, "");
- link.addOrReplace(dummy);
- dummy.add(new CssClassAppender(cssClassFa));
- }
-
final String itemTitle = first(linkAndLabel.getDisabledReasonIfAny(), linkAndLabel.getDescriptionIfAny());
if(itemTitle != null) {
item.add(new AttributeAppender("title", itemTitle));
@@ -132,6 +124,13 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
viewTitleLabel.add(new CssClassAppender(StringExtensions.asLowerDashed(linkAndLabel.getLabel())));
link.addOrReplace(viewTitleLabel);
+
+ final String cssClassFa = linkAndLabel.getCssClassFa();
+ if(!Strings.isNullOrEmpty(cssClassFa)) {
+ final ActionLayout.CssClassFaPosition position = linkAndLabel.getCssClassFaPosition();
+ viewTitleLabel.add(new CssClassFaBehavior(cssClassFa, position));
+ }
+
item.addOrReplace(link);
}
};
@@ -145,5 +144,4 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
return null;
}
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
index 3e8914d..b06bc95 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
@@ -32,6 +32,7 @@ import org.apache.wicket.markup.html.basic.Label;
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.annotation.ActionLayout;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.ensure.Ensure;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -45,6 +46,7 @@ import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
+import org.apache.isis.viewer.wicket.ui.components.actionmenu.CssClassFaBehavior;
import org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel.ActionLinkFactory;
import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
import org.apache.isis.viewer.wicket.ui.util.Components;
@@ -136,6 +138,11 @@ class CssMenuItem implements Serializable {
return this;
}
+ public Builder withCssClassFaPosition(final ActionLayout.CssClassFaPosition position) {
+ cssMenuItem.setCssClassFaPosition(position);
+ return this;
+ }
+
/**
* Returns the built {@link CssMenuItem}, associating with
* {@link #parent(CssMenuItem) parent} (if specified).
@@ -167,6 +174,7 @@ class CssMenuItem implements Serializable {
private String actionIdentifier;
private String cssClass;
private String cssClassFa;
+ private ActionLayout.CssClassFaPosition cssClassFaPosition;
private String description;
@@ -264,6 +272,14 @@ class CssMenuItem implements Serializable {
return cssClassFa;
}
+ public void setCssClassFaPosition(final ActionLayout.CssClassFaPosition position) {
+ this.cssClassFaPosition = position;
+ }
+
+ public ActionLayout.CssClassFaPosition getCssClassFaPosition() {
+ return cssClassFaPosition;
+ }
+
/**
* Only populated if not {@link #isEnabled() enabled}.
@@ -331,7 +347,8 @@ class CssMenuItem implements Serializable {
.separator(separator)
.withActionIdentifier(ObjectAction.Utils.actionIdentifierFor(objectAction))
.withCssClass(ObjectAction.Utils.cssClassFor(objectAction))
- .withCssClassFa(ObjectAction.Utils.cssClassFaFor(objectAction));
+ .withCssClassFa(ObjectAction.Utils.cssClassFaFor(objectAction))
+ .withCssClassFaPosition(ObjectAction.Utils.cssClassFaPositionFor(objectAction));
return builder;
}
@@ -376,12 +393,8 @@ class CssMenuItem implements Serializable {
link.add(new CssClassAppender(this.actionIdentifier));
String cssClassFa = getCssClassFa();
- if (Strings.isNullOrEmpty(cssClassFa)) {
- Components.permanentlyHide(link, "menuLinkFontAwesome");
- } else {
- Label dummy = new Label("menuLinkFontAwesome", "");
- dummy.add(new CssClassAppender(cssClassFa));
- link.add(dummy);
+ if (!Strings.isNullOrEmpty(cssClassFa)) {
+ label.add(new CssClassFaBehavior(cssClassFa, getCssClassFaPosition()));
}
if(! this.isEnabled()) {
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssSubMenuItemsPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssSubMenuItemsPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssSubMenuItemsPanel.html
index 9c1e14f..d70febc 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssSubMenuItemsPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssSubMenuItemsPanel.html
@@ -23,7 +23,6 @@
<ul class="cssSubMenuItemsPanel">
<li wicket:id="subMenuItems" class="cssSubMenuItem">
<a wicket:id="menuLink" class="btn btn-primary btn-sm">
- <span class="fontAwesomeIcon" wicket:id="menuLinkFontAwesome"></span>
<span class="menuLabel" wicket:id="menuLabel">[menu label]</span>
</a>
<p wicket:id="menuLabel">[menu label]</p>
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html
index 3a6dd5d..d4f9f78 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html
@@ -13,7 +13,7 @@
<wicket:fragment wicket:id="leafItem">
<a class="menuLink" wicket:id="menuLink">
- <span class="fontAwesomeIcon" wicket:id="menuLinkFontAwesome"></span> <span class="menuLinkLabel" wicket:id="menuLinkLabel"></span>
+ <span class="menuLinkLabel" wicket:id="menuLinkLabel"></span>
</a>
</wicket:fragment>
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.java
index b2324cd..396eb48 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.java
@@ -20,7 +20,7 @@ import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.resource.CssResourceReference;
-import org.apache.isis.viewer.wicket.ui.util.Components;
+import org.apache.isis.viewer.wicket.ui.components.actionmenu.CssClassFaBehavior;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
/**
@@ -152,12 +152,9 @@ public class ServiceActionsPanel extends Panel {
String cssClassFa = menuItem.getCssClassFa();
if (Strings.isNullOrEmpty(cssClassFa)) {
- Components.permanentlyHide(subMenuItemLink, "menuLinkFontAwesome");
subMenuItemLink.add(new CssClassAppender("menuLinkSpacer"));
} else {
- Label dummy = new Label("menuLinkFontAwesome", "");
- dummy.add(new CssClassAppender(cssClassFa));
- subMenuItemLink.addOrReplace(dummy);
+ menuItemLabel.add(new CssClassFaBehavior(cssClassFa, menuItem.getCssClassFaPosition()));
}
} else {
leafItem = new Fragment("content", "empty", ServiceActionsPanel.this);
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html
index 3bdef47..5eab260 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.html
@@ -20,7 +20,6 @@
<wicket:fragment wicket:id="leafItem">
<a class="menuLink" wicket:id="menuLink">
- <span class="fontAwesomeIcon" wicket:id="menuLinkFontAwesome"></span>
<span class="menuLinkLabel" wicket:id="menuLinkLabel"></span>
</a>
</wicket:fragment>
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.java
index 86c7378..a27bc17 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/TertiaryActionsPanel.java
@@ -21,8 +21,8 @@ import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.resource.CssResourceReference;
import org.apache.isis.viewer.wicket.model.models.PageType;
+import org.apache.isis.viewer.wicket.ui.components.actionmenu.CssClassFaBehavior;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
-import org.apache.isis.viewer.wicket.ui.util.Components;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
/**
@@ -145,12 +145,9 @@ public class TertiaryActionsPanel extends Panel {
String cssClassFa = menuItem.getCssClassFa();
if (Strings.isNullOrEmpty(cssClassFa)) {
- Components.permanentlyHide(subMenuItemLink, "menuLinkFontAwesome");
subMenuItemLink.add(new CssClassAppender("menuLinkSpacer"));
} else {
- Label dummy = new Label("menuLinkFontAwesome", "");
- dummy.add(new CssClassAppender(cssClassFa));
- subMenuItemLink.addOrReplace(dummy);
+ menuItemLabel.add(new CssClassFaBehavior(cssClassFa, menuItem.getCssClassFaPosition()));
}
} else {
leafItem = new Fragment("content", "empty", TertiaryActionsPanel.this);
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
index 8ba0c16..1ccbd22 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
@@ -204,9 +204,10 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
final String description = ObjectAction.Utils.descriptionOf(objectAction);
final String cssClass = ObjectAction.Utils.cssClassFor(objectAction);
final String cssClassFa = ObjectAction.Utils.cssClassFaFor(objectAction);
+ final ActionLayout.CssClassFaPosition cssClassFaPosition = ObjectAction.Utils.cssClassFaPositionFor(objectAction);
final ActionLayout.Position position = ObjectAction.Utils.actionLayoutPositionOf(objectAction);
- return new LinkAndLabel(link, objectAction.getName(), null, description, false, explorationOrPrototype, actionIdentifier, cssClass, cssClassFa, position);
+ return new LinkAndLabel(link, objectAction.getName(), null, description, false, explorationOrPrototype, actionIdentifier, cssClass, cssClassFa, cssClassFaPosition, position);
}
@@ -227,4 +228,4 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
return IsisContext.getPersistenceSession().getServicesInjector();
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
index dff6cd9..e400a06 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
@@ -212,8 +212,9 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
final ActionLayout.Position position = ObjectAction.Utils.actionLayoutPositionOf(objectAction);
final String cssClass = ObjectAction.Utils.cssClassFor(objectAction);
final String cssClassFa = ObjectAction.Utils.cssClassFaFor(objectAction);
+ final ActionLayout.CssClassFaPosition cssClassFaPosition = ObjectAction.Utils.cssClassFaPositionFor(objectAction);
- return new LinkAndLabel(link, label, disabledReasonIfAny, description, blobOrClob, prototype, actionIdentifier, cssClass, cssClassFa, position);
+ return new LinkAndLabel(link, label, disabledReasonIfAny, description, blobOrClob, prototype, actionIdentifier, cssClass, cssClassFa, cssClassFaPosition, position);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
index 93e2836..47bf4a0 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
@@ -49,6 +49,16 @@ public @interface ActionLayout {
String cssClassFa() default "";
/**
+ * Indicates the position of the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a>
+ * icon. The icon could be rendered on the left or the right of the action button
+ */
+ CssClassFaPosition cssClassFaPosition() default CssClassFaPosition.LEFT;
+
+ enum CssClassFaPosition {
+ LEFT, RIGHT
+ }
+
+ /**
* Description of this action, eg to be rendered in a tooltip.
*/
String describedAs() default "";
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/applib/src/main/java/org/apache/isis/applib/annotation/CssClassFa.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/CssClassFa.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/CssClassFa.java
index 3ff2f4f..a25e8c0 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/CssClassFa.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/CssClassFa.java
@@ -30,5 +30,7 @@ import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
public @interface CssClassFa {
String value();
+
+ ActionLayout.CssClassFaPosition position() default ActionLayout.CssClassFaPosition.LEFT;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
index 18d99cc..fbedb4a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
@@ -32,10 +32,6 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facetapi.MethodRemover;
import org.apache.isis.core.metamodel.methodutils.MethodScope;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
public interface FacetFactory {
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionLayoutAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionLayoutAnnotation.java
index c4d2772..12d5b0d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionLayoutAnnotation.java
@@ -27,16 +27,17 @@ import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacetA
public class CssClassFaFacetForActionLayoutAnnotation extends CssClassFaFacetAbstract {
- public static CssClassFaFacet create(ActionLayout actionLayout, FacetHolder holder) {
+ public static CssClassFaFacet create(final ActionLayout actionLayout, final FacetHolder holder) {
if(actionLayout == null) {
return null;
}
final String cssClassFa = Strings.emptyToNull(actionLayout.cssClassFa());
- return cssClassFa != null ? new CssClassFaFacetForActionLayoutAnnotation(cssClassFa, holder) : null;
+ ActionLayout.CssClassFaPosition cssClassFaPosition = actionLayout.cssClassFaPosition();
+ return cssClassFa != null ? new CssClassFaFacetForActionLayoutAnnotation(cssClassFa, cssClassFaPosition, holder) : null;
}
- private CssClassFaFacetForActionLayoutAnnotation(String value, FacetHolder holder) {
- super(value, holder);
+ private CssClassFaFacetForActionLayoutAnnotation(final String value, final ActionLayout.CssClassFaPosition position, final FacetHolder holder) {
+ super(value, position, holder);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetOnActionFromLayoutProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetOnActionFromLayoutProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetOnActionFromLayoutProperties.java
index de082f5..f264082 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetOnActionFromLayoutProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetOnActionFromLayoutProperties.java
@@ -21,26 +21,37 @@ package org.apache.isis.core.metamodel.facets.actions.layout;
import java.util.Properties;
import com.google.common.base.Strings;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet;
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacetAbstract;
public class CssClassFaFacetOnActionFromLayoutProperties extends CssClassFaFacetAbstract {
- public static CssClassFaFacet create(Properties properties, FacetHolder holder) {
+ public static CssClassFaFacet create(final Properties properties, final FacetHolder holder) {
final String cssClassFa = cssClassFa(properties);
- return cssClassFa != null? new CssClassFaFacetOnActionFromLayoutProperties(cssClassFa, holder): null;
+ ActionLayout.CssClassFaPosition position = cssClassFaPosition(properties);
+ return cssClassFa != null? new CssClassFaFacetOnActionFromLayoutProperties(cssClassFa, position, holder): null;
}
- private CssClassFaFacetOnActionFromLayoutProperties(String cssClass, FacetHolder holder) {
- super(cssClass, holder);
+ private CssClassFaFacetOnActionFromLayoutProperties(final String cssClass, final ActionLayout.CssClassFaPosition position, final FacetHolder holder) {
+ super(cssClass, position, holder);
}
- private static String cssClassFa(Properties properties) {
+ private static String cssClassFa(final Properties properties) {
if(properties == null) {
return null;
}
return Strings.emptyToNull(properties.getProperty("cssClassFa"));
}
+ private static ActionLayout.CssClassFaPosition cssClassFaPosition(final Properties properties) {
+ if (properties == null) {
+ return null;
+ }
+ String cssClassFaPosition = Strings.emptyToNull(properties.getProperty("cssClassFaPosition"));
+ return cssClassFaPosition != null
+ ? ActionLayout.CssClassFaPosition.valueOf(cssClassFaPosition.toUpperCase())
+ : ActionLayout.CssClassFaPosition.LEFT;
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacet.java
index 85a7da3..88b39d8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacet.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.members.cssclassfa;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.metamodel.facets.SingleStringValueFacet;
/**
@@ -26,7 +27,12 @@ import org.apache.isis.core.metamodel.facets.SingleStringValueFacet;
*
* <p>
* In the standard Apache Isis Programming Model, corresponds to annotating the
- * member with <tt>{@literal @}{@link org.apache.isis.applib.annotation.CssClassFa CssClassFa}</tt>.
+ * member with <tt>{@literal @}{@link org.apache.isis.applib.annotation.ActionLayout#cssClassFa() ActionLayout}</tt>#cssClassFa().
*/
public interface CssClassFaFacet extends SingleStringValueFacet {
+
+ /**
+ * @return The position of the <a href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a> icon.
+ */
+ ActionLayout.CssClassFaPosition getPosition();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstract.java
index b3d2d7f..c4453a7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstract.java
@@ -24,6 +24,7 @@ import java.util.regex.Pattern;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.Sets;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.SingleStringValueFacetAbstract;
@@ -32,8 +33,16 @@ public class CssClassFaFacetAbstract extends SingleStringValueFacetAbstract impl
private static final Pattern WHITESPACE = Pattern.compile("\\s+");
- public CssClassFaFacetAbstract(final String value, final FacetHolder holder) {
+ private final ActionLayout.CssClassFaPosition position;
+
+ public CssClassFaFacetAbstract(final String value, final ActionLayout.CssClassFaPosition position, final FacetHolder holder) {
super(type(), holder, sanitize(value));
+ this.position = position;
+ }
+
+ @Override
+ public ActionLayout.CssClassFaPosition getPosition() {
+ return position;
}
/**
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberAnnotation.java
index dbb3441..06fe32f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberAnnotation.java
@@ -19,12 +19,13 @@
package org.apache.isis.core.metamodel.facets.members.cssclassfa.annotprop;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacetAbstract;
public class CssClassFaFacetOnMemberAnnotation extends CssClassFaFacetAbstract {
- public CssClassFaFacetOnMemberAnnotation(final String value, final FacetHolder holder) {
- super(value, holder);
+ public CssClassFaFacetOnMemberAnnotation(final String value, final ActionLayout.CssClassFaPosition position, final FacetHolder holder) {
+ super(value, position, holder);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
index 09ec8d3..c8d2369 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
@@ -27,6 +27,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.google.common.base.Strings;
import com.google.common.collect.Maps;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.CssClassFa;
import org.apache.isis.core.commons.config.ConfigurationConstants;
import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -79,21 +80,36 @@ public class CssClassFaFacetOnMemberFactory extends FacetFactoryAbstract impleme
private CssClassFaFacet createFromAnnotationIfPossible(final ProcessMethodContext processMethodContext) {
final CssClassFa annotation = Annotations.getAnnotation(processMethodContext.getMethod(), CssClassFa.class);
- return annotation != null ? new CssClassFaFacetOnMemberAnnotation(annotation.value(), processMethodContext.getFacetHolder()) : null;
+ return annotation != null ? new CssClassFaFacetOnMemberAnnotation(annotation.value(), annotation.position(), processMethodContext.getFacetHolder()) : null;
}
//region > faIconFromPattern
+ /**
+ * The pattern matches definitions like:
+ * <ul>
+ * <li>methodNameRegex:cssClassFa - will render the Font Awesome icon on the left of the title</li>
+ * <li>methodNameRegex:cssClassFa:(left|right) - will render the Font Awesome icon on the specified position of the title</li>
+ * </ul>
+ */
private final static Pattern FA_ICON_REGEX_PATTERN = Pattern.compile("([^:]+):(.+)");
private CssClassFaFacet createFromConfiguredRegexIfPossible(final ProcessMethodContext processMethodContext) {
final Method method = processMethodContext.getMethod();
String value = faIconIfAnyFor(method);
-
- return value != null
- ? new CssClassFaFacetOnMemberFromConfiguredRegex(value, processMethodContext.getFacetHolder())
- : null;
+ ActionLayout.CssClassFaPosition position = ActionLayout.CssClassFaPosition.LEFT;
+ if (value != null) {
+ int idxOfSeparator = value.indexOf(':');
+ if (idxOfSeparator > -1) {
+ value = value.substring(0, idxOfSeparator);
+ String rest = value.substring(idxOfSeparator + 1);
+ position = ActionLayout.CssClassFaPosition.valueOf(rest.toUpperCase());
+ }
+ return new CssClassFaFacetOnMemberFromConfiguredRegex(value, position, processMethodContext.getFacetHolder());
+ } else {
+ return null;
+ }
}
private String faIconIfAnyFor(Method method) {
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
index 9be8ed8..39c32a3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
@@ -19,12 +19,13 @@
package org.apache.isis.core.metamodel.facets.members.cssclassfa.annotprop;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacetAbstract;
public class CssClassFaFacetOnMemberFromConfiguredRegex extends CssClassFaFacetAbstract {
- public CssClassFaFacetOnMemberFromConfiguredRegex(final String value, final FacetHolder holder) {
- super(value, holder);
+ public CssClassFaFacetOnMemberFromConfiguredRegex(final String value, final ActionLayout.CssClassFaPosition position, final FacetHolder holder) {
+ super(value, position, holder);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromProperties.java
index 6d29f16..bf6fd40 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromProperties.java
@@ -20,16 +20,22 @@
package org.apache.isis.core.metamodel.facets.members.cssclassfa.annotprop;
import java.util.Properties;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacetAbstract;
public class CssClassFaFacetOnMemberFromProperties extends CssClassFaFacetAbstract {
public CssClassFaFacetOnMemberFromProperties(final Properties properties, final FacetHolder holder) {
- super(valueFrom(properties), holder);
+ super(valueFrom(properties), positionFrom(properties), holder);
}
private static String valueFrom(Properties properties) {
return properties.getProperty("value");
}
+
+ private static ActionLayout.CssClassFaPosition positionFrom(final Properties properties) {
+ String position = properties.getProperty("position");
+ return ActionLayout.CssClassFaPosition.valueOf(position.toUpperCase());
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/annotation/CssClassFaFacetOnTypeAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/annotation/CssClassFaFacetOnTypeAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/annotation/CssClassFaFacetOnTypeAnnotation.java
index ad61151..b826fe7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/annotation/CssClassFaFacetOnTypeAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/annotation/annotation/CssClassFaFacetOnTypeAnnotation.java
@@ -26,6 +26,6 @@ import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacetA
public class CssClassFaFacetOnTypeAnnotation extends CssClassFaFacetAbstract {
public CssClassFaFacetOnTypeAnnotation(final CssClassFa cssClassFa, final FacetHolder holder) {
- super(cssClassFa.value(), holder);
+ super(cssClassFa.value(), cssClassFa.position(), holder);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/ActionLayoutFacetRepr.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/ActionLayoutFacetRepr.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/ActionLayoutFacetRepr.java
index 92219e2..73702af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/ActionLayoutFacetRepr.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/ActionLayoutFacetRepr.java
@@ -23,9 +23,10 @@ import org.apache.isis.applib.annotation.Where;
public class ActionLayoutFacetRepr {
public String cssClass;
public String cssClassFa;
+ public String cssClassFaPosition;
public String describedAs;
public Where hidden;
public String named;
public ActionLayout.Position position;
public boolean prototype;
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/CssClassFaFacetRepr.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/CssClassFaFacetRepr.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/CssClassFaFacetRepr.java
index 07e2c17..f45f6c5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/CssClassFaFacetRepr.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/CssClassFaFacetRepr.java
@@ -19,4 +19,5 @@ package org.apache.isis.core.metamodel.layoutmetadata;
public class CssClassFaFacetRepr {
public String value;
-}
\ No newline at end of file
+ public String position;
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
index eeb7d10..0d95421 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
@@ -326,6 +326,9 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader {
if(actionLayout.cssClassFa != null) {
props.setProperty(prefix + "." + actionName + ".actionLayout.cssClassFa", actionLayout.cssClassFa);
}
+ if(actionLayout.cssClassFaPosition != null) {
+ props.setProperty(prefix + "." + actionName + ".actionLayout.cssClassFaPosition", actionLayout.cssClassFaPosition);
+ }
if(actionLayout.describedAs != null) {
props.setProperty(prefix + "." + actionName + ".actionLayout.describedAs", actionLayout.describedAs);
}
@@ -354,6 +357,7 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader {
final CssClassFaFacetRepr cssClassFa = actionRepr.cssClassFa;
if(cssClassFa != null) {
props.setProperty(prefix +"." + actionName + ".cssClassFa.value", cssClassFa.value);
+ props.setProperty(prefix +"." + actionName + ".cssClassFa.position", cssClassFa.position);
}
final DescribedAsFacetRepr describedAs = actionRepr.describedAs;
if(describedAs!= null) {
@@ -368,9 +372,7 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader {
public LayoutMetadata asLayoutMetadata(Class<?> domainClass) throws ReaderException {
try {
return readMetadata(domainClass);
- } catch (IOException e) {
- throw new ReaderException(e);
- } catch (RuntimeException e) {
+ } catch (IOException | RuntimeException e) {
throw new ReaderException(e);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
index 00038043..ad7bc2a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
@@ -260,6 +260,11 @@ public interface ObjectAction extends ObjectMember {
return facetValueIfAnyFor(action, CssClassFaFacet.class);
}
+ public static ActionLayout.CssClassFaPosition cssClassFaPositionFor(final ObjectAction action) {
+ CssClassFaFacet facet = action.getFacet(CssClassFaFacet.class);
+ return facet != null ? facet.getPosition() : ActionLayout.CssClassFaPosition.LEFT;
+ }
+
public static String cssClassFor(final ObjectAction action) {
return facetValueIfAnyFor(action, CssClassFacet.class);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
index 469aba7..d72ab5e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
@@ -36,7 +36,6 @@ import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAware;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
import static org.hamcrest.CoreMatchers.is;
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index 85a7504..3cb415f 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -24,6 +24,7 @@ import java.util.List;
import org.jmock.auto.Mock;
import org.junit.After;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryTest.java
index fe5412b..2d59fcd 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutAnnotationFacetFactoryTest.java
@@ -26,6 +26,13 @@ import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
import org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet;
import org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback;
+import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.junit.Assert.assertThat;
public class ActionLayoutAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
@@ -69,4 +76,48 @@ public class ActionLayoutAnnotationFacetFactoryTest extends AbstractFacetFactory
assertTrue(facet instanceof ActionPositionFacetFallback);
}
+ public void testCssClassFaLeftPositionIsDefault() {
+ final ActionLayoutFactory facetFactory = new ActionLayoutFactory();
+
+ class Customer {
+ @SuppressWarnings("unused")
+ @ActionLayout(cssClassFa = "font-awesome")
+ public String foz() {
+ return null;
+ }
+ }
+ final Method method = findMethod(Customer.class, "foz");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, method, methodRemover, facetedMethod));
+
+ Facet facet = facetedMethod.getFacet(CssClassFaFacet.class);
+ assertThat(facet, is(notNullValue()));
+ assertThat(facet, is(instanceOf(CssClassFaFacetForActionLayoutAnnotation.class)));
+ CssClassFaFacetForActionLayoutAnnotation classFaFacetForActionLayoutAnnotation = (CssClassFaFacetForActionLayoutAnnotation) facet;
+ assertThat(classFaFacetForActionLayoutAnnotation.value(), is(equalTo("fa fa-fw font-awesome")));
+ assertThat(classFaFacetForActionLayoutAnnotation.getPosition(), is(ActionLayout.CssClassFaPosition.LEFT));
+ }
+
+ public void testCssClassFaRightPosition() {
+ final ActionLayoutFactory facetFactory = new ActionLayoutFactory();
+
+ class Customer {
+ @SuppressWarnings("unused")
+ @ActionLayout(cssClassFa = "font-awesome", cssClassFaPosition = ActionLayout.CssClassFaPosition.RIGHT)
+ public String foz() {
+ return null;
+ }
+ }
+ final Method method = findMethod(Customer.class, "foz");
+
+ facetFactory.process(new ProcessMethodContext(Customer.class, null, null, method, methodRemover, facetedMethod));
+
+ Facet facet = facetedMethod.getFacet(CssClassFaFacet.class);
+ assertThat(facet, is(notNullValue()));
+ assertThat(facet, is(instanceOf(CssClassFaFacetForActionLayoutAnnotation.class)));
+ CssClassFaFacetForActionLayoutAnnotation classFaFacetForActionLayoutAnnotation = (CssClassFaFacetForActionLayoutAnnotation) facet;
+ assertThat(classFaFacetForActionLayoutAnnotation.value(), is(equalTo("fa fa-fw font-awesome")));
+ assertThat(classFaFacetForActionLayoutAnnotation.getPosition(), is(ActionLayout.CssClassFaPosition.RIGHT));
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaAnnotationOnMemberFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaAnnotationOnMemberFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaAnnotationOnMemberFacetFactoryTest.java
index 1008887..0e6787d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaAnnotationOnMemberFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaAnnotationOnMemberFacetFactoryTest.java
@@ -20,6 +20,7 @@ package org.apache.isis.core.metamodel.facets.members.cssclassfa;
import java.lang.reflect.Method;
import org.junit.Test;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.CssClassFa;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
@@ -55,8 +56,38 @@ public class CssClassFaAnnotationOnMemberFacetFactoryTest extends AbstractFacetF
final Facet facet = facetedMethod.getFacet(CssClassFaFacet.class);
assertThat(facet, is(not(nullValue())));
- assertThat(facet instanceof CssClassFaFacetAbstract, is(true));
+ assertThat(facet, is(instanceOf(CssClassFaFacetAbstract.class)));
final CssClassFaFacetAbstract cssClassFacetAbstract = (CssClassFaFacetAbstract) facet;
assertThat(cssClassFacetAbstract.value(), equalTo("fa fa-fw fa-foo"));
+ assertThat(cssClassFacetAbstract.getPosition(), is(ActionLayout.CssClassFaPosition.LEFT));
+ }
+
+ @Test
+ public void testCssClassFaAnnotationPickedUpOnClassRightPosition() {
+
+ final CssClassFaFacetOnMemberFactory facetFactory = new CssClassFaFacetOnMemberFactory();
+ facetFactory.setSpecificationLookup(mockSpecificationLoaderSpi);
+
+ class Customer {
+
+ @CssClassFa(value = "fa fa-foo", position = ActionLayout.CssClassFaPosition.RIGHT)
+ public String foo() {
+ return "Joe";
+ }
+ }
+
+ expectNoMethodsRemoved();
+
+ final Method actionMethod = findMethod(Customer.class, "foo", new Class[] { });
+
+ facetedMethod = FacetedMethod.createForAction(Customer.class, actionMethod);
+ facetFactory.process(new FacetFactory.ProcessMethodContext(Customer.class, null, null, facetedMethod.getMethod(), mockMethodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(CssClassFaFacet.class);
+ assertThat(facet, is(not(nullValue())));
+ assertThat(facet, is(instanceOf(CssClassFaFacetAbstract.class)));
+ final CssClassFaFacetAbstract cssClassFacetAbstract = (CssClassFaFacetAbstract) facet;
+ assertThat(cssClassFacetAbstract.value(), equalTo("fa fa-fw fa-foo"));
+ assertThat(cssClassFacetAbstract.getPosition(), is(ActionLayout.CssClassFaPosition.RIGHT));
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstractTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstractTest.java
index cc03f80..d0051b9 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstractTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/CssClassFaFacetAbstractTest.java
@@ -25,4 +25,4 @@ public class CssClassFaFacetAbstractTest {
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
index 501d770..f667d13 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclass/CssClassFacetOnTypeAnnotationFactoryTest.java
@@ -27,9 +27,14 @@ import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstract;
import org.apache.isis.core.metamodel.facets.object.cssclass.annotation.CssClassFacetOnTypeAnnotationFactory;
-import static org.hamcrest.CoreMatchers.*;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertThat;
+
public class CssClassFacetOnTypeAnnotationFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
@Test
@@ -48,7 +53,7 @@ public class CssClassFacetOnTypeAnnotationFactoryTest extends AbstractFacetFacto
final Facet facet = facetedMethod.getFacet(CssClassFacet.class);
assertThat(facet, is(not(nullValue())));
- assertThat(facet instanceof CssClassFacetAbstract, is(true));
+ assertThat(facet, is(instanceOf(CssClassFacetAbstract.class)));
final CssClassFacetAbstract cssClassFacetAbstract = (CssClassFacetAbstract) facet;
assertThat(cssClassFacetAbstract.value(), equalTo("testClass"));
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/CssClassFaFacetOnTypeAnnotationFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/CssClassFaFacetOnTypeAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/CssClassFaFacetOnTypeAnnotationFactoryTest.java
index 1ac7f96..2acfda8 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/CssClassFaFacetOnTypeAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/cssclassfa/CssClassFaFacetOnTypeAnnotationFactoryTest.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.object.cssclassfa;
import org.junit.Test;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.CssClassFa;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
@@ -27,7 +28,11 @@ import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet;
import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacetAbstract;
import org.apache.isis.core.metamodel.facets.object.cssclassfa.annotation.annotation.CssClassFaFacetOnTypeAnnotationFactory;
-import static org.hamcrest.CoreMatchers.*;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertThat;
public class CssClassFaFacetOnTypeAnnotationFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
@@ -48,8 +53,31 @@ public class CssClassFaFacetOnTypeAnnotationFactoryTest extends AbstractFacetFac
final Facet facet = facetedMethod.getFacet(CssClassFaFacet.class);
assertThat(facet, is(not(nullValue())));
- assertThat(facet instanceof CssClassFaFacetAbstract, is(true));
+ assertThat(facet, is(instanceOf(CssClassFaFacetAbstract.class)));
final CssClassFaFacetAbstract cssClassFacetAbstract = (CssClassFaFacetAbstract) facet;
assertThat(cssClassFacetAbstract.value(), equalTo("fa fa-fw fa-foo"));
+ assertThat(cssClassFacetAbstract.getPosition(), equalTo(ActionLayout.CssClassFaPosition.LEFT));
+ }
+
+ @Test
+ public void testCssClassFaAnnotationPickedUpOnClassPositionRight() {
+
+ final CssClassFaFacetOnTypeAnnotationFactory facetFactory = new CssClassFaFacetOnTypeAnnotationFactory();
+ facetFactory.setSpecificationLookup(mockSpecificationLoaderSpi);
+
+ @CssClassFa(value = "fa-foo", position = ActionLayout.CssClassFaPosition.RIGHT)
+ class Customer {
+ }
+
+ expectNoMethodsRemoved();
+
+ facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, null, mockMethodRemover, facetedMethod));
+
+ final Facet facet = facetedMethod.getFacet(CssClassFaFacet.class);
+ assertThat(facet, is(not(nullValue())));
+ assertThat(facet, is(instanceOf(CssClassFaFacetAbstract.class)));
+ final CssClassFaFacetAbstract cssClassFacetAbstract = (CssClassFaFacetAbstract) facet;
+ assertThat(cssClassFacetAbstract.value(), equalTo("fa fa-fw fa-foo"));
+ assertThat(cssClassFacetAbstract.getPosition(), equalTo(ActionLayout.CssClassFaPosition.RIGHT));
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/21170a38/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
index 5cf21cd..1820be7 100644
--- a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
+++ b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
@@ -111,7 +111,8 @@
},
"next": {
"actionLayout": {
- "cssClassFa": "fa fa-step-forward"
+ "cssClassFa": "fa fa-step-forward",
+ "cssClassFaPosition": "right"
}
}
}