Package com.taobao.zeus.web.platform.client.module.jobdisplay.job.processer

Source Code of com.taobao.zeus.web.platform.client.module.jobdisplay.job.processer.ZKProcesserWindow

package com.taobao.zeus.web.platform.client.module.jobdisplay.job.processer;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.editor.client.Editor;
import com.google.gwt.editor.client.EditorError;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.sencha.gxt.core.client.util.ToggleGroup;
import com.sencha.gxt.widget.core.client.Window;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.form.FieldLabel;
import com.sencha.gxt.widget.core.client.form.FormPanel;
import com.sencha.gxt.widget.core.client.form.Radio;
import com.sencha.gxt.widget.core.client.form.TextField;
import com.sencha.gxt.widget.core.client.form.Validator;
import com.sencha.gxt.widget.core.client.form.error.DefaultEditorError;
import com.taobao.zeus.web.platform.client.module.jobdisplay.job.ProcesserType;
import com.taobao.zeus.web.platform.client.module.jobdisplay.job.ProcesserType.ZooKeeperP;
import com.taobao.zeus.web.platform.client.module.jobmanager.JobModel;

public class ZKProcesserWindow extends Window{
  private ZooKeeperP zooKeeperP=new ZooKeeperP();
 
  private ToggleGroup zkType;
  private Radio useDefault;
  private Radio useCustom;
  private FieldLabel hostFieldWapper;
  private FieldLabel pathFieldWapper;
  private TextField hostField;
  private TextField pathField;
 
  private FormPanel formPanel;
 
  private JobModel jobModel;
 
  private TextButton add=new TextButton("确定", new SelectHandler() {
    @Override
    public void onSelect(SelectEvent event) {
      if(formPanel.isValid()){
        if(isOn()) {
          zkBtn.setText("自定义ZK[开启]");
        }else{
          zkBtn.setText("自定义ZK[关闭]");
        }
        ZKProcesserWindow.this.hide();
      }
    }
  });
  private TextButton zkBtn;
  public boolean isOn() {
    return useCustom.getValue();
  }
  public void setOff() {
    useCustom.setValue(false, true);
    useDefault.setValue(true, true);
    pathField.setValue("");
    hostField.setValue("");
    add.fireEvent(new SelectEvent());
  }
  public ZKProcesserWindow(TextButton zk){
    setModal(true);
    this.zkBtn = zk;
    setHeadingText("ZooKeeper通知 配置");
    setSize("400", "200");
   
    formPanel=new FormPanel();
   
    VerticalLayoutContainer p = new VerticalLayoutContainer();
    formPanel.add(p);
   
    zkType=new ToggleGroup();
    useDefault=new Radio();
    useDefault.setBoxLabel("关闭");
    useCustom=new Radio();
    useCustom.setBoxLabel("开启");
    zkType.add(useDefault);
    zkType.add(useCustom);
    HorizontalPanel hp = new HorizontalPanel();
      hp.add(useDefault);
      hp.add(useCustom);
   
      useDefault.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
      @Override
      public void onValueChange(ValueChangeEvent<Boolean> event) {
        if(event.getValue()){
          hostFieldWapper.hide();
          pathFieldWapper.hide();
          hostField.setAllowBlank(true);
          pathField.setAllowBlank(true);
          formPanel.isValid();
        }
      }
    });
      useCustom.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
      @Override
      public void onValueChange(ValueChangeEvent<Boolean> event) {
        if(event.getValue()){
//          AlertMessageBox box=new AlertMessageBox("警告", "强烈建议使用系统默认ZK,定制ZK只是为了适应老的Job");
//          box.show();
          if(hostField.getValue()==null||hostField.getValue().isEmpty()) {
            hostField.setValue("${instance.processer.zk.host}");
          }
          hostField.setToolTip("请在配置项中配合填写 instance.processer.zk.host");
          if(pathField.getValue()==null||pathField.getValue().isEmpty()) {
            pathField.setValue("${instance.processer.zk.path}");
          }
          pathField.setToolTip("请在配置项中配合填写 instance.processer.zk.path");
          hostFieldWapper.show();
          pathFieldWapper.show();
          hostField.setAllowBlank(false);
          pathField.setAllowBlank(false);
        }
      }
    });
   
    hostField=new TextField();
    hostField.setWidth(200);
   
    pathField=new TextField();
    pathField.setWidth(200);
    pathField.addValidator(new Validator<String>() {
      @Override
      public List<EditorError> validate(Editor<String> editor, String value) {
        List<EditorError> list=new ArrayList<EditorError>();
        if(value!=null && value.startsWith("/zeus/")){
          list.add(new DefaultEditorError(editor, "不得将通知设定到其他Job任务节点上", value));
        }
        return list;
      }
    });
    hostFieldWapper=new FieldLabel(hostField,"ZK服务器");
    pathFieldWapper=new FieldLabel(pathField,"路径");
    p.add(new FieldLabel(hp,"ZK类型"));
    p.add(hostFieldWapper);
    p.add(pathFieldWapper);
   
   
    add(formPanel,new MarginData(5));
   
    addButton(add);
    addButton(new TextButton("取消",new SelectHandler() {
      @Override
      public void onSelect(SelectEvent event) {
        ZKProcesserWindow.this.hide();
      }
    }));
  }

  public ProcesserType getProcesserType() {
    zooKeeperP.setUseDefault(zkType.getValue()==useDefault?true:false);
    zooKeeperP.setHost(hostField.getValue());
    zooKeeperP.setPath(pathField.getValue());
    return zooKeeperP;
  }
 
  public void setProcesser(ZooKeeperP p){
    this.zooKeeperP = p;
    this.useCustom.setValue(true,true);
    hostField.setAllowBlank(false);
    pathField.setAllowBlank(false);
    this.pathField.setValue(p.getPath());
    this.hostField.setValue(p.getHost());
    hostFieldWapper.show();
    pathFieldWapper.show();
    add.fireEvent(new SelectEvent());
  }

}
TOP

Related Classes of com.taobao.zeus.web.platform.client.module.jobdisplay.job.processer.ZKProcesserWindow

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.