Skip to content

Commit

Permalink
preselected items for object list panels refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Sep 12, 2018
1 parent a7d010f commit e1ffac8
Show file tree
Hide file tree
Showing 18 changed files with 163 additions and 150 deletions.
Expand Up @@ -62,16 +62,18 @@ protected void onInitialize(){

protected Component initObjectListPanel(){
PopupObjectListPanel<O> listPanel = new PopupObjectListPanel<O>(ID_OBJECT_LIST_PANEL, (Class)getObjectType().getClassDefinition(),
null, true, getPageBase(), getPreselectedObjects()) {
true, getPageBase()) {

private static final long serialVersionUID = 1L;

@Override
protected void onUpdateCheckbox(AjaxRequestTarget target) {
getPreselectedObjects().clear();
getPreselectedObjects().addAll(getSelectedObjectsList());
protected void onUpdateCheckbox(AjaxRequestTarget target, IModel<SelectableBean<O>> rowModel) {
onSelectionPerformed(target, rowModel);
}

onSelectionPerformed(target);
@Override
protected List<O> getPreselectedObjectList(){
return getPreselectedObjects();
}

@Override
Expand Down Expand Up @@ -99,22 +101,22 @@ public boolean isVisible(){
protected abstract void initParametersPanel(Fragment parametersPanel);

protected List<O> getPreselectedObjects(){
return preSelectedObjects;
return null;
}

protected List<O> getSelectedObjectsList(){
PopupObjectListPanel objectListPanel = (PopupObjectListPanel)getObjectListPanel();
PopupObjectListPanel objectListPanel = getObjectListPanel();
if (objectListPanel == null){
return new ArrayList();
}
return objectListPanel.getSelectedObjects();
}

protected Component getObjectListPanel(){
return get(ID_OBJECT_LIST_PANEL);
protected PopupObjectListPanel getObjectListPanel(){
return (PopupObjectListPanel)get(ID_OBJECT_LIST_PANEL);
}

protected void onSelectionPerformed(AjaxRequestTarget target){}
protected void onSelectionPerformed(AjaxRequestTarget target, IModel<SelectableBean<O>> rowModel){}

protected IModel<Boolean> getObjectSelectCheckBoxEnableModel(IModel<SelectableBean<O>> rowModel){
return Model.of(true);
Expand Down
Expand Up @@ -23,8 +23,8 @@
import com.evolveum.midpoint.web.component.TabbedPanel;
import com.evolveum.midpoint.web.component.dialog.Popupable;
import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand All @@ -34,8 +34,6 @@
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.protocol.http.ClientProperties;
import org.apache.wicket.protocol.http.WebSession;

import java.util.*;

Expand Down Expand Up @@ -123,11 +121,11 @@ protected List<ITab> createAssignmentTabs() {

@Override
public WebMarkupContainer createPanel(String panelId) {
return new FocusTypeAssignmentPopupTabPanel(panelId, ObjectTypes.ROLE){
return new FocusTypeAssignmentPopupTabPanel<RoleType>(panelId, ObjectTypes.ROLE){
private static final long serialVersionUID = 1L;

@Override
protected void onSelectionPerformed(AjaxRequestTarget target){
protected void onSelectionPerformed(AjaxRequestTarget target, IModel<SelectableBean<RoleType>> rowModel){
tabLabelPanelUpdate(target);
}

Expand All @@ -152,11 +150,12 @@ public String getCount() {

@Override
public WebMarkupContainer createPanel(String panelId) {
return new FocusTypeAssignmentPopupTabPanel(panelId, ObjectTypes.ORG){
return new FocusTypeAssignmentPopupTabPanel<OrgType>(panelId, ObjectTypes.ORG){
private static final long serialVersionUID = 1L;

@Override
protected void onSelectionPerformed(AjaxRequestTarget target){
protected void onSelectionPerformed(AjaxRequestTarget target, IModel<SelectableBean<OrgType>> rowModel){
selectedOrgsListUpdate(rowModel);
tabLabelPanelUpdate(target);
}

Expand All @@ -169,7 +168,6 @@ protected ObjectTypes getObjectType(){
protected List<OrgType> getPreselectedObjects(){
return selectedOrgsList;
}

};
}

Expand All @@ -191,7 +189,8 @@ public WebMarkupContainer createPanel(String panelId) {
private static final long serialVersionUID = 1L;

@Override
protected void onOrgTreeCheckBoxSelectionPerformed(AjaxRequestTarget target){
protected void onSelectionPerformed(AjaxRequestTarget target, IModel<SelectableBean<OrgType>> rowModel){
selectedOrgsListUpdate(rowModel);
tabLabelPanelUpdate(target);
}

Expand All @@ -216,7 +215,7 @@ public String getCount() {

@Override
public WebMarkupContainer createPanel(String panelId) {
return new FocusTypeAssignmentPopupTabPanel(panelId, ObjectTypes.SERVICE){
return new FocusTypeAssignmentPopupTabPanel<ServiceType>(panelId, ObjectTypes.SERVICE){
private static final long serialVersionUID = 1L;

@Override
Expand All @@ -225,7 +224,7 @@ protected ObjectTypes getObjectType(){
}

@Override
protected void onSelectionPerformed(AjaxRequestTarget target){
protected void onSelectionPerformed(AjaxRequestTarget target, IModel<SelectableBean<ServiceType>> rowModel){
tabLabelPanelUpdate(target);
}

Expand All @@ -250,8 +249,8 @@ public WebMarkupContainer createPanel(String panelId) {
private static final long serialVersionUID = 1L;

@Override
protected void onSelectionPerformed(AjaxRequestTarget target){
super.onSelectionPerformed(target);
protected void onSelectionPerformed(AjaxRequestTarget target, IModel<SelectableBean<ResourceType>> rowModel){
super.onSelectionPerformed(target, rowModel);
tabLabelPanelUpdate(target);
}
};
Expand Down Expand Up @@ -287,6 +286,17 @@ private void tabLabelPanelUpdate(AjaxRequestTarget target){
target.add(get(ID_FORM).get(ID_ASSIGN_BUTTON));
}

private void selectedOrgsListUpdate(IModel<SelectableBean<OrgType>> rowModel){
if (rowModel == null){
return;
}
if (rowModel.getObject().isSelected()){
selectedOrgsList.add(rowModel.getObject().getValue());
} else {
selectedOrgsList.removeIf((OrgType org) -> org.getOid().equals(rowModel.getObject().getValue().getOid()));
}
}

private TabbedPanel getTabbedPanel(){
return (TabbedPanel) get(ID_FORM).get(ID_TABS_PANEL);
}
Expand All @@ -305,8 +315,8 @@ protected String load() {
}

private boolean isAssignButtonEnabled(){
TabbedPanel tabbedPanel = getTabbedPanel();
List<ITab> tabs = (List<ITab>) tabbedPanel.getTabs().getObject();
TabbedPanel<ITab> tabbedPanel = getTabbedPanel();
List<ITab> tabs = tabbedPanel.getTabs().getObject();
for (ITab tab : tabs){
WebMarkupContainer assignmentPanel = ((CountablePanelTab)tab).getPanel();
if (assignmentPanel == null){
Expand Down
Expand Up @@ -34,6 +34,7 @@
import com.evolveum.midpoint.web.component.TabbedPanel;
import com.evolveum.midpoint.web.component.dialog.Popupable;
import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.Component;
Expand Down Expand Up @@ -148,11 +149,11 @@ protected List<ITab> createAssignmentTabs() {

@Override
public WebMarkupContainer createPanel(String panelId) {
return new MemberPopupTabPanel(panelId, availableRelationList){
return new MemberPopupTabPanel<UserType>(panelId, availableRelationList){
private static final long serialVersionUID = 1L;

@Override
protected void onSelectionPerformed(AjaxRequestTarget target){
protected void onSelectionPerformed(AjaxRequestTarget target, IModel<SelectableBean<UserType>> rowModel){
tabLabelPanelUpdate(target);
}

Expand Down Expand Up @@ -180,11 +181,11 @@ public String getCount() {

@Override
public WebMarkupContainer createPanel(String panelId) {
return new MemberPopupTabPanel(panelId, availableRelationList){
return new MemberPopupTabPanel<RoleType>(panelId, availableRelationList){
private static final long serialVersionUID = 1L;

@Override
protected void onSelectionPerformed(AjaxRequestTarget target){
protected void onSelectionPerformed(AjaxRequestTarget target, IModel<SelectableBean<RoleType>> rowModel){
tabLabelPanelUpdate(target);
}

Expand Down Expand Up @@ -213,11 +214,11 @@ public String getCount() {

@Override
public WebMarkupContainer createPanel(String panelId) {
return new MemberPopupTabPanel(panelId, availableRelationList){
return new MemberPopupTabPanel<OrgType>(panelId, availableRelationList){
private static final long serialVersionUID = 1L;

@Override
protected void onSelectionPerformed(AjaxRequestTarget target){
protected void onSelectionPerformed(AjaxRequestTarget target, IModel<SelectableBean<OrgType>> rowModel){
tabLabelPanelUpdate(target);
}

Expand Down Expand Up @@ -285,7 +286,7 @@ public String getCount() {

@Override
public WebMarkupContainer createPanel(String panelId) {
return new MemberPopupTabPanel(panelId, availableRelationList){
return new MemberPopupTabPanel<ServiceType>(panelId, availableRelationList){
private static final long serialVersionUID = 1L;

@Override
Expand All @@ -299,7 +300,7 @@ protected ObjectTypes getObjectType(){
}

@Override
protected void onSelectionPerformed(AjaxRequestTarget target){
protected void onSelectionPerformed(AjaxRequestTarget target, IModel<SelectableBean<ServiceType>> rowModel){
tabLabelPanelUpdate(target);
}

Expand Down
Expand Up @@ -23,11 +23,13 @@
* Created by honchar
*/

import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.tabs.ITab;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.IModel;

import javax.xml.namespace.QName;
import java.util.List;
Expand All @@ -48,11 +50,11 @@ protected List<ITab> createAssignmentTabs() {

@Override
public WebMarkupContainer createPanel(String panelId) {
return new MultiTypesMemberPopupTabPanel(panelId, availableRelationList){
return new MultiTypesMemberPopupTabPanel<O>(panelId, availableRelationList){
private static final long serialVersionUID = 1L;

@Override
protected void onSelectionPerformed(AjaxRequestTarget target){
protected void onSelectionPerformed(AjaxRequestTarget target, IModel<SelectableBean<O>> rowModel){
tabLabelPanelUpdate(target);
}

Expand Down
Expand Up @@ -178,7 +178,7 @@ private ObjectListPanel<O> createObjectListPanel(ObjectTypes type, final boolean
Class typeClass = type.getClassDefinition();

PopupObjectListPanel<O> listPanel = new PopupObjectListPanel<O>(ID_TABLE, typeClass, getOptions(),
multiselect, parentPage, selectedObjectsList) {
multiselect, parentPage) {

private static final long serialVersionUID = 1L;

Expand All @@ -197,6 +197,11 @@ protected ObjectQuery addFilterToContentQuery(ObjectQuery query) {
}
return query;
}

@Override
protected List<O> getPreselectedObjectList(){
return selectedObjectsList;
}
};
listPanel.setOutputMarkupId(true);
return listPanel;
Expand Down
Expand Up @@ -93,8 +93,6 @@ public abstract class ObjectListPanel<O extends ObjectType> extends BasePanel<O>

private TableId tableId;

protected List<O> selectedObjects = null;

private String addutionalBoxCssClasses;

public Class<? extends O> getType() {
Expand All @@ -106,24 +104,23 @@ public Class<? extends O> getType() {
*/
public ObjectListPanel(String id, Class<? extends O> defaultType, TableId tableId, Collection<SelectorOptions<GetOperationOptions>> options,
PageBase parentPage) {
this(id, defaultType, tableId, options, false, parentPage, null);
this(id, defaultType, tableId, options, false, parentPage);
}

/**
* @param defaultType specifies type of the object that will be selected by default. It can be changed.
*/
ObjectListPanel(String id, Class<? extends O> defaultType, TableId tableId, boolean multiselect, PageBase parentPage) {
this(id, defaultType, tableId, null, multiselect, parentPage, null);
this(id, defaultType, tableId, null, multiselect, parentPage);
}

public ObjectListPanel(String id, Class<? extends O> defaultType, TableId tableId, Collection<SelectorOptions<GetOperationOptions>> options,
boolean multiselect, PageBase parentPage, List<O> selectedObjectsList) {
boolean multiselect, PageBase parentPage) {
super(id);
this.type = defaultType != null ? ObjectTypes.getObjectType(defaultType) : null;
this.parentPage = parentPage;
this.options = options;
this.multiselect = multiselect;
this.selectedObjects = selectedObjectsList;
this.tableId = tableId;
initLayout();
}
Expand All @@ -134,7 +131,7 @@ public boolean isMultiselect() {

public int getSelectedObjectsCount(){
List<O> selectedList = getSelectedObjects();
return selectedList == null ? 0 : selectedList.size();
return selectedList.size();
}

@SuppressWarnings("unchecked")
Expand Down Expand Up @@ -383,9 +380,9 @@ protected List<IColumn<SelectableBean<O>, String>> initColumns() {
}

protected BaseSortableDataProvider<SelectableBean<O>> initProvider() {
Set<O> selectedObjectsSet = selectedObjects == null ? null : new HashSet<>(selectedObjects);
List<O> preSelectedObjectList = getPreselectedObjectList();
SelectableBeanObjectDataProvider<O> provider = new SelectableBeanObjectDataProvider<O>(
parentPage, (Class) type.getClassDefinition(), selectedObjectsSet) {
parentPage, (Class) type.getClassDefinition(), preSelectedObjectList == null ? null : new HashSet<>(preSelectedObjectList)) {
private static final long serialVersionUID = 1L;

@Override
Expand Down Expand Up @@ -439,6 +436,10 @@ protected List<ObjectOrdering> createObjectOrderings(SortParam<String> sortParam
return provider;
}

protected List<O> getPreselectedObjectList(){
return null;
}

protected List<ObjectOrdering> createCustomOrdering(SortParam<String> sortParam) {
return null;
}
Expand Down

0 comments on commit e1ffac8

Please sign in to comment.