Skip to content

Commit

Permalink
Merge branch 'master' into feature/prism-panels-styles
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Apr 18, 2016
2 parents 246e44c + 0499686 commit 36ba13e
Show file tree
Hide file tree
Showing 24 changed files with 2,752 additions and 1,897 deletions.
Expand Up @@ -35,9 +35,10 @@
import com.evolveum.midpoint.web.component.input.QNameChoiceRenderer;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;

public class FocusBrowserPanel<T extends FocusType> extends BasePanel<T> {
public class FocusBrowserPanel<T extends ObjectType> extends BasePanel<T> {

private static final String ID_TYPE = "type";
private static final String ID_TYPE_PANEL = "typePanel";
Expand All @@ -49,10 +50,11 @@ public class FocusBrowserPanel<T extends FocusType> extends BasePanel<T> {

private PageBase parentPage;

public FocusBrowserPanel(String id, final Class<T> type, boolean multiselect, PageBase parentPage) {
public FocusBrowserPanel(String id, final Class<T> type, List<QName> supportedTypes, boolean multiselect,
PageBase parentPage) {
super(id);
this.parentPage = parentPage;
typeModel = new LoadableModel<QName>(true) {
typeModel = new LoadableModel<QName>(false) {

@Override
protected QName load() {
Expand All @@ -61,26 +63,27 @@ protected QName load() {

};

initLayout(type, multiselect);
initLayout(type, supportedTypes, multiselect);
}

private void initLayout(Class<T> type, final boolean multiselect) {
WebMarkupContainer typePanel = new WebMarkupContainer(ID_TYPE_PANEL);
typePanel.setOutputMarkupId(true);
typePanel.add(new VisibleEnableBehaviour(){
@Override
public boolean isVisible(){
return multiselect;
}
});
add(typePanel);
private void initLayout(Class<T> type, final List<QName> supportedTypes, final boolean multiselect) {

WebMarkupContainer typePanel = new WebMarkupContainer(ID_TYPE_PANEL);
typePanel.setOutputMarkupId(true);
typePanel.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
return supportedTypes.size() != 1;
}
});
add(typePanel);
DropDownChoice<QName> typeSelect = new DropDownChoice(ID_TYPE, typeModel,
new ListModel(WebComponentUtil.createFocusTypeList()), new QNameChoiceRenderer());
new ListModel(supportedTypes), new QNameChoiceRenderer());
typeSelect.add(new OnChangeAjaxBehavior() {

@Override
protected void onUpdate(AjaxRequestTarget target) {

ObjectListPanel<T> listPanel = (ObjectListPanel<T>) get(ID_TABLE);

listPanel = createObjectListPanel(qnameToCompileTimeClass(typeModel.getObject()),
Expand All @@ -100,12 +103,13 @@ protected void onUpdate(AjaxRequestTarget target) {
@Override
public void onClick(AjaxRequestTarget target) {
List<T> selected = ((PopupObjectListPanel) getParent().get(ID_TABLE)).getSelectedObjects();
FocusBrowserPanel.this.addPerformed(target, selected);
QName type = FocusBrowserPanel.this.typeModel.getObject();
FocusBrowserPanel.this.addPerformed(target, type, selected);
}
};

addButton.add(new VisibleEnableBehaviour() {

@Override
public boolean isVisible() {
return multiselect;
Expand All @@ -119,45 +123,48 @@ protected void onClick(AjaxRequestTarget target, T focus) {
parentPage.hideMainPopup(target);
}

protected void onSelectPerformed(AjaxRequestTarget target, T focus) {
parentPage.hideMainPopup(target);
}
protected void onSelectPerformed(AjaxRequestTarget target, T focus) {
parentPage.hideMainPopup(target);
}

private ObjectListPanel<T> createObjectListPanel(Class<T> type, final boolean multiselect) {

private ObjectListPanel<T> createObjectListPanel(Class<T> type, final boolean multiselect) {

PopupObjectListPanel<T> listPanel = new PopupObjectListPanel<T>(ID_TABLE, type, multiselect, parentPage){
PopupObjectListPanel<T> listPanel = new PopupObjectListPanel<T>(ID_TABLE, type, multiselect,
parentPage) {
@Override
protected void onSelectPerformed(AjaxRequestTarget target, T object){
FocusBrowserPanel.this.onSelectPerformed(target, object);
}
protected void onSelectPerformed(AjaxRequestTarget target, T object) {
FocusBrowserPanel.this.onSelectPerformed(target, object);
}
};

// ObjectListPanel<T> listPanel = new ObjectListPanel<T>(ID_TABLE, type, parentPage) {
//
// @Override
// public void objectDetailsPerformed(AjaxRequestTarget target, T focus) {
// super.objectDetailsPerformed(target, focus);
// FocusBrowserPanel.this.onClick(target, focus);
// }
//
// @Override
// public void addPerformed(AjaxRequestTarget target, List<T> selected) {
// super.addPerformed(target, selected);
// FocusBrowserPanel.this.addPerformed(target, selected);
// }
//
// @Override
// public boolean isMultiSelect() {
// return multiselect;
// }
// };
// listPanel.setMultiSelect(multiselect);

// ObjectListPanel<T> listPanel = new ObjectListPanel<T>(ID_TABLE, type,
// parentPage) {
//
// @Override
// public void objectDetailsPerformed(AjaxRequestTarget target, T focus)
// {
// super.objectDetailsPerformed(target, focus);
// FocusBrowserPanel.this.onClick(target, focus);
// }
//
// @Override
// public void addPerformed(AjaxRequestTarget target, List<T> selected)
// {
// super.addPerformed(target, selected);
// FocusBrowserPanel.this.addPerformed(target, selected);
// }
//
// @Override
// public boolean isMultiSelect() {
// return multiselect;
// }
// };
// listPanel.setMultiSelect(multiselect);
listPanel.setOutputMarkupId(true);
return listPanel;
}

protected void addPerformed(AjaxRequestTarget target, List<T> selected) {
protected void addPerformed(AjaxRequestTarget target, QName type, List<T> selected) {
parentPage.hideMainPopup(target);
}

Expand Down
Expand Up @@ -49,6 +49,7 @@
import com.evolveum.midpoint.web.component.search.SearchFormPanel;
import com.evolveum.midpoint.web.component.util.ListDataProvider2;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.reports.PageReports;
import com.evolveum.midpoint.web.page.admin.resources.PageResources;
import com.evolveum.midpoint.web.page.admin.roles.PageRoles;
Expand Down Expand Up @@ -234,7 +235,7 @@ private BoxedTablePanel<SelectableBean<T>> createTable() {

@Override
protected WebMarkupContainer createHeader(String headerId) {
return new SearchFormPanel(headerId, searchModel) {
SearchFormPanel searchPanel = new SearchFormPanel(headerId, searchModel) {

private static final long serialVersionUID = 1L;

Expand All @@ -244,6 +245,13 @@ protected void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {
}

};
searchPanel.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
return !type.equals(ObjectType.class);
}
});
return searchPanel;
}

@Override
Expand Down Expand Up @@ -319,6 +327,28 @@ private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {
target.add(parentPage.getFeedbackPanel());

}

public void refreshTable(AjaxRequestTarget target) {
BaseSortableDataProvider<SelectableBean<T>> provider = getDataProvider();
provider.setQuery(getQuery());
String storageKey = getStorageKey();
if (StringUtils.isNotEmpty(storageKey)) {
PageStorage storage = getSession().getSessionStorage().getPageStorageMap().get(storageKey);
if (storage == null) {
storage = getSession().getSessionStorage().initPageStorage(storageKey);
}
if (storage != null) {
storage.setSearch(searchModel.getObject());
storage.setPaging(null);
}
}

Table table = getTable();
table.setCurrentPage(null);
target.add((Component) table);
target.add(parentPage.getFeedbackPanel());

}

public void clearCache() {
getDataProvider().clearCache();
Expand Down
Expand Up @@ -31,7 +31,6 @@
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.PrismObjectDefinition;
import com.evolveum.midpoint.prism.query.ObjectPaging;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.input.QNameChoiceRenderer;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
Expand All @@ -44,6 +43,10 @@

public class TypedAssignablePanel<T extends ObjectType> extends BasePanel<T> {

/**
*
*/
private static final long serialVersionUID = 1L;
private static final String ID_TYPE = "type";
private static final String ID_ROLE_TABLE = "roleTable";
private static final String ID_RESOURCE_TABLE = "resourceTable";
Expand Down Expand Up @@ -79,41 +82,15 @@ protected QName load() {
initLayout(type, multiselect);
}

private List<T> getSelectedData(String id){
return ((ObjectListPanel) get(createComponentPath(ID_TABLES_CONTAINER, id))).getSelectedObjects();
}

private Label createCountLabel(String id, ObjectListPanel panel){
Label label = new Label(id, panel.getSelectedObjects().size());
label.setOutputMarkupId(true);
return label;
}


private void initLayout(Class<T> type, final boolean multiselect) {
DropDownChoice<QName> typeSelect = new DropDownChoice(ID_TYPE, typeModel,
new ListModel(WebComponentUtil.createAssignableTypesList()), new QNameChoiceRenderer());
typeSelect.add(new OnChangeAjaxBehavior() {

@Override
protected void onUpdate(AjaxRequestTarget target) {
// ObjectListPanel<T> listRolePanel = (ObjectListPanel<T>) get(ID_ROLE_TABLE);
//// listRolePanel.setVisible(false);
// ObjectListPanel<T> listResourcePanel = (ObjectListPanel<T>) get(ID_RESOURCE_TABLE);
// ObjectListPanel<T> listOrgPanel = (ObjectListPanel<T>) get(ID_ORG_TABLE);

target.add(get(ID_TABLES_CONTAINER));
target.add(addOrReplace(createCountContainer()));
// listRolePanel.setVisible(true);

// addOrReplace(listRolePanel);
// addOrReplace(listResourcePanel);
// target.add(addOrReplace(listRolePanel));
// target.add(addOrReplace(listResourcePanel));
// target.add(addOrReplace(listOrgPanel));
// target.add(addOrReplace(createCountLabel(ID_SELECTED_ORGS, listOrgPanel)));
// target.add(addOrReplace(createCountLabel(ID_SELECTED_RESOURCES, listResourcePanel)));
// target.add(addOrReplace(createCountLabel(ID_SELECTED_ROLES, listRolePanel)));
}
});
typeSelect.setOutputMarkupId(true);
Expand Down Expand Up @@ -162,6 +139,10 @@ public boolean isVisible() {
add(addButton);
}

private List<T> getSelectedData(String id){
return ((ObjectListPanel) get(createComponentPath(ID_TABLES_CONTAINER, id))).getSelectedObjects();
}

private WebMarkupContainer createCountContainer(){
WebMarkupContainer countContainer = new WebMarkupContainer(ID_COUNT_CONTAINER);
countContainer.setOutputMarkupId(true);
Expand All @@ -171,7 +152,13 @@ private WebMarkupContainer createCountContainer(){
countContainer.add(createCountLabel(ID_SELECTED_SERVICES, (PopupObjectListPanel<T>)get(createComponentPath(ID_TABLES_CONTAINER, ID_SERVICE_TABLE))));
return countContainer;
}


private Label createCountLabel(String id, ObjectListPanel panel){
Label label = new Label(id, panel.getSelectedObjects().size());
label.setOutputMarkupId(true);
return label;
}

protected void onClick(AjaxRequestTarget target, T focus) {
parentPage.hideMainPopup(target);
}
Expand All @@ -184,27 +171,7 @@ protected void onUpdateCheckbox(AjaxRequestTarget target) {
}

};
// ObjectListPanel<T> listPanel = new ObjectListPanel<T>(id, qnameToCompileTimeClass(type), parentPage) {
//
// @Override
// protected void onCheckboxUpdate(AjaxRequestTarget target) {
// target.add(getParent().addOrReplace(createCountLabel(countId, this)));
// }
//
//// @Override
//// public void addPerformed(AjaxRequestTarget target, List<T> selected) {
//// super.addPerformed(target, selected);
//// TypedAssignablePanel.this.addPerformed(target, selected);
//// }
//
// @Override
// public boolean isEditable() {
// // TODO Auto-generated method stub
// return false;
// }
//
// };
// listPanel.setMultiSelect(multiselect);

listPanel.setOutputMarkupId(true);
listPanel.add(new VisibleEnableBehaviour() {
@Override
Expand All @@ -224,7 +191,7 @@ private Class qnameToCompileTimeClass(QName typeName) {
}

private QName compileTimeClassToQName(Class<T> type) {
PrismObjectDefinition def = parentPage.getPrismContext().getSchemaRegistry()
PrismObjectDefinition<T> def = parentPage.getPrismContext().getSchemaRegistry()
.findObjectDefinitionByCompileTimeClass(type);
if (def == null) {
return UserType.COMPLEX_TYPE;
Expand Down

0 comments on commit 36ba13e

Please sign in to comment.