Package org.appfuse.webapp.client.ui.users.search

Source Code of org.appfuse.webapp.client.ui.users.search.UsersSearchActivity

/**
*
*/
package org.appfuse.webapp.client.ui.users.search;

import java.util.List;

import org.appfuse.webapp.client.application.Application;
import org.appfuse.webapp.client.application.base.activity.AbstractProxySearchActivity;
import org.appfuse.webapp.client.application.utils.tables.CustomColumn;
import org.appfuse.webapp.client.application.utils.tables.LocalColumnSortHandler;
import org.appfuse.webapp.client.proxies.UserProxy;
import org.appfuse.webapp.client.proxies.UsersSearchCriteriaProxy;
import org.appfuse.webapp.client.requests.UserRequest;

import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.ColumnSortEvent;
import com.google.gwt.user.cellview.client.ColumnSortEvent.Handler;
import com.google.gwt.user.cellview.client.ColumnSortList;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.view.client.HasData;
import com.google.gwt.view.client.Range;
import com.google.inject.Inject;
import com.google.web.bindery.requestfactory.shared.Request;
import com.google.web.bindery.requestfactory.shared.RequestContext;

/**
* @author ivangsa
*
*/
public class UsersSearchActivity extends AbstractProxySearchActivity<UserProxy, UsersSearchCriteriaProxy> {

    private final UsersSearchView view;
    private Handler sortHandler;

    @Inject
    public UsersSearchActivity(final Application application, final UsersSearchView view) {
  super(application, view, UsersSearchCriteriaProxy.class);
  this.view = view;
  setTitle(i18n.userList_title());
    }

    @Override
    public void start(final AcceptsOneWidget panel, final EventBus eventBus) {
  view.setDelegate(this);
  // Configure local/remote sorting
  // sortHandler = createLocalColumnSortHandler(view.asHasData());
  sortHandler = new ColumnSortEvent.AsyncHandler(view.asHasData());
  view.addColumnSortHandler(sortHandler);

  super.start(panel, eventBus);
    }


    /**
     * @param hasData
     */
    private Handler createLocalColumnSortHandler(final HasData hasData) {
  return new LocalColumnSortHandler<UserProxy>(hasData) {
      @Override
      public List<UserProxy> getList() {
    return (List<UserProxy>) hasData.getVisibleItems();
      }
  };
    }

    private String getPropertyNameForColumn(final Column column) {
  if(column instanceof CustomColumn) {
      return ((CustomColumn) column).getPropertyName();
  }
  return null;
    }

    @Override
    protected RequestContext createRequestContext() {
  return requests.userRequest();
    }

    @Override
    protected Request<Long> createCountRequest(final RequestContext requestContext, final UsersSearchCriteriaProxy searchCriteria) {
  return ((UserRequest) requestContext).countUsers(searchCriteria);
    }

    @Override
    protected Request<List<UserProxy>> createSearchRequest(
      final RequestContext requestContext, final UsersSearchCriteriaProxy searchCriteria,
      final Range range, final ColumnSortList columnSortList) {

  String sortProperty = null;
  boolean ascending = true;
  if(columnSortList.size() > 0) {
      final Column sortColumn = columnSortList.get(0).getColumn();
      sortProperty = getPropertyNameForColumn(sortColumn);
      ascending = columnSortList.get(0).isAscending();
  }

  return ((UserRequest) requestContext).searchUsers(searchCriteria,
    range.getStart(), range.getLength(),
    sortProperty, ascending);
    }

    @Override
    public void onStop() {
  //XXX view.removeColumnSortHandler(sortHandle);
  sortHandler = null;
  super.onStop();
    }
}
TOP

Related Classes of org.appfuse.webapp.client.ui.users.search.UsersSearchActivity

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.