/** * */ package org.openflexo.dgmodule.controller; import java.util.logging.Level; import javax.swing.ImageIcon; import javax.swing.JPanel; import org.openflexo.dg.file.DGScreenshotFile; import org.openflexo.dgmodule.view.DGFileModuleView; import org.openflexo.dgmodule.view.DGRepositoryModuleView; import org.openflexo.dgmodule.view.DGTemplateFileModuleView; import org.openflexo.dgmodule.view.GeneratedDocModuleView; import org.openflexo.doceditor.controller.DEController; import org.openflexo.doceditor.view.DETOCEntryModuleView; import org.openflexo.foundation.FlexoModelObject; import org.openflexo.foundation.cg.CGFile; import org.openflexo.foundation.cg.CGObject; import org.openflexo.foundation.cg.DGRepository; import org.openflexo.foundation.cg.GeneratedDoc; import org.openflexo.foundation.cg.action.AbstractGCAction; import org.openflexo.foundation.cg.templates.CGTemplate; import org.openflexo.foundation.toc.TOCEntry; import org.openflexo.icon.DGIconLibrary; import org.openflexo.view.ModuleView; import org.openflexo.view.controller.FlexoController; import org.openflexo.view.controller.model.FlexoPerspective; public class DocGeneratorPerspective extends FlexoPerspective { private final DGController dgController; /** * @param dgController * TODO * @param name */ public DocGeneratorPerspective(DGController dgController) { super("doc_generation"); this.dgController = dgController; setTopLeftView(dgController.getDgBrowserView()); } /** * Overrides getIcon * * @see org.openflexo.view.controller.model.FlexoPerspective#getActiveIcon() */ @Override public ImageIcon getActiveIcon() { return DGIconLibrary.DG_DGP_ACTIVE_ICON; } @Override public JPanel getFooter() { return this.dgController._footer; } @Override public FlexoModelObject getDefaultObject(FlexoModelObject proposedObject) { // System.out.println("Proposed object in DOCGeneratorPerspective: " + proposedObject); /*if (proposedObject instanceof TOCEntry) { return ((TOCEntry) proposedObject).getRepository(); } else {*/ if (proposedObject != null) { if (proposedObject.getProject().getGeneratedDoc().getGeneratedRepositories().size() > 0) { return proposedObject.getProject().getGeneratedDoc().getGeneratedRepositories().get(0); } else { return proposedObject.getProject().getGeneratedDoc(); } } return null; // } } @Override public boolean hasModuleViewForObject(FlexoModelObject object) { return object instanceof GeneratedDoc || object instanceof DGRepository || object instanceof CGFile || object instanceof DGScreenshotFile || object instanceof CGTemplate || object instanceof TOCEntry; } @Override public ModuleView<? extends FlexoModelObject> createModuleViewForObject(FlexoModelObject object, FlexoController controller) { if (object instanceof GeneratedDoc) { return new GeneratedDocModuleView((GeneratedDoc) object, (DGController) controller, ((DGController) controller).DOCUMENTATION_GENERATOR_PERSPECTIVE); } else if (object instanceof DGRepository) { return new DGRepositoryModuleView((DGRepository) object, (DGController) controller, ((DGController) controller).DOCUMENTATION_GENERATOR_PERSPECTIVE); } else if (object instanceof CGFile) { return new DGFileModuleView((CGFile) object, (DGController) controller); } else if (object instanceof CGTemplate) { return new DGTemplateFileModuleView((CGTemplate) object, (DGController) controller); } else if (object instanceof TOCEntry) { return new DETOCEntryModuleView((TOCEntry) object, (DEController) controller, this); } if (DGController.logger.isLoggable(Level.INFO)) { DGController.logger.info("No module view for object: " + object + " and perspective: " + this); } return null; } @Override public void notifyModuleViewDisplayed(ModuleView<?> moduleView) { if (moduleView.getRepresentedObject() instanceof CGObject) { this.dgController._lastEditedCGRepository = AbstractGCAction.repositoryForObject((CGObject) moduleView.getRepresentedObject()); } this.dgController.refreshFooter(); if (moduleView instanceof DGFileModuleView) { ((DGFileModuleView) moduleView).refresh(); } } }