Skip to content

Commit

Permalink
MID-2533 storing tree state, not finished yet
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Sep 2, 2015
1 parent 8c846fa commit cc47dbc
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 38 deletions.
Expand Up @@ -17,6 +17,7 @@
package com.evolveum.midpoint.web.component.util;

import com.evolveum.midpoint.web.security.MidPointApplication;
import com.evolveum.midpoint.web.security.MidPointAuthWebSession;
import com.evolveum.midpoint.web.security.WebApplicationConfiguration;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.markup.html.panel.Panel;
Expand Down Expand Up @@ -102,4 +103,8 @@ public WebApplicationConfiguration getWebApplicationConfiguration() {
return application.getWebApplicationConfiguration();
}

@Override
public MidPointAuthWebSession getSession() {
return (MidPointAuthWebSession) super.getSession();
}
}
Expand Up @@ -107,14 +107,16 @@ public WebMarkupContainer getPanel(String panelId) {
}
};

TabbedPanel tabbedPanel;
if (TreeTablePanel.returnFromEditRoot) {
tabbedPanel = new TabbedPanel(ID_TABS, tabModel, new Model<>(selectedTabbedPanel.getSelectedTab()));
selectedTabbedPanel = tabbedPanel;
} else {
tabbedPanel = new TabbedPanel(ID_TABS, tabModel, new Model<>(0));
selectedTabbedPanel = tabbedPanel;
}
//todo MID-2533
// TabbedPanel tabbedPanel;
// if (TreeTablePanel.returnFromEditRoot) {
// tabbedPanel = new TabbedPanel(ID_TABS, tabModel, new Model<>(selectedTabbedPanel.getSelectedTab()));
// selectedTabbedPanel = tabbedPanel;
// } else {
// tabbedPanel = new TabbedPanel(ID_TABS, tabModel, new Model<>(0));
// selectedTabbedPanel = tabbedPanel;
// }
TabbedPanel tabbedPanel = new TabbedPanel(ID_TABS, tabModel, new Model<>(0));
tabbedPanel.setOutputMarkupId(true);
add(tabbedPanel);
}
Expand Down
Expand Up @@ -697,7 +697,6 @@ private boolean isEditingOrgUnit() {
}

private void setSpecificResponsePage() {
TreeTablePanel.returnFromEditRoot = true;
goBack(PageOrgTree.class);
}

Expand Down
Expand Up @@ -57,7 +57,9 @@
import com.evolveum.midpoint.web.page.admin.users.PageOrgUnit;
import com.evolveum.midpoint.web.page.admin.users.PageUser;
import com.evolveum.midpoint.web.page.admin.users.dto.*;
import com.evolveum.midpoint.web.security.MidPointAuthWebSession;
import com.evolveum.midpoint.web.security.SecurityUtils;
import com.evolveum.midpoint.web.session.SessionStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.util.ObjectTypeGuiDescriptor;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
Expand Down Expand Up @@ -134,22 +136,11 @@ public class TreeTablePanel extends SimplePanel<String> {
private static final String ID_SEARCH_FORM = "searchForm";
private static final String ID_BASIC_SEARCH = "basicSearch";

public static boolean returnFromEditRoot = false;
public static boolean returnFromEditRoot1 = false;
public static OrgTreeDto selectedItem = null;
public static TreeStateSet<OrgTreeDto> tempSet;

private IModel<OrgTreeDto> selected = new LoadableModel<OrgTreeDto>() {

@Override
protected OrgTreeDto load() {
if (returnFromEditRoot){
returnFromEditRoot1 = true;
returnFromEditRoot = false;
return selectedItem;
} else {
return getRootFromProvider();
}
return getRootFromProvider();
}
};

Expand Down Expand Up @@ -259,7 +250,7 @@ public void renderHead(IHeaderResponse response) {
add(treeContainer);

TableTree<OrgTreeDto, String> tree = new TableTree<OrgTreeDto, String>(ID_TREE, columns, provider,
Integer.MAX_VALUE, new TreeStateModel(provider)) {
Integer.MAX_VALUE, new TreeStateModel(this, provider)) {

@Override
protected Component newContentComponent(String id, IModel<OrgTreeDto> model) {
Expand All @@ -268,7 +259,12 @@ protected Component newContentComponent(String id, IModel<OrgTreeDto> model) {
@Override
protected void onClick(AjaxRequestTarget target) {
super.onClick(target);
selectedItem = selected.getObject();

//todo selection is stored to session, find a place where to "load" this selection from session
MidPointAuthWebSession session = TreeTablePanel.this.getSession();
SessionStorage storage = session.getSessionStorage();
storage.getUsers().setSelectedItem(selected.getObject());

selectTreeItemPerformed(target);
}
};
Expand All @@ -291,6 +287,17 @@ public String getObject() {
}));
return item;
}

@Override
protected void onModelChanged() {
super.onModelChanged();

Set<OrgTreeDto> items = getModelObject();

MidPointAuthWebSession session = TreeTablePanel.this.getSession();
SessionStorage storage = session.getSessionStorage();
storage.getUsers().setExpandedItems((TreeStateSet<OrgTreeDto>) items);
}
};
tree.getTable().add(AttributeModifier.replace("class", "table table-striped table-condensed"));
tree.add(new WindowsTheme());
Expand Down Expand Up @@ -482,9 +489,6 @@ public void onClick(AjaxRequestTarget target) {

@Override
public void onClick(AjaxRequestTarget target) {
TableTree<OrgTreeDto, String> tree = getTree();
TreeStateModel model = (TreeStateModel) tree.getDefaultModel();
tempSet = model.set;
editRootPerformed(target);
}
});
Expand Down Expand Up @@ -1402,14 +1406,22 @@ private static class TreeStateModel extends AbstractReadOnlyModel<Set<OrgTreeDto

private TreeStateSet<OrgTreeDto> set = new TreeStateSet<OrgTreeDto>();
private ISortableTreeProvider provider;
TableTree<OrgTreeDto, String> tree;
private TreeTablePanel panel;

TreeStateModel(ISortableTreeProvider provider) {
TreeStateModel(TreeTablePanel panel, ISortableTreeProvider provider) {
this.panel = panel;
this.provider = provider;
}

@Override
public Set<OrgTreeDto> getObject() {
MidPointAuthWebSession session = panel.getSession();
SessionStorage storage = session.getSessionStorage();
Set<OrgTreeDto> dtos = storage.getUsers().getExpandedItems();
if ((dtos instanceof TreeStateSet) && set.isEmpty()) {
set = (TreeStateSet<OrgTreeDto>) dtos;
}

//just to have root expanded at all time
if (set.isEmpty()) {
Iterator<OrgTreeDto> iterator = provider.getRoots();
Expand All @@ -1418,12 +1430,6 @@ public Set<OrgTreeDto> getObject() {
}

}
if (returnFromEditRoot1) {
returnFromEditRoot1 = false;
set.addAll(tempSet);
set.add(selectedItem);
tempSet.clear();
}
return set;
}

Expand Down
Expand Up @@ -108,4 +108,13 @@ public boolean removeAll(Collection<?> c) {
public void clear() {
set.clear();
}

@Override
public TreeStateSet clone() {
TreeStateSet set = new TreeStateSet();
set.inverse = this.inverse;
set.set.addAll(this.set);

return set;
}
}
Expand Up @@ -17,9 +17,13 @@
package com.evolveum.midpoint.web.session;

import com.evolveum.midpoint.prism.query.ObjectPaging;
import com.evolveum.midpoint.web.page.admin.users.dto.OrgTreeDto;
import com.evolveum.midpoint.web.page.admin.users.dto.OrgUnitSearchDto;
import com.evolveum.midpoint.web.page.admin.users.dto.TreeStateSet;
import com.evolveum.midpoint.web.page.admin.users.dto.UsersDto;

import java.util.Set;

/**
* @author lazyman
*/
Expand All @@ -31,20 +35,23 @@ public class UsersStorage extends PageStorage {
private UsersDto usersSearch;

/**
* DTO used for search purposes in {@link com.evolveum.midpoint.web.page.admin.users in OrgUnitBrowser}
* */
* DTO used for search purposes in {@link com.evolveum.midpoint.web.page.admin.users in OrgUnitBrowser}
*/
private OrgUnitSearchDto orgUnitSearch;

/**
* Paging DTO used in table on page {@link com.evolveum.midpoint.web.page.admin.users in OrgUnitBrowser}
* */
* Paging DTO used in table on page {@link com.evolveum.midpoint.web.page.admin.users in OrgUnitBrowser}
*/
private ObjectPaging orgUnitPaging;

/**
* Paging DTO used in table on page {@link com.evolveum.midpoint.web.page.admin.users.PageUsers}
*/
private ObjectPaging usersPaging;

private OrgTreeDto selectedItem;
private TreeStateSet<OrgTreeDto> expandedItems;

public ObjectPaging getUsersPaging() {
return usersPaging;
}
Expand Down Expand Up @@ -76,4 +83,20 @@ public ObjectPaging getOrgUnitPaging() {
public void setOrgUnitPaging(ObjectPaging orgUnitPaging) {
this.orgUnitPaging = orgUnitPaging;
}

public Set<OrgTreeDto> getExpandedItems() {
return expandedItems;
}

public void setExpandedItems(TreeStateSet<OrgTreeDto> expandedItems) {
this.expandedItems = expandedItems != null ? expandedItems.clone() : null;
}

public OrgTreeDto getSelectedItem() {
return selectedItem;
}

public void setSelectedItem(OrgTreeDto selectedItem) {
this.selectedItem = selectedItem;
}
}

0 comments on commit cc47dbc

Please sign in to comment.