📄 roledialog.java
字号:
/**
* 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 + -