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 2013/12/20 21:36:03 UTC
git commit: ISIS-638: clipboard panel now subscribes for itself...
Updated Branches:
refs/heads/master bb2d31e1d -> f031f27b9
ISIS-638: clipboard panel now subscribes for itself...
... rather than relying on the EntityIconAndTitlePanel.
This latter now strips off any UI hints.
In addition:
* any out-of-range or non-parseable/invalid hints are ignored.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/f031f27b
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/f031f27b
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/f031f27b
Branch: refs/heads/master
Commit: f031f27b92f710539a706c9d52f27777e2e355dd
Parents: bb2d31e
Author: Dan Haywood <da...@apache.org>
Authored: Fri Dec 20 18:37:15 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Fri Dec 20 18:37:15 2013 +0000
----------------------------------------------------------------------
.../model/hints/UiHintsBroadcastEvent.java | 15 ++-
.../model/hints/UiHintsEventAbstract.java | 24 +++++
.../wicket/model/hints/UiHintsSetEvent.java | 15 ++-
.../model/mementos/PageParameterNames.java | 2 +-
.../viewer/wicket/model/models/EntityModel.java | 8 +-
.../CollectionContentsAsAjaxTablePanel.java | 22 ++--
.../CollectionContentsSortableDataProvider.java | 16 ++-
.../IsisAjaxFallbackOrderByBorder.java | 2 +-
.../IsisAjaxPagingNavigationIncrementLink.java | 2 +-
.../ajaxtable/IsisAjaxPagingNavigationLink.java | 2 +-
.../icontitle/EntityIconAndTitlePanel.java | 38 +++----
.../widgets/zclip/ZeroClipboardPanel.css | 23 +++++
.../widgets/zclip/ZeroClipboardPanel.html | 32 ++++++
.../widgets/zclip/ZeroClipboardPanel.java | 101 +++++++++++++++++++
.../viewer/wicket/ui/pages/PageAbstract.java | 5 +-
.../links/LinksSelectorPanelAbstract.java | 26 +++--
.../isis/viewer/wicket/ui/util/Links.java | 6 +-
17 files changed, 264 insertions(+), 75 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsBroadcastEvent.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsBroadcastEvent.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsBroadcastEvent.java
index 0aa05f3..afe237d 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsBroadcastEvent.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsBroadcastEvent.java
@@ -2,16 +2,13 @@ package org.apache.isis.viewer.wicket.model.hints;
import org.apache.wicket.ajax.AjaxRequestTarget;
-public class UiHintsBroadcastEvent
-{
- private final AjaxRequestTarget target;
-
- public UiHintsBroadcastEvent(AjaxRequestTarget target) {
- this.target = target;
- }
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
- public AjaxRequestTarget getTarget() {
- return target;
+public class UiHintsBroadcastEvent extends UiHintsEventAbstract {
+
+ public UiHintsBroadcastEvent(UiHintsEventAbstract ev) {
+ super(ev.getUiHintContainer(), ev.getTarget());
}
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsEventAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsEventAbstract.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsEventAbstract.java
new file mode 100644
index 0000000..f3ece16
--- /dev/null
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsEventAbstract.java
@@ -0,0 +1,24 @@
+package org.apache.isis.viewer.wicket.model.hints;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+
+public abstract class UiHintsEventAbstract {
+
+ private final UiHintContainer uiHintContainer;
+ private final AjaxRequestTarget target;
+
+ public UiHintsEventAbstract(UiHintContainer uiHintContainer, AjaxRequestTarget target) {
+ this.uiHintContainer = uiHintContainer;
+ this.target = target;
+ }
+
+ public UiHintContainer getUiHintContainer() {
+ return uiHintContainer;
+ }
+ public AjaxRequestTarget getTarget() {
+ return target;
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsSetEvent.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsSetEvent.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsSetEvent.java
index fe51798..22286f3 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsSetEvent.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/hints/UiHintsSetEvent.java
@@ -2,16 +2,13 @@ package org.apache.isis.viewer.wicket.model.hints;
import org.apache.wicket.ajax.AjaxRequestTarget;
-public class UiHintsSetEvent
-{
- private final AjaxRequestTarget target;
-
- public UiHintsSetEvent(AjaxRequestTarget target) {
- this.target = target;
- }
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
- public AjaxRequestTarget getTarget() {
- return target;
+public class UiHintsSetEvent extends UiHintsEventAbstract {
+
+ public UiHintsSetEvent(UiHintContainer uiHintContainer, AjaxRequestTarget target) {
+ super(uiHintContainer, target);
}
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
index f9c52af..75f1a64 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
@@ -43,7 +43,7 @@ public enum PageParameterNames {
/**
* Hints for the rendering of an entity.
*/
- HINTS,
+ ANCHOR,
/**
* Owning type of an action.
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index b503db2..a2b53cf 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -193,6 +193,10 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
return pageParameters;
}
+ public PageParameters getPageParametersWithoutUiHints() {
+ return createPageParameters(getObject());
+ }
+
static interface HintPageParameterSerializer {
public void hintsToPageParameters(Map<String,String> hints, PageParameters pageParameters);
@@ -240,11 +244,11 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
memento.set(safeKey, value);
}
String serializedHints = memento.asString();
- PageParameterNames.HINTS.addStringTo(pageParameters, serializedHints);
+ PageParameterNames.ANCHOR.addStringTo(pageParameters, serializedHints);
}
public void pageParametersToHints(final PageParameters pageParameters, Map<String,String> hints) {
- String hintsStr = PageParameterNames.HINTS.getStringFrom(pageParameters);
+ String hintsStr = PageParameterNames.ANCHOR.getStringFrom(pageParameters);
if(hintsStr != null) {
try {
Memento memento = new ViewModelSupportDefault().parse(hintsStr);
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index 03e3a96..4792714 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -78,6 +78,8 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
private static final String ID_TABLE = "table";
private static final String ID_ENTITY_ACTIONS = "entityActions";
private static final String ID_ACTION_PROMPT_MODAL_WINDOW = "actionPromptModalWindow";
+
+ private static final String UIHINT_PAGE_NUMBER = "pageNumber";
private static final Predicate<ObjectAction> BULK = Filters.asPredicate(ObjectAction.Filters.bulk());
@@ -85,11 +87,8 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
public CollectionContentsAsAjaxTablePanel(final String id, final EntityCollectionModel model) {
super(id, model);
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
+ // build eagerly rather than onInitialize...
+ // want to ensure that set sorting hints prior to pageNumber hint
buildGui();
}
@@ -119,17 +118,20 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
if(uiHintContainer == null) {
return;
}
- final String pageNumber = uiHintContainer.getHint(dataTable, "pageNumber");
- if(pageNumber != null) {
+ final String pageNumberStr = uiHintContainer.getHint(dataTable, UIHINT_PAGE_NUMBER);
+ if(pageNumberStr != null) {
try {
- long parseLong = Long.parseLong(pageNumber);
- dataTable.setCurrentPage(parseLong);
+ long pageNumber = Long.parseLong(pageNumberStr);
+ if(pageNumber >= 0) {
+ // dataTable is clever enough to deal with too-large numbers
+ dataTable.setCurrentPage(pageNumber);
+ }
} catch(Exception ex) {
// ignore.
}
}
final long currentPage = dataTable.getCurrentPage();
- uiHintContainer.setHint(dataTable, "pageNumber", ""+currentPage);
+ uiHintContainer.setHint(dataTable, UIHINT_PAGE_NUMBER, ""+currentPage);
}
private void addToggleboxColumnIfRequired(final List<IColumn<ObjectAdapter,String>> columns, List<ObjectAction> bulkActions) {
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java
index cc6f35e..15cf18b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java
@@ -31,6 +31,7 @@ import org.apache.wicket.model.IModel;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.ObjectSpecificationException;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
@@ -80,13 +81,18 @@ public class CollectionContentsSortableDataProvider extends SortableDataProvider
final ObjectSpecification elementSpec = model.getTypeOfSpecification();
final String sortPropertyId = sort.getProperty();
- final ObjectAssociation sortProperty = elementSpec.getAssociation(sortPropertyId);
- if(sortProperty == null) {
+ try {
+ final ObjectAssociation sortProperty = elementSpec.getAssociation(sortPropertyId);
+ if(sortProperty == null) {
+ return adapters;
+ }
+
+ Ordering<ObjectAdapter> ordering = orderingBy(sortProperty, sort.isAscending());
+ return ordering.sortedCopy(adapters);
+ } catch(ObjectSpecificationException ex) {
+ // eg invalid propertyId
return adapters;
}
-
- Ordering<ObjectAdapter> ordering = orderingBy(sortProperty, sort.isAscending());
- return ordering.sortedCopy(adapters);
}
public static Ordering<ObjectAdapter> orderingBy(final ObjectAssociation sortProperty, final boolean ascending) {
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxFallbackOrderByBorder.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxFallbackOrderByBorder.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxFallbackOrderByBorder.java
index 0f9f476..8030bf1 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxFallbackOrderByBorder.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxFallbackOrderByBorder.java
@@ -53,7 +53,7 @@ public class IsisAjaxFallbackOrderByBorder<T> extends AjaxFallbackOrderByBorder<
if(uiHintContainer != null) {
String hintKey = sortOrderName();
uiHintContainer.setHint(dataTable, hintKey, sortProperty.toString());
- send(getPage(), Broadcast.EXACT, new UiHintsSetEvent(target));
+ send(getPage(), Broadcast.EXACT, new UiHintsSetEvent(uiHintContainer, target));
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxPagingNavigationIncrementLink.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxPagingNavigationIncrementLink.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxPagingNavigationIncrementLink.java
index 019dfd4..cf6358b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxPagingNavigationIncrementLink.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxPagingNavigationIncrementLink.java
@@ -41,7 +41,7 @@ public class IsisAjaxPagingNavigationIncrementLink extends AjaxPagingNavigationI
final UiHintContainer uiHintContainer = getUiHintContainer();
if(uiHintContainer != null) {
uiHintContainer.setHint(component, "pageNumber", ""+pageable.getCurrentPage());
- send(getPage(), Broadcast.EXACT, new UiHintsSetEvent(target));
+ send(getPage(), Broadcast.EXACT, new UiHintsSetEvent(uiHintContainer, target));
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxPagingNavigationLink.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxPagingNavigationLink.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxPagingNavigationLink.java
index 62776f5..b2a38ab 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxPagingNavigationLink.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxPagingNavigationLink.java
@@ -41,7 +41,7 @@ public class IsisAjaxPagingNavigationLink extends AjaxPagingNavigationLink {
final UiHintContainer uiHintContainer = getUiHintContainer();
if(uiHintContainer != null) {
uiHintContainer.setHint(component, "pageNumber", ""+pageable.getCurrentPage());
- send(getPage(), Broadcast.EXACT, new UiHintsSetEvent(target));
+ send(getPage(), Broadcast.EXACT, new UiHintsSetEvent(uiHintContainer, target));
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
index c230924..cc4b8ab 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
@@ -20,6 +20,7 @@
package org.apache.isis.viewer.wicket.ui.components.entity.icontitle;
import java.net.ResponseCache;
+import java.util.Set;
import com.google.common.base.Strings;
import com.google.inject.Inject;
@@ -111,27 +112,33 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
private WebMarkupContainer addOrReplaceLinkWrapper(final EntityModel entityModel) {
final ObjectAdapter adapter = entityModel.getObject();
- final PageParameters pageParameters = entityModel.getPageParameters();
-
- final Class<? extends Page> pageClass = getPageClassRegistry().getPageClass(PageType.ENTITY);
-
final WebMarkupContainer entityLinkWrapper = new WebMarkupContainer(ID_ENTITY_LINK_WRAPPER);
- final AbstractLink link = createIconAndTitle(adapter, pageParameters, pageClass);
+
+ final AbstractLink link = createIconAndTitle(adapter);
entityLinkWrapper.addOrReplace(link);
return entityLinkWrapper;
}
- private AbstractLink createIconAndTitle(final ObjectAdapter adapter, final PageParameters pageParameters, final Class<? extends Page> pageClass) {
- final AbstractLink link = Links.newBookmarkablePageLinkWithHints(ID_ENTITY_LINK, pageParameters, pageClass);
+ private AbstractLink createIconAndTitle(final ObjectAdapter adapter) {
+ final AbstractLink link = createLinkWrapper();
link.addOrReplace(this.label = newLabel(ID_ENTITY_TITLE));
link.addOrReplace(this.image = newImage(ID_ENTITY_ICON, adapter));
- link.add(new AttributeModifier("title", adapter.getSpecification().getSingularName()));
+ String entityTypeName = adapter.getSpecification().getSingularName();
+ link.add(new AttributeModifier("title", entityTypeName));
+
return link;
}
+ private AbstractLink createLinkWrapper() {
+ final PageParameters pageParameters = getModel().getPageParametersWithoutUiHints();
+
+ final Class<? extends Page> pageClass = getPageClassRegistry().getPageClass(PageType.ENTITY);
+ return Links.newBookmarkablePageLink(ID_ENTITY_LINK, pageParameters, pageClass);
+ }
+
protected Label newLabel(final String id) {
final String title = determineTitle();
return new Label(id, title);
@@ -187,21 +194,6 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
}
- // ///////////////////////////////////////////////////////////////////
- // UI Hints
- // ///////////////////////////////////////////////////////////////////
-
- /* (non-Javadoc)
- * @see org.apache.wicket.Component#onEvent(org.apache.wicket.event.IEvent)
- */
- @Override
- public void onEvent(IEvent<?> event) {
- if(event.getPayload() instanceof UiHintsBroadcastEvent) {
- UiHintsBroadcastEvent ev = (UiHintsBroadcastEvent) event.getPayload();
- buildGui();
- ev.getTarget().add(this);
- }
- }
// ///////////////////////////////////////////////////////////////////
// Convenience
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css
new file mode 100644
index 0000000..3fbc5c3
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.css
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+.zeroClipboardPanel .subscribingLink {
+ display: none;
+}
+
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html
new file mode 100644
index 0000000..de48ded
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.html
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<html>
+ <body>
+ <wicket:panel>
+ <div class="zeroClipboardPanel">
+ <a wicket:id="copyLink" href="#">
+ <span> </span>
+ </a>
+ <a wicket:id="subscribingLink" id="subscribingLink" class="subscribingLink" href="#"> </a>
+ </div>
+ </wicket:panel>
+ </body>
+</html>
+
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
new file mode 100644
index 0000000..07d1950
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
@@ -0,0 +1,101 @@
+/**
+ * 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.ui.components.widgets.zclip;
+
+import org.apache.wicket.Page;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.event.IEvent;
+import org.apache.wicket.markup.html.link.AbstractLink;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
+import org.apache.isis.viewer.wicket.model.hints.UiHintsBroadcastEvent;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.model.models.PageType;
+import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
+import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
+import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+import org.apache.isis.viewer.wicket.ui.util.Links;
+
+public class ZeroClipboardPanel extends PanelAbstract<IModel<Void>> {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String ID_SUBSCRIBING_LINK = "subscribingLink";
+ private static final String ID_COPY_LINK = "copyLink";
+
+ private AbstractLink subscribingLink;
+ private AjaxLink<ObjectAdapter> copyLink;
+
+ public ZeroClipboardPanel(String id) {
+ super(id);
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+ if(copyLink == null) {
+ copyLink = new ZeroClipboardLink(ID_COPY_LINK, "#subscribingLink");
+ addOrReplace(copyLink);
+ }
+ addSubscribingLink(null);
+ }
+
+ private void addSubscribingLink(UiHintContainer uiHintContainer) {
+ subscribingLink = createSubscribingLink(uiHintContainer);
+ addOrReplace(subscribingLink);
+ subscribingLink.setOutputMarkupId(true);
+ }
+
+ private AbstractLink createSubscribingLink(UiHintContainer uiHintContainer) {
+ if(uiHintContainer == null || !(uiHintContainer instanceof EntityModel)) {
+ // return a no-op
+ AbstractLink link = new AbstractLink(ID_SUBSCRIBING_LINK) {
+ private static final long serialVersionUID = 1L;
+ };
+ return link;
+ } else {
+ final EntityModel entityModel = (EntityModel) uiHintContainer;
+ final PageParameters pageParameters = entityModel.getPageParameters();
+ final Class<? extends Page> pageClass = getPageClassRegistry().getPageClass(PageType.ENTITY);
+ return Links.newBookmarkablePageLink(ID_SUBSCRIBING_LINK, pageParameters, pageClass);
+ }
+ }
+
+ // //////////////////////////////////////
+
+ @Override
+ public void onEvent(IEvent<?> event) {
+ super.onEvent(event);
+ if(event.getPayload() instanceof UiHintsBroadcastEvent) {
+ UiHintsBroadcastEvent ev = (UiHintsBroadcastEvent) event.getPayload();
+ addSubscribingLink(ev.getUiHintContainer());
+ ev.getTarget().add(subscribingLink);
+ }
+ }
+
+ // //////////////////////////////////////
+
+ protected PageClassRegistry getPageClassRegistry() {
+ final PageClassRegistryAccessor pcra = (PageClassRegistryAccessor) getApplication();
+ return pcra.getPageClassRegistry();
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 578aa50..05c60bc 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -72,6 +72,7 @@ import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
import org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptModalWindow;
import org.apache.isis.viewer.wicket.ui.components.widgets.zclip.ZeroClipboardLink;
+import org.apache.isis.viewer.wicket.ui.components.widgets.zclip.ZeroClipboardPanel;
import org.apache.isis.viewer.wicket.ui.errors.ExceptionModel;
import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
import org.apache.isis.viewer.wicket.ui.pages.about.AboutPage;
@@ -262,7 +263,7 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
}
private void addCopyLink() {
- AjaxLink<ObjectAdapter> zClipCopyLink = new ZeroClipboardLink(ID_COPY_LINK, ".entityHeaderPanel a.entityUrlSource");
+ ZeroClipboardPanel zClipCopyLink = new ZeroClipboardPanel(ID_COPY_LINK);
addOrReplace(zClipCopyLink);
}
@@ -365,7 +366,7 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
Object payload = event.getPayload();
if(payload instanceof UiHintsSetEvent) {
UiHintsSetEvent setEv = (UiHintsSetEvent)payload;
- UiHintsBroadcastEvent broadcastEv = new UiHintsBroadcastEvent(setEv.getTarget());
+ UiHintsBroadcastEvent broadcastEv = new UiHintsBroadcastEvent(setEv);
send(this, Broadcast.BREADTH, broadcastEv);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
index f8003b5..cac47e4 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
@@ -19,6 +19,7 @@
package org.apache.isis.viewer.wicket.ui.selector.links;
+import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
@@ -72,6 +73,8 @@ public abstract class LinksSelectorPanelAbstract<T extends IModel<?>> extends Pa
private static final String ID_VIEW_LINK = "viewLink";
private static final String ID_VIEW_ITEM = "viewItem";
private static final String ID_VIEW_TITLE = "viewTitle";
+
+ private static final String UIHINT_VIEW = "view";
private final ComponentType componentType;
private final String underlyingIdPrefix;
@@ -184,10 +187,10 @@ public abstract class LinksSelectorPanelAbstract<T extends IModel<?>> extends Pa
@Override
public void onClick(AjaxRequestTarget target) {
LinksSelectorPanelAbstract<T> linksSelectorPanel = LinksSelectorPanelAbstract.this;
- UiHintContainer hintContainer = linksSelectorPanel.getUiHintContainer();
- if(hintContainer != null) {
- hintContainer.setHint(LinksSelectorPanelAbstract.this, "view", ""+underlyingViewNum);
- send(getPage(), Broadcast.EXACT, new UiHintsSetEvent(target));
+ UiHintContainer uiHintContainer = linksSelectorPanel.getUiHintContainer();
+ if(uiHintContainer != null) {
+ uiHintContainer.setHint(LinksSelectorPanelAbstract.this, UIHINT_VIEW, ""+underlyingViewNum);
+ send(getPage(), Broadcast.EXACT, new UiHintsSetEvent(uiHintContainer, target));
}
final T dummyModel = dummyOf(model);
@@ -262,15 +265,22 @@ public abstract class LinksSelectorPanelAbstract<T extends IModel<?>> extends Pa
protected int determineView(final List<ComponentFactory> componentFactories, final IModel<?> model) {
UiHintContainer hintContainer = getUiHintContainer();
if(hintContainer != null) {
- String hintValue = hintContainer.getHint(this, "view");
- if(hintValue != null) {
- return Integer.parseInt(hintValue);
+ String viewStr = hintContainer.getHint(this, UIHINT_VIEW);
+ if(viewStr != null) {
+ try {
+ int view = Integer.parseInt(viewStr);
+ if(view >= 0 && view < componentFactories.size()) {
+ return view;
+ }
+ } catch(NumberFormatException ex) {
+ // ignore
+ }
}
}
int initialFactory = determineInitialFactory(componentFactories, model);
if(hintContainer != null) {
- hintContainer.setHint(this, "view", ""+initialFactory);
+ hintContainer.setHint(this, UIHINT_VIEW, ""+initialFactory);
}
return initialFactory;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/f031f27b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Links.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Links.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Links.java
index 5225c70..97c7fd0 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Links.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Links.java
@@ -59,12 +59,12 @@ public final class Links {
return new BookmarkablePageLink<T>(linkId, pageClass, pageParameters);
}
- public static <T extends Page> AbstractLink newBookmarkablePageLinkWithHints(
+ public static <T extends Page> AbstractLink newBookmarkablePageLinkWithAnchor(
final String linkId, final PageParameters pageParameters, final Class<T> pageClass) {
- final String hints = PageParameterNames.HINTS.getStringFrom(pageParameters);
+ final String hints = PageParameterNames.ANCHOR.getStringFrom(pageParameters);
if(hints != null) {
- PageParameterNames.HINTS.removeFrom(pageParameters);
+ PageParameterNames.ANCHOR.removeFrom(pageParameters);
return new BookmarkablePageLink<T>(linkId, pageClass, pageParameters) {
private static final long serialVersionUID = 1L;