package com.idega.presentation.ui;
import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import javax.ejb.RemoveException;
import com.idega.event.IWActionListener;
import com.idega.event.IWPresentationEvent;
import com.idega.event.IWPresentationStateImpl;
import com.idega.idegaweb.IWApplicationContext;
import com.idega.idegaweb.IWException;
import com.idega.presentation.IWContext;
import com.idega.presentation.event.ResetPresentationEvent;
import com.idega.presentation.event.TreeViewerEvent;
import com.idega.user.business.UserBusiness;
/**
* <p>Title: idegaWeb</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: idega Software</p>
* @author <a href="gummi@idega.is">Gu�mundur �g�st S�mundsson</a>
* @version 1.0
*/
public class TreeViewerPS extends IWPresentationStateImpl implements IWActionListener {
protected List _openNodes = new Vector();
protected boolean _initLevel = true;
private String lastOpenedOrClosedNode = null;
public TreeViewerPS() {
}
public void reset() {
this._openNodes.clear();
this._initLevel = true;
this.lastOpenedOrClosedNode = null;
}
public List getOpenNodeList(){
return this._openNodes;
}
public void setOpenNodeList(List list){
if(list != null){
this._openNodes = list;
} else {
throw new NullPointerException();
}
}
public boolean setToInitOpenLevel(){
return this._initLevel;
}
// public Iterator getFirstlevelNodes(){
// /**@todo: Implement this com.idega.event.IWPresentationState method*/
// throw new java.lang.UnsupportedOperationException("Method getFirstlevelNodes() not yet implemented.");
//
// }
//
// public void setFirstlevelNodes(List nodes){
//
// }
public Object clone() {
TreeViewerPS obj = null;
try {
obj = (TreeViewerPS)super.clone();
}
catch(Exception ex) {
ex.printStackTrace(System.err);
}
return obj;
}
public String getLastOpenedOrClosedNode() {
return this.lastOpenedOrClosedNode;
}
public void resetLastOpenedOrClosedNode() {
this.lastOpenedOrClosedNode = null;
}
public void actionPerformed(IWPresentationEvent e)throws IWException{
if(e instanceof ResetPresentationEvent){
this.reset();
this.fireStateChanged();
}
this._initLevel = false;
if(e instanceof TreeViewerEvent){
String open = ((TreeViewerEvent)e).getOpenNodeAction();
boolean changed = false;
if(open != null && !this._openNodes.contains(open)){
this._openNodes.add(open);
changed = true;
}
String close = ((TreeViewerEvent)e).getCloseNodeAction();
if(close != null){
this._openNodes.remove(close);
changed = true;
}
this.lastOpenedOrClosedNode = ((TreeViewerEvent)e).getOpenNodeAction();
if (this.lastOpenedOrClosedNode == null) {
this.lastOpenedOrClosedNode = ((TreeViewerEvent)e).getCloseNodeAction();
}
IWContext iwc = ((TreeViewerEvent)e).getIWContext();
String refresh = ((TreeViewerEvent)e).getIWContext().getParameter("ic_ref_tn");
if(refresh != null) {
try {
getUserBusiness(iwc).removeStoredTopGroupNodes(iwc.getCurrentUser());
changed = true;
}
catch (RemoteException e1) {
e1.printStackTrace();
}
catch (RemoveException e1) {
e1.printStackTrace();
}
}
if(changed){
this.fireStateChanged();
}
// System.out.println("TreeViewerPS: initLevel: " + _initLevel);
Iterator iter = this._openNodes.iterator();
int counter = 1;
while (iter.hasNext()) {
iter.next();
// System.out.println("TreeViewerPS: openItem"+counter+": "+item);
counter++;
}
}
}
public UserBusiness getUserBusiness(IWApplicationContext iwc) {
UserBusiness userBiz = null;
try {
userBiz = (UserBusiness) com.idega.business.IBOLookup.getServiceInstance(iwc, UserBusiness.class);
}
catch (java.rmi.RemoteException rme) {
throw new RuntimeException(rme.getMessage());
}
return userBiz;
}
}