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 + -
显示快捷键?