You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/08/24 19:06:01 UTC

[isis] branch master updated: ISIS-3172: WicketViewer Xray support for ScalarPanelFormFieldAbstract

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 6afa5beb95 ISIS-3172: WicketViewer Xray support for ScalarPanelFormFieldAbstract
6afa5beb95 is described below

commit 6afa5beb9553d41fd5b4838a5361b20dea301f03
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Aug 24 21:05:53 2022 +0200

    ISIS-3172: WicketViewer Xray support for ScalarPanelFormFieldAbstract
---
 .../webapp/wicket/jdo/DemoAppWicketJdo.java        |  2 +-
 .../webapp/wicket/jpa/DemoAppWicketJpa.java        |  2 +-
 .../scalars/ScalarPanelFormFieldAbstract.html      |  7 --
 .../scalars/ScalarPanelFormFieldAbstract.java      | 17 ++++-
 ...html => ScalarPanelFormFieldAbstract_xray.html} |  2 +
 .../scalars/reference/ReferencePanel.java          |  1 -
 .../isis/viewer/wicket/ui/util/WktXray.java}       | 34 +++------
 .../viewer/wicketapp/config/DebugInitWkt.java      |  3 +-
 .../wicketapp/config/WicketViewerXrayEnable.java   | 83 ++++++++++++++++++++++
 9 files changed, 112 insertions(+), 39 deletions(-)

diff --git a/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java b/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
index 109483fb67..96a1be9576 100644
--- a/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
+++ b/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
@@ -67,7 +67,7 @@ import demoapp.webapp.wicket.common.ui.DemoAppWicketCommon;
     IsisModuleValMarkdownPersistenceJdoDn.class,
 
     //XrayEnable.class // for debugging only
-    //WicketViewerXray.Enable.class // for debugging only
+    //WicketViewerXrayEnable.class // for debugging only
 })
 //@Log4j2
 public class DemoAppWicketJdo extends SpringBootServletInitializer {
diff --git a/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java b/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java
index 3001caae6a..a90e96ae04 100644
--- a/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java
+++ b/examples/demo/wicket/jpa/src/main/java/demoapp/webapp/wicket/jpa/DemoAppWicketJpa.java
@@ -68,7 +68,7 @@ import demoapp.webapp.wicket.common.ui.DemoAppWicketCommon;
     IsisModuleValMarkdownPersistenceJpa.class,
 
     //XrayEnable.class // for debugging only
-    //WicketViewerXray.Enable.class // for debugging only
+    //WicketViewerXrayEnable.class // for debugging only
 })
 //@Log4j2
 public class DemoAppWicketJpa extends SpringBootServletInitializer {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract.html b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract.html
index 62a6545143..b4ce467fb9 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract.html
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract.html
@@ -115,47 +115,40 @@
 		<!-- INPUT FRAGMENTS -->
 
 		<wicket:fragment wicket:id="fragment-input-text">
-			<!-- fragment-input-text -->
 			<input wicket:id="scalarValue"
 				type="text" name="scalarValue"
 				class="form-control form-control-sm scalarValue"/>
 		</wicket:fragment>
 
 		<wicket:fragment wicket:id="fragment-input-textarea">
-			<!-- fragment-input-textarea -->
 			<textarea wicket:id="scalarValue" name="scalarValue"
 				class="form-control form-control-sm scalarValue"
 				data-isis-focus="true" />
 		</wicket:fragment>
 		
 		<wicket:fragment wicket:id="fragment-input-checkbox">
-			<!-- fragment-input-checkbox -->
 	        <input wicket:id="scalarValue" type="checkbox" name="scalarValue"
 	        	class="scalarValue"/>
 		</wicket:fragment>
 		
 		<wicket:fragment wicket:id="fragment-input-file">
-			<!-- fragment-input-file -->
 			<span class="uploadFile form-text">
       			<input wicket:id="scalarValue" type="file" name="scalarValue"/>
          	</span>
 		</wicket:fragment>
 		
 		<wicket:fragment wicket:id="fragment-input-date">
-			<!-- fragment-input-date -->
 			<input wicket:id="scalarValue"
 				type="text" name="scalarValue"
 				class="form-control form-control-sm scalarValue"/>
 		</wicket:fragment>
 		
 		<wicket:fragment wicket:id="fragment-input-select">
-			<!-- fragment-input-select -->
 			<select wicket:id="scalarValue"
 				class="choices form-control-sm select2-remote"/>
 		</wicket:fragment>
 		
 		<wicket:fragment wicket:id="fragment-input-select2">
-			<!-- fragment-input-select2 -->
 			<span wicket:id="entityLink" class="w-100">link or drop down</span>
 			<span wicket:id="entityTitleIfNull">(none)</span>
 		</wicket:fragment>
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract.java
index 4b8cb94cc3..928632ad47 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract.java
@@ -36,6 +36,7 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarFragmentFactory
 import org.apache.isis.viewer.wicket.ui.components.widgets.bootstrap.FormGroup;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 import org.apache.isis.viewer.wicket.ui.util.WktTooltips;
+import org.apache.isis.viewer.wicket.ui.util.WktXray;
 
 import lombok.val;
 
@@ -135,8 +136,11 @@ extends ScalarPanelAbstract2 {
 
         val renderScenario = getRenderScenario();
 
-        //XXX debug
-        Wkt.labelAdd(fieldFrame, "debugLabel", String.format("%s", renderScenario.name()));
+        //XXX debug (wicket viewer x-ray)
+        WktXray.ifEnabledDo(()->{
+            val debugInfo = String.format("%s", renderScenario.name());
+            Wkt.labelAdd(fieldFrame, "xrayLabel", debugInfo);
+        });
 
         if(renderScenario.isReadonly()) {
             fieldFrame.add(FieldFrame.SCALAR_VALUE_CONTAINER
@@ -217,6 +221,15 @@ extends ScalarPanelAbstract2 {
         target.ifPresent(this::formComponentAddTo);
     }
 
+    // -- XRAY
+
+    @Override
+    public String getVariation() {
+        return WktXray.isEnabled()
+                ? "xray"
+                : super.getVariation();
+    }
+
     // -- HELPER
 
     private void formComponentEnable(final boolean b) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract.html b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract_xray.html
similarity index 98%
copy from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract.html
copy to viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract_xray.html
index 62a6545143..be78b667f0 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract.html
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelFormFieldAbstract_xray.html
@@ -97,6 +97,8 @@
 		<wicket:fragment wicket:id="fragment-fieldFrame-withoutLink-editing">
 			<span class="scalarValueInput input-group">
 				<!-- input format (when editing or action dialog) -->
+				<span wicket:id="xrayLabel" 
+					class="badge rounded-pill text-bg-warning">xrayLabel</span>
 				<wicket:container 
 					wicket:id="container-scalarValue"/>
 			
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index 87c0cae502..c12e8116b8 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -115,7 +115,6 @@ public class ReferencePanel extends ScalarPanelSelectAbstract {
         return this.entityLink;
     }
 
-
     private void addSelect2Semantics(final Select2 select2) {
         val scalarModel = scalarModel();
 
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/WicketViewerXray.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktXray.java
similarity index 51%
rename from viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/WicketViewerXray.java
rename to viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktXray.java
index 4d2c6242f9..2a9d88847c 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/WicketViewerXray.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/WktXray.java
@@ -16,39 +16,23 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.viewer.wicket.viewer.wicketapp.config;
-
-import org.apache.wicket.protocol.http.WebApplication;
-import org.springframework.context.annotation.Configuration;
-
-import org.apache.isis.viewer.wicket.model.isis.WicketApplicationInitializer;
-import org.apache.isis.viewer.wicket.viewer.IsisModuleViewerWicketViewer;
+package org.apache.isis.viewer.wicket.ui.util;
 
 import lombok.Getter;
+import lombok.NonNull;
+import lombok.Setter;
 import lombok.experimental.UtilityClass;
 
 @UtilityClass
-public class WicketViewerXray {
+public class WktXray {
 
-    /**
-     * Activates visual debugging mode for the Wicket Viewer.
-     * Use for troubleshooting and bug hunting.
-     * <p>
-     * Not imported by {@link IsisModuleViewerWicketViewer}.
-     */
-    @Configuration
-    public static class Enable
-        implements WicketApplicationInitializer {
+    @Getter @Setter
+    private boolean enabled = false;
 
-        @Override
-        public void init(final WebApplication webApplication) {
-            WicketViewerXray.enabled = true;
-            webApplication.getDebugSettings()
-                .setOutputMarkupContainerClassName(true);
+    public void ifEnabledDo(final @NonNull Runnable runnable) {
+        if(isEnabled()) {
+            runnable.run();
         }
     }
 
-    @Getter
-    private boolean enabled = false;
-
 }
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/DebugInitWkt.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/DebugInitWkt.java
index 7405f94aa1..49f7bddb67 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/DebugInitWkt.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/DebugInitWkt.java
@@ -38,8 +38,7 @@ public class DebugInitWkt implements WicketApplicationInitializer {
     public void init(final WebApplication webApplication) {
 
         webApplication.getDebugSettings()
-            .setAjaxDebugModeEnabled(configuration.getViewer().getWicket().isAjaxDebugMode())
-            .setOutputMarkupContainerClassName(WicketViewerXray.isEnabled());
+            .setAjaxDebugModeEnabled(configuration.getViewer().getWicket().isAjaxDebugMode());
 
         if(systemEnvironment.isPrototyping()
                 && configuration.getViewer().getWicket().getDevelopmentUtilities().isEnable()) {
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/WicketViewerXrayEnable.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/WicketViewerXrayEnable.java
new file mode 100644
index 0000000000..36fc14247e
--- /dev/null
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/WicketViewerXrayEnable.java
@@ -0,0 +1,83 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.wicket.viewer.wicketapp.config;
+
+import org.apache.wicket.protocol.http.WebApplication;
+import org.springframework.context.annotation.Configuration;
+
+import org.apache.isis.viewer.wicket.model.isis.WicketApplicationInitializer;
+import org.apache.isis.viewer.wicket.ui.util.WktXray;
+import org.apache.isis.viewer.wicket.viewer.IsisModuleViewerWicketViewer;
+
+/**
+ * Activates visual debugging mode for the Wicket Viewer.
+ * Use for troubleshooting and bug hunting.
+ * <p>
+ * Not imported by {@link IsisModuleViewerWicketViewer}.
+ */
+@Configuration
+public class WicketViewerXrayEnable
+implements WicketApplicationInitializer {
+
+    @Override
+    public void init(final WebApplication webApplication) {
+        WktXray.setEnabled(true);
+        webApplication.getDebugSettings()
+            .setOutputMarkupContainerClassName(true);
+
+        //debug
+        //replace the resource locator
+//        val defaultResourceStreamLocator = webApplication.getResourceSettings()
+//            .getResourceStreamLocator();
+//        webApplication.getResourceSettings()
+//            .setResourceStreamLocator(new XrayResourceStreamLocator(defaultResourceStreamLocator));
+    }
+
+//debug
+//    @RequiredArgsConstructor
+//    private static class XrayResourceStreamLocator
+//    implements IResourceStreamLocator {
+//        private final IResourceStreamLocator delegate;
+//
+//        @Override
+//        public IResourceStream locate(final Class<?> clazz, final String path) {
+//            return delegate.locate(clazz, path);
+//        }
+//
+//        @Override
+//        public IResourceStream locate(final Class<?> clazz, final String path,
+//                final String style, final String variation, final Locale locale,
+//                final String extension, final boolean strict) {
+//            if(variation!=null) {
+//                val result = delegate.locate(clazz, path, style, variation, locale, extension, strict);
+//                System.err.printf("variation %s:%s->%b%n", clazz.getName(), variation, result!=null);
+//            }
+//
+//            return delegate.locate(clazz, path, style, variation, locale, extension, strict);
+//        }
+//
+//        @Override
+//        public IResourceNameIterator newResourceNameIterator(final String path,
+//                final Locale locale, final String style, final String variation,
+//                final String extension, final boolean strict) {
+//            return delegate.newResourceNameIterator(path, locale, style, variation, extension, strict);
+//        }
+//    }
+
+}