From 85af8823bfffa2038018697c9e7f01c28d88284d Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Wed, 23 Mar 2016 11:09:50 +0100 Subject: [PATCH] GUI cleanup - removing old userBrowserDialog. adding generig objectListPanel, focusBrowserPanel. refactoring, removing "custom" popups - using mainPopup instead --- .../gui/api/component/FocusBrowserPanel.html | 28 ++ .../gui/api/component/FocusBrowserPanel.java | 122 +++++ .../gui/api/component/ObjectListPanel.html | 27 ++ .../gui/api/component/ObjectListPanel.java | 286 ++++++++++++ .../midpoint/gui/api/page/PageBase.java | 6 + .../gui/api/util/WebComponentUtil.java | 32 ++ .../MultipleAssignmentSelector.html | 1 - .../MultipleAssignmentSelector.java | 95 ++-- .../MultipleAssignmentSelectorPanel.java | 16 +- .../data/column/CheckBoxHeaderColumn.java | 20 + .../component/data/column/ColumnTypeDto.java | 20 +- .../component/data/column/ColumnUtils.java | 186 +++++++- .../component/dialog/UserBrowserDialog.html | 58 --- .../component/dialog/UserBrowserDialog.java | 436 ------------------ .../web/component/dialog/UserBrowserDto.java | 77 ---- .../input/ObjectTypeChoiceRenderer.java | 32 ++ .../RequestAssignmentTabPanel.java | 3 +- .../web/component/search/SearchFormPanel.java | 2 +- .../web/component/search/SearchItemPanel.java | 2 + .../resources/ResourceContentTabPanel.java | 37 +- .../web/page/admin/roles/RoleMemberPanel.html | 2 - .../web/page/admin/roles/RoleMemberPanel.java | 74 +-- .../localization/Midpoint.properties | 4 +- 23 files changed, 851 insertions(+), 715 deletions(-) create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusBrowserPanel.html create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusBrowserPanel.java create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.html create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/UserBrowserDialog.html delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/UserBrowserDialog.java delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/UserBrowserDto.java create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/ObjectTypeChoiceRenderer.java diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusBrowserPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusBrowserPanel.html new file mode 100644 index 00000000000..688cc78ae37 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusBrowserPanel.html @@ -0,0 +1,28 @@ + + + + +
+ +
+ + - - - - - - - - - - - - - - - - - - -
- -
- -
-
- diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/UserBrowserDialog.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/UserBrowserDialog.java deleted file mode 100644 index f7650d8c586..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/UserBrowserDialog.java +++ /dev/null @@ -1,436 +0,0 @@ -/* - * Copyright (c) 2010-2016 Evolveum - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.evolveum.midpoint.web.component.dialog; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang.StringUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; -import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; -import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.form.CheckBox; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.model.AbstractReadOnlyModel; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.StringResourceModel; - -import com.evolveum.midpoint.gui.api.model.LoadableModel; -import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.api.util.WebComponentUtil; -import com.evolveum.midpoint.prism.PrismContext; -import com.evolveum.midpoint.prism.polystring.PolyStringNormalizer; -import com.evolveum.midpoint.prism.polystring.PrismDefaultPolyStringNormalizer; -import com.evolveum.midpoint.prism.query.ObjectFilter; -import com.evolveum.midpoint.prism.query.ObjectQuery; -import com.evolveum.midpoint.prism.query.OrFilter; -import com.evolveum.midpoint.prism.query.SubstringFilter; -import com.evolveum.midpoint.util.logging.LoggingUtils; -import com.evolveum.midpoint.util.logging.Trace; -import com.evolveum.midpoint.util.logging.TraceManager; -import com.evolveum.midpoint.web.component.AjaxButton; -import com.evolveum.midpoint.web.component.BasicSearchPanel; -import com.evolveum.midpoint.web.component.data.ObjectDataProvider; -import com.evolveum.midpoint.web.component.data.TablePanel; -import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn; -import com.evolveum.midpoint.web.component.data.column.IconColumn; -import com.evolveum.midpoint.web.component.data.column.LinkColumn; -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.FocusType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; - -/** - * @author lazyman - */ -public class UserBrowserDialog extends ModalWindow { - - private static final String ID_SEARCH_FORM = "searchForm"; - private static final String ID_MAIN_FORM = "mainForm"; - private static final String ID_CHECK_NAME = "nameCheck"; - private static final String ID_CHECK_FULL_NAME = "fullNameCheck"; - private static final String ID_CHECK_GIVEN_NAME = "givenNameCheck"; - private static final String ID_CHECK_FAMILY_NAME = "familyNameCheck"; - private static final String ID_BASIC_SEARCH = "basicSearch"; - private static final String ID_BUTTON_CANCEL = "cancelButton"; - private static final String ID_BUTTON_ADD = "addButton"; - private static final String ID_TABLE = "table"; - - private static final Trace LOGGER = TraceManager.getTrace(UserBrowserDialog.class); - private IModel model; - private boolean initialized; - private Class type; - - public void setType(Class type) { - this.type = type; - - TablePanel table = (TablePanel) getTable(); - - if (table != null) { - ObjectDataProvider provider = (ObjectDataProvider) table.getDataTable().getDataProvider(); - provider.setType(type); - - Form mainForm = (Form) getContent().get(ID_MAIN_FORM); - //replace table with table with proper columns - mainForm.replace(createTable()); - } - } - - public UserBrowserDialog(String id, Class type) { - super(id); - this.type = type; - setTitle(createStringResource("userBrowserDialog.title")); - showUnloadConfirmation(false); - setCssClassName(ModalWindow.CSS_CLASS_GRAY); - setCookieName(UserBrowserDialog.class.getSimpleName() + ((int) (Math.random() * 100))); - setInitialWidth(900); - setInitialHeight(500); - setWidthUnit("px"); - - model = new LoadableModel(false) { - - @Override - protected UserBrowserDto load() { - return new UserBrowserDto(); - } - }; - - WebMarkupContainer content = new WebMarkupContainer(getContentId()); - setContent(content); - } - - protected boolean isCheckBoxVisible(){ - return false; - } - - @Override - protected void onBeforeRender() { - super.onBeforeRender(); - - if (initialized) { - return; - } - - initLayout((WebMarkupContainer) get(getContentId())); - initialized = true; - } - - private void initLayout(WebMarkupContainer content) { - Form mainForm = new Form(ID_MAIN_FORM); - content.add(mainForm); - - Form searchForm = new Form(ID_SEARCH_FORM); - searchForm.setOutputMarkupId(true); - content.add(searchForm); - -// TextField search = new TextField("searchText", new PropertyModel(model, "searchText")); -// mainForm.add(search); - - CheckBox nameCheck = new CheckBox(ID_CHECK_NAME, new PropertyModel(model, UserBrowserDto.F_NAME)); - searchForm.add(nameCheck); - CheckBox fullNameCheck = new CheckBox(ID_CHECK_FULL_NAME, new PropertyModel(model, UserBrowserDto.F_FULL_NAME)); - searchForm.add(fullNameCheck); - fullNameCheck.setVisible(UserType.class.equals(type)); - CheckBox givenNameCheck = new CheckBox(ID_CHECK_GIVEN_NAME, new PropertyModel(model, UserBrowserDto.F_GIVEN_NAME)); - searchForm.add(givenNameCheck); - givenNameCheck.setVisible(UserType.class.equals(type)); - CheckBox familyNameCheck = new CheckBox(ID_CHECK_FAMILY_NAME, new PropertyModel(model, UserBrowserDto.F_FAMILY_NAME)); - searchForm.add(familyNameCheck); - familyNameCheck.setVisible(UserType.class.equals(type)); - - BasicSearchPanel basicSearch = new BasicSearchPanel(ID_BASIC_SEARCH) { - - @Override - protected IModel createSearchTextModel() { - return new PropertyModel<>(model, UserBrowserDto.F_SEARCH_TEXT); - } - - @Override - protected void searchPerformed(AjaxRequestTarget target) { - UserBrowserDialog.this.searchPerformed(target); - } - - @Override - protected void clearSearchPerformed(AjaxRequestTarget target) { - UserBrowserDialog.this.clearSearchPerformed(target); - } - }; - searchForm.add(basicSearch); - - TablePanel table = createTable(); - mainForm.add(table); - - AjaxButton cancelButton = new AjaxButton(ID_BUTTON_CANCEL, - createStringResource("userBrowserDialog.button.cancelButton")) { - - @Override - public void onClick(AjaxRequestTarget target) { - cancelPerformed(target); - } - }; - mainForm.add(cancelButton); - - AjaxButton addButton = new AjaxButton(ID_BUTTON_ADD, - createStringResource("userBrowserDialog.button.addButton")) { - - @Override - public void onClick(AjaxRequestTarget target) { - DataTable table = getTable().getDataTable(); - List selected = ((ObjectDataProvider)table.getDataProvider()).getSelectedData(); -// List selected = new ArrayList<>(); -// for (SelectableBean o : availableData){ -// if (o.isSelected()){ -// selected.add((T)o.getValue()); -// } -// } - addPerformed(target, selected); - } - }; - addButton.add(new VisibleEnableBehaviour(){ - @Override - public boolean isVisible() { - // TODO Auto-generated method stub - return isCheckBoxVisible(); - } - }); - mainForm.add(addButton); - } - - private TablePanel createTable(){ - List, String>> columns = initColumns(); - TablePanel table = new TablePanel<>(ID_TABLE, - new ObjectDataProvider(getPageBase(), type){ - - @Override - public ObjectQuery getQuery() { - ObjectQuery customQuery = createContentQuery(); - if (customQuery == null){ - return super.getQuery(); - } - return customQuery; - } - - }, columns); - table.setOutputMarkupId(true); - return table; - } - - protected ObjectQuery createContentQuery(){ - return null; - } - private PageBase getPageBase() { - return (PageBase) getPage(); - } - - public StringResourceModel createStringResource(String resourceKey, Object... objects) { - return PageBase.createStringResourceStatic(this, resourceKey, objects); -// return new StringResourceModel(resourceKey, this, null, resourceKey, objects); - } - - private List, String>> initColumns() { - List, String>> columns = new ArrayList, String>>(); - - if (isCheckBoxVisible()){ - columns.add(new CheckBoxHeaderColumn()); - IColumn column = new PropertyColumn(createStringResource("userBrowserDialog.name"), UserBrowserDto.F_NAME, "value.name"); - columns.add(column); - } - - if (UserType.class.equals(type)){ - initUserColumns(columns); - } else if (RoleType.class.equals(type) || OrgType.class.equals(type)){ - initAbstractRoleColumns(columns); - } - - return columns; - } - - private void initUserColumns(List, String>> columns){ - columns.add(new IconColumn>(createStringResource("userBrowserDialog.type")) { - - @Override - protected IModel createIconModel(final IModel> rowModel) { - return new AbstractReadOnlyModel() { - - @Override - public String getObject() { - T user = rowModel.getObject().getValue(); - return WebComponentUtil.createUserIcon(user.asPrismContainer()); - } - }; - } - }); - - if (!isCheckBoxVisible()){ - IColumn column = new LinkColumn>(createStringResource("userBrowserDialog.name"), UserBrowserDto.F_NAME, "value.name") { - - @Override - public void onClick(AjaxRequestTarget target, IModel> rowModel) { - T user = rowModel.getObject().getValue(); - userDetailsPerformed(target, user); - } - }; - columns.add(column); - } - - - IColumn column = new PropertyColumn(createStringResource("userBrowserDialog.givenName"), UserBrowserDto.F_GIVEN_NAME, SelectableBean.F_VALUE + ".givenName"); - columns.add(column); - - column = new PropertyColumn(createStringResource("userBrowserDialog.familyName"), UserBrowserDto.F_FAMILY_NAME, SelectableBean.F_VALUE + ".familyName"); - columns.add(column); - - column = new PropertyColumn(createStringResource("userBrowserDialog.fullName"), UserBrowserDto.F_FULL_NAME, SelectableBean.F_VALUE + ".fullName.orig"); - columns.add(column); - -// column = new AbstractColumn, String>(createStringResource("userBrowserDialog.email")) { -// -// @Override -// public void populateItem(Item>> cellItem, String componentId, -// IModel> rowModel) { -// -// String email = rowModel.getObject().getValue().getEmailAddress(); -// cellItem.add(new Label(componentId, new Model(email))); -// } -// }; -// columns.add(column); - - } - - private void initAbstractRoleColumns(List, String>> columns){ - if (!isCheckBoxVisible()){ - IColumn column = new LinkColumn>(createStringResource("userBrowserDialog.name"), UserBrowserDto.F_NAME, "value.name") { - - @Override - public void onClick(AjaxRequestTarget target, IModel> rowModel) { - T user = rowModel.getObject().getValue(); - userDetailsPerformed(target, user); - } - }; - columns.add(column); - } - - - - IColumn column = new PropertyColumn(createStringResource("userBrowserDialog.displayName"), null, SelectableBean.F_VALUE + ".displayName"); - columns.add(column); - column = new PropertyColumn(createStringResource("userBrowserDialog.description"), null, SelectableBean.F_VALUE + ".description"); - columns.add(column); - - - - column = new PropertyColumn(createStringResource("userBrowserDialog.identifier"), null, SelectableBean.F_VALUE + ".identifier"); - columns.add(column); - - - } - - private void searchPerformed(AjaxRequestTarget target) { - ObjectQuery query = createQuery(); - target.add(getPageBase().getFeedbackPanel()); - - TablePanel panel = getTable(); - DataTable table = panel.getDataTable(); - ObjectDataProvider provider = (ObjectDataProvider) table.getDataProvider(); - provider.setQuery(query); - - table.setCurrentPage(0); - - target.add(panel); - } - - private TablePanel getTable() { - return (TablePanel) getContent().get("mainForm:table"); - } - - private ObjectQuery createQuery() { - UserBrowserDto dto = model.getObject(); - ObjectQuery query = null; - if (StringUtils.isEmpty(dto.getSearchText())) { - return null; - } - - try { - List filters = new ArrayList(); - - PrismContext prismContext = getPageBase().getPrismContext(); - PolyStringNormalizer normalizer = prismContext.getDefaultPolyStringNormalizer(); - if (normalizer == null) { - normalizer = new PrismDefaultPolyStringNormalizer(); - } - - String normalizedString = normalizer.normalize(dto.getSearchText()); - - if (dto.isName()) { - filters.add(SubstringFilter.createSubstring(T.F_NAME, type, prismContext, - normalizedString)); - } - - if (dto.isFamilyName()) { - filters.add(SubstringFilter.createSubstring(UserType.F_FAMILY_NAME, UserType.class, prismContext, - normalizedString)); - } - if (dto.isFullName()) { - filters.add(SubstringFilter.createSubstring(UserType.F_FULL_NAME, UserType.class, prismContext, - normalizedString)); - } - if (dto.isGivenName()) { - filters.add(SubstringFilter.createSubstring(UserType.F_GIVEN_NAME, UserType.class, prismContext, - normalizedString)); - } - - if (!filters.isEmpty()) { - query = new ObjectQuery().createObjectQuery(OrFilter.createOr(filters)); - } - } catch (Exception ex) { - error(getString("userBrowserDialog.message.queryError") + " " + ex.getMessage()); - LoggingUtils.logException(LOGGER, "Couldn't create query filter.", ex); - } - - return query; - } - - private void clearSearchPerformed(AjaxRequestTarget target){ - model.setObject(new UserBrowserDto()); - - TablePanel panel = getTable(); - DataTable table = panel.getDataTable(); - ObjectDataProvider provider = (ObjectDataProvider) table.getDataProvider(); - provider.setQuery(null); - - target.add(getContent().get(ID_SEARCH_FORM)); - target.add(panel); - } - - private void cancelPerformed(AjaxRequestTarget target) { - close(target); - } - - public void addPerformed(AjaxRequestTarget target, List selected) { - close(target); - } - - public void userDetailsPerformed(AjaxRequestTarget target, T user) { - close(target); - } -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/UserBrowserDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/UserBrowserDto.java deleted file mode 100644 index 8295cd5337e..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/dialog/UserBrowserDto.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2010-2013 Evolveum - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.evolveum.midpoint.web.component.dialog; - -import java.io.Serializable; - -/** - * @author lazyman - */ -public class UserBrowserDto implements Serializable { - - public static final String F_SEARCH_TEXT = "searchText"; - public static final String F_NAME = "name"; - public static final String F_FULL_NAME = "fullName"; - public static final String F_GIVEN_NAME = "givenName"; - public static final String F_FAMILY_NAME = "familyName"; - - private String searchText; - private boolean name = true; - private boolean fullName; - private boolean givenName; - private boolean familyName; - - public boolean isFamilyName() { - return familyName; - } - - public void setFamilyName(boolean familyName) { - this.familyName = familyName; - } - - public boolean isFullName() { - return fullName; - } - - public void setFullName(boolean fullName) { - this.fullName = fullName; - } - - public boolean isGivenName() { - return givenName; - } - - public void setGivenName(boolean givenName) { - this.givenName = givenName; - } - - public boolean isName() { - return name; - } - - public void setName(boolean name) { - this.name = name; - } - - public String getSearchText() { - return searchText; - } - - public void setSearchText(String searchText) { - this.searchText = searchText; - } -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/ObjectTypeChoiceRenderer.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/ObjectTypeChoiceRenderer.java new file mode 100644 index 00000000000..3df13ee0e49 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/ObjectTypeChoiceRenderer.java @@ -0,0 +1,32 @@ +package com.evolveum.midpoint.web.component.input; + +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.wicket.markup.html.form.IChoiceRenderer; +import org.apache.wicket.model.IModel; + +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; + +public class ObjectTypeChoiceRenderer implements IChoiceRenderer { + + @Override + public Object getDisplayValue(T object) { + return WebComponentUtil.getName(object); + } + + @Override + public String getIdValue(T object, int index) { + return Integer.toString(index); + } + + @Override + public T getObject(String id, IModel> choices) { + if (StringUtils.isBlank(id)){ + return null; + } + return choices.getObject().get(Integer.parseInt(id)); + } + +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/RequestAssignmentTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/RequestAssignmentTabPanel.java index 99650f4973a..fa707bfa09a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/RequestAssignmentTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/RequestAssignmentTabPanel.java @@ -48,7 +48,8 @@ public RequestAssignmentTabPanel(String id, Form mainForm, LoadableModel panel = new MultipleAssignmentSelectorPanel<>(ID_MAIN_PANEL, assignmentsModel, RoleType.class); + Class targetFocusClass = getObjectWrapper().getObject().getCompileTimeClass(); + MultipleAssignmentSelectorPanel panel = new MultipleAssignmentSelectorPanel<>(ID_MAIN_PANEL, assignmentsModel, targetFocusClass, RoleType.class); add(panel); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFormPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFormPanel.java index 2c020998e83..bfce04a5df0 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFormPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchFormPanel.java @@ -36,7 +36,7 @@ public SearchFormPanel(String id, IModel model) { initLayout(); } - private void initLayout() { + protected void initLayout() { final Form searchForm = new Form(ID_SEARCH_FORM); add(searchForm); searchForm.setOutputMarkupId(true); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItemPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItemPanel.java index c8d06ca1958..4dbd2c1b82a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItemPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchItemPanel.java @@ -34,6 +34,7 @@ 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.form.IChoiceRenderer; import org.apache.wicket.markup.html.form.TextField; @@ -379,6 +380,7 @@ public ComboFragment(String id, String markupId, MarkupContainer markupProvider, IModel data = new PropertyModel(value, SearchValue.F_VALUE); final DisplayableRenderer renderer = new DisplayableRenderer(choices); + EnumChoiceRenderer rendered = new EnumChoiceRenderer(); final DropDownChoice input = new DropDownChoice(ID_COMBO_INPUT, data, choices, renderer) { @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.java index 21b22ede7f9..bd3a78cd727 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.java @@ -1,3 +1,18 @@ +/* + * Copyright (c) 2010-2016 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.evolveum.midpoint.web.page.admin.resources; import java.util.ArrayList; @@ -24,16 +39,15 @@ import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; import com.evolveum.midpoint.common.refinery.RefinedResourceSchema; +import com.evolveum.midpoint.gui.api.component.FocusBrowserPanel; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.model.api.PolicyViolationException; -import com.evolveum.midpoint.prism.PrismContainerDefinition; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.PrismObjectDefinition; import com.evolveum.midpoint.prism.delta.ItemDelta; import com.evolveum.midpoint.prism.delta.ObjectDelta; -import com.evolveum.midpoint.prism.delta.PropertyDelta; import com.evolveum.midpoint.prism.delta.ReferenceDelta; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.schema.GetOperationOptions; @@ -64,8 +78,6 @@ import com.evolveum.midpoint.web.component.data.column.ColumnUtils; import com.evolveum.midpoint.web.component.data.column.InlineMenuHeaderColumn; import com.evolveum.midpoint.web.component.data.column.LinkColumn; -import com.evolveum.midpoint.web.component.dialog.ConfirmationDialog; -import com.evolveum.midpoint.web.component.dialog.UserBrowserDialog; import com.evolveum.midpoint.web.component.input.AutoCompleteTextPanel; import com.evolveum.midpoint.web.component.input.TwoStateBooleanPanel; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; @@ -410,20 +422,13 @@ public void onSubmit(AjaxRequestTarget target, Form form) { @Override public void onSubmit(AjaxRequestTarget target, Form form) { - FocusBrowserDialogPanel browser = new FocusBrowserDialogPanel( - parentPage.getMainPopupBodyId(), UserType.class, parentPage) { - - @Override - public void userDetailsPerformed(AjaxRequestTarget target, FocusType user) { - super.userDetailsPerformed(target, user); - changeOwner(target, user, Operation.MODIFY); + FocusBrowserPanel browser = new FocusBrowserPanel(parentPage.getMainPopupBodyId(), UserType.class, false, parentPage){ + protected void onClick(AjaxRequestTarget target, UserType focus) { + changeOwner(target, focus, Operation.MODIFY); } - }; - - parentPage.getMainPopup().setInitialHeight(400); - parentPage.getMainPopup().setInitialWidth(600); - parentPage.showMainPopup(browser, new Model("ChangeOwner"), target); + + parentPage.showMainPopup(browser, new Model("ChangeOwner"), target, 900, 500); } })); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.html index ab4fbdb9ba2..db6bf38a2bd 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.html @@ -19,8 +19,6 @@ -
-
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java index 9dd242407eb..2268c91708c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.java @@ -33,10 +33,12 @@ import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.gui.api.component.FocusBrowserPanel; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; @@ -87,13 +89,11 @@ import com.evolveum.midpoint.web.component.data.column.IconColumn; import com.evolveum.midpoint.web.component.data.column.InlineMenuHeaderColumn; import com.evolveum.midpoint.web.component.data.column.LinkColumn; -import com.evolveum.midpoint.web.component.dialog.UserBrowserDialog; +import com.evolveum.midpoint.web.component.input.ObjectTypeChoiceRenderer; +import com.evolveum.midpoint.web.component.input.QNameChoiceRenderer; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; import com.evolveum.midpoint.web.component.util.SelectableBean; -import com.evolveum.midpoint.web.component.util.SimplePanel; -import com.evolveum.midpoint.web.page.admin.configuration.PageDebugList; import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction; -import com.evolveum.midpoint.web.page.admin.configuration.dto.DebugSearchDto; 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.UserListItemDto; @@ -172,7 +172,7 @@ private Component getFeedbackPanel() { return pageBase.getFeedbackPanel(); } - private DropDownChoice createDropDown(String id, String field, final List values) { + private DropDownChoice createDropDown(String id, String field, final List values, IChoiceRenderer renderer) { DropDownChoice listSelect = new DropDownChoice(id, new PropertyModel(searchModel, field), new AbstractReadOnlyModel>() { @@ -180,25 +180,8 @@ private DropDownChoice createDropDown(String id, String field, final List public List getObject() { return values; } - }, - - new IChoiceRenderer() { - - @Override - public V getObject(String id, IModel> choices) { - return choices.getObject().get(Integer.parseInt(id)); - } - - @Override - public String getDisplayValue(V object) { - return getStringValue(object); - } - - @Override - public String getIdValue(V object, int index) { - return String.valueOf(index); - }; - }); + }, renderer); + listSelect.add(new OnChangeAjaxBehavior() { @Override @@ -254,19 +237,19 @@ protected void clearSearchPerformed(AjaxRequestTarget target) { add(basicSearch); DropDownChoice typeSelect = createDropDown(ID_OBJECT_TYPE, RoleMemberSearchDto.F_TYPE, - createTypeList()); + WebComponentUtil.createFocusTypeList(), new QNameChoiceRenderer()); add(typeSelect); - DropDownChoice tenant = createDropDown(ID_TENANT, RoleMemberSearchDto.F_TENANT, createTenantList()); + DropDownChoice tenant = createDropDown(ID_TENANT, RoleMemberSearchDto.F_TENANT, createTenantList(), new ObjectTypeChoiceRenderer()); add(tenant); DropDownChoice project = createDropDown(ID_PROJECT, RoleMemberSearchDto.F_PROJECT, - createProjectList()); + createProjectList(), new ObjectTypeChoiceRenderer()); add(project); addOrReplace(initTable()); - initDialog(); +// initDialog(); } private void clearFilterAccordingToNamePerformed(AjaxRequestTarget target) { @@ -285,25 +268,19 @@ private void filterAccordingToNamePerformed(AjaxRequestTarget target){ addOrReplace(table); } - private void initDialog() { - - UserBrowserDialog dialog = new UserBrowserDialog(MODAL_ID_MEMBER, getClassFromType()) { - + private void initDialog(AjaxRequestTarget target) { + + FocusBrowserPanel focusBrowser = new FocusBrowserPanel(pageBase.getMainPopupBodyId(), getClassFromType(), true, pageBase){ + @Override - public void addPerformed(AjaxRequestTarget target, List selected) { - super.addPerformed(target, selected); + protected void addPerformed(AjaxRequestTarget target, List selected) { addMembers(selected, target); target.add(getFeedbackPanel()); } - - @Override - protected boolean isCheckBoxVisible() { - return true; - } - }; - add(dialog); + + pageBase.showMainPopup(focusBrowser, new Model("Choose member"), target, 900, 500); } @@ -761,9 +738,10 @@ private TablePanel getTable() { } private void addMembersPerformed(AjaxRequestTarget target, QueryScope scope) { - UserBrowserDialog window = (UserBrowserDialog) get(MODAL_ID_MEMBER); - window.setType(getClassFromType()); - window.show(target); + initDialog(target); +// UserBrowserDialog window = (UserBrowserDialog) get(MODAL_ID_MEMBER); +// window.setType(getClassFromType()); +// window.show(target); // ObjectQuery query = createQueryForAdd(target); // addMembers(query, target); } @@ -992,12 +970,6 @@ private PageParameters getNextPageParams(String oid) { return parameters; } - private List createTypeList() { - List types = new ArrayList<>(); - types.add(UserType.COMPLEX_TYPE); - types.add(RoleType.COMPLEX_TYPE); - types.add(OrgType.COMPLEX_TYPE); - return types; - } + } diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index 8bcb0fe8c93..a66fbc134f6 100644 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -1,4 +1,3 @@ -# # Copyright (c) 2010-2015 Evolveum # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -3029,4 +3028,5 @@ ScenePanel.oldValue=Old value ScenePanel.newValue=New value ScenePanel.value=Value operation.com.evolveum.midpoint.web.page.admin.resources.ResourceContentTabPanel.changeOwner=Change owner (GUI) - +AbstractRoleType.description=Description +AbstractRoleType.displayName=Display Name