public void realizeParent(CompoundCommand tgtCmd) { // logger.info("realizeParent: " + this); // logger.info(this.getClass().getName() + " .realizeParent() - parent: " + parent // + " / findEditPart(parent): " + findEditPart(parent)); if (getModel() instanceof DerivedArtifact) return; final Artifact parentArt = getArtifact().getArt().queryParentArtifact(getBrowseModel().getRepo()); if (parentArt == null) return; final ReloController rc = getRootController(); ArtifactEditPart parentEP = (ArtifactEditPart) findEditPart(parentArt); if (parentEP != null) { parentEP.assertParenthood(tgtCmd); return; } if (!rc.artCreatable(parentArt)) return; // check if browse model will allow // parentEP = null and it is creatable tgtCmd.add(new CreateParentCommand(this, "create parent and assert parenthood", parentArt, rc)); return; }
/** * Ensures that all elements on a valid path (given by rel) are shown Note: src.rel.tgt && * src!=tgt has to be true * * @param rel - join defining valid paths */ public void showPathElements(JoinedRelType rel) { Artifact curArt = getArtifact().getArt(); if (!isActive()) { log("not active"); return; } logBeg("showPathElements"); ReloController rc = getRootController(); for (ArtifactEditPart visEP : rc.getVisibleNonDerivedArtifactEditParts()) { Artifact visArt = visEP.getArtifact().getArt(); if (curArt.equals(visArt)) continue; // ObjectPair examiningPair = new ObjectPair(this, visEP); for (List<Artifact> resultSetVar : rel.getPaths(getRepo(), curArt, visArt)) { for (Artifact resultArt : resultSetVar) { rc.createOrFindArtifactEditPart(resultArt); } } // flip order of pair (everything else is identical for (List<Artifact> resultSetVar : rel.getPaths(getRepo(), visArt, curArt)) { for (Artifact resultArt : resultSetVar) { rc.createOrFindArtifactEditPart(resultArt); } } } logEnd(); }
// TODO: clean the threading/scheduling functionality here (may need UNDO support) private void autoBrowse(List<ArtifactEditPart> selEP, IProgressMonitor monitor) { for (ArtifactEditPart endEP : selEP) { for (ArtifactEditPart startEP : selEP) { // check start and end so that we call auto-browse only once if (endEP == startEP) break; autoBrowse(startEP.getArtifact().getArt(), endEP.getArtifact().getArt(), 5, monitor); } } }
/** Asserts parenthood for this AEP */ public void assertParenthood(CompoundCommand tgtCmd) { final ArtifactEditPart thisAEP = this; Artifact thisArt = thisAEP.getArtifact().getArt(); ReloController rc = getRootController(); // logger.info("assertParenthood: " + thisAEP); for (Artifact child : thisArt.queryChildrenArtifacts(thisAEP.getRepo())) { final ArtifactEditPart childEP = rc.findArtifactEditPart(child); if (childEP == null) continue; final ArtifactEditPart oldParentEP = (ArtifactEditPart) childEP.getParent(); Command reparentCmd = new ReparentCommand(childEP, thisAEP, oldParentEP); if (oldParentEP instanceof ReloController) { // was at the top level before tgtCmd.add(reparentCmd); continue; } ArtifactEditPart oldParentAEP = (ArtifactEditPart) oldParentEP; // want to do: if (oldParentAEP == thisAEP) continue; // need to do this otherwise we will have infinite loops // we also need to take into account derived code units as well // @tag post-rearch-verify if (oldParentAEP .getArtifact() .getNonDerivedBaseArtifact() .equals(thisAEP.getArtifact().getNonDerivedBaseArtifact())) { continue; } tgtCmd.add(reparentCmd); } }
public void addModelAndChild(ArtifactEditPart child) { addChild(child); appendModelChild(child.getArtifact()); }