package gov.nasa.jpl.mbee.mdk.model; import com.nomagic.uml2.ext.jmi.helpers.ModelHelper; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Element; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.NamedElement; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Property; import gov.nasa.jpl.mbee.mdk.docgen.DocGenProfile; import gov.nasa.jpl.mbee.mdk.docgen.docbook.*; import gov.nasa.jpl.mbee.mdk.util.GeneratorUtils; import gov.nasa.jpl.mbee.mdk.util.Utils; import java.util.ArrayList; import java.util.List; public class BulletedList extends Table { private boolean orderedList; private boolean showTargets; private boolean showStereotypePropertyNames; public BulletedList() { orderedList = false; showTargets = true; showStereotypePropertyNames = true; setSortElementsByName(false); } public void setOrderedList(boolean b) { orderedList = b; } public void setShowTargets(boolean b) { showTargets = b; } public void setShowStereotypePropertyNames(boolean b) { showStereotypePropertyNames = b; } public boolean isOrderedList() { return orderedList; } public boolean isShowTargets() { return showTargets; } public boolean isShowStereotypePropertyNames() { return showStereotypePropertyNames; } public void addStereotypeProperties(DBHasContent parent, Element e, Property p) { Common.addReferenceToDBHasContent(Reference.getPropertyReference(e, p), parent, this); } @SuppressWarnings("unchecked") @Override public void initialize() { Boolean showTargets = (Boolean) GeneratorUtils.getObjectProperty(dgElement, DocGenProfile.bulletedListStereotype, "showTargets", false); Boolean showSPN = (Boolean) GeneratorUtils.getObjectProperty(dgElement, DocGenProfile.bulletedListStereotype, "showStereotypePropertyNames", false); Boolean ordered = (Boolean) GeneratorUtils.getObjectProperty(dgElement, DocGenProfile.bulletedListStereotype, "orderedList", false); setShowTargets(showTargets); setShowStereotypePropertyNames(showSPN); setOrderedList(ordered); setIncludeDoc((Boolean) GeneratorUtils.getObjectProperty(dgElement, DocGenProfile.documentationChoosable, "includeDoc", false)); setStereotypeProperties((List<Property>) GeneratorUtils .getListProperty(dgElement, DocGenProfile.stereotypePropertyChoosable, "stereotypeProperties", new ArrayList<Property>())); } @Override public List<DocumentElement> visit(boolean forViewEditor, String outputDir) { List<DocumentElement> res = new ArrayList<DocumentElement>(); if (ignore) { return res; } if (targets != null && !targets.isEmpty()) { DBList l = new DBList(); res.add(l); l.setOrdered(isOrderedList()); List<Object> targets = isSortElementsByName() ? Utils.sortByName(getTargets()) : getTargets(); if (isShowTargets() || isIncludeDoc()) { for (Object o : targets) { DBListItem li = new DBListItem(); l.addElement(li); if (!(o instanceof Element)) { li.addElement(new DBText(o)); continue; } Element e = (Element) o; if (isShowTargets() && e instanceof NamedElement) { li.addElement(new DBParagraph(((NamedElement) e).getName(), e, From.NAME)); } if (isIncludeDoc() && (e instanceof Element) && (!ModelHelper.getComment(e).isEmpty() || forViewEditor)) { li.addElement(new DBParagraph(ModelHelper.getComment(e), e, From.DOCUMENTATION)); } if (getStereotypeProperties() != null && !getStereotypeProperties().isEmpty()) { if (isShowStereotypePropertyNames()) { DBList l2 = new DBList(); l2.setOrdered(isOrderedList()); li.addElement(l2); for (Property p : getStereotypeProperties()) { DBListItem li2 = new DBListItem(); l2.addElement(li2); li2.addElement(new DBParagraph(p.getName(), p, From.NAME)); DBList l3 = new DBList(); l3.setOrdered(isOrderedList()); li2.addElement(l3); addStereotypeProperties(l3, e, p); } } else { DBList l2 = new DBList(); l2.setOrdered(isOrderedList()); li.addElement(l2); for (Property p : getStereotypeProperties()) { addStereotypeProperties(l2, e, p); } } } } } else { for (Object o : targets) { if (!(o instanceof Element)) { continue; } Element e = (Element) o; if (getStereotypeProperties() != null && !getStereotypeProperties().isEmpty()) { if (isShowStereotypePropertyNames()) { for (Property p : getStereotypeProperties()) { DBListItem li2 = new DBListItem(); li2.addElement(new DBParagraph(p.getName(), p, From.NAME)); l.addElement(li2); DBList l3 = new DBList(); li2.addElement(l3); l3.setOrdered(isOrderedList()); addStereotypeProperties(l3, e, p); } } else { for (Property p : getStereotypeProperties()) { addStereotypeProperties(l, e, p); } } } } } } return res; } }