/*
* $Id: ContentViewManager.java,v 1.43 2008/02/22 18:10:08 eiki Exp $
* Created on 2.11.2004
*
* Copyright (C) 2004 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*/
package com.idega.content.view;
import java.util.ArrayList;
import java.util.Collection;
import javax.faces.context.FacesContext;
import com.idega.content.business.ContentConstants;
import com.idega.core.accesscontrol.business.StandardRoles;
import com.idega.core.view.ApplicationViewNode;
import com.idega.core.view.DefaultViewNode;
import com.idega.core.view.KeyboardShortcut;
import com.idega.core.view.ViewManager;
import com.idega.core.view.ViewNode;
import com.idega.idegaweb.IWBundle;
import com.idega.idegaweb.IWMainApplication;
import com.idega.repository.data.Singleton;
import com.idega.util.CoreConstants;
/**
* This is the class modules should use to attatch themselves on to the Content application view structure.
*
* Last modified: $Date: 2008/02/22 18:10:08 $ by $Author: eiki $
*
* @author <a href="mailto:tryggvil@idega.com">Tryggvi Larusson</a>
* @version $Revision: 1.43 $
*/
public class ContentViewManager implements Singleton {
private static final String IW_CONTENT_VIEW_MANAGER_KEY = "iw_contentviewmanager";
private ViewNode contentRootNode = null;
private IWMainApplication iwma = null;
private ContentViewManager(IWMainApplication iwma){
this.iwma=iwma;
}
public static synchronized ContentViewManager getInstance(IWMainApplication iwma){
ContentViewManager contentViewManager = (ContentViewManager) iwma.getAttribute(IW_CONTENT_VIEW_MANAGER_KEY);
if(contentViewManager==null){
contentViewManager = new ContentViewManager(iwma);
iwma.setAttribute(IW_CONTENT_VIEW_MANAGER_KEY,contentViewManager);
}
return contentViewManager;
}
public static ContentViewManager getInstance(FacesContext context){
IWMainApplication iwma = IWMainApplication.getIWMainApplication(context);
return getInstance(iwma);
}
public ViewManager getViewManager(){
return ViewManager.getInstance(this.iwma);
}
public ViewNode getContentNode(){
IWBundle iwb = this.iwma.getBundle(ContentConstants.IW_BUNDLE_IDENTIFIER);
if(this.contentRootNode==null){
this.contentRootNode = initalizeContentNode(iwb);
}
return this.contentRootNode;
}
public ViewNode initalizeContentNode(IWBundle contentBundle){
ViewNode root = getViewManager().getWorkspaceRoot();
DefaultViewNode contentNode = new ApplicationViewNode(CoreConstants.CONTENT_VIEW_MANAGER_ID, root);
Collection<String> roles = new ArrayList<String>();
roles.add(StandardRoles.ROLE_KEY_EDITOR);
roles.add(StandardRoles.ROLE_KEY_AUTHOR);
contentNode.setAuthorizedRoles(roles);
contentNode.setJspUri(contentBundle.getJSPURI("pages.jsp"));
contentNode.setKeyboardShortcut(new KeyboardShortcut("4"));
contentNode.setName("#{localizedStrings['com.idega.content']['lucid_application']}");
this.contentRootNode = contentNode;
return this.contentRootNode;
}
public void initializeStandardNodes(IWBundle bundle){
Collection<String> editor = new ArrayList<String>();
editor.add(StandardRoles.ROLE_KEY_EDITOR);
ViewNode contentNode = initalizeContentNode(bundle);
DefaultViewNode pagesNode = new DefaultViewNode(CoreConstants.PAGES_VIEW_MANAGER_ID, contentNode);
pagesNode.setJspUri(bundle.getJSPURI("pages.jsp"));
pagesNode.setKeyboardShortcut(new KeyboardShortcut("p"));
pagesNode.setName("#{localizedStrings['com.idega.content']['pages']}");
DefaultViewNode themesNode = new DefaultViewNode("themes", contentNode);
themesNode.setJspUri(bundle.getJSPURI("themes.jsp"));
themesNode.setKeyboardShortcut(new KeyboardShortcut("t"));
themesNode.setName("#{localizedStrings['com.idega.content']['themes']}");
DefaultViewNode usersNode = new DefaultViewNode("users", contentNode);
usersNode.setJspUri(bundle.getJSPURI("users.jsp"));
usersNode.setKeyboardShortcut(new KeyboardShortcut("u"));
usersNode.setName("#{localizedStrings['com.idega.content']['users']}");
//only editor!
usersNode.setAuthorizedRoles(editor);
DefaultViewNode documentsNode = new DefaultViewNode("documents",contentNode);
documentsNode.setJspUri(bundle.getJSPURI("listDocuments.jsp"));
documentsNode.setKeyboardShortcut(new KeyboardShortcut("d"));
documentsNode.setName("#{localizedStrings['com.idega.content']['documents']}");
DefaultViewNode categoriesNode = new DefaultViewNode("categories",contentNode);
categoriesNode.setJspUri(bundle.getJSPURI("categories.jsp"));
categoriesNode.setKeyboardShortcut(new KeyboardShortcut("c"));
categoriesNode.setName("#{localizedStrings['com.idega.content']['categories']}");
//only editor!
categoriesNode.setAuthorizedRoles(editor);
DefaultViewNode searchNode = new DefaultViewNode("search",contentNode);
searchNode.setJspUri(bundle.getJSPURI("search.jsp"));
searchNode.setKeyboardShortcut(new KeyboardShortcut("s"));
searchNode.setName("#{localizedStrings['com.idega.content']['search']}");
}
}