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 2016/02/15 15:31:20 UTC

[3/3] syncope git commit: [SYNCOPE-156] Styling tables as per Admin LTE + minor fixes

[SYNCOPE-156] Styling tables as per Admin LTE + minor fixes


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/2ecd96f1
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/2ecd96f1
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/2ecd96f1

Branch: refs/heads/master
Commit: 2ecd96f10a2d25c25709023d35b8c861037d7d5a
Parents: de0a37d
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Feb 15 15:31:00 2016 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Feb 15 15:31:00 2016 +0100

----------------------------------------------------------------------
 .../syncope/client/console/pages/Logs.java      |   3 +-
 .../client/console/pages/Parameters.java        |   3 +-
 .../syncope/client/console/pages/Realms.java    |   2 +-
 .../syncope/client/console/pages/Roles.java     |   3 +-
 .../client/console/pages/SecurityQuestions.java |   3 +-
 .../syncope/client/console/pages/Types.java     |   7 +-
 .../console/panels/AjaxDataTablePanel.java      |   1 -
 .../console/panels/AnyTypeClassesPanel.java     |  38 +-
 .../client/console/panels/AnyTypePanel.java     | 248 ---------
 .../client/console/panels/AnyTypesPanel.java    | 233 +++++++++
 .../client/console/panels/DataTablePanel.java   |   7 -
 .../client/console/panels/ParametersPanel.java  |  34 +-
 .../console/panels/RoleSearchResultPanel.java   |   6 +-
 .../client/console/panels/SchemaTypePanel.java  |   6 +-
 .../data/table/AjaxFallbackDataTable.java       |  27 +-
 .../markup/html/bootstrap/tabs/Accordion.java   |   2 +
 .../META-INF/resources/css/syncopeConsole.css   |  11 +-
 .../SyncopeConsoleApplication.properties        |   6 +-
 .../SyncopeConsoleApplication_it.properties     |   6 +-
 .../SyncopeConsoleApplication_pt_BR.properties  |   6 +-
 .../syncope/client/console/pages/BasePage.html  |   4 +-
 .../client/console/pages/BasePage.properties    |   1 -
 .../client/console/pages/BasePage_it.properties |   1 -
 .../console/pages/BasePage_pt_BR.properties     |   1 -
 .../syncope/client/console/pages/Dashboard.html | 503 +++++++++----------
 .../syncope/client/console/pages/Logs.html      |  27 +-
 .../client/console/pages/Parameters.html        |  27 +-
 .../syncope/client/console/pages/Roles.html     |  27 +-
 .../client/console/pages/SecurityQuestions.html |  27 +-
 .../syncope/client/console/pages/Types.html     |  27 +-
 .../panels/AbstractSearchResultPanel.html       |  30 +-
 .../paging/AjaxDataNavigationToolbar.html       |  19 +-
 .../client/console/pages/CamelRoutesPage.java   |   3 +-
 .../client/console/pages/CamelRoutesPage.html   |  27 +-
 34 files changed, 653 insertions(+), 723 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/pages/Logs.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Logs.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Logs.java
index ab4b440..ff880c5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Logs.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Logs.java
@@ -38,8 +38,9 @@ public class Logs extends BasePage {
     public Logs(final PageParameters parameters) {
         super(parameters);
 
+        body.add(new Label("header", getString("header_title")));
+
         WebMarkupContainer content = new WebMarkupContainer("content");
-        content.add(new Label("header", getString("header_title")));
         content.setOutputMarkupId(true);
         AjaxBootstrapTabbedPanel<ITab> tabbedPanel = new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList());
         content.add(tabbedPanel);

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/pages/Parameters.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Parameters.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Parameters.java
index 35a7ad3..d1b1a97 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Parameters.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Parameters.java
@@ -32,8 +32,9 @@ public class Parameters extends BasePage {
     public Parameters(final PageParameters parameters) {
         super(parameters);
 
+        body.add(new Label("header", getString("header_title")));
+
         WebMarkupContainer content = new WebMarkupContainer("content");
-        content.add(new Label("header", getString("header_title")));
         content.setOutputMarkupId(true);
         body.add(content);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
index f03a4ce..b2837c9 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
@@ -93,7 +93,7 @@ public class Realms extends BasePage {
     }
 
     private WebMarkupContainer updateRealmContent(final RealmTO realmTO) {
-        content.addOrReplace(new Label("header", realmTO.getName()));
+        content.addOrReplace(new Label("header", realmTO.getFullPath()));
         content.addOrReplace(new Realm("body", realmTO, getPageReference()) {
 
             private static final long serialVersionUID = 8221398624379357183L;

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
index e121cb2..797dee2 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
@@ -36,8 +36,9 @@ public class Roles extends BasePage {
     public Roles(final PageParameters parameters) {
         super(parameters);
 
+        body.add(new Label("header", getString("header_title", new Model<>(), "Roles")));
+
         WebMarkupContainer content = new WebMarkupContainer("content");
-        content.add(new Label("header", getString("header_title", new Model<>(), "Roles")));
         content.setOutputMarkupId(true);
         body.add(content);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java
index b2990ee..da1f3aa 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/SecurityQuestions.java
@@ -30,8 +30,9 @@ public class SecurityQuestions extends BasePage {
     public SecurityQuestions(final PageParameters parameters) {
         super(parameters);
 
+        body.add(new Label("header", getString("header_title")));
+
         WebMarkupContainer content = new WebMarkupContainer("content");
-        content.add(new Label("header", getString("header_title")));
         content.setOutputMarkupId(true);
         body.add(content);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/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
index f322bd0..cc567a1 100644
--- 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
@@ -22,7 +22,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbed
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.syncope.client.console.panels.AnyTypeClassesPanel;
-import org.apache.syncope.client.console.panels.AnyTypePanel;
+import org.apache.syncope.client.console.panels.AnyTypesPanel;
 import org.apache.syncope.client.console.panels.RelationshipTypePanel;
 import org.apache.syncope.client.console.panels.SchemasPanel;
 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
@@ -50,8 +50,9 @@ public class Types extends BasePage {
     public Types(final PageParameters parameters) {
         super(parameters);
 
+        body.add(new Label("header", "Types"));
+
         WebMarkupContainer content = new WebMarkupContainer("content");
-        content.add(new Label("header", "Types"));
         content.setOutputMarkupId(true);
         tabbedPanel = new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList());
         content.add(tabbedPanel);
@@ -78,7 +79,7 @@ public class Types extends BasePage {
 
             @Override
             public Panel getPanel(final String panelId) {
-                return new AnyTypePanel(panelId, getPageReference());
+                return new AnyTypesPanel(panelId, getPageReference());
             }
         });
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
index 58194d2..c6e8fb0 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
@@ -141,7 +141,6 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab
     }
 
     private AjaxDataTablePanel(final String id, final Builder<T, S> builder) {
-
         super(id);
 
         final BaseModal<T> bulkModalWin = new BaseModal<>("bulkModal");

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/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 aec4cce..2721a81 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
@@ -26,6 +26,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
@@ -115,50 +116,33 @@ public class AnyTypeClassesPanel extends AbstractTypesPanel<AnyTypeClassTO, AnyT
 
     @Override
     protected List<IColumn<AnyTypeClassTO, String>> getColumns() {
-
         final List<IColumn<AnyTypeClassTO, String>> columns = new ArrayList<>();
 
-        for (Field field : AnyTypeClassTO.class.getDeclaredFields()) {
-
+        for (final Field field : AnyTypeClassTO.class.getDeclaredFields()) {
             if (field != null && !Modifier.isStatic(field.getModifiers())) {
-                final String fieldName = field.getName();
-                if (field.getType().isArray()) {
-                    final IColumn<AnyTypeClassTO, String> column = new PropertyColumn<AnyTypeClassTO, String>(
-                            new ResourceModel(field.getName()), field.getName()) {
-
-                        private static final long serialVersionUID = 3282547854226892169L;
-
-                        @Override
-                        public String getCssClass() {
-                            String css = super.getCssClass();
-                            if ("key".equals(fieldName)) {
-                                css = StringUtils.isBlank(css)
-                                        ? "medium_fixedsize"
-                                        : css + " medium_fixedsize";
-                            }
-                            return css;
-                        }
-                    };
-                    columns.add(column);
+                if (field.getType().isArray()
+                        || Collection.class.isAssignableFrom(field.getType())
+                        || Map.class.isAssignableFrom(field.getType())) {
 
+                    columns.add(new PropertyColumn<AnyTypeClassTO, String>(
+                            new ResourceModel(field.getName()), field.getName()));
                 } else {
-                    final IColumn<AnyTypeClassTO, String> column = new PropertyColumn<AnyTypeClassTO, String>(
+                    columns.add(new PropertyColumn<AnyTypeClassTO, String>(
                             new ResourceModel(field.getName()), field.getName(), field.getName()) {
 
-                        private static final long serialVersionUID = 3282547854226892169L;
+                        private static final long serialVersionUID = -6902459669035442212L;
 
                         @Override
                         public String getCssClass() {
                             String css = super.getCssClass();
-                            if ("key".equals(fieldName)) {
+                            if ("key".equals(field.getName())) {
                                 css = StringUtils.isBlank(css)
                                         ? "medium_fixedsize"
                                         : css + " medium_fixedsize";
                             }
                             return css;
                         }
-                    };
-                    columns.add(column);
+                    });
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/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
deleted file mode 100644
index 5d1b29f..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypePanel.java
+++ /dev/null
@@ -1,248 +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.panels;
-
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.commons.SearchableDataProvider;
-import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.console.panels.AnyTypePanel.AnyTypeProvider;
-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.client.console.wizards.AbstractModalPanelBuilder;
-import org.apache.syncope.client.console.wizards.AjaxWizard;
-import org.apache.syncope.common.lib.to.AnyTypeTO;
-import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.common.rest.api.service.AnyTypeService;
-import org.apache.wicket.PageReference;
-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.extensions.markup.html.repeater.data.grid.ICellPopulator;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.ResourceModel;
-
-public class AnyTypePanel extends AbstractTypesPanel<AnyTypeTO, AnyTypeProvider> {
-
-    private static final long serialVersionUID = 3905038169553185171L;
-
-    public AnyTypePanel(final String id, final PageReference pageRef) {
-        super(id, pageRef);
-        disableCheckBoxes();
-
-        this.addNewItemPanelBuilder(new AbstractModalPanelBuilder<AnyTypeTO>(
-                BaseModal.CONTENT_ID, new AnyTypeTO(), pageRef) {
-
-            private static final long serialVersionUID = -6388405037134399367L;
-
-            @Override
-            public ModalPanel<AnyTypeTO> build(final int index, final boolean edit) {
-                final AnyTypeTO modelObject = newModelObject();
-                return new AnyTypeModalPanel(modal, modelObject, pageRef) {
-
-                    private static final long serialVersionUID = -6227956682141146095L;
-
-                    @Override
-                    public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
-                        try {
-                            if (getOriginalItem() == null || StringUtils.isBlank(getOriginalItem().getKey())) {
-                                SyncopeConsoleSession.get().getService(AnyTypeService.class).create(modelObject);
-                            } else {
-                                SyncopeConsoleSession.get().getService(AnyTypeService.class).update(modelObject);
-                            }
-                            info(getString(Constants.OPERATION_SUCCEEDED));
-                            modal.close(target);
-                        } catch (Exception e) {
-                            LOG.error("While creating or updating AnyTypeTO", e);
-                            error(getString(Constants.ERROR) + ": " + e.getMessage());
-                        }
-                        modal.getNotificationPanel().refresh(target);
-                    }
-                };
-            }
-        }, true);
-
-        initResultTable();
-        MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, ENABLE, StandardEntitlement.ANYTYPE_CREATE);
-    }
-
-    @Override
-    protected AnyTypeProvider dataProvider() {
-        return new AnyTypeProvider(rows);
-    }
-
-    @Override
-    protected String paginatorRowsKey() {
-        return Constants.PREF_ANYTYPE_PAGINATOR_ROWS;
-    }
-
-    @Override
-    protected Collection<ActionLink.ActionType> getBulkActions() {
-        return Collections.<ActionLink.ActionType>emptyList();
-    }
-
-    @Override
-    protected List<IColumn<AnyTypeTO, String>> getColumns() {
-
-        final List<IColumn<AnyTypeTO, String>> columns = new ArrayList<>();
-
-        for (Field field : AnyTypeTO.class.getDeclaredFields()) {
-
-            if (field != null && !Modifier.isStatic(field.getModifiers())) {
-                final String fieldName = field.getName();
-                if (field.getType().isArray()) {
-                    final IColumn<AnyTypeTO, String> column = new PropertyColumn<AnyTypeTO, String>(
-                            new ResourceModel(field.getName()), field.getName()) {
-
-                        private static final long serialVersionUID = 3282547854226892169L;
-
-                        @Override
-                        public String getCssClass() {
-                            String css = super.getCssClass();
-                            if ("key".equals(fieldName)) {
-                                css = StringUtils.isBlank(css)
-                                        ? "medium_fixedsize"
-                                        : css + " medium_fixedsize";
-                            }
-                            return css;
-                        }
-                    };
-                    columns.add(column);
-
-                } else {
-                    final IColumn<AnyTypeTO, String> column = new PropertyColumn<AnyTypeTO, String>(
-                            new ResourceModel(field.getName()), field.getName(), field.getName()) {
-
-                        private static final long serialVersionUID = 3282547854226892169L;
-
-                        @Override
-                        public String getCssClass() {
-                            String css = super.getCssClass();
-                            if ("key".equals(fieldName)) {
-                                css = StringUtils.isBlank(css)
-                                        ? "medium_fixedsize"
-                                        : css + " medium_fixedsize";
-                            }
-                            return css;
-                        }
-                    };
-                    columns.add(column);
-                }
-            }
-        }
-
-        columns.add(new AbstractColumn<AnyTypeTO, String>(new ResourceModel("actions", "")) {
-
-            private static final long serialVersionUID = 2054811145491901166L;
-
-            @Override
-            public String getCssClass() {
-                return "action";
-            }
-
-            @Override
-            public void populateItem(final Item<ICellPopulator<AnyTypeTO>> item, final String componentId,
-                    final IModel<AnyTypeTO> model) {
-
-                final ActionLinksPanel.Builder<Serializable> actionLinks = ActionLinksPanel.builder(page.
-                        getPageReference());
-                actionLinks.setDisableIndicator(true);
-                actionLinks.addWithRoles(new ActionLink<Serializable>() {
-
-                    private static final long serialVersionUID = -3722207913631435501L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
-                        send(AnyTypePanel.this, Broadcast.EXACT,
-                                new AjaxWizard.EditItemActionEvent<>(model.getObject(), target));
-                    }
-                }, ActionLink.ActionType.EDIT, StandardEntitlement.ANYTYPE_UPDATE).addWithRoles(
-                        new ActionLink<Serializable>() {
-
-                    private static final long serialVersionUID = -3722207913631435501L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
-                        try {
-                            SyncopeConsoleSession.get().
-                                    getService(AnyTypeService.class).delete(model.getObject().getKey());
-                            info(getString(Constants.OPERATION_SUCCEEDED));
-                            target.add(container);
-                        } catch (Exception e) {
-                            LOG.error("While deleting AnyTypeTO", e);
-                            error(getString(Constants.ERROR) + ": " + e.getMessage());
-                        }
-                        ((BasePage) getPage()).getNotificationPanel().refresh(target);
-                    }
-                }, ActionLink.ActionType.DELETE, StandardEntitlement.ANYTYPE_DELETE);
-
-                item.add(actionLinks.build(componentId));
-            }
-        });
-
-        return columns;
-
-    }
-
-    protected final class AnyTypeProvider extends SearchableDataProvider<AnyTypeTO> {
-
-        private static final long serialVersionUID = -185944053385660794L;
-
-        private final SortableDataProviderComparator<AnyTypeTO> comparator;
-
-        private AnyTypeProvider(final int paginatorRows) {
-            super(paginatorRows);
-            comparator = new SortableDataProviderComparator<>(this);
-        }
-
-        @Override
-        public Iterator<AnyTypeTO> iterator(final long first, final long count) {
-            final List<AnyTypeTO> list = SyncopeConsoleSession.get().getService(AnyTypeService.class).list();
-            Collections.sort(list, comparator);
-            return list.subList((int) first, (int) first + (int) count).iterator();
-        }
-
-        @Override
-        public long size() {
-            return SyncopeConsoleSession.get().getService(AnyTypeService.class).list().size();
-        }
-
-        @Override
-        public IModel<AnyTypeTO> model(final AnyTypeTO object) {
-            return new CompoundPropertyModel<>(object);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
new file mode 100644
index 0000000..f22df75
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
@@ -0,0 +1,233 @@
+/*
+ * 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.io.Serializable;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.commons.SearchableDataProvider;
+import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.panels.AnyTypesPanel.AnyTypeProvider;
+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.client.console.wizards.AbstractModalPanelBuilder;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
+import org.apache.syncope.common.lib.to.AnyTypeTO;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.syncope.common.rest.api.service.AnyTypeService;
+import org.apache.wicket.PageReference;
+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.extensions.markup.html.repeater.data.grid.ICellPopulator;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
+
+public class AnyTypesPanel extends AbstractTypesPanel<AnyTypeTO, AnyTypeProvider> {
+
+    private static final long serialVersionUID = 3905038169553185171L;
+
+    public AnyTypesPanel(final String id, final PageReference pageRef) {
+        super(id, pageRef);
+        disableCheckBoxes();
+
+        this.addNewItemPanelBuilder(new AbstractModalPanelBuilder<AnyTypeTO>(
+                BaseModal.CONTENT_ID, new AnyTypeTO(), pageRef) {
+
+            private static final long serialVersionUID = -6388405037134399367L;
+
+            @Override
+            public ModalPanel<AnyTypeTO> build(final int index, final boolean edit) {
+                final AnyTypeTO modelObject = newModelObject();
+                return new AnyTypeModalPanel(modal, modelObject, pageRef) {
+
+                    private static final long serialVersionUID = -6227956682141146095L;
+
+                    @Override
+                    public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+                        try {
+                            if (getOriginalItem() == null || StringUtils.isBlank(getOriginalItem().getKey())) {
+                                SyncopeConsoleSession.get().getService(AnyTypeService.class).create(modelObject);
+                            } else {
+                                SyncopeConsoleSession.get().getService(AnyTypeService.class).update(modelObject);
+                            }
+                            info(getString(Constants.OPERATION_SUCCEEDED));
+                            modal.close(target);
+                        } catch (Exception e) {
+                            LOG.error("While creating or updating AnyTypeTO", e);
+                            error(getString(Constants.ERROR) + ": " + e.getMessage());
+                        }
+                        modal.getNotificationPanel().refresh(target);
+                    }
+                };
+            }
+        }, true);
+
+        initResultTable();
+        MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, ENABLE, StandardEntitlement.ANYTYPE_CREATE);
+    }
+
+    @Override
+    protected AnyTypeProvider dataProvider() {
+        return new AnyTypeProvider(rows);
+    }
+
+    @Override
+    protected String paginatorRowsKey() {
+        return Constants.PREF_ANYTYPE_PAGINATOR_ROWS;
+    }
+
+    @Override
+    protected Collection<ActionLink.ActionType> getBulkActions() {
+        return Collections.<ActionLink.ActionType>emptyList();
+    }
+
+    @Override
+    protected List<IColumn<AnyTypeTO, String>> getColumns() {
+
+        final List<IColumn<AnyTypeTO, String>> columns = new ArrayList<>();
+
+        for (final Field field : AnyTypeTO.class.getDeclaredFields()) {
+            if (field != null && !Modifier.isStatic(field.getModifiers())) {
+                if (field.getType().isArray()
+                        || Collection.class.isAssignableFrom(field.getType())
+                        || Map.class.isAssignableFrom(field.getType())) {
+
+                    columns.add(new PropertyColumn<AnyTypeTO, String>(
+                            new ResourceModel(field.getName()), field.getName()));
+                } else {
+                    columns.add(new PropertyColumn<AnyTypeTO, String>(
+                            new ResourceModel(field.getName()), field.getName(), field.getName()) {
+
+                        private static final long serialVersionUID = -6902459669035442212L;
+
+                        @Override
+                        public String getCssClass() {
+                            String css = super.getCssClass();
+                            if ("key".equals(field.getName())) {
+                                css = StringUtils.isBlank(css)
+                                        ? "medium_fixedsize"
+                                        : css + " medium_fixedsize";
+                            }
+                            return css;
+                        }
+                    });
+                }
+            }
+        }
+
+        columns.add(new AbstractColumn<AnyTypeTO, String>(new ResourceModel("actions", "")) {
+
+            private static final long serialVersionUID = 2054811145491901166L;
+
+            @Override
+            public String getCssClass() {
+                return "action";
+            }
+
+            @Override
+            public void populateItem(final Item<ICellPopulator<AnyTypeTO>> item, final String componentId,
+                    final IModel<AnyTypeTO> model) {
+
+                final ActionLinksPanel.Builder<Serializable> actionLinks = ActionLinksPanel.builder(page.
+                        getPageReference());
+                actionLinks.setDisableIndicator(true);
+                actionLinks.addWithRoles(new ActionLink<Serializable>() {
+
+                    private static final long serialVersionUID = -3722207913631435501L;
+
+                    @Override
+                    public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
+                        send(AnyTypesPanel.this, Broadcast.EXACT,
+                                new AjaxWizard.EditItemActionEvent<>(model.getObject(), target));
+                    }
+                }, ActionLink.ActionType.EDIT, StandardEntitlement.ANYTYPE_UPDATE).addWithRoles(
+                        new ActionLink<Serializable>() {
+
+                    private static final long serialVersionUID = -3722207913631435501L;
+
+                    @Override
+                    public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
+                        try {
+                            SyncopeConsoleSession.get().
+                                    getService(AnyTypeService.class).delete(model.getObject().getKey());
+                            info(getString(Constants.OPERATION_SUCCEEDED));
+                            target.add(container);
+                        } catch (Exception e) {
+                            LOG.error("While deleting AnyTypeTO", e);
+                            error(getString(Constants.ERROR) + ": " + e.getMessage());
+                        }
+                        ((BasePage) getPage()).getNotificationPanel().refresh(target);
+                    }
+                }, ActionLink.ActionType.DELETE, StandardEntitlement.ANYTYPE_DELETE);
+
+                item.add(actionLinks.build(componentId));
+            }
+        });
+
+        return columns;
+
+    }
+
+    protected final class AnyTypeProvider extends SearchableDataProvider<AnyTypeTO> {
+
+        private static final long serialVersionUID = -185944053385660794L;
+
+        private final SortableDataProviderComparator<AnyTypeTO> comparator;
+
+        private AnyTypeProvider(final int paginatorRows) {
+            super(paginatorRows);
+            comparator = new SortableDataProviderComparator<>(this);
+        }
+
+        @Override
+        public Iterator<AnyTypeTO> iterator(final long first, final long count) {
+            final List<AnyTypeTO> list = SyncopeConsoleSession.get().getService(AnyTypeService.class).list();
+            Collections.sort(list, comparator);
+            return list.subList((int) first, (int) first + (int) count).iterator();
+        }
+
+        @Override
+        public long size() {
+            return SyncopeConsoleSession.get().getService(AnyTypeService.class).list().size();
+        }
+
+        @Override
+        public IModel<AnyTypeTO> model(final AnyTypeTO object) {
+            return new CompoundPropertyModel<>(object);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/panels/DataTablePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/DataTablePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/DataTablePanel.java
index 58aa653..beecb80 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/DataTablePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/DataTablePanel.java
@@ -30,18 +30,11 @@ import org.apache.wicket.markup.html.form.CheckGroup;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.model.IModel;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public abstract class DataTablePanel<T extends Serializable, S> extends Panel {
 
     private static final long serialVersionUID = -7264400471578272966L;
 
-    /**
-     * Logger.
-     */
-    private static final Logger LOG = LoggerFactory.getLogger(DataTablePanel.class);
-
     protected CheckGroup<T> group;
 
     protected AjaxFallbackDataTable<T, S> dataTable;

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
index f267691..40ab4c4 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
@@ -27,6 +27,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
@@ -147,34 +148,18 @@ public class ParametersPanel extends AbstractSearchResultPanel<
 
     @Override
     protected List<IColumn<AttrTO, String>> getColumns() {
-
         final List<IColumn<AttrTO, String>> columns = new ArrayList<>();
 
         for (final Field field : AttrTO.class.getDeclaredFields()) {
-
             if (field != null && !Modifier.isStatic(field.getModifiers())) {
-                final String fieldName = field.getName();
-                if (field.getType().isArray()) {
-                    final IColumn<AttrTO, String> column = new PropertyColumn<AttrTO, String>(
-                            new ResourceModel(field.getName()), field.getName()) {
-
-                        private static final long serialVersionUID = 377850700587306254L;
-
-                        @Override
-                        public String getCssClass() {
-                            String css = super.getCssClass();
-                            if ("schema".equals(fieldName)) {
-                                css = StringUtils.isBlank(css)
-                                        ? "medium_fixedsize"
-                                        : css + " medium_fixedsize";
-                            }
-                            return css;
-                        }
-                    };
-                    columns.add(column);
+                if (field.getType().isArray()
+                        || Collection.class.isAssignableFrom(field.getType())
+                        || Map.class.isAssignableFrom(field.getType())) {
 
+                    columns.add(new PropertyColumn<AttrTO, String>(
+                            new ResourceModel(field.getName()), field.getName()));
                 } else {
-                    final IColumn<AttrTO, String> column = new PropertyColumn<AttrTO, String>(
+                    columns.add(new PropertyColumn<AttrTO, String>(
                             new ResourceModel(field.getName()), field.getName(), field.getName()) {
 
                         private static final long serialVersionUID = -6902459669035442212L;
@@ -182,15 +167,14 @@ public class ParametersPanel extends AbstractSearchResultPanel<
                         @Override
                         public String getCssClass() {
                             String css = super.getCssClass();
-                            if ("schema".equals(fieldName)) {
+                            if ("key".equals(field.getName())) {
                                 css = StringUtils.isBlank(css)
                                         ? "medium_fixedsize"
                                         : css + " medium_fixedsize";
                             }
                             return css;
                         }
-                    };
-                    columns.add(column);
+                    });
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleSearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleSearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleSearchResultPanel.java
index 2a2c11d..7cb295b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleSearchResultPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleSearchResultPanel.java
@@ -75,11 +75,11 @@ public class RoleSearchResultPanel
     protected List<IColumn<RoleTO, String>> getColumns() {
         final List<IColumn<RoleTO, String>> columns = new ArrayList<>();
 
-        columns.add(new PropertyColumn<RoleTO, String>(new ResourceModel("key", "key"), "key", "key"));
+        columns.add(new PropertyColumn<RoleTO, String>(new ResourceModel("key"), "key", "key"));
         columns.add(new PropertyColumn<RoleTO, String>(
-                new ResourceModel("entitlements", "entitlements"), "entitlements", "entitlements"));
+                new ResourceModel("entitlements", "Entitlements"), null, "entitlements"));
         columns.add(new PropertyColumn<RoleTO, String>(
-                new ResourceModel("realms", "realms"), "realms", "realms"));
+                new ResourceModel("realms"), null, "realms"));
 
         columns.add(new ActionColumn<RoleTO, String>(new ResourceModel("actions", "")) {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
index 12c9d15..4254a4c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
@@ -157,10 +157,8 @@ public class SchemaTypePanel extends AbstractTypesPanel<AbstractSchemaTO, Schema
             final Field clazzField = ReflectionUtils.findField(schemaType.getToClass(), field);
 
             if (clazzField != null) {
-                if (clazzField.getType().equals(Boolean.class
-                ) || clazzField.getType().equals(boolean.class
-                )) {
-                    columns.add(new AbstractColumn<AbstractSchemaTO, String>(new ResourceModel(field)) {
+                if (clazzField.getType().equals(Boolean.class) || clazzField.getType().equals(boolean.class)) {
+                    columns.add(new AbstractColumn<AbstractSchemaTO, String>(new ResourceModel(field), field) {
 
                         private static final long serialVersionUID = 8263694778917279290L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
index 44b892c..9b8cccb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
@@ -42,7 +42,7 @@ public class AjaxFallbackDataTable<T, S> extends DataTable<T, S> {
         super(id, columns, dataProvider, rowsPerPage);
         setOutputMarkupId(true);
         setVersioned(false);
-        addTopToolbar(new AjaxDataNavigationToolbar(this, container));
+
         addTopToolbar(new AjaxFallbackHeadersToolbar<S>(this, dataProvider) {
 
             private static final long serialVersionUID = 7406306172424359609L;
@@ -50,7 +50,29 @@ public class AjaxFallbackDataTable<T, S> extends DataTable<T, S> {
             @Override
             protected WebMarkupContainer newSortableHeader(
                     final String borderId, final S property, final ISortStateLocator<S> locator) {
-                return new AjaxFallbackOrderByBorder<S>(borderId, property, locator, getAjaxCallListener()) {
+                return new AjaxFallbackOrderByBorder<S>(borderId, property, locator) {
+
+                    private static final long serialVersionUID = 1L;
+
+                    @Override
+                    protected void onAjaxClick(final AjaxRequestTarget target) {
+                        if (container != null) {
+                            target.add(container);
+                        }
+                    }
+                };
+            }
+
+        });
+
+        addBottomToolbar(new AjaxFallbackHeadersToolbar<S>(this, dataProvider) {
+
+            private static final long serialVersionUID = 7406306172424359609L;
+
+            @Override
+            protected WebMarkupContainer newSortableHeader(
+                    final String borderId, final S property, final ISortStateLocator<S> locator) {
+                return new AjaxFallbackOrderByBorder<S>(borderId, property, locator) {
 
                     private static final long serialVersionUID = 1L;
 
@@ -64,6 +86,7 @@ public class AjaxFallbackDataTable<T, S> extends DataTable<T, S> {
             }
 
         });
+        addBottomToolbar(new AjaxDataNavigationToolbar(this, container));
         addBottomToolbar(new NoRecordsToolbar(this));
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/tabs/Accordion.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/tabs/Accordion.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/tabs/Accordion.java
index 59ff9df..33eeece 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/tabs/Accordion.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/tabs/Accordion.java
@@ -39,6 +39,8 @@ public class Accordion extends Collapsible {
 
     @Override
     protected void onComponentTag(final ComponentTag tag) {
+        super.onComponentTag(tag);
+
         checkComponentTag(tag, "div");
         Attributes.addClass(tag, "box-group");
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
index c774be6..f1f72e2 100644
--- a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
+++ b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
@@ -465,11 +465,6 @@ START - DataTable
 .dataTable {
   clear: both;
 }
-
-.rowsChooser {
-  padding: 5px 0px 15px 0px;
-  text-align: right;
-}
 /**
 END - DataTable
 */
@@ -494,7 +489,7 @@ END - Result page
 */
 
 .navbar-nav > .user-menu > .dropdown-menu > li.user-header {
-    height: auto !important;
-    padding: 10px;
-    text-align: center;
+  height: auto !important;
+  padding: 10px;
+  text-align: center;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
index 2e273c3..71be238 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
@@ -66,4 +66,8 @@ layouts=Layouts
 notifications=Notifications
 parameters=Parameters
 extensions=Extensions
-NavigatorLabel=Showing ${from} to ${to} of ${of}
+NavigatorLabel=Showing ${from} to ${to} of ${of} rows
+displayRows=Rows to display:
+OrderByLink.CSS.ascending=sorting_asc
+OrderByLink.CSS.descending=sorting_desc
+OrderByLink.CSS.none=sorting

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
index 85ba7f8..e6d5de0 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
@@ -65,4 +65,8 @@ layouts=Layout
 notifications=Notifiche
 parameters=Parametri
 extensions=Estensioni
-NavigatorLabel=Da ${from} a ${to} di ${of}
+NavigatorLabel=Da ${from} a ${to} di ${of} righe
+displayRows=Righe per pagina:
+OrderByLink.CSS.ascending=sorting_asc
+OrderByLink.CSS.descending=sorting_desc
+OrderByLink.CSS.none=sorting

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
index d2f689e..250195c 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
@@ -65,4 +65,8 @@ layouts=Layout
 notifications=Notifica\u00e7\u00f5es
 parameters=Par\u00e2metros
 extensions=Extens\u00f5es
-NavigatorLabel=A partir de ${from} a ${to} de ${of}
+NavigatorLabel=A partir de ${from} a ${to} de ${of} linhas
+displayRows=Linhas para mostrar:
+OrderByLink.CSS.ascending=sorting_asc
+OrderByLink.CSS.descending=sorting_desc
+OrderByLink.CSS.none=sorting

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/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 06dca68..8de6319 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
@@ -129,9 +129,7 @@ under the License.
       </aside>
 
       <div class="content-wrapper">
-        <section class="content">
-          <wicket:child/>
-        </section>
+        <wicket:child/>
       </div>
 
       <footer class="main-footer">

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.properties
index 09d1945..47f583c 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.properties
@@ -14,7 +14,6 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-displayRows=Rows to display:
 home=Home
 version=VERSION
 domain=Domain

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage_it.properties
index 7316fc7..ca4a19e 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage_it.properties
@@ -14,7 +14,6 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-displayRows=Righe per pagina:
 home=Home
 version=VERSIONE
 domain=Dom\u00ednio

http://git-wip-us.apache.org/repos/asf/syncope/blob/2ecd96f1/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage_pt_BR.properties
index ab03801..675cff5 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage_pt_BR.properties
@@ -14,7 +14,6 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-displayRows=Linhas para mostrar\:
 home=In\u00edcio
 version=VERS\u00c3O
 domain=Domain