You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/04/12 14:43:34 UTC
[isis] branch master updated: ISIS-2340: some cleanup and comments
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 950b0f3 ISIS-2340: some cleanup and comments
950b0f3 is described below
commit 950b0f38686af2e5ab220efd401a2ef439d7028b
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Apr 12 16:43:22 2020 +0200
ISIS-2340: some cleanup and comments
---
.../action/ActionLinkUiComponentDecorator.java | 21 ++++++++++++++++---
.../serviceactions/ServiceActionUtil.java | 23 +++------------------
.../isis/viewer/wicket/ui/util/Decorators.java | 24 +++++++++++++++++-----
3 files changed, 40 insertions(+), 28 deletions(-)
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentDecorator.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentDecorator.java
index 0e756c5..ca16b94 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentDecorator.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentDecorator.java
@@ -24,6 +24,8 @@ import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmDecorator;
import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel;
import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel.Placement;
import org.apache.isis.viewer.common.model.decorator.disable.DisableDecorator;
+import org.apache.isis.viewer.common.model.decorator.fa.FontAwesomeDecorator;
+import org.apache.isis.viewer.common.model.decorator.prototyping.PrototypingDecorator;
import org.apache.isis.viewer.common.model.decorator.tooltip.TooltipDecorator;
import org.apache.isis.viewer.common.model.decorator.tooltip.TooltipUiModel;
@@ -44,8 +46,17 @@ public class ActionLinkUiComponentDecorator<T> {
private final TooltipDecorator<T> tooltipDecorator;
private final DisableDecorator<T> disableDecorator;
private final ConfirmDecorator<T> confirmDecorator;
+ private final PrototypingDecorator<T> prototypingDecorator;
+ private final FontAwesomeDecorator<T> faDecorator;
- public void decorate(TranslationService translationService, T uiComponent, ActionUiModel<? extends T> actionUiModel) {
+ //TODO this is yet the result of refactoring the logic originating from the wicket viewer
+ //there is a little design flaw yet: this code decorates 2 UI components at once which is confusing
+ public void decorateMenuItem(
+ final T uiComponent, // with wicket this is a menu item component
+ final ActionUiModel<? extends T> actionUiModel,
+ final TranslationService translationService) {
+
+ val actionLinkUiComponent = actionUiModel.getUiComponent();
val actionMeta = actionUiModel.getActionUiMetaModel();
val disableUiModel = actionMeta.getDisableUiModel();
@@ -63,14 +74,18 @@ public class ActionLinkUiComponentDecorator<T> {
//XXX ISIS-1626, confirmation dialog for no-parameter menu actions
if (actionMeta.isRequiresImmediateConfirmation()) {
- val actionLinkUiComponent = actionUiModel.getUiComponent();
-
val confirmUiModel = ConfirmUiModel.ofAreYouSure(translationService, Placement.BOTTOM);
confirmDecorator.decorate(actionLinkUiComponent, confirmUiModel);
}
}
+
+ if (actionMeta.isPrototyping()) {
+ prototypingDecorator.decorate(actionLinkUiComponent);
+ }
+
+ faDecorator.decorate(uiComponent, actionMeta.getFontAwesomeUiModel());
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
index a17d74c..d748d37 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
@@ -29,7 +29,6 @@ import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.isis.core.commons.internal.base._Strings;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
@@ -47,7 +46,6 @@ import lombok.experimental.UtilityClass;
//@Log4j2
public final class ServiceActionUtil {
-
static void addLeafItem(
IsisWebAppCommonContext commonContext,
CssMenuItem menuItem,
@@ -55,34 +53,19 @@ public final class ServiceActionUtil {
MarkupContainer parent) {
val actionUiModel = menuItem.getMenuActionUiModel();
-
- val actionMeta = actionUiModel.getActionUiMetaModel();
val menuItemActionLink = actionUiModel.getUiComponent();
val menuItemLabel = new Label("menuLinkLabel", menuItem.getName());
menuItemActionLink.addOrReplace(menuItemLabel);
- Decorators.getActionLink().decorate(
- commonContext.getTranslationService(),
+ Decorators.getActionLink().decorateMenuItem(
listItem,
- actionUiModel);
+ actionUiModel,
+ commonContext.getTranslationService());
-
- if (actionMeta.isPrototyping()) {
- menuItemActionLink.add(new CssClassAppender("prototype"));
- }
val leafItem = new Fragment("content", "leafItem", parent);
leafItem.add(menuItemActionLink);
- val fontAwesome = actionMeta.getFontAwesomeUiModel();
- Decorators.getIcon().decorate(menuItemLabel, fontAwesome);
- Decorators.getMissingIcon().decorate(menuItemActionLink, fontAwesome);
-
- String cssClass = actionMeta.getCssClass();
- if (!_Strings.isNullOrEmpty(cssClass)) {
- menuItemActionLink.add(new CssClassAppender(cssClass));
- }
-
listItem.add(leafItem);
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Decorators.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Decorators.java
index cca1a4d..b28156b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Decorators.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Decorators.java
@@ -23,6 +23,7 @@ import java.util.Optional;
import org.apache.wicket.Component;
import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.core.commons.internal.base._Strings;
import org.apache.isis.viewer.common.model.action.ActionLinkUiComponentDecorator;
import org.apache.isis.viewer.common.model.action.ActionUiModel;
import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmDecorator;
@@ -122,16 +123,29 @@ public class Decorators {
public final static class ActionLink extends ActionLinkUiComponentDecorator<Component> {
public ActionLink() {
- super(getTooltip(), getDisable(), getConfirm());
+ super(getTooltip(), getDisable(), getConfirm(), getPrototyping(), getIcon());
}
@Override
- public void decorate(
- final TranslationService translationService,
+ public void decorateMenuItem(
final Component uiComponent,
- final ActionUiModel<? extends Component> actionUiModel) {
+ final ActionUiModel<? extends Component> actionUiModel,
+ final TranslationService translationService) {
+
addCssClassForAction(uiComponent, actionUiModel);
- super.decorate(translationService, uiComponent, actionUiModel);
+ super.decorateMenuItem(uiComponent, actionUiModel, translationService);
+
+ val actionMeta = actionUiModel.getActionUiMetaModel();
+ val fontAwesome = actionMeta.getFontAwesomeUiModel();
+ val actionLinkUiCompnent = actionUiModel.getUiComponent();
+
+ Decorators.getMissingIcon().decorate(actionLinkUiCompnent, fontAwesome);
+
+ String cssClass = actionMeta.getCssClass();
+ if (!_Strings.isNullOrEmpty(cssClass)) {
+ actionLinkUiCompnent.add(new CssClassAppender(cssClass));
+ }
+
}
private void addCssClassForAction(Component uiComponent, ActionUiModel<?> actionUiModel) {