Package com.changestuffs.client.core.articles

Source Code of com.changestuffs.client.core.articles.UpdateArticlePresenter$MyView

package com.changestuffs.client.core.articles;

import java.util.Date;

import com.changestuffs.client.core.lookfor.LookforPresenter;
import com.changestuffs.client.place.NameTokens;
import com.changestuffs.client.widget.texteditor.TextEditorPresenter;
import com.changestuffs.shared.actions.ArticlesAddAction;
import com.changestuffs.shared.actions.ArticlesAddResult;
import com.changestuffs.shared.actions.LookForAction;
import com.changestuffs.shared.actions.LookForResult;
import com.changestuffs.shared.constants.Tags;
import com.changestuffs.shared.dto.ArticlesDtoOut;
import com.changestuffs.shared.dto.IArticlesDto;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.event.shared.GwtEvent.Type;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.inject.Inject;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.dispatch.shared.DispatchAsync;
import com.gwtplatform.mvp.client.HasUiHandlers;
import com.gwtplatform.mvp.client.PresenterWidget;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.ContentSlot;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.gwtplatform.mvp.client.proxy.PlaceRequest;
import com.gwtplatform.mvp.client.proxy.PlaceRequest.Builder;
import com.gwtplatform.mvp.client.proxy.RevealContentHandler;

public class UpdateArticlePresenter extends
    PresenterWidget<UpdateArticlePresenter.MyView> implements UpdateArticleUiHandler, HasUiHandlers<UpdateSuccessArticleUiHandler> {

  private final TextEditorPresenter editorPresenter;
  private final DispatchAsync dispatcher;
  private UpdateSuccessArticleUiHandler uiHandlers;
  private String keyHash;
  private final PlaceManager placeManager;

  @ContentSlot
  public static final Type<RevealContentHandler<?>> TYPE_SetContent = new Type<RevealContentHandler<?>>();

  public interface MyView extends View, HasUiHandlers<UpdateArticleUiHandler> {
    void setFields(IArticlesDto dto);
  }

  @Inject
  public UpdateArticlePresenter(final EventBus eventBus, final MyView view,
      final TextEditorPresenter editorPresenter,
      final DispatchAsync dispatcher, PlaceManager placeManager) {
    super(eventBus, view);
    getView().setUiHandlers(this);
    this.editorPresenter = editorPresenter;
    this.dispatcher = dispatcher;
    this.placeManager = placeManager;
  }

  @Override
  protected void onReveal() {
    super.onReveal();
    setInSlot(TYPE_SetContent, editorPresenter);
  }

  public void setFields(final IArticlesDto article) {
    dispatcher.execute(new LookForAction(null, article.getKeyHash()),
        new AsyncCallback<LookForResult>() {

          @Override
          public void onFailure(Throwable caught) {
            GWT.log("Some error", caught);
          }

          @Override
          public void onSuccess(LookForResult result) {
            IArticlesDto dto = result.getArticles().get(article.getKeyHash());
            getView().setFields(dto);
            editorPresenter.setHtml(dto.getDescription());
            keyHash = article.getKeyHash();
          }
        });
  }

  @Override
  public void updateProduct(Tags tag, String name, String interestedIn, String language) {
    final ArticlesAddAction action = new ArticlesAddAction(tag, name, editorPresenter.getHtml(), new Date(), keyHash, interestedIn, language);
    dispatcher.execute(action, new AsyncCallback<ArticlesAddResult>() {
      @Override
      public void onFailure(Throwable caught) {
        GWT.log("Some error", caught);
      }
      @Override
      public void onSuccess(ArticlesAddResult result) {
        ArticlesDtoOut articlesDto = new ArticlesDtoOut();
        articlesDto.setDate(action.getDate());
        articlesDto.setKeyHash(action.getKeyHash());
        articlesDto.setName(action.getName());
        articlesDto.setTag(result.getTagOut());
        uiHandlers.updateSuccessProduct(articlesDto);
        Builder request = new PlaceRequest.Builder().nameToken(
            NameTokens.getLookfor()).with(
            LookforPresenter.Parameters.id.name(),
            result.getIdHash());

        placeManager.revealPlace(request.build());
      }
    });
  }

  @Override
  public void setUiHandlers(UpdateSuccessArticleUiHandler uiHandlers) {
    this.uiHandlers=uiHandlers;
  }

  @Override
  public void handleCancel() {
    Builder request = new PlaceRequest.Builder().nameToken(NameTokens.getArticles());
    placeManager.revealPlace(request.build());
  }
}
TOP

Related Classes of com.changestuffs.client.core.articles.UpdateArticlePresenter$MyView

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.