Java tutorial
/*! * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2002-2016 Pentaho Corporation.. All rights reserved. */ package org.pentaho.mantle.client.admin; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.PasswordTextBox; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import org.pentaho.gwt.widgets.client.buttons.ThemeableImageButton; import org.pentaho.gwt.widgets.client.tabs.PentahoTabPanel; import org.pentaho.mantle.client.messages.Messages; import org.pentaho.mantle.client.ui.custom.HorizontalScrollWrapper; import org.pentaho.mantle.client.ui.custom.ListBoxTitle; public class UserRolesAdminPanel extends SimplePanel { protected PasswordTextBox userPasswordTextBox; protected ListBox rolesListBox; protected ListBox systemRolesListBox; protected ListBox usersListBox; protected ListBox selectedRolesListBox; protected ListBox selectedMembersListBox; protected ListBox availableMembersListBox; protected ListBox availableRolesListBox; protected ThemeableImageButton addUserButton; protected ThemeableImageButton removeUserButton; protected ThemeableImageButton addAllUsersButton; protected ThemeableImageButton removeAllUsersButton; protected ThemeableImageButton addRoleButton; protected ThemeableImageButton removeRoleButton; protected ThemeableImageButton addAllRolesButton; protected ThemeableImageButton removeAllRolesButton; protected ThemeableImageButton newRoleButton; protected ThemeableImageButton deleteRoleButton; protected ThemeableImageButton newUserButton; protected ThemeableImageButton deleteUserButton; protected Button editPasswordButton; protected PermissionsPanel rolesPermissionsPanel; protected PermissionsPanel systemRolesPermissionsPanel; protected PentahoTabPanel mainTabPanel; protected HorizontalPanel usersPanel; protected VerticalPanel usersLabelPanel; private static final String[] addButtonStyles = new String[] { "pentaho-addbutton" }; private static final String[] removeButtonStyles = new String[] { "pentaho-deletebutton" }; private static final String[] accumAddButtonStyles = new String[] { "icon-small", "icon-accum-add" }; private static final String[] accumAddAllButtonStyles = new String[] { "icon-small", "icon-accum-add-all" }; private static final String[] accumRemoveButtonStyles = new String[] { "icon-small", "icon-accum-remove" }; private static final String[] accumRemoveAllButtonStyles = new String[] { "icon-small", "icon-accum-remove-all" }; private static UserRolesAdminPanel instance = new UserRolesAdminPanel(); public static UserRolesAdminPanel getInstance() { return instance; } protected UserRolesAdminPanel() { VerticalPanel mainPanel = new VerticalPanel(); Label usersRolesLabel = new Label(Messages.getString("users") + " / " + Messages.getString("roles")); usersRolesLabel.setStyleName("pentaho-fieldgroup-major"); mainPanel.add(usersRolesLabel); SimplePanel vSpacer = new SimplePanel(); vSpacer.setHeight("20px"); mainPanel.add(vSpacer); mainTabPanel = new PentahoTabPanel(); mainTabPanel.addTab(Messages.getString("manageUsers"), "", false, createUsersPanel()); mainTabPanel.addTab(Messages.getString("manageRoles"), "", false, createRolesPanel()); mainTabPanel.addTab(Messages.getString("systemRoles"), "", false, createSystemRolesPanel()); mainPanel.add(mainTabPanel); setWidget(mainPanel); } private Widget createUsersPanel() { HorizontalPanel mainUsersPanel = new HorizontalPanel(); mainUsersPanel.getElement().setId("admin-users-panel"); // mainUsersPanel.setWidth("376px"); SimplePanel hSpacer = new SimplePanel(); hSpacer.setWidth("15px"); mainUsersPanel.add(hSpacer); VerticalPanel availablePanel = new VerticalPanel(); mainUsersPanel.add(availablePanel); hSpacer = new SimplePanel(); hSpacer.setHeight("15px"); availablePanel.add(hSpacer); HorizontalPanel labelAndButtonsPanel = new HorizontalPanel(); labelAndButtonsPanel.setWidth("100%"); availablePanel.add(labelAndButtonsPanel); Label usersColonLabel = new Label(Messages.getString("usersColon")); labelAndButtonsPanel.add(usersColonLabel); labelAndButtonsPanel.setCellWidth(usersColonLabel, "100%"); hSpacer = new SimplePanel(); hSpacer.setWidth("100%"); labelAndButtonsPanel.add(hSpacer); labelAndButtonsPanel.setCellWidth(hSpacer, "100%"); newUserButton = new ThemeableImageButton(addButtonStyles, null, Messages.getString("new")); labelAndButtonsPanel.add(newUserButton); hSpacer = new SimplePanel(); hSpacer.setWidth("7px"); labelAndButtonsPanel.add(hSpacer); deleteUserButton = new ThemeableImageButton(removeButtonStyles, null, Messages.getString("delete")); labelAndButtonsPanel.add(deleteUserButton); usersListBox = new ListBoxTitle(true); usersListBox.addStyleName("users-roles-list"); HorizontalScrollWrapper usersListBoxWrapper = new HorizontalScrollWrapper(usersListBox); availablePanel.add(usersListBoxWrapper); availablePanel.setCellHeight(usersListBoxWrapper, "100%"); usersListBox.setVisibleItemCount(20); hSpacer = new SimplePanel(); hSpacer.setWidth("24px"); mainUsersPanel.add(hSpacer); VerticalPanel detailsPanel = new VerticalPanel(); mainUsersPanel.add(detailsPanel); mainUsersPanel.setCellWidth(detailsPanel, "100%"); hSpacer = new SimplePanel(); hSpacer.setHeight("32px"); detailsPanel.add(hSpacer); detailsPanel.add(new Label(Messages.getString("password") + ":")); userPasswordTextBox = new PasswordTextBox(); userPasswordTextBox.setEnabled(false); userPasswordTextBox.setWidth("200px"); HorizontalPanel passwordPanel = new HorizontalPanel(); passwordPanel.add(userPasswordTextBox); hSpacer = new SimplePanel(); hSpacer.setWidth("10px"); passwordPanel.add(hSpacer); editPasswordButton = new Button(Messages.getString("edit") + "..."); editPasswordButton.setStylePrimaryName("pentaho-button"); editPasswordButton.setEnabled(false); passwordPanel.add(editPasswordButton); detailsPanel.add(passwordPanel); hSpacer = new SimplePanel(); hSpacer.setHeight("15px"); detailsPanel.add(hSpacer); Label roleLabel = new Label(Messages.getString("roles")); roleLabel.setStyleName("pentaho-fieldgroup-minor"); detailsPanel.add(roleLabel); hSpacer = new SimplePanel(); hSpacer.setHeight("15px"); detailsPanel.add(hSpacer); HorizontalPanel groupsPanel = new HorizontalPanel(); groupsPanel.getElement().setId("groups-panel"); detailsPanel.add(groupsPanel); VerticalPanel availableRolesPanel = new VerticalPanel(); groupsPanel.add(availableRolesPanel); availableRolesPanel.add(new Label(Messages.getString("available") + ":")); availableRolesListBox = new ListBoxTitle(true); HorizontalScrollWrapper availableRolesListBoxWrapper = new HorizontalScrollWrapper(availableRolesListBox); availableRolesPanel.add(availableRolesListBoxWrapper); availableRolesListBox.setVisibleItemCount(20); availableRolesListBox.addStyleName("users-roles-selection-list"); VerticalPanel vSpacer = new VerticalPanel(); vSpacer.setWidth("15px"); groupsPanel.add(vSpacer); VerticalPanel arrowsPanel = new VerticalPanel(); groupsPanel.add(arrowsPanel); arrowsPanel.setWidth("35px"); hSpacer = new SimplePanel(); hSpacer.setHeight("110px"); arrowsPanel.add(hSpacer); addRoleButton = new ThemeableImageButton(accumAddButtonStyles, null, null); arrowsPanel.add(addRoleButton); hSpacer = new SimplePanel(); hSpacer.setHeight("10px"); arrowsPanel.add(hSpacer); removeRoleButton = new ThemeableImageButton(accumRemoveButtonStyles, null, null); arrowsPanel.add(removeRoleButton); hSpacer = new SimplePanel(); hSpacer.setHeight("30px"); arrowsPanel.add(hSpacer); addAllRolesButton = new ThemeableImageButton(accumAddAllButtonStyles, null, null); arrowsPanel.add(addAllRolesButton); hSpacer = new SimplePanel(); hSpacer.setHeight("10px"); arrowsPanel.add(hSpacer); removeAllRolesButton = new ThemeableImageButton(accumRemoveAllButtonStyles, null, null); arrowsPanel.add(removeAllRolesButton); VerticalPanel selectedRolesPanel = new VerticalPanel(); groupsPanel.add(selectedRolesPanel); selectedRolesPanel.add(new Label(Messages.getString("selected") + ":")); selectedRolesListBox = new ListBoxTitle(true); HorizontalScrollWrapper selectedRolesListBoxWrapper = new HorizontalScrollWrapper(selectedRolesListBox); selectedRolesPanel.add(selectedRolesListBoxWrapper); selectedRolesListBox.setVisibleItemCount(20); selectedRolesListBox.addStyleName("users-roles-selection-list"); return mainUsersPanel; } private Widget createSystemRolesPanel() { HorizontalPanel mainSystemRolesPanel = new HorizontalPanel(); mainSystemRolesPanel.getElement().setId("admin-system-roles-panel"); SimplePanel hSpacer = new SimplePanel(); hSpacer.setWidth("15px"); mainSystemRolesPanel.add(hSpacer); VerticalPanel availablePanel = new VerticalPanel(); mainSystemRolesPanel.add(availablePanel); hSpacer = new SimplePanel(); hSpacer.setHeight("15px"); availablePanel.add(hSpacer); HorizontalPanel labelAndButtonsPanel = new HorizontalPanel(); availablePanel.add(labelAndButtonsPanel); labelAndButtonsPanel.add(new Label(Messages.getString("rolesColon"))); labelAndButtonsPanel.setStyleName("pentaho-fieldgroup-minor"); systemRolesListBox = new ListBoxTitle(true); HorizontalScrollWrapper systemRolesListBoxWrapper = new HorizontalScrollWrapper(systemRolesListBox); availablePanel.add(systemRolesListBoxWrapper); availablePanel.setCellHeight(systemRolesListBoxWrapper, "100%"); systemRolesListBox.setVisibleItemCount(20); systemRolesListBox.addStyleName("users-roles-list"); hSpacer = new SimplePanel(); hSpacer.setWidth("24px"); mainSystemRolesPanel.add(hSpacer); VerticalPanel detailsPanel = new VerticalPanel(); detailsPanel.getElement().setId("details-panel"); mainSystemRolesPanel.add(detailsPanel); mainSystemRolesPanel.setCellWidth(detailsPanel, "100%"); hSpacer = new SimplePanel(); hSpacer.setHeight("15px"); detailsPanel.add(hSpacer); //todo check if replacement required systemRolesPermissionsPanel = new PermissionsPanel(systemRolesListBox); detailsPanel.add(systemRolesPermissionsPanel); detailsPanel.setCellHeight(systemRolesPermissionsPanel, "100%"); return mainSystemRolesPanel; } private Widget createRolesPanel() { HorizontalPanel mainRolesPanel = new HorizontalPanel(); mainRolesPanel.getElement().setId("admin-roles-panel"); SimplePanel hSpacer = new SimplePanel(); hSpacer.setWidth("15px"); mainRolesPanel.add(hSpacer); VerticalPanel availablePanel = new VerticalPanel(); mainRolesPanel.add(availablePanel); hSpacer = new SimplePanel(); hSpacer.setHeight("15px"); availablePanel.add(hSpacer); HorizontalPanel labelAndButtonsPanel = new HorizontalPanel(); labelAndButtonsPanel.setWidth("100%"); availablePanel.add(labelAndButtonsPanel); Label rolesLabel = new Label(Messages.getString("roles")); labelAndButtonsPanel.add(rolesLabel); labelAndButtonsPanel.setCellWidth(rolesLabel, "100%"); hSpacer = new SimplePanel(); hSpacer.setWidth("100%"); labelAndButtonsPanel.add(hSpacer); labelAndButtonsPanel.setCellWidth(hSpacer, "100%"); newRoleButton = new ThemeableImageButton(addButtonStyles, null, Messages.getString("new")); labelAndButtonsPanel.add(newRoleButton); hSpacer = new SimplePanel(); hSpacer.setWidth("7px"); labelAndButtonsPanel.add(hSpacer); deleteRoleButton = new ThemeableImageButton(removeButtonStyles, null, Messages.getString("delete")); labelAndButtonsPanel.add(deleteRoleButton); rolesListBox = new ListBoxTitle(true); HorizontalScrollWrapper rolesListBoxWrapper = new HorizontalScrollWrapper(rolesListBox); availablePanel.add(rolesListBoxWrapper); availablePanel.setCellHeight(rolesListBoxWrapper, "100%"); rolesListBox.setVisibleItemCount(20); rolesListBox.addStyleName("users-roles-list"); hSpacer = new SimplePanel(); hSpacer.setWidth("24px"); mainRolesPanel.add(hSpacer); VerticalPanel detailsPanel = new VerticalPanel(); mainRolesPanel.add(detailsPanel); mainRolesPanel.setCellWidth(detailsPanel, "100%"); hSpacer = new SimplePanel(); hSpacer.setHeight("15px"); detailsPanel.add(hSpacer); //todo check if replacement required rolesPermissionsPanel = new PermissionsPanel(rolesListBox); detailsPanel.add(rolesPermissionsPanel); usersLabelPanel = new VerticalPanel(); Label usersLabel = new Label(Messages.getString("users")); usersLabel.setStyleName("pentaho-fieldgroup-minor"); hSpacer = new SimplePanel(); hSpacer.setHeight("15px"); usersLabelPanel.add(hSpacer); usersLabelPanel.add(usersLabel); hSpacer = new SimplePanel(); hSpacer.setHeight("15px"); usersLabelPanel.add(hSpacer); detailsPanel.add(usersLabelPanel); usersPanel = new HorizontalPanel(); usersPanel.getElement().setId("users-panel"); detailsPanel.add(usersPanel); VerticalPanel availableMembersPanel = new VerticalPanel(); usersPanel.add(availableMembersPanel); availableMembersPanel.add(new Label(Messages.getString("available") + ":")); availableMembersListBox = new ListBoxTitle(true); HorizontalScrollWrapper availableMembersListBoxWrapper = new HorizontalScrollWrapper( availableMembersListBox); availableMembersPanel.add(availableMembersListBoxWrapper); availableMembersListBox.setVisibleItemCount(20); availableMembersListBox.addStyleName("users-roles-selection-list"); VerticalPanel vSpacer = new VerticalPanel(); vSpacer.setWidth("15px"); usersPanel.add(vSpacer); VerticalPanel arrowsPanel = new VerticalPanel(); usersPanel.add(arrowsPanel); arrowsPanel.setWidth("35px"); hSpacer = new SimplePanel(); hSpacer.setHeight("80px"); arrowsPanel.add(hSpacer); addUserButton = new ThemeableImageButton(accumAddButtonStyles, null, null); arrowsPanel.add(addUserButton); hSpacer = new SimplePanel(); hSpacer.setHeight("10px"); arrowsPanel.add(hSpacer); removeUserButton = new ThemeableImageButton(accumRemoveButtonStyles, null, null); arrowsPanel.add(removeUserButton); hSpacer = new SimplePanel(); hSpacer.setHeight("30px"); arrowsPanel.add(hSpacer); addAllUsersButton = new ThemeableImageButton(accumAddAllButtonStyles, null, null); arrowsPanel.add(addAllUsersButton); hSpacer = new SimplePanel(); hSpacer.setHeight("10px"); arrowsPanel.add(hSpacer); removeAllUsersButton = new ThemeableImageButton(accumRemoveAllButtonStyles, null, null); arrowsPanel.add(removeAllUsersButton); VerticalPanel selectedMembersPanel = new VerticalPanel(); usersPanel.add(selectedMembersPanel); selectedMembersPanel.add(new Label(Messages.getString("selected") + ":")); selectedMembersListBox = new ListBoxTitle(true); HorizontalScrollWrapper selectedMembersListBoxWrapper = new HorizontalScrollWrapper(selectedMembersListBox); selectedMembersPanel.add(selectedMembersListBoxWrapper); selectedMembersListBox.setVisibleItemCount(20); selectedMembersListBox.addStyleName("users-roles-selection-list"); return mainRolesPanel; } }