/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.geofence.gui.client.widget; import org.geoserver.geofence.gui.client.widget.GeofenceSearchWidget; import org.geoserver.geofence.gui.client.ApplicationException; import org.geoserver.geofence.gui.client.GeofenceEvents; import org.geoserver.geofence.gui.client.model.BeanKeyValue; import org.geoserver.geofence.gui.client.model.UserModel; import org.geoserver.geofence.gui.client.service.LoginRemoteServiceAsync; import org.geoserver.geofence.gui.client.widget.SearchStatus.EnumSearchStatus; import java.util.ArrayList; import java.util.List; import com.extjs.gxt.ui.client.data.BasePagingLoader; import com.extjs.gxt.ui.client.data.LoadEvent; import com.extjs.gxt.ui.client.data.ModelData; import com.extjs.gxt.ui.client.data.PagingLoadResult; import com.extjs.gxt.ui.client.data.RpcProxy; import com.extjs.gxt.ui.client.event.LoadListener; import com.extjs.gxt.ui.client.event.WindowEvent; import com.extjs.gxt.ui.client.event.WindowListener; import com.extjs.gxt.ui.client.mvc.Dispatcher; import com.extjs.gxt.ui.client.store.ListStore; 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.PagingToolBar; import com.google.gwt.user.client.rpc.AsyncCallback; // TODO: Auto-generated Javadoc /** * The Class SearchPagUserWidget. */ public class SearchPagUserWidget extends GeofenceSearchWidget<UserModel> { /** The service. */ private LoginRemoteServiceAsync service; /** * Instantiates a new search pag user widget. * * @param service * the service */ public SearchPagUserWidget(LoginRemoteServiceAsync service) { super(); this.service = service; } /* * (non-Javadoc) * * @see org.geoserver.geofence.gui.client.widget.GEOFENCESearchWidget#setWindowProperties() */ @Override public void setWindowProperties() { setHeading("Search for Registered Member"); super.setSize(420, 490); super.addWindowListener(new WindowListener() { @Override public void windowShow(WindowEvent we) { searchText = ""; loader.load(0, 25); } }); } /* * (non-Javadoc) * * @see org.geoserver.geofence.gui.client.widget.GEOFENCESearchWidget#createStore() */ @Override public void createStore() { toolBar = new PagingToolBar(org.geoserver.geofence.gui.client.Constants.DEFAULT_PAGESIZE); this.proxy = new RpcProxy<PagingLoadResult<UserModel>>() { @Override protected void load(Object loadConfig, AsyncCallback<PagingLoadResult<UserModel>> callback) { // TODO REFACTOR GG // service.loadUsers((PagingLoadConfig) loadConfig, searchText, // callback); } }; loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy); loader.setRemoteSort(false); store = new ListStore<UserModel>(loader); this.toolBar.bind(loader); // toolBar.disable(); setUpLoadListener(); } /* * (non-Javadoc) * * @see org.geoserver.geofence.gui.client.widget.GEOFENCESearchWidget#setGridProperties() */ @Override public void setGridProperties() { grid.setAutoExpandColumn(BeanKeyValue.USER_NAME.getValue()); grid.setWidth(350); grid.setHeight("100%"); } /* * (non-Javadoc) * * @see org.geoserver.geofence.gui.client.widget.GEOFENCESearchWidget#prepareColumnModel() */ @Override public ColumnModel prepareColumnModel() { List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); ColumnConfig userNameColumn = new ColumnConfig(); userNameColumn.setId(BeanKeyValue.USER_NAME.getValue()); userNameColumn.setHeader("User Name"); userNameColumn.setWidth(80); configs.add(userNameColumn); ColumnConfig emailAddress = new ColumnConfig(); emailAddress.setId(BeanKeyValue.EMAIL.getValue()); emailAddress.setHeader("Email"); emailAddress.setWidth(120); configs.add(emailAddress); return new ColumnModel(configs); } /* * (non-Javadoc) * * @see org.geoserver.geofence.gui.client.widget.GEOFENCESearchWidget#select() */ @Override public void select() { searchStatus.setBusy("Get User Details...."); Dispatcher.forwardEvent(GeofenceEvents.BIND_SELECTED_USER, grid.getSelectionModel().getSelectedItem()); } /** * Sets the up load listener. */ private void setUpLoadListener() { loader.addLoadListener(new LoadListener() { @Override public void loaderBeforeLoad(LoadEvent le) { searchStatus.setBusy("Connection to the Server"); if (select.isEnabled()) { select.disable(); } } @Override public void loaderLoad(LoadEvent le) { setSearchStatus(EnumSearchStatus.STATUS_SEARCH, EnumSearchStatus.STATUS_MESSAGE_SEARCH); // toolBar.enable(); } @Override public void loaderLoadException(LoadEvent le) { clearGridElements(); try { throw le.exception; } catch (ApplicationException e) { setSearchStatus(EnumSearchStatus.STATUS_NO_SEARCH, EnumSearchStatus.STATUS_MESSAGE_NOT_SEARCH); } catch (Throwable e) { // TODO Auto-generated catch block setSearchStatus(EnumSearchStatus.STATUS_SEARCH_ERROR, EnumSearchStatus.STATUS_MESSAGE_SEARCH_ERROR); } } }); } }