package com.vci.client.logon.client;
|
|
import java.awt.BorderLayout;
|
import java.awt.Color;
|
import java.awt.event.ComponentAdapter;
|
import java.awt.event.ComponentEvent;
|
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseMotionAdapter;
|
import java.lang.reflect.InvocationTargetException;
|
|
import javax.swing.JLabel;
|
import javax.swing.JPanel;
|
import javax.swing.JScrollPane;
|
import javax.swing.JSplitPane;
|
import javax.swing.event.TreeExpansionEvent;
|
import javax.swing.event.TreeExpansionListener;
|
import javax.swing.event.TreeSelectionEvent;
|
import javax.swing.event.TreeSelectionListener;
|
import javax.swing.tree.TreePath;
|
|
import com.vci.client.LogonApplication;
|
import com.vci.client.framework.delegate.FunctionClientDelegate;
|
import com.vci.client.framework.rightConfig.object.FunctionObject;
|
import com.vci.client.framework.scaffold.AbstractTabbedMainPanel;
|
import com.vci.client.framework.scaffold.GenericMenuBar;
|
import com.vci.client.framework.specialrole.SpecialRoleClientObject;
|
import com.vci.client.framework.specialrole.SpecialRoleTreeClientObject;
|
import com.vci.client.logon.base.BaseMenuBar;
|
import com.vci.client.ui.frame.UIConstructorInterface;
|
import com.vci.client.ui.swing.components.VCIJPanel;
|
import com.vci.client.ui.swing.components.VCIJTree;
|
import com.vci.client.ui.tree.VCIBaseTreeModel;
|
import com.vci.client.ui.tree.VCIBaseTreeNode;
|
import com.vci.corba.common.VCIError;
|
|
/**
|
* 系统模块的主界面
|
* @author liud
|
*
|
*/
|
public class VCISpecialModuleMainPanel extends AbstractTabbedMainPanel{
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 8648659519474762796L;
|
|
/**
|
* 主界面的分隔面板
|
*/
|
private JSplitPane mainSplitPane = null;
|
/**
|
* 主界面左边的面板
|
*/
|
private JScrollPane leftPanel = new JScrollPane();
|
/**
|
* 主界面右边的滚动面板
|
*/
|
private JScrollPane rightScrollPane = new JScrollPane();
|
/**
|
* 存储左边树上选中的模块的名称
|
*/
|
private String selectedName = "";
|
/**
|
* 主界面左边的树
|
*/
|
private VCIJTree tree = null;
|
/**
|
* treeModel
|
*/
|
private VCIBaseTreeModel treeModel = null;
|
|
private FunctionClientDelegate funcDel = new FunctionClientDelegate(LogonApplication.getUserEntityObject());
|
|
/**
|
* 存储当前模块对象
|
*/
|
private SpecialRoleClientObject specialRoleClientObject;
|
public VCISpecialModuleMainPanel(SpecialRoleClientObject specialRoleClientObject){
|
this.specialRoleClientObject = specialRoleClientObject;
|
}
|
|
public void init(){
|
mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,leftPanel,rightScrollPane);
|
mainSplitPane.setDividerSize(10);
|
mainSplitPane.setContinuousLayout(true);
|
mainSplitPane.setOneTouchExpandable(true);
|
mainSplitPane.setDividerLocation(200);
|
initLeft();
|
initRight();
|
|
this.setLayout(new BorderLayout());
|
this.add(mainSplitPane,BorderLayout.CENTER);
|
}
|
|
private void initLeft(){
|
VCIBaseTreeNode rootNode = new VCIBaseTreeNode(specialRoleClientObject.getModuleName(), "root");
|
rootNode.setExpand(true);
|
treeModel = new VCIBaseTreeModel(rootNode);
|
tree = new VCIJTree(treeModel,new VCISpecialModuleMainTreeCellRenderer(specialRoleClientObject));
|
// tree = new VCIJTree(treeModel);
|
// tree.setCellRenderer(new VCIModuleMainTreeCellRenderer(curFuncObj));
|
|
/**初始化一级节点**/
|
initTreeNode(rootNode);
|
|
/**初始树时只初始一级节点,如果有多级菜单,展开时加载**/
|
tree.addTreeExpansionListener(new TreeExpansionListener() {
|
@Override
|
public void treeExpanded(TreeExpansionEvent event) {
|
TreePath path = event.getPath();
|
VCIBaseTreeNode selectNode = (VCIBaseTreeNode) path.getLastPathComponent();
|
if(!"root".equals(selectNode.getObj())||!selectNode.isExpand()){
|
selectNode.setExpand(true);
|
SpecialRoleClientObject obj = (SpecialRoleClientObject)selectNode.getObj();
|
// try {
|
// SpecialRoleClientObject[] objs = RightControlUtil.getFunctionsByRight(obj.getId(), LogonApplication.getUserEntityObject().getUserName());;
|
SpecialRoleTreeClientObject[] objs = obj.getSpecialRoleTreeClientObject();
|
for(int i = 0;i < objs.length;i++){
|
VCIBaseTreeNode node = new VCIBaseTreeNode(objs[i].getNodeName(), objs[i]);
|
selectNode.add(node);
|
// if(!"1".equals(funcDel.checkChildObject(objs[i].getId()))){//如果下级没有模块
|
// node.setLeaf(true);
|
// }
|
}
|
treeModel.reload(selectNode);
|
// } catch (VCIException e) {
|
// e.printStackTrace();
|
// }
|
}
|
}
|
@Override
|
public void treeCollapsed(TreeExpansionEvent event) {
|
|
}
|
});
|
/**树节点选中时,根据节点上的模块对象标识去加载具体的类进行展现**/
|
tree.addTreeSelectionListener(new TreeSelectionListener() {
|
@Override
|
public void valueChanged(TreeSelectionEvent e) {
|
TreePath path = e.getPath();
|
VCIBaseTreeNode selectNode = (VCIBaseTreeNode) path.getLastPathComponent();
|
if(!"root".equals(selectNode.getObj())){
|
SpecialRoleTreeClientObject obj = (SpecialRoleTreeClientObject)selectNode.getObj();
|
loadRightPanel(obj);
|
mainSplitPane.setDividerLocation(mainSplitPane.getDividerLocation());
|
}else{
|
// rightScrollPane.getViewport().add(new JPanel());
|
//added by ligang 当点击树的顶级节点时,右边界面进行刷新
|
mainSplitPane.setRightComponent(new JPanel());
|
mainSplitPane.setDividerLocation(mainSplitPane.getDividerLocation());
|
}
|
}
|
});
|
|
leftPanel.getViewport().add(tree);
|
}
|
|
private void initRight(){
|
rightScrollPane.setAutoscrolls(true);
|
}
|
|
private void initTreeNode(VCIBaseTreeNode rootNode){
|
try {
|
// final FunctionObject[] objs = RightControlUtil.getFunctionsByRight(curFuncObj.getId(), LogonApplication.getUserEntityObject().getUserName());
|
final SpecialRoleTreeClientObject[] objs = specialRoleClientObject.getSpecialRoleTreeClientObject();
|
if(objs.length > 1){
|
for(int i = 0;i < objs.length;i++){
|
VCIBaseTreeNode node = new VCIBaseTreeNode(objs[i].getNodeName(), objs[i]);
|
rootNode.add(node);
|
// if(!"1".equals(funcDel.checkChildObject(objs[i].getId()))){//如果下级没有模块
|
// node.setLeaf(true);
|
// }
|
}
|
treeModel.reload(rootNode);
|
}else if(objs.length == 1){
|
mainSplitPane.setDividerSize(0);
|
mainSplitPane.setOneTouchExpandable(false);
|
mainSplitPane.setDividerLocation(0);
|
mainSplitPane.addComponentListener(new ComponentAdapter(){
|
public void componentResized(ComponentEvent e) {
|
mainSplitPane.setDividerLocation(0);
|
}
|
});
|
// if(curFuncObj.isShowTodoData()){
|
// objs[0].setShowTodoData(curFuncObj.isShowTodoData());
|
// objs[0].setMap(curFuncObj.getMap());
|
// }
|
loadRightPanel(objs[0]);
|
mainSplitPane.setDividerLocation(mainSplitPane.getDividerLocation());
|
}else{
|
mainSplitPane.setDividerSize(0);
|
mainSplitPane.setOneTouchExpandable(false);
|
mainSplitPane.setDividerLocation(0);
|
JPanel pal = new JPanel();
|
JLabel lbl = new JLabel("加载模块面板出错!");
|
lbl.setForeground(Color.red);
|
pal.add(lbl);
|
rightScrollPane.getViewport().add(pal);
|
}
|
|
/**added by ligang 双击mainSplitPane左边框时,系统加载出权限树节点的处理**/
|
|
mainSplitPane.addMouseListener(new MouseAdapter() {
|
@Override
|
public void mouseClicked(MouseEvent e) {
|
if(objs.length == 1) {
|
mainSplitPane.setDividerSize(0);
|
mainSplitPane.setOneTouchExpandable(false);
|
mainSplitPane.setDividerLocation(0);
|
mainSplitPane.setDividerLocation(mainSplitPane.getDividerLocation());
|
}
|
}
|
|
@Override
|
public void mousePressed(MouseEvent arg0) {
|
if(objs.length == 1) {
|
mainSplitPane.setDividerSize(0);
|
mainSplitPane.setOneTouchExpandable(false);
|
mainSplitPane.setDividerLocation(0);
|
mainSplitPane.setDividerLocation(mainSplitPane.getDividerLocation());
|
}
|
}
|
|
@Override
|
public void mouseEntered(MouseEvent arg0) {
|
if(objs.length == 1) {
|
mainSplitPane.setDividerSize(0);
|
mainSplitPane.setOneTouchExpandable(false);
|
mainSplitPane.setDividerLocation(0);
|
mainSplitPane.setDividerLocation(mainSplitPane.getDividerLocation());
|
}
|
|
}
|
|
@Override
|
public void mouseReleased(MouseEvent arg0) {
|
if(objs.length == 1) {
|
mainSplitPane.setDividerSize(0);
|
mainSplitPane.setOneTouchExpandable(false);
|
mainSplitPane.setDividerLocation(0);
|
mainSplitPane.setDividerLocation(mainSplitPane.getDividerLocation());
|
}
|
|
}
|
|
@Override
|
public void mouseExited(MouseEvent arg0) {
|
if(objs.length == 1) {
|
mainSplitPane.setDividerSize(0);
|
mainSplitPane.setOneTouchExpandable(false);
|
mainSplitPane.setDividerLocation(0);
|
mainSplitPane.setDividerLocation(mainSplitPane.getDividerLocation());
|
}
|
|
}
|
|
});
|
|
mainSplitPane.addMouseMotionListener(new MouseMotionAdapter() {
|
@Override
|
public void mouseDragged(MouseEvent arg0) {
|
if(objs.length == 1) {
|
mainSplitPane.setDividerSize(0);
|
mainSplitPane.setOneTouchExpandable(false);
|
mainSplitPane.setDividerLocation(0);
|
mainSplitPane.setDividerLocation(mainSplitPane.getDividerLocation());
|
}
|
}
|
});
|
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
mainSplitPane.setDividerSize(0);
|
mainSplitPane.setOneTouchExpandable(false);
|
mainSplitPane.setDividerLocation(0);
|
JPanel pal = new JPanel();
|
JLabel lbl = new JLabel("加载模块面板出错!");
|
lbl.setForeground(Color.red);
|
pal.add(lbl);
|
rightScrollPane.getViewport().add(pal);
|
}
|
}
|
|
private void loadRightPanel(SpecialRoleTreeClientObject specialRoleTreeClientObject){
|
LogonApplication.getUserEntityObject().setModules(specialRoleTreeClientObject.getNodeName());
|
selectedName = specialRoleTreeClientObject.getNodeName();
|
// rightScrollPane.getViewport().add((JPanel)getNewPanel(funcObj));
|
mainSplitPane.setRightComponent((JPanel)getNewPanel(specialRoleTreeClientObject));
|
}
|
/**
|
* 获取选中的模块名称
|
* <p>Description: </p>
|
*
|
* @author xf
|
* @time 2012-6-3
|
* @return
|
*/
|
public String getSelectModuleName(){
|
return selectedName;
|
}
|
|
private Object getNewPanel(SpecialRoleTreeClientObject specialRoleTreeClientObject) {
|
Object res = new VCIJPanel();
|
try {
|
Class<?> cls = Class.forName(specialRoleTreeClientObject.getPanelName());
|
try {
|
res = cls.getConstructor(FunctionObject.class).newInstance(new FunctionObject());
|
} catch (NoSuchMethodException nse) {
|
UIConstructorInterface instance = (UIConstructorInterface)cls.newInstance();
|
instance.init();
|
res = instance.start();
|
}
|
|
} catch (SecurityException e) {
|
e.printStackTrace();
|
} catch (ClassNotFoundException e) {
|
e.printStackTrace();
|
}catch (IllegalArgumentException e) {
|
e.printStackTrace();
|
} catch (InstantiationException e) {
|
e.printStackTrace();
|
} catch (IllegalAccessException e) {
|
e.printStackTrace();
|
} catch (InvocationTargetException e) {
|
e.printStackTrace();
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
return res;
|
}
|
|
BaseMenuBar specialMenuBar = null;
|
@Override
|
public BaseMenuBar getSpecialMenuBar() {
|
if(specialMenuBar == null){
|
specialMenuBar = new GenericMenuBar(LogonApplication.frame);
|
}
|
return specialMenuBar;
|
}
|
|
}
|