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 2017/04/28 09:21:25 UTC

[20/43] isis git commit: ISIS-1603: further simplifications of subclasses of ScalarPanelAbstract

ISIS-1603: further simplifications of subclasses of ScalarPanelAbstract

making stuff private in superclass, introduces new optional hook to create the inline prompt form.


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

Branch: refs/heads/master
Commit: 5f29ed3be069b4bb37d61524615877052ce3e52b
Parents: a8f018e
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Apr 25 21:10:02 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Apr 27 13:26:39 2017 +0100

----------------------------------------------------------------------
 .../components/scalars/ScalarPanelAbstract.java | 58 +++++++++++++++-----
 .../scalars/ScalarPanelTextAbstract.java        | 14 ++---
 .../scalars/ScalarPanelTextFieldAbstract.java   | 26 ++++-----
 .../ScalarPanelTextFieldDatePickerAbstract.java |  1 -
 .../scalars/ScalarPanelTextFieldNumeric.java    |  3 +-
 .../valuechoices/ValueChoicesSelect2Panel.java  |  4 --
 6 files changed, 65 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/5f29ed3b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index b7f3cc3..f2fff57 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -49,6 +49,7 @@ import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.AdditionalLinksPanel;
+import org.apache.isis.viewer.wicket.ui.components.property.PropertyEditFormPanel;
 import org.apache.isis.viewer.wicket.ui.components.property.PropertyEditPanel;
 import org.apache.isis.viewer.wicket.ui.components.property.PropertyEditPromptHeaderPanel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel.ScalarModelProvider;
@@ -81,7 +82,7 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
     protected static final String ID_SCALAR_VALUE_EDIT_INLINE_LABEL = "scalarValueEditInlineLabel";
 
     /**
-     * as per {@link #scalarIfRegularInlineEditForm}.
+     * as per {@link #scalarIfRegularInlinePromptForm}.
      */
     protected static final String ID_SCALAR_IF_REGULAR_INLINE_EDIT_FORM = "scalarIfRegularInlineEditForm";
 
@@ -96,15 +97,16 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
 
     protected final ScalarModel scalarModel;
 
-    protected Component scalarIfCompact;
-    protected Component scalarIfRegular;
+    private Component scalarIfCompact;
+    private Component scalarIfRegular;
 
-    protected WebMarkupContainer scalarTypeContainer;
+    private WebMarkupContainer scalarTypeContainer;
 
     /**
      * Used by most subclasses ({@link ScalarPanelTextAbstract}, {@link ReferencePanel}, {@link ValueChoicesSelect2Panel}) but not all ({@link IsisBlobOrClobPanelAbstract}, {@link BooleanPanel})
      */
-    protected WebMarkupContainer scalarIfRegularInlineEditForm;
+    protected WebMarkupContainer scalarIfRegularInlinePromptForm;
+
     protected WebMarkupContainer editInlineLink;
 
     public ScalarPanelAbstract(final String id, final ScalarModel scalarModel) {
@@ -174,12 +176,14 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
      */
     private void buildGui() {
 
-        // REVIEW: this is nasty, both write to the same entityLink field
-        // even though only one is used
-        scalarIfCompact = createComponentForCompact();
-        scalarIfRegular = createComponentForRegular();
+        this.scalarIfCompact = createComponentForCompact();
+        this.scalarIfRegular = createComponentForRegular();
+        this.scalarIfRegularInlinePromptForm = createFormForInlinePromptIfRequired();
 
         scalarTypeContainer.addOrReplace(scalarIfCompact, scalarIfRegular);
+        if(scalarIfRegularInlinePromptForm != null) {
+            scalarTypeContainer.addOrReplace(scalarIfRegularInlinePromptForm);
+        }
 
         getRendering().buildGui(this);
         addCssForMetaModel();
@@ -304,7 +308,7 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
 
             @Override
             public void buildGui(final ScalarPanelAbstract panel) {
-                panel.getLabelForCompact().setVisible(false);
+                panel.scalarIfCompact.setVisible(false);
             }
 
             @Override
@@ -334,19 +338,42 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
     /**
      * Mandatory hook method to build the component to render the model when in
      * {@link Rendering#REGULAR regular} format.
+     *
+     * <p>
+     *     Is added to {@link #scalarTypeContainer}.
+     * </p>
      */
     protected abstract MarkupContainer createComponentForRegular();
 
+    /**
+     * Mandatory hook method to build the component to render the model when in
+     * {@link Rendering#COMPACT compact} format.
+     *
+     * <p>
+     *     Is added to {@link #scalarTypeContainer}.
+     * </p>
+     */
     protected abstract Component createComponentForCompact();
 
-    protected Component getLabelForCompact() {
-        return scalarIfCompact;
+    /**
+     * Optional hook method.
+     *
+     * <p>
+     *     If non-null, is added to {@link #scalarTypeContainer}.
+     * </p>
+     */
+    protected WebMarkupContainer createFormForInlinePromptIfRequired() {
+        return null;
     }
 
-    public Component getComponentForRegular() {
-        return scalarIfRegular;
+    protected void switchFormForInlinePrompt() {
+        scalarIfRegularInlinePromptForm = (PropertyEditFormPanel) getComponentFactoryRegistry().addOrReplaceComponent(
+                scalarTypeContainer, ID_SCALAR_IF_REGULAR_INLINE_EDIT_FORM, ComponentType.PROPERTY_EDIT_FORM, scalarModel);
     }
 
+    protected Component getComponentForRegular() {
+        return scalarIfRegular;
+    }
 
     // ///////////////////////////////////////////////////////////////////
 
@@ -447,6 +474,9 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
 
     // ///////////////////////////////////////////////////////////////////
 
+
+    // ///////////////////////////////////////////////////////////////////
+
     /**
      * Repaints this panel of just some of its children
      *

http://git-wip-us.apache.org/repos/asf/isis/blob/5f29ed3b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextAbstract.java
index f115c1e..9245a28 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextAbstract.java
@@ -89,16 +89,16 @@ public abstract class ScalarPanelTextAbstract extends ScalarPanelAbstract  {
                                 new PropertyEditFormExecutor(ScalarPanelTextAbstract.this, scalarModel);
                         scalarModel.setFormExecutor(formExecutor);
                         scalarModel.setInlinePromptContext(
-                                new ScalarModel.InlinePromptContext(scalarIfRegular, scalarIfRegularInlineEditForm));
+                                new ScalarModel.InlinePromptContext(
+                                        getComponentForRegular(),
+                                        scalarIfRegularInlinePromptForm));
 
-                        scalarIfRegularInlineEditForm = (PropertyEditFormPanel) getComponentFactoryRegistry().addOrReplaceComponent(
-                                scalarTypeContainer, ID_SCALAR_IF_REGULAR_INLINE_EDIT_FORM, ComponentType.PROPERTY_EDIT_FORM, scalarModel);
+                        switchFormForInlinePrompt();
 
+                        getComponentForRegular().setVisible(false);
+                        scalarIfRegularInlinePromptForm.setVisible(true);
 
-                        scalarIfRegular.setVisible(false);
-                        scalarIfRegularInlineEditForm.setVisible(true);
-
-                        target.add(scalarTypeContainer);
+                        target.add(ScalarPanelTextAbstract.this);
                     }
 
                     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/5f29ed3b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
index 7735e0e..adde04e 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
@@ -159,18 +159,6 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
 
 
 
-        //
-        // inline edit form
-        // (placeholder initially, create dynamically when needed - otherwise infinite loop because form references regular)
-        //
-
-        scalarIfRegularInlineEditForm = new WebMarkupContainer(ID_SCALAR_IF_REGULAR_INLINE_EDIT_FORM);
-        scalarIfRegularInlineEditForm.setOutputMarkupId(true);
-        scalarTypeContainer.add(scalarIfRegularInlineEditForm);
-
-
-
-
 
         //
         // configure dialog edit vs inline edit
@@ -184,11 +172,23 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
         } else {
             editInlineLink.setVisibilityAllowed(false);
         }
-        scalarIfRegularInlineEditForm.setVisible(false);
 
         return scalarIfRegularFormGroup;
     }
 
+    @Override
+    protected WebMarkupContainer createFormForInlinePromptIfRequired() {
+
+        // (placeholder initially, create dynamically when needed - otherwise infinite loop because form references regular)
+
+        WebMarkupContainer scalarIfRegularInlinePromptForm = new WebMarkupContainer(ID_SCALAR_IF_REGULAR_INLINE_EDIT_FORM);
+        scalarIfRegularInlinePromptForm.setOutputMarkupId(true);
+
+        scalarIfRegularInlinePromptForm.setVisible(false);
+
+        return scalarIfRegularInlinePromptForm;
+    }
+
     private void addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(final Component component) {
         if(!getSettings().isReplaceDisabledTagWithReadonlyTag()) {
             return;

http://git-wip-us.apache.org/repos/asf/isis/blob/5f29ed3b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java
index 06c8489..404f872 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java
@@ -96,7 +96,6 @@ public abstract class ScalarPanelTextFieldDatePickerAbstract<T extends Serializa
 
         compactFragment.add(label);
 
-        scalarTypeContainer.addOrReplace(compactFragment);
         return label;
     }
     

http://git-wip-us.apache.org/repos/asf/isis/blob/5f29ed3b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
index 17e91bf..d9c35b6 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
@@ -24,9 +24,9 @@ import java.io.Serializable;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.panel.Fragment;
+import org.apache.wicket.util.convert.IConverter;
 
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.wicket.util.convert.IConverter;
 
 /**
  * Panel for rendering numeric scalars.
@@ -60,7 +60,6 @@ public abstract class ScalarPanelTextFieldNumeric<T extends Serializable> extend
         label.setEnabled(false);
 
         compactFragment.add(label);
-        scalarTypeContainer.addOrReplace(compactFragment);
         return label;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/5f29ed3b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
index d8c559c..c00d172 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
@@ -27,7 +27,6 @@ import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
@@ -57,9 +56,6 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
     private Select2 select2;
     private ObjectAdapterMemento pending;
 
-    protected WebMarkupContainer scalarIfRegularInlineEditForm;
-    protected WebMarkupContainer editInlineLink;
-
     public ValueChoicesSelect2Panel(final String id, final ScalarModel scalarModel) {
         super(id, scalarModel);
         pending = scalarModel.getObjectAdapterMemento();