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/26 06:36:03 UTC

[4/4] isis git commit: ISIS-1603: reference panel and value choices now have the iniine prompt link and inline prompt form, getting there...

ISIS-1603: reference panel and value choices now have the iniine prompt link and inline prompt form, getting there...

need to:
- fix visiblity for value and reference panel
- fix callbacks for reference panel


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

Branch: refs/heads/ISIS-1603-no-xeditable
Commit: 3dccc4c17ffdf2a79b07e27d9e3f182a8979494e
Parents: cc056ea
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Apr 26 07:35:49 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Apr 26 07:35:49 2017 +0100

----------------------------------------------------------------------
 .../components/scalars/ScalarPanelAbstract.java | 173 ++++++++++++-------
 .../scalars/ScalarPanelTextFieldAbstract.html   |  14 +-
 .../scalars/ScalarPanelTextFieldAbstract.java   |  58 ++-----
 .../components/scalars/TextFieldValueModel.java |   6 -
 .../isisapplib/IsisBlobOrClobPanelAbstract.java |   9 +
 .../scalars/primitive/BooleanPanel.java         |   9 +
 .../scalars/reference/ReferencePanel.html       |  18 +-
 .../scalars/reference/ReferencePanel.java       |  14 +-
 .../valuechoices/ValueChoicesSelect2Panel.html  |  21 +--
 .../valuechoices/ValueChoicesSelect2Panel.java  |  16 +-
 .../wicket/ui/pages/bootstrap-overrides.css     |   4 +-
 11 files changed, 197 insertions(+), 145 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/3dccc4c1/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 89eb391..f948384 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
@@ -32,7 +32,9 @@ import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
 import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.LabeledWebMarkupContainer;
+import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
 import org.apache.isis.applib.annotation.ActionLayout;
@@ -77,16 +79,15 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
 
 
     /**
-     * as per {@link #editInlineLink}
+     * as per {@link #inlinePromptLink}
      */
-    protected static final String ID_SCALAR_VALUE_EDIT_INLINE = "scalarValueEditInline";
-    protected static final String ID_SCALAR_VALUE_EDIT_INLINE_LABEL = "scalarValueEditInlineLabel";
+    protected static final String ID_SCALAR_VALUE_INLINE_PROMPT_LINK = "scalarValueInlinePromptLink";
+    protected static final String ID_SCALAR_VALUE_INLINE_PROMPT_LABEL = "scalarValueInlinePromptLabel";
 
     /**
      * as per {@link #scalarIfRegularInlinePromptForm}.
      */
-    protected static final String ID_SCALAR_IF_REGULAR_INLINE_EDIT_FORM = "scalarIfRegularInlineEditForm";
-
+    protected static final String ID_SCALAR_IF_REGULAR_INLINE_PROMPT_FORM = "scalarIfRegularInlinePromptForm";
 
 
     private static final String ID_EDIT_PROPERTY = "editProperty";
@@ -99,16 +100,16 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
     protected final ScalarModel scalarModel;
 
     private Component scalarIfCompact;
-    private Component scalarIfRegular;
+    private MarkupContainer scalarIfRegular;
 
     private WebMarkupContainer scalarTypeContainer;
 
     /**
      * Used by most subclasses ({@link ScalarPanelAbstract}, {@link ReferencePanel}, {@link ValueChoicesSelect2Panel}) but not all ({@link IsisBlobOrClobPanelAbstract}, {@link BooleanPanel})
      */
-    protected WebMarkupContainer scalarIfRegularInlinePromptForm;
+    private WebMarkupContainer scalarIfRegularInlinePromptForm;
 
-    protected WebMarkupContainer editInlineLink;
+    WebMarkupContainer inlinePromptLink;
 
     public ScalarPanelAbstract(final String id, final ScalarModel scalarModel) {
         super(id, scalarModel);
@@ -179,13 +180,21 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
 
         this.scalarIfCompact = createComponentForCompact();
         this.scalarIfRegular = createComponentForRegular();
-        this.scalarIfRegularInlinePromptForm = createFormForInlinePromptIfRequired();
+        this.scalarIfRegularInlinePromptForm = createInlinePromptFormIfRequired();
 
         scalarTypeContainer.addOrReplace(scalarIfCompact, scalarIfRegular);
         if(scalarIfRegularInlinePromptForm != null) {
             scalarTypeContainer.addOrReplace(scalarIfRegularInlinePromptForm);
         }
 
+        inlinePromptLink = createInlinePromptLinkIfRequired();
+        if(this.inlinePromptLink != null) {
+            scalarIfRegular.add(inlinePromptLink);
+            configureInlinePromptLinkCallback();
+            configureEditVisibility(scalarIfRegular, inlinePromptLink);
+        }
+
+
         getRendering().buildGui(this);
         addCssForMetaModel();
 
@@ -267,49 +276,6 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
 
     // ///////////////////////////////////////////////////////////////////
 
-    /**
-     * For convenience of subclasses that support inline prompts ({@link ScalarPanelAbstract}, {@link ReferencePanel}, {@link ValueChoicesSelect2Panel}).
-     */
-    protected void configureInlinePromptCallback() {
-
-        final PromptStyle promptStyle = this.scalarModel.getPromptStyle();
-        if(promptStyle == PromptStyle.INLINE) {
-
-            if(editInlineLink != null) {
-                editInlineLink.add(new AjaxEventBehavior("click") {
-                    @Override
-                    protected void onEvent(final AjaxRequestTarget target) {
-
-                        scalarModel.toEditMode();
-
-                        // dynamically update the edit form.
-                        final PropertyEditFormExecutor formExecutor =
-                                new PropertyEditFormExecutor(ScalarPanelAbstract.this, scalarModel);
-                        scalarModel.setFormExecutor(formExecutor);
-                        scalarModel.setInlinePromptContext(
-                                new ScalarModel.InlinePromptContext(
-                                        getComponentForRegular(),
-                                        scalarIfRegularInlinePromptForm));
-
-                        switchFormForInlinePrompt();
-
-                        getComponentForRegular().setVisible(false);
-                        scalarIfRegularInlinePromptForm.setVisible(true);
-
-                        target.add(scalarTypeContainer);
-                    }
-
-                    @Override
-                    public boolean isEnabled(final Component component) {
-                        return true;
-                    }
-                });
-            }
-        }
-    }
-
-
-    // ///////////////////////////////////////////////////////////////////
 
     /**
      * Mandatory hook.
@@ -376,6 +342,10 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
 
     // ///////////////////////////////////////////////////////////////////
 
+    protected Component getComponentForRegular() {
+        return scalarIfRegular;
+    }
+
     /**
      * Mandatory hook method to build the component to render the model when in
      * {@link Rendering#REGULAR regular} format.
@@ -396,26 +366,109 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
      */
     protected abstract Component createComponentForCompact();
 
+
     /**
-     * Optional hook method.
+     * Optional hook method to return a container holding an empty form.  This can be switched out using {@link #switchFormForInlinePrompt()}.
      *
      * <p>
+     *     Implementations that don't support inline prompts can override and return <tt>null</tt>.
+     * </p>
+     * <p>
      *     If non-null, is added to {@link #scalarTypeContainer}.
      * </p>
      */
-    protected WebMarkupContainer createFormForInlinePromptIfRequired() {
+    protected WebMarkupContainer createInlinePromptFormIfRequired() {
+
+        // (placeholder initially, create dynamically when needed - otherwise infinite loop because form references regular)
+
+        WebMarkupContainer scalarIfRegularInlinePromptForm = new WebMarkupContainer(
+                ID_SCALAR_IF_REGULAR_INLINE_PROMPT_FORM);
+        scalarIfRegularInlinePromptForm.setOutputMarkupId(true);
+        scalarIfRegularInlinePromptForm.setVisible(false);
+
+        return scalarIfRegularInlinePromptForm;
+    }
+
+    private WebMarkupContainer createInlinePromptLinkIfRequired() {
+        final IModel<?> textFieldModel = obtainPromptInlineLinkModelIfAvailable();
+        if(textFieldModel == null) {
+            return null;
+        }
+
+        final WebMarkupContainer inlinePromptLink = new WebMarkupContainer(ID_SCALAR_VALUE_INLINE_PROMPT_LINK);
+        inlinePromptLink.setOutputMarkupId(true);
+
+        final Label editInlineLinkLabel = new Label(ID_SCALAR_VALUE_INLINE_PROMPT_LABEL, textFieldModel);
+        inlinePromptLink.add(editInlineLinkLabel);
+
+        return inlinePromptLink;
+    }
+
+    /**
+     * Optional hook; if returns non null then the model will be used to set up a link representing the
+     * component for inline prompt.
+     */
+    protected IModel<?> obtainPromptInlineLinkModelIfAvailable() {
         return null;
     }
 
-    protected void switchFormForInlinePrompt() {
-        scalarIfRegularInlinePromptForm = (PropertyEditFormPanel) getComponentFactoryRegistry().addOrReplaceComponent(
-                scalarTypeContainer, ID_SCALAR_IF_REGULAR_INLINE_EDIT_FORM, ComponentType.PROPERTY_EDIT_FORM, scalarModel);
+
+    /**
+     * Optional hook to set the visibility of subfields according to editability.
+     *
+     * <p>
+     * Only implementations that support inline prompts need override.
+     * </p>
+     */
+    protected void configureEditVisibility(
+            final MarkupContainer scalarIfRegularFormGroup,
+            final WebMarkupContainer inlinePromptLink) {
     }
 
-    protected Component getComponentForRegular() {
-        return scalarIfRegular;
+    private void configureInlinePromptLinkCallback() {
+
+        final PromptStyle promptStyle = this.scalarModel.getPromptStyle();
+        if(promptStyle == PromptStyle.INLINE) {
+
+            if(inlinePromptLink != null) {
+                inlinePromptLink.add(new AjaxEventBehavior("click") {
+                    @Override
+                    protected void onEvent(final AjaxRequestTarget target) {
+
+                        scalarModel.toEditMode();
+
+                        // dynamically update the edit form.
+                        final PropertyEditFormExecutor formExecutor =
+                                new PropertyEditFormExecutor(ScalarPanelAbstract.this, scalarModel);
+                        scalarModel.setFormExecutor(formExecutor);
+                        scalarModel.setInlinePromptContext(
+                                new ScalarModel.InlinePromptContext(
+                                        getComponentForRegular(),
+                                        scalarIfRegularInlinePromptForm));
+
+                        switchFormForInlinePrompt();
+
+                        getComponentForRegular().setVisible(false);
+                        scalarIfRegularInlinePromptForm.setVisible(true);
+
+                        target.add(scalarTypeContainer);
+                    }
+
+                    @Override
+                    public boolean isEnabled(final Component component) {
+                        return true;
+                    }
+                });
+            }
+        }
     }
 
+    private void switchFormForInlinePrompt() {
+        scalarIfRegularInlinePromptForm = (PropertyEditFormPanel) getComponentFactoryRegistry().addOrReplaceComponent(
+                scalarTypeContainer, ID_SCALAR_IF_REGULAR_INLINE_PROMPT_FORM, ComponentType.PROPERTY_EDIT_FORM, scalarModel);
+    }
+
+
     // ///////////////////////////////////////////////////////////////////
 
     protected void addEditPropertyTo(
@@ -513,8 +566,6 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
         return false;
     }
 
-    // ///////////////////////////////////////////////////////////////////
-
 
     // ///////////////////////////////////////////////////////////////////
 

http://git-wip-us.apache.org/repos/asf/isis/blob/3dccc4c1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.html
index 31538a6..77ce949 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.html
@@ -41,10 +41,10 @@
                             <span class="editing">
 
                                 <a href="#"
-                                   name="scalarValueEditInline"
-                                   class="form-control input-sm scalarValueEditInline"
-                                   wicket:id="scalarValueEditInline">
-                                    <span wicket:id="scalarValueEditInlineLabel"></span>
+                                   name="scalarValueInlinePromptLink"
+                                   class="form-control input-sm scalarValueInlinePromptLink"
+                                   wicket:id="scalarValueInlinePromptLink">
+                                    <span wicket:id="scalarValueInlinePromptLabel"></span>
                                 </a>
 
                                 <wicket:container wicket:id="scalarValueContainer"/>
@@ -67,9 +67,9 @@
             <div class="clearfix"></div>
         </div>
 
-        <div class="inlineEditForm"
-             wicket:id="scalarIfRegularInlineEditForm" >
-            <div><span>property edit form</span></div>
+        <div class="inlinePromptForm"
+             wicket:id="scalarIfRegularInlinePromptForm" >
+            <div><span>[property edit form]</span></div>
         </div>
 
         <wicket:container wicket:id="scalarIfCompact"></wicket:container>

http://git-wip-us.apache.org/repos/asf/isis/blob/3dccc4c1/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 3e72251..c3bdcc6 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
@@ -103,7 +103,7 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
         return createTextField(id);
     }
 
-    protected TextFieldValueModel<T> newTextFieldValueModel() {
+    TextFieldValueModel<T> newTextFieldValueModel() {
         return new TextFieldValueModel<>(this);
     }
 
@@ -123,9 +123,6 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
 
         addStandardSemantics();
 
-        final IModel<T> textFieldModel = textField.getModel();
-
-
 
 
         //
@@ -153,50 +150,31 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
         addEntityActionLinksBelowAndRight(scalarIfRegularFormGroup, entityActions);
 
 
+        return scalarIfRegularFormGroup;
+    }
 
-        //
-        // inline edit
-        //
-
-        this.editInlineLink = new WebMarkupContainer(ID_SCALAR_VALUE_EDIT_INLINE);
-        editInlineLink.setOutputMarkupId(true);
-
-        final Label editInlineLinkLabel = new Label(ID_SCALAR_VALUE_EDIT_INLINE_LABEL, textFieldModel);
-        editInlineLink.add(editInlineLinkLabel);
-
-
-        scalarIfRegularFormGroup.add(editInlineLink);
-
-
-
-
-        //
-        // configure dialog edit vs inline edit
-        //
+    @Override
+    protected void configureEditVisibility(
+            final MarkupContainer scalarIfRegularFormGroup,
+            final WebMarkupContainer inlinePromptLink) {
 
         addEditPropertyTo(scalarIfRegularFormGroup);
-        configureInlinePromptCallback();
 
         if (scalarModel.canEnterEditMode() && scalarModel.getPromptStyle() == PromptStyle.INLINE) {
             textField.setVisibilityAllowed(false);
         } else {
-            editInlineLink.setVisibilityAllowed(false);
+            inlinePromptLink.setVisibilityAllowed(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);
+    protected WebMarkupContainer createInlinePromptFormIfRequired() {
+        return super.createInlinePromptFormIfRequired();
+    }
 
-        return scalarIfRegularInlinePromptForm;
+    @Override
+    protected IModel<T> obtainPromptInlineLinkModelIfAvailable() {
+        return textField.getModel();
     }
 
     private void addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(final Component component) {
@@ -317,7 +295,7 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
     }
 
 
-    protected Fragment getCompactFragment(CompactType type) {
+    Fragment getCompactFragment(CompactType type) {
         Fragment compactFragment;
         switch (type) {
         case INPUT_CHECKBOX:
@@ -349,7 +327,7 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
         textField.setEnabled(false);
         addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
 
-        editInlineLink.setEnabled(false);
+        inlinePromptLink.setEnabled(false);
 
         setTitleAttribute(disableReason);
     }
@@ -358,14 +336,14 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
     protected void onBeforeRenderWhenEnabled() {
         super.onBeforeRenderWhenEnabled();
         textField.setEnabled(true);
-        editInlineLink.setEnabled(true);
+        inlinePromptLink.setEnabled(true);
         setTitleAttribute("");
     }
 
     private void setTitleAttribute(final String titleAttribute) {
         AttributeModifier title = new AttributeModifier("title", Model.of(titleAttribute));
         textField.add(title);
-        editInlineLink.add(title);
+        inlinePromptLink.add(title);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/3dccc4c1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/TextFieldValueModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/TextFieldValueModel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/TextFieldValueModel.java
index b2a290a..cc71bf7 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/TextFieldValueModel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/TextFieldValueModel.java
@@ -68,11 +68,5 @@ public class TextFieldValueModel<T extends Serializable> extends Model<T> {
         }
     }
 
-    // FIXME: a bit of a hack to just use toString(), probably want to format somehow.
-    public String getObjectAsString() {
-        T object = getObject();
-        return object != null ? object.toString() : null;
-    }
-
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/3dccc4c1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
index 6994722..becdc3b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
@@ -123,6 +123,15 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
         return scalarIfRegularFormGroup;
     }
 
+    /**
+     * Inline prompts are <i>not</i> supported by this component.
+     */
+    @Override
+    protected WebMarkupContainer createInlinePromptFormIfRequired() {
+        return null;
+    }
+
+
     private Image asWicketImage(String id) {
         
         final ObjectAdapter adapter = getModel().getObject();

http://git-wip-us.apache.org/repos/asf/isis/blob/3dccc4c1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
index a36adc4..63348b1 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
@@ -25,6 +25,7 @@ import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 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.Model;
 
@@ -114,6 +115,14 @@ public class BooleanPanel extends ScalarPanelAbstract {
         return createCheckBox(ID_SCALAR_IF_COMPACT);
     }
 
+    /**
+     * Inline prompts are <i>not</i> supported by this component.
+     */
+    @Override
+    protected WebMarkupContainer createInlinePromptFormIfRequired() {
+        return null;
+    }
+
     private CheckBoxX createCheckBox(final String id) {
         final CheckBoxX checkBox = new CheckBoxX(id, new Model<Boolean>() {
             private static final long serialVersionUID = 1L;

http://git-wip-us.apache.org/repos/asf/isis/blob/3dccc4c1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.html
index 44757cf..675ffab 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.html
@@ -44,14 +44,12 @@
                                 <span class="scalarValueInput">
                                     <span class="editing">
 
-                                        <wicket:remove>
                                         <a href="#"
-                                           name="scalarValueEditInline"
-                                           class="form-control input-sm scalarValueEditInline"
-                                           xwicket:id="scalarValueEditInline">
-                                            <span xwicket:id="scalarValueEditInlineLabel"></span>
+                                           name="scalarValueInlinePromptLink"
+                                           class="form-control input-sm scalarValueInlinePromptLink"
+                                           wicket:id="scalarValueInlinePromptLink">
+                                            <span wicket:id="scalarValueInlinePromptLabel"></span>
                                         </a>
-                                        </wicket:remove>
 
                                         <span class="autoCompletePlaceholder">
                                             <span wicket:id="entityLink">link or drop down</span>
@@ -75,12 +73,10 @@
                     <div class="clearfix"></div>
                 </div>
 
-                <wicket:remove>
-                <div class="inlineEditForm"
-                     xwicket:id="scalarIfRegularInlineEditForm" >
-                    <div><span>property edit form</span></div>
+                <div class="inlinePromptForm"
+                     wicket:id="scalarIfRegularInlinePromptForm" >
+                    <div><span>[property edit form]</span></div>
                 </div>
-                </wicket:remove>
 
                 <div class="scalarIfCompact"
                      wicket:id="scalarIfCompact" >

http://git-wip-us.apache.org/repos/asf/isis/blob/3dccc4c1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index 5b9fbe8..bc624ce 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -84,7 +84,6 @@ public class ReferencePanel extends ScalarPanelAbstract implements PanelWithChoi
     private static final String KEY_DISABLE_DEPENDENT_CHOICE_AUTO_SELECTION = "isis.viewer.wicket.disableDependentChoiceAutoSelection";
 
     private EntityLinkSelect2Panel entityLink;
-
     Select2 select2;
 
 
@@ -96,8 +95,6 @@ public class ReferencePanel extends ScalarPanelAbstract implements PanelWithChoi
     }
 
     // //////////////////////////////////////
-    // addComponentFor{Compact/Regular}
-    // //////////////////////////////////////
 
     // First called as a side-effect of {@link #beforeRender()}
     @Override
@@ -228,6 +225,17 @@ public class ReferencePanel extends ScalarPanelAbstract implements PanelWithChoi
         return select2;
     }
 
+    @Override
+    protected WebMarkupContainer createInlinePromptFormIfRequired() {
+        return super.createInlinePromptFormIfRequired();
+    }
+
+    @Override
+    protected IModel<?> obtainPromptInlineLinkModelIfAvailable() {
+        return select2.getModel();
+//        return new TextFieldValueModel<>(this);
+    }
+
     // //////////////////////////////////////
 
     // called from buildGui

http://git-wip-us.apache.org/repos/asf/isis/blob/3dccc4c1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.html
index 3b61826..4f05345 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.html
@@ -40,14 +40,12 @@
                             <span class="scalarValueInput">
                                 <span class="editing">
 
-                                    <wicket:remove>
                                     <a href="#"
-                                       name="scalarValueEditInline"
-                                       class="form-control input-sm scalarValueEditInline"
-                                       xwicket:id="scalarValueEditInline">
-                                        <span xwicket:id="scalarValueEditInlineLabel"></span>
+                                       name="scalarValueInlinePromptLink"
+                                       class="form-control input-sm scalarValueInlinePromptLink"
+                                       wicket:id="scalarValueInlinePromptLink">
+                                        <span wicket:id="scalarValueInlinePromptLabel"></span>
                                     </a>
-                                    </wicket:remove>
 
                                     <select class="choices input-sm select2-remote"
                                             style="width: 99.8%;"
@@ -69,13 +67,10 @@
                 </div>
 
 
-                <wicket:remove>
-                    <div class="inlineEditForm"
-                         xwicket:id="scalarIfRegularInlineEditForm" >
-                        <div><span>property edit form</span></div>
-                    </div>
-                </wicket:remove>
-
+                <div class="inlinePromptForm"
+                     wicket:id="scalarIfRegularInlinePromptForm" >
+                    <div><span>[property edit form]</span></div>
+                </div>
 
                 <span class="scalarIfCompact"
                       wicket:id="scalarIfCompact"></span>

http://git-wip-us.apache.org/repos/asf/isis/blob/3dccc4c1/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 c00d172..0e7bc20 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,6 +27,7 @@ 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;
@@ -154,8 +155,19 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
         return new Label(ID_SCALAR_IF_COMPACT, getModel().getObjectAsString());
     }
 
-    
-    protected ChoiceProvider<ObjectAdapterMemento> newChoiceProvider(final List<ObjectAdapterMemento> choicesMementos) {
+    @Override
+    protected WebMarkupContainer createInlinePromptFormIfRequired() {
+        return super.createInlinePromptFormIfRequired();
+    }
+
+    @Override
+    protected IModel<?> obtainPromptInlineLinkModelIfAvailable() {
+        return select2.getModel();
+//        return new TextFieldValueModel<>(this);
+    }
+
+
+    private ChoiceProvider<ObjectAdapterMemento> newChoiceProvider(final List<ObjectAdapterMemento> choicesMementos) {
         return new ObjectAdapterMementoProviderForValueChoices(scalarModel, choicesMementos, wicketViewerSettings);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/3dccc4c1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
index 3e0544c..6552b04 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/bootstrap-overrides.css
@@ -871,13 +871,13 @@ tr.headers th form input {
     height: inherit;
 }
 
-.scalarNameAndValueComponentType .inlineEditForm {
+.scalarNameAndValueComponentType .inlinePromptForm {
     border: 2px solid;
     padding: 10px;
     margin-bottom: 20px
 }
 
-.scalarNameAndValueComponentType .inlineEditForm .form-group {
+.scalarNameAndValueComponentType .inlinePromptForm .form-group {
     padding-left: 5px;
     padding-right: 15px;
 }