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 2014/11/11 09:24:52 UTC
[29/44] isis git commit: ISIS-537: selector drop-down now moved to
EntityCollectionsPanel (ie into the panel header).
ISIS-537: selector drop-down now moved to EntityCollectionsPanel (ie into the panel header).
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/2909e644
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/2909e644
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/2909e644
Branch: refs/heads/master
Commit: 2909e644d354ed50d552aa1227fc3d7cb693cb86
Parents: f00d01f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 10 07:37:03 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Nov 10 10:21:46 2014 +0000
----------------------------------------------------------------------
.../components/collection/CollectionPanel.java | 17 ++++-
.../dropdown/HasSelectorDropdownPanel.java | 23 +++++++
.../CollectionContentsLinksSelectorPanel.html | 1 -
.../CollectionContentsLinksSelectorPanel.java | 66 +++++++++++++-------
.../collections/EntityCollectionsPanel.html | 3 +
.../collections/EntityCollectionsPanel.java | 38 ++++++++++-
6 files changed, 123 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/2909e644/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
index ec68145..0b10d9c 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
@@ -38,6 +38,8 @@ import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.ui.ComponentType;
import org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptModalWindow;
import org.apache.isis.viewer.wicket.ui.components.additionallinks.EntityActionUtil;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.dropdown.CollectionContentsSelectorDropdownPanel;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.dropdown.HasSelectorDropdownPanel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
@@ -45,7 +47,7 @@ import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
* Panel for rendering entity collection; analogous to (any concrete subclass
* of) {@link ScalarPanelAbstract}.
*/
-public class CollectionPanel extends PanelAbstract<EntityCollectionModel> implements ActionPromptProvider {
+public class CollectionPanel extends PanelAbstract<EntityCollectionModel> implements ActionPromptProvider, HasSelectorDropdownPanel {
private static final long serialVersionUID = 1L;
@@ -148,4 +150,17 @@ public class CollectionPanel extends PanelAbstract<EntityCollectionModel> implem
}
+ //region > SelectorDropdownPanel (impl)
+
+ private CollectionContentsSelectorDropdownPanel selectorDropdownPanel;
+
+ @Override
+ public CollectionContentsSelectorDropdownPanel getSelectorDropdownPanel() {
+ return selectorDropdownPanel;
+ }
+ public void setSelectorDropdownPanel(CollectionContentsSelectorDropdownPanel selectorDropdownPanel) {
+ this.selectorDropdownPanel = selectorDropdownPanel;
+ }
+ //endregion
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/2909e644/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/dropdown/HasSelectorDropdownPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/dropdown/HasSelectorDropdownPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/dropdown/HasSelectorDropdownPanel.java
new file mode 100644
index 0000000..9011edf
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/dropdown/HasSelectorDropdownPanel.java
@@ -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.
+ */
+package org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.dropdown;
+
+public interface HasSelectorDropdownPanel {
+ CollectionContentsSelectorDropdownPanel getSelectorDropdownPanel();
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/2909e644/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
index 853a400..0a6d242 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.html
@@ -22,7 +22,6 @@
<body>
<wicket:panel>
<div class="linksSelectorPanel">
- <span wicket:id="selectorDropdown"/>
<div class="views">
<div wicket:id="collectionContents-0" class="collectionContentsLinksSelectorPanel collectionContentsComponentType"></div>
http://git-wip-us.apache.org/repos/asf/isis/blob/2909e644/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
index 627adb5..42616ff 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanel.java
@@ -25,7 +25,6 @@ import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.event.IEvent;
import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.model.Model;
import org.apache.isis.viewer.wicket.model.hints.IsisEnvelopeEvent;
import org.apache.isis.viewer.wicket.model.hints.IsisUiHintEvent;
import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
@@ -36,6 +35,7 @@ import org.apache.isis.viewer.wicket.ui.ComponentType;
import org.apache.isis.viewer.wicket.ui.components.collection.CollectionCountProvider;
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.dropdown.CollectionContentsSelectorDropdownPanel;
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.dropdown.CollectionContentsSelectorHelper;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.dropdown.HasSelectorDropdownPanel;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
@@ -54,7 +54,7 @@ public class CollectionContentsLinksSelectorPanel
private static final String INVISIBLE_CLASS = "link-selector-panel-invisible";
private static final int MAX_NUM_UNDERLYING_VIEWS = 10;
- private static final String ID_SELECTOR_DROPDOWN = "selectorDropdown";
+// private static final String ID_SELECTOR_DROPDOWN = "selectorDropdown";
private static final String UIHINT_VIEW = "view";
@@ -65,10 +65,9 @@ public class CollectionContentsLinksSelectorPanel
private final CollectionContentsSelectorHelper selectorHelper;
private ComponentFactory selectedComponentFactory;
- protected Component selectedComponent;
+ private Component selectedComponent;
private Component[] underlyingViews;
- private List<ComponentFactory> componentFactories;
private CollectionContentsSelectorDropdownPanel selectorDropdownPanel;
public CollectionContentsLinksSelectorPanel(
@@ -81,7 +80,6 @@ public class CollectionContentsLinksSelectorPanel
this.componentType = ignoreFactory.getComponentType();
selectorHelper = new CollectionContentsSelectorHelper(model, getComponentFactoryRegistry(), ignoreFactory);
- componentFactories = selectorHelper.findOtherComponentFactories();
}
/**
@@ -96,7 +94,8 @@ public class CollectionContentsLinksSelectorPanel
private void addUnderlyingViews() {
final EntityCollectionModel model = getModel();
- final int selected = selectorHelper.honourViewHintElseDefault(selectorDropdownPanel);
+ final int selected = selectorHelper.honourViewHintElseDefault(getSelectorDropdownPanel());
+ final List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories();
// create all, hide the one not selected
underlyingViews = new Component[MAX_NUM_UNDERLYING_VIEWS];
@@ -118,19 +117,20 @@ public class CollectionContentsLinksSelectorPanel
}
// selector
- if (componentFactories.size() <= 1) {
- permanentlyHide(ID_SELECTOR_DROPDOWN);
- } else {
- final Model<ComponentFactory> componentFactoryModel = new Model<>();
-
- this.selectedComponentFactory = componentFactories.get(selected);
- componentFactoryModel.setObject(this.selectedComponentFactory);
-
- selectorDropdownPanel = new CollectionContentsSelectorDropdownPanel(ID_SELECTOR_DROPDOWN, getModel(), ignoreFactory);
-
- this.setOutputMarkupId(true);
- addOrReplace(selectorDropdownPanel);
- }
+// if (componentFactories.size() <= 1) {
+// permanentlyHide(ID_SELECTOR_DROPDOWN);
+// } else {
+// final Model<ComponentFactory> componentFactoryModel = new Model<>();
+//
+// this.selectedComponentFactory = componentFactories.get(selected);
+// componentFactoryModel.setObject(this.selectedComponentFactory);
+//
+// selectorDropdownPanel = new CollectionContentsSelectorDropdownPanel(ID_SELECTOR_DROPDOWN, getModel(), ignoreFactory);
+//
+// addOrReplace(selectorDropdownPanel);
+// }
+
+ this.setOutputMarkupId(true);
for(i=0; i<MAX_NUM_UNDERLYING_VIEWS; i++) {
Component component = underlyingViews[i];
@@ -155,7 +155,10 @@ public class CollectionContentsLinksSelectorPanel
final UiHintContainer uiHintContainer = uiHintEvent.getUiHintContainer();
int underlyingViewNum = 0;
- String viewStr = uiHintContainer.getHint(this.selectorDropdownPanel, UIHINT_VIEW);
+ String viewStr = uiHintContainer.getHint(this.getSelectorDropdownPanel(), UIHINT_VIEW);
+
+ List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories();
+
if(viewStr != null) {
try {
int view = Integer.parseInt(viewStr);
@@ -184,7 +187,7 @@ public class CollectionContentsLinksSelectorPanel
final AjaxRequestTarget target = uiHintEvent.getTarget();
if(target != null) {
- target.add(this, selectorDropdownPanel);
+ target.add(this, getSelectorDropdownPanel());
}
}
@@ -216,4 +219,25 @@ public class CollectionContentsLinksSelectorPanel
}
}
+ /**
+ * Searches up the component hierarchy looking for a parent that implements
+ * {@link org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.dropdown.HasSelectorDropdownPanel}.
+ * @return
+ */
+ private CollectionContentsSelectorDropdownPanel getSelectorDropdownPanel() {
+ Component component = this;
+ while(component != null) {
+ if(component instanceof HasSelectorDropdownPanel) {
+ final CollectionContentsSelectorDropdownPanel selectorDropdownPanel1 = ((HasSelectorDropdownPanel) component).getSelectorDropdownPanel();
+ if(selectorDropdownPanel1 == null) {
+ throw new IllegalStateException("Found parent that implements HasSelectorDropdownPanel, but no SelectorDropdownPanel available (is null)");
+
+ }
+ return selectorDropdownPanel1;
+ }
+ component = component.getParent();
+ }
+ throw new IllegalStateException("Could not locate parent that implements HasSelectorDropdownPanel");
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/2909e644/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html
index 216d9c9..106afa7 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.html
@@ -39,6 +39,9 @@
<div class="btn-group">
<div wicket:id="additionalLinks"></div>
</div>
+ <div class="btn-group">
+ <span wicket:id="selectorDropdown"/>
+ </div>
<!--
<div class="btn-group">
http://git-wip-us.apache.org/repos/asf/isis/blob/2909e644/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
index 55ad54b..1a8649c 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
@@ -20,9 +20,11 @@
package org.apache.isis.viewer.wicket.ui.components.entity.collections;
import java.util.List;
+import org.apache.wicket.Component;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.repeater.RepeatingView;
+import org.apache.wicket.model.Model;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.filter.Filter;
import org.apache.isis.applib.filter.Filters;
@@ -35,8 +37,12 @@ import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.ui.ComponentFactory;
import org.apache.isis.viewer.wicket.ui.components.additionallinks.AdditionalLinksPanel;
import org.apache.isis.viewer.wicket.ui.components.collection.CollectionPanel;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.dropdown.CollectionContentsSelectorDropdownPanel;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.dropdown.CollectionContentsSelectorHelper;
+import org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.links.CollectionContentsLinksSelectorPanelFactory;
import org.apache.isis.viewer.wicket.ui.components.widgets.containers.UiHintPathSignificantWebMarkupContainer;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
@@ -57,11 +63,15 @@ public class EntityCollectionsPanel extends PanelAbstract<EntityModel> {
private static final String ID_ADDITIONAL_LINKS = "additionalLinks";
- private Label labelComponent;
+ private static final String ID_SELECTOR_DROPDOWN = "selectorDropdown";
+ private ComponentFactory selectedComponentFactory;
+ private Component selectedComponent;
+
public EntityCollectionsPanel(final String id, final EntityModel entityModel) {
super(id, entityModel);
+
buildGui();
}
@@ -114,13 +124,37 @@ public class EntityCollectionsPanel extends PanelAbstract<EntityModel> {
final CollectionPanel collectionPanel = new CollectionPanel(ID_COLLECTION, entityModel, otma);
fieldset.addOrReplace(collectionPanel);
- labelComponent = collectionPanel.createLabel(ID_COLLECTION_NAME, association.getName());
+ Label labelComponent = collectionPanel.createLabel(ID_COLLECTION_NAME, association.getName());
+
fieldset.add(labelComponent);
final EntityCollectionModel entityCollectionModel = collectionPanel.getModel();
List<LinkAndLabel> links = entityCollectionModel.getLinks();
AdditionalLinksPanel additionalLinks = new AdditionalLinksPanel(ID_ADDITIONAL_LINKS, links);
fieldset.addOrReplace(additionalLinks);
+
+ CollectionContentsSelectorHelper selectorHelper = new CollectionContentsSelectorHelper(entityCollectionModel, getComponentFactoryRegistry(), new CollectionContentsLinksSelectorPanelFactory());
+
+ final List<ComponentFactory> componentFactories = selectorHelper.findOtherComponentFactories();
+
+ if (componentFactories.size() <= 1) {
+ permanentlyHide(ID_SELECTOR_DROPDOWN);
+ } else {
+ CollectionContentsSelectorDropdownPanel selectorDropdownPanel;
+ selectorDropdownPanel = new CollectionContentsSelectorDropdownPanel(ID_SELECTOR_DROPDOWN, entityCollectionModel, new CollectionContentsLinksSelectorPanelFactory());
+
+ final Model<ComponentFactory> componentFactoryModel = new Model<>();
+
+ final int selected = selectorHelper.honourViewHintElseDefault(selectorDropdownPanel);
+ this.selectedComponentFactory = componentFactories.get(selected);
+ componentFactoryModel.setObject(this.selectedComponentFactory);
+
+ this.setOutputMarkupId(true);
+ fieldset.addOrReplace(selectorDropdownPanel);
+
+ collectionPanel.setSelectorDropdownPanel(selectorDropdownPanel);
+ }
+
}
private List<ObjectAssociation> visibleCollections(final ObjectAdapter adapter, final ObjectSpecification noSpec) {