/*******************************************************************************
* Copyright 2011 Antti Havanko
*
* This file is part of Motiver.fi.
* Motiver.fi is licensed under one open source license and one commercial license.
*
* Commercial license: This is the appropriate option if you want to use Motiver.fi in
* commercial purposes. Contact license@motiver.fi for licensing options.
*
* Open source license: This is the appropriate option if you are creating an open source
* application with a license compatible with the GNU GPL license v3. Although the GPLv3 has
* many terms, the most important is that you must provide the source code of your application
* to your users so they can be free to modify your application for their own needs.
******************************************************************************/
package com.delect.motiver.client.view.profile;
import com.delect.motiver.client.AppController;
import com.delect.motiver.client.presenter.profile.PermissionsSelectPresenter;
import com.delect.motiver.client.presenter.profile.PermissionsSelectPresenter.PermissionsSelectHandler;
import com.delect.motiver.shared.Constants;
import com.delect.motiver.shared.util.CommonUtils;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.TableLayout;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Widget;
public class PermissionsSelectView extends PermissionsSelectPresenter.PermissionsSelectDisplay {
private PermissionsSelectHandler handler;
private String queryLast = "";
private LayoutContainer panelPermissionTraining = new LayoutContainer();
private LayoutContainer panelPermissionNutrition = new LayoutContainer();
private LayoutContainer panelPermissionNutritionFoods = new LayoutContainer();
private LayoutContainer panelPermissionCardio = new LayoutContainer();
private LayoutContainer panelPermissionMeasurements = new LayoutContainer();
private LayoutContainer panelPermissionCoach = new LayoutContainer();
private LayoutContainer panelUsers = new LayoutContainer();
public PermissionsSelectView() {
}
@Override
public Widget asWidget() {
Text textDesc = new Text(AppController.Lang.PermissionsDesc());
textDesc.setStyleName("label-form-desc");
this.add(textDesc, new RowData(-1, -1, new Margins(10, 10, 0, 10)));
//search widget
final TextField<String> tfSearch = new TextField<String>();
tfSearch.setAllowBlank(true);
tfSearch.setAutoValidate(true);
tfSearch.setMinLength(Constants.LIMIT_MIN_QUERY_WORD);
CommonUtils.setWarningMessages(tfSearch);
tfSearch.setWidth("775px");
tfSearch.setEmptyText(AppController.Lang.SearchUsers());
tfSearch.addListener(Events.Valid, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
if(!queryLast.equals(tfSearch.getValue())) {
handler.onUserSearch(tfSearch.getValue());
}
}
});
this.add(tfSearch, new RowData(-1, -1, new Margins(10)));
//search results
panelUsers.setStyleAttribute("min-height", "100px");
TableLayout tl = new TableLayout(4);
tl.setCellPadding(5);
tl.setCellHorizontalAlign(HorizontalAlignment.CENTER);
panelUsers.setLayout(tl);
this.add(panelUsers, new RowData(-1, -1, new Margins(10)));
//permission boxes
HorizontalPanel p1 = new HorizontalPanel();
p1.setSpacing(10);
p1.add(panelPermissionTraining);
p1.add(panelPermissionNutrition);
p1.add(panelPermissionNutritionFoods);
p1.setCellWidth(panelPermissionTraining, "33%");
p1.setCellWidth(panelPermissionNutrition, "33%");
p1.setCellWidth(panelPermissionNutritionFoods, "33%");
this.add(p1);
HorizontalPanel p2 = new HorizontalPanel();
p2.setSpacing(10);
p2.add(panelPermissionCardio);
p2.add(panelPermissionMeasurements);
p2.add(panelPermissionCoach);
p2.setCellWidth(panelPermissionCardio, "33%");
p2.setCellWidth(panelPermissionMeasurements, "33%");
p2.setCellWidth(panelPermissionCoach, "33%");
this.add(p2);
return this;
}
@Override
public void setHandler(PermissionsSelectHandler handler) {
this.handler = handler;
}
@Override
public LayoutContainer getUsersContainer() {
return panelUsers;
}
@Override
public LayoutContainer getPermissionTrainingContainer() {
return panelPermissionTraining;
}
@Override
public LayoutContainer getPermissionNutritionContainer() {
return panelPermissionNutrition;
}
@Override
public LayoutContainer getPermissionNutritionFoodsContainer() {
return panelPermissionNutritionFoods;
}
@Override
public LayoutContainer getPermissionCardioContainer() {
return panelPermissionCardio;
}
@Override
public LayoutContainer getPermissionMeasurementsContainer() {
return panelPermissionMeasurements;
}
@Override
public LayoutContainer getPermissionCoachContainer() {
return panelPermissionCoach;
}
}