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/22 18:06:41 UTC

isis git commit: ISIS-1603: event behaviour to replace with property a link for dummy panel

Repository: isis
Updated Branches:
  refs/heads/ISIS-1603-no-xeditable 636f8f467 -> a4b5c53bf


ISIS-1603: event behaviour to replace with property a link for dummy panel


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

Branch: refs/heads/ISIS-1603-no-xeditable
Commit: a4b5c53bf174501dd90949b5ae2e11a678bd8ecf
Parents: 636f8f4
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Apr 22 19:06:35 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat Apr 22 19:06:35 2017 +0100

----------------------------------------------------------------------
 core/pom.xml                                    |  13 --
 core/viewer-wicket-ui/pom.xml                   |   5 -
 .../scalars/ScalarPanelTextFieldAbstract.html   |   8 +-
 .../scalars/ScalarPanelTextFieldAbstract.java   | 132 ++-----------------
 4 files changed, 19 insertions(+), 139 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a4b5c53b/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 6fb09a7..150c5f1 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -149,7 +149,6 @@
         <select2.version>4.0.3</select2.version>
 
         <jquery-ui.version>1.11.4</jquery-ui.version>
-        <x-editable.version>1.5.1</x-editable.version>
 
         <guice.version>4.1.0</guice.version>
         <picocontainer.version>2.15</picocontainer.version>
@@ -1627,18 +1626,6 @@ ${license.additional-notes}
 
             <dependency>
                 <groupId>org.webjars</groupId>
-                <artifactId>x-editable-bootstrap</artifactId>
-                <version>${x-editable.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>org.webjars</groupId>
-                        <artifactId>bootstrap</artifactId>
-                    </exclusion>
-                </exclusions>
-            </dependency>
-
-            <dependency>
-                <groupId>org.webjars</groupId>
                 <artifactId>select2</artifactId>
                 <version>${select2.version}</version>
             </dependency>

http://git-wip-us.apache.org/repos/asf/isis/blob/a4b5c53b/core/viewer-wicket-ui/pom.xml
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/pom.xml b/core/viewer-wicket-ui/pom.xml
index 43a9353..22df597 100644
--- a/core/viewer-wicket-ui/pom.xml
+++ b/core/viewer-wicket-ui/pom.xml
@@ -94,11 +94,6 @@
 		</dependency>
 
 		<dependency>
-			<groupId>org.webjars</groupId>
-			<artifactId>x-editable-bootstrap</artifactId>
-		</dependency>
-
-		<dependency>
             <groupId>org.webjars</groupId>
             <artifactId>select2</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/isis/blob/a4b5c53b/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 098988a..8f4cc42 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
@@ -26,7 +26,7 @@
         <wicket:extend>
             <wicket:container wicket:id="scalarValueContainer"/>
 
-            <wicket:container wicket:id="scalarValueEditInlineContainer">
+            <div wicket:id="scalarValueEditInlineContainer">
                 <a
                         href="#"
                         name="scalarValueEditInline"
@@ -35,9 +35,11 @@
                     <span wicket:id="scalarValueEditInlineLabel"></span>
                 </a>
 
-                <wicket:container wicket:id="propertyEditForm"/>
+                <div wicket:id="propertyEditForm">
+                    <div><span>property edit form</span></div>
+                </div>
 
-            </wicket:container>
+            </div>
 
             <wicket:fragment wicket:id="text">
                 <input

http://git-wip-us.apache.org/repos/asf/isis/blob/a4b5c53b/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 d74909c..e00a34b 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
@@ -29,8 +29,6 @@ import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxCallListener;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -40,15 +38,12 @@ import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.IValidator;
 import org.apache.wicket.validation.ValidationError;
 
 import org.apache.isis.applib.annotation.PropertyEditStyle;
 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;
@@ -60,11 +55,6 @@ import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.Enti
 import org.apache.isis.viewer.wicket.ui.components.widgets.bootstrap.FormGroup;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 
-import de.agilecoders.wicket.extensions.markup.html.bootstrap.xeditable.XEditableBehavior;
-import de.agilecoders.wicket.extensions.markup.html.bootstrap.xeditable.XEditableOptions;
-import de.agilecoders.wicket.jquery.Key;
-import de.agilecoders.wicket.jquery.util.Json;
-
 /**
  * Adapter for {@link ScalarPanelAbstract scalar panel}s that are implemented
  * using a simple {@link TextField}.
@@ -156,7 +146,8 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
 
 
         this.scalarValueEditInlineContainer = new WebMarkupContainer("scalarValueEditInlineContainer");
-        editInlineLink = new WebMarkupContainer(ID_SCALAR_VALUE_EDIT_INLINE);
+        scalarValueEditInlineContainer.setOutputMarkupId(true);
+        this.editInlineLink = new WebMarkupContainer(ID_SCALAR_VALUE_EDIT_INLINE);
         editInlineLink.setOutputMarkupId(true);
         scalarValueEditInlineContainer.add(editInlineLink);
 
@@ -166,115 +157,20 @@ public abstract class ScalarPanelTextFieldAbstract<T extends Serializable> exten
         final Label editInlineLinkLabel = new Label(ID_SCALAR_VALUE_EDIT_INLINE_LABEL, textFieldModel);
         editInlineLink.add(editInlineLinkLabel);
 
-        if(scalarModel.getEditStyle() == PropertyEditStyle.INLINE) {
-
-            final XEditableOptions options = new XEditableOptions() {
-                {
-                    put(new Key<String>("toggle"), "click");
-                    if(scalarModel.isRequired()) {
-                        put(new Key<Json.RawValue>("validate"), new Json.RawValue(
-                                "function (value) { if (value == '') { return 'Required field'; } }"));
-                    }
-                    //                    put(new Key<Json.RawValue>("error"), new Json.RawValue(
-                    //                            "function(response, newValue) {\n"
-                    //                                    + "    if(response.status === 500) {\n"
-                    //                                    + "        return 'Service unavailable. Please try later.';\n"
-                    //                                    + "    } else {\n"
-                    //                                    + "        return response.responseText;\n"
-                    //                                    + "    }\n"
-                    //                                    + "}"));
-
-                }
-            }.withMode("inline");
-
-            options.withDefaultValue(asString(textFieldModel));
-
-            XEditableBehavior xEditable = new XEditableBehavior(options) {
-                @Override
-                protected void onSave(final AjaxRequestTarget target, final String value) {
-
-                    scalarModel.setObjectAsString(value);
-
-                    ObjectAdapter adapter = scalarModel.getParentObjectAdapterMemento()
-                            .getObjectAdapter(AdapterManager.ConcurrencyChecking.NO_CHECK, getPersistenceSession(),
-                                    getSpecificationLoader());
-
-                    scalarModel.applyValue(adapter);
-
-                    target.add(editInlineLink);
-
-                    options.withDefaultValue(asString(textFieldModel));
-                }
-
-                protected AjaxEventBehavior newSaveListener() {
-                    return new AjaxEventBehavior("save") {
-                        @Override
-                        protected void onEvent(AjaxRequestTarget target) {
-
-                            final ObjectAdapter currentValue = scalarModel.getObject();
-                            StringValue newValue = RequestCycle.get().getRequest().getRequestParameters().getParameterValue("newValue");
-
-                            try {
-                                onSave(target, newValue.toString());
-                            } catch (Exception ex) {
-                                scalarModel.setObject(currentValue);
-
-                                final String value = asString(textFieldModel);
-                                options.withDefaultValue(value);
-
-                                //
-                                // hmmm... thought had this working, but turns out that can't rely on the .control-group to exist
-                                //
-                                // also: even if get going, still need to reset the value of the inline edit, and also
-                                // to handle updates to the title (eg Wicket event bus, I think)
-                                //
-                                final String message = ex.getMessage();
-                                target.appendJavaScript(
-                                        "( function() { "
-                                                + "var component = $(\"#" + editInlineLink.getMarkupId() + "\"); "
-                                                + "var parent = $(component).parent(); "
-
-                                                + "var controlGroup = $(parent).find(\".control-group\"); "
-                                                + "var errorBlock = $(parent).find(\".editable-error-block\"); "
-
-                                                + "$(component).editable(\"show\"); "
-                                                + "$(controlGroup).addClass(\"has-error\"); "
-                                                + "$(errorBlock).css(\"display\", \"block\"); "
-                                                + "$(errorBlock).text(\"" + message + "\"); "
-
-                                                + "} )();");
-                            }
-
-                        }
-
-                        @Override
-                        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
-                            super.updateAjaxAttributes(attributes);
-                            attributes.getDynamicExtraParameters().add("return [{'name':'newValue', 'value': attrs.event.extraData.newValue}]");
-
-                            AjaxCallListener myAjaxCallListener = new AjaxCallListener() {
-
-                                @Override
-                                public CharSequence getBeforeHandler(Component component) {
-                                    return ""; // "var myEl = $(\"#" + component.getMarkupId() + "\"); console.log(myEl);";
-                                }
-
-                                @Override public CharSequence getFailureHandler(final Component component) {
-                                    return "alert(\"failure!!!\")";
-                                }
-                            };
-                            attributes.getAjaxCallListeners().add(myAjaxCallListener);
-
-                        }
-                    };
-                }
-
-            };
-
+        editInlineLink.add(new AjaxEventBehavior("click") {
+            @Override
+            protected void onEvent(final AjaxRequestTarget target) {
+                editInlineLink.setVisible(false);
+                propertyEditForm.setVisible(true);
+                target.add(scalarValueEditInlineContainer);
+            }
 
-            editInlineLink.add(xEditable);
-        }
+            @Override public boolean isEnabled(final Component component) {
+                return true;
+            }
+        });
 
+        propertyEditForm.setVisible(false);
 
         final MarkupContainer scalarIfRegularFormGroup = createScalarIfRegularFormGroup();