Package name.shamansir.mvp4glayoutdemo.client.page.news.view

Source Code of name.shamansir.mvp4glayoutdemo.client.page.news.view.NewsEditView

/**
*
*/
package name.shamansir.mvp4glayoutdemo.client.page.news.view;

import java.util.Date;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiTemplate;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;

import name.shamansir.mvp4glayout.client.ui.Pluggable;
import name.shamansir.mvp4glayout.client.ui.widget.Plug;
import name.shamansir.mvp4glayout.client.ui.widget.Portal;

import name.shamansir.mvp4glayoutdemo.client.page.news.presenter.NewsEditPresenter.Display;
import name.shamansir.mvp4glayoutdemo.shared.dao.NewsItem;
import name.shamansir.mvp4glayoutdemo.shared.dao.User;

/**
* @author Ulric Wilfred <shaman.sir@gmail.com>
*
*/
public class NewsEditView extends Portal implements Display {
   
    @UiTemplate("NewsEditView.ui.xml"
    interface EditViewUiBinder extends UiBinder<Widget, NewsEditView> { }  
    private static EditViewUiBinder uiBinder = GWT.create(EditViewUiBinder.class);

    @UiField Plug infoPlug;
    @UiField Plug savePlug;
   
    @UiField TextBox title;
    @UiField TextArea text;
    @UiField Button save;
   
    private int currentItem = -1;
    private User currentAuthor;
    private Date currentPostTime;
   
    @Override
    public void createView() {
        initWidget(uiBinder.createAndBindUi(this));
    }

    @Override
    public void loadItem(NewsItem item) {
        this.currentItem = item.getId();
        this.currentAuthor = item.author;
        this.currentPostTime = item.postTime;
        title.setValue(item.title);
        text.setValue(item.text);
    }

    @Override
    public NewsItem collect() {
        final NewsItem result = new NewsItem(currentItem);
        result.title = title.getValue();
        result.text = text.getValue();
        result.author = currentAuthor != null ? currentAuthor : createDefaultAuthor();
        result.postTime = currentPostTime != null ? currentPostTime : new Date();
        return result;
    }

    private User createDefaultAuthor() {
        final User author = new User(-1);
        author.name = "Default";
        author.familyName = "Default";
        author.age = 84;
        author.avatar = "default.jpg";
        return author;
    }

    @Override
    public void itemSavedAs(int newId) {
        this.currentItem = newId;
        Window.alert("News item " + newId + " is saved");
    }

    @Override
    public void clear() {
        currentItem = -1;
        currentAuthor = null;
        currentPostTime = null;       
        title.setValue("");
        text.setValue("");
    }

    @Override
    public HasClickHandlers getSaveButton() {
        return save;
    }

    @Override
    public Pluggable getItemEditor() {
        return infoPlug;
    }

    @Override
    public Pluggable getSavePlug() {
        return savePlug;
    }

}
TOP

Related Classes of name.shamansir.mvp4glayoutdemo.client.page.news.view.NewsEditView

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.