Package com.taobao.zeus.web.platform.client.module.jobmanager

Source Code of com.taobao.zeus.web.platform.client.module.jobmanager.JobManagerPresenterImpl

package com.taobao.zeus.web.platform.client.module.jobmanager;

import java.util.Iterator;
import java.util.List;

import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.HasWidgets;
import com.taobao.zeus.web.platform.client.app.PlacePath;
import com.taobao.zeus.web.platform.client.app.PlacePath.App;
import com.taobao.zeus.web.platform.client.app.PlacePath.JobType;
import com.taobao.zeus.web.platform.client.app.PlatformPlace.KV;
import com.taobao.zeus.web.platform.client.module.jobmanager.event.TreeNodeChangeEvent;
import com.taobao.zeus.web.platform.client.module.jobmanager.event.TreeNodeSelectEvent;
import com.taobao.zeus.web.platform.client.util.Callback;
import com.taobao.zeus.web.platform.client.util.PlatformContext;
import com.taobao.zeus.web.platform.client.util.place.PlatformPlaceChangeEvent;

public class JobManagerPresenterImpl implements JobManagerPresenter {
  private PlatformContext context;
  private JobManagerView jobManagerView;
 
  public JobManagerPresenterImpl(PlatformContext context){
    this.context=context;
    context.getPlatformBus().addHandler(TreeNodeSelectEvent.type, new TreeNodeSelectEvent.TreeNodeSelectHandler() {
      public void onSelect(TreeNodeSelectEvent event) {
        //my tree
        final String providerKey = event.getProviderKey();
           
            updateHistory(TreeKeyProviderTool.parseId(providerKey),
                    getJobManagerView().isMyTreeActive() ? JobType.MyJob
                            : JobType.SharedJob,
                    TreeKeyProviderTool.parseIsJob(providerKey));
           
                doSelect(providerKey);
      }
    });
    context.getPlatformBus().addHandler(TreeNodeChangeEvent.TYPE, new TreeNodeChangeEvent.TreeNodeChangeHandler() {
      public void onJobUpdate(JobModel job,TreeNodeChangeEvent event) {
        List<GroupJobTreeModel> list=jobManagerView.getMyTreePanel().getTree().getStore().getAll();
        for(GroupJobTreeModel model:list){
          if(model.isJob() && model.getId().equals(job.getId())){
            model.setName(job.getName());
            break;
          }
        }
        list=jobManagerView.getAllTreePanel().getTree().getStore().getAll();
        for(GroupJobTreeModel model:list){
          if(model.isJob() && model.getId().equals(job.getId())){
            model.setName(job.getName());
            break;
          }
        }
      }
      public void onGroupUpdate(GroupModel group,TreeNodeChangeEvent event) {
        List<GroupJobTreeModel> list=jobManagerView.getMyTreePanel().getTree().getStore().getAll();
        for(GroupJobTreeModel model:list){
          if(model.isGroup() && model.getId().equals(group.getId())){
            model.setName(group.getName());
            break;
          }
        }
        list=jobManagerView.getAllTreePanel().getTree().getStore().getAll();
        for(GroupJobTreeModel model:list){
          if(model.isGroup() && model.getId().equals(group.getId())){
            model.setName(group.getName());
            break;
          }
        }
      }
      public void onChange(final TreeNodeChangeEvent event) {
        Callback callback=null;
        if(event.getNeedSelectProviderKey()!=null){
          callback=new Callback() {
            @Override
            public void callback() {
              GroupJobTreeModel model=jobManagerView.getMyTreePanel().getTree().getStore().findModelWithKey(event.getNeedSelectProviderKey());
              if(model!=null){
                jobManagerView.getMyTreePanel().getTree().setExpanded(model, true);
                jobManagerView.getMyTreePanel().getTree().getSelectionModel().select(model, true);
                JobManagerPresenterImpl.this.context.getPlatformBus().fireEvent(new TreeNodeSelectEvent(event.getNeedSelectProviderKey()));
               
              }
            }
          };
        }
        jobManagerView.getMyTreePanel().refresh(callback);
        jobManagerView.getAllTreePanel().refresh();
      }
    });
    context.getPlatformBus().registPlaceHandler(this);
  }
 
  @Override
  public void go(HasWidgets hasWidgets) {
    hasWidgets.add(getJobManagerView().asWidget());
  }
  public JobManagerView getJobManagerView() {
    if(jobManagerView==null){
      jobManagerView=new JobManagerViewImpl(this);
    }
    return jobManagerView;
  }
  @Override
  public void onSelect(String providerKey) {
    context.getPlatformBus().fireEvent(new TreeNodeSelectEvent(providerKey));
  }

  @Override
  public PlatformContext getPlatformContext() {
    return context;
  }


    private void doSelect(final String providerKey) {
        GroupJobTreeModel myNeedSelect=jobManagerView.getMyTreePanel().getTree().getStore().findModelWithKey(providerKey);
        if(myNeedSelect!=null){
            jobManagerView.getMyTreePanel().getTree().getSelectionModel().select(myNeedSelect, true);
            jobManagerView.getMyTreePanel().getTree().scrollIntoView(myNeedSelect);
        }else{
            jobManagerView.getMyTreePanel().getTree().getSelectionModel().deselectAll();
        }
        //all tree
        GroupJobTreeModel allNeedSelect=jobManagerView.getAllTreePanel().getTree().getStore().findModelWithKey(providerKey);
        if(allNeedSelect!=null){
            jobManagerView.getAllTreePanel().getTree().getSelectionModel().select(allNeedSelect, true);
            jobManagerView.getAllTreePanel().getTree().scrollIntoView(allNeedSelect);
        }else{
            jobManagerView.getAllTreePanel().getTree().getSelectionModel().deselectAll();
        }

    }

    private void updateHistory(final String id,
            JobType type, boolean isJob) {
        if(isJob){
            History.newItem(new PlacePath().toApp(App.Schedule)
                    .toJobType(type)
                    .toDisplayJob(id).create().getToken(), false);
        }else{

            History.newItem(new PlacePath().toApp(App.Schedule)
                    .toJobType(type)
                    .toDisplayGroup(id).create().getToken(), false);
        }
       
    }
   
    @Override
    public void handle(PlatformPlaceChangeEvent event) {
        Iterator<KV> iterator = event.getNewPlace().iterator();
        final String value = iterator.next().value;
        String key=null;
        if(iterator.hasNext()){
            key=iterator.next().value;
        }
        if(value.equalsIgnoreCase(PlacePath.JobType.MyJob.toString())){
            getJobManagerView().activeMyTreePanel();
        }else{
            getJobManagerView().activeAllTreePanel();           
        }
        if(key!=null){
            doSelect(key);
        }
    }

    @Override
    public String getHandlerTag() {
        return TAG;
    }
}
TOP

Related Classes of com.taobao.zeus.web.platform.client.module.jobmanager.JobManagerPresenterImpl

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.