You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by md...@apache.org on 2015/11/20 15:23:10 UTC
[2/2] syncope git commit: [SYNCOPE-156] Added the management of
AnyTypeClasses
[SYNCOPE-156] Added the management of AnyTypeClasses
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/e6e2a471
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/e6e2a471
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/e6e2a471
Branch: refs/heads/master
Commit: e6e2a4718f534240d97b64152b55041449f2ce90
Parents: 444182f
Author: Marco Di Sabatino Di Diodoro <md...@apache.org>
Authored: Fri Nov 20 15:22:03 2015 +0100
Committer: Marco Di Sabatino Di Diodoro <md...@apache.org>
Committed: Fri Nov 20 15:22:14 2015 +0100
----------------------------------------------------------------------
.../syncope/client/console/pages/BasePage.java | 8 +-
.../syncope/client/console/pages/Schemas.java | 141 -------------
.../syncope/client/console/pages/Types.java | 202 +++++++++++++++++++
.../console/panels/AnyTypeClassDetails.java | 104 ++++++++++
.../console/panels/AnyTypeClassModalPanel.java | 87 ++++++++
.../console/panels/AnyTypeClassesPanel.java | 144 ++++++++++++-
.../client/console/panels/AnyTypePanel.java | 33 +++
.../client/console/panels/SchemaModalPanel.java | 2 +-
.../client/console/panels/SchemasPanel.java | 1 -
.../markup/html/form/AjaxPalettePanel.java | 94 +++++++--
.../wicket/markup/html/form/NonI18nPalette.java | 11 +
.../client/console/wizards/any/AuxClasses.java | 46 ++---
.../client/console/wizards/any/Resources.java | 37 ++--
.../client/console/wizards/any/Roles.java | 17 +-
.../syncope/client/console/pages/BasePage.html | 2 +-
.../syncope/client/console/pages/Schemas.html | 54 -----
.../client/console/pages/Schemas.properties | 18 --
.../client/console/pages/Schemas_it.properties | 18 --
.../console/pages/Schemas_pt_BR.properties | 18 --
.../syncope/client/console/pages/Types.html | 56 +++++
.../client/console/pages/Types.properties | 18 ++
.../client/console/pages/Types_it.properties | 18 ++
.../client/console/pages/Types_pt_BR.properties | 18 ++
.../console/panels/AnyTypeClassDetails.html | 57 ++++++
.../panels/AnyTypeClassDetails.properties | 20 ++
.../panels/AnyTypeClassDetails_it.properties | 20 ++
.../panels/AnyTypeClassDetails_pt_BR.properties | 20 ++
.../console/panels/AnyTypeClassModalPanel.html | 32 +++
.../console/panels/AnyTypeClassesPanel.html | 56 +++++
.../panels/AnyTypeClassesPanel.properties | 19 ++
.../panels/AnyTypeClassesPanel_it.properties | 19 ++
.../panels/AnyTypeClassesPanel_pt_BR.properties | 19 ++
32 files changed, 1085 insertions(+), 324 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
index 16c7151..f77233e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
@@ -84,11 +84,11 @@ public class BasePage extends AbstractBasePage implements IAjaxIndicatorAware {
WebMarkupContainer confULContainer = new WebMarkupContainer(getULContainerId("configuration"));
confLIContainer.add(confULContainer);
- liContainer = new WebMarkupContainer(getLIContainerId("schemas"));
+ liContainer = new WebMarkupContainer(getLIContainerId("types"));
confULContainer.add(liContainer);
- BookmarkablePageLink<Page> schemaLink = new BookmarkablePageLink<>("schemas", Schemas.class);
-// MetaDataRoleAuthorizationStrategy.authorize(schemaLink, WebPage.ENABLE, StandardEntitlement.SCHEMA_LIST);
- liContainer.add(schemaLink);
+ BookmarkablePageLink<Page> typesLink = new BookmarkablePageLink<>("types", Types.class);
+ MetaDataRoleAuthorizationStrategy.authorize(typesLink, WebPage.ENABLE, StandardEntitlement.SCHEMA_LIST);
+ liContainer.add(typesLink);
liContainer = new WebMarkupContainer(getLIContainerId("workflow"));
confULContainer.add(liContainer);
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/pages/Schemas.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Schemas.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Schemas.java
deleted file mode 100644
index 0e8b408..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Schemas.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 org.apache.syncope.client.console.pages;
-
-import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.panels.SchemasPanel;
-import org.apache.syncope.client.console.wicket.ajax.markup.html.ClearIndicatingAjaxLink;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.common.lib.to.AbstractSchemaTO;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
-import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
-import org.apache.wicket.extensions.markup.html.tabs.ITab;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.panel.EmptyPanel;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.syncope.client.console.panels.SchemaModalPanel;
-import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-
-public class Schemas extends BasePage {
-
- private static final long serialVersionUID = 8091922398776299403L;
-
- private final BaseModal<AbstractSchemaTO> modal;
-
- public Schemas(final PageParameters parameters) {
- super(parameters);
-
- this.modal = new BaseModal<>("modal");
-
- final WebMarkupContainer content = new WebMarkupContainer("content");
- content.add(new Label("header", "AnyTypeClasses/Schemas"));
- content.setOutputMarkupId(true);
- content.add(new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList(getPageReference())));
- content.add(buildCreateSchemaLink());
- add(content);
-
- modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
-
- private static final long serialVersionUID = 8804221891699487139L;
-
- @Override
- public void onClose(final AjaxRequestTarget target) {
- target.add();
- modal.show(false);
-
- if (((AbstractBasePage) Schemas.this.getPage()).isModalResult()) {
- info(getString(Constants.OPERATION_SUCCEEDED));
- feedbackPanel.refresh(target);
- ((AbstractBasePage) Schemas.this.getPage()).setModalResult(false);
- }
- }
- });
-
- add(modal);
-
- }
-
- private List<ITab> buildTabList(final PageReference pageReference) {
-
- final List<ITab> tabs = new ArrayList<>();
-
- tabs.add(new AbstractTab(new Model<>("AnyTypeClasses")) {
-
- private static final long serialVersionUID = -6815067322125799251L;
-
- @Override
- public Panel getPanel(final String panelId) {
-// final AnyTypeClassesPanel objectClassesPanel =
-// new AnyTypeClassesPanel(panelId, getPageReference(), false);
-// objectClassesPanel.setEnabled(false);
-// return objectClassesPanel;
- return new EmptyPanel(panelId);
- }
- });
-
- tabs.add(new AbstractTab(new Model<>("Schemas")) {
-
- private static final long serialVersionUID = -6815067322125799251L;
-
- @Override
- public Panel getPanel(final String panelId) {
- return new SchemasPanel(panelId, getPageReference(), modal);
- }
- });
-
- return tabs;
- }
-
- private AjaxLink<Void> buildCreateSchemaLink() {
-
- final AjaxLink<Void> createLink = new ClearIndicatingAjaxLink<Void>("createSchemaLink", getPageReference()) {
-
- private static final long serialVersionUID = -7978723352517770644L;
-
- @Override
- protected void onClickInternal(final AjaxRequestTarget target) {
- modal.header(new ResourceModel("createSchema"));
-
- final SchemaModalPanel panel = new SchemaModalPanel(modal, getPageReference(), true);
-
- target.add(modal.setContent(panel));
- modal.addSumbitButton();
- modal.show(true);
- }
- };
-
- if (SyncopeConsoleSession.get().owns(StandardEntitlement.SCHEMA_CREATE)) {
- MetaDataRoleAuthorizationStrategy.authorize(createLink, ENABLE, StandardEntitlement.SCHEMA_CREATE);
- }
-
- return createLink;
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/pages/Types.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Types.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Types.java
new file mode 100644
index 0000000..8c710b7
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Types.java
@@ -0,0 +1,202 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.syncope.client.console.pages;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.panels.AnyTypeClassModalPanel;
+import org.apache.syncope.client.console.panels.AnyTypeClassesPanel;
+import org.apache.syncope.client.console.panels.ModalPanel;
+import org.apache.syncope.client.console.panels.SchemasPanel;
+import org.apache.syncope.client.console.wicket.ajax.markup.html.ClearIndicatingAjaxLink;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.common.lib.to.AbstractSchemaTO;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.syncope.client.console.panels.SchemaModalPanel;
+import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.lib.to.AnyTypeTO;
+import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
+
+public class Types extends BasePage {
+
+ private static final long serialVersionUID = 8091922398776299403L;
+
+ private final BaseModal<AbstractSchemaTO> schemaModal;
+
+ private final BaseModal<AnyTypeClassTO> anyTypeClassModal;
+
+ private final BaseModal<AnyTypeTO> anyTypeModal;
+
+ private final AjaxBootstrapTabbedPanel<ITab> tabbedPanel;
+
+ private enum Type {
+ SCHEMA,
+ ANYTYPECLASS,
+ ANYTYPE,
+ RELATIONSHIPTYPE;
+ }
+
+ public Types(final PageParameters parameters) {
+ super(parameters);
+
+ this.schemaModal = new BaseModal<>("schemaModal");
+ this.anyTypeClassModal = new BaseModal<>("anyTypeClassModal");
+ this.anyTypeModal = new BaseModal<>("anyTypeModal");
+
+ final WebMarkupContainer content = new WebMarkupContainer("content");
+ content.add(new Label("header", "Types"));
+ content.setOutputMarkupId(true);
+ tabbedPanel = new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList());
+ content.add(tabbedPanel);
+
+ final AjaxLink<Void> createSchemaLink =
+ buildCreateLink("createSchema", schemaModal, Type.SCHEMA);
+ content.add(createSchemaLink);
+
+ if (SyncopeConsoleSession.get().owns(StandardEntitlement.SCHEMA_CREATE)) {
+ MetaDataRoleAuthorizationStrategy.authorize(createSchemaLink, ENABLE, StandardEntitlement.SCHEMA_CREATE);
+ }
+
+ final AjaxLink<Void> createAnyTypeClassLink =
+ buildCreateLink("createAnyTypeClass", anyTypeClassModal, Type.ANYTYPECLASS);
+ content.add(createAnyTypeClassLink);
+
+ if (SyncopeConsoleSession.get().owns(StandardEntitlement.ANYTYPECLASS_CREATE)) {
+ MetaDataRoleAuthorizationStrategy.authorize(
+ createSchemaLink, ENABLE, StandardEntitlement.ANYTYPECLASS_CREATE);
+ }
+
+ add(content);
+ addWindowWindowClosedCallback(schemaModal);
+ addWindowWindowClosedCallback(anyTypeClassModal);
+ addWindowWindowClosedCallback(anyTypeModal);
+ add(schemaModal);
+ add(anyTypeClassModal);
+ add(anyTypeModal);
+ }
+
+ private List<ITab> buildTabList() {
+
+ final List<ITab> tabs = new ArrayList<>();
+
+ tabs.add(new AbstractTab(new Model<>("AnyTypes")) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ //return new AnyTypePanel(panelId, getPageReference(), anyTypeModal);
+ return new EmptyPanel(panelId);
+ }
+ });
+
+ tabs.add(new AbstractTab(new Model<>("AnyTypeClasses")) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ return new AnyTypeClassesPanel(panelId, getPageReference(), anyTypeClassModal);
+ }
+ });
+
+ tabs.add(new AbstractTab(new Model<>("Schemas")) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ return new SchemasPanel(panelId, getPageReference(), schemaModal);
+ }
+ });
+
+ return tabs;
+ }
+
+ private AjaxLink<Void> buildCreateLink(final String label, final BaseModal<?> modal, final Type type) {
+
+ final AjaxLink<Void> createLink = new ClearIndicatingAjaxLink<Void>(label, getPageReference()) {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ protected void onClickInternal(final AjaxRequestTarget target) {
+ modal.header(new ResourceModel(label));
+ target.add(modal.setContent(buildModalPanel(type)));
+ modal.addSumbitButton();
+ modal.show(true);
+ }
+ };
+
+ return createLink;
+ }
+
+ private ModalPanel buildModalPanel(final Type type) {
+ final ModalPanel panel;
+ switch (type) {
+ case ANYTYPECLASS:
+ anyTypeClassModal.setFormModel(new AnyTypeClassTO());
+ panel = new AnyTypeClassModalPanel(anyTypeClassModal, getPageReference(), true);
+ break;
+ case ANYTYPE:
+ case RELATIONSHIPTYPE:
+ case SCHEMA:
+ default:
+ schemaModal.setFormModel(new PlainSchemaTO());
+ panel = new SchemaModalPanel(schemaModal, getPageReference(), true);
+ }
+ return panel;
+ }
+
+ private void addWindowWindowClosedCallback(final BaseModal<?> modal) {
+ modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
+
+ private static final long serialVersionUID = 8804221891699487139L;
+
+ @Override
+ public void onClose(final AjaxRequestTarget target) {
+ tabbedPanel.setSelectedTab(tabbedPanel.getSelectedTab());
+ target.add(tabbedPanel);
+ modal.show(false);
+
+ if (((AbstractBasePage) Types.this.getPage()).isModalResult()) {
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ feedbackPanel.refresh(target);
+ ((AbstractBasePage) Types.this.getPage()).setModalResult(false);
+ }
+ }
+ });
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetails.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetails.java
new file mode 100644
index 0000000..1b0206e
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassDetails.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.syncope.client.console.panels;
+
+import java.util.List;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.rest.SchemaRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePanel;
+import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
+import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.util.ListModel;
+
+public class AnyTypeClassDetails extends Panel {
+
+ private static final long serialVersionUID = 3321861543207340469L;
+
+ private final AnyTypeClassTO anyTypeClassTO;
+
+ private final SchemaRestClient schemaRestClient = new SchemaRestClient();
+
+ private final List<String> availablePlainSchemas = schemaRestClient.getPlainSchemaNames();
+
+ private final List<String> availableDerSchemas = schemaRestClient.getDerSchemaNames();
+
+ private final List<String> availableVirSchemas = schemaRestClient.getVirSchemaNames();
+
+ public AnyTypeClassDetails(final String id,
+ final AnyTypeClassTO anyTypeClassTO, final boolean edit) {
+ super(id);
+
+ this.anyTypeClassTO = anyTypeClassTO;
+ buildAvailableSchemas(anyTypeClassTO.getKey());
+
+ final TransparentWebMarkupContainer container = new TransparentWebMarkupContainer("container");
+ container.setOutputMarkupId(true);
+ add(container);
+
+ final AjaxPalettePanel<String> plainSchema =
+ new AjaxPalettePanel.Builder<String>()
+ .setAllowOrder(true)
+ .setAllowMoveAll(true)
+ .build("plainSchemas",
+ new PropertyModel<List<String>>(this.anyTypeClassTO, "plainSchemas"),
+ new ListModel<>(availablePlainSchemas));
+
+ plainSchema.setOutputMarkupId(true);
+ plainSchema.setEnabled(edit);
+ container.add(plainSchema);
+
+ final AjaxPalettePanel<String> derSchema =
+ new AjaxPalettePanel.Builder<String>()
+ .setAllowOrder(true)
+ .setAllowMoveAll(true)
+ .build("derSchemas",
+ new PropertyModel<List<String>>(this.anyTypeClassTO, "derSchemas"),
+ new ListModel<>(availableDerSchemas));
+
+ derSchema.setOutputMarkupId(true);
+ derSchema.setEnabled(edit);
+ container.add(derSchema);
+
+ final AjaxPalettePanel<String> virSchema =
+ new AjaxPalettePanel.Builder<String>()
+ .setAllowOrder(true)
+ .setAllowMoveAll(true)
+ .build("virSchemas",
+ new PropertyModel<List<String>>(this.anyTypeClassTO, "virSchemas"),
+ new ListModel<>(availableVirSchemas));
+
+ virSchema.setOutputMarkupId(true);
+ virSchema.setEnabled(edit);
+ container.add(virSchema);
+ }
+
+ private void buildAvailableSchemas(final String key) {
+
+ for (AnyTypeClassTO item : SyncopeConsoleSession.get().getService(AnyTypeClassService.class).list()) {
+ if (key == null || !item.getKey().equals(key)) {
+ availablePlainSchemas.removeAll(item.getPlainSchemas());
+ availableDerSchemas.removeAll(item.getDerSchemas());
+ availableVirSchemas.removeAll(item.getVirSchemas());
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassModalPanel.java
new file mode 100644
index 0000000..6df508f
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassModalPanel.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.syncope.client.console.panels;
+
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.pages.AbstractBasePage;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.PropertyModel;
+
+public class AnyTypeClassModalPanel extends AbstractModalPanel {
+
+ private static final long serialVersionUID = 1086997609984272599L;
+
+ private final AnyTypeClassTO anyTypeClassTO;
+
+ private final boolean createFlag;
+
+ public AnyTypeClassModalPanel(
+ final BaseModal<AnyTypeClassTO> modal,
+ final PageReference pageRef,
+ final boolean createFlag) {
+ super(modal, pageRef);
+
+ this.anyTypeClassTO = modal.getFormModel();
+ this.createFlag = createFlag;
+
+ final Form<AnyTypeClassTO> antTypeClassForm = new Form<>("form");
+ antTypeClassForm.setModel(new CompoundPropertyModel<>(anyTypeClassTO));
+ antTypeClassForm.setOutputMarkupId(true);
+
+ final AjaxTextFieldPanel key =
+ new AjaxTextFieldPanel("key", getString("key"), new PropertyModel<String>(anyTypeClassTO, "key"));
+ key.addRequiredLabel();
+ key.setEnabled(anyTypeClassTO.getKey() == null || anyTypeClassTO.getKey().isEmpty());
+ antTypeClassForm.add(key);
+
+ antTypeClassForm.add(new AnyTypeClassDetails("details", anyTypeClassTO, true));
+ add(antTypeClassForm);
+ }
+
+ @Override
+ public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+
+ try {
+ final AnyTypeClassTO updatedAnyTypeClassTO = AnyTypeClassTO.class.cast(form.getModelObject());
+
+ if (createFlag) {
+ SyncopeConsoleSession.get().getService(AnyTypeClassService.class).create(updatedAnyTypeClassTO);
+ } else {
+ SyncopeConsoleSession.get().getService(AnyTypeClassService.class).update(updatedAnyTypeClassTO);
+ }
+
+ if (pageRef.getPage() instanceof AbstractBasePage) {
+ ((AbstractBasePage) pageRef.getPage()).setModalResult(true);
+ }
+ modal.close(target);
+ } catch (Exception e) {
+ LOG.error("While creating or updating AnyTypeClass", e);
+ error(getString(Constants.ERROR) + ": " + e.getMessage());
+ modal.getFeedbackPanel().refresh(target);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
index 2d1c07f..28a9fab 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
@@ -18,15 +18,155 @@
*/
package org.apache.syncope.client.console.panels;
+import java.io.Serializable;
+import java.util.List;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.pages.AbstractBasePage;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
+import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.markup.html.form.ListChoice;
import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class AnyTypeClassesPanel extends Panel {
private static final long serialVersionUID = -2356760296223908382L;
- public AnyTypeClassesPanel(final String id, final PageReference pageReference, final boolean unwraped) {
+ private static final Logger LOG = LoggerFactory.getLogger(AnyTypeClassesPanel.class);
+
+ private final ListChoice<AnyTypeClassTO> anyTypeClasses;
+
+ private AnyTypeClassDetails anyTypeClassesDetails;
+
+ public AnyTypeClassesPanel(final String id, final PageReference pageRef, final BaseModal<AnyTypeClassTO> modal) {
super(id);
+
+ this.setOutputMarkupId(true);
+
+ final WebMarkupContainer container = new WebMarkupContainer("container");
+ container.setOutputMarkupId(true);
+ add(container);
+
+ anyTypeClasses = new ListChoice<AnyTypeClassTO>(
+ "anyTypeClasses", new Model<AnyTypeClassTO>(),
+ SyncopeConsoleSession.get().getService(AnyTypeClassService.class).list()) {
+
+ private static final long serialVersionUID = 4022366881854379834L;
+
+ @Override
+ protected CharSequence getDefaultChoice(final String selectedValue) {
+ return null;
+ }
+ };
+
+ anyTypeClasses.setChoiceRenderer(new IChoiceRenderer<AnyTypeClassTO>() {
+
+ private static final long serialVersionUID = 1048000918946220007L;
+
+ @Override
+ public Object getDisplayValue(final AnyTypeClassTO object) {
+ return object.getKey();
+ }
+
+ @Override
+ public String getIdValue(final AnyTypeClassTO object, final int index) {
+ return object.getKey();
+ }
+
+ @Override
+ public AnyTypeClassTO getObject(final String id,
+ final IModel<? extends List<? extends AnyTypeClassTO>> choices) {
+ for (AnyTypeClassTO item : choices.getObject()) {
+ if (item.getKey().equals(id)) {
+ return item;
+ }
+ }
+ return null;
+ }
+ });
+
+ anyTypeClasses.setNullValid(true);
+ container.add(anyTypeClasses);
+
+ updateAnyTypeClassDetails(new AnyTypeClassTO(), false);
+ container.add(anyTypeClassesDetails);
+
+ anyTypeClasses.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -1107858522700306810L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ updateAnyTypeClassDetails(anyTypeClasses.getModelObject(), true);
+ container.addOrReplace(anyTypeClassesDetails);
+ target.add(container);
+ }
+ });
+
+ final ActionLinksPanel.Builder<Serializable> actionLinks = ActionLinksPanel.builder(pageRef);
+ actionLinks.setDisableIndicator(true);
+ actionLinks.addWithRoles(new ActionLink<Serializable>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
+ if (anyTypeClasses != null && anyTypeClasses.getModelObject() != null) {
+ modal.header(Model.of(anyTypeClasses.getModelObject().getKey()));
+ modal.setFormModel(anyTypeClasses.getModelObject());
+ modal.addSumbitButton();
+ modal.show(true);
+ target.add(modal.setContent(new AnyTypeClassModalPanel(modal, pageRef, false)));
+ }
+ }
+ }, ActionLink.ActionType.EDIT, StandardEntitlement.ANYTYPECLASS_UPDATE).addWithRoles(
+ new ActionLink<Serializable>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
+ try {
+ if (anyTypeClasses != null && anyTypeClasses.getModelObject() != null) {
+ SyncopeConsoleSession.get()
+ .getService(AnyTypeClassService.class).delete(anyTypeClasses.getModelObject().getKey());
+ anyTypeClasses.setModelObject(null);
+ anyTypeClasses.setChoices(SyncopeConsoleSession.get().getService(AnyTypeClassService.class).
+ list());
+ target.add(anyTypeClasses);
+ target.add(updateAnyTypeClassDetails(new AnyTypeClassTO(), true));
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ }
+ } catch (Exception e) {
+ LOG.error("While deleting AnyTypeClass", e);
+ error(getString(Constants.ERROR) + ": " + e.getMessage());
+ }
+ ((AbstractBasePage) pageRef.getPage()).getFeedbackPanel().refresh(target);
+ }
+ }, ActionLink.ActionType.DELETE, StandardEntitlement.ANYTYPECLASS_DELETE);
+
+ container.add(actionLinks.build("editRemove"));
+ }
+
+ private Panel updateAnyTypeClassDetails(final AnyTypeClassTO anyTypeClassTO, final boolean visible) {
+ anyTypeClassesDetails = new AnyTypeClassDetails("anyTypeClassesDetails", anyTypeClassTO, false);
+ anyTypeClassesDetails.setOutputMarkupId(true);
+ anyTypeClassesDetails.setOutputMarkupPlaceholderTag(true);
+ anyTypeClassesDetails.setVisible(visible);
+ anyTypeClassesDetails.setEnabled(false);
+ return anyTypeClassesDetails;
}
-
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypePanel.java
new file mode 100644
index 0000000..bbf73a7
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypePanel.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.syncope.client.console.panels;
+
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.common.lib.to.AnyTypeTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.markup.html.panel.Panel;
+
+public class AnyTypePanel extends Panel {
+
+ private static final long serialVersionUID = 3905038169553185171L;
+
+ public AnyTypePanel(final String id, final PageReference pageReference, final BaseModal<AnyTypeTO> modal) {
+ super(id);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaModalPanel.java
index 2f589cc..f822471 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaModalPanel.java
@@ -90,7 +90,7 @@ public class SchemaModalPanel extends AbstractModalPanel {
if (createFlag) {
try {
- Class<? extends AbstractSchemaTO> schemaTOClass = schemaType.getToClass();
+ final Class<? extends AbstractSchemaTO> schemaTOClass = schemaType.getToClass();
modal.setFormModel((AbstractSchemaTO) schemaTOClass.newInstance());
} catch (InstantiationException | IllegalAccessException ex) {
LOG.error("SchemaType not found", ex);
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java
index a449044..6792b9c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java
@@ -121,7 +121,6 @@ public class SchemasPanel extends Panel {
final Collapsible collapsible = new Collapsible("collapsePanel", buildTabList());
collapsible.setOutputMarkupId(true);
add(collapsible);
-
}
private List<ITab> buildTabList() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
index bb86e7f..33b04da 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxPalettePanel.java
@@ -18,11 +18,15 @@
*/
package org.apache.syncope.client.console.wicket.markup.html.form;
+import java.io.Serializable;
import java.util.Collection;
import java.util.List;
+import org.apache.wicket.Component;
import org.apache.wicket.extensions.markup.html.form.palette.Palette;
+import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.util.ListModel;
public class AjaxPalettePanel<T> extends AbstractFieldPanel<List<T>> {
@@ -31,30 +35,38 @@ public class AjaxPalettePanel<T> extends AbstractFieldPanel<List<T>> {
protected final Palette<T> palette;
- public AjaxPalettePanel(final String id, final IModel<List<T>> model, final ListModel<T> choices) {
- this(id, model, choices, false);
- }
-
- public AjaxPalettePanel(final String id, final IModel<List<T>> model, final ListModel<T> choices,
- final boolean allowOrder) {
-
- this(id, model, choices, new SelectChoiceRenderer<T>(), allowOrder, false);
- }
-
- public AjaxPalettePanel(final String id, final IModel<List<T>> model, final ListModel<T> choices,
- final IChoiceRenderer<T> renderer, final boolean allowOrder, final boolean allowMoveAll) {
+ public AjaxPalettePanel(final String id,
+ final IModel<List<T>> model, final ListModel<T> choices,
+ final IChoiceRenderer<T> renderer, final boolean allowOrder,
+ final boolean allowMoveAll, final String availableLabel, final String selectedLabel) {
super(id, id, model);
- this.palette = createPalette(model, choices, renderer, allowOrder, allowMoveAll);
+ this.palette = createPalette(model, choices, renderer, allowOrder, allowMoveAll, availableLabel, selectedLabel);
add(palette.setOutputMarkupId(true));
setOutputMarkupId(true);
}
- protected final Palette<T> createPalette(final IModel<List<T>> model, final ListModel<T> choices,
- final IChoiceRenderer<T> renderer, final boolean allowOrder, final boolean allowMoveAll) {
+ protected final Palette<T> createPalette(
+ final IModel<List<T>> model, final ListModel<T> choices,
+ final IChoiceRenderer<T> renderer,
+ final boolean allowOrder, final boolean allowMoveAll,
+ final String availableLabel, final String selectedLabel) {
+
+ return new NonI18nPalette<T>("paletteField", model, choices, renderer, 8, allowOrder, allowMoveAll) {
- return new NonI18nPalette<>("paletteField", model, choices, renderer, 8, allowOrder, allowMoveAll);
+ private static final long serialVersionUID = -3074655279011678437L;
+
+ @Override
+ protected Component newAvailableHeader(final String componentId) {
+ return new Label(componentId, new ResourceModel("palette.available", availableLabel));
+ }
+
+ @Override
+ protected Component newSelectedHeader(final String componentId) {
+ return new Label(componentId, new ResourceModel("palette.selected", selectedLabel));
+ }
+ };
}
@Override
@@ -66,4 +78,54 @@ public class AjaxPalettePanel<T> extends AbstractFieldPanel<List<T>> {
public Collection<T> getModelCollection() {
return palette.getModelCollection();
}
+
+ public static class Builder<T extends Serializable> {
+
+ private IChoiceRenderer<T> renderer;
+
+ private boolean allowOrder;
+
+ private boolean allowMoveAll;
+
+ private String selectedLabel;
+
+ private String availableLabel;
+
+ public Builder() {
+ this.allowMoveAll = false;
+ this.allowOrder = false;
+ this.renderer = new SelectChoiceRenderer<>();
+ }
+
+ public Builder<T> setAllowOrder(final boolean allowOrder) {
+ this.allowOrder = allowOrder;
+ return this;
+ }
+
+ public Builder<T> setAllowMoveAll(final boolean allowMoveAll) {
+ this.allowMoveAll = allowMoveAll;
+ return this;
+ }
+
+ public Builder<T> setSelectedLabel(final String selectedLabel) {
+ this.selectedLabel = selectedLabel;
+ return this;
+ }
+
+ public Builder<T> setAvailableLabel(final String availableLabel) {
+ this.availableLabel = availableLabel;
+ return this;
+ }
+
+ public Builder<T> setRenderer(final IChoiceRenderer<T> renderer) {
+ this.renderer = renderer;
+ return this;
+ }
+
+ public AjaxPalettePanel<T> build(
+ final String id, final IModel<List<T>> model, final ListModel<T> choices) {
+ return new AjaxPalettePanel<>(id, model,
+ choices, renderer, allowOrder, allowMoveAll, availableLabel, selectedLabel);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/NonI18nPalette.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/NonI18nPalette.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/NonI18nPalette.java
index 3a923d5..b705f59 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/NonI18nPalette.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/NonI18nPalette.java
@@ -19,6 +19,7 @@
package org.apache.syncope.client.console.wicket.markup.html.form;
import java.util.Collection;
+import org.apache.wicket.Component;
import org.apache.wicket.extensions.markup.html.form.palette.Palette;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.model.IModel;
@@ -40,4 +41,14 @@ public class NonI18nPalette<T> extends Palette<T> {
protected boolean localizeDisplayValues() {
return false;
}
+
+ @Override
+ protected Component newAvailableHeader(final String componentId) {
+ return super.newAvailableHeader(componentId);
+ }
+
+ @Override
+ protected Component newSelectedHeader(final String componentId) {
+ return super.newSelectedHeader(componentId);
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
index e63a70e..6e612b6 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AuxClasses.java
@@ -61,16 +61,17 @@ public class AuxClasses extends WizardStep {
? UserTO.class.cast(entityTO).getMemberships()
: AnyObjectTO.class.cast(entityTO).getMemberships();
- fragment.add(new AjaxPalettePanel<>(
- "groups",
- new ListModel<String>(CollectionUtils.collect(memberships,
+ fragment.add(new AjaxPalettePanel.Builder<String>().setAllowOrder(true)
+ .build(
+ "groups",
+ new ListModel<String>(CollectionUtils.collect(memberships,
new Transformer<MembershipTO, String>() {
- @Override
- public String transform(final MembershipTO input) {
- return String.format("[%d] %s", input.getRightKey(), input.getGroupName());
- }
- }, new ArrayList<String>())) {
+ @Override
+ public String transform(final MembershipTO input) {
+ return String.format("[%d] %s", input.getRightKey(), input.getGroupName());
+ }
+ }, new ArrayList<String>())) {
private static final long serialVersionUID = 1L;
@@ -94,38 +95,37 @@ public class AuxClasses extends WizardStep {
}
return new MembershipTO.Builder().left(entityTO.getType(), entityTO.getKey()).
- group(groupKey, groupName).build();
+ group(groupKey, groupName).build();
}
}, memberships);
}
},
- new ListModel<>(CollectionUtils.collect(groupRestClient.list(
- entityTO.getRealm(), -1, -1, new SortParam<>("name", true), null),
+ new ListModel<>(CollectionUtils.collect(groupRestClient.list(
+ entityTO.getRealm(), -1, -1, new SortParam<>("name", true), null),
new Transformer<GroupTO, String>() {
- @Override
- public String transform(final GroupTO input) {
- return String.format("[%d] %s", input.getKey(), input.getName());
- }
- }, new ArrayList<String>())),
- true).setOutputMarkupId(true));
+ @Override
+ public String transform(final GroupTO input) {
+ return String.format("[%d] %s", input.getKey(), input.getName());
+ }
+ }, new ArrayList<String>()))).setOutputMarkupId(true));
}
add(fragment);
final List<String> current = Arrays.asList(anyTypeClass);
- final List<String> choices = new ArrayList<String>();
+ final List<String> choices = new ArrayList<>();
for (AnyTypeClassTO aux : AnyTypeRestClient.getAllAnyTypeClass()) {
if (!current.contains(aux.getKey())) {
choices.add(aux.getKey());
}
}
- add(new AjaxPalettePanel<>(
- "auxClasses",
- new PropertyModel<List<String>>(entityTO, "auxClasses"),
- new ListModel<>(choices),
- true).setOutputMarkupId(true));
+ add(new AjaxPalettePanel.Builder<String>().
+ setAllowOrder(true)
+ .build("auxClasses",
+ new PropertyModel<List<String>>(entityTO, "auxClasses"),
+ new ListModel<>(choices)).setOutputMarkupId(true));
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
index 8f9a362..86ad35f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
@@ -37,30 +37,29 @@ public class Resources extends WizardStep {
public <T extends AnyTO> Resources(final T entityTO) {
this.setOutputMarkupId(true);
- add(new AjaxPalettePanel<>("resources",
+ add(new AjaxPalettePanel.Builder<String>().build("resources",
new PropertyModel<List<String>>(entityTO, "resources") {
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = 1L;
- @Override
- public List<String> getObject() {
- return new ArrayList<>(entityTO.getResources());
- }
+ @Override
+ public List<String> getObject() {
+ return new ArrayList<>(entityTO.getResources());
+ }
+
+ @Override
+ public void setObject(final List<String> object) {
+ entityTO.getResources().clear();
+ entityTO.getResources().addAll(object);
+ }
+ }, new ListModel<>(CollectionUtils.collect(
+ ResourceRestClient.getAll(),
+ new Transformer<ResourceTO, String>() {
@Override
- public void setObject(final List<String> object) {
- entityTO.getResources().clear();
- entityTO.getResources().addAll(object);
+ public String transform(final ResourceTO input) {
+ return input.getKey();
}
- },
- new ListModel<>(CollectionUtils.collect(
- ResourceRestClient.getAll(),
- new Transformer<ResourceTO, String>() {
-
- @Override
- public String transform(final ResourceTO input) {
- return input.getKey();
- }
- }, new ArrayList<String>()))).setOutputMarkupId(true));
+ }, new ArrayList<String>()))).setOutputMarkupId(true));
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
index 179783a..e5f500b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
@@ -38,16 +38,17 @@ public class Roles extends WizardStep {
public <T extends AnyTO> Roles(final UserTO entityTO) {
this.setOutputMarkupId(true);
- add(new AjaxPalettePanel<>("roles",
- new PropertyModel<List<String>>(entityTO, "roles"),
- new ListModel<>(CollectionUtils.collect(
+ add(new AjaxPalettePanel.Builder<String>()
+ .build("roles",
+ new PropertyModel<List<String>>(entityTO, "roles"),
+ new ListModel<>(CollectionUtils.collect(
RoleRestClient.getAll(),
new Transformer<RoleTO, String>() {
- @Override
- public String transform(final RoleTO input) {
- return input.getKey();
- }
- }, new ArrayList<String>()))).setOutputMarkupId(true));
+ @Override
+ public String transform(final RoleTO input) {
+ return input.getKey();
+ }
+ }, new ArrayList<String>()))).setOutputMarkupId(true));
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
index 755a846..243ee5f 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
@@ -116,7 +116,7 @@ under the License.
<li wicket:id="workflowLI"><a href="#" wicket:id="workflow"><i class="fa fa-circle-o"></i>Workflow</a></li>
<li><a href="#"><i class="fa fa-circle-o"></i>Logs</a></li>
<li><a href="#"><i class="fa fa-circle-o"></i>Layouts</a></li>
- <li wicket:id="schemasLI"><a href="#" wicket:id="schemas"><i class="fa fa-circle-o"></i><wicket:message key="types"/></a></li>
+ <li wicket:id="typesLI"><a href="#" wicket:id="types"><i class="fa fa-circle-o"></i><wicket:message key="types"/></a></li>
<li><a href="#"><i class="fa fa-circle-o"></i>Notifications</a></li>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas.html
deleted file mode 100644
index d16dd64..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you 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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:extend>
- <div class="wrapper">
- <div class="admin-content-page" wicket:id="content">
- <div class="box box-solid box-primary">
- <div class="box-header with-border">
- <h3 class="box-title">
- <span wicket:id="header"></span>
- </h3>
- <div class="box-tools pull-right">
- <ul class="nav navbar-nav actions">
- <li>
- <a wicket:message="title:createAnyTypeClass"><!-- <a wicket:id="createAnyTypeClassLink">-->
- <i class="glyphicon glyphicon-duplicate"></i>
- </a>
- </li>
- <li>
- <a wicket:message="title:createSchema" wicket:id="createSchemaLink">
- <i class="glyphicon glyphicon-list-alt"></i>
- </a>
- </li>
- </ul>
- </div>
- </div>
- <div class="box-body">
- <div class="realms">
- <div wicket:id="tabbedPanel"></div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div wicket:id="modal"></div>
- </wicket:extend>
-</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas.properties
deleted file mode 100644
index 9defe37..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-createSchema=Create new schema
-createAnyTypeClass=Create new AnyTypeClass
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas_it.properties
deleted file mode 100644
index e9994ec..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas_it.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-createSchema=Crea un nuovo schema
-createAnyTypeClass=Crea un nuovo AnyTypeClass
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas_pt_BR.properties
deleted file mode 100644
index 1d42eb5..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Schemas_pt_BR.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-createSchema=Cria um novo schema
-createAnyTypeClass=Cria um novo AnyTypeClass
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.html
new file mode 100644
index 0000000..3dc2364
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:extend>
+ <div class="wrapper">
+ <div class="admin-content-page" wicket:id="content">
+ <div class="box box-solid box-primary">
+ <div class="box-header with-border">
+ <h3 class="box-title">
+ <span wicket:id="header"></span>
+ </h3>
+ <div class="box-tools pull-right">
+ <ul class="nav navbar-nav actions">
+ <li>
+ <a wicket:message="title:createAnyTypeClass" wicket:id="createAnyTypeClass">
+ <i class="glyphicon glyphicon-duplicate"></i>
+ </a>
+ </li>
+ <li>
+ <a wicket:message="title:createSchema" wicket:id="createSchema">
+ <i class="glyphicon glyphicon-list-alt"></i>
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <div class="box-body">
+ <div class="realms">
+ <div wicket:id="tabbedPanel"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div wicket:id="schemaModal"></div>
+ <div wicket:id="anyTypeClassModal"></div>
+ <div wicket:id="anyTypeModal"></div>
+ </wicket:extend>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.properties
new file mode 100644
index 0000000..9defe37
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+createSchema=Create new schema
+createAnyTypeClass=Create new AnyTypeClass
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types_it.properties
new file mode 100644
index 0000000..e9994ec
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types_it.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+createSchema=Crea un nuovo schema
+createAnyTypeClass=Crea un nuovo AnyTypeClass
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types_pt_BR.properties
new file mode 100644
index 0000000..1d42eb5
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types_pt_BR.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+createSchema=Cria um novo schema
+createAnyTypeClass=Cria um novo AnyTypeClass
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails.html
new file mode 100644
index 0000000..cfa9d7e
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <span wicket:id="container">
+ <div class="box">
+ <div class="box-header with-border">
+ <h3 class="box-title"><wicket:message key="plainSchemas"/></h3>
+ </div>
+ <div class="box-body">
+ <div id="group-forum">
+ <span wicket:id="plainSchemas">[plainSchemas]</span>
+ </div>
+ </div>
+ </div>
+ <div class="box">
+ <div class="box-header with-border">
+ <h3 class="box-title"><wicket:message key="derSchemas"/></h3>
+ </div>
+ <div class="box-body">
+ <div id="group-forum">
+ <span wicket:id="derSchemas">[derSchemas]</span>
+ </div>
+ </div>
+ </div>
+ <div class="box">
+ <div class="box-header with-border">
+ <h3 class="box-title"><wicket:message key="virSchemas"/></h3>
+ </div>
+ <div class="box-body">
+ <div id="group-forum">
+ <span wicket:id="virSchemas">[virSchemas]</span>
+ </div>
+ </div>
+ </div>
+ </span>
+ </wicket:panel>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails.properties
new file mode 100644
index 0000000..835d123
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails.properties
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+
+plainSchemas=Plain Schemas
+derSchemas=Derived Schemas
+virSchemas=Virtual Schemas
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails_it.properties
new file mode 100644
index 0000000..835d123
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails_it.properties
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+
+plainSchemas=Plain Schemas
+derSchemas=Derived Schemas
+virSchemas=Virtual Schemas
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails_pt_BR.properties
new file mode 100644
index 0000000..835d123
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetails_pt_BR.properties
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+
+plainSchemas=Plain Schemas
+derSchemas=Derived Schemas
+virSchemas=Virtual Schemas
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassModalPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassModalPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassModalPanel.html
new file mode 100644
index 0000000..ea82eb3
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassModalPanel.html
@@ -0,0 +1,32 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div class="form-group">
+ <form wicket:id="form">
+ <div class="form-group">
+ <span wicket:id="key">[key]</span>
+ </div>
+ <div class="form-group">
+ <span wicket:id="details">[details]</span>
+ </div>
+ </form>
+ </div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.html
new file mode 100644
index 0000000..0fec0c7
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
+ <body>
+ <wicket:panel>
+ <span wicket:id="container">
+ <div class="col-md-4">
+ <div class="box">
+ <div class="box-header with-border">
+ <h3 class="box-title"><wicket:message key="anyTypeClasses"/></h3>
+ </div>
+ <div class="box-body">
+ <div class="row">
+ <div class="col-md-8">
+ <div class="form-group">
+ <label><wicket:message key="select"/></label>
+ <select wicket:id="anyTypeClasses" class="form-control"></select>
+ </div>
+ </div>
+ <div class="col-md-1" style="padding-top: 20px">
+ <div class="form-group">
+ <div id="actionButtons" style="padding-top: 5px;">
+ <span wicket:id="editRemove"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-8" style="float:right">
+ <span wicket:id="anyTypeClassesDetails">[anyTypeClassesDetails]</span>
+ </div>
+ </span>
+ </wicket:panel>
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.properties
new file mode 100644
index 0000000..6438ab9
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.properties
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+select=Select
+
+anyTypeClasses=AnyTypeClasses
http://git-wip-us.apache.org/repos/asf/syncope/blob/e6e2a471/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel_it.properties
new file mode 100644
index 0000000..8b1b519
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassesPanel_it.properties
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+select=Seleziona
+
+anyTypeClasses=AnyTypeClasses