package gov.nasa.jpl.mbee.mdk.mms.actions; import com.nomagic.magicdraw.core.Application; import com.nomagic.magicdraw.core.Project; import com.nomagic.magicdraw.core.ProjectUtilities; import com.nomagic.ui.ProgressStatusRunner; import com.nomagic.uml2.ext.jmi.helpers.StereotypesHelper; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Classifier; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Element; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Generalization; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.InstanceSpecification; import com.nomagic.uml2.ext.magicdraw.mdprofiles.Stereotype; import gov.nasa.jpl.mbee.mdk.generator.ViewPresentationGenerator; import gov.nasa.jpl.mbee.mdk.util.Utils; import gov.nasa.jpl.mbee.mdk.validation.ValidationSuite; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class GenerateAllViewsAction extends MMSAction { public static final String DEFAULT_ID = "GenerateAllViews"; private List<ValidationSuite> vss = new ArrayList<>(); public GenerateAllViewsAction() { super(DEFAULT_ID, "Generate All Views", null, null); } @SuppressWarnings("unchecked") @Override public void actionPerformed(ActionEvent ae) { Project project = Application.getInstance().getProject(); Utils.recommendUpdateFromRemote(project); updateAction(project); } public List<ValidationSuite> updateAction(Project project) { Set<Element> docs = getProjectDocuments(project); ViewPresentationGenerator vg = new ViewPresentationGenerator(docs, project, false); ProgressStatusRunner.runWithProgressStatus(vg, "Generating All Views", true, 0); vss.addAll(vg.getValidations()); return vss; } private Set<Element> getProjectDocuments(Project project) { Stereotype documentView = Utils.getViewClassStereotype(project); Set<Element> projectViews = new HashSet<>(); for (InstanceSpecification is : documentView.get_instanceSpecificationOfClassifier()) { Element owner = is.getOwner(); if (!ProjectUtilities.isElementInAttachedProject(owner) && StereotypesHelper.hasStereotypeOrDerived(owner, documentView) && owner instanceof Classifier) { projectViews.add(owner); } } if (projectViews.isEmpty()) { Application.getInstance().getGUILog().log("[INFO] No views found. Skipping generation."); } return projectViews; } public List<ValidationSuite> getValidations() { return vss; } }