⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roledialog.java

📁 TestDataBuilder是一个采用Java编写的
💻 JAVA
📖 第 1 页 / 共 4 页
字号:

	/**
	 * This method initializes datatypeList	
	 * 	
	 * @return javax.swing.JList	
	 */
	private JRoleTree getRoleTree() {
		if (roleTree == null) {
			roleTree = new JRoleTree();
			roleTree.addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent e) {
					RoleDialog.this.treeMouseClicked(e);
				}
			});
            roleTree.addTreeSelectionListener(new TreeSelectionListener()
            {
                public void valueChanged(TreeSelectionEvent arg0) {
                    RoleDialog.this.treeSelChange();
                }                
            });
			
		}
		
		return roleTree;			
	}

    protected void treeSelChange(){
        if(this.getRoleTree().getSelectionPath() == null){
            return ;
        }
        
        Object[] paths = this.getRoleTree().getSelectionPath().getPath();
        if(isSelRole(paths)){
            Role dataGeneraor = (Role)paths[2];
            if(dataGeneraor != curRole){
                curRole = dataGeneraor;
                synchorControl(curRole);
            }               
        }else{
            curRole = null;
            synchorControl(curRole);
        }
        
        if(isSelTableAndRoles(paths)){
            RoleFactory roleFactory = (RoleFactory)paths[1];
            
            if(roleFactory != this.curRoleFactory){
                this.curRoleFactory = roleFactory;
            }
        }
    }
    
	protected void treeMouseClicked(MouseEvent e) {
		JTree tree = (JTree) e.getComponent();
        TreePath treePath = null;
        if (e.getButton() == 3)/* 右键 */{
            treePath = tree.getPathForLocation(e.getX(), e.getY());
            if(treePath == null){
                return;
            }
            tree.setSelectionPath(treePath);
        }
        
		treePath = tree.getSelectionPath();
		if(treePath == null){
			return;
		}
		
		Object[] paths = treePath.getPath();
		if(e.getButton() == 3 && isSelTable(paths)){
			RoleDialog.this.showTablePopupMenu(e.getComponent(),e.getX(), e.getY());
		}else if(e.getButton() == 3 && isSelRole(paths)){
            RoleDialog.this.showRolePopupMenu(e.getComponent(),e.getX(), e.getY());
        }
	}

	
	private void showRolePopupMenu(Component component, int x, int y) {
        JPopupMenu rolePopupMenu = this.getJMenuBar().getRolePopupMenu();
        rolePopupMenu.show(component, x, y);
        
    }

    
    private boolean isSelTable(Object[] paths){
		return (paths != null && paths.length == 2);
	}
	
    private boolean isSelTableAndRoles(Object[] paths){
        return (paths != null && paths.length >= 2);
    }

    private boolean isSelRole(Object[] paths){		
		return (paths != null && paths.length == 3);
	}
	
	protected void synchorControl(Role role) {
		dataExchange(role, true);
	}
	
	public void setSelectPath(Object ... selPath){
		this.getRoleTree().setSelectPath(selPath);
		
	}
	
	private void enableControl(boolean enable){
		this.getTxtName().setEnabled(enable);
        this.getCbxType().setEnabled(enable);
        this.getCbxMethod().setEnabled(enable);
        this.getTxtMin().setEnabled(enable);
        this.getTxtMax().setEnabled(enable);
        this.getTxtPrefix().setEnabled(enable);
        this.getTxtSuffix().setEnabled(enable);
        this.getJEnumTable().setEnabled(enable);
        this.getComboxConnection().setEnabled(enable);
        this.getTxtSQL().setEnabled(enable);
        this.getBtnSave().setEnabled(enable);
        this.getBtnOK().setEnabled(enable);
        this.getBtnAddEnum().setEnabled(enable);
        this.getBtnDelEnum().setEnabled(enable);
        this.getBtnShowSQLQueryDialog().setEnabled(enable);
        this.getBtnSelEnum().setEnabled(enable);
        this.getTxtNullPercent().setEnabled(enable);
        this.getCbxReturnType().setEnabled(enable);
        //this.getTxtReturnFields().setEnabled(enable);
        this.getTxtJavaSource().setEnabled(enable);
	}

    /**
     * 数据交换.
     * <p><code>dataExchange</code></p>
     * @param role 数据
     * @param dataToConstrol 标识数据是流向控件的.
     * @author LiuXiaojie 2007-7-7
     */
	protected void dataExchange(Role role, boolean isToControl){
        if(isToControl){
        	if(role != null){
        		this.enableControl(true);
	            this.getTxtName().setText(role.getName());
	            this.getCbxType().setSelectedItem(role.getType());
	            this.getCbxMethod().setSelectedItem(role.getMethod());
	            this.getTxtMin().setText(role.getStringMin());
	            this.getTxtMax().setText(role.getStringMax());
	            this.getTxtPrefix().setText(role.getPrefix());
	            this.getTxtSuffix().setText(role.getSuffix());
                this.getTxtNullPercent().setText(role.getNullPercent() + "");
                 EnumList<EnumObj> tempEnumList = Role.cloneEnumList(role.getEnumerate());
		         this.getJEnumTable().setData(tempEnumList);

		         if(role.isSQLQueryMethod() || role.isSQLFuncMethod()){
		            this.getTxtSQL().setText(role.getSQL());
		            if(StringUtils.isEmpty(role.getSourceName())){
	                    this.getComboxConnection().setSelectedIndex(0);
	                }else{
	                    this.getComboxConnection().setSelectedItem(role.getSourceName());
	                }
                }else if(role.isJavaMethod()){
                	this.getCbxReturnType().setSelectedItem(role.getJavaSource().getReturnType());
                	this.getTxtReturnFields().setText(role.getJavaSource().getReturnFields());
                	this.getTxtJavaSource().setText(role.getJavaSource().getJavaCode());
                	this.getTxtJavaSource().setFirstLine(14);
                }
        	}else{
        		this.getTxtName().setText("");
	            this.getCbxType().setSelectedItem(1);
	            this.getCbxMethod().setSelectedItem(1);
                this.getTxtNullPercent().setText("");
	            this.getTxtMin().setText("");
	            this.getTxtMax().setText("");
	            this.getTxtPrefix().setText("");
	            this.getTxtSuffix().setText("");
	            this.getJEnumTable().setData(null);
	            this.getTxtSQL().setText("");
	            this.getCbxReturnType().setSelectedIndex(0);
	            this.getTxtJavaSource().setText("");
	            this.getTxtReturnFields().setText("");
	            this.getComboxConnection().setSelectedIndex(0);
	            this.enableControl(false);
        	}
        }else{
            role.setName(this.getTxtName().getText().trim());
            String type = this.getCbxType().getSelectedItem().toString();
            Class javaType = this.getCbxType().getSelectedClass();
            role.setType(javaType);
            role.setNullPercent(Float.valueOf(this.getTxtNullPercent().getText().trim()));
            role.setPrefix(this.getTxtPrefix().getText().trim());
            role.setSuffix(this.getTxtSuffix().getText().trim());
            
            String method =this.getCbxMethod().getSelectedItem().toString(); 
            role.setMethod(method);
            
            if(Role.METHOD_INCREMENT.equalsIgnoreCase(method)
                ||Role.METHOD_RANDOM.equalsIgnoreCase(method)){
                if(type.equalsIgnoreCase("DATE")){
                    try {
                        role.setMaxDate(Global.getInstance().parseDateTime(this.getTxtMax().getText().trim()));
                    } catch (BaseException e) {
                        logger.error("ConfigDatatype", e);
                    }
                    try {
                        role.setMinDate(Global.getInstance().parseDateTime(this.getTxtMin().getText().trim()));
                    } catch (BaseException e) {
                        logger.error("ConfigDatatype", e);
                    }                
                }else{
                    try{
                        double max = JavaTypes.getInstance().getDbValue(javaType, this.getTxtMax().getText().trim());
                        role.setMax(max);
                        double min = JavaTypes.getInstance().getDbValue(javaType, this.getTxtMin().getText().trim());
                        role.setMin(min);
                    }catch(BaseException ex){
                        logger.error("RoleDialog", ex);
                    }
                }
            }else if(Role.METHOD_ENUM.equalsIgnoreCase(method)){
                EnumList<EnumObj> tempEnumList = Role.cloneEnumList(this.getJEnumTable().getData());
                role.setEnumerate(tempEnumList);
            }else if(Role.METHOD_SQL_QUERY.equalsIgnoreCase(method)
            		||Role.METHOD_SQL_FUNC.equalsIgnoreCase(method)){
                role.setSQL(this.getTxtSQL().getText().trim());
                role.setSourceName((String) this.getComboxConnection().getSelectedItem());
            } else if(Role.METHOD_JAVA.equals(method)){
            	try {
            		String returnType = (String) this.getCbxReturnType().getSelectedItem();
            		JavaSource javaSource = role.getJavaSource();
            		            		
            		if(javaSource == null){
            			javaSource = new JavaSource();
            			role.setJavaSource(javaSource);
            		}
            		javaSource.setReturnType(returnType);
            		
            		if(JavaSource.RETURN_TYPE_SIMPLE_OBJ.equalsIgnoreCase(returnType)){
            			javaSource.setJavaCode(this.getTxtJavaSource().getText());
            		}else{
            			javaSource.setJavaCode(this.getTxtJavaSource().getText());
            			javaSource.setReturnFields(this.getTxtReturnFields().getText());
            		}
				} catch (BaseException ex) {
					logger.error("setJavaCode",ex);
				}
            }
        }
    }

	/**
	 * This method initializes txtName	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtName() {
		if (txtName == null) {
			txtName = new JTextFieldEx();
			txtName.setBounds(98, 16, 340, 25);            
		}
		return txtName;
	}

	/**
	 * This method initializes cbxType	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JavaTypeComboBox getCbxType() {
		if (cbxType == null) {
            List<Class> types = JavaTypes.getInstance().getAllTypes();
			cbxType = new JavaTypeComboBox(types);
			cbxType.setBounds(98, 53, 121, 27);            
            cbxType.addItemListener(new ItemListener(){
                public void itemStateChanged(ItemEvent e) {
                    RoleDialog.this.typeChange();
                }
                
            });
            cbxType.addPopupMenuListener(new PopupMenuListener(){
                public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
                    RoleDialog.this.cbxInvasible();
                }

                public void popupMenuCanceled(PopupMenuEvent e) {
                    
                }

                public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
                    
                }

            });
           
		}
		return cbxType;
	}

	protected void cbxInvasible() {
        Class type = this.getCbxType().getSelectedClass();        
        double min = JavaTypes.getInstance().getMin(type, 0, 0);
        String strMin = JavaTypes.getInstance().getStringValue(type, min);
        double max = JavaTypes.getInstance().getMax(type, 0, 0);
        String strMax = JavaTypes.getInstance().getStringValue(type, max);
        this.getTxtMin().setText(strMin);
        this.getTxtMax().setText(strMax);
    }

    protected void typeChange() {
		Class type = this.getCbxType().getSelectedClass();
        
		if(type != null && type.equals(JavaTypes.STRING)){
			this.labMax.setText(RM.R("label.RoleDialog.label.maxLength"));
			this.labMin.setText(RM.R("label.RoleDialog.label.minLength"));
		}else{
			this.labMax.setText(RM.R("label.RoleDialog.label.maxValue"));
			this.labMin.setText(RM.R("label.RoleDialog.label.minValue"));
		}
	}
	

	/**
	 * This method initializes cbxMethod	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getCbxMethod() {
		if (cbxMethod == null) {
			cbxMethod = new JComboBox();
			cbxMethod.setBounds(99, 123, 120, 27);
			cbxMethod.addItemListener(new java.awt.event.ItemListener() {
			    public void itemStateChanged(java.awt.event.ItemEvent e) {
			        RoleDialog.this.methodBoxStateChanged(e);
			    }
			});
			cbxMethod.addItem(Role.METHOD_INCREMENT);
            cbxMethod.addItem(Role.METHOD_RANDOM);
            cbxMethod.addItem(Role.METHOD_ENUM);
            cbxMethod.addItem(Role.METHOD_SQL_QUERY);
            cbxMethod.addItem(Role.METHOD_SQL_FUNC);
            cbxMethod.addItem(Role.METHOD_JAVA);
		}
		return cbxMethod;
	}

	protected void methodBoxStateChanged(ItemEvent e) {
        String method = (String) getCbxMethod().getSelectedItem();
        int index = 0;

        if(Role.METHOD_INCREMENT.equalsIgnoreCase(method)
          ||Role.METHOD_RANDOM.equalsIgnoreCase(method)){
            index = 0;            
        }else if(Role.METHOD_ENUM.equalsIgnoreCase(method)){
            index = 1;
        }else if(Role.METHOD_SQL_QUERY.equalsIgnoreCase(method)
        		||Role.METHOD_SQL_FUNC.equalsIgnoreCase(method)){
            index = 2;
            this.getCbxType().setSelectedItem(JavaTypes.OBJECT);
        }else if(Role.METHOD_JAVA.equalsIgnoreCase(method)){
        	index = 3;
        	this.getCbxType().setSelectedItem(JavaTypes.OBJECT);
        	String javaSource = this.getTxtJavaSource().getText();
        	if(StringUtils.isEmpty(javaSource)){
        		try {
					javaSource = JavaRole.getJavaSourceTemplate();
				} catch (IOException ex) {
					logger.error("methodBoxStateChanged", ex);
				}
        		this.getTxtJavaSource().setText(javaSource);
        	}
        }
        
        selectTab(index);
    }

    protected void selectTab(int index){
        this.getJMethodTabbedPane().setSelectedIndex(index);
        int count = this.getJMethodTabbedPane().getTabCount();
        for(int i=0;i <count;i++){
            boolean enable = (i == index);
            this.getJMethodTabbedPane().setEnabledAt(i, enable);
        }
    }

    /**
	 * This method initializes txtMin	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtMin() {
		if (txtMin == null) {
			txtMin = new JTextFieldEx();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -