From 54c51b9c447e52740cfd5477574de73530cc6904 Mon Sep 17 00:00:00 2001 From: Erik Suta Date: Fri, 4 Jul 2014 16:05:58 +0200 Subject: [PATCH] MID-1730 Capability Editor implementation. Not finished yet. --- .../capability/AddCapabilityDialog.html | 25 +++ .../capability/AddCapabilityDialog.java | 200 ++++++++++++++++++ .../capability/AddCapabilityDialog.properties | 20 ++ .../capability/CapabilityActivationPanel.html | 169 +++++++-------- .../capability/CapabilityActivationPanel.java | 91 +++++++- .../CapabilityActivationPanel.properties | 28 +++ .../CapabilityCredentialsPanel.html | 46 ++-- .../CapabilityCredentialsPanel.java | 27 ++- .../CapabilityCredentialsPanel.properties | 20 ++ .../capability/CapabilityListRepeater.html | 37 ++++ .../capability/CapabilityListRepeater.java | 180 ++++++++++++++++ .../CapabilityListRepeater.properties | 16 ++ .../component/capability/CapabilityPanel.html | 10 +- .../component/capability/CapabilityPanel.java | 158 +++++++++++--- .../capability/CapabilityScriptPanel.html | 71 ++----- .../capability/CapabilityScriptPanel.java | 57 ++++- .../CapabilityScriptPanel.properties | 20 ++ .../capability/CapabilityValuePanel.html | 16 +- .../capability/CapabilityValuePanel.java | 35 ++- .../CapabilityValuePanel.properties | 22 ++ .../wizard/resource/dto/CapabilityDto.java | 31 +++ .../component/ChooseTypeDialog.java | 4 +- .../admin/users/component/ResourcesPopup.java | 7 +- 23 files changed, 1073 insertions(+), 217 deletions(-) create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.html create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.java create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.properties create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.properties create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.properties create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.html create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.java create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.properties create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.properties create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.properties diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.html new file mode 100644 index 00000000000..bff4dd41418 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.html @@ -0,0 +1,25 @@ + + +
+
+ +

+ + +

+
+ \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.java new file mode 100644 index 00000000000..bc234fe3744 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.java @@ -0,0 +1,200 @@ +/* + * 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.wizard.resource.component.capability; + +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.data.BaseSortableDataProvider; +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.LinkColumn; +import com.evolveum.midpoint.web.component.util.ListDataProvider; +import com.evolveum.midpoint.web.component.util.LoadableModel; +import com.evolveum.midpoint.web.component.util.SelectableBean; +import com.evolveum.midpoint.web.component.wizard.resource.dto.CapabilityDto; +import com.evolveum.midpoint.web.page.PageBase; +import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.CapabilityType; +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.model.IModel; +import org.apache.wicket.model.PropertyModel; +import org.apache.wicket.model.StringResourceModel; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author shood + * */ +public class AddCapabilityDialog extends ModalWindow{ + + private static final Trace LOGGER = TraceManager.getTrace(AddCapabilityDialog.class); + private static final String ID_TABLE = "table"; + private static final String ID_CANCEL = "cancelButton"; + private static final String ID_ADD = "addButton"; + + private static final String DEFAULT_SORTABLE_PROPERTY = null; + + private boolean initialized; + private IModel model; + + public AddCapabilityDialog(String id, final IModel capabilityModel){ + super(id); + + model = new LoadableModel() { + @Override + protected CapabilityStepDto load() { + return loadModel(capabilityModel); //To change body of implemented methods use File | Settings | File Templates. + } + }; + + setTitle(createStringResource("addCapabilityDialog.title")); + showUnloadConfirmation(false); + setCssClassName(ModalWindow.CSS_CLASS_GRAY); + setCookieName(AddCapabilityDialog.class.getSimpleName() + ((int) (Math.random() * 100))); + setResizable(false); + setInitialWidth(500); + setInitialHeight(500); + setWidthUnit("px"); + + WebMarkupContainer content = new WebMarkupContainer(getContentId()); + content.setOutputMarkupId(true); + setContent(content); + } + + private CapabilityStepDto loadModel(IModel capabilityModel){ + CapabilityStepDto dto = new CapabilityStepDto(); + List capabilityList = new ArrayList<>(); + + for(CapabilityDto cap: CapabilityPanel.capabilities){ + if(!capabilityModel.getObject().getCapabilities().contains(cap)){ + capabilityList.add(cap); + } + } + + dto.setCapabilities(capabilityList); + + return dto; + } + + private ListDataProvider createProvider(){ + return new ListDataProvider<>(this, + new PropertyModel>(model, CapabilityStepDto.F_CAPABILITIES)); + } + + @Override + protected void onBeforeRender(){ + super.onBeforeRender(); + + if(initialized){ + return; + } + + initLayout((WebMarkupContainer) get(getContentId())); + initialized = true; + } + + public StringResourceModel createStringResource(String resourceKey, Object... objects) { + return new StringResourceModel(resourceKey, this, null, resourceKey, objects); + } + + private void initLayout(WebMarkupContainer container){ + List, String>> columns = initColumns(); + + TablePanel table = new TablePanel<>(ID_TABLE, createProvider(), columns); + table.setOutputMarkupId(true); + table.setShowPaging(false); + container.add(table); + + AjaxButton cancelButton = new AjaxButton(ID_CANCEL, + createStringResource("addCapabilityDialog.button.cancel")) { + + @Override + public void onClick(AjaxRequestTarget ajaxRequestTarget) { + cancelPerformed(ajaxRequestTarget); + } + }; + container.add(cancelButton); + + AjaxButton addButton = new AjaxButton(ID_ADD, + createStringResource("addCapabilityDialog.button.Add")) { + + @Override + public void onClick(AjaxRequestTarget target) { + addPerformed(target); + } + }; + container.add(addButton); + + } + + private List, String>> initColumns(){ + List, String>> columns = new ArrayList<>(); + + IColumn column = new CheckBoxHeaderColumn(); + columns.add(column); + + column = new PropertyColumn(createStringResource("addCapabilityDialog.column.name"), CapabilityDto.F_VALUE); + columns.add(column); + + return columns; + } + + public void updateTable(AjaxRequestTarget target, IModel selected){ + model.setObject(loadModel(selected)); + } + + public TablePanel getTable(){ + return (TablePanel)get(getContentId()+":"+ID_TABLE); + } + + public String getSortableProperty(){ + return DEFAULT_SORTABLE_PROPERTY; + } + + private void cancelPerformed(AjaxRequestTarget target) { + close(target); + } + + protected List getSelectedData(){ + DataTable dataTable = getTable().getDataTable(); + ListDataProvider provider = (ListDataProvider)dataTable.getDataProvider(); + + List data = (List)provider.getAvailableData(); + List selected = new ArrayList<>(); + + for(CapabilityDto cap: data){ + if(cap.isSelected()){ + selected.add(cap); + } + } + + return selected; + } + + public BaseSortableDataProvider getDataProviderSearchProperty(){ + return null; + } + + protected void chooseOperationPerformed(AjaxRequestTarget target, CapabilityDto object){} + + protected void addPerformed(AjaxRequestTarget target){} +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.properties new file mode 100644 index 00000000000..46cd5c97a8b --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/AddCapabilityDialog.properties @@ -0,0 +1,20 @@ +# +# 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. +# + +addCapabilityDialog.title=Choose capabilities to add +addCapabilityDialog.column.name=Name +addCapabilityDialog.button.cancel=Cancel +addCapabilityDialog.button.Add=Add \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.html index 4dee9c56648..0b8bc44b3af 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.html @@ -18,104 +18,85 @@ -
-

Activation configuration

+

-

Enabled/disabled

-
-
-
-
Enabled
-
-
-
-
-
-
Returned by default
-
-
-
-
Ignore attribute
-
-
-
+

+
+
+
+
+ +
+
+
-
-
Attribute name
-
-
-
-
Enable list
-
- -
-
-
-
Disable list
-
-
- - - - - - - - - -
-
-
-
- - - - - - - - - -
-
-
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
-

Status

-

The same as enabled/disabled

+

+

-
-
-

Valid from

-
-
Enabled
-
-
-
-
Returned by default
-
-
-
-
-

Valid to

-
-
Enabled
-
-
-
-
Returned by default
-
-
-
+
+
+

+
+
+ +
+
+
+
+
+ +
+
+
+
+
+

+
+
+ +
+
+
+
+
+ +
+
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.java index dc49e142823..1fcf7b8b6cc 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.java @@ -17,20 +17,107 @@ import com.evolveum.midpoint.web.component.util.SimplePanel; import com.evolveum.midpoint.web.component.wizard.resource.dto.CapabilityDto; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.PropertyModel; +import org.apache.wicket.model.StringResourceModel; + +import java.util.List; /** * @author shood * */ public class CapabilityActivationPanel extends SimplePanel{ - private IModel model; + private static final String ID_LABEL = "label"; + private static final String ID_LABEL_ENABLED_DISABLED = "enabledDisabledLabel"; + private static final String ID_CHECK_ENABLED = "enabled"; + private static final String ID_CHECK_RETURNED = "returnedByDefault"; + private static final String ID_CHECK_IGNORE = "ignoreAttribute"; + private static final String ID_ENABLE_LIST = "enableList"; + private static final String ID_DISABLE_LIST = "disableList"; + private static final String ID_LABEL_STATUS = "labelStatus"; + private static final String ID_LABEL_VALID_FROM = "labelValidFrom"; + private static final String ID_LABEL_VALID_TO = "labelValidTo"; + private static final String ID_CHECK_VALID_FROM_ENABLED = "validFromEnabled"; + private static final String ID_CHECK_VALID_FROM_RETURNED = "validFromReturned"; + private static final String ID_CHECK_VALID_TO_ENABLED = "validToEnabled"; + private static final String ID_CHECK_VALID_TO_RETURNED = "validToReturned"; + public CapabilityActivationPanel(String componentId, IModel model){ super(componentId, model); } @Override - protected void initLayout(){} + protected void initLayout(){ + Label label = new Label(ID_LABEL, createStringResource("capabilityActivationPanel.label")); + add(label); + + Label enableDisableLabel = new Label(ID_LABEL_ENABLED_DISABLED, + createStringResource("capabilityActivationPanel.label.enabledDisabled")); + add(enableDisableLabel); + + Label statusLabel = new Label(ID_LABEL_STATUS, + createStringResource("capabilityActivationPanel.label.status")); + add(statusLabel); + + Label validFromLabel = new Label(ID_LABEL_VALID_FROM, + createStringResource("capabilityActivationPanel.label.validFrom")); + add(validFromLabel); + + Label validToLabel = new Label(ID_LABEL_VALID_TO, + createStringResource("capabilityActivationPanel.label.validTo")); + add(validToLabel); + + CheckBox enabled = new CheckBox(ID_CHECK_ENABLED, + new PropertyModel(getModel(), "capability.enableDisable.enabled.")); + add(enabled); + + CheckBox returnedByDefault = new CheckBox(ID_CHECK_RETURNED, + new PropertyModel(getModel(), "capability.enableDisable.returnedByDefault")); + add(returnedByDefault); + + CheckBox ignoreAttribute = new CheckBox(ID_CHECK_IGNORE, + new PropertyModel(getModel(), "capability.enableDisable.ignoreAttribute")); + add(ignoreAttribute); + + CheckBox validFromEnabled = new CheckBox(ID_CHECK_VALID_FROM_ENABLED, + new PropertyModel(getModel(), "capability.validFrom.enabled")); + add(validFromEnabled); + + CheckBox validFromReturned = new CheckBox(ID_CHECK_VALID_FROM_RETURNED, + new PropertyModel(getModel(), "capability.validFrom.returnedByDefault")); + add(validFromReturned); + + CheckBox validToEnabled = new CheckBox(ID_CHECK_VALID_TO_ENABLED, + new PropertyModel(getModel(), "capability.validTo.enabled")); + add(validToEnabled); + + CheckBox validToReturned = new CheckBox(ID_CHECK_VALID_TO_RETURNED, + new PropertyModel(getModel(), "capability.validTo.returnedByDefault")); + add(validToReturned); + + CapabilityListRepeater enableList = new CapabilityListRepeater(ID_ENABLE_LIST, + new PropertyModel>(getModel(), "capability.enableDisable.enableValue")){ + + @Override + protected StringResourceModel createEmptyItemPlaceholder(){ + return createStringResource("capabilityActivationPanel.list.placeholder"); + } + }; + add(enableList); + + CapabilityListRepeater disableList = new CapabilityListRepeater(ID_DISABLE_LIST, + new PropertyModel>(getModel(), "capability.enableDisable.disableValue")){ + + @Override + protected StringResourceModel createEmptyItemPlaceholder(){ + return createStringResource("capabilityActivationPanel.list.placeholder"); + } + }; + add(disableList); + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.properties new file mode 100644 index 00000000000..8bd8d9e5afa --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityActivationPanel.properties @@ -0,0 +1,28 @@ +# +# 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. +# +capabilityActivationPanel.label=Activation configuration +capabilityActivationPanel.label.enabledDisabled=Enabled/disabled +capabilityActivationPanel.label.status=Status +capabilityActivationPanel.label.status.message=The same as enabled/disabled +capabilityActivationPanel.label.enabled=Enabled +capabilityActivationPanel.label.returnedByDefault=Returned by default +capabilityActivationPanel.label.ignoreAttribute=Ignore attribute +capabilityActivationPanel.label.attributeName=Attribute name +capabilityActivationPanel.label.enableList=Enable list +capabilityActivationPanel.label.disableList=Disable list +capabilityActivationPanel.label.validFrom=Valid from +capabilityActivationPanel.label.validTo=Valid to +capabilityActivationPanel.list.placeholder=Insert value \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.html index 70c0e827fc8..3aa82e737d3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.html @@ -18,27 +18,33 @@ -
-

Credentials configuration

+

-
-
Enabled
-
-
-

Password

-
-
-
-
Enabled
-
-
-
-
-
-
Returned by default
-
-
-
+
+
+ +
+
+
+ +

+ +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.java index 7908d0b2b48..35e1fbfc95e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.java @@ -18,19 +18,42 @@ import com.evolveum.midpoint.web.component.util.SimplePanel; import com.evolveum.midpoint.web.component.wizard.resource.dto.CapabilityDto; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.PropertyModel; /** * @author shood * */ public class CapabilityCredentialsPanel extends SimplePanel{ - private IModel model; + private static final String ID_LABEL = "label"; + private static final String ID_ENABLED = "enabled"; + private static final String ID_LABEL_PASSWORD = "password"; + private static final String ID_PASSWORD_ENABLED = "passEnabled"; + private static final String ID_PASSWORD_RETURNED = "passReturned"; public CapabilityCredentialsPanel(String componentId, IModel model){ super(componentId, model); } @Override - protected void initLayout(){} + protected void initLayout(){ + + Label label = new Label(ID_LABEL, createStringResource("capabilityCredentialsPanel.label")); + add(label); + + Label passLabel = new Label(ID_LABEL_PASSWORD, createStringResource("capabilityCredentialsPanel.label.password")); + add(passLabel); + + CheckBox enabled = new CheckBox(ID_ENABLED, new PropertyModel(getModel(), "capability.enabled")); + add(enabled); + + CheckBox passwordEnabled = new CheckBox(ID_PASSWORD_ENABLED, new PropertyModel(getModel(), "capability.password.enabled")); + add(passwordEnabled); + + CheckBox passwordReturned = new CheckBox(ID_PASSWORD_RETURNED, new PropertyModel(getModel(), "capability.password.returnedByDefault")); + add(passwordReturned); + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.properties new file mode 100644 index 00000000000..8078cd0658a --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityCredentialsPanel.properties @@ -0,0 +1,20 @@ +# +# 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. +# + +capabilityCredentialsPanel.label=Credentials Configuration +capabilityCredentialsPanel.label.enabled=Enabled +capabilityCredentialsPanel.label.password=Password +capabilityCredentialsPanel.label.returned=Returned by default \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.html new file mode 100644 index 00000000000..473b35d3c13 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.html @@ -0,0 +1,37 @@ + + + + + + +
+
+ + + + + + + + + + +
+
+
+
+ \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.java new file mode 100644 index 00000000000..9000f532f53 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.java @@ -0,0 +1,180 @@ +/* + * 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.wizard.resource.component.capability; + +import com.evolveum.midpoint.web.component.util.SimplePanel; +import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; +import org.apache.commons.lang.StringUtils; +import org.apache.wicket.AttributeModifier; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.model.AbstractReadOnlyModel; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.StringResourceModel; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; + +/** + * @author shood + * */ +public class CapabilityListRepeater extends SimplePanel> { + + private static final String ID_REPEATER = "repeater"; + private static final String ID_TEXT = "input"; + private static final String ID_BUTTON_GROUP = "buttonGroup"; + private static final String ID_PLUS = "plus"; + private static final String ID_MINUS = "minus"; + + private static final String CSS_DISABLED = " disabled"; + + public CapabilityListRepeater(String id, IModel> value){ + super(id, value); + setOutputMarkupId(true); + + initLayout(true); + } + + private void initLayout(boolean unused){ + + if(getModel().getObject() == null){ + getModel().setObject(new ArrayList<>(Arrays.asList(createNewEmptyItem()))); + } else if(getModel().getObject().isEmpty()){ + getModel().getObject().add(createNewEmptyItem()); + } + + ListView repeater = new ListView(ID_REPEATER, getModel()){ + + @Override + protected void populateItem(final ListItem item) { + TextField text = new TextField<>(ID_TEXT, createTextModel(item.getModel())); + text.add(new AjaxFormComponentUpdatingBehavior("onblur") { + @Override + protected void onUpdate(AjaxRequestTarget target) {} + }); + text.add(AttributeAppender.replace("placeholder", createEmptyItemPlaceholder())); + item.add(text); + + WebMarkupContainer buttonGroup = new WebMarkupContainer(ID_BUTTON_GROUP); + item.add(buttonGroup); + initButtons(buttonGroup, item); + } + }; + add(repeater); + + + } + + private void initButtons(WebMarkupContainer buttonGroup, final ListItem item) { + AjaxLink plus = new AjaxLink(ID_PLUS) { + + @Override + public void onClick(AjaxRequestTarget target) { + addValuePerformed(target); + } + }; + plus.add(new AttributeAppender("class", getPlusClassModifier(item))); + buttonGroup.add(plus); + + AjaxLink minus = new AjaxLink(ID_MINUS) { + + @Override + public void onClick(AjaxRequestTarget target) { + removeValuePerformed(target, item); + } + }; + minus.add(new AttributeAppender("class", getMinusClassModifier())); + buttonGroup.add(minus); + } + + protected String getPlusClassModifier(ListItem item){ + int size = getModelObject().size(); + if (size <= 1) { + return ""; + } + if (item.getIndex() == size - 1) { + return ""; + } + + return CSS_DISABLED; + } + + protected String getMinusClassModifier(){ + int size = getModelObject().size(); + if (size > 1) { + return ""; + } + + return CSS_DISABLED; + } + + protected IModel createTextModel(final IModel model) { + return new IModel() { + @Override + public String getObject() { + T obj = model.getObject(); + return obj != null ? obj.toString() : null; + } + + @Override + public void setObject(String object) { + model.setObject((T) object); + } + + @Override + public void detach() { + } + }; + } + + protected void addValuePerformed(AjaxRequestTarget target){ + List objects = getModelObject(); + objects.add(createNewEmptyItem()); + + target.add(this); + } + + protected T createNewEmptyItem(){ + return (T)""; + } + + protected StringResourceModel createEmptyItemPlaceholder(){ + return createStringResource("capabilityListRepeater.label.text.placeholder"); + } + + protected void removeValuePerformed(AjaxRequestTarget target, ListItem item){ + List objects = getModelObject(); + Iterator iterator = objects.iterator(); + while (iterator.hasNext()) { + T object = iterator.next(); + if (object.equals(item.getModelObject())) { + iterator.remove(); + break; + } + } + + target.add(this); + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.properties new file mode 100644 index 00000000000..bc6c3d04026 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityListRepeater.properties @@ -0,0 +1,16 @@ +# +# 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. +# +capabilityListRepeater.label.text.placeholder=Language URL \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityPanel.html index d8f616a413d..5e83aa9534f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityPanel.html @@ -18,7 +18,7 @@ - +
@@ -26,10 +26,12 @@

- +
- [Capability Name] + + + @@ -42,6 +44,8 @@

+ +
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityPanel.java index 156ded8d3ec..622e621af69 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityPanel.java @@ -16,21 +16,29 @@ package com.evolveum.midpoint.web.component.wizard.resource.component.capability; import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider; +import com.evolveum.midpoint.web.component.data.TablePanel; import com.evolveum.midpoint.web.component.util.ListDataProvider; +import com.evolveum.midpoint.web.component.util.LoadableModel; import com.evolveum.midpoint.web.component.util.SimplePanel; import com.evolveum.midpoint.web.component.wizard.resource.dto.CapabilityDto; +import com.evolveum.midpoint.web.page.admin.configuration.component.ChooseTypeDialog; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ProvisioningScriptHostType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.*; import org.apache.wicket.AttributeModifier; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; +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.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.DataView; 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 java.util.ArrayList; @@ -44,9 +52,9 @@ public class CapabilityPanel extends SimplePanel{ //private Trace LOGGER = TraceManager.getTrace(CapabilityPanel.class); - private static ArrayList capabilities; + public static ArrayList capabilities; static{ - capabilities = new ArrayList(Arrays.asList( + capabilities = new ArrayList<>(Arrays.asList( new CapabilityDto(new ReadCapabilityType(), "Read", true), new CapabilityDto(new UpdateCapabilityType(), "Update", true), new CapabilityDto(new CreateCapabilityType(), "Create", true), @@ -63,15 +71,17 @@ public class CapabilityPanel extends SimplePanel{ private static final String ID_CAPABILITY_ROW = "capabilityRow"; private static final String ID_CAPABILITY_NAME = "capabilityName"; private static final String ID_CAPABILITY_DELETE = "capabilityDelete"; + private static final String ID_CAPABILITY_EDIT = "capabilityEdit"; private static final String ID_CAPABILITY_ADD = "capabilityAdd"; + private static final String ID_CAPABILITY_CONFIG = "capabilityConfig"; private static final String DIALOG_SELECT_CAPABILITY = "capabilitySelectPopup"; // private IModel> model; - private CapabilityStepDto model; + private IModel model; - public CapabilityPanel(String componentId, IModel> model){ - super(componentId, model); + public CapabilityPanel(String componentId, IModel> prismModel){ + super(componentId, prismModel); } private CapabilityStepDto loadModel(){ @@ -83,22 +93,61 @@ private CapabilityStepDto loadModel(){ // dto.getCapabilities().addAll(resource.getCapabilities().getConfigured().getAny()); CapabilityStepDto dto = new CapabilityStepDto(); - dto.setCapabilities(capabilities); + //TODO - remove this cloning when capabilities will be loaded from resource + dto.setCapabilities((List) capabilities.clone()); + + //TODO - Preparing some mock object, remove this when finished + ScriptCapabilityType script = (ScriptCapabilityType)dto.getCapabilities().get(8).getCapability(); + ScriptCapabilityType.Host onConnectorHost = new ScriptCapabilityType.Host(); + onConnectorHost.setType(ProvisioningScriptHostType.CONNECTOR); + onConnectorHost.getLanguage().add("java"); + onConnectorHost.getLanguage().add("sql"); + + ScriptCapabilityType.Host onResourceHost = new ScriptCapabilityType.Host(); + onResourceHost.setType(ProvisioningScriptHostType.RESOURCE); + onResourceHost.getLanguage().add("erlang"); + onResourceHost.getLanguage().add("javascript"); + onResourceHost.getLanguage().add("groovy"); + script.getHost().add(onConnectorHost); + script.getHost().add(onResourceHost); + + ActivationCapabilityType activation = (ActivationCapabilityType)dto.getCapabilities().get(6).getCapability(); + ActivationStatusCapabilityType enableDisable = new ActivationStatusCapabilityType(); + enableDisable.setIgnoreAttribute(true); + enableDisable.getEnableValue().addAll(new ArrayList<>(Arrays.asList("4","5","6"))); + enableDisable.getDisableValue().addAll(new ArrayList<>(Arrays.asList("1","2","3"))); + activation.setEnableDisable(enableDisable); + activation.setEnabled(true); + + ActivationValidityCapabilityType validFrom = new ActivationValidityCapabilityType(); + validFrom.setReturnedByDefault(true); + activation.setValidFrom(validFrom); return dto; } @Override protected void initLayout(){ - this.model = loadModel(); - final ListDataProvider capabilityProvider = new ListDataProvider(this, - new PropertyModel>(model, CapabilityStepDto.F_CAPABILITIES)); + model = new LoadableModel() { + + @Override + protected CapabilityStepDto load() { + return loadModel(); + } + }; + + final ListDataProvider capabilityProvider = new ListDataProvider<>(this, + new PropertyModel>(model.getObject(), CapabilityStepDto.F_CAPABILITIES)); WebMarkupContainer tableBody = new WebMarkupContainer(ID_CAPABILITY_TABLE); tableBody.setOutputMarkupId(true); add(tableBody); + WebMarkupContainer configBody = new WebMarkupContainer(ID_CAPABILITY_CONFIG); + configBody.setOutputMarkupId(true); + add(configBody); + DataView capabilityDataView = new DataView(ID_CAPABILITY_ROW, capabilityProvider) { @Override @@ -117,6 +166,15 @@ public void onClick(AjaxRequestTarget target) { }; capabilityRow.add(deleteLink); + AjaxLink editLink = new AjaxLink(ID_CAPABILITY_EDIT) { + + @Override + public void onClick(AjaxRequestTarget target) { + editCapabilityPerformed(target, dto); + } + }; + capabilityRow.add(editLink); + capabilityRow.add(AttributeModifier.replace("class", new AbstractReadOnlyModel() { @Override @@ -140,28 +198,74 @@ public void onClick(AjaxRequestTarget target) { }; add(addLink); - //TODO - continue here in 2.4 -// ModalWindow dialog = new ChooseTypeDialog(DIALOG_SELECT_CAPABILITY, CapabilityDto.class){ -// -// @Override -// protected void chooseOperationPerformed(AjaxRequestTarget target, CapabilityDto capability){ -// choosePerformed(target, capability); -// } -// -// @Override -// public BaseSortableDataProvider getDataProvider(){ -// return capabilityProvider; -// } -// }; -// add(dialog); + ModalWindow dialog = new AddCapabilityDialog(DIALOG_SELECT_CAPABILITY, model){ + + @Override + protected void addPerformed(AjaxRequestTarget target){ + addCapabilitiesPerformed(target, getSelectedData()); + } + }; + add(dialog); } - private void deleteCapabilityPerformed(AjaxRequestTarget target, CapabilityDto rowModel){} + private WebMarkupContainer getTable(){ + return (WebMarkupContainer)get(ID_CAPABILITY_TABLE); + } + + private WebMarkupContainer getConfigContainer(){ + return (WebMarkupContainer)get(ID_CAPABILITY_CONFIG); + } + + private void deleteCapabilityPerformed(AjaxRequestTarget target, CapabilityDto rowModel){ + for(CapabilityDto dto: model.getObject().getCapabilities()){ + dto.setSelected(false); + } + + model.getObject().getCapabilities().remove(rowModel); + target.add(getConfigContainer().replaceWith(new WebMarkupContainer(ID_CAPABILITY_CONFIG))); + target.add(getTable()); + } + + private void addCapabilitiesPerformed(AjaxRequestTarget target, List selected){ + for(CapabilityDto dto: selected){ + dto.setSelected(false); + model.getObject().getCapabilities().add(dto); + } + target.add(getTable()); + AddCapabilityDialog window = (AddCapabilityDialog)get(DIALOG_SELECT_CAPABILITY); + window.close(target); + } private void addCapabilityPerformed(AjaxRequestTarget target){ -// ModalWindow window = (ModalWindow)get(DIALOG_SELECT_CAPABILITY); -// window.show(target); + AddCapabilityDialog window = (AddCapabilityDialog)get(DIALOG_SELECT_CAPABILITY); + window.updateTable(target, model); + window.show(target); } - private void choosePerformed(AjaxRequestTarget target, CapabilityDto capability){} + private void editCapabilityPerformed(AjaxRequestTarget target, CapabilityDto capability){ + for(CapabilityDto dto: model.getObject().getCapabilities()){ + dto.setSelected(false); + } + + WebMarkupContainer config = getConfigContainer(); + WebMarkupContainer newConfig; + CapabilityType capType = capability.getCapability(); + + if(capType instanceof ActivationCapabilityType){ + newConfig = new CapabilityActivationPanel(ID_CAPABILITY_CONFIG, new Model<>(capability)); + } else if(capType instanceof ScriptCapabilityType){ + newConfig = new CapabilityScriptPanel(ID_CAPABILITY_CONFIG, new Model<>(capability)); + } else if(capType instanceof CredentialsCapabilityType){ + newConfig = new CapabilityCredentialsPanel(ID_CAPABILITY_CONFIG, new Model<>(capability)); + } else { + newConfig = new CapabilityValuePanel(ID_CAPABILITY_CONFIG, new Model<>(capability)); + } + + newConfig.setOutputMarkupId(true); + config.replaceWith(newConfig); + + target.add(newConfig); + capability.setSelected(true); + target.add(getTable()); + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.html index a426dbce514..9346046a67b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.html @@ -18,59 +18,26 @@ -
-

Script configuration

+

-
-
Enabled
-
-
-
-
On connector
-
-
- - - - - - - - - -
-
-
-
- - - - - - - - - -
-
-
-
-
On connector
-
-
- - - - - - - - - -
-
-
-
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.java index bb7951ece7d..945a64983ac 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.java @@ -18,19 +18,72 @@ import com.evolveum.midpoint.web.component.util.SimplePanel; import com.evolveum.midpoint.web.component.wizard.resource.dto.CapabilityDto; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ProvisioningScriptHostType; +import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.ScriptCapabilityType; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.PropertyModel; + +import java.util.ArrayList; +import java.util.List; /** * @author shood * */ public class CapabilityScriptPanel extends SimplePanel { - private IModel model; + private static final String ID_LABEL = "label"; + private static final String ID_ENABLED = "enabled"; + private static final String ID_ON_CONNECTOR = "onConnectorValue"; + private static final String ID_ON_RESOURCE = "onResourceValue"; public CapabilityScriptPanel(String componentId, IModel model){ super(componentId, model); } @Override - protected void initLayout(){} + protected void initLayout(){ + + Label label = new Label(ID_LABEL, createStringResource("capabilityScriptPanel.label")); + add(label); + + CheckBox enabled = new CheckBox(ID_ENABLED, new PropertyModel(getModel(), "capability.enabled")); + add(enabled); + + CapabilityListRepeater onConnector = new CapabilityListRepeater(ID_ON_CONNECTOR, prepareOnConnectorModel()); + add(onConnector); + + CapabilityListRepeater onResource = new CapabilityListRepeater(ID_ON_RESOURCE, Model.of(prepareOnResourceModel())); + add(onResource); + } + + private IModel prepareOnConnectorModel(){ + CapabilityDto dto = (CapabilityDto)getModel().getObject(); + ScriptCapabilityType script = (ScriptCapabilityType)dto.getCapability(); + + for(ScriptCapabilityType.Host host: script.getHost()){ + if(ProvisioningScriptHostType.CONNECTOR.equals(host.getType())){ + return new PropertyModel>(host, "language"); + } + } + + List emptyList = new ArrayList<>(); + return Model.of(emptyList); + } + + private IModel prepareOnResourceModel(){ + CapabilityDto dto = (CapabilityDto)getModel().getObject(); + ScriptCapabilityType script = (ScriptCapabilityType)dto.getCapability(); + + for(ScriptCapabilityType.Host host: script.getHost()){ + if(ProvisioningScriptHostType.RESOURCE.equals(host.getType())){ + return new PropertyModel>(host, "language"); + } + } + + List emptyList = new ArrayList<>(); + return Model.of(emptyList); + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.properties new file mode 100644 index 00000000000..b08e75941d0 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityScriptPanel.properties @@ -0,0 +1,20 @@ +# +# 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. +# + +capabilityScriptPanel.label=Script Configuration +capabilityScriptPanel.label.enabled=Enabled +capabilityScriptPanel.label.onConnector=On connector +capabilityScriptPanel.label.onResource=On resource \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.html index 4ed45e9e227..e0dd2a00a0c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.html @@ -18,14 +18,16 @@ -
-

Native value configuration

+

-
-
Enabled
-
-
-
+
+
+ +
+
+
\ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.java index a109e4bc4d0..7c632c9629b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.java @@ -18,19 +18,50 @@ import com.evolveum.midpoint.web.component.util.SimplePanel; import com.evolveum.midpoint.web.component.wizard.resource.dto.CapabilityDto; +import com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.*; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.PropertyModel; /** * @author shood * */ public class CapabilityValuePanel extends SimplePanel{ - private IModel model; + private static final String ID_LABEL = "label"; + private static final String ID_ENABLED = "enabled"; public CapabilityValuePanel(String componentId, IModel model){ super(componentId, model); } @Override - protected void initLayout(){} + protected void initLayout(){ + + Label label = new Label(ID_LABEL, createStringResource(getCapabilityLabelKey())); + add(label); + + CheckBox enabled = new CheckBox(ID_ENABLED, new PropertyModel(getModel(), "capability.enabled")); + add(enabled); + } + + private String getCapabilityLabelKey(){ + CapabilityType capability = ((CapabilityDto)getModel().getObject()).getCapability(); + + if(capability instanceof ReadCapabilityType){ + return "capabilityValuePanel.label.capability.read"; + } else if(capability instanceof UpdateCapabilityType){ + return "capabilityValuePanel.label.capability.update"; + } else if(capability instanceof CreateCapabilityType){ + return "capabilityValuePanel.label.capability.create"; + } else if(capability instanceof DeleteCapabilityType){ + return "capabilityValuePanel.label.capability.delete"; + } else if(capability instanceof LiveSyncCapabilityType){ + return "capabilityValuePanel.label.capability.liveSync"; + } else if(capability instanceof TestConnectionCapabilityType){ + return "capabilityValuePanel.label.capability.testConnection"; + } + return null; + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.properties new file mode 100644 index 00000000000..0d4d0453cab --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/component/capability/CapabilityValuePanel.properties @@ -0,0 +1,22 @@ +# +# 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. +# +capabilityValuePanel.label.enabled=Enabled +capabilityValuePanel.label.capability.read=Read Capability +capabilityValuePanel.label.capability.update=Update Capability +capabilityValuePanel.label.capability.create=Create Capability +capabilityValuePanel.label.capability.delete=Delete Capability +capabilityValuePanel.label.capability.liveSync=Live Synchronization Capability +capabilityValuePanel.label.capability.testConnection=Test Connection Capability \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/CapabilityDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/CapabilityDto.java index 5f2190bc571..35f36a7d7eb 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/CapabilityDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/wizard/resource/dto/CapabilityDto.java @@ -72,4 +72,35 @@ public boolean isSelected() { public void setSelected(boolean selected) { this.selected = selected; } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + + if (!(o instanceof CapabilityDto)) + return false; + + CapabilityDto that = (CapabilityDto) o; + + if (nativeCapability != that.nativeCapability) + return false; + if (selected != that.selected) + return false; + if (!capability.equals(that.capability)) + return false; + if (!value.equals(that.value)) + return false; + + return true; + } + + @Override + public int hashCode() { + int result = (selected ? 1 : 0); + result = 31 * result + (nativeCapability ? 1 : 0); + result = 31 * result + value.hashCode(); + result = 31 * result + capability.hashCode(); + return result; + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/ChooseTypeDialog.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/ChooseTypeDialog.java index 42693329a52..3a18b659496 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/ChooseTypeDialog.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/ChooseTypeDialog.java @@ -84,7 +84,7 @@ public void initLayout(WebMarkupContainer content){ List, String>> columns = initColumns(); ObjectDataProvider provider = new ObjectDataProvider(getPageBase(), this.objectType); provider.setQuery(getDataProviderQuery()); - TablePanel table = new TablePanel>("table", provider, columns); + TablePanel table = new TablePanel<>("table", provider, columns); table.setOutputMarkupId(true); content.add(table); @@ -100,7 +100,7 @@ public void onClick(AjaxRequestTarget ajaxRequestTarget) { } private List, String>> initColumns(){ - List, String>> columns = new ArrayList, String>>(); + List, String>> columns = new ArrayList<>(); IColumn column = new LinkColumn>(createStringResource("chooseTypeDialog.column.name"), getSortableProperty(), "value.name"){ diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/ResourcesPopup.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/ResourcesPopup.java index 830917adc32..1ead3c51dee 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/ResourcesPopup.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/ResourcesPopup.java @@ -31,7 +31,6 @@ import com.evolveum.midpoint.web.component.util.BasePanel; import com.evolveum.midpoint.web.component.util.LoadableModel; import com.evolveum.midpoint.web.component.util.SelectableBean; -import com.evolveum.midpoint.web.page.PageBase; import com.evolveum.midpoint.web.page.admin.resources.dto.ResourceDto; import com.evolveum.midpoint.web.page.admin.users.dto.SimpleUserResourceProvider; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; @@ -97,7 +96,7 @@ protected void clearSearchPerformed(AjaxRequestTarget target) { }; searchForm.add(basicSearch); - TablePanel resources = new TablePanel(ID_TABLE, + TablePanel resources = new TablePanel<>(ID_TABLE, getProvider(), initResourceColumns()); resources.setOutputMarkupId(true); add(resources); @@ -118,7 +117,7 @@ public SimpleUserResourceProvider getProvider(){ } private List> initResourceColumns() { - List> columns = new ArrayList>(); + List> columns = new ArrayList<>(); IColumn column = new CheckBoxHeaderColumn(); columns.add(column); @@ -129,7 +128,7 @@ private List> initResourceColumns() { } private List getSelectedResources() { - List list = new ArrayList(); + List list = new ArrayList<>(); TablePanel table = getTablePanel(); SimpleUserResourceProvider provider = (SimpleUserResourceProvider) table.getDataTable().getDataProvider();