jawecontroller.java
来自「jawe的最新版本,基于Java的图形化工作流编辑器。图形化工作流编辑器 。使用」· Java 代码 · 共 1,644 行 · 第 1/5 页
JAVA
1,644 行
defaultJaWEActions = new JaWEActions(this); defaultJaWEActions.init(); settings.adjustActions(); createJaWEFrame(); updateTitle(); clearAll(); } public void registerJaWEComponent(JaWEComponent jaweComponent) { if (getJaWEFrame() != null) { JComponent display = jaweComponent.getView().getDisplay(); String name = jaweComponent.getName(); String type = jaweComponent.getType(); if (type.equals(JaWEComponent.MAIN_COMPONENT)) { getJaWEFrame().addMainComponent(name, display); } else if (type.equals(JaWEComponent.SPECIAL_COMPONENT)) { getJaWEFrame().addToSpecialComponents(name, display); } else if (type.equals(JaWEComponent.TREE_COMPONENT)) { getJaWEFrame().addToTreeComponents(name, display); } else if (type.equals(JaWEComponent.OTHER_COMPONENT)) { getJaWEFrame().addToOtherComponents(name, display); } else if (type.equals(JaWEComponent.UPPER_STATUS_COMPONENT)) { getJaWEFrame().addUpperStatusComponent(name, display); } else if (type.equals(JaWEComponent.LOWER_STATUS_COMPONENT)) { getJaWEFrame().addLowerStatusComponent(name, display); } } } public void removeJaWEComonent(JaWEComponent comp) { if (getJaWEFrame() != null) { String type = comp.getType(); JComponent display = comp.getView().getDisplay(); if (type.equals(JaWEComponent.MAIN_COMPONENT)) { getJaWEFrame().removeMainComponent(display); } else if (type.equals(JaWEComponent.SPECIAL_COMPONENT)) { getJaWEFrame().removeSpecialComponent(display); } else if (type.equals(JaWEComponent.TREE_COMPONENT)) { getJaWEFrame().removeTreeComponent(display); } else if (type.equals(JaWEComponent.OTHER_COMPONENT)) { getJaWEFrame().removeOtherComponent(display); } else if (type.equals(JaWEComponent.UPPER_STATUS_COMPONENT)) { getJaWEFrame().removeUpperStatusComponent(display); } else if (type.equals(JaWEComponent.LOWER_STATUS_COMPONENT)) { getJaWEFrame().removeLowerStatusComponent(display); } } } public void changeJaWEComponentType(JaWEComponent comp, String newType) { if (getJaWEFrame() != null) { removeJaWEComonent(comp); comp.setType(newType); registerJaWEComponent(comp); } } protected void createJaWEFrame() { frame = new JaWEFrame(this); frame.configure(); } public void showJaWEFrame() { if (frame != null) { // frame.init(); frame.setVisible(true); jaweFrameShown = true; } } public boolean isPackageModified(String xpdlId) { if (xpdlId == null) xpdlId = getMainPackageId(); Iterator it = xpdlListenerObservables.iterator(); while (it.hasNext()) { XPDLListenerAndObservable xpdl = (XPDLListenerAndObservable) it.next(); if (xpdl.getPackage() != null && xpdl.getPackage().getId().equals(xpdlId)) { return xpdl.isModified(); } } return false; } public Package getMainPackage() { return JaWEManager.getInstance() .getXPDLHandler() .getPackageById(getMainPackageId()); } public String getMainPackageId() { XPDLHandler xpdlhandler = JaWEManager.getInstance().getXPDLHandler(); String xpdlId = xpdlhandler.getMainPackageId(); if (xpdlId == null && xpdlhandler.getAllPackageIds().size() > 0) { Iterator it = xpdlhandler.getAllPackages().iterator(); while (it.hasNext()) { Package p = (Package) it.next(); if (!p.isTransient() && !p.isReadOnly()) { xpdlId = p.getId(); break; } } } return xpdlId; } // ///////////////////////////// XPDL File Handling ///////////////////////// public String getPackageFilename(String xpdlId) { XPDLHandler xpdlhandler = JaWEManager.getInstance().getXPDLHandler(); if (xpdlId == null) xpdlId = getMainPackageId(); Package pkg = xpdlhandler.getPackageById(xpdlId); return xpdlhandler.getAbsoluteFilePath(pkg); } public void changePackageFileName(Package pkg, String newFileName) { XPDLHandler xpdlhandler = JaWEManager.getInstance().getXPDLHandler(); xpdlhandler.registerPackageFilename(newFileName, pkg); } public void newPackage(String type) { clearAll(); XPDLHandler xpdlhandler = JaWEManager.getInstance().getXPDLHandler(); JaWEManager.getInstance() .getLoggingManager() .info("JaWEController -> creating new XPDL, type=" + type); Package pkg = JaWEManager.getInstance().getXPDLObjectFactory().createPackage(type); xpdlhandler.registerPackage(pkg); adjustXPDL(pkg); createNewXPDLListenerObservable(pkg, true, true); setChanged(); notifyObservers(createInfo(pkg, XMLElementChangeInfo.INSERTED)); selectionMng.setSelection(pkg, true); JaWEManager.getInstance() .getLoggingManager() .info("JaWEController -> new package with Id " + pkg.getId() + " is created"); // xpdlhandler.printDebug(); updateTitle(); adjustActions(); } public Package openPackageFromFile(String filename) { JaWEManager.getInstance() .getLoggingManager() .info("JaWEController -> opening package from file " + filename); return openPackage(filename, null); } public Package openPackageFromStream(byte[] xpdlStream) { JaWEManager.getInstance() .getLoggingManager() .info("JaWEController -> opening package from stream "); return openPackage(null, xpdlStream); } protected Package openPackage(String filename, byte[] xpdlStream) { WaitScreen ws = new WaitScreen(frame); XPDLHandler xpdlh = null; try { Package pkg = null; clearAll(); XPDLHandler xpdlhandler = JaWEManager.getInstance().getXPDLHandler(); if (jaweFrameShown && filename != null && xpdlStream == null) { ws.show(null, "", settings.getLanguageDependentString("OpeningFile")); } xpdlh = JaWEManager.getInstance() .createXPDLHandler(xpdlhandler.getXPDLRepositoryHandler()); try { if (filename != null) { pkg = xpdlh.openPackage(filename, true); } else { pkg = xpdlh.openPackageFromStream(xpdlStream, true); } } catch (Exception ex) { ex.printStackTrace(); clearAll(); xpdlh.closeAllPackages(); ws.setVisible(false); getJaWEFrame().message(settings.getLanguageDependentString("ErrorCannotOpenXPDL" + "\n" + ex.getMessage()), JOptionPane.INFORMATION_MESSAGE); } if (pkg != null) { // do not allow insertion if package has the same Id as the one already // inserted Set allpkgids = new HashSet(xpdlhandler.getAllPackageIds()); boolean canInsert = true; if (allpkgids.contains(pkg.getId())) { canInsert = false; } if (canInsert) { xpdlhandler.synchronizePackages(xpdlh); boolean mainChanged = false; Iterator it = xpdlhandler.getAllPackages().iterator(); while (it.hasNext()) { Package p = (Package) it.next(); boolean changed = adjustXPDL(p); XPDLListenerAndObservable xpdl; if (p == pkg) { xpdl = createNewXPDLListenerObservable(pkg, true, false); if (changed) { mainChanged = true; } } else { xpdl = createNewXPDLListenerObservable(p, false, false); p.setReadOnly(true); } xpdl.setModified(changed); } List inserted = new ArrayList(); inserted.add(pkg); it = xpdlhandler.getAllPackages().iterator(); while (it.hasNext()) { Package pkgext = (Package) it.next(); if (pkgext == pkg) continue; inserted.add(pkgext); } setChanged(); notifyObservers(createInfo(pkg, inserted, XMLElementChangeInfo.INSERTED)); if (pkg.getWorkflowProcesses().size() > 0) { selectionMng.setSelection(pkg.getWorkflowProcesses().get(0), true); } else { selectionMng.setSelection(pkg, true); } JaWEManager.getInstance() .getLoggingManager() .info("JaWEController -> opened package " + pkg.getId()); if (settings.isInitialXPDLValidationEnabled()) { checkValidity(pkg, true, true,true); } if ((mainChanged) && jaweFrameShown) { if (mainChanged) { ws.setVisible(false); frame.message(settings.getLanguageDependentString("InformationTogWEHasAutomaticallyAdjustedSomeXPDLParts"), JOptionPane.INFORMATION_MESSAGE); } } } else { getJaWEFrame().message(settings.getLanguageDependentString("InformationPackageCannotBeOpened"), JOptionPane.INFORMATION_MESSAGE); } } else { clearAll(); Map pems = xpdlhandler.getParsingErrorMessages(); String msg = null; if (pems != null && pems.size() > 0) { Set s = (Set) pems.values().toArray()[0]; if (s != null && s.size() > 0) { msg = (String) s.toArray()[0]; } } Iterator it = xpdlhandler.getAllPackages().iterator(); while (it.hasNext()) { Package p = (Package) it.next(); if (!p.isTransient()) { xpdlhandler.closePackageVersion(p.getId(), p.getInternalVersion()); } } ws.setVisible(false); getJaWEFrame().message(settings.getLanguageDependentString("ErrorCannotOpenXPDL") + ((msg != null) ? "\n" + msg : ""), JOptionPane.INFORMATION_MESSAGE); } // xpdlhandler.printDebug(); updateTitle(); adjustActions(); return pkg; } finally { ws.setVisible(false); } } public void addExternalPackage() { Package mainPkg = getMainPackage(); XPDLHandler xpdlhmain = JaWEManager.getInstance().getXPDLHandler(); getSelectionManager().setSelection(mainPkg.getExternalPackages(), false); String filename = ""; String message = settings.getLanguageDependentString("DialogChooseFile"); filename = JaWEXMLUtil.dialog(getJaWEFrame(), message, 0, 0, null); XPDLHandler xpdlh = null; if (filename != null && filename.length() > 0) { try { xpdlh = JaWEManager.getInstance() .createXPDLHandler(xpdlhmain.getXPDLRepositoryHandler()); Package pkg = xpdlh.openPackage(filename, true); // do not allow insertion if package has the same Id as the main one, // or as some of its external packages Set mainPkgExtPkgIds = new HashSet(mainPkg.getExternalPackageIds()); boolean canInsert = true; if (mainPkgExtPkgIds.contains(pkg.getId())) { canInsert = false; } // System.err.println("CI1="+canInsert); if (canInsert) { canInsert = checkInsertion(xpdlhmain, xpdlh, mainPkg.getId()); } if (canInsert) { List l = XMLUtil.getAllExternalPackageIds(xpdlhmain, mainPkg, new HashSet()); if (!l.contains(pkg.getId()) && xpdlhmain.getPackageById(pkg.getId()) != null) { canInsert = false; } } // System.err.println("CI2="+canInsert); if (canInsert) { Set pkgIdsToInsert = new HashSet(xpdlh.getAllPackageIds()); Set otherEPIds = new HashSet(mainPkg.getExternalPackageIds());
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?