?? workflowdesigner.java
字號:
DetailPanel current = (DetailPanel)detailPanel.getVisibleCard(); if(current != null) current.closeView(); DetailPanel panel = (DetailPanel)detailPanel.showCard(panelName); if(panel == null) { if(node instanceof StepDescriptor) { panel = new StepEditor(); } else if(node instanceof SplitDescriptor) { panel = new SplitEditor(); } else if(node instanceof JoinDescriptor) { panel = new JoinEditor(); } else if(node instanceof ResultDescriptor) { panel = new ResultEditor(); } else if(node instanceof ActionDescriptor) { panel = new ActionEditor(); } else if(node instanceof WorkflowDescriptor) { panel = new WorkflowEditor(); } else if(node instanceof String) { panel = new GenericEditor(); } } if(panel != null) { if(node instanceof String) { ((GenericEditor)panel).setLabel((String)node); panel.setName(panelName); detailFramePanel.setTitle(ResourceManager.getString("details") + (title != null ? (" - " + title) : "")); detailPanel.showCard(panel); return; } descriptor = (AbstractDescriptor)node; } if(panel != null) { WorkflowGraph currentGraph = graphTabs.getCurrentGraph(); if(currentGraph == null) return; panel.setModel(currentGraph.getWorkflowGraphModel()); panel.setGraph(currentGraph); panel.setDescriptor(descriptor); detailFramePanel.setTitle(ResourceManager.getString("details") + (title != null ? (" - " + title) : "")); detailPanel.showCard(panel); } else { System.out.println("WARN: no detail panel for " + node.getClass()); } } public void openWorkspace(URL file) { if(file != null) { String oldWorkspace = Prefs.INSTANCE.get(Prefs.LAST_WORKSPACE, null); try { graphTabs.removeAll(); Prefs.INSTANCE.put(Prefs.LAST_WORKSPACE, file.toString()); manager.loadWorkspace(file); WorkflowFactory workspace = manager.getCurrentWorkspace(); navigator.setWorkspace(workspace); String[] workflows = workspace.getWorkflowNames(); for(int i = 0; i < workflows.length; i++) { createGraph(workflows[i]); } Prefs.INSTANCE.put(Prefs.LAST_WORKSPACE, file.toString()); } catch(Exception t) { if(!file.toString().equals(oldWorkspace)) Prefs.INSTANCE.put(Prefs.LAST_WORKSPACE, oldWorkspace); else Prefs.INSTANCE.remove(Prefs.LAST_WORKSPACE); t.printStackTrace(); } } } public void openRemoteWorkspace() { try { manager.loadServiceWorkspace(service); RemoteWorkspace workspace = (RemoteWorkspace)manager.getCurrentWorkspace(); navigator.setWorkspace(workspace); String[] workflows = workspace.getWorkflowNames(); for(int i = 0; i < workflows.length; i++) { createGraph(workflows[i]); } } catch(Exception t) { t.printStackTrace(); } } public void checkWorkspaceExists() { if(manager.getCurrentWorkspace() == null) { NewWorkspaceDialog newSpace = new NewWorkspaceDialog(this, ResourceManager.getString("workspace.new"), true); newSpace.pack(); newSpace.getBanner().setTitle(""); newSpace.getBanner().setSubtitle(ResourceManager.getString("workspace.new.long")); Utils.centerComponent(this, newSpace); Dimension size = newSpace.getSize(); newSpace.setSize(size.width + 10, size.height + 15); newSpace.setVisible(true); } } private boolean save(WorkflowGraph graph, boolean validate) { boolean saved = false; Layout layout = graph.getGraphLayout(); WorkflowGraphModel model = (WorkflowGraphModel)graph.getModel(); layout.setAllEntries(model.getActivitiesList()); String workflowName = graph.getName(); manager.getCurrentWorkspace().setLayout(workflowName, layout); WorkflowDescriptor descriptor = null; try { descriptor = manager.getCurrentWorkspace().getWorkflow(workflowName); if(validate) { descriptor.validate(); } if(manager.getCurrentWorkspace() instanceof Workspace) saved = ((Workspace)manager.getCurrentWorkspace()).saveWorkflow(workflowName, descriptor, graph, true); else if(manager.getCurrentWorkspace() instanceof RemoteWorkspace) saved = ((RemoteWorkspace)manager.getCurrentWorkspace()).saveWorkflow(workflowName, descriptor, graph, true); if(!saved) { JOptionPane.showMessageDialog(this, "Error", ResourceManager.getString("error.save.workflow.long", new Object[]{workflowName}), JOptionPane.ERROR_MESSAGE); } } catch(InvalidWorkflowDescriptorException e) { System.out.println("Error saving workflow: " + e); PrintWriter out = new PrintWriter(System.out); descriptor.writeXML(out, 0); out.flush(); JOptionPane.showMessageDialog(this, ResourceManager.getString("error.validate.workflow", new Object[]{e.getMessage()}), ResourceManager.getString("title.validate.workflow", new Object[]{workflowName}), JOptionPane.ERROR_MESSAGE); } catch(Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, e.getMessage(), ResourceManager.getString("error.save.workflow.long", new Object[]{workflowName}), JOptionPane.ERROR_MESSAGE); } return saved; } public void saveOpenGraphs() { WorkflowGraph[] graphs = graphTabs.getGraphs(); for(int i = 0; i < graphs.length; i++) { save(graphs[i], false); } } public void saveWorkspace() { manager.saveWorkspace(); } public Workspace newLocalWorkspace() { closeWorkspace(); Workspace workspace = new Workspace(); manager.setCurrentWorkspace(workspace); navigator.setWorkspace(workspace); return workspace; } public RemoteWorkspace newRemoteWorkspace() { closeWorkspace(); RemoteWorkspace workspace = new RemoteWorkspace(service); manager.setCurrentWorkspace(workspace); navigator.setWorkspace(workspace); return workspace; } public void closeWorkspace() { //don't bother doing anything if we have no workspace visible if(!graphTabs.isVisible()) return; graphTabs.removeAll(); manager.setCurrentWorkspace(null); navigator.setWorkspace(null); Prefs.INSTANCE.remove(Prefs.LAST_WORKSPACE); graphTabs.setVisible(false); } public void newWorkflowCreated(String name) { navigator.addWorkflow(name); navigator.selectWorkflow(name); } public WorkspaceNavigator navigator() { return navigator; } public void selectWorkflow(String workflowName) { if(graphTabs.selectWorkflow(workflowName)) { Prefs.INSTANCE.put(Prefs.WORKFLOW_CURRENT, workflowName); return; } createGraph(workflowName); Prefs.INSTANCE.put(Prefs.WORKFLOW_CURRENT, workflowName); graphTabs.setVisible(true); } public void selectCell(AbstractDescriptor descriptor) { WorkflowGraph graph = getCurrentGraph(); graph.getSelectionModel().clearSelection(); WorkflowGraphModel model = (WorkflowGraphModel)graph.getModel(); if(descriptor instanceof StepDescriptor) { StepCell cell = model.getStepCell(descriptor.getId()); if(cell != null) { graph.getSelectionModel().setSelectionCell(cell); } } else if(descriptor instanceof SplitDescriptor) { SplitCell cell = model.getSplitCell(descriptor.getId()); if(cell != null) { graph.getSelectionModel().setSelectionCell(cell); } } else if(descriptor instanceof JoinDescriptor) { JoinCell cell = model.getJoinCell(descriptor.getId()); if(cell != null) { graph.getSelectionModel().setSelectionCell(cell); } } else if(descriptor instanceof ResultDescriptor) { ResultEdge edge = model.getResultCell((ResultDescriptor)descriptor); if(edge != null) { graph.getSelectionModel().setSelectionCell(edge); } } } private void loadPalette() { try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch(ParserConfigurationException e) { e.printStackTrace(); System.exit(1); } InputStream is = WorkflowDesigner.class.getResourceAsStream("/META-INF/palette.xml"); Document doc = db.parse(is); ResourceBundle bundle = ResourceBundle.getBundle("META-INF/palette", Locale.getDefault(), getClass().getClassLoader()); Element root = (Element)doc.getElementsByTagName("plugin").item(0); palette = new PaletteDescriptor(root, new EnhancedResourceBundle(bundle)); } catch(Exception e) { e.printStackTrace(); } } private AbstractDescriptor getCellDescriptor(Object cell) { if(cell instanceof StepCell) { return ((StepCell)cell).getDescriptor(); } else if(cell instanceof JoinCell) { return ((JoinCell)cell).getJoinDescriptor(); } else if(cell instanceof SplitCell) { return ((SplitCell)cell).getSplitDescriptor(); } else if(cell instanceof InitialActionCell) { return ((InitialActionCell)cell).getActionDescriptor(); } else if(cell instanceof ResultEdge) { return ((ResultEdge)cell).getDescriptor(); } return null; } private String getDescriptorTitle(Object desc) { String title = ""; if(desc instanceof StepDescriptor) { title = ((StepDescriptor)desc).getName(); } else if(desc instanceof SplitDescriptor) { title = "Split #" + ((SplitDescriptor)desc).getId(); } else if(desc instanceof JoinDescriptor) { title = "Join #" + ((JoinDescriptor)desc).getId(); } else if(desc instanceof ResultDescriptor) { title = ((ResultDescriptor)desc).getDisplayName(); } else if(desc instanceof ActionDescriptor) { title = ((ActionDescriptor)desc).getName(); } else if(desc instanceof WorkflowDescriptor) { title = ((WorkflowDescriptor)desc).getName(); } return title; }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -