package gov.nasa.jpl.mbee.mdk.model; import com.nomagic.uml2.ext.jmi.helpers.ModelHelper; import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Diagram; import gov.nasa.jpl.mbee.mdk.api.incubating.convert.Converters; import gov.nasa.jpl.mbee.mdk.docgen.DocGenProfile; import gov.nasa.jpl.mbee.mdk.docgen.docbook.DBImage; import gov.nasa.jpl.mbee.mdk.docgen.docbook.DBParagraph; import gov.nasa.jpl.mbee.mdk.docgen.docbook.DocumentElement; import gov.nasa.jpl.mbee.mdk.docgen.docbook.From; 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 Image extends Query { protected List<String> captions; protected boolean showCaptions; protected boolean doNotShow; public void setCaptions(List<String> c) { captions = c; } public void setShowCaptions(boolean b) { showCaptions = b; } public void setDoNotShow(boolean b) { doNotShow = b; } public Boolean getDoNotShow() { return doNotShow; } public Boolean getShowCaptions() { return showCaptions; } public List<String> getCaptions() { return captions; } @Override public List<DocumentElement> visit(boolean forViewEditor, String outputDir) { List<DocumentElement> res = new ArrayList<DocumentElement>(); if (getIgnore()) { return res; } if (getTargets() != null) { List<Object> targets = isSortElementsByName() ? Utils.sortByName(getTargets()) : getTargets(); for (int i = 0; i < targets.size(); i++) { Object o = targets.get(i); if (o instanceof Diagram) { Diagram diagram = (Diagram) o; DBImage im = new DBImage(); im.setDiagram(diagram); im.setDoNotShow(getDoNotShow()); String title = ""; if (getTitles() != null && getTitles().size() > i) { title = getTitles().get(i); } else { title = diagram.getName(); } if (getTitlePrefix() != null) { title = getTitlePrefix() + title; } if (getTitleSuffix() != null) { title = title + getTitleSuffix(); } im.setTitle(title); if (getCaptions() != null && getCaptions().size() > i && getShowCaptions()) { im.setCaption(getCaptions().get(i)); } im.setId(Converters.getElementToIdConverter().apply(diagram)); res.add(im); String doc = ModelHelper.getComment(diagram); if (doc != null && (forViewEditor || (!doc.trim().isEmpty() && !getDoNotShow()))) { if ((Boolean) GeneratorUtils.getObjectProperty(diagram, DocGenProfile.editableChoosable, "editable", true)) { res.add(new DBParagraph(doc, diagram, From.DOCUMENTATION)); } else { res.add(new DBParagraph(doc)); } } } } } return res; } @SuppressWarnings("unchecked") @Override public void initialize() { // TODO Auto-generated method stub Boolean doNotShow = (Boolean) GeneratorUtils.getObjectProperty(dgElement, DocGenProfile.imageStereotype, "doNotShow", false); setCaptions((List<String>) GeneratorUtils.getListProperty(dgElement, DocGenProfile.hasCaptions, "captions", new ArrayList<String>())); setShowCaptions((Boolean) GeneratorUtils.getObjectProperty(dgElement, DocGenProfile.hasCaptions, "showCaptions", true)); setDoNotShow(doNotShow); } }