/*
* $Id: UserHomeLink.java,v 1.4.2.1 2007/01/12 19:32:30 idegaweb Exp $
* Created on 1.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.idegaweb.widget.user;
import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.List;
import javax.ejb.FinderException;
import com.idega.business.IBOLookup;
import com.idega.business.IBOLookupException;
import com.idega.business.IBORuntimeException;
import com.idega.core.builder.data.ICPage;
import com.idega.idegaweb.IWApplicationContext;
import com.idega.presentation.IWContext;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.PresentationObjectContainer;
import com.idega.presentation.text.LinkContainer;
import com.idega.user.business.UserBusiness;
/**
* An object that is a link to the logged in user's home page. Is a container so it can contain any PresentationObject.
* Displays the added objects without a link around it when no user is logged on.
*
* Last modified: 1.11.2004 17:07:07 by laddi
*
* @author <a href="mailto:laddi@idega.com">laddi</a>
* @version $Revision: 1.4.2.1 $
*/
public class UserHomeLink extends PresentationObjectContainer {
private String iLoggedOnStyleClass;
private String iLoggedOffStyleClass;
/* (non-Javadoc)
* @see com.idega.idegaweb.widget.Widget#getWidget(com.idega.presentation.IWContext)
*/
public void print(IWContext iwc) throws Exception {
if (iwc.isLoggedOn()) {
try {
ICPage homePage = getUserBusiness(iwc).getHomePageForUser(iwc.getCurrentUser());
LinkContainer link = new LinkContainer();
if (this.iLoggedOnStyleClass != null) {
link.setStyleClass(this.iLoggedOnStyleClass);
}
link.setPage(homePage);
List list = this.getChildren();
if (list != null) {
Iterator iter = list.iterator();
while (iter.hasNext()) {
PresentationObject object = (PresentationObject) iter.next();
link.add(object);
}
}
this.empty();
add(link);
}
catch (RemoteException re) {
log(re);
}
catch (FinderException fe) {
log(fe);
}
}
else {
List list = this.getChildren();
if (list != null) {
Iterator iter = list.iterator();
while (iter.hasNext()) {
PresentationObject object = (PresentationObject) iter.next();
if (this.iLoggedOffStyleClass != null) {
object.setStyleClass(this.iLoggedOffStyleClass);
}
}
}
}
super.print(iwc);
}
protected UserBusiness getUserBusiness(IWApplicationContext iwac) {
try {
return (UserBusiness) IBOLookup.getServiceInstance(iwac, UserBusiness.class);
}
catch (IBOLookupException ile) {
throw new IBORuntimeException(ile);
}
}
/**
* Sets the style class to use when logged on. Is used on the surrounding Link.
* @param loggedOnStyleClass The loggedOnStyleClass to set.
*/
public void setLoggedOnStyleClass(String loggedOnStyleClass) {
this.iLoggedOnStyleClass = loggedOnStyleClass;
}
/**
* Sets the style class to use when logged off. Is set to all added objects.
* @param loggedOffStyleClass The loggedOffStyleClass to set.
*/
public void setLoggedOffStyleClass(String loggedOffStyleClass) {
this.iLoggedOffStyleClass = loggedOffStyleClass;
}
public boolean isContainer() {
return true;
}
}