diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.java index 2dab6e80cbd..b6ed335a625 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentCatalogPanel.java @@ -47,6 +47,10 @@ public class AssignmentCatalogPanel extends BasePane private static String ID_CATALOG_ITEMS_PANEL = "catalogItemsPanel"; private PageBase pageBase; + private IModel rootOidModel; + private String rootOid; + private IModel viewTypeClassModel; + private QName viewTypeClass; public AssignmentCatalogPanel(String id) { super(id); @@ -55,21 +59,29 @@ public AssignmentCatalogPanel(String id) { public AssignmentCatalogPanel(String id, String rootOid, PageBase pageBase) { super(id); this.pageBase = pageBase; - initLayout(null, rootOid); + this.rootOid = rootOid; + this.viewTypeClass = null; + initLayout(); } public AssignmentCatalogPanel(String id, QName viewTypeClass, PageBase pageBase) { super(id); this.pageBase = pageBase; - initLayout(viewTypeClass, null); + this.viewTypeClass = viewTypeClass; + this.rootOid = null; + initLayout(); } - private void initLayout(QName viewTypeClass, final String rootOid) { + private void initLayout() { + initModels(); setOutputMarkupId(true); + addOrReplaceLayout(); + } + public void addOrReplaceLayout(){ WebMarkupContainer treePanelContainer = new WebMarkupContainer(ID_TREE_PANEL_CONTAINER); treePanelContainer.setOutputMarkupId(true); - add(treePanelContainer); - if (rootOid != null) { + addOrReplace(treePanelContainer); + if (viewTypeClass == null) { OrgTreePanel treePanel = new OrgTreePanel(ID_TREE_PANEL, new IModel() { @Override public String getObject() { @@ -106,38 +118,72 @@ protected List createTreeChildrenMenu() { }; treePanel.setOutputMarkupId(true); treePanelContainer.add(new AttributeAppender("class", "col-md-3")); - treePanelContainer.add(treePanel); + treePanelContainer.addOrReplace(treePanel); } else { WebMarkupContainer treePanel = new WebMarkupContainer(ID_TREE_PANEL); treePanel.setVisible(false); treePanel.setOutputMarkupId(true); - treePanelContainer.add(treePanel); + treePanelContainer.addOrReplace(treePanel); } WebMarkupContainer catalogItemsPanelContainer = new WebMarkupContainer(ID_CATALOG_ITEMS_PANEL_CONTAINER); catalogItemsPanelContainer.setOutputMarkupId(true); - add(catalogItemsPanelContainer); + addOrReplace(catalogItemsPanelContainer); - CatalogItemsPanel catalogItemsPanel; - if (rootOid != null) { - catalogItemsPanel = new CatalogItemsPanel(ID_CATALOG_ITEMS_PANEL, rootOid, pageBase); + CatalogItemsPanel catalogItemsPanel = new CatalogItemsPanel(ID_CATALOG_ITEMS_PANEL, rootOidModel, viewTypeClassModel, pageBase); + if (viewTypeClass == null) { catalogItemsPanelContainer.add(new AttributeAppender("class", "col-md-9")); } else { - catalogItemsPanel = new CatalogItemsPanel(ID_CATALOG_ITEMS_PANEL, viewTypeClass, pageBase); catalogItemsPanelContainer.add(new AttributeAppender("class", "col-md-12")); } catalogItemsPanel.setOutputMarkupId(true); - catalogItemsPanelContainer.add(catalogItemsPanel); + catalogItemsPanelContainer.addOrReplace(catalogItemsPanel); } private void selectTreeItemPerformed(SelectableBean selected, AjaxRequestTarget target) { final OrgType selectedOgr = selected.getValue(); - CatalogItemsPanel catalogItemsPanel = new CatalogItemsPanel(ID_CATALOG_ITEMS_PANEL, selectedOgr.getOid(), pageBase); + rootOidModel.setObject(selectedOgr.getOid()); + viewTypeClassModel.setObject(null); + CatalogItemsPanel catalogItemsPanel = new CatalogItemsPanel(ID_CATALOG_ITEMS_PANEL, rootOidModel, viewTypeClassModel, pageBase); catalogItemsPanel.setOutputMarkupId(true); ((WebMarkupContainer) get(ID_CATALOG_ITEMS_PANEL_CONTAINER)).addOrReplace(catalogItemsPanel); target.add(catalogItemsPanel); target.add(get(ID_CATALOG_ITEMS_PANEL_CONTAINER)); } + private void initModels(){ + rootOidModel = new IModel() { + @Override + public String getObject() { + return rootOid; + } + + @Override + public void setObject(String s) { + rootOid = s; + } + + @Override + public void detach() { + + } + }; + viewTypeClassModel = new IModel() { + @Override + public QName getObject() { + return viewTypeClass; + } + + @Override + public void setObject(QName qName) { + viewTypeClass = qName; + } + + @Override + public void detach() { + + } + }; + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.html index 3d7bba44466..2c9666562f3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/CatalogItemsPanel.html @@ -17,13 +17,16 @@ xmlns:wicket="http://wicket.apache.org"> -
-
+
+ -
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentShoppingKart.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentShoppingKart.java index baed519bd1a..6cb9c87851c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentShoppingKart.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/self/PageAssignmentShoppingKart.java @@ -61,16 +61,13 @@ public class PageAssignmentShoppingKart extends PageSelf { private static final String ID_MAIN_PANEL = "mainPanel"; private static final String ID_MAIN_FORM = "mainForm"; - private static final String ID_VIEW_TYPE = "type"; - private static final String ID_BUTTON_PANEL = "buttonPanel"; private static final String DOT_CLASS = PageAssignmentShoppingKart.class.getName() + "."; private static final String OPERATION_LOAD_ROLE_CATALOG_REFERENCE = DOT_CLASS + "loadRoleCatalogReference"; private static final Trace LOGGER = TraceManager.getTrace(PageAssignmentShoppingKart.class); - private IModel viewModel; - private AssignmentViewType currentViewType = AssignmentViewType.ROLE_CATALOG_VIEW; private String catalogOid = null; private boolean isFirstInit = true; + private QName currentViewClass; public PageAssignmentShoppingKart() { initLayout(); @@ -81,24 +78,6 @@ private void initLayout() { add(mainForm); catalogOid = getRoleCatalogOid(); - viewModel = new IModel() { - @Override - public AssignmentViewType getObject() { - return currentViewType; - } - - @Override - public void setObject(AssignmentViewType assignmentViewType) { - currentViewType = assignmentViewType; - } - - @Override - public void detach() { - - } - }; - initButtonPanel(mainForm); - mainForm.add(initMainPanel()); } @@ -127,62 +106,12 @@ private String getRoleCatalogOid() { return ""; } - private void initButtonPanel(Form mainForm) { - WebMarkupContainer buttonPanel = new WebMarkupContainer(ID_BUTTON_PANEL); - buttonPanel.setOutputMarkupId(true); - mainForm.add(buttonPanel); - - DropDownChoice viewSelect = new DropDownChoice(ID_VIEW_TYPE, viewModel, new ListModel(createAssignableTypesList()), - new EnumChoiceRenderer(this)); - viewSelect.add(new OnChangeAjaxBehavior() { - - @Override - protected void onUpdate(AjaxRequestTarget target) { - QName viewTypeClass = getViewTypeClass(); - Component panel; - if (viewTypeClass != null) { - panel = new AssignmentCatalogPanel(ID_MAIN_PANEL, viewTypeClass, PageAssignmentShoppingKart.this); - panel.setOutputMarkupId(true); - } else { - panel = initMainPanel(); - } - ((Form) PageAssignmentShoppingKart.this.get(ID_MAIN_FORM)).addOrReplace(panel); - target.add(get(ID_MAIN_FORM)); - } - }); - viewSelect.setOutputMarkupId(true); - buttonPanel.add(viewSelect); - - } - - public static List createAssignableTypesList() { - List focusTypeList = new ArrayList<>(); - - focusTypeList.add(AssignmentViewType.ROLE_CATALOG_VIEW); - focusTypeList.add(AssignmentViewType.ORG_TYPE); - focusTypeList.add(AssignmentViewType.ROLE_TYPE); - focusTypeList.add(AssignmentViewType.SERVICE_TYPE); - - return focusTypeList; - } - - private QName getViewTypeClass() { - if (AssignmentViewType.ORG_TYPE.equals(currentViewType)) { - return OrgType.COMPLEX_TYPE; - } else if (AssignmentViewType.ROLE_TYPE.equals(currentViewType)) { - return RoleType.COMPLEX_TYPE; - } else if (AssignmentViewType.SERVICE_TYPE.equals(currentViewType)) { - return ServiceType.COMPLEX_TYPE; - } - return null; - } - private Component initMainPanel(){ if (StringUtils.isEmpty(catalogOid)) { if (isFirstInit){ isFirstInit = false; - currentViewType = AssignmentViewType.ROLE_TYPE; - AssignmentCatalogPanel panel = new AssignmentCatalogPanel(ID_MAIN_PANEL, getViewTypeClass(), PageAssignmentShoppingKart.this); + currentViewClass = RoleType.COMPLEX_TYPE; + AssignmentCatalogPanel panel = new AssignmentCatalogPanel(ID_MAIN_PANEL, currentViewClass, PageAssignmentShoppingKart.this); panel.setOutputMarkupId(true); return panel; } else {