From a815274d6797036997682595ac73825153d1174b Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Sat, 8 Oct 2016 15:36:43 +0200 Subject: [PATCH] GUI support for assignment/inducement focusType field. (MID-3448) --- .../ObjectTypeSelectPanel.html | 22 ++++++ .../ObjectTypeSelectPanel.java | 78 +++++++++++++++++++ .../assignment/AssignmentEditorDto.java | 11 +++ .../assignment/AssignmentEditorPanel.html | 15 ++++ .../assignment/AssignmentEditorPanel.java | 8 +- .../wizard/resource/SynchronizationStep.java | 1 + .../localization/Midpoint.properties | 1 + .../localization/Midpoint_en.properties | 1 + 8 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/objecttypeselect/ObjectTypeSelectPanel.html create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/objecttypeselect/ObjectTypeSelectPanel.java diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/objecttypeselect/ObjectTypeSelectPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/objecttypeselect/ObjectTypeSelectPanel.html new file mode 100644 index 00000000000..e5050ae0b2f --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/objecttypeselect/ObjectTypeSelectPanel.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/objecttypeselect/ObjectTypeSelectPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/objecttypeselect/ObjectTypeSelectPanel.java new file mode 100644 index 00000000000..cdfc9645949 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/objecttypeselect/ObjectTypeSelectPanel.java @@ -0,0 +1,78 @@ +/** + * Copyright (c) 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.gui.api.component.objecttypeselect; + +import java.util.List; + +import javax.xml.namespace.QName; + +import org.apache.wicket.behavior.Behavior; +import org.apache.wicket.markup.html.form.DropDownChoice; +import org.apache.wicket.model.AbstractReadOnlyModel; +import org.apache.wicket.model.IModel; + +import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.web.component.input.QNameChoiceRenderer; +import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; + +/** + * @author semancik + * + */ +public class ObjectTypeSelectPanel extends BasePanel { + private static final long serialVersionUID = 1L; + + private static final String ID_SELECT = "select"; + + private DropDownChoice select; + + public ObjectTypeSelectPanel(String id, IModel model, Class superclass) { + super(id, model); + initLayout(model, superclass); + } + + private void initLayout(IModel model, final Class superclass) { + select = new DropDownChoice<>(ID_SELECT, model, + new AbstractReadOnlyModel>() { + private static final long serialVersionUID = 1L; + + @Override + public List getObject() { + if (superclass == null || superclass == ObjectType.class) { + return WebComponentUtil.createObjectTypeList(); + } + if (superclass == FocusType.class) { + return WebComponentUtil.createFocusTypeList(); + } + if (superclass == AbstractRoleType.class) { + return WebComponentUtil.createAbstractRoleTypeList(); + } + throw new IllegalArgumentException("Unknown superclass "+superclass); + } + }, new QNameChoiceRenderer()); + select.setNullValid(true); + + add(select); + } + + public void addInput(Behavior behavior) { + select.add(behavior); + } + +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorDto.java index ac089e9fb5b..c965f6fae4e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorDto.java @@ -20,6 +20,8 @@ import java.util.Collection; import java.util.List; +import javax.xml.namespace.QName; + import org.apache.commons.lang.Validate; import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; @@ -79,6 +81,7 @@ public class AssignmentEditorDto extends SelectableBean implements Comparable getNewValue(PrismContext prismContext public String getDescription() { return newAssignment.getDescription(); } + + public QName getFocusType() { + return newAssignment.getFocusType(); + } public String getRelation() { ObjectReferenceType ref = newAssignment.getTargetRef(); @@ -550,6 +557,10 @@ public void setDescription(String description) { newAssignment.setDescription(description); } + public void setFocusType(QName focusType) { + newAssignment.setFocusType(focusType); + } + public Boolean isOrgUnitManager() { return isOrgUnitManager; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.html index 9697b23861d..ced50f918d2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.html @@ -79,6 +79,21 @@ + +
+
+
+ +
+
+
+
+ +
+
+
+
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.java index 755b64f02d4..8767070fcb9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentEditorPanel.java @@ -20,6 +20,7 @@ import com.evolveum.midpoint.common.refinery.RefinedResourceSchema; import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.gui.api.component.objecttypeselect.ObjectTypeSelectPanel; import com.evolveum.midpoint.gui.api.component.togglebutton.ToggleIconButton; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.page.PageBase; @@ -108,6 +109,7 @@ public class AssignmentEditorPanel extends BasePanel { private static final String ID_BODY = "body"; private static final String ID_DESCRIPTION = "description"; private static final String ID_RELATION_CONTAINER = "relationContainer"; + private static final String ID_FOCUS_TYPE = "focusType"; private static final String ID_RELATION = "relation"; private static final String ID_RELATION_LABEL = "relationLabel"; private static final String ID_ADMINISTRATIVE_STATUS = "administrativeStatus"; @@ -358,7 +360,7 @@ public void setObject(Date object) { } private void initBodyLayout(WebMarkupContainer body) { - TextArea description = new TextArea<>(ID_DESCRIPTION, + TextArea description = new TextArea<>(ID_DESCRIPTION, new PropertyModel(getModel(), AssignmentEditorDto.F_DESCRIPTION)); description.setEnabled(getModel().getObject().isEditable()); body.add(description); @@ -381,6 +383,10 @@ public boolean isVisible() { } }); body.add(relationContainer); + + ObjectTypeSelectPanel focusType = new ObjectTypeSelectPanel<>(ID_FOCUS_TYPE, + new PropertyModel(getModel(), AssignmentEditorDto.F_FOCUS_TYPE), FocusType.class); + body.add(focusType); TwoStateBooleanPanel relation = new TwoStateBooleanPanel(ID_RELATION, new PropertyModel(getModel(), AssignmentEditorDto.F_IS_ORG_UNIT_MANAGER), diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/SynchronizationStep.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/SynchronizationStep.java index ef31c8234cf..101ce551379 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/SynchronizationStep.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/SynchronizationStep.java @@ -342,6 +342,7 @@ public List getObject() { parentPage.addEditingEnabledBehavior(editorObjectClass); editor.add(editorObjectClass); + // TODO: switch to ObjectTypeSelectPanel DropDownChoice editorFocus = new DropDownChoice<>(ID_EDITOR_FOCUS, new PropertyModel(syncDtoModel, ResourceSynchronizationDto.F_SELECTED + ".focusType"), new AbstractReadOnlyModel>() { diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index 62898f0b7bf..c5fc89aca3d 100644 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -40,6 +40,7 @@ AssignmentEditorPanel.description=Description AssignmentEditorPanel.enabledFrom={0}, from {1,date,medium} AssignmentEditorPanel.enabledFromTo={0}, from {1,date,medium} to {2,date,medium} AssignmentEditorPanel.enabledTo={0}, to {1,date,medium} +AssignmentEditorPanel.focusType=Focus type AssignmentEditorPanel.hideEmpty=Hide empty AssignmentEditorPanel.loadError=Error loading object AssignmentEditorPanel.manager=Manager diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties b/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties index 1e14a795928..1cd515b4906 100644 --- a/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties @@ -40,6 +40,7 @@ AssignmentEditorPanel.description=Description AssignmentEditorPanel.enabledFrom={0}, from {1,date,medium} AssignmentEditorPanel.enabledFromTo={0}, from {1,date,medium} to {2,date,medium} AssignmentEditorPanel.enabledTo={0}, to {1,date,medium} +AssignmentEditorPanel.focusType=Focus type AssignmentEditorPanel.hideEmpty=Hide empty AssignmentEditorPanel.loadError=Error loading object AssignmentEditorPanel.manager=Manager