package com.vci.client.portal.platformPortal; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextField; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import com.vci.client.common.VCIBasePanel; import com.vci.client.framework.rightConfig.object.FunctionObject; import com.vci.client.omd.btm.ui.BtmTree; import com.vci.client.omd.btm.wrapper.BtmItemWrapper; import com.vci.client.omd.linktype.LinkTypeTree; import com.vci.client.omd.linktype.LinkTypeWrapper; import com.vci.client.ui.util.PostorderEnumeration; import com.vci.common.portal.enums.PortalVITypeFlag; public class PlatformPortalClientMain extends VCIBasePanel { /** * */ private static final long serialVersionUID = -6929857264098771182L; static FunctionObject object = new FunctionObject(); private JTree btmTree ; private JTree linkTypeTree ; private ButtonGroup bg ; private JRadioButton btmTerrBtn; private JRadioButton linktypeTreeBtn; private JPanel treePanel; private JSplitPane splitPane; private JPanel plmPortalTable; private JTextField textField; private static PlatformPortalClientMain mainPanel; private PortalVITypeFlag typeFlag; private JScrollPane scrollPane; public PlatformPortalClientMain(FunctionObject object) { super(object); this.object = object; init(); actionListener(); disRightTable(null); } private static PlatformPortalClientMain getinstance(){ if(mainPanel == null ){ mainPanel = new PlatformPortalClientMain(object); } return mainPanel; } private void init() { btmTree = new BtmTree(); linkTypeTree = new LinkTypeTree(); setLayout(new BorderLayout(0, 0)); splitPane = new JSplitPane(); add(splitPane); bg = new ButtonGroup(); JPanel panel = new JPanel(); splitPane.setLeftComponent(panel); panel.setLayout(new BorderLayout(0, 0)); JPanel radioBtn = new JPanel(); panel.add(radioBtn, BorderLayout.NORTH); btmTerrBtn = new JRadioButton("业务类型树"); btmTerrBtn.setSelected(true); linktypeTreeBtn = new JRadioButton("链接类型树"); // radioBtn.setLayout(new GridLayout(0, 2, 0, 0)); // add by caill start // 为定位框和定位按钮设置合适位置 textField = new JTextField(20); JButton sel = new JButton("定位"); radioBtn.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.weightx = 0.7; gbc.weighty = 0; gbc.gridx = 0; gbc.gridy = 0; radioBtn.add(textField, gbc); radioBtn.add(sel); gbc.weightx = 0; gbc.weighty = 0; gbc.gridx = 0; gbc.gridy = 1; gbc.insets = new Insets(5, 0, 0, 100); radioBtn.add(btmTerrBtn, gbc); gbc.gridx = 0; gbc.gridy = 1; gbc.insets = new Insets(5, 80, 0, 0); radioBtn.add(linktypeTreeBtn, gbc); bg.add(btmTerrBtn); bg.add(linktypeTreeBtn); // 为定位按钮增添点击事件 sel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // e.getSource(); String test = textField.getText().trim(); // 当业务类型树被选中时 if (btmTerrBtn.isSelected()) { DefaultTreeModel model = (DefaultTreeModel) btmTree.getModel(); model.reload(); TreeNode root = (TreeNode) model.getRoot(); PostorderEnumeration enumeration = new PostorderEnumeration( root); while (enumeration.hasMoreElements()) { DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration .nextElement(); if (element.getUserObject() instanceof BtmItemWrapper) { BtmItemWrapper wrapper = (BtmItemWrapper) element .getUserObject(); if (wrapper != null && wrapper.btmItem != null && wrapper.btmItem.name.equals(test)) { TreeNode[] path = element.getPath(); TreePath treePath = new TreePath(path); btmTree.setSelectionPath(treePath); return; } ; } } if (test.equals("")) { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "请输入业务类型", "提示", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "{ " + test + " }业务类型不存在", "提示", JOptionPane.INFORMATION_MESSAGE); } } // 当链接类型树被选中时 else { DefaultTreeModel model = (DefaultTreeModel) linkTypeTree.getModel(); model.reload(); TreeNode root = (TreeNode) model.getRoot(); PostorderEnumeration enumeration = new PostorderEnumeration(root); while (enumeration.hasMoreElements()) { DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration.nextElement(); if (element.getUserObject() instanceof LinkTypeWrapper) { LinkTypeWrapper wrapper = (LinkTypeWrapper) element.getUserObject(); if (wrapper != null && wrapper.linkType != null && wrapper.linkType.name.equals(test)) { TreeNode[] path = element.getPath(); TreePath treePath = new TreePath(path); linkTypeTree.setSelectionPath(treePath); return; } ; } } if (test.equals("")) { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "请输入链接类型", "提示", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "{ " + test + " }链接类型不存在", "提示", JOptionPane.INFORMATION_MESSAGE); } } } }); // 为定位框增加键盘事件 textField.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JTextField text = (JTextField) e.getSource(); String test = text.getText().trim(); // 当业务类型树被选中时 if (btmTerrBtn.isSelected()) { DefaultTreeModel model = (DefaultTreeModel) btmTree.getModel(); model.reload(); TreeNode root = (TreeNode) model.getRoot(); PostorderEnumeration enumeration = new PostorderEnumeration(root); while (enumeration.hasMoreElements()) { DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration .nextElement(); if (element.getUserObject() instanceof BtmItemWrapper) { BtmItemWrapper wrapper = (BtmItemWrapper) element.getUserObject(); if (wrapper != null && wrapper.btmItem != null && wrapper.btmItem.name.equals(test)) { TreeNode[] path = element.getPath(); TreePath treePath = new TreePath(path); btmTree.setSelectionPath(treePath); return; } ; } } if (test.equals("")) { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "请输入业务类型", "提示", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "{ " + test + " }业务类型不存在", "提示", JOptionPane.INFORMATION_MESSAGE); } } // 当链接类型树被选中时 else { DefaultTreeModel model = (DefaultTreeModel) linkTypeTree .getModel(); model.reload(); TreeNode root = (TreeNode) model.getRoot(); PostorderEnumeration enumeration = new PostorderEnumeration( root); while (enumeration.hasMoreElements()) { DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration .nextElement(); if (element.getUserObject() instanceof LinkTypeWrapper) { LinkTypeWrapper wrapper = (LinkTypeWrapper) element .getUserObject(); if (wrapper != null && wrapper.linkType != null && wrapper.linkType.name.equals(test)) { TreeNode[] path = element.getPath(); TreePath treePath = new TreePath(path); linkTypeTree.setSelectionPath(treePath); return; } ; } } if (test.equals("")) { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "请输入链接类型", "提示", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog( com.vci.client.LogonApplication.frame, "{ " + test + " }链接类型不存在", "提示", JOptionPane.INFORMATION_MESSAGE); } } } }); // add by caill end treePanel = new JPanel(); treePanel.setLayout(new BorderLayout()); treePanel.add(btmTree); scrollPane = new JScrollPane(); scrollPane.setViewportView(treePanel); panel.add(scrollPane, BorderLayout.CENTER); } private void actionListener(){ btmTerrBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { treePanel.removeAll(); treePanel.add(btmTree); typeFlag = PortalVITypeFlag.BtmType; flushTreePanel(); } }); linktypeTreeBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { treePanel.removeAll(); treePanel.add(linkTypeTree); typeFlag = PortalVITypeFlag.LinkType; flushTreePanel(); } }); btmTree.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { if(btmTree.getSelectionPath() == null || btmTree.getSelectionPath().getLastPathComponent() == null) return; DefaultMutableTreeNode selectNode = (DefaultMutableTreeNode) btmTree.getSelectionPath().getLastPathComponent(); Object object = selectNode.getUserObject(); disRightTable(object); } }); linkTypeTree.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { if(linkTypeTree.getSelectionPath() == null || linkTypeTree.getSelectionPath().getLastPathComponent() == null) return; DefaultMutableTreeNode selectNode = (DefaultMutableTreeNode) linkTypeTree.getSelectionPath().getLastPathComponent(); Object object = selectNode.getUserObject(); disRightTable(object); } }); } private void flushTreePanel() { treePanel.updateUI(); } private void disRightTable(Object selectNode) { if(selectNode == null){ plmPortalTable = new JPanel(); }else{ PortalVITypeFlag typeFlag = PortalVITypeFlag.BtmType; if(linktypeTreeBtn.isSelected()){ typeFlag = PortalVITypeFlag.LinkType; } plmPortalTable = new PlatformPortalTablePanel(selectNode, typeFlag, true, true, true, null, "表单表格管理", true); } splitPane.setRightComponent(plmPortalTable); } }