You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2015/02/05 17:00:57 UTC

[26/52] syncope git commit: [SYNCOPE-620] Console (JAR) in, now time for console-reference

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryCertPreviewer.java
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryCertPreviewer.java b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryCertPreviewer.java
new file mode 100644
index 0000000..c5b9164
--- /dev/null
+++ b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryCertPreviewer.java
@@ -0,0 +1,70 @@
+/*
+ * 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.wicket.markup.html.form.preview;
+
+import java.io.ByteArrayInputStream;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import javax.naming.ldap.LdapName;
+import javax.naming.ldap.Rdn;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.preview.BinaryPreview;
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.io.IOUtils;
+
+@BinaryPreview(mimeTypes = { "application/x-x509-ca-cert", "application/x-x509-user-cert", "application/pkix-cert" })
+public class BinaryCertPreviewer extends AbstractBinaryPreviewer {
+
+    private static final long serialVersionUID = -5843835939538055110L;
+
+    public BinaryCertPreviewer(final String id, final String mimeType, final byte[] uploadedBytes) {
+        super(id, mimeType, uploadedBytes);
+    }
+
+    @Override
+    public Component preview() {
+        final Label commonNameLabel = new Label("certCommonName", new Model<String>());
+        final ByteArrayInputStream certificateStream = new ByteArrayInputStream(uploadedBytes);
+        try {
+            final X509Certificate certificate = (X509Certificate) CertificateFactory.getInstance("X.509").
+                    generateCertificate(certificateStream);
+
+            final StringBuilder commonNameBuilder = new StringBuilder("cn=");
+
+            final LdapName ldapName = new LdapName(certificate.getIssuerDN().getName());
+
+            for (Rdn rdn : ldapName.getRdns()) {
+                if ("CN".equalsIgnoreCase(rdn.getType())) {
+                    commonNameBuilder.append(rdn.getValue() == null
+                            ? StringUtils.EMPTY
+                            : rdn.getValue().toString());
+                }
+            }
+            commonNameLabel.setDefaultModelObject(commonNameBuilder.toString());
+        } catch (Exception e) {
+            LOG.error("Error evaluating certificate file", e);
+            throw new IllegalArgumentException("Error evaluating certificate file", e);
+        } finally {
+            IOUtils.closeQuietly(certificateStream);
+        }
+        return this.add(commonNameLabel);
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryImagePreviewer.java
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryImagePreviewer.java b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryImagePreviewer.java
new file mode 100644
index 0000000..6ab90a7
--- /dev/null
+++ b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/preview/BinaryImagePreviewer.java
@@ -0,0 +1,51 @@
+/*
+ * 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.wicket.markup.html.form.preview;
+
+import org.apache.syncope.client.console.preview.BinaryPreview;
+import org.apache.wicket.Component;
+import org.apache.wicket.extensions.markup.html.image.resource.ThumbnailImageResource;
+import org.apache.wicket.markup.html.image.NonCachingImage;
+import org.apache.wicket.request.resource.DynamicImageResource;
+import org.apache.wicket.request.resource.IResource;
+
+@BinaryPreview(mimeTypes = { "image/jpeg", "image/png", "image/gif", "image/bmp", "image/x-png", "image/vnd.wap.wbmp" })
+public class BinaryImagePreviewer extends AbstractBinaryPreviewer {
+
+    private static final long serialVersionUID = 3338812359368457349L;
+
+    private static final int IMG_SIZE = 230;
+
+    public BinaryImagePreviewer(final String id, final String mimeType, final byte[] uploadedBytes) {
+        super(id, mimeType, uploadedBytes);
+    }
+
+    @Override
+    public Component preview() {
+        return this.add(new NonCachingImage("previewImage", new ThumbnailImageResource(new DynamicImageResource() {
+
+            private static final long serialVersionUID = 923201517955737928L;
+
+            @Override
+            protected byte[] getImageData(final IResource.Attributes attributes) {
+                return uploadedBytes;
+            }
+        }, IMG_SIZE)));
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/link/VeilPopupSettings.java
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/link/VeilPopupSettings.java b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/link/VeilPopupSettings.java
new file mode 100644
index 0000000..51c8ec5
--- /dev/null
+++ b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/link/VeilPopupSettings.java
@@ -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.
+ */
+package org.apache.syncope.client.console.wicket.markup.html.link;
+
+import org.apache.wicket.markup.html.link.PopupSettings;
+
+public class VeilPopupSettings extends PopupSettings {
+
+    private static final long serialVersionUID = -2727046117490858226L;
+
+    @Override
+    public String getPopupJavaScript() {
+        return "document.getElementById('veil').style.display = 'block';" + super.getPopupJavaScript();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/AltListView.java
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/AltListView.java b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/AltListView.java
new file mode 100644
index 0000000..5a491ae
--- /dev/null
+++ b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/AltListView.java
@@ -0,0 +1,59 @@
+/*
+ * 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.wicket.markup.html.list;
+
+import java.util.List;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.IModel;
+
+public abstract class AltListView<T> extends ListView<T> {
+
+    private static final long serialVersionUID = 251378224847354710L;
+
+    public AltListView(final String id) {
+        super(id);
+    }
+
+    public AltListView(final String id, final IModel<? extends List<? extends T>> model) {
+        super(id, model);
+    }
+
+    public AltListView(final String id, final List<? extends T> list) {
+        super(id, list);
+    }
+
+    @Override
+    protected ListItem<T> newItem(final int index, final IModel<T> itemModel) {
+        return new ListItem<T>(index, itemModel) {
+
+            private static final long serialVersionUID = 5473483270932376694L;
+
+            @Override
+            protected void onComponentTag(final ComponentTag tag) {
+                if (index % 2 == 0) {
+                    tag.append("class", "alt", " ");
+                }
+
+                super.onComponentTag(tag);
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java
new file mode 100644
index 0000000..30775f5
--- /dev/null
+++ b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java
@@ -0,0 +1,152 @@
+/*
+ * 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.wicket.markup.html.list;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Set;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxPasswordFieldPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.SpinnerFieldPanel;
+import org.apache.syncope.common.lib.types.ConnConfProperty;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.util.ClassUtils;
+
+public class ConnConfPropertyListView extends AltListView<ConnConfProperty> {
+
+    private static final long serialVersionUID = -5239334900329150316L;
+
+    private static final Logger LOG = LoggerFactory.getLogger(ConnConfPropertyListView.class);
+
+    private final boolean withOverridable;
+
+    private final Set<ConnConfProperty> configuration;
+
+    public ConnConfPropertyListView(final String id, final IModel<? extends List<? extends ConnConfProperty>> model,
+            final boolean withOverridable, final Set<ConnConfProperty> configuration) {
+
+        super(id, model);
+        this.configuration = configuration;
+        this.withOverridable = withOverridable;
+    }
+
+    @Override
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    protected void populateItem(final ListItem<ConnConfProperty> item) {
+        final ConnConfProperty property = item.getModelObject();
+
+        final Label label = new Label("connPropAttrSchema",
+                StringUtils.isBlank(property.getSchema().getDisplayName())
+                        ? property.getSchema().getName()
+                        : property.getSchema().getDisplayName());
+        item.add(label);
+
+        FieldPanel<? extends Serializable> field;
+        boolean required = false;
+        boolean isArray = false;
+
+        if (property.getSchema().isConfidential()
+                || Constants.GUARDED_STRING.equalsIgnoreCase(property.getSchema().getType())
+                || Constants.GUARDED_BYTE_ARRAY.equalsIgnoreCase(property.getSchema().getType())) {
+
+            field = new AjaxPasswordFieldPanel("panel",
+                    label.getDefaultModelObjectAsString(), new Model<String>());
+            ((PasswordTextField) field.getField()).setResetPassword(false);
+
+            required = property.getSchema().isRequired();
+        } else {
+            Class<?> propertySchemaClass;
+            try {
+                propertySchemaClass =
+                        ClassUtils.forName(property.getSchema().getType(), ClassUtils.getDefaultClassLoader());
+                if (ClassUtils.isPrimitiveOrWrapper(propertySchemaClass)) {
+                    propertySchemaClass = org.apache.commons.lang3.ClassUtils.primitiveToWrapper(propertySchemaClass);
+                }
+            } catch (Exception e) {
+                LOG.error("Error parsing attribute type", e);
+                propertySchemaClass = String.class;
+            }
+
+            if (ClassUtils.isAssignable(Number.class, propertySchemaClass)) {
+                @SuppressWarnings("unchecked")
+                final Class<Number> numberClass = (Class<Number>) propertySchemaClass;
+                field = new SpinnerFieldPanel<Number>("panel",
+                        label.getDefaultModelObjectAsString(), numberClass, new Model<Number>(), null, null);
+
+                required = property.getSchema().isRequired();
+            } else if (ClassUtils.isAssignable(Boolean.class, propertySchemaClass)) {
+                field = new AjaxCheckBoxPanel("panel",
+                        label.getDefaultModelObjectAsString(), new Model<Boolean>());
+            } else {
+                field = new AjaxTextFieldPanel("panel",
+                        label.getDefaultModelObjectAsString(), new Model<String>());
+
+                required = property.getSchema().isRequired();
+            }
+
+            if (propertySchemaClass.isArray()) {
+                isArray = true;
+            }
+        }
+
+        field.setTitle(property.getSchema().getHelpMessage());
+
+        if (required) {
+            field.addRequiredLabel();
+        }
+
+        if (isArray) {
+            if (property.getValues().isEmpty()) {
+                property.getValues().add(null);
+            }
+
+            final MultiFieldPanel multiFieldPanel = new MultiFieldPanel("panel",
+                    new PropertyModel<List<String>>(property, "values"), field);
+            item.add(multiFieldPanel);
+        } else {
+            setNewFieldModel(field, property.getValues());
+            item.add(field);
+        }
+
+        if (withOverridable) {
+            item.add(new AjaxCheckBoxPanel("connPropAttrOverridable",
+                    "connPropAttrOverridable", new PropertyModel<Boolean>(property, "overridable")));
+        }
+
+        configuration.add(property);
+    }
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    private void setNewFieldModel(final FieldPanel field, final List<Object> values) {
+        field.setNewModel(values);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/DefaultMutableTreeNodeExpansion.java
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/DefaultMutableTreeNodeExpansion.java b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/DefaultMutableTreeNodeExpansion.java
new file mode 100644
index 0000000..50db23c
--- /dev/null
+++ b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/DefaultMutableTreeNodeExpansion.java
@@ -0,0 +1,160 @@
+/*
+ * 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.wicket.markup.html.tree;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import javax.swing.tree.DefaultMutableTreeNode;
+import org.apache.syncope.common.lib.to.RoleTO;
+import org.apache.wicket.MetaDataKey;
+import org.apache.wicket.Session;
+
+public class DefaultMutableTreeNodeExpansion implements Set<DefaultMutableTreeNode>, Serializable {
+
+    private static final long serialVersionUID = -2864060875425661224L;
+
+    private static MetaDataKey<DefaultMutableTreeNodeExpansion> KEY =
+            new MetaDataKey<DefaultMutableTreeNodeExpansion>() {
+
+                private static final long serialVersionUID = 3109256773218160485L;
+
+            };
+
+    private Set<Long> ids = new HashSet<Long>();
+
+    private boolean inverse;
+
+    public void expandAll() {
+        ids.clear();
+
+        inverse = true;
+    }
+
+    public void collapseAll() {
+        ids.clear();
+
+        inverse = false;
+    }
+
+    @Override
+    public boolean add(final DefaultMutableTreeNode node) {
+        RoleTO roleTO = (RoleTO) node.getUserObject();
+        boolean isAdded;
+        if (inverse) {
+            isAdded = ids.remove(roleTO.getKey());
+        } else {
+            isAdded = ids.add(roleTO.getKey());
+        }
+        return isAdded;
+    }
+
+    @Override
+    public boolean remove(final Object object) {
+        DefaultMutableTreeNode node = (DefaultMutableTreeNode) object;
+        RoleTO roleTO = (RoleTO) node.getUserObject();
+        boolean isRemoved;
+        if (inverse) {
+            isRemoved = ids.add(roleTO.getKey());
+        } else {
+            isRemoved = ids.remove(roleTO.getKey());
+        }
+        return isRemoved;
+    }
+
+    @Override
+    public boolean contains(final Object object) {
+        DefaultMutableTreeNode node = (DefaultMutableTreeNode) object;
+        RoleTO roleTO = (RoleTO) node.getUserObject();
+        boolean isContained;
+        if (inverse) {
+            isContained = !ids.contains(roleTO.getKey());
+        } else {
+            isContained = ids.contains(roleTO.getKey());
+        }
+        return isContained;
+    }
+
+    @Override
+    public void clear() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int size() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isEmpty() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public <A> A[] toArray(final A[] a) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Iterator<DefaultMutableTreeNode> iterator() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Object[] toArray() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean containsAll(Collection<?> c) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean addAll(Collection<? extends DefaultMutableTreeNode> c) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean retainAll(Collection<?> c) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean removeAll(Collection<?> c) {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Get the expansion for the session.
+     *
+     * @return expansion
+     */
+    public static DefaultMutableTreeNodeExpansion get() {
+        DefaultMutableTreeNodeExpansion expansion = Session.get().getMetaData(KEY);
+        if (expansion == null) {
+            expansion = new DefaultMutableTreeNodeExpansion();
+
+            Session.get().setMetaData(KEY, expansion);
+        }
+        return expansion;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/DefaultMutableTreeNodeExpansionModel.java
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/DefaultMutableTreeNodeExpansionModel.java b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/DefaultMutableTreeNodeExpansionModel.java
new file mode 100644
index 0000000..1b342bd
--- /dev/null
+++ b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/DefaultMutableTreeNodeExpansionModel.java
@@ -0,0 +1,36 @@
+/*
+ * 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.wicket.markup.html.tree;
+
+import java.util.Set;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import org.apache.wicket.model.AbstractReadOnlyModel;
+
+public class DefaultMutableTreeNodeExpansionModel
+        extends AbstractReadOnlyModel<Set<DefaultMutableTreeNode>> {
+
+    private static final long serialVersionUID = -3407581132184748054L;
+
+    @Override
+    public Set<DefaultMutableTreeNode> getObject() {
+        return DefaultMutableTreeNodeExpansion.get();
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/TreeRolePanel.java
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/TreeRolePanel.java b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/TreeRolePanel.java
new file mode 100644
index 0000000..b0be4e9
--- /dev/null
+++ b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/TreeRolePanel.java
@@ -0,0 +1,121 @@
+/*
+ * 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.wicket.markup.html.tree;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+import org.apache.syncope.client.console.commons.RoleTreeBuilder;
+import org.apache.syncope.client.console.commons.XMLRolesReader;
+import org.apache.syncope.client.console.pages.Roles.TreeNodeClickUpdate;
+import org.apache.syncope.common.lib.to.RoleTO;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.event.IEvent;
+import org.apache.wicket.extensions.markup.html.repeater.tree.DefaultNestedTree;
+import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
+import org.apache.wicket.extensions.markup.html.repeater.tree.NestedTree;
+import org.apache.wicket.extensions.markup.html.repeater.tree.content.Folder;
+import org.apache.wicket.extensions.markup.html.repeater.tree.theme.WindowsTheme;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.spring.injection.annot.SpringBean;
+
+public class TreeRolePanel extends Panel {
+
+    private static final long serialVersionUID = 1762003213871836869L;
+
+    @SpringBean
+    private RoleTreeBuilder roleTreeBuilder;
+
+    @SpringBean
+    private XMLRolesReader xmlRolesReader;
+
+    private WebMarkupContainer treeContainer;
+
+    private NestedTree<DefaultMutableTreeNode> tree;
+
+    public TreeRolePanel(final String id) {
+        super(id);
+
+        treeContainer = new WebMarkupContainer("treeContainer");
+        treeContainer.setOutputMarkupId(true);
+        add(treeContainer);
+        updateTree();
+    }
+
+    private void updateTree() {
+        final ITreeProvider<DefaultMutableTreeNode> treeProvider = new TreeRoleProvider(roleTreeBuilder, true);
+        final DefaultMutableTreeNodeExpansionModel treeModel = new DefaultMutableTreeNodeExpansionModel();
+
+        tree = new DefaultNestedTree<DefaultMutableTreeNode>("treeTable", treeProvider, treeModel) {
+
+            private static final long serialVersionUID = 7137658050662575546L;
+
+            @Override
+            protected Component newContentComponent(final String id, final IModel<DefaultMutableTreeNode> node) {
+                final DefaultMutableTreeNode treeNode = node.getObject();
+                final RoleTO roleTO = (RoleTO) treeNode.getUserObject();
+
+                return new Folder<DefaultMutableTreeNode>(id, TreeRolePanel.this.tree, node) {
+
+                    private static final long serialVersionUID = 9046323319920426493L;
+
+                    @Override
+                    protected boolean isClickable() {
+                        return true;
+                    }
+
+                    @Override
+                    protected IModel<?> newLabelModel(final IModel<DefaultMutableTreeNode> model) {
+                        return new Model<>(roleTO.getDisplayName());
+                    }
+
+                    @Override
+                    protected void onClick(final AjaxRequestTarget target) {
+                        super.onClick(target);
+
+                        send(getPage(), Broadcast.BREADTH, new TreeNodeClickUpdate(target, roleTO.getKey()));
+                    }
+                };
+            }
+        };
+        tree.add(new WindowsTheme());
+        tree.setOutputMarkupId(true);
+
+        DefaultMutableTreeNodeExpansion.get().expandAll();
+
+        MetaDataRoleAuthorizationStrategy.authorize(tree, ENABLE, xmlRolesReader.getEntitlement("Roles", "read"));
+
+        treeContainer.addOrReplace(tree);
+    }
+
+    @Override
+    public void onEvent(final IEvent<?> event) {
+        super.onEvent(event);
+
+        if (event.getPayload() instanceof TreeNodeClickUpdate) {
+            final TreeNodeClickUpdate update = (TreeNodeClickUpdate) event.getPayload();
+            updateTree();
+            update.getTarget().add(treeContainer);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/TreeRoleProvider.java
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/TreeRoleProvider.java b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/TreeRoleProvider.java
new file mode 100644
index 0000000..6fbe9a4
--- /dev/null
+++ b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/tree/TreeRoleProvider.java
@@ -0,0 +1,43 @@
+/*
+ * 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.wicket.markup.html.tree;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+import org.apache.syncope.client.console.commons.RoleTreeBuilder;
+import org.apache.wicket.extensions.markup.html.repeater.util.TreeModelProvider;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+public class TreeRoleProvider extends TreeModelProvider<DefaultMutableTreeNode> {
+
+    private static final long serialVersionUID = -7741964777100892335L;
+
+    public TreeRoleProvider(final RoleTreeBuilder roleTreeBuilder) {
+        this(roleTreeBuilder, false);
+    }
+
+    public TreeRoleProvider(final RoleTreeBuilder roleTreeBuilder, final boolean rootVisible) {
+        super(roleTreeBuilder.build(), rootVisible);
+    }
+
+    @Override
+    public IModel<DefaultMutableTreeNode> model(final DefaultMutableTreeNode treeNode) {
+        return new Model<DefaultMutableTreeNode>(treeNode);
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/bulk.css
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/bulk.css b/syncope620/client/console/src/main/resources/META-INF/resources/css/bulk.css
new file mode 100644
index 0000000..1f0e621
--- /dev/null
+++ b/syncope620/client/console/src/main/resources/META-INF/resources/css/bulk.css
@@ -0,0 +1,97 @@
+/*
+ * 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.
+ */
+th.checkGroupColumn{
+  width: 20px;
+}
+
+td.checkGroupColumn{
+  text-align: center;
+}
+
+div.bulkAction{
+  display:inline-table;
+}
+
+div.bulkActionCell{
+  display: table-cell;
+  vertical-align: middle;
+  text-align: center;
+  width: 40px;
+  padding-left: 7px;
+}
+
+.pageRowElement{
+  display: inline-table;
+  width: 95%;
+}
+
+div#selectedObjects{
+  text-align: center;
+  margin-top: 10px;
+}
+
+div#selectedObjects table {
+  margin: 1em 0;
+  border-collapse: collapse;
+}
+
+div#selectedObjects table td, div#selectedObjects table th {
+  border: 1px solid #eee;
+  padding: .6em 10px;
+}
+
+div#actionRow{
+  height: 30px;
+  overflow: hidden;
+  text-align: left;
+  margin-top: 10px;
+}
+
+div#actions{
+  display: inline-table;
+  height: 30px;
+  overflow: hidden;
+}
+
+div#actions div#actionPanel{
+  display: table-cell;
+  height: 30px;
+  overflow: hidden;
+  cursor: auto;
+  background: none;
+  padding: 0px 10px;
+  vertical-align: middle;
+}
+
+div#actions div#cancelBtmForm{
+  display: table-cell;
+  height: 30px;
+  overflow: hidden;
+  vertical-align: middle;
+  padding-left: 3px;
+}
+
+div#actions div#cancelBtmForm form{
+  padding: 0px;
+  margin: 0px;
+}
+
+div#actions div#cancelBtmForm form input#cancel{
+  padding: 0.6em 1em;
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/fieldstyle.css
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/fieldstyle.css b/syncope620/client/console/src/main/resources/META-INF/resources/css/fieldstyle.css
new file mode 100644
index 0000000..23ef109
--- /dev/null
+++ b/syncope620/client/console/src/main/resources/META-INF/resources/css/fieldstyle.css
@@ -0,0 +1,191 @@
+/*
+ * 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.
+ */
+.drop_button{
+  vertical-align: middle;
+}
+
+.add_button{
+  vertical-align: middle;
+  margin-left: 6px;
+}
+
+.date_size{
+  width: 90px;
+}
+
+.long_dynamicsize{
+  width: 80%;
+}
+
+.medium_dynamicsize{
+  width: 45%;
+}
+
+.short_dynamicsize{
+  width: 35%;
+}
+
+.long_fixedsize{
+  width: 500px;
+}
+
+.medium_fixedsize{
+  width: 300px;
+}
+
+.short_fixedsize{
+  width: 150px;
+}
+
+.veryshort_fixedsize{
+  width: 70px;
+}
+
+.all_dynamicsize{
+  width: 100%;
+}
+
+div#formtable {
+  display: table;
+  width: 100%;
+}
+
+div#formtable > span:first-of-type {
+  display: table-row-group;
+  width: 100%;
+}
+
+div.tablerow {
+  display: inline-table;
+  padding: 5px;
+  width: 99%;
+}
+
+div.tablerow.connectorProp {
+  height:22px;
+  vertical-align: middle; 
+  font-size: 12px;
+}
+
+div.tablecolumn_connPropAttr {
+  display: table-cell;
+  vertical-align: middle; 
+}
+
+div.tablerow2 {
+  display: inline-table;
+  padding: 5px 0px 5px 0px;
+  width: 99%;
+}
+
+div.alt {
+  background: #eff3ea;
+}
+
+div.tablecolumn_label{
+  display: table-cell;
+  font-size: 12px;
+  vertical-align: middle;
+  font-family: Verdana,Tahoma,sans-serif;
+  width: 30%;
+}
+
+div.tablecolumn_field{
+  display: table-cell;
+  vertical-align: middle;
+  font-family: Verdana,Tahoma,sans-serif;
+  width: 70%;
+}
+
+div.tablecolumn_check{
+  display: table-cell;
+  margin-right: 5px;
+  margin-left: 2px;
+  vertical-align: middle;
+}
+
+div.tablecolumn2_label{
+  display: table-cell;
+  font-size: 12px;
+  vertical-align: middle;
+  font-family: Verdana,Tahoma,sans-serif;
+  padding-left: 5px;
+  width: 15%;
+}
+
+div.tablecolumn2_field{
+  display: table-cell;
+  vertical-align: middle;
+  font-family: Verdana,Tahoma,sans-serif;
+  width: 35%;
+}
+
+.ui-tabs .ui-tabs-panel {
+  background: none repeat scroll 0 0 #FFFFFF;
+  border-width: 0;
+  display: block;
+  overflow: auto;
+  padding: 1em 1.4em;
+}
+
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button {
+  font-family: Verdana,Arial,sans-serif;
+  font-size: 12px;
+  padding: 2px 4px;
+}
+
+.ui-widget-header { 
+  border: 1px solid #aaaaaa
+    /*{borderColorHeader}*/; 
+  background: #cccccc
+    /*{bgColorHeader}*/ 
+    url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)
+    /*{bgImgUrlHeader}*/ 
+    50%/*{bgHeaderXPos}*/ 
+    50%/*{bgHeaderYPos}*/ 
+    repeat-x/*{bgHeaderRepeat}*/; 
+  color: #222222/*{fcHeader}*/; 
+  font-weight: bold;
+  padding: 7px 15px;
+}
+
+.ui-button { 
+  display: inline-block; 
+  position: relative; 
+  margin-right: .1em; 
+  cursor: pointer; 
+  text-align: center; 
+  zoom: 1; 
+  overflow: visible; 
+  padding: 7px 15px;
+}
+
+.ui-spinner-button {
+  cursor: default;
+  display: block;
+  font-size: 0.5em;
+  height: 50%;
+  margin: 0;
+  overflow: hidden;
+  padding: 0;
+  position: absolute;
+  right: 0;
+  text-align: center;
+  width: 16px;
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_diagonals-thick_20_666666_40x40.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_diagonals-thick_20_666666_40x40.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_diagonals-thick_20_666666_40x40.png
new file mode 100644
index 0000000..64ece57
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_diagonals-thick_20_666666_40x40.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_flat_0_aaaaaa_40x100.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_flat_0_aaaaaa_40x100.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000..fc9ef06
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_flat_0_aaaaaa_40x100.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_flat_0_aaaaaa_40x100_greennotused.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_flat_0_aaaaaa_40x100_greennotused.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_flat_0_aaaaaa_40x100_greennotused.png
new file mode 100644
index 0000000..b3d1999
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_flat_0_aaaaaa_40x100_greennotused.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_55_fbf9ee_1x400.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_55_fbf9ee_1x400.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 0000000..ad3d634
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_55_fbf9ee_1x400.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_65_ffffff_1x400.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_65_ffffff_1x400.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000..42ccba2
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_65_ffffff_1x400.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_75_dadada_1x400.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_75_dadada_1x400.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 0000000..5a46b47
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_75_dadada_1x400.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_75_e6e6e6_1x400.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_75_e6e6e6_1x400.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 0000000..86c2baa
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_75_e6e6e6_1x400.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_95_fef1ec_1x400.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_95_fef1ec_1x400.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 0000000..4443fdc
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_glass_95_fef1ec_1x400.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 0000000..5749fc4
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100_greynotused.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100_greynotused.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100_greynotused.png
new file mode 100644
index 0000000..7c9fa6c
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100_greynotused.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100_red.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100_red.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100_red.png
new file mode 100644
index 0000000..4632529
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-bg_highlight-soft_75_cccccc_1x100_red.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_222222_256x240.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_222222_256x240.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000..ee039dc
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_222222_256x240.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_2e83ff_256x240.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_2e83ff_256x240.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000..45e8928
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_2e83ff_256x240.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_454545_256x240.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_454545_256x240.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000..7ec70d1
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_454545_256x240.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_888888_256x240.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_888888_256x240.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_888888_256x240.png
new file mode 100644
index 0000000..5ba708c
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_888888_256x240.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_cd0a0a_256x240.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_cd0a0a_256x240.png b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000..7930a55
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/css/images/ui-icons_cd0a0a_256x240.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/css/style.css
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/css/style.css b/syncope620/client/console/src/main/resources/META-INF/resources/css/style.css
new file mode 100644
index 0000000..54d8f50
--- /dev/null
+++ b/syncope620/client/console/src/main/resources/META-INF/resources/css/style.css
@@ -0,0 +1,550 @@
+/*
+ * 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.
+ */
+body {
+  margin: 0px;
+  padding: 0px;
+  font-family: Verdana, Tahoma, sans-serif;
+  color: #333;
+  font-size: 62.5%;
+}
+
+/* id */
+#tabs {
+  margin: 0px 5px;
+  margin-top: 5px;
+}
+#roletabs {
+  margin: 0px 5px;
+  margin-top: 5px;
+}
+
+#tabs div {
+  /*background-color: #FFF;*/
+}
+
+#logo {
+  margin-top: 10px;
+  margin-bottom: 6px;
+}
+
+#splash {
+  background: url(../img/sf_testa.png) top repeat-x #B9CFB3;
+  width: 400px;
+  margin-left: auto;
+  margin-right: auto;
+  margin-top: 100px;
+  border: 1px solid #463;
+}
+
+#splash a {
+  color: #463;
+  text-decoration: none;
+  font-size: 14px;
+}
+
+a img {
+  border: none;
+}
+
+#splash h2 {
+  color: #FFF;
+  margin: 0px;
+  margin-top: 8px;
+  margin-bottom: 20px;
+  font-size: 14px;
+  text-align: center;
+  font-weight: normal;
+}
+
+#splash form {
+  margin: 6px auto;
+  width: 300px;
+  text-align: center;
+}
+
+#splash form label {
+  margin-right: 5px;
+  display: block;
+}
+
+#splash form label.password {
+}
+
+#splash form input {
+  margin-bottom: 15px;
+}
+
+#splash p {
+  margin: 6px 16px;
+  border-top: 1px solid #463;
+  text-align: center;
+  padding-top: 8px;
+}
+
+#splash ul {
+  height: 320px;
+  margin-left: 37px;
+  padding-left: 28px;
+  margin-top: 25px;
+}
+
+#splash ul li {
+  float: left;
+  width: 90px;
+  text-align: center;
+  list-style: none;
+  margin: 0px;
+}
+
+input[disabled] {
+  background-color: #ddd;
+  background-image: none;
+}
+
+select[disabled] {
+  background-color: #ddd;
+  background-image: none;
+}
+
+#loginFeedbackDiv {
+  width: 100%;
+}
+
+#loginFeedbackDiv ul {
+  list-style:none outside none;
+  margin:0;
+  text-align:center;
+  width: 100%;
+  height: 30px;
+  margin-left: 0px;
+  padding-left: 0px;
+}
+
+#loginFeedbackDiv ul li{
+  border:0 none;
+  padding-left: 20px;
+  padding: 1%;
+  padding-top: 2%;
+  list-style:none outside none;
+  margin:0;
+  text-align:center;
+  width: 100%;
+}
+
+#feedbackDiv {
+  height: 20px;
+  margin: 0px;
+  padding: 0px;
+}
+
+#feedbackDiv ul{
+  height: 20px !important;
+  margin: 0px;
+  padding: 0px;
+}
+
+#feedbackDiv li{
+  list-style:none outside none;
+  margin:0;
+  text-align:center;
+  width: 100%;
+}
+#feedbackDiv ul li{
+  list-style:none outside none;
+  margin:0;
+  text-align:center;
+  width: 100%;
+  color: red;
+}
+
+.feedbackPanel {
+  padding-left:20pt;
+  margin-right:20pt;
+}
+
+#navigationPane {
+  background: url(../img/sf_testa.png) top repeat-x #FFF;
+}
+
+#navigationPane a img {
+  border: none;
+}
+
+#navigationPane {
+  height: 103px;
+}
+
+#navigationPane a {
+  color: #FFF;
+  text-decoration: none;
+}
+
+#navigationPane a:hover {
+  color: #CCC;
+}
+
+#navigationPane ul {
+  clear: both;
+  padding: 0px;
+  margin: 0px;
+  margin-left: 280px;
+}
+
+#navigationPane ul li {
+  float: left;
+  width: 90px;
+  text-align: center;
+  margin: 0px;
+  color: #FFF;
+  font-size: 13px;
+  list-style: none;
+  padding: 1px;
+}
+
+#navigationPane span {
+  font-size: 13px;
+}
+
+/* MODAL-FORM */
+div#dialog-form label, div#dialog-form input { display:block; }
+div#dialog-form span.radio label, div#dialog-form span.radio input { margin-top: 4px; margin-bottom: 12px; display:inline; }
+/*div#dialog-form span.checkbox label, div#dialog-form span.checkbox input { margin-top: 4px; margin-bottom: 12px; display:inline; }*/
+div#dialog-form input.text { margin-bottom:12px; width: 95%; padding: .4em; }
+div#dialog-form select.text { margin-bottom:12px; width: auto; padding: .4em; }
+div#dialog-form fieldset { padding:0; border:0; margin-top:25px; }
+div#users-contain { width: 570px; margin-bottom: 20px;}/*width: 350px*/
+div#users-contain table { margin: 1em 0; border-collapse: collapse; width: 100%; }
+div#users-contain table td, div#users-contain table th { border: 1px solid #eee; padding: .6em 10px; }
+div#executions { margin-bottom: 0px;}/*width: 350px*/
+div#executions table { margin: 1em 0; border-collapse: collapse; width: 100%; }
+div#executions table td, div#executions table th { border: 1px solid #eee; padding: .3em 10px; }
+.ui-dialog .ui-state-error { padding: .3em; }
+.validateTips { border: 1px solid transparent; padding: 0.3em; }
+
+/* classi */
+#navigationPane .schema {
+  color: #99C;
+}
+
+#navigationPane a img:hover {
+  opacity:0.5;
+  -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
+  filter:alpha(opacity=50)
+}
+
+#splash a img:hover {
+  opacity:0.5;
+  -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
+  filter:alpha(opacity=50)
+}
+
+#navigationPane .users {
+  color: #9C0;
+}
+
+#navigationPane .roles {
+  color: #F90;
+}
+
+#navigationPane .resources {
+  color: #09F;
+}
+
+#navigationPane .tasks {
+  color: #FD0;
+}
+
+#navigationPane .todo {
+  color: #F3C98E;
+}
+
+#navigationPane .connectors {
+  color: #09F;
+}
+
+#navigationPane .reports {
+  color: #F66;
+}
+
+#navigationPane .configuration {
+  color: #CCC;
+}
+
+.onerowlabel {
+  float: left;
+}
+
+.onerowcheckbox {
+  margin-left: 10em;
+}
+
+div#attributes-view label {
+  display: block;
+  clear: none;
+  width: 300px;
+  margin-left: 20px;
+}
+
+div#attributes-view input {
+  display: block;
+  float: left;
+  clear: left;
+  height: 12px;
+  padding: 0;
+  margin: 0;
+}
+
+.selectedRow {
+  background-color: #eef1f1; /* alternative: LemonChiffon */
+}
+
+/* WICKET DATATABLE HEADERS */
+.headers {
+  border: 1px solid #aaaaaa;
+  background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)
+    50% 50% repeat-x;
+}
+
+em {
+  font-size: inherit;
+  color: gray;
+}
+
+em img {
+  opacity:0.4;
+  filter:alpha(opacity=40);
+}
+
+th.action{
+  width: 140px;
+}
+
+td.action{
+  text-align: center;
+}
+
+.navigatorLabel {
+  float: left;
+}
+
+.navigator {
+  text-align: right;
+}
+
+.role-tree {
+  width: 30%;
+  display: block;
+  float: left;
+}
+
+.roleTable {
+  line-height: 1.5em;
+}
+
+.tree-folder-other {
+  padding-top: 2px;
+  display: block;
+  height: 18px;
+}
+
+.tree-folder-open {
+  display: block;
+  height: 18px;
+}
+
+#versionMP {
+  text-align: justify;
+  color: #463;
+  background: url(../img/sf_testa.png) top repeat-x #B9CFB3;
+  border: 1px solid #463;
+  padding: 5px;
+}
+
+#versionMP a {
+  color: white;
+  text-decoration: none;
+}
+
+#versionMP a:hover {
+  color: #463;
+  text-decoration: none;
+}
+
+a.tooltips {
+  position: relative;
+  display: inline;
+  text-decoration: none;
+}
+
+a.tooltips span {
+  position: absolute;
+  width:19em;
+  color: #000000;
+  background: whitesmoke;
+  visibility: hidden;
+  border-radius: 0px;
+  padding: 3px;
+}
+
+a.tooltips span:after {
+  position: absolute;
+  top: 50%;
+  left: 100%;
+  margin-top: -8px;
+  width: 0; 
+  height: 0;
+}
+
+a.tooltips span {
+  visibility: visible;
+  opacity: none;
+  right: 100%;
+  top: 50%;
+  margin-right: 4px;
+  margin-top: -11px;
+  border: 1px solid black;
+  z-index: 1000000;
+}
+
+a.tooltips span a {
+  color: #463;
+  text-decoration: none;
+}
+
+.tree-junction-expanded {
+  display: none;
+}
+
+/* Style for autocomplete field */ 
+div.wicket-aa { 
+  font-family: "Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana;
+  font-size: 12px;
+  background-color: white;
+  border-width: 1px;
+  border-color: #cccccc;
+  border-style: solid; 
+  padding: 2px;
+  margin: 1px 0 0 0;
+  text-align:left;
+}
+div.wicket-aa ul {
+  list-style:none;
+  padding: 2px; 
+  margin:0;
+}
+div.wicket-aa ul li.selected {
+  background-color: #FFFF00;
+  padding: 2px;
+  margin:0;
+}
+
+.notificationpanel {
+  margin: 0px;
+  padding: 0px;
+  border-radius: 5px;
+}  
+
+.notificationpanel_bottom_left {  
+  bottom: 100px;  
+  left: 30px;  
+}  
+
+.notificationpanel_bottom_detail_form {  
+  top: 540px;  
+  right: 30px;  
+}  
+
+.notificationpanel_bottom_right {  
+  bottom: 100px;  
+  right: 30px;  
+}  
+
+.notificationpanel_top_right {  
+  top: 15px;  
+  right: 30px;  
+}  
+
+/* notification panel info style */  
+.notificationpanel_border_200 {  
+  color: green;
+  margin: 0px;
+  background:url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") repeat-x scroll 50% 50% #CCCCCC;
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  border: 1px solid gray;
+  box-shadow: 0px 0px 5px gray;  
+}   
+
+.notificationpanel_row_INFO {
+  list-style-type: none;
+  color: green;  
+}  
+
+.notificationpanel_row_INFO span {
+  list-style-type: none;
+  color: green;  
+  background: url("../img/ok.png") no-repeat left;
+  border:0 none;
+  padding-left: 20px;
+} 
+
+/* notification panel warning style */  
+.notificationpanel_border_300 {  
+  border: 1px solid orangered;  
+  box-shadow: 0px 0px 5px gray;  
+}  
+
+.notificationpanel_row_WARNING {  
+  color: orangered;  
+  list-style-type: none;
+  border:0 none;
+  padding-left: 20px;
+}  
+
+/* notification panel error style */  
+.notificationpanel_border_400 {  
+  color: red;
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  border: 1px solid gray;
+  box-shadow: 0px 0px 5px gray; 
+  border-color: red;
+  background-image: -moz-linear-gradient(top, #FF8585 0%, #E60008 100%);
+  background-image: -webkit-linear-gradient(top, #FF8585 0%, #E60008 100%);
+  background-image: -o-linear-gradient(top, #FF8585 0%, #E60008 100%);
+  background-image: -ms-linear-gradient(top, #FF8585 0%, #E60008 100%);
+  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FF8585), color-stop(1, #E60008));
+  font-weight: bold;
+}  
+
+.notificationpanel_row_ERROR {  
+  list-style-type: none;
+  color: black;  
+}  
+
+.notificationpanel_row_ERROR span {  
+  border:0 none;
+}    
+pre {
+  white-space: -moz-pre-wrap; /* Mozilla, supported since 1999 */
+  white-space: -pre-wrap; /* Opera */
+  white-space: -o-pre-wrap; /* Opera */
+  white-space: pre-wrap; /* CSS3 - Text module (Candidate Recommendation) http://www.w3.org/TR/css3-text/#white-space */
+  word-wrap: break-word; /* IE 5.5+ */
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/assign-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/assign-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/assign-icon.png
new file mode 100644
index 0000000..f9f2a33
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/assign-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/both-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/both-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/both-icon.png
new file mode 100644
index 0000000..0f98eec
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/both-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/bulk.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/bulk.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/bulk.png
new file mode 100644
index 0000000..ea6d145
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/bulk.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/claim.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/claim.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/claim.png
new file mode 100644
index 0000000..79332c0
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/claim.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/create.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/create.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/create.png
new file mode 100644
index 0000000..3f8faf1
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/create.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/delete.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/delete.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/delete.png
new file mode 100644
index 0000000..1207d8d
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/delete.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/deprovision-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/deprovision-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/deprovision-icon.png
new file mode 100644
index 0000000..4bc2f4e
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/deprovision-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/dryrun.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/dryrun.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/dryrun.png
new file mode 100644
index 0000000..910b148
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/dryrun.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/edit.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/edit.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/edit.png
new file mode 100644
index 0000000..80e00db
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/edit.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/enable.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/enable.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/enable.png
new file mode 100644
index 0000000..39ba0ca
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/enable.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/execute.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/execute.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/execute.png
new file mode 100644
index 0000000..443c719
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/execute.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/export.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/export.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/export.png
new file mode 100644
index 0000000..038583b
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/export.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/link-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/link-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/link-icon.png
new file mode 100644
index 0000000..8c166af
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/link-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/manage-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/manage-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/manage-icon.png
new file mode 100644
index 0000000..2e8e190
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/manage-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/none-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/none-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/none-icon.png
new file mode 100644
index 0000000..cc49adb
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/none-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/propagation-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/propagation-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/propagation-icon.png
new file mode 100644
index 0000000..d7fa5e9
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/propagation-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/provision-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/provision-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/provision-icon.png
new file mode 100644
index 0000000..3f8faf1
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/provision-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reactivate.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reactivate.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reactivate.png
new file mode 100644
index 0000000..50503e2
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reactivate.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reload.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reload.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reload.png
new file mode 100644
index 0000000..bbf878e
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reload.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reset.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reset.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reset.png
new file mode 100644
index 0000000..bbf878e
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/reset.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/resources-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/resources-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/resources-icon.png
new file mode 100644
index 0000000..6240ba9
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/resources-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/roles-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/roles-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/roles-icon.png
new file mode 100644
index 0000000..9669486
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/roles-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/search.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/search.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/search.png
new file mode 100644
index 0000000..3ac297e
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/search.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/select.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/select.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/select.png
new file mode 100644
index 0000000..f2ea103
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/select.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/settings-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/settings-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/settings-icon.png
new file mode 100644
index 0000000..1da7e05
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/settings-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/suspend.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/suspend.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/suspend.png
new file mode 100644
index 0000000..bd5f0bd
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/suspend.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/synchronization-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/synchronization-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/synchronization-icon.png
new file mode 100644
index 0000000..394b907
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/synchronization-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/unassign-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/unassign-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/unassign-icon.png
new file mode 100644
index 0000000..860dc49
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/unassign-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/unlink-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/unlink-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/unlink-icon.png
new file mode 100644
index 0000000..86700a5
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/unlink-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/user_template.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/user_template.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/user_template.png
new file mode 100644
index 0000000..6db6de8
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/user_template.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/users-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/users-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/users-icon.png
new file mode 100644
index 0000000..cfab465
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/actions/users-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/add.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/add.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/add.png
new file mode 100644
index 0000000..043aba8
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/add.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/addAll.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/addAll.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/addAll.png
new file mode 100644
index 0000000..86633fc
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/addAll.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/busy.gif
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/busy.gif b/syncope620/client/console/src/main/resources/META-INF/resources/img/busy.gif
new file mode 100644
index 0000000..e77264f
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/busy.gif differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/db_export.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/db_export.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/db_export.png
new file mode 100644
index 0000000..413cb06
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/db_export.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/disable.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/disable.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/disable.png
new file mode 100644
index 0000000..26fbe85
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/disable.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/down-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/down-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/down-icon.png
new file mode 100644
index 0000000..6f818ee
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/down-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/favicon.ico
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/favicon.ico b/syncope620/client/console/src/main/resources/META-INF/resources/img/favicon.ico
new file mode 100644
index 0000000..599ec2b
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/favicon.ico differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/file-download.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/file-download.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/file-download.png
new file mode 100644
index 0000000..ceae906
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/file-download.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/file-upload.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/file-upload.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/file-upload.png
new file mode 100644
index 0000000..d4a399e
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/file-upload.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/help.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/help.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/help.png
new file mode 100644
index 0000000..560064e
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/help.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/info.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/info.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/info.png
new file mode 100644
index 0000000..f1a4832
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/info.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/left-icon.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/left-icon.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/left-icon.png
new file mode 100644
index 0000000..03b215c
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/left-icon.png differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/loading.gif
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/loading.gif b/syncope620/client/console/src/main/resources/META-INF/resources/img/loading.gif
new file mode 100644
index 0000000..85b99d4
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/loading.gif differ

http://git-wip-us.apache.org/repos/asf/syncope/blob/32707b3b/syncope620/client/console/src/main/resources/META-INF/resources/img/logo.png
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/resources/META-INF/resources/img/logo.png b/syncope620/client/console/src/main/resources/META-INF/resources/img/logo.png
new file mode 100644
index 0000000..f05105e
Binary files /dev/null and b/syncope620/client/console/src/main/resources/META-INF/resources/img/logo.png differ