Package name.pehl.karaka.client.activity.view

Source Code of name.pehl.karaka.client.activity.view.NewActivityView

package name.pehl.karaka.client.activity.view;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.SuggestBox;
import com.google.gwt.user.client.ui.SuggestOracle.Suggestion;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.ViewWithUiHandlers;
import name.pehl.karaka.client.activity.presenter.NewActivityPresenter;
import name.pehl.karaka.client.activity.presenter.NewActivityUiHandlers;
import name.pehl.karaka.client.model.NamedModelSuggestOracle;
import name.pehl.karaka.client.model.NamedModelSuggestion;
import name.pehl.karaka.client.project.ProjectsCache;
import name.pehl.karaka.client.resources.Resources;
import name.pehl.karaka.client.ui.Html5TextBox;
import name.pehl.karaka.shared.model.Activity;
import name.pehl.karaka.shared.model.Duration;
import name.pehl.karaka.shared.model.Project;

import java.util.Date;

public class NewActivityView extends ViewWithUiHandlers<NewActivityUiHandlers> implements NewActivityPresenter.MyView
{
    @SuppressWarnings("GwtCssResourceErrors")
    interface Style extends CssResource
    {
        String selectedDate();
    }

    public interface Binder extends UiBinder<Widget, NewActivityView>
    {
    }

    private static final long ONE_DAY = 86400000l;
    private static final DateTimeFormat DATE_FORMAT = DateTimeFormat.getFormat("dd. MMM");

    final Widget widget;
    final Resources resources;
    final ActivitySuggestOracle activityOracle;

    @UiField Style style;
    @UiField Anchor theDayBeforeYesterday;
    @UiField Anchor yesterday;
    @UiField Anchor today;
    @UiField CalendarLink calendar;
    @UiField(provided = true) SuggestBox activity;
    @UiField(provided = true) SuggestBox project;
    @UiField DurationTextBox duration;


    // ------------------------------------------------------------------ setup

    @Inject
    public NewActivityView(final Binder binder, final Resources resources, final ProjectsCache projectsCache)
    {
        this.resources = resources;
        this.resources.navigation().ensureInjected();

        this.activityOracle = new ActivitySuggestOracle();
        Html5TextBox activityTextBox = new Html5TextBox();
        activityTextBox.setPlaceholder("Select or enter a new activity");
        this.activity = new SuggestBox(activityOracle, activityTextBox);

        NamedModelSuggestOracle<Project> projectOracle = new NamedModelSuggestOracle<Project>(projectsCache);
        Html5TextBox projectTextBox = new Html5TextBox();
        projectTextBox.setPlaceholder("Select or enter a new project");
        this.project = new SuggestBox(projectOracle, projectTextBox);

        this.widget = binder.createAndBindUi(this);
        this.today.addStyleName(style.selectedDate());
        this.yesterday.setText(DATE_FORMAT.format(new Date(System.currentTimeMillis() - ONE_DAY)));
        this.theDayBeforeYesterday.setText(DATE_FORMAT.format(new Date(System.currentTimeMillis() - 2 * ONE_DAY)));
    }


    @Override
    public Widget asWidget()
    {
        return widget;
    }


    @Override
    public void setUiHandlers(final NewActivityUiHandlers uiHandlers)
    {
        super.setUiHandlers(uiHandlers);
        activityOracle.setUiHandlers(uiHandlers);
    }


    // ----------------------------------------------------------- view methods

    @Override
    public void setProject(final Project project)
    {
        this.project.setValue(project.getName());
        if (getUiHandlers() != null)
        {
            getUiHandlers().onProjectSelected(project);
        }
    }

    @Override
    public void clear()
    {
        activity.setText("");
        project.setText("");
        duration.clear();
        activity.setFocus(true);
    }

    // ------------------------------------------------------------ ui handlers

    @UiHandler("theDayBeforeYesterday")
    void onTheDayBeforeYesterdayClicked(final ClickEvent event)
    {
        theDayBeforeYesterday.addStyleName(style.selectedDate());
        yesterday.removeStyleName(style.selectedDate());
        today.removeStyleName(style.selectedDate());
        calendar.removeStyleName(style.selectedDate());
        calendar.reset();
        if (getUiHandlers() != null)
        {
            Date date = new Date(System.currentTimeMillis() - 2 * ONE_DAY);
            getUiHandlers().onSelectDate(date);
        }
    }


    @UiHandler("yesterday")
    void onYesterdayClicked(final ClickEvent event)
    {
        theDayBeforeYesterday.removeStyleName(style.selectedDate());
        yesterday.addStyleName(style.selectedDate());
        today.removeStyleName(style.selectedDate());
        calendar.removeStyleName(style.selectedDate());
        calendar.reset();
        if (getUiHandlers() != null)
        {
            Date date = new Date(System.currentTimeMillis() - ONE_DAY);
            getUiHandlers().onSelectDate(date);
        }
    }


    @UiHandler("today")
    void onTodayClicked(final ClickEvent event)
    {
        theDayBeforeYesterday.removeStyleName(style.selectedDate());
        yesterday.removeStyleName(style.selectedDate());
        today.addStyleName(style.selectedDate());
        calendar.removeStyleName(style.selectedDate());
        calendar.reset();
        if (getUiHandlers() != null)
        {
            getUiHandlers().onSelectDate(new Date());
        }
    }


    @UiHandler("calendar")
    void onCalendarClicked(final ClickEvent event)
    {
        theDayBeforeYesterday.removeStyleName(style.selectedDate());
        yesterday.removeStyleName(style.selectedDate());
        today.removeStyleName(style.selectedDate());
        calendar.addStyleName(style.selectedDate());
    }


    @UiHandler("calendar")
    void onCalendarChanged(final ValueChangeEvent<Date> event)
    {
        if (getUiHandlers() != null)
        {
            getUiHandlers().onSelectDate(event.getValue());
        }
    }


    @UiHandler("activity")
    @SuppressWarnings("unchecked")
    void onActivitySelected(final SelectionEvent<Suggestion> event)
    {
        NamedModelSuggestion<Activity> suggestion = (NamedModelSuggestion<Activity>) event.getSelectedItem();
        if (getUiHandlers() != null)
        {
            getUiHandlers().onActivitySelected(suggestion.getModel());
        }
    }


    @UiHandler("activity")
    void onActivityChanged(final ValueChangeEvent<String> event)
    {
        String value = event.getValue();
        if (value != null && value.length() != 0)
        {
            if (getUiHandlers() != null)
            {
                getUiHandlers().onActivityChanged(value);
            }
        }
    }


    @UiHandler("project")
    @SuppressWarnings("unchecked")
    void onProjectSelected(final SelectionEvent<Suggestion> event)
    {
        NamedModelSuggestion<Project> suggestion = (NamedModelSuggestion<Project>) event.getSelectedItem();
        if (getUiHandlers() != null)
        {
            getUiHandlers().onProjectSelected(suggestion.getModel());
        }
    }


    @UiHandler("project")
    void onProjectChanged(final ValueChangeEvent<String> event)
    {
        String value = event.getValue();
        if (value != null && value.length() != 0)
        {
            if (getUiHandlers() != null)
            {
                getUiHandlers().onProjectChanged(value);
            }
        }
    }


    @UiHandler("duration")
    void onDurationChanged(final ValueChangeEvent<Duration> event)
    {
        if (getUiHandlers() != null)
        {
            getUiHandlers().onDurationChanged(event.getValue());
        }
    }


    @UiHandler("duration")
    void onReturnOnDuration(final KeyUpEvent event)
    {
        if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER)
        {
            if (getUiHandlers() != null)
            {
                getUiHandlers().onNewActivity();
            }
        }
    }
}
TOP

Related Classes of name.pehl.karaka.client.activity.view.NewActivityView

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.