/**
*
*/
package org.openflexo.cgmodule.controller;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import org.openflexo.cgmodule.view.CGFileHistoryModuleView;
import org.openflexo.cgmodule.view.CGFileModuleView;
import org.openflexo.cgmodule.view.CGRepositoryModuleView;
import org.openflexo.cgmodule.view.CGTemplateFileModuleView;
import org.openflexo.cgmodule.view.GeneratedCodeModuleView;
import org.openflexo.foundation.FlexoModelObject;
import org.openflexo.foundation.cg.CGFile;
import org.openflexo.foundation.cg.CGObject;
import org.openflexo.foundation.cg.CGRepository;
import org.openflexo.foundation.cg.GeneratedOutput;
import org.openflexo.foundation.cg.GenerationRepository;
import org.openflexo.foundation.cg.action.AbstractGCAction;
import org.openflexo.foundation.cg.templates.CGTemplate;
import org.openflexo.icon.CGIconLibrary;
import org.openflexo.view.ModuleView;
import org.openflexo.view.controller.FlexoController;
import org.openflexo.view.controller.model.FlexoPerspective;
class VersionningPerspective extends FlexoPerspective {
/**
*
*/
private final GeneratorController generatorController;
/**
* @param generatorController
* TODO
* @param name
*/
public VersionningPerspective(GeneratorController generatorController) {
super("versionning");
this.generatorController = generatorController;
}
/**
* Overrides getIcon
*
* @see org.openflexo.view.controller.model.FlexoPerspective#getActiveIcon()
*/
@Override
public ImageIcon getActiveIcon() {
return CGIconLibrary.CG_VP_ACTIVE_ICON;
}
@Override
public JPanel getFooter() {
return this.generatorController._footer;
}
@Override
public CGFile getDefaultObject(FlexoModelObject proposedObject) {
if (proposedObject instanceof CGFile) {
return (CGFile) proposedObject;
}
return null;
}
@Override
public boolean hasModuleViewForObject(FlexoModelObject object) {
return object instanceof GeneratedOutput || object instanceof GenerationRepository || object instanceof CGFile
|| object instanceof CGTemplate;
}
@Override
public ModuleView<? extends FlexoModelObject> createModuleViewForObject(FlexoModelObject object, FlexoController controller) {
if (object instanceof GeneratedOutput) {
return new GeneratedCodeModuleView((GeneratedOutput) object, (GeneratorController) controller);
}
else if (object instanceof GenerationRepository) {
return new CGRepositoryModuleView((CGRepository) object, (GeneratorController) controller);
}
else if (object instanceof CGFile) {
return new CGFileHistoryModuleView((CGFile) object, (GeneratorController) controller);
}
else if (object instanceof CGTemplate) {
return new CGTemplateFileModuleView((CGTemplate) object, (GeneratorController) controller);
}
return null;
}
@Override
public void notifyModuleViewDisplayed(ModuleView<?> moduleView) {
if (moduleView.getRepresentedObject() instanceof CGObject) {
this.generatorController._lastEditedCGRepository = AbstractGCAction.repositoryForObject((CGObject) moduleView
.getRepresentedObject());
}
this.generatorController.refreshFooter();
if (moduleView instanceof CGFileModuleView) {
((CGFileModuleView) moduleView).refresh();
}
}
}