/*
* Copyright (c) 2008 TouK.pl
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package pl.touk.wonderfulsecurity.gwt.client.ui.user;
import com.extjs.gxt.ui.client.Style;
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.BeanModel;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.event.GridEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.extjs.gxt.ui.client.widget.Component;
import com.extjs.gxt.ui.client.widget.form.PropertyEditor;
import com.extjs.gxt.ui.client.widget.form.ListModelPropertyEditor;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.grid.CheckColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.Window;
import pl.touk.tola.gwt.client.widgets.BasicRemoteFilterField;
import pl.touk.wonderfulsecurity.beans.WsecUser;
import pl.touk.wonderfulsecurity.beans.WsecPermission;
import pl.touk.wonderfulsecurity.core.ClientSecurity;
import pl.touk.wonderfulsecurity.gwt.client.WsEvents;
import static pl.touk.wonderfulsecurity.gwt.client.WsEvents.USER_GRID_DOUBLE_CLICK;
import pl.touk.wonderfulsecurity.gwt.client.rpc.ISecurityManagerRpcAsync;
import pl.touk.wonderfulsecurity.gwt.client.rpc.RpcExecutor;
import pl.touk.wonderfulsecurity.gwt.client.ui.BasePagedList;
import pl.touk.wonderfulsecurity.gwt.client.ui.StrippedParameters;
import pl.touk.top.dictionary.impl.gwt.client.widgets.DictionaryBasedRemoteFilter;
import pl.touk.top.dictionary.impl.gwt.client.ComboFactory;
import pl.touk.top.dictionary.model.domain.DictionaryEntry;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author Lukasz Kucharski - lkc@touk.pl
*/
public class WsecUserPagedList extends BasePagedList {
// --------------------------- CONSTRUCTORS ---------------------------
public WsecUserPagedList() {
super(WsecUser.class,"WsecUserPagedList");
}
// -------------------------- OTHER METHODS --------------------------
protected void afterGridRowDoubleClicked(GridEvent ge) {
Object selected = ge.getGrid().getSelectionModel().getSelectedItem();
AppEvent ae = new AppEvent(USER_GRID_DOUBLE_CLICK);
ae.setData("USER", ((BeanModel) selected).getBean());
Dispatcher.get().dispatch(ae);
}
protected ColumnModel buildColumnModel() {
List columnConfig = new ArrayList();
// id raczej nikomu nie jest potrzebne wiec zakomentowalem
// columnConfig.add(new ColumnConfig("id", "Id", 80));
columnConfig.add(new ColumnConfig("login", "Login", 100));
columnConfig.add(new ColumnConfig("jobTitle", "Stanowisko", 100));
columnConfig.add(new ColumnConfig("firstName", "Imię", 100));
columnConfig.add(new ColumnConfig("lastName", "Nazwisko", 100));
columnConfig.add(new ColumnConfig("street", "Ulica", 100));
columnConfig.add(new ColumnConfig("city", "miasto", 100));
columnConfig.add(new ColumnConfig("emailAddress", "Email", 100));
columnConfig.add(new CheckColumnConfig("enabled", "Aktywny", 60));
this.setExpandedColumnId("emailAddress");
ColumnModel cm = new ColumnModel(columnConfig);
return cm;
}
protected String buildHeading() {
return "Lista wszystkich użytkowników";
}
protected RpcProxy constructRpcProxy() {
RpcProxy proxy = new RpcProxy() {
protected void load(Object loadConfig, final AsyncCallback asyncCallback) {
BasePagingLoadConfig plc = ((BasePagingLoadConfig) loadConfig);
StrippedParameters strippedParams = new StrippedParameters(plc);
// TODO: change somuser to interface call
ISecurityManagerRpcAsync securityManagerRpc = ClientSecurity.getAsyncSecurityManager();
RequestBuilder rb = securityManagerRpc.fetchPagedListWithOverallCount("Some user", strippedParams.getProperties(), plc.getOffset(),
plc.getLimit(), plc.getSortInfo().getSortField(), plc.getSortInfo().getSortDir() == Style.SortDir.DESC,
"pl.touk.wonderfulsecurity.beans.WsecUser", asyncCallback);
RpcExecutor.execute(rb);
}
};
return proxy;
}
protected Component constructTopComponent() {
ToolBar tb = new ToolBar();
BasicRemoteFilterField loginFilterField = new BasicRemoteFilterField(super.pagingToolbar, super.pagingLoader, "login@#LIKE");
loginFilterField.setEmptyText("Filtruj loginy");
tb.add(loginFilterField);
BasicRemoteFilterField lastnameFilterField = new BasicRemoteFilterField(super.pagingToolbar, super.pagingLoader, "lastName@#LIKE");
lastnameFilterField.setEmptyText("Filtruj nazwiska");
tb.add(lastnameFilterField);
BasicRemoteFilterField emailFilterField = new BasicRemoteFilterField(super.pagingToolbar, super.pagingLoader, "emailAddress@#LIKE");
emailFilterField.setEmptyText("Filtruj email");
tb.add(emailFilterField);
DictionaryBasedRemoteFilter groupFilter = ComboFactory.buildRemoteFilterComboBox("ALL_GROUPS", super.pagingLoader, super.pagingToolbar, "groups.id", DictionaryBasedRemoteFilter.TargetFieldType.LONG);
groupFilter.setEmptyText("Filtruj grupę");
tb.add(groupFilter);
tb.add(new SeparatorToolItem());
Button addNewUser = new Button("Dodaj nowego użytkownika");
// addNewUser.setStyleName("icon-add");
addNewUser.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
Dispatcher.get().dispatch(WsEvents.CREATE_NEW_USER);
}
});
addNewUser.setEnabled(ClientSecurity.hasPermission(WsecPermission.WSEC_ADD_USR_BTN));
tb.add(addNewUser);
return tb;
}
/*
protected ToolBar buildFilterToolbar() {
ToolBar tb = new ToolBar();
BasicRemoteFilterField loginFilterField = new BasicRemoteFilterField(super.pagingToolbar, super.pagingLoader, "user");
loginFilterField.setEmptyText("Filtruj Login");
tb.add(new AdapterToolItem(loginFilterField));
return tb ;
}
*/
}