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

📄 simplenavigatorpanel.java

📁 jawe的最新版本,基于Java的图形化工作流编辑器。图形化工作流编辑器 。使用JAVA语言开发
💻 JAVA
字号:
package org.enhydra.jawe.components.simplenavigator;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Point;import java.awt.Rectangle;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import javax.swing.BorderFactory;import javax.swing.JComponent;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JToolBar;import javax.swing.JTree;import javax.swing.JViewport;import javax.swing.ScrollPaneConstants;import javax.swing.SwingUtilities;import javax.swing.tree.TreeModel;import javax.swing.tree.TreePath;import javax.swing.tree.TreeSelectionModel;import org.enhydra.jawe.BarFactory;import org.enhydra.jawe.JaWEComponent;import org.enhydra.jawe.JaWEComponentView;import org.enhydra.jawe.JaWEManager;import org.enhydra.jawe.XPDLElementChangeInfo;import org.enhydra.jawe.base.controller.JaWEActions;import org.enhydra.jawe.components.XPDLTreeCellRenderer;import org.enhydra.jawe.components.XPDLTreeModel;import org.enhydra.jawe.components.XPDLTreeNode;import org.enhydra.shark.xpdl.XMLCollection;import org.enhydra.shark.xpdl.XMLElement;import org.enhydra.shark.xpdl.XMLElementChangeInfo;import org.enhydra.shark.xpdl.elements.Activities;import org.enhydra.shark.xpdl.elements.Activity;import org.enhydra.shark.xpdl.elements.ActivitySet;import org.enhydra.shark.xpdl.elements.ActivitySets;import org.enhydra.shark.xpdl.elements.Package;import org.enhydra.shark.xpdl.elements.Transition;import org.enhydra.shark.xpdl.elements.Transitions;import org.enhydra.shark.xpdl.elements.WorkflowProcess;import org.enhydra.shark.xpdl.elements.WorkflowProcesses;/** *  Used to display Package hierarchy tree. * *  @author Sasa Bojanic */public class SimpleNavigatorPanel extends JPanel implements JaWEComponentView {   protected XPDLTreeModel treeModel;   protected JTree tree;   protected JToolBar toolbar;   protected JScrollPane scrollPane;   protected SimpleNavigator controller;   protected int xClick, yClick;      protected MouseListener mouseListener;   protected XPDLTreeCellRenderer renderer;      public SimpleNavigatorPanel (SimpleNavigator controller) {      this.controller=controller;   }   public void configure () {//      setLayout(new BoxLayout(this,BoxLayout.X_AXIS));      setBorder(BorderFactory.createEtchedBorder());      setLayout(new BorderLayout());      toolbar = BarFactory.createToolbar("defaultToolbar", controller);         toolbar.setFloatable(false);       if (toolbar.getComponentCount() > 0) {         add(toolbar,BorderLayout.NORTH);      }      init();   }   public void printTreeModel () {      printTreeModel(treeModel.getRootNode());   }   public void printTreeModel (XPDLTreeNode n) {      System.err.println("There are "+n.getChildCount()+" children for "+n.getXPDLElement());      for (int i=0; i<n.getChildCount(); i++) {         printTreeModel((XPDLTreeNode)n.getChildAt(i));      }         }   public void init () {            controller.getSettings().adjustActions();      treeModel=new SimpleNavigatorTreeModel(controller);      tree = new JTree(treeModel) {         public void scrollRectToVisible(Rectangle aRect){            aRect.x=scrollPane.getHorizontalScrollBar().getValue();            super.scrollRectToVisible(aRect);         }               };            // setting some tree properties      tree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);      tree.setRootVisible(false);      tree.setShowsRootHandles(true);      renderer=new XPDLTreeCellRenderer(controller);      Color bckColor = controller.getNavigatorSettings().getBackGroundColor();      renderer.setBackgroundNonSelectionColor(bckColor);      renderer.setBackgroundSelectionColor(controller.getNavigatorSettings().getSelectionColor());      tree.setBackground(bckColor);      tree.setCellRenderer(renderer);      tree.addTreeSelectionListener(controller);            /** MouseListener for JTree */      mouseListener = new MouseAdapter() {         public void mouseClicked( MouseEvent me ) {            xClick = me.getX();            yClick = me.getY();            TreePath path = tree.getPathForLocation(xClick, yClick);                        if (path != null) {               tree.setAnchorSelectionPath(path);                              if (SwingUtilities.isRightMouseButton(me)) {                  if (!tree.isPathSelected(path)) {                     tree.setSelectionPath(path);                  }                                    JPopupMenu popup = BarFactory.createPopupMenu("default", controller);                  popup.show(tree, me.getX(), me.getY());               }                                     XPDLTreeNode node = (XPDLTreeNode) path.getLastPathComponent();                              if (me.getClickCount() > 1 && !SwingUtilities.isRightMouseButton(me) && tree.getModel().isLeaf(node)) {                  JaWEManager.getInstance().getJaWEController().getJaWEActions().getAction(JaWEActions.EDIT_PROPERTIES_ACTION).actionPerformed(null);               }            } else {                              TreePath close = tree.getClosestPathForLocation(xClick, yClick);               Rectangle rect = tree.getPathBounds(close);               if (rect==null || ! (rect.y < yClick && rect.y + rect.height > yClick)) {                                 JaWEManager.getInstance().getJaWEController().getSelectionManager().setSelection((XMLElement) null, false);                  tree.clearSelection();               }            }                        tree.getParent().requestFocus();                        }      };            tree.addMouseListener( mouseListener );            // creates panel      scrollPane=new JScrollPane();      scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);      scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);      scrollPane.setViewportView(tree);      JViewport port = scrollPane.getViewport();      port.setScrollMode(JViewport.BLIT_SCROLL_MODE);      scrollPane.setBackground(Color.lightGray);      //scrollPane.getVerticalScrollBar().setUnitIncrement(20);//      scrollPane.getHorizontalScrollBar().setUnitIncrement(40);      add(scrollPane,BorderLayout.CENTER);   }      public TreeModel getTreeModel() {      return treeModel;   }   public JTree getTree() {      return tree;   }      public JaWEComponent getJaWEComponent () {      return controller;   }      public JComponent getDisplay () {      return this;   }   public Point getMouseClickLocation() {               return new Point(xClick, yClick);   }      public void handleXPDLChangeEvent(XPDLElementChangeInfo info) {      int action = info.getAction();      XMLElement el = info.getChangedElement();      List l = info.getChangedSubElements();            tree.removeTreeSelectionListener(controller);            if (action == XPDLElementChangeInfo.SELECTED) {         tree.clearSelection();      }                     if (el instanceof Activity || el instanceof Package || el instanceof WorkflowProcesses || el instanceof WorkflowProcess            || el instanceof ActivitySets || el instanceof ActivitySet || el instanceof Activities || (el instanceof Transitions && action==XPDLElementChangeInfo.SELECTED)) {         if (action == XMLElementChangeInfo.INSERTED) {            if (l != null && l.size()>0) {               Iterator it1 = l.iterator();               while (it1.hasNext()) {                  treeModel.insertNode((XMLElement) it1.next());               }            } else {               if (el instanceof Package) {                  treeModel.insertNode(el);               }            }            if (el instanceof Package) {               controller.getSettings().adjustActions();            }         } else if (action == XMLElementChangeInfo.REMOVED) {            if (l != null && l.size()>0) {               Iterator it1 = l.iterator();               while (it1.hasNext()) {                  treeModel.removeNode((XMLElement) it1.next());               }            } else {               treeModel.removeNode(el);            }            if (treeModel.getRootNode().getChildCount()==0) {                              reinitialize();               return;            }         } else if (action == XPDLElementChangeInfo.SELECTED) {            if (el != null) {               List toSelect=new ArrayList();                                 if (l!=null) {                  toSelect.addAll(l);               }               if (toSelect.size()==0) {                  toSelect.add(el);               }               for (int i=0; i<toSelect.size(); i++) {                  XMLElement toSel=(XMLElement)toSelect.get(i);                  if (toSelect instanceof Transitions || toSelect instanceof Transition) {                     continue;                  }                  XPDLTreeNode n = treeModel.findNode(toSel);                  TreePath tp=null;                  if (n != null) {                     tp = new TreePath(n.getPath());                     tree.addSelectionPath(tp);                  }                  if (tp!=null) {                     tree.scrollPathToVisible(tp);                  }               }            }         } else if (action == XMLElementChangeInfo.REPOSITIONED) {            List elsToReposition = new ArrayList();            List newPositions = new ArrayList();            if (el instanceof XMLCollection) {               if (l != null) {                  elsToReposition.addAll(l);                  newPositions.addAll((List) info.getNewValue());               }               for (int j = 0; j < elsToReposition.size(); j++) {                  XMLElement eltr = (XMLElement) elsToReposition.get(j);                  treeModel.repositionNode(eltr, ((Integer) newPositions.get(j)).intValue());               }            }         }      }      tree.addTreeSelectionListener(controller);   }         protected void reinitialize () {      remove(scrollPane);      treeModel.clearTree();      tree.getSelectionModel().clearSelection();      tree.removeMouseListener(mouseListener);      tree.removeTreeSelectionListener(controller);      tree.setCellRenderer(null);      init();   }       // before doing this, listener has to be removed   public void setCurrentSelection () {      List toSelect=JaWEManager.getInstance().getJaWEController().getSelectionManager().getSelectedElements();      for (int i=0; i<toSelect.size(); i++) {         XMLElement toSel=(XMLElement)toSelect.get(i);         if (toSel instanceof Package                || toSel instanceof WorkflowProcess               || toSel instanceof ActivitySet                || toSel instanceof Activity) {            XPDLTreeNode n = treeModel.findNode(toSel);            TreePath tp=null;            if (n != null) {               tp = new TreePath(n.getPath());               tree.addSelectionPath(tp);            }            if (tp!=null) {               tree.scrollPathToVisible(tp);            }         }      }   }}

⌨️ 快捷键说明

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