package com.idega.user.presentation;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.ejb.FinderException;
import com.idega.idegaweb.IWApplicationContext;
import com.idega.presentation.IWContext;
import com.idega.presentation.TabbedPropertyPanel;
import com.idega.presentation.Table;
import com.idega.presentation.text.Text;
import com.idega.user.business.GroupBusiness;
import com.idega.user.business.UserBusiness;
import com.idega.user.data.Group;
import com.idega.user.data.User;
import com.idega.util.datastructures.Collectable;
/**
* Title: User Copyright: Copyright (c) 2001 Company: idega.is
*
* @author <a href="mailto:gummi@idega.is">Gu�mundur �g�st S�mundsson</a>
* @version 1.0
*/
public abstract class UserTab extends Table implements Collectable {
private int userId = -1;
private int selectedGroupId = -1;
private List errorStrings;
protected int fontSize = 2;
protected Text proxyText;
protected UserBusiness business = null;
protected GroupBusiness groupBusiness = null;
//protected UserBusiness business;
protected Map fieldValues;
private boolean _isInitialized = false;
private TabbedPropertyPanel panel;
public UserTab() {
super();
this.errorStrings = new ArrayList();
//business = new UserBusiness();
this.fieldValues = new HashMap();
init();
this.setStyleClass("main"); //added for isi styles - birna
this.setCellpadding(0);
this.setCellspacing(0);
this.setWidth(Table.HUNDRED_PERCENT); //changed from 370
}
/*public void main(IWContext iwc) throws Exception {
if(!_isInitialized) {
initializeFieldNames();
initializeFields();
initializeTexts();
initializeFieldValues();
lineUpFields();
_isInitialized = true;
}
}*/
public UserTab(int userId) {
this();
this.setUserID(userId);
}
/**
* Calls all the "necessary" setup methods
* The calling order goes like this: <br>
* 1. initializeFieldNames();<br>
* 2. initializeFields();<br>
* 3. initializeTexts();<br>
* 4. initializeFieldValues();<br>
* 5. lineUpFields();<br>
*/
public void init() {
initializeFieldNames();
initializeFields();
initializeTexts();
initializeFieldValues();
lineUpFields();
}
public abstract void initializeFieldNames();
public abstract void initializeFieldValues();
public abstract void updateFieldsDisplayStatus();
public abstract void initializeFields();
public abstract void initializeTexts();
public abstract void lineUpFields();
public abstract boolean collect(IWContext iwc);
public abstract boolean store(IWContext iwc);
public abstract void initFieldContents();
public void setPanel(TabbedPropertyPanel panel) {
this.panel = panel;
}
public TabbedPropertyPanel getPanel() {
return this.panel;
}
private void initProxyText() {
this.proxyText = new Text("");
this.proxyText.setFontSize(this.fontSize);
}
public Text getTextObject() {
if (this.proxyText == null) {
initProxyText();
}
return (Text) this.proxyText.clone();
}
public void setGroupID(int id) {
this.selectedGroupId = id;
initFieldContents();
}
public int getGroupID() {
return this.selectedGroupId;
}
public void setUserID(int id) {
this.userId = id;
initFieldContents();
}
public int getUserId() {
return this.userId;
}
public void setUserIDAndGroupID(int userID, int groupID) {
this.userId = userID;
this.selectedGroupId = groupID;
initFieldContents();
}
//cannot store it because some tabs might update it via the userid and not
// by this bean
protected User getUser() {
try {
if (getUserId() < 1) {
return null;
}
else {
return this.getUserBusiness(
this.getIWApplicationContext()).getUser(
getUserId());
}
} catch (RemoteException e) {
e.printStackTrace();
}
return null;
}
protected Group getGroup() {
try {
if (getGroupID() < 1) {
return null;
}
else {
return this.getGroupBusiness(
this.getIWApplicationContext()).getGroupByGroupID(
getGroupID());
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
return null;
}
public void addErrorMessage(String message) {
this.errorStrings.add(message);
}
public String[] clearErrorMessages() {
String[] st = new String[this.errorStrings.size()];
Iterator iter = this.errorStrings.iterator();
int index = 0;
while (iter.hasNext()) {
st[index++] = (String) iter.next();
}
this.errorStrings.clear();
return st;
}
public boolean someErrors() {
return (0 < this.errorStrings.size());
}
public UserBusiness getUserBusiness(IWApplicationContext iwc) {
if (this.business == null) {
try {
this.business =
(
UserBusiness) com
.idega
.business
.IBOLookup
.getServiceInstance(
iwc,
UserBusiness.class);
} catch (java.rmi.RemoteException rme) {
throw new RuntimeException(rme.getMessage());
}
}
return this.business;
}
public GroupBusiness getGroupBusiness(IWApplicationContext iwc) {
if (this.groupBusiness == null) {
try {
this.groupBusiness =
(
GroupBusiness) com
.idega
.business
.IBOLookup
.getServiceInstance(
iwc,
GroupBusiness.class);
} catch (java.rmi.RemoteException rme) {
throw new RuntimeException(rme.getMessage());
}
}
return this.groupBusiness;
}
} // Class GeneralUserInfoTab