package is.idega.idegaweb.egov.bpm;
import java.util.ArrayList;
import java.util.Collection;
import javax.faces.context.FacesContext;
import com.idega.core.accesscontrol.business.StandardRoles;
import com.idega.core.view.ApplicationViewNode;
import com.idega.core.view.DefaultViewNode;
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;
/**
*
* @author <a href="civilis@idega.com">Vytautas Čivilis</a>
* @version $Revision: 1.2 $
*
* Last modified: $Date: 2008/03/31 15:40:45 $ by $Author: civilis $
*
*/
public class EgovBPMViewManager implements Singleton {
private static final String VIEW_MANAGER_KEY = "iw_egovbpmviewmanager";
private static final String BPM_ID = "bpm";
private static final String BPM_IDENTITY_ID = "bpm_identity";
private static final String BPM_PROCESS_ID = "bpm_process";
private ViewNode rootNode;
private IWMainApplication iwma;
private EgovBPMViewManager(IWMainApplication iwma){
this.iwma = iwma;
}
public static synchronized EgovBPMViewManager getInstance(IWMainApplication iwma) {
EgovBPMViewManager viewManager = (EgovBPMViewManager)iwma.getAttribute(VIEW_MANAGER_KEY);
if(viewManager == null) {
viewManager = new EgovBPMViewManager(iwma);
iwma.setAttribute(VIEW_MANAGER_KEY, viewManager);
}
return viewManager;
}
public static EgovBPMViewManager getInstance(FacesContext context) {
return getInstance(IWMainApplication.getIWMainApplication(context));
}
public ViewManager getViewManager() {
return ViewManager.getInstance(iwma);
}
public ViewNode getContentNode() {
IWBundle iwb = iwma.getBundle(IWBundleStarter.IW_BUNDLE_IDENTIFIER);
if(rootNode == null)
rootNode = initalizeContentNode(iwb);
return rootNode;
}
public ViewNode initalizeContentNode(IWBundle bundle) {
ViewNode root = getViewManager().getWorkspaceRoot();
DefaultViewNode node = new ApplicationViewNode(BPM_ID, root);
node.setName("BPM");
Collection<String> roles = new ArrayList<String>();
roles.add(StandardRoles.ROLE_KEY_BUILDER);
node.setAuthorizedRoles(roles);
node.setFaceletUri(bundle.getFaceletURI("UIEgovBPM.xhtml"));
rootNode = node;
return rootNode;
}
public void initializeStandardNodes(IWBundle bundle){
ViewNode contentNode = initalizeContentNode(bundle);
DefaultViewNode node = new DefaultViewNode(BPM_IDENTITY_ID, contentNode);
node.setFaceletUri(bundle.getFaceletURI("UIEgovBPMIdentityMgmt.xhtml"));
node.setName("Assignments management");
node.setVisibleInMenus(true);
node = new DefaultViewNode(BPM_PROCESS_ID, contentNode);
node.setFaceletUri(bundle.getFaceletURI("UIEgovBPMProcessMgmt.xhtml"));
node.setName("Process management");
node.setVisibleInMenus(true);
}
}