Repository: isis Updated Branches: refs/heads/ISIS-939 9746edbdf -> 8a9378b1f
ISIS-537: titles (tooltips) now displayed correctly for action buttons. Project: http://git-wip-us.apache.org/repos/asf/isis/repo Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/8a9378b1 Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/8a9378b1 Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/8a9378b1 Branch: refs/heads/ISIS-939 Commit: 8a9378b1f209f16cec27c5d2990837237ccca7ee Parents: 9746edb Author: Dan Haywood <[email protected]> Authored: Tue Nov 11 23:35:32 2014 +0000 Committer: Dan Haywood <[email protected]> Committed: Tue Nov 11 23:35:32 2014 +0000 ---------------------------------------------------------------------- .../viewer/wicket/model/links/LinkAndLabel.java | 7 ++++++ .../additionallinks/AdditionalLinksPanel.java | 24 +++++++++++++------- .../collection/bulk/BulkActionsLinkFactory.java | 4 +++- .../cssmenu/ActionLinkFactoryAbstract.java | 17 +++++++------- .../components/widgets/cssmenu/CssMenuItem.java | 5 ++++ .../src/main/java/dom/todo/ToDoItem.layout.json | 7 ++++-- 6 files changed, 45 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/isis/blob/8a9378b1/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 1b6cf29..a961b1f 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 @@ -29,6 +29,7 @@ public class LinkAndLabel implements Serializable { private final AbstractLink link; private final String label; private final String disabledReasonIfAny; + private final String descriptionIfAny; private final boolean blobOrClob; private final boolean prototype; private final String actionIdentifier; @@ -39,6 +40,7 @@ public class LinkAndLabel implements Serializable { final AbstractLink link, final String label, final String disabledReasonIfAny, + final String descriptionIfAny, final boolean blobOrClob, final boolean prototype, final String identifier, @@ -47,6 +49,7 @@ public class LinkAndLabel implements Serializable { this.link = link; this.label = label; this.disabledReasonIfAny = disabledReasonIfAny; + this.descriptionIfAny = descriptionIfAny; this.blobOrClob = blobOrClob; this.prototype = prototype; this.actionIdentifier = identifier; @@ -66,6 +69,10 @@ public class LinkAndLabel implements Serializable { return disabledReasonIfAny; } + public String getDescriptionIfAny() { + return descriptionIfAny; + } + public boolean isBlobOrClob() { return blobOrClob; } http://git-wip-us.apache.org/repos/asf/isis/blob/8a9378b1/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 ec40f09..e1618eb 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 @@ -20,7 +20,6 @@ package org.apache.isis.viewer.wicket.ui.components.additionallinks; import java.util.List; - import com.google.common.base.Strings; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.head.IHeaderResponse; @@ -29,7 +28,6 @@ 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.core.commons.lang.StringExtensions; import org.apache.isis.viewer.wicket.model.links.LinkAndLabel; import org.apache.isis.viewer.wicket.model.links.ListOfLinksModel; @@ -75,7 +73,7 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> { final AbstractLink link = linkAndLabel.getLink(); - String cssClassFa = linkAndLabel.getCssClassFa(); + final String cssClassFa = linkAndLabel.getCssClassFa(); if(Strings.isNullOrEmpty(cssClassFa)) { Components.permanentlyHide(link, ID_ADDITIONAL_LINK_FONT_AWESOME); } else { @@ -84,11 +82,12 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> { dummy.add(new CssClassAppender(cssClassFa)); } - Label viewTitleLabel = new Label(ID_ADDITIONAL_LINK_TITLE, linkAndLabel.getLabel()); - String disabledReasonIfAny = linkAndLabel.getDisabledReasonIfAny(); - if(disabledReasonIfAny != null) { - viewTitleLabel.add(new AttributeAppender("title", disabledReasonIfAny)); + final String itemTitle = first(linkAndLabel.getDisabledReasonIfAny(), linkAndLabel.getDescriptionIfAny()); + if(itemTitle != null) { + item.add(new AttributeAppender("title", itemTitle)); } + + final Label viewTitleLabel = new Label(ID_ADDITIONAL_LINK_TITLE, linkAndLabel.getLabel()); if(linkAndLabel.isBlobOrClob()) { link.add(new CssClassAppender("noVeil")); } @@ -96,11 +95,13 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> { link.add(new CssClassAppender("prototype")); } link.add(new CssClassAppender(linkAndLabel.getActionIdentifier())); - String cssClass = linkAndLabel.getCssClass(); + + final String cssClass = linkAndLabel.getCssClass(); if(cssClass != null) { link.add(new CssClassAppender(cssClass)); } viewTitleLabel.add(new CssClassAppender(StringExtensions.asLowerDashed(linkAndLabel.getLabel()))); + link.addOrReplace(viewTitleLabel); item.addOrReplace(link); } @@ -108,6 +109,13 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> { container.addOrReplace(listView); } + private static String first(String... str) { + for (String s : str) { + if(s != null) return s; + } + return null; + } + /** * Because there is no {@link ComponentFactory} for this component, * its CSS must be contributed in this way instead (also meaning its CSS is not bundled). http://git-wip-us.apache.org/repos/asf/isis/blob/8a9378b1/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 e0534b4..1a59172 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 @@ -200,12 +200,14 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory { }; link.add(new JGrowlBehaviour()); + final boolean explorationOrPrototype = CssMenuItem.isExplorationOrPrototype(objectAction); final String actionIdentifier = CssMenuItem.actionIdentifierFor(objectAction); + final String description = CssMenuItem.descriptionOf(objectAction); final String cssClass = CssMenuItem.cssClassFor(objectAction); final String cssClassFa = CssMenuItem.cssClassFaFor(objectAction); - return new LinkAndLabel(link, objectAction.getName(), null, false, explorationOrPrototype, actionIdentifier, cssClass, cssClassFa); + return new LinkAndLabel(link, objectAction.getName(), null, description, false, explorationOrPrototype, actionIdentifier, cssClass, cssClassFa); } http://git-wip-us.apache.org/repos/asf/isis/blob/8a9378b1/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java ---------------------------------------------------------------------- diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java index 1cced6d..dc41c4a 100644 --- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java +++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java @@ -275,16 +275,17 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory { } } - protected LinkAndLabel newLinkAndLabel(final ObjectAction action, final AbstractLink link, final String disabledReasonIfAny) { + protected LinkAndLabel newLinkAndLabel(final ObjectAction objectAction, final AbstractLink link, final String disabledReasonIfAny) { - final String label = ObjectAction.Utils.nameFor(action); - final boolean blobOrClob = CssMenuItem.returnsBlobOrClob(action); - final boolean prototype = CssMenuItem.isExplorationOrPrototype(action); - final String actionIdentifier = CssMenuItem.actionIdentifierFor(action); - final String cssClass = CssMenuItem.cssClassFor(action); - final String cssClassFa = CssMenuItem.cssClassFaFor(action); + final String label = ObjectAction.Utils.nameFor(objectAction); + final boolean blobOrClob = CssMenuItem.returnsBlobOrClob(objectAction); + final boolean prototype = CssMenuItem.isExplorationOrPrototype(objectAction); + final String actionIdentifier = CssMenuItem.actionIdentifierFor(objectAction); + final String description = CssMenuItem.descriptionOf(objectAction); + final String cssClass = CssMenuItem.cssClassFor(objectAction); + final String cssClassFa = CssMenuItem.cssClassFaFor(objectAction); - return new LinkAndLabel(link, label, disabledReasonIfAny, blobOrClob, prototype, actionIdentifier, cssClass, cssClassFa); + return new LinkAndLabel(link, label, disabledReasonIfAny, description, blobOrClob, prototype, actionIdentifier, cssClass, cssClassFa); } http://git-wip-us.apache.org/repos/asf/isis/blob/8a9378b1/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 41f8e89..bfbb539 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 @@ -348,6 +348,11 @@ public class CssMenuItem implements Serializable { return action.getType().isExploration() || action.getType().isPrototype(); } + public static String descriptionOf(ObjectAction action) { + return action.getDescription(); + } + + public static String actionIdentifierFor(final ObjectAction action) { @SuppressWarnings("unused") final Identifier identifier = action.getIdentifier(); http://git-wip-us.apache.org/repos/asf/isis/blob/8a9378b1/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 69944d2..4ad0a90 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 @@ -52,13 +52,16 @@ "completed": { "named": { "value": "Done" }, "describedAs": { - "value": "Mark this todo item as having been completed" + "value": "Update this todo item as complete" }, "cssClassFa": { "value": "fa fa-thumbs-up" } }, "notYetCompleted": { "named": { "value": "Not done" }, - "cssClassFa": { "value": "fa fa-thumbs-down" } + "describedAs": { + "value": "Update this todo item as not yet complete" + }, + "cssClassFa": { "value": "fa fa-thumbs-down" } }, "scheduleExplicitly": { },
