亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? workspacenavigator.java

?? 一個很好實用的工作流OSWORKFLOW開發例子.有著非常優秀的靈活性.
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package com.opensymphony.workflow.designer;import java.util.List;import java.util.*;import java.awt.*;import java.awt.event.MouseEvent;import java.awt.event.MouseAdapter;import java.net.MalformedURLException;import java.io.File;import javax.swing.*;import javax.swing.event.*;import javax.swing.tree.*;import com.opensymphony.workflow.loader.*;import com.opensymphony.workflow.FactoryException;import com.opensymphony.workflow.designer.swing.FileDropHandler;import com.opensymphony.workflow.designer.actions.AssignPalette;import com.opensymphony.workflow.designer.actions.DeleteWorkflow;import com.opensymphony.workflow.designer.actions.ImportWorkflow;/** * @author Hani Suleiman (hani@formicary.net) *         Date: May 15, 2003 *         Time: 8:56:07 PM */public class WorkspaceNavigator extends JTree implements TreeSelectionListener, TreeModelListener{  private WorkflowDesigner designer;  private DefaultMutableTreeNode rootNode;  private String currentWorkflow;  private WorkflowFactory currentWorkspace = null;	private DefaultTreeCellRenderer  cellRenderer = new WorkspaceCellRenderer();    private JPopupMenu popup;  private DeleteWorkflow deleteWorkflow;  private AssignPalette assignPalette;  public WorkspaceNavigator(WorkflowDesigner designer)  {    super(new DefaultTreeModel(new DefaultMutableTreeNode(ResourceManager.getString("workspace.none"))));    rootNode = (DefaultMutableTreeNode)getModel().getRoot();    this.designer = designer;    addTreeSelectionListener(this);    setEditable(false);    getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);    setShowsRootHandles(true);    setCellRenderer(cellRenderer);    getModel().addTreeModelListener(this);    popup = new JPopupMenu();    popup.setInvoker(this);    //this is kinda a hack, since we assume that importworkflow has already been registered    //(which it has, but only because the toolbar is created before the nav, so a bit fragile    deleteWorkflow = new DeleteWorkflow(designer);    assignPalette = new AssignPalette(designer);    popup.add(new JMenuItem(ActionManager.register("deleteflow", deleteWorkflow)));    ActionManager.register("assign.palette", assignPalette);    assignPalette.setEnabled(false);    popup.add(new JMenuItem(assignPalette));    addMouseListener(new MouseAdapter()    {      public void mousePressed(MouseEvent e)      {        handlePopup(e);      }      public void mouseReleased(MouseEvent e)      {        handlePopup(e);      }      private void handlePopup(MouseEvent e)      {        if(e.isPopupTrigger())        {          int row = getRowForLocation(e.getX(), e.getY());          if(row != -1)          {            TreePath path = getPathForRow(row);            if(path.getPathCount() != 2) return;            String workflowName = path.getLastPathComponent().toString();            Point p = new Point(e.getX(), e.getY());            SwingUtilities.convertPointToScreen(p, WorkspaceNavigator.this);            deleteWorkflow.setWorkflow(workflowName);            assignPalette.setWorkflow(workflowName);            popup.setLocation(p.x, p.y);            popup.setVisible(true);          }        }      }    });    new FileDropHandler(this, true)    {      public void filesDropped(File[] files)      {        for(int i = 0; i < files.length; i++)        {          File file = files[i];          if(file.getName().endsWith(".xml") && !file.isDirectory())          {            try            {              ((ImportWorkflow)ActionManager.get("importflow")).importURL(file.toURL());            }            catch(MalformedURLException e)            {              e.printStackTrace();            }          }        }      }    };  }  public void selectWorkflow(String name)  {    Object root = getModel().getRoot();    int count = getModel().getChildCount(root);    for(int i = 0; i < count; i++)    {      DefaultMutableTreeNode node = (DefaultMutableTreeNode)getModel().getChild(root, i);      if (node.getUserObject() instanceof WorkflowDescriptor)      {      	WorkflowDescriptor desc = (WorkflowDescriptor)node.getUserObject();      	if(desc.getName().equals(name))      	{					designer.selectWorkflow(name);        	        	TreePath path = new TreePath(new Object[]{root, node});        	getSelectionModel().setSelectionPath(path);        	expandPath(path);        	return;      	}      }    }  }  public void removeWorkflow(String name)  {    Object root = getModel().getRoot();    DefaultTreeModel model = (DefaultTreeModel)getModel();    int count = model.getChildCount(root);    for(int i = 0; i < count; i++)    {      DefaultMutableTreeNode node = (DefaultMutableTreeNode)model.getChild(root, i);      if (node.getUserObject() instanceof WorkflowDescriptor)      {      	WorkflowDescriptor workflow = (WorkflowDescriptor)node.getUserObject();      	if (workflow.getName().equals(name))      	{ 					model.removeNodeFromParent(node);					return;      	}      }    }  }		public void valueChanged(TreeSelectionEvent e)	{		DefaultMutableTreeNode node = (DefaultMutableTreeNode)getLastSelectedPathComponent();		if (node == null) 			return;		designer.showDetails(node.getUserObject());		Object user = node.getUserObject();		if (user instanceof AbstractDescriptor)		{			if (user instanceof WorkflowDescriptor)			{				designer.selectWorkflow(((WorkflowDescriptor)user).getName());			}			else if (user instanceof ResultDescriptor)			{        // select the current workflow				TreeNode[] nodes = node.getPath();				if (nodes.length>2)				{					DefaultMutableTreeNode workflowNode = (DefaultMutableTreeNode)nodes[1];					if (workflowNode.getUserObject() instanceof WorkflowDescriptor)					{						designer.selectWorkflow(((WorkflowDescriptor)workflowNode.getUserObject()).getName());	 						}				}				designer.selectCell((AbstractDescriptor)user);			}			else			{				AbstractDescriptor parentDescriptor = ((AbstractDescriptor)user).getParent();				if (parentDescriptor instanceof WorkflowDescriptor)				{					designer.selectWorkflow(((WorkflowDescriptor)parentDescriptor).getName());					designer.selectCell((AbstractDescriptor)user);				}			}		}	}		  public void treeNodesChanged(TreeModelEvent e)  {    DefaultMutableTreeNode node;    node = (DefaultMutableTreeNode)(e.getTreePath().getLastPathComponent());    /*     * If the event lists children, then the changed     * node is the child of the node we've already     * gotten.  Otherwise, the changed node and the     * specified node are the same.     */    try    {      int index = e.getChildIndices()[0];      node = (DefaultMutableTreeNode)(node.getChildAt(index));    }    catch(NullPointerException exc)    {}    String newValue = (String)node.getUserObject();    designer.renameWorkflow(currentWorkflow, newValue);    currentWorkflow = newValue;  }  public void setWorkspace(WorkflowFactory workspace)  {    removeChildNodes(rootNode);    ((DefaultTreeModel)getModel()).reload();    DefaultMutableTreeNode root = (DefaultMutableTreeNode)getModel().getRoot();    if(workspace != null)    {      String[] workflows;      currentWorkspace = workspace;      try {				workflows = workspace.getWorkflowNames();      }      catch(FactoryException t)      {      	return;      }            for(int i = 0; i < workflows.length; i++)      {        try         {        	WorkflowDescriptor descriptor = workspace.getWorkflow(workflows[i], false);        	addWorkflow(descriptor);        }        catch(FactoryException fe)        {        }      }      root.setUserObject(workspace.getName());      expandRow(0);    }    else    {      root.setUserObject(ResourceManager.getString("workspace.none"));    }  }	public void addWorkflow(String name)	{		if (currentWorkspace!=null)		{			try 			{				WorkflowDescriptor descriptor = currentWorkspace.getWorkflow(name);				addWorkflow(descriptor);			}			catch(FactoryException fe)			{        				}		}	}	  public void addWorkflow(WorkflowDescriptor desc)  {    if (desc!=null)   	{   		// Add the workflow   		DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(desc) {   									public String toString()										{											if (getUserObject() instanceof WorkflowDescriptor)											{												return ((WorkflowDescriptor)getUserObject()).getName();											}											else											{												return super.toString();											}										}   								};			DefaultTreeModel model = (DefaultTreeModel)getModel();    	DefaultMutableTreeNode root = (DefaultMutableTreeNode)model.getRoot();    	model.insertNodeInto(childNode, root, root.getChildCount());   	   		// Add all the workflow childs (folders)   		// meta   		// registers   		// trigger-functions   		// initial-actions (folder)			DefaultMutableTreeNode folderNode = new DefaultMutableTreeNode(ResourceManager.getString("initialactions.folder"));   		model.insertNodeInto(folderNode, childNode, childNode.getChildCount());   		addActions(desc.getInitialActions(), folderNode);   		// global-actions (folder)			folderNode = new DefaultMutableTreeNode(ResourceManager.getString("globalactions.folder"));			model.insertNodeInto(folderNode, childNode, childNode.getChildCount());			addActions(desc.getGlobalActions(), folderNode);   		// common-actions (folder)			folderNode = new DefaultMutableTreeNode(ResourceManager.getString("commonactions.folder"));			model.insertNodeInto(folderNode, childNode, childNode.getChildCount());			addCommonActions(desc, folderNode);   		// steps (folder)			folderNode = new DefaultMutableTreeNode(ResourceManager.getString("steps.folder"));			model.insertNodeInto(folderNode, childNode, childNode.getChildCount());			addSteps(desc, folderNode);   		// splits (folder)			folderNode = new DefaultMutableTreeNode(ResourceManager.getString("splits.folder"));			model.insertNodeInto(folderNode, childNode, childNode.getChildCount());			addSplits(desc, folderNode);   		// joins (folder)			folderNode = new DefaultMutableTreeNode(ResourceManager.getString("joins.folder"));			model.insertNodeInto(folderNode, childNode, childNode.getChildCount());			addJoins(desc, folderNode);   	}  }	private void addActions(List actions, DefaultMutableTreeNode node)	{		if ((actions!=null)&&(node!=null))		{			DefaultTreeModel model = (DefaultTreeModel)getModel();			removeChildNodes(node); 					for (Iterator iterator=actions.iterator(); iterator.hasNext();)			{				ActionDescriptor action = (ActionDescriptor)iterator.next(); 				DefaultMutableTreeNode actionNode = new DefaultMutableTreeNode(action) {										public String toString()										{											if (getUserObject() instanceof ActionDescriptor)											{												return ((ActionDescriptor)getUserObject()).getName();											}											else											{												return super.toString();											}										}									};				model.insertNodeInto(actionNode, node, node.getChildCount());				addActionResults(action, actionNode);			}			 		}	}		private void addActionResults(ActionDescriptor action, DefaultMutableTreeNode node)	{		if ((action==null)||(node==null))			return;				DefaultTreeModel model = (DefaultTreeModel)getModel();		removeChildNodes(node);				//	add the action unconditional-results		ResultDescriptor unconditional = action.getUnconditionalResult();		if (unconditional!=null)		{			DefaultMutableTreeNode unconditionalNode = new DefaultMutableTreeNode(unconditional){								 public String toString()								 {									 if (getUserObject() instanceof ResultDescriptor)									 {										 String name = ((ResultDescriptor)getUserObject()).getDisplayName();										 if ((name==null)||(name.length()==0))										 {										 		ActionDescriptor a = (ActionDescriptor)((ResultDescriptor)getUserObject()).getParent();										 		if (a!=null)										 			name = a.getName();										 		else										 			name = "";												 }										 return name;									 }									 else									 {										 return super.toString();									 }								 }							 };			model.insertNodeInto(unconditionalNode, node, node.getChildCount());		}		// add the action conditional-results		List results = action.getConditionalResults(); 					if (results!=null)		{			for (Iterator it=results.iterator(); it.hasNext();)			{				ConditionalResultDescriptor conditional = (ConditionalResultDescriptor)it.next();				DefaultMutableTreeNode conditionalNode = new DefaultMutableTreeNode(conditional){														 public String toString()														 {															 if (getUserObject() instanceof ConditionalResultDescriptor)															 {																 String name = ((ConditionalResultDescriptor)getUserObject()).getDisplayName();																 if ((name==null)||(name.length()==0))																 {																 		ActionDescriptor a = (ActionDescriptor)((ConditionalResultDescriptor)getUserObject()).getParent();																 		if (a!=null)																 			name = a.getName();																 		else																 			name = "";																 }																 return name;															 }															 else															 {																 return super.toString();															 }														 }													 };				model.insertNodeInto(conditionalNode, node, node.getChildCount());			}		}	}		private void addCommonActions(WorkflowDescriptor desc, DefaultMutableTreeNode node)	{		if ((desc!=null)&&(node!=null))		{			DefaultTreeModel model = (DefaultTreeModel)getModel();			removeChildNodes(node);						Collection actions = desc.getCommonActions().values();  			for (Iterator iterator=actions.iterator(); iterator.hasNext();)			{				ActionDescriptor action = (ActionDescriptor)iterator.next();				DefaultMutableTreeNode actionNode = new DefaultMutableTreeNode(action) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品久久免费看蜜臀剧情介绍| 日本不卡免费在线视频| av在线不卡电影| 欧美国产国产综合| 在线观看国产一区二区| 日韩一区有码在线| 欧美女孩性生活视频| 免费观看成人鲁鲁鲁鲁鲁视频| 精品国产亚洲在线| 成人开心网精品视频| 亚洲蜜臀av乱码久久精品| 欧美日韩成人一区| 国产一区久久久| 亚洲欧美日韩国产中文在线| 欧美精品一卡两卡| 国产激情视频一区二区三区欧美 | 久久久久久久综合狠狠综合| 成人免费毛片app| 亚洲成av人片在线| 国产欧美久久久精品影院| 在线精品视频免费播放| 久久成人免费网站| 成人免费看片app下载| 视频在线观看91| 欧美xingq一区二区| av电影天堂一区二区在线| 91精品国产高清一区二区三区| 午夜精品成人在线| 91精品国产色综合久久ai换脸| 国产高清不卡一区二区| 亚洲妇女屁股眼交7| 久久久一区二区| 色视频成人在线观看免| 久草在线在线精品观看| 一区二区高清免费观看影视大全 | 在线成人免费视频| 国产91精品在线观看| 亚洲成人av资源| 国产精品福利一区| 日韩欧美不卡一区| www.亚洲免费av| 久久69国产一区二区蜜臀| 亚洲精品国产第一综合99久久 | 亚洲地区一二三色| 欧美午夜影院一区| 国产精品综合av一区二区国产馆| 亚洲激情在线激情| 国产欧美日韩激情| 日韩三级中文字幕| 欧美日韩一区二区三区视频 | 色欧美乱欧美15图片| 国产一区二区在线观看免费| 亚洲成人精品影院| 亚洲男女毛片无遮挡| 久久精子c满五个校花| 777欧美精品| 欧美三级三级三级爽爽爽| 99久久777色| 成人的网站免费观看| 国产成人高清在线| 国产大陆a不卡| 激情久久五月天| 久久成人18免费观看| 午夜激情一区二区| 亚洲一区二区在线免费看| 久久99热这里只有精品| 亚洲自拍偷拍欧美| 亚洲免费成人av| 国产精品视频看| 国产精品毛片大码女人| 国产欧美一区在线| 国产精品久久免费看| 国产精品电影一区二区三区| 国产精品天美传媒| 亚洲天堂av老司机| 亚洲精品国产第一综合99久久| 亚洲男人的天堂网| 亚洲午夜免费电影| 日日噜噜夜夜狠狠视频欧美人| 午夜精品福利久久久| 热久久免费视频| 久久99精品国产麻豆婷婷| 国产一区二区日韩精品| 国产·精品毛片| av亚洲精华国产精华精| 色域天天综合网| 欧美视频第二页| 日韩视频一区二区三区| 久久久美女艺术照精彩视频福利播放| 国产网站一区二区| 最新成人av在线| 亚洲国产成人tv| 麻豆久久久久久久| 成人一道本在线| 91福利视频久久久久| 欧美久久久影院| 精品久久国产字幕高潮| 国产欧美一区二区在线观看| 亚洲美女精品一区| 青青草国产成人av片免费 | 韩国精品主播一区二区在线观看| 国精产品一区一区三区mba视频| 豆国产96在线|亚洲| 9久草视频在线视频精品| 在线观看日韩电影| 久久中文字幕电影| 亚洲欧洲日韩综合一区二区| 性做久久久久久| 国产激情精品久久久第一区二区| 一本色道**综合亚洲精品蜜桃冫| 欧美日韩精品三区| 伊人色综合久久天天人手人婷| 亚洲国产cao| 国产一区二区中文字幕| 91黄色免费观看| 久久综合999| 一区二区三区不卡视频在线观看 | 国产精品理论在线观看| 亚洲www啪成人一区二区麻豆| 国内精品不卡在线| 91成人网在线| 久久久噜噜噜久噜久久综合| 亚洲夂夂婷婷色拍ww47| 国产91对白在线观看九色| 91.xcao| 国产精品国产三级国产a| 日本成人中文字幕在线视频| www.综合网.com| 精品福利在线导航| 亚瑟在线精品视频| 99re6这里只有精品视频在线观看| 精品国产免费人成在线观看| 亚洲成在线观看| 成人精品视频一区| 精品国内二区三区| 午夜精品成人在线视频| 色综合久久天天| 欧美激情一区二区| 久久99国产乱子伦精品免费| 欧美日韩亚洲丝袜制服| 中文字幕日韩精品一区| 国产成人在线视频网址| 日韩精品中文字幕在线一区| 丝袜亚洲另类丝袜在线| 91官网在线免费观看| 中文字幕色av一区二区三区| 国产精品一二三四区| 精品久久久久久综合日本欧美 | 一区二区三区国产精华| 国产91精品一区二区| 亚洲精品在线一区二区| 欧美aaaaaa午夜精品| 欧美性大战xxxxx久久久| 亚洲精品va在线观看| 91影院在线观看| 亚洲人成网站在线| 91视频在线看| 亚洲图片另类小说| av电影天堂一区二区在线观看| 国产亚洲精品福利| 国产a区久久久| 欧美国产禁国产网站cc| 成人精品视频.| 国产精品国产精品国产专区不片| 成人性视频免费网站| 国产精品美女久久久久久| 丁香激情综合国产| 国产精品久久久久久亚洲伦| 一区二区三区免费| 激情欧美一区二区| 精品国一区二区三区| 国产中文一区二区三区| 日韩视频一区二区在线观看| 久久精品国产免费| 久久综合精品国产一区二区三区| 激情成人综合网| 久久精品视频在线看| 国产福利一区二区三区视频在线 | 丝袜美腿亚洲综合| 亚洲日本在线天堂| 91香蕉视频mp4| 亚洲综合图片区| 欧美一区二区精品在线| 狠狠久久亚洲欧美| 国产精品你懂的在线| 色婷婷综合激情| 婷婷中文字幕一区三区| 精品久久久久久无| 99在线热播精品免费| 一区二区久久久久久| 欧美日本乱大交xxxxx| 国产制服丝袜一区| 亚洲三级电影网站| 欧美一区二区三区色| 国产精选一区二区三区| 亚洲欧美在线视频观看| 欧美肥大bbwbbw高潮| 国产精品综合久久| 亚洲午夜一二三区视频| 精品处破学生在线二十三|