package com.idega.block.navigation.presentation;
import com.idega.user.business.UserBusiness;
import com.idega.user.data.User;
import com.idega.business.IBOLookup;
import com.idega.presentation.Table;
import com.idega.presentation.Image;
import com.idega.presentation.IWContext;
import com.idega.presentation.Block;
import com.idega.presentation.text.Link;
import com.idega.presentation.text.Text;
/**
* Title: UserHomeLink
* Description: A component that displays a user "homepage" if he has one assigned.
* Copyright: Copyright (c) 2000-2001 idega.is All Rights Reserved
* Company: idega
*@author <a href="mailto:tryggvi@idega.is">Tryggvi Larusson</a>
* @version 1.0
*/
public class UserHomeLink extends Block {
protected static final String IW_BUNDLE_IDENTIFIER="com.idega.block.navigation";
private static final String HOME_PAGE_KEY = "user_home_link.text";
private static final String HOME_PAGE_KEY_VALUE = "My page";
private String _linkStyleClass;
private String _linkStyle;
private String _selectedLinkStyleClass;
private String _selectedLinkStyle;
private String _loggedOffStyle;
private boolean _showNotLoggedOn = false;
private Image _iconImage;
private Image _loggedOffIconImage;
private int _spaceBetween = 0;
public UserHomeLink(){
}
public void main(IWContext iwc){
Table table = new Table();
table.setCellpadding(0);
table.setCellspacing(0);
int column = 1;
int pageID = this.getParentPageID();
boolean addTable = false;
if(iwc.isLoggedOn()){
try{
User newUser = iwc.getCurrentUser();
int homePageID = getUserBusiness(iwc).getHomePageIDForUser(newUser);
if(homePageID!=-1){
Link link = new Link();
link.setPage(homePageID);
link.setText(getResourceBundle(iwc).getLocalizedString(HOME_PAGE_KEY,HOME_PAGE_KEY_VALUE));
if (homePageID == pageID) {
if (this._selectedLinkStyleClass != null) {
link.setStyleClass(this._selectedLinkStyleClass);
}
else if (this._selectedLinkStyle != null) {
link.setStyleAttribute(this._selectedLinkStyle);
}
}
else {
if (this._linkStyleClass != null) {
link.setStyleClass(this._linkStyleClass);
}
else if (this._linkStyle != null) {
link.setStyleAttribute(this._linkStyle);
}
}
if (this._iconImage != null) {
addTable = true;
table.add(this._iconImage,column++,1);
if (this._spaceBetween > 0) {
table.setWidth(column++, 1, String.valueOf(this._spaceBetween));
}
}
table.add(link,column,1);
if (!addTable) {
add(link);
}
}
}
catch(Exception e){
e.printStackTrace();
}
}
else {
if (this._showNotLoggedOn) {
Text text = new Text(getResourceBundle(iwc).getLocalizedString(HOME_PAGE_KEY,HOME_PAGE_KEY_VALUE));
if (this._loggedOffStyle != null) {
text.setFontStyle(this._loggedOffStyle);
}
if (this._loggedOffIconImage != null) {
addTable = true;
table.add(this._loggedOffIconImage,column++,1);
if (this._spaceBetween > 0) {
table.setWidth(column++, 1, String.valueOf(this._spaceBetween));
}
}
table.add(text,column,1);
if (!addTable) {
add(text);
}
}
}
if (addTable) {
add(table);
}
}
protected UserBusiness getUserBusiness(IWContext iwc)throws java.rmi.RemoteException{
return (UserBusiness)IBOLookup.getServiceInstance(iwc,UserBusiness.class);
}
public String getBundleIdentifier(){
return IW_BUNDLE_IDENTIFIER;
}
public void setShowWhenLoggedOff(boolean showWhenLoggedOff) {
this._showNotLoggedOn = showWhenLoggedOff;
}
public void setLinkStyle(String style) {
this._linkStyle = style;
}
public void setLinkStyleClass(String styleClass) {
this._linkStyleClass = styleClass;
}
public void setLoggedOffTextStyle(String style) {
this._loggedOffStyle = style;
}
public void setIconImage(Image image) {
this._iconImage = image;
}
public void setLoggedOffIconImage(Image image) {
this._loggedOffIconImage = image;
}
public void setSpaceBetweenIconAndLink(int spaceBetween) {
this._spaceBetween = spaceBetween;
}
/**
* Sets the selectedLinkStyleClass.
* @param selectedLinkStyleClass The selectedLinkStyleClass to set
*/
public void setSelectedLinkStyleClass(String selectedLinkStyleClass) {
this._selectedLinkStyleClass = selectedLinkStyleClass;
}
/**
* Sets the selectedLinkStyle.
* @param selectedLinkStyle The selectedLinkStyle to set
*/
public void setSelectedLinkStyle(String selectedLinkStyle) {
this._selectedLinkStyle = selectedLinkStyle;
}
}