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 2016/02/02 01:36:00 UTC
[03/15] isis git commit: ISIS-993: use a single layoutMetadata hint
in EntityModel, rather than many different hints. Also,
moved FC classes under a new "fixedcols" layout.
http://git-wip-us.apache.org/repos/asf/isis/blob/84c9cf75/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/PropertyGroup.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/PropertyGroup.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/PropertyGroup.java
new file mode 100644
index 0000000..d2fd5ec
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/PropertyGroup.java
@@ -0,0 +1,122 @@
+/*
+ * 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.layout.fixedcols;
+
+import java.util.List;
+
+import com.google.common.collect.Lists;
+
+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.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.layout.common.FieldSet;
+import org.apache.isis.applib.layout.common.PropertyLayoutData;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
+import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+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.actionmenu.entityactions.AdditionalLinksPanel;
+import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.EntityActionUtil;
+import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+
+public class PropertyGroup extends PanelAbstract<EntityModel> {
+
+ private static final String ID_MEMBER_GROUP_NAME = "memberGroupName";
+
+ private static final String ID_ASSOCIATED_ACTION_LINKS_PANEL = "associatedActionLinksPanel";
+ private static final String ID_ASSOCIATED_ACTION_LINKS_PANEL_DROPDOWN = "associatedActionLinksPanelDropDown";
+
+ private static final String ID_PROPERTIES = "properties";
+ private static final String ID_PROPERTY = "property";
+
+ private final FieldSet fieldSet;
+
+ public PropertyGroup(final String id, final EntityModel model) {
+ super(id, model);
+ fieldSet = (FieldSet) model.getLayoutMetadata();
+
+ buildGui();
+ }
+
+ public EntityModel getModel() {
+ return (EntityModel) getDefaultModel();
+ }
+
+ private void buildGui() {
+ String groupName = fieldSet.getName();
+ final ObjectAdapter adapter = getModel().getObject();
+
+ add(new Label(ID_MEMBER_GROUP_NAME, groupName));
+
+ final List<LinkAndLabel> memberGroupActions = Lists.newArrayList();
+
+ final RepeatingView propertyRv = new RepeatingView(ID_PROPERTIES);
+ add(propertyRv);
+
+ final List<PropertyLayoutData> properties = fieldSet.getProperties();
+ for (PropertyLayoutData property : properties) {
+ final ObjectAssociation association = adapter.getSpecification().getAssociation(property.getId());
+
+ final WebMarkupContainer propertyRvContainer = new WebMarkupContainer(propertyRv.newChildId());
+ propertyRv.add(propertyRvContainer);
+
+ addPropertyToForm(getModel(), (OneToOneAssociation) association, propertyRvContainer,
+ memberGroupActions);
+ }
+
+ final List<LinkAndLabel> actionsPanel = LinkAndLabel
+ .positioned(memberGroupActions, ActionLayout.Position.PANEL);
+ final List<LinkAndLabel> actionsPanelDropDown = LinkAndLabel
+ .positioned(memberGroupActions, ActionLayout.Position.PANEL_DROPDOWN);
+
+ AdditionalLinksPanel.addAdditionalLinks(
+ this, ID_ASSOCIATED_ACTION_LINKS_PANEL,
+ actionsPanel,
+ AdditionalLinksPanel.Style.INLINE_LIST);
+ AdditionalLinksPanel.addAdditionalLinks(
+ this, ID_ASSOCIATED_ACTION_LINKS_PANEL_DROPDOWN,
+ actionsPanelDropDown,
+ AdditionalLinksPanel.Style.DROPDOWN);
+ }
+
+ private void addPropertyToForm(
+ final EntityModel entityModel,
+ final OneToOneAssociation otoa,
+ final WebMarkupContainer container,
+ final List<LinkAndLabel> entityActions) {
+ final PropertyMemento pm = new PropertyMemento(otoa);
+
+ final ScalarModel scalarModel = entityModel.getPropertyModel(pm);
+ getComponentFactoryRegistry()
+ .addOrReplaceComponent(container, ID_PROPERTY, ComponentType.SCALAR_NAME_AND_VALUE, scalarModel);
+
+ final List<ObjectAction> associatedActions =
+ EntityActionUtil.getObjectActionsForAssociation(entityModel, otoa, getDeploymentCategory());
+
+ entityActions.addAll(
+ EntityActionUtil.asLinkAndLabelsForAdditionalLinksPanel(entityModel, associatedActions));
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/84c9cf75/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupListPanel.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupListPanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupListPanel.html
new file mode 100644
index 0000000..6699518
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupListPanel.html
@@ -0,0 +1,28 @@
+<?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 xmlns:wicket="http://wicket.apache.org">
+<body>
+<wicket:panel>
+ <div wicket:id="tabGroups">
+ <div wicket:id="tabGroup">[tabbed panel will be here]</div>
+ </div>
+</wicket:panel>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/isis/blob/84c9cf75/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupListPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupListPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupListPanel.java
new file mode 100644
index 0000000..7a07082
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupListPanel.java
@@ -0,0 +1,66 @@
+/*
+ * 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.layout.fixedcols;
+
+import java.util.List;
+
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+
+import org.apache.isis.applib.layout.fixedcols.FCTabGroup;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+
+public class TabGroupListPanel extends PanelAbstract<EntityModel> {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String ID_TAB_GROUPS = "tabGroups";
+
+ // the view metadata
+ private final List<FCTabGroup> tabGroups;
+
+ public TabGroupListPanel(final String id, final EntityModel entityModel) {
+ super(id, entityModel);
+
+ this.tabGroups = (List<FCTabGroup>) entityModel.getLayoutMetadata();
+
+ buildGui();
+ }
+
+ private void buildGui() {
+ final EntityModel model = getModel();
+
+ final ListView<FCTabGroup> tabGroupsList = new ListView<FCTabGroup>(ID_TAB_GROUPS, this.tabGroups) {
+
+ @Override
+ protected void populateItem(final ListItem<FCTabGroup> item) {
+
+ final FCTabGroup tabGroup = item.getModelObject();
+ final EntityModel entityModelWithHints = model.cloneWithLayoutMetadata(tabGroup);
+ final TabGroupPanel tabGroupPanel = new TabGroupPanel(entityModelWithHints);
+ item.add(tabGroupPanel);
+ }
+ };
+
+ add(tabGroupsList);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/84c9cf75/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupPanel.java
new file mode 100644
index 0000000..d0fe9a0
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabGroupPanel.java
@@ -0,0 +1,103 @@
+/*
+ * 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.layout.fixedcols;
+
+import java.util.List;
+
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.Lists;
+
+import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
+import org.apache.wicket.extensions.markup.html.tabs.TabbedPanel;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
+
+import org.apache.isis.applib.layout.fixedcols.FCTab;
+import org.apache.isis.applib.layout.fixedcols.FCTabGroup;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.model.util.ScopedSessionAttribute;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
+
+public class TabGroupPanel extends AjaxBootstrapTabbedPanel {
+
+ public static final String SESSION_ATTR_SELECTED_TAB = "selectedTab";
+ private final EntityModel entityModel;
+ // the view metadata
+ private final FCTabGroup tabGroup;
+ private final ScopedSessionAttribute<Integer> selectedTabInSession;
+
+ private static final String ID_TAB_GROUP = "tabGroup";
+
+ private static List<ITab> tabsFor(final EntityModel entityModel) {
+ final List<ITab> tabs = Lists.newArrayList();
+
+ final FCTabGroup tabGroup = (FCTabGroup) entityModel.getLayoutMetadata();
+ final List<FCTab> FCTabList = FluentIterable
+ .from(tabGroup.getTabs())
+ .filter(FCTab.Predicates.notEmpty())
+ .toList();
+
+ for (final FCTab FCTab : FCTabList) {
+ tabs.add(new AbstractTab(Model.of(FCTab.getName())) {
+ private static final long serialVersionUID1 = 1L;
+
+ @Override
+ public Panel getPanel(String panelId) {
+ return new TabPanel(panelId, entityModel, FCTab);
+ }
+ });
+ }
+ return tabs;
+ }
+
+ public TabGroupPanel(final EntityModel entityModel) {
+ super(ID_TAB_GROUP, tabsFor(entityModel));
+
+ this.entityModel = entityModel;
+ this.tabGroup = (FCTabGroup) entityModel.getLayoutMetadata();
+ this.selectedTabInSession = ScopedSessionAttribute.create(entityModel, this, SESSION_ATTR_SELECTED_TAB);
+
+ }
+
+ @Override
+ protected void onInitialize() {
+ setSelectedTabFromSessionIfAny(this);
+ super.onInitialize();
+ }
+
+ @Override
+ public TabbedPanel setSelectedTab(final int index) {
+ selectedTabInSession.set(index);
+ return super.setSelectedTab(index);
+ }
+
+ private void setSelectedTabFromSessionIfAny(
+ final AjaxBootstrapTabbedPanel ajaxBootstrapTabbedPanel) {
+ final Integer tabIndex = selectedTabInSession.get();
+ if (tabIndex != null) {
+ final int numTabs = ajaxBootstrapTabbedPanel.getTabs().size();
+ if (tabIndex < numTabs) {
+ // to support dynamic reloading; the data in the session might not be compatible with current layout.
+ ajaxBootstrapTabbedPanel.setSelectedTab(tabIndex);
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/84c9cf75/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabPanel.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabPanel.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabPanel.html
new file mode 100644
index 0000000..111fc68
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabPanel.html
@@ -0,0 +1,31 @@
+<?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 xmlns:wicket="http://wicket.apache.org">
+<body>
+<wicket:panel>
+ <div class="tabPanel">
+ <form class="inputForm" role="form">
+ <div wicket:id="column">
+ </div>
+ </form>
+ </div>
+</wicket:panel>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/isis/blob/84c9cf75/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabPanel.java
new file mode 100644
index 0000000..70dcb03
--- /dev/null
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/fixedcols/TabPanel.java
@@ -0,0 +1,24 @@
+package org.apache.isis.viewer.wicket.ui.components.layout.fixedcols;
+
+import org.apache.isis.applib.layout.fixedcols.FCTab;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.ui.ComponentType;
+import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+
+public class TabPanel extends PanelAbstract {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String ID_COLUMN = "column";
+
+ public TabPanel(String id, final EntityModel model, final FCTab FCTab) {
+ super(id);
+
+ final EntityModel modelWithTabHints = model.cloneWithLayoutMetadata(FCTab);
+
+ getComponentFactoryRegistry()
+ .addOrReplaceComponent(this,
+ ID_COLUMN, ComponentType.ENTITY_PROPERTIES, modelWithTabHints);
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/84c9cf75/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout-BS3.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout-BS3.xml b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout-BS3.xml
index 7bc7d20..1697575 100644
--- a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout-BS3.xml
+++ b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout-BS3.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<bs3:page xsi:schemaLocation="http://isis.apache.org/schema/applib/layout/common http://isis.apache.org/schema/applib/layout/common/common.xsd http://isis.apache.org/schema/applib/layout/bootstrap3 http://isis.apache.org/schema/applib/layout/bootstrap3/bootstrap3.xsd" xmlns:common="http://isis.apache.org/schema/applib/layout/common" xmlns:bs3="http://isis.apache.org/schema/applib/layout/bootstrap3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<bs3:page xsi:schemaLocation="http://isis.apache.org/schema/applib/layout/common http://isis.apache.org/schema/applib/layout/common/common.xsd http://isis.apache.org/schema/applib/layout/bootstrap3 http://isis.apache.org/schema/applib/layout/bootstrap3/bootstrap3.xsd" xmlns:c="http://isis.apache.org/schema/applib/layout/common" xmlns:bs3="http://isis.apache.org/schema/applib/layout/bootstrap3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<bs3:row>
<bs3:col span="12">
- <common:domainObject/>
- <common:action id="delete"/>
+ <c:domainObject/>
+ <c:action id="delete"/>
</bs3:col>
</bs3:row>
@@ -14,15 +14,15 @@
<bs3:tab name="Metadata">
<bs3:row>
<bs3:col span="7">
- <common:fieldSet name="General">
- <common:action id="downloadJdoMetadata" position="PANEL"/>
- <common:action id="downloadLayoutXml" position="PANEL_DROPDOWN"/>
- <common:property id="name" labelPosition="TOP">
- <common:action id="updateName">
- <common:describedAs>This allows the name to be updated</common:describedAs>
- </common:action>
- </common:property>
- </common:fieldSet>
+ <c:fieldSet name="General">
+ <c:action id="downloadJdoMetadata" position="PANEL"/>
+ <c:action id="downloadLayoutXml" position="PANEL_DROPDOWN"/>
+ <c:property id="name" labelPosition="TOP">
+ <c:action id="updateName">
+ <c:describedAs>This allows the name to be updated</c:describedAs>
+ </c:action>
+ </c:property>
+ </c:fieldSet>
</bs3:col>
</bs3:row>
</bs3:tab>
@@ -31,8 +31,8 @@
<bs3:tab name="SimilarTo">
<bs3:row>
<bs3:col span="12">
- <common:collection id="similarTo" defaultView="table"/>
- <common:collection id="others" defaultView="hide"/>
+ <c:collection id="similarTo" defaultView="table"/>
+ <c:collection id="others" defaultView="hide"/>
</bs3:col>
</bs3:row>
</bs3:tab>
http://git-wip-us.apache.org/repos/asf/isis/blob/84c9cf75/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
index 9e6d5ac..da9fc4c 100644
--- a/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
+++ b/example/application/simpleapp/dom/src/main/java/domainapp/dom/simple/SimpleObject.layout.xml
@@ -24,6 +24,8 @@
</c:fieldSet>
</middle>
</tab>
+ </tabGroup>
+ <tabGroup>
<tab name="Collections">
<left span="6">
<c:collection id="similarTo" defaultView="table"/>