/**
  * Removes the active tab from display if it exists. Note active tab must be removed from
  * netControllers before the petri net is removed from the manager because the manager will fire a
  * message which causes the active tab to be swapped to the new open tab
  */
 public void removeActiveTab() {
   if (activeTab != null) {
     PetriNetController controller = netControllers.get(activeTab);
     netControllers.remove(activeTab);
     PetriNet petriNet = controller.getPetriNet();
     manager.remove(petriNet);
   }
 }
 /** @return the names of the petri nets that have changed */
 public Set<String> getNetsChanged() {
   Set<String> changed = new HashSet<>();
   for (PetriNetController controller : netControllers.values()) {
     if (controller.hasChanged()) {
       changed.add(controller.getPetriNet().getNameValue());
     }
   }
   return changed;
 }
  /**
   * Save the currently displayed petri net to the specified file
   *
   * @param outFile location to save the Petri net
   * @throws ParserConfigurationException
   * @throws TransformerException
   * @throws IllegalAccessException
   * @throws NoSuchMethodException
   * @throws InvocationTargetException
   */
  public void saveAsCurrentPetriNet(File outFile)
      throws ParserConfigurationException, TransformerException, IllegalAccessException,
          NoSuchMethodException, InvocationTargetException {
    PetriNetController petriNetController = getActivePetriNetController();
    PetriNet petriNet = petriNetController.getPetriNet();

    try {
      manager.savePetriNet(petriNet, outFile);
    } catch (JAXBException e) {
      throw new RuntimeException("Failed to write!", e);
    }
    petriNetController.save();
  }
 /** @return true if the current petri net has changed */
 public boolean hasCurrentPetriNetChanged() {
   PetriNetController activeController = getActivePetriNetController();
   return activeController != null && activeController.hasChanged();
 }