Skip to content

Commit

Permalink
role catalog restructuring panels
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Oct 11, 2016
1 parent 51da6b1 commit 513e47e
Show file tree
Hide file tree
Showing 5 changed files with 159 additions and 115 deletions.
Expand Up @@ -47,6 +47,10 @@ public class AssignmentCatalogPanel<F extends AbstractRoleType> extends BasePane
private static String ID_CATALOG_ITEMS_PANEL = "catalogItemsPanel";

private PageBase pageBase;
private IModel<String> rootOidModel;
private String rootOid;
private IModel<QName> viewTypeClassModel;
private QName viewTypeClass;

public AssignmentCatalogPanel(String id) {
super(id);
Expand All @@ -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<String>() {
@Override
public String getObject() {
Expand Down Expand Up @@ -106,38 +118,72 @@ protected List<InlineMenuItem> 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<OrgType> 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<String>() {
@Override
public String getObject() {
return rootOid;
}

@Override
public void setObject(String s) {
rootOid = s;
}

@Override
public void detach() {

}
};
viewTypeClassModel = new IModel<QName>() {
@Override
public QName getObject() {
return viewTypeClass;
}

@Override
public void setObject(QName qName) {
viewTypeClass = qName;
}

@Override
public void detach() {

}
};
}
}

Expand Up @@ -17,13 +17,16 @@
xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:panel>
<div wicket:id="headerPanel" class="box-header">
<form class="form-inline search-form pull-left" wicket:id="searchForm">
<div wicket:id="headerPanel" class="row box-header">
<select class="col-md-3 input-sm" wicket:id="viewTypeSelect"/>

<form class="col-md-8 search-form" wicket:id="searchForm">
<div wicket:id="search"/>
</form>
<a wicket:id="cartButton" class="col-md-1 pull-right" style="font-size: 24px">
<a wicket:id="cartButton" class="col-md-1" style="font-size: 24px">
<i class="fa fa-shopping-cart" style="width: 50%;"></i>
<span wicket:id="itemsCount" class="badge bg-red" style="font-size: 10px; position: absolute; top: -1px; right: 50%;"></span>
<span wicket:id="itemsCount" class="badge bg-red"
style="font-size: 10px; position: absolute; top: -1px; right: 50%;"></span>
</a>
</div>
<div class="row" wicket:id="multiButtonTable" style="min-height: 460px; margin-left: 15px;"/>
Expand Down
Expand Up @@ -37,21 +37,26 @@
import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus;
import com.evolveum.midpoint.web.page.self.PageAssignmentDetails;
import com.evolveum.midpoint.web.page.self.PageAssignmentsList;
import com.evolveum.midpoint.web.page.self.dto.AssignmentViewType;
import com.evolveum.midpoint.web.security.SecurityUtils;
import com.evolveum.midpoint.web.session.SessionStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.EnumChoiceRenderer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.navigation.paging.IPageable;
import org.apache.wicket.markup.html.navigation.paging.IPageableItems;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.repeater.data.DataViewBase;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.util.ListModel;

import javax.xml.namespace.QName;
import java.util.ArrayList;
Expand All @@ -76,6 +81,7 @@ public class CatalogItemsPanel extends BasePanel implements IPageableItems {
private static final String ID_CART_BUTTON = "cartButton";
private static final String ID_CART_ITEMS_COUNT = "itemsCount";
private static final String ID_HEADER_PANEL = "headerPanel";
private static final String ID_VIEW_TYPE = "viewTypeSelect";

private static final String DOT_CLASS = CatalogItemsPanel.class.getName();
private static final Trace LOGGER = TraceManager.getTrace(CatalogItemsPanel.class);
Expand All @@ -85,40 +91,50 @@ public class CatalogItemsPanel extends BasePanel implements IPageableItems {
private IModel<Search> searchModel;
private ObjectDataProvider<AssignmentEditorDto, AbstractRoleType> provider;
private IModel<List<AssignmentEditorDto>> itemsListModel;
private IModel<AssignmentViewType> viewModel;
private AssignmentViewType currentViewType = AssignmentViewType.ROLE_CATALOG_VIEW;

private long itemsPerRow = 3;
private static final long DEFAULT_ROWS_COUNT = 5;
private PageBase pageBase;
private QName focusTypeClass;
private String catalogOid;
private IModel<QName> viewTypeClassModel;
private IModel<String> catalogOidModel;
private long currentPage = 0;

public CatalogItemsPanel(String id) {
super(id);
}

public CatalogItemsPanel(String id, QName focusTypeClass, PageBase pageBase) {
this (id, focusTypeClass, pageBase, 0);
public CatalogItemsPanel(String id, IModel<String> catalogOidModel, IModel<QName> viewTypeClassModel, PageBase pageBase) {
this(id, catalogOidModel, viewTypeClassModel, pageBase, 0);
}
public CatalogItemsPanel(String id, QName focusTypeClass, PageBase pageBase, long itemsPerRow) {

public CatalogItemsPanel(String id, IModel<String> catalogOidModel, IModel<QName> viewTypeClassModel, PageBase pageBase, int itemsPerRow) {
super(id);
this.pageBase = pageBase;
this.focusTypeClass = focusTypeClass;
this.catalogOid = null;
this.viewTypeClassModel = viewTypeClassModel;
this.catalogOidModel = catalogOidModel;
setCurrentViewType(viewTypeClassModel.getObject());

if (itemsPerRow > 0){
this.itemsPerRow = itemsPerRow;
}
initProvider();
initSearchModel();
initItemListModel();
initLayout();
}
viewModel = new IModel<AssignmentViewType>() {
@Override
public AssignmentViewType getObject() {
return currentViewType;
}

public CatalogItemsPanel(String id, String catalogOid, PageBase pageBase) {
super(id);
this.pageBase = pageBase;
this.catalogOid = catalogOid;
this.focusTypeClass = null;
@Override
public void setObject(AssignmentViewType assignmentViewType) {
currentViewType = assignmentViewType;
}

@Override
public void detach() {

}
};
initProvider();
initSearchModel();
initItemListModel();
Expand All @@ -132,6 +148,7 @@ private void initLayout() {
headerPanel.setOutputMarkupId(true);
add(headerPanel);

initViewSelector(headerPanel);
initCartButton(headerPanel);
initSearchPanel(headerPanel);

Expand Down Expand Up @@ -202,6 +219,24 @@ public void detach() {
};
}

private void initViewSelector(WebMarkupContainer headerPanel){
DropDownChoice<AssignmentViewType> viewSelect = new DropDownChoice(ID_VIEW_TYPE, viewModel, new ListModel(createAssignableTypesList()),
new EnumChoiceRenderer<AssignmentViewType>(this));
viewSelect.add(new OnChangeAjaxBehavior() {

@Override
protected void onUpdate(AjaxRequestTarget target) {
viewTypeClassModel.setObject(getViewTypeClass());
AssignmentCatalogPanel parentPanel = CatalogItemsPanel.this.findParent(AssignmentCatalogPanel.class);
parentPanel.addOrReplaceLayout();
target.add(parentPanel);
}
});
viewSelect.setOutputMarkupId(true);
headerPanel.add(viewSelect);

}

private void initSearchPanel(WebMarkupContainer headerPanel) {
final Form searchForm = new Form(ID_SEARCH_FORM);
headerPanel.add(searchForm);
Expand All @@ -227,10 +262,10 @@ private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {

protected ObjectQuery createContentQuery(ObjectQuery searchQuery) {
ObjectQuery memberQuery;
if (catalogOid != null){
memberQuery = createMemberQuery(catalogOid);
if (viewTypeClassModel.getObject() == null){
memberQuery = createMemberQuery(catalogOidModel.getObject());
} else {
memberQuery = createMemberQuery(focusTypeClass);
memberQuery = createMemberQuery(viewTypeClassModel.getObject());
}
if (memberQuery == null) {
memberQuery = new ObjectQuery();
Expand Down Expand Up @@ -518,4 +553,38 @@ private PrismObject<UserType> loadUser() {
return user;
}

private void setCurrentViewType(QName viewTypeClass){
if (OrgType.COMPLEX_TYPE.equals(viewTypeClass)) {
currentViewType = AssignmentViewType.ORG_TYPE ;
} else if (RoleType.COMPLEX_TYPE.equals(viewTypeClass)) {
currentViewType = AssignmentViewType.ROLE_TYPE ;
} else if (ServiceType.COMPLEX_TYPE.equals(viewTypeClass)) {
currentViewType = AssignmentViewType.SERVICE_TYPE ;
} else {
currentViewType = AssignmentViewType.ROLE_CATALOG_VIEW ;
}
}

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;
}

public static List<AssignmentViewType> createAssignableTypesList() {
List<AssignmentViewType> 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;
}

}
Expand Up @@ -20,9 +20,6 @@
<body>
<wicket:extend>
<form wicket:id="mainForm" class="form-horizontal">
<div class="form-inline" wicket:id="buttonPanel" style="margin: 15px;">
<select class="form-control input-sm" wicket:id="type"/>
</div>
<div class="main-form-panel">
<div wicket:id="mainPanel"/>
</div>
Expand Down

0 comments on commit 513e47e

Please sign in to comment.