package com.gx.obe.evaluation.step.form;

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

import org.eclipse.swt.SWT;
import org.eclipse.swt.core.CallBack;
import org.eclipse.swt.core.ImageResolver;
import org.eclipse.swt.core.MessageDialog;
import org.eclipse.swt.core.listener.VerifyRequiredListener;
import org.eclipse.swt.core.utils.ValidateUtils;
import org.eclipse.swt.core.utils.WidgetUtils;
import org.eclipse.swt.core.widgets.EButton;
import org.eclipse.swt.core.widgets.EDialog;
import org.eclipse.swt.core.widgets.ELabel;
import org.eclipse.swt.core.widgets.ELink;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

import com.gx.obe.common.icons.IconsActivator;
import com.gx.obe.common.widget.button.Tips;
import com.gx.obe.common.widget.dialog.SelectStepExpertDialog;
import com.gx.obe.common.widget.listener.SelectExpertListener;
import com.gx.obe.components.core.I18N;
import com.gx.obe.components.core.I18NEnum;
import com.gx.obe.components.core.enumeration.CommonEnum;
import com.gx.obe.components.core.enumeration.EvaluationStepEnum;
import com.gx.obe.util.utils.LogUtils;
import com.gx.obe.util.utils.ObjectUtils;
import com.gx.obe.util.utils.StringUtils;
import com.gx.obe.web.entity.evaluation.EvaluationStep;
import com.gx.obe.web.entity.expert.Expert;
import com.gx.obe.web.entity.tender.TenderProjectEntity;
import com.gx.obe.web.service.evaluation.EvaluationStepExpertService;
import com.gx.obe.web.service.evaluation.EvaluationStepService;
import com.gx.obe.web.service.expert.ExpertService;
import com.swtdesigner.ResourceManager;
import com.swtdesigner.SWTResourceManager;

/**
 * @Description: 天眼查步骤
 * @author wangx
 */
public class TianYanEvaluationStepDialog extends EDialog {
	
	private Text stepNameText;
	private Composite roleTypeComposite;
	private Composite customComposite;
	private Composite passTypeComposite;
	private EButton save_btn;
	private ImageResolver imageResolver = new ImageResolver();
	private EvaluationStepService evaluationStepService;
	private ExpertService expertService;
	private EvaluationStepExpertService evaluationStepExpertService;
	private TenderProjectEntity tenderProject;
	private EvaluationStep evaluationStep;
	private Text stepMemoText;
	private ELabel expertNamesLabel;
	private Composite composite;
	private CallBack callBack;
	private List<String> stepExpertUserIdList ;
	private String supplierName;
	private ELabel passTypeHelpLabel;
	private Button button_2;
	private Button button_3;
	private Button button_4;
	private Button button_1;
	private Button button_5;
	private boolean isInEvaluation = false;// 是否在评审中
	private Label label_8;
	private Button buttonManag;
	
	{
		LogUtils.logClass(TianYanEvaluationStepDialog.class);
	}

	/**
	 * Create the dialog.
	 * @param parentShell
	 */
	public TianYanEvaluationStepDialog(Shell parentShell, TenderProjectEntity tenderProject, EvaluationStep evaluationStep) {
		super(parentShell);
		setTitle("评标步骤");
		this.tenderProject = tenderProject;
		this.evaluationStep = evaluationStep;
		supplierName = I18N.getString(I18NEnum.SUPPLIERNAME, tenderProject.getTenderType());
	}

	/**
	 * Create contents of the dialog.
	 * @param parent
	 */
	@Override
	protected Control createDialogArea(Composite parent) {
		Composite topContainer = (Composite) super.createDialogArea(parent);
		topContainer.addDisposeListener(new DisposeListener() {
			public void widgetDisposed(DisposeEvent e) {
				imageResolver.disposite();
				if(null != stepExpertUserIdList){
					stepExpertUserIdList.clear();
				}
			}
		});
		GridLayout gl_topContainer = new GridLayout(1, false);
		gl_topContainer.verticalSpacing = 0;
		gl_topContainer.horizontalSpacing = 0;
		gl_topContainer.marginHeight = 0;
		gl_topContainer.marginWidth = 0;
		topContainer.setLayout(gl_topContainer);
		
		Composite container = new Composite(topContainer, SWT.NONE);
		container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
		GridLayout gl_container = new GridLayout(1, false);
		gl_container.marginHeight = 10;
		gl_container.marginWidth = 10;
		container.setLayout(gl_container);
		this.setOperator(SWT.MAX|SWT.CLOSE);
		
		Tips label_6 = new Tips(container, SWT.WRAP);
		label_6.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
		label_6.setText("请为当前评标步骤选择特征码检查项，评标时对所选的检查项进行特征码检查");
		label_6.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, EvaluationStepEnum.getEvaluationStepIco(EvaluationStepEnum.FEATURE_CHECK)));
		label_6.setSurroundColor(SWTResourceManager.getColor(60, 138, 226));
		
		composite = new Composite(container, SWT.NONE);
		GridLayout gl_composite = new GridLayout(2, false);
		composite.setLayout(gl_composite);
		GridData gd_composite = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
		gd_composite.widthHint = 414;
		composite.setLayoutData(gd_composite);
		
		CLabel label = new CLabel(composite, SWT.NONE);
		label.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
		label.setText("节点名称：");
		
		stepNameText = new Text(composite, SWT.BORDER);
		GridData gd_stepNameText = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
		gd_stepNameText.widthHint = 150;
		stepNameText.setLayoutData(gd_stepNameText);
		stepNameText.addVerifyListener(new VerifyRequiredListener(stepNameText,"评标步骤名称不能为空！"));
		stepNameText.setTextLimit(20);
		stepNameText.setText(I18N.getString(I18NEnum.COMPLIANCE_EVALUATION));
		
		CLabel label_1 = new CLabel(composite, SWT.NONE);
		label_1.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false, 1, 1));
		label_1.setText("评标专家员：");
		
		Composite composite_6 = new Composite(composite, SWT.NONE);
		composite_6.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
		GridLayout gl_composite_6 = new GridLayout(1, false);
		gl_composite_6.marginHeight = 0;
		gl_composite_6.verticalSpacing = 1;
		gl_composite_6.marginWidth = 0;
		composite_6.setLayout(gl_composite_6);
		
		roleTypeComposite = new Composite(composite_6, SWT.NONE);
		roleTypeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
		GridLayout gl_roleTypeComposite = new GridLayout(5, false);
		gl_roleTypeComposite.marginHeight = 0;
		gl_roleTypeComposite.marginWidth = 0;
		roleTypeComposite.setLayout(gl_roleTypeComposite);
		
		button_2 = new Button(roleTypeComposite, SWT.RADIO);
		button_2.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				selectRoleTypeAction(EvaluationStepEnum.EXPERT);
			}
		});
		button_2.setSelection(true);
		button_2.setText("所有专家");
		button_2.setData("roleType", EvaluationStepEnum.EXPERT);
		
		button_3 = new Button(roleTypeComposite, SWT.RADIO);
		button_3.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				selectRoleTypeAction(EvaluationStepEnum.EXPERT_LEADER);
			}
		});
		button_3.setText("专家组长");
		button_3.setData("roleType", EvaluationStepEnum.EXPERT_LEADER);
		
		button_4 = new Button(roleTypeComposite, SWT.RADIO);
		button_4.setData("roleType", EvaluationStepEnum.CUSTOM);
		button_4.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				selectRoleTypeAction(EvaluationStepEnum.CUSTOM);
			}
		});
		button_4.setText("指定专家");
		new Label(roleTypeComposite, SWT.NONE);
		
		
//		buttonManag = new Button(roleTypeComposite, SWT.RADIO);
//		buttonManag.setData("roleType", EvaluationStepEnum.OPERATOR);
//		buttonManag.addSelectionListener(new SelectionAdapter() {
//			@Override
//			public void widgetSelected(SelectionEvent e) {
//				selectRoleTypeAction(EvaluationStepEnum.OPERATOR);
//			}
//		});
//		buttonManag.setText("项目经理");
//		new Label(roleTypeComposite, SWT.NONE);
		
		customComposite = new Composite(composite_6, SWT.NONE);
		GridData gd_customComposite = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
		gd_customComposite.heightHint = 36;
		customComposite.setLayoutData(gd_customComposite);
		GridLayout gl_customComposite = new GridLayout(2, false);
		gl_customComposite.verticalSpacing = 0;
		gl_customComposite.horizontalSpacing = 0;
		gl_customComposite.marginHeight = 0;
		gl_customComposite.marginWidth = 0;
		customComposite.setLayout(gl_customComposite);
		
		expertNamesLabel = new ELabel(customComposite, SWT.WRAP);
		GridData gd_expertNamesLabel = new GridData(SWT.CENTER, SWT.BOTTOM, false, true, 1, 1);
		gd_expertNamesLabel.widthHint = 150;
		expertNamesLabel.setLayoutData(gd_expertNamesLabel);
		expertNamesLabel.setText("郭永荣");
		
		ELink selectExpertLabel = new ELink(customComposite, SWT.NONE);
		selectExpertLabel.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/btn/blue/search.png"));
		selectExpertLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseUp(MouseEvent e) {
				selectStepExpert();
			}
		});
		selectExpertLabel.setLayoutData(new GridData(SWT.LEFT, SWT.BOTTOM, false, true, 1, 2));
		selectExpertLabel.setText("选择专家");
		
		Label label_4 = new Label(customComposite, SWT.SEPARATOR | SWT.HORIZONTAL);
		label_4.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
		
		CLabel label_2 = new CLabel(composite, SWT.NONE);
		label_2.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
		label_2.setText("入围规则：");
		
		Composite composite_5 = new Composite(composite, SWT.NONE);
		composite_5.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
		GridLayout gl_composite_5 = new GridLayout(1, false);
		gl_composite_5.marginHeight = 0;
		gl_composite_5.marginWidth = 0;
		composite_5.setLayout(gl_composite_5);
		
		passTypeComposite = new Composite(composite_5, SWT.NONE);
		GridData gd_passTypeComposite = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
		gd_passTypeComposite.heightHint = 22;
		passTypeComposite.setLayoutData(gd_passTypeComposite);
		GridLayout gl_passTypeComposite = new GridLayout(3, false);
		gl_passTypeComposite.marginHeight = 0;
		gl_passTypeComposite.marginWidth = 0;
		passTypeComposite.setLayout(gl_passTypeComposite);
		
		button_1 = new Button(passTypeComposite, SWT.RADIO);
		button_1.setData("passType",EvaluationStepEnum.PASS_ALL);
		button_1.setSelection(true);
		button_1.setText("一票否决");
		
		button_5 = new Button(passTypeComposite, SWT.RADIO);
		button_5.setData("passType",EvaluationStepEnum.PASS_MORE);
		button_5.setText("少数服从多数");
		
		passTypeHelpLabel = new ELabel(passTypeComposite, SWT.SELECTED);
		passTypeHelpLabel.setText("");
		passTypeHelpLabel.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/help.png"));
		
		CLabel label_5 = new CLabel(composite, SWT.NONE);
		label_5.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, true, 1, 1));
		label_5.setText("节点备注：");
		
		stepMemoText = new Text(composite, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
		stepMemoText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
		stepMemoText.setTextLimit(100);
		new Label(container, SWT.NONE);
		
		label_8 = new Label(topContainer, SWT.SEPARATOR | SWT.HORIZONTAL);
		label_8.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
		
		Composite composite_1 = new Composite(topContainer, SWT.NONE);
		composite_1.setBackgroundMode(SWT.INHERIT_FORCE);
		composite_1.setBackgroundImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/fill_bg.png"));
		composite_1.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false, 3, 1));
		GridLayout gl_composite_1 = new GridLayout(2, false);
		composite_1.setLayout(gl_composite_1);
		
		save_btn = new EButton(composite_1, SWT.NONE);
		save_btn.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/btn/blue/save.png"));
		GridData gd_confirmBtn = new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1);
		gd_confirmBtn.widthHint = 90;
		save_btn.setLayoutData(gd_confirmBtn);
		save_btn.setText("保存");
		save_btn.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseUp(MouseEvent e) {
				saveNodeAction();
			}
		});
		EButton cancel_btn = new EButton(composite_1, SWT.NONE);
		cancel_btn.setImage(ResourceManager.getPluginImage(IconsActivator.PLUGIN_ID, "icons/btn/blue/close.png"));
		cancel_btn.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseUp(MouseEvent e) {
				cancelAction();
			}
		});
		GridData gd_button = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
		gd_button.widthHint = 90;
		cancel_btn.setLayoutData(gd_button);
		cancel_btn.setText(I18N.getString(I18NEnum.CLOSE));

		init();
		return container;
	}

	/**
	 * @Description: 初始化
	 * @author guoyr
	 */
	private void init(){
		evaluationStepExpertService = new EvaluationStepExpertService();
		evaluationStepService = new EvaluationStepService();
		
		isInEvaluation = false;
		// 评标步骤未操作
		final String featureCheckName = "关联关系评审";
		if(null == evaluationStep){
			evaluationStep = new EvaluationStep();
			evaluationStep.setStepName(featureCheckName);
			evaluationStep.setFilterType(EvaluationStepEnum.FILTER_YES);
			evaluationStep.setPassType(EvaluationStepEnum.PASS_ALL);
			evaluationStep.setRoleType(EvaluationStepEnum.EXPERT_LEADER);
			evaluationStep.setStepStatus(CommonEnum.NOT_START);
			int maxSortNo = evaluationStepService.getMaxEvaluationStepSortNo(tenderProject.getId());
			evaluationStep.setSortNo(maxSortNo + 1);
			this.setTitle("新增评标步骤");
		}else {
			this.setTitle("修改评标步骤");
			if(ObjectUtils.equals(evaluationStep.getStepStatus(), CommonEnum.COMPLETE)){
				composite.setEnabled(false);
				save_btn.setEnabled(false);
				isInEvaluation = true;
			}else {
				isInEvaluation = evaluationStepService.isInEvaluationStep(tenderProject.getId(), evaluationStep.getId());
			}
			if(isInEvaluation){
				roleTypeComposite.setEnabled(false);
			}
		}
		refreshEvaltionNodeForm();
		passTypeHelpLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseUp(MouseEvent e) {
				StringBuilder helpSb = new StringBuilder();
				helpSb.append("    一票否决：");
				helpSb.append("存在一个专家对");
				helpSb.append(supplierName);
				helpSb.append(featureCheckName);
				helpSb.append(I18N.getString(I18NEnum.UNQUALIFIED));
				helpSb.append("，则该");
				helpSb.append(supplierName);
				helpSb.append("不能入围下一评审环节；\r\n");
				helpSb.append("    少数服从多数：当对");
				helpSb.append(supplierName);
				helpSb.append("的");
				helpSb.append(featureCheckName);
				helpSb.append("结果出现不一致时，采用少数服从多数的原则！");
				MessageDialog.openInformation(getShell(), helpSb.toString());
			}
		});
	}
	

	
	/**
	 * @Description: 刷新评标步骤表单
	 * @author guoyr
	 */
	private void refreshEvaltionNodeForm(){
		stepNameText.setText(ObjectUtils.getObjString(evaluationStep.getStepName()));
		stepMemoText.setText(ObjectUtils.getObjString(evaluationStep.getStepMemo()));
		WidgetUtils.setRadioChecked(roleTypeComposite, ObjectUtils.getObjString(evaluationStep.getRoleType()), "roleType");
//		WidgetUtils.setRadioChecked(filterComposite, ObjectUtils.getObjString(evaluationStep.getFilterType()), "filterType");
		WidgetUtils.setRadioChecked(passTypeComposite, ObjectUtils.getObjString(evaluationStep.getPassType()), "passType");
		filterAction();
		if(StringUtils.isNotEmpty(evaluationStep.getId()) && ObjectUtils.equals(evaluationStep.getRoleType(), EvaluationStepEnum.CUSTOM)){
			List<Expert> expertList = evaluationStepExpertService.findUserIdByTenderIdAndStepId(tenderProject.getId(), evaluationStep.getId());
			if(null == stepExpertUserIdList){
				stepExpertUserIdList = new ArrayList<String>();
			}else {
				stepExpertUserIdList.clear();
			}
			if(null != expertList){
				for(Expert expert : expertList){
					stepExpertUserIdList.add(expert.getUserId());
				}
			}
		}
		selectRoleTypeAction(evaluationStep.getRoleType());
	}
	

	/**
	 * @Description: 确定
	 * @author guoyr
	 */
	private void saveNodeAction(){
		if(save_btn.getEnabled()){
			if(!ValidateUtils.checkInput(stepNameText.getParent())){
				return;
			}
			// 验证评标步骤名称是否已经存在
			if(evaluationStepService.valEvaluationStepNameExist(tenderProject.getId(), evaluationStep.getId(), stepNameText.getText().trim())){
				MessageDialog.openWarning(getShell(), "评标步骤["+stepNameText.getText().trim()+"]已经存在，请重新输入！");
				stepNameText.setFocus();
				stepNameText.setSelection(stepNameText.getText().length());
				return;
			}
			
			
			evaluationStep.setStepName(stepNameText.getText().trim());
			evaluationStep.setStepType(EvaluationStepEnum.ASSOCIATION_QUERY);
			evaluationStep.setStepMemo(stepMemoText.getText().trim());
			evaluationStep.setTenderId(tenderProject.getId());
			evaluationStep.setRoleType(ObjectUtils.getObjString(WidgetUtils.getRadioVal(roleTypeComposite,"roleType")));
			evaluationStep.setPassType(ObjectUtils.getObjString(WidgetUtils.getRadioVal(passTypeComposite,"passType")));
			// 如果选择的是自定义专家类型
			if(ObjectUtils.equals(evaluationStep.getRoleType(), EvaluationStepEnum.CUSTOM) && (null == stepExpertUserIdList || stepExpertUserIdList.size() == 0)){
				MessageDialog.openWarning(getShell(), "请选择要指定的专家！");
				return;
			}
			evaluationStep = (EvaluationStep) evaluationStepService.saveTianYanEvaluationStep(evaluationStep, stepExpertUserIdList);
			
			if(null != evaluationStep){
				if(null != callBack){
					callBack.callBackObject(evaluationStep);
				}
			}else {
				MessageDialog.openWarning(getShell(), stepNameText.getText()+"保存失败！");
			}
			this.getShell().close();
		}
	}
	
	/**
	 * @Description: 取消
	 * @author guoyr
	 */
	private void cancelAction(){
		this.getShell().close();
	}

	/**
	 * @Description: 筛选事件
	 * @author guoyr
	 */
	private void filterAction(){
//		String filterType = ObjectUtils.getObjString(WidgetUtils.getRadioVal(filterComposite, "filterType"));
		passTypeComposite.layout();
		((GridData)passTypeComposite.getLayoutData()).heightHint = passTypeComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
//		if(filterType.equals(EvaluationStepEnum.FILTER_YES)){
//		}else {
//			((GridData)passTypeComposite.getLayoutData()).heightHint = 0;
//		}
		passTypeComposite.getParent().layout();
		stepNameText.getParent().layout();
	}
	
	
	/**
	 * @Description: 选择评审成员类型
	 * @author guoyr
	 * @param roleType
	 */
	private void selectRoleTypeAction(String roleType){
		// 如果选择的是自定义专家类型
		if(ObjectUtils.equals(roleType, EvaluationStepEnum.CUSTOM)){
			StringBuilder memberName = new StringBuilder("");
			if(StringUtils.isNotEmpty(evaluationStep.getId())){
				List<Expert> expertList = expertService.getExpertList(tenderProject.getId(), null);
				if(null != expertList && expertList.size() > 0){
					int memberCount = 0;
					for(Expert expert : expertList){
						if(null != stepExpertUserIdList && null != expert.getUser() && stepExpertUserIdList.contains(expert.getUserId())){
							if(memberCount > 0){
								memberName.append("；");
							}
							memberName.append(ObjectUtils.getObjString(expert.getUser().getUserName()));
							memberCount ++;
						}
					}
				}
			}
			expertNamesLabel.setText(memberName.toString());
			customComposite.layout();
			for(Control control : customComposite.getChildren()){
				control.setVisible(true);
				
			}
			((GridData)customComposite.getLayoutData()).heightHint = customComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
		}else {
			for(Control control : customComposite.getChildren()){
				control.setVisible(false);
				
			}
			((GridData)customComposite.getLayoutData()).heightHint = 0;
		}
		composite.layout();
	}
	
	/**
	 * @Description: 选择自定义专家
	 * @author wangx
	 */
	private void selectStepExpert(){
		if(!isInEvaluation){
			List<Expert>  expertList  = new ArrayList<Expert>();
			if(null != stepExpertUserIdList && stepExpertUserIdList.size() > 0 ) {
				for(String userId : stepExpertUserIdList) {
					Expert expert = expertService.getExpert(tenderProject.getId(), userId);
					if(null != expert) {
						expertList.add(expert);	
					}
				}
			}
			SelectStepExpertDialog dialog = new SelectStepExpertDialog(getShell(), tenderProject.getId(), expertList, new SelectExpertListener(){
				public void setExpertList(List<Expert> expertList){
					if(null != expertList && expertList.size() > 0 ){
						List<String> userIdList = new ArrayList<String>();
						for(Expert expert : expertList) {
							userIdList.add(expert.getUserId());
						}
						stepExpertUserIdList = userIdList;
						selectRoleTypeAction(EvaluationStepEnum.CUSTOM);
					}
				}
				
			});
			dialog.open();
		}
	}

	public CallBack getCallBack() {
		return callBack;
	}

	public void setCallBack(CallBack callBack) {
		this.callBack = callBack;
	}

	/**
	 * Return the initial size of the dialog.
	 */
	@Override
	protected Point getInitialSize() {
		return new Point(655, 466);
	}
}
