/**
*
*/
package org.openflexo.dre.controller;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import org.openflexo.dre.view.DREBrowserView;
import org.openflexo.dre.view.DocCenterView;
import org.openflexo.dre.view.DocFolderView;
import org.openflexo.dre.view.DocItemView;
import org.openflexo.drm.DRMObject;
import org.openflexo.drm.DocItem;
import org.openflexo.drm.DocItemFolder;
import org.openflexo.foundation.FlexoModelObject;
import org.openflexo.icon.DREIconLibrary;
import org.openflexo.view.EmptyPanel;
import org.openflexo.view.ModuleView;
import org.openflexo.view.controller.FlexoController;
import org.openflexo.view.controller.model.FlexoPerspective;
class DREPerspective extends FlexoPerspective {
/**
*
*/
private final DREController controller;
/**
* @param dreController
* TODO
* @param name
*/
public DREPerspective(DREController controller) {
super("docresourceeditor_perspective");
this.controller = controller;
setTopLeftView(new DREBrowserView(controller));
}
/**
* Overrides getIcon
*
* @see org.openflexo.view.controller.model.FlexoPerspective#getActiveIcon()
*/
@Override
public ImageIcon getActiveIcon() {
return DREIconLibrary.DRE_DRE_ACTIVE_ICON;
}
@Override
public DRMObject getDefaultObject(FlexoModelObject proposedObject) {
return null;
}
@Override
public boolean hasModuleViewForObject(FlexoModelObject object) {
return true;
}
@Override
public ModuleView<?> createModuleViewForObject(FlexoModelObject object, FlexoController controller) {
if (object instanceof DocItemFolder) {
if (((DocItemFolder) object).isRootFolder()) {
return new DocCenterView((DocItemFolder) object, (DREController) controller);
} else {
return new DocFolderView((DocItemFolder) object, (DREController) controller);
}
} else if (object instanceof DocItem) {
if (this.controller.docItemView == null) {
this.controller.docItemView = new DocItemView((DocItem) object, (DREController) controller);
} else {
this.controller.docItemView.setDocItem((DocItem) object);
}
return this.controller.docItemView;
} else {
return new EmptyPanel<FlexoModelObject>(controller, this, object);
}
}
@Override
public JComponent getHeader() {
return this.controller.getAdditionalActionPanel();
}
}