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:40 UTC

[35/43] isis git commit: ISIS-1603: improvements to the tabbing experience.

ISIS-1603: improvements to the tabbing experience.


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

Branch: refs/heads/master
Commit: 0d95f410cab614f800b313298d6f698f3c8d060f
Parents: 8d06152
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Apr 27 15:38:56 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Apr 27 15:38:56 2017 +0100

----------------------------------------------------------------------
 .../serviceactions/ServiceActionsPanel.html     |  2 +-
 .../actions/ActionParametersFormPanel.java      |  3 +-
 .../icontitle/EntityIconAndTitlePanel.html      |  2 +-
 .../ui/components/header/HeaderPanel.html       |  4 +-
 .../property/PropertyEditFormPanel.java         |  3 +-
 .../scalars/ScalarModelSubscriber.java          |  6 +--
 .../components/scalars/ScalarPanelAbstract.java | 46 ++++++++++++--------
 .../scalars/ScalarPanelTextFieldAbstract.java   |  7 ++-
 .../scalars/reference/ReferencePanel.java       | 30 +++++++++++++
 .../wicket/ui/pages/bootstrap-overrides.css     | 17 ++++++++
 .../ui/pages/jquery.isis.wicket.viewer.js       | 12 ++++-
 .../ui/panels/PromptFormPanelAbstract.java      |  7 ++-
 12 files changed, 103 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html
index 8b51434..f80ca9c 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionsPanel.html
@@ -22,7 +22,7 @@
     <body>
         <wicket:panel>
             <li class="dropdown" wicket:id="menuItems">
-                <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"><span wicket:id="name"></span> <span class="caret"></span></a>
+                <a tabindex="-1" href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"><span wicket:id="name"></span> <span class="caret"></span></a>
                 <ul wicket:id="topMenu" class="dropdown-menu scrollable-menu multi-level" role="menu">
                     <li wicket:id="subMenuItems">
                         <wicket:container wicket:id="content"></wicket:container>

http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
index 0ee44c9..be49fca 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
@@ -43,7 +43,6 @@ import org.apache.isis.viewer.wicket.ui.panels.PromptFormPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.components.property.PropertyEditFormPanel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarModelSubscriber;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
-import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel.ScalarModelProvider;
 import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 
@@ -138,7 +137,7 @@ public class ActionParametersFormPanel extends PromptFormPanelAbstract<ActionMod
         }
 
         @Override
-        public void onUpdate(AjaxRequestTarget target, ScalarModelProvider provider) {
+        public void onUpdate(AjaxRequestTarget target, ScalarPanelAbstract scalarPanel) {
 
             final ActionModel actionModel = getActionModel();
             

http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.html
index 4c919af..d7165ef 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.html
@@ -21,7 +21,7 @@
     <body>
         <wicket:panel>
              <span wicket:id="entityLinkWrapper" class="entityIconAndTitlePanel entityIconAndTitleComponentType">
-                 <a href="#" wicket:id="entityLink" class="entityUrlSource">
+                 <a tabindex="-1" href="#" wicket:id="entityLink" class="entityUrlSource">
                      <span wicket:id="entityFontAwesome"></span>
                      <img wicket:id="entityImage" class="entityImage"/>
                      <span wicket:id="entityTitle" class="entityTitle">[title]</span>

http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/header/HeaderPanel.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/header/HeaderPanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/header/HeaderPanel.html
index 889bc50..e887868 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/header/HeaderPanel.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/header/HeaderPanel.html
@@ -31,7 +31,7 @@
                         <span class="icon-bar"></span>
                         <span class="icon-bar"></span>
                     </button>
-                    <a class="navbar-brand" wicket:id="applicationName">
+                    <a tabindex="-1" class="navbar-brand" wicket:id="applicationName">
                         <span wicket:id="brandText"></span>
                         <img alt="Brand" wicket:id="brandLogo"/>
                     </a>
@@ -39,7 +39,7 @@
                 <div class="navbar-header navbar-right">
                     <ul class="nav navbar-nav tertiary">
                         <li class="dropdown">
-                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+                            <a tabindex="-1" href="#" class="dropdown-toggle" data-toggle="dropdown">
                                 <i class="fa fa-fw fa-user"></i> <span wicket:id="userName"></span><span class="caret"></span>
                             </a>
                             <ul wicket:id="tertiaryMenuBar" class="dropdown-menu" role="menu" style="min-width: 0px;">

http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditFormPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditFormPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditFormPanel.java
index 2c6719e..37ebf3b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditFormPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditFormPanel.java
@@ -37,7 +37,6 @@ 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.scalars.ScalarModelSubscriber;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
-import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel.ScalarModelProvider;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.panels.PromptFormPanelAbstract;
 
@@ -114,7 +113,7 @@ public class PropertyEditFormPanel extends PromptFormPanelAbstract<ScalarModel>
 
         @Override
         public void onUpdate(
-                final AjaxRequestTarget target, final ScalarModelProvider provider) {
+                final AjaxRequestTarget target, final ScalarPanelAbstract scalarPanel) {
 
         }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarModelSubscriber.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarModelSubscriber.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarModelSubscriber.java
index 647d903..30977de 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarModelSubscriber.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarModelSubscriber.java
@@ -18,12 +18,10 @@ package org.apache.isis.viewer.wicket.ui.components.scalars;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
 
-import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel.ScalarModelProvider;
-
 public interface ScalarModelSubscriber {
 
-    void onUpdate(AjaxRequestTarget target, ScalarModelProvider provider);
+    void onUpdate(AjaxRequestTarget target, ScalarPanelAbstract scalarPanel);
 
-    void onError(AjaxRequestTarget target, ScalarModelProvider provider);
+    void onError(AjaxRequestTarget target, ScalarPanelAbstract scalarPanel);
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/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 e70c846..f334f01 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
@@ -56,7 +56,6 @@ import org.apache.isis.viewer.wicket.ui.components.property.PropertyEditFormExec
 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;
 import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisBlobOrClobPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.BooleanPanel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel;
@@ -67,7 +66,7 @@ import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 
-public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> implements ScalarModelProvider {
+public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> implements ScalarModelSubscriber {
 
     private static final long serialVersionUID = 1L;
 
@@ -263,11 +262,16 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
                 }
             }
         }
+        if(scalarModel.getPromptStyle() != PromptStyle.INLINE) {
+            getScalarValueComponent().add(new AttributeAppender("tabindex", "-1"));
+        }
 
         getRendering().buildGui(this);
         addCssForMetaModel();
 
-        addFormComponentBehaviour();
+        notifyOnChange(this);
+        addFormComponentBehaviourToUpdateSubscribers();
+
     }
 
     /**
@@ -312,6 +316,7 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
 
     static class ScalarUpdatingBehavior extends AjaxFormComponentUpdatingBehavior {
         private static final long serialVersionUID = 1L;
+
         private final ScalarPanelAbstract scalarPanel;
 
         private ScalarUpdatingBehavior(final ScalarPanelAbstract scalarPanel) {
@@ -324,10 +329,6 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
             for (ScalarModelSubscriber subscriber : scalarPanel.subscribers) {
                 subscriber.onUpdate(target, scalarPanel);
             }
-
-            // hmmm... this doesn't seem to be picked up...
-            target.appendJavaScript(
-                    String.format("Wicket.Event.publish(Isis.Topic.FOCUS_FIRST_ACTION_PARAMETER, '%s')", scalarPanel.getMarkupId()));
         }
 
         @Override
@@ -345,11 +346,7 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
         subscribers.add(subscriber);
     }
 
-    private void addFormComponentBehaviour() {
-        if (subscribers.isEmpty()) {
-            return;
-        }
-
+    private void addFormComponentBehaviourToUpdateSubscribers() {
         Component scalarValueComponent = getScalarValueComponent();
         if(scalarValueComponent == null) {
             return;
@@ -360,8 +357,27 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
         scalarValueComponent.add(new ScalarUpdatingBehavior(this));
     }
 
+    // //////////////////////////////////////
+
+    @Override
+    public void onUpdate(
+            final AjaxRequestTarget target, final ScalarPanelAbstract scalarPanel) {
+
+        target.appendJavaScript(
+                String.format("Wicket.Event.publish(Isis.Topic.FOCUS_FIRST_PARAMETER, '%s')", getMarkupId()));
+    }
+
+
+    @Override
+    public void onError(
+            final AjaxRequestTarget target, final ScalarPanelAbstract scalarPanel) {
+
+    }
+
+
     // ///////////////////////////////////////////////////////////////////
 
+
     public enum Rendering {
         /**
          * Does not show labels, eg for use in tables
@@ -639,11 +655,5 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
         target.add(this);
     }
 
-    // ///////////////////////////////////////////////////////////////////
-
-    @Override
-    public AdapterManager getAdapterManager() {
-        return getPersistenceSession();
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/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 245e05f..e27a358 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
@@ -39,6 +39,7 @@ import org.apache.wicket.validation.IValidator;
 import org.apache.wicket.validation.ValidationError;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facets.SingleIntValueFacet;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
@@ -62,7 +63,7 @@ import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
  * This implementation is for panels that use a textfield/text area.
  * </p>
  */
-public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> extends ScalarPanelAbstract {
+public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> extends ScalarPanelAbstract implements TextFieldValueModel.ScalarModelProvider {
 
     private static final long serialVersionUID = 1L;
 
@@ -342,6 +343,10 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
         return settings;
     }
 
+    @Override
+    public AdapterManager getAdapterManager() {
+        return getPersistenceSession();
+    }
 
 }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/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 a600b68..92e3fb2 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
@@ -26,6 +26,7 @@ import com.google.common.collect.Lists;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.IModel;
@@ -49,6 +50,7 @@ import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.scalars.PanelWithChoices;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelSelect2Abstract;
 import org.apache.isis.viewer.wicket.ui.components.widgets.bootstrap.FormGroup;
 import org.apache.isis.viewer.wicket.ui.components.widgets.entitysimplelink.EntityLinkSimplePanel;
@@ -150,6 +152,7 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract implements PanelW
             }
         });
 
+
         return formGroup;
     }
 
@@ -230,6 +233,7 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract implements PanelW
 
 
 
+
     // //////////////////////////////////////
     // onBeforeRender*
     // //////////////////////////////////////
@@ -455,6 +459,30 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract implements PanelW
 
     
     // //////////////////////////////////////
+
+    @Override
+    public void onUpdate(
+            final AjaxRequestTarget target, final ScalarPanelAbstract scalarPanel) {
+
+        target.appendJavaScript(
+                String.format("Wicket.Event.publish(Isis.Topic.CLOSE_SELECT2, '%s')", getMarkupId()));
+
+
+        // super.onUpdate(target, scalarPanel);
+//        target.appendJavaScript("console.log(\"ReferencePanel : changed\")");
+//        target.appendJavaScript("console.log(" + jQuery(scalarPanel) + ".find(\"select\"));");
+//        target.appendJavaScript("" + jQuery(scalarPanel) + ".find(\"select\").focus();");
+    }
+
+    private static String jQuery(final ScalarPanelAbstract scalarPanel) {
+        return "$(" + markupId(scalarPanel) + ")";
+    }
+
+    private static String markupId(final ScalarPanelAbstract scalarPanel) {
+        return "\"#" + scalarPanel.getMarkupId() + "\"";
+    }
+
+    // //////////////////////////////////////
     // helpers querying model state
     // //////////////////////////////////////
 
@@ -496,3 +524,5 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract implements PanelW
     }
 
 }
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/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 7001b98..df8b700 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
@@ -896,3 +896,20 @@ tr.headers th form input {
 .referencePanel .inlinePrompt .entityIconAndTitlePanel .entityTitle {
     display: none;
 }
+
+#container  a:focus,
+#container  .btn:focus,
+#container  input:focus,
+#container  :focus {
+//    outline-color: darkorange;
+//    outline-color: sienna;
+//    outline-color: darkred;
+    outline-color: maroon;
+    outline-style: solid;
+    outline-width: 2px;
+}
+
+#container  a.edit:focus {
+    padding: 3px;
+}
+

http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
index 8c91219..24b391e 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/jquery.isis.wicket.viewer.js
@@ -27,6 +27,7 @@ $(function() {
     window.Isis = {
         Topic: {
             OPEN_IN_NEW_TAB: 'openInNewTab',
+            CLOSE_SELECT2: 'closeSelect2',
             FOCUS_FIRST_PARAMETER: 'focusFirstParameter',
             FOCUS_FIRST_PROPERTY: 'focusFirstProperty'
         },
@@ -79,6 +80,15 @@ $(function() {
         if(win) { win.focus(); }
     });
 
+    Wicket.Event.subscribe(Isis.Topic.CLOSE_SELECT2, function(jqEvent, panelId) {
+        setTimeout(function() {
+            var $panel = $('#'+panelId);
+             console.log($panel);
+            $($panel).find('select').select2('close');
+            $($panel).find('select').filter(':visible:first').focus();
+        }, 0);
+    });
+
     Wicket.Event.subscribe(Isis.Topic.FOCUS_FIRST_PARAMETER, function(jqEvent, modalWindowId) {
         setTimeout(function() {
             $('#'+modalWindowId).find('.inputFormTable.parameters').find('input,textarea,select').filter(':visible:first').focus();
@@ -87,7 +97,7 @@ $(function() {
 
     Wicket.Event.subscribe(Isis.Topic.FOCUS_FIRST_PROPERTY, function(jqEvent) {
         setTimeout(function() {
-            $(document).find('a.scalarValueEditInline').filter(':visible:first').focus();
+            $(document).find('a.scalarValueInlinePromptLink').filter(':visible:first').focus();
         }, 0);
     });
 

http://git-wip-us.apache.org/repos/asf/isis/blob/0d95f410/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
index 8a20f08..786d0c9 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormPanelAbstract.java
@@ -44,7 +44,6 @@ import org.apache.isis.viewer.wicket.model.models.FormExecutor;
 import org.apache.isis.viewer.wicket.model.models.HasFormExecutor;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarModelSubscriber;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
-import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
 import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.FormFeedbackPanel;
 import org.apache.isis.viewer.wicket.ui.errors.JGrowlBehaviour;
 import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
@@ -221,10 +220,10 @@ public abstract class PromptFormPanelAbstract<T extends IModel<?> & HasFormExecu
                 final Form<?> form);
 
         @Override
-        public void onError(AjaxRequestTarget target, TextFieldValueModel.ScalarModelProvider provider) {
-            if(provider instanceof Component) {
+        public void onError(AjaxRequestTarget target, ScalarPanelAbstract scalarPanel) {
+            if(scalarPanel instanceof Component) {
                 // ensure that any feedback error associated with the providing component is shown.
-                target.add((Component)provider);
+                target.add(scalarPanel);
             }
         }