package com.idega.event; import java.util.Hashtable; import com.idega.business.IBOSessionBean; import com.idega.idegaweb.IWLocation; import com.idega.idegaweb.IWMainApplication; import com.idega.idegaweb.browser.app.IWBrowser; import com.idega.presentation.FrameTable; import com.idega.presentation.Page; /** * <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 IWFrameBusinessBean extends IBOSessionBean implements IWFrameBusiness { //private final static String IW_FRAME_CONTENT = "iw_frame_content"; private final static String SLASH = "/"; /** * * @uml.property name="frameStorage" * @uml.associationEnd multiplicity="(0 1)" qualifier="identifier:java.lang.String * frame:com.idega.presentation.FrameTable" */ private Hashtable frameStorage = new Hashtable(); public IWFrameBusinessBean() { } public String getFrameSetIdentifier(FrameTable frame){ int id = frame.getICObjectInstanceID(); String identifier; if(id>0){ identifier = Integer.toString(id); } else { identifier = (0+SLASH+IWMainApplication.getEncryptedClassName(frame.getClass())); } return identifier; } public String getFrameSetIdentifier(IWLocation location){ String identifier = (0+SLASH+IWMainApplication.getEncryptedClassName(location.getApplicationClass())); return identifier; } /** * * @param frame * @return FrameSetIdentifier to find it back */ public String retainFrameSet(FrameTable frame){ Hashtable table = getFrameSetStorage(); String url = this.getFrameSetIdentifier(frame); table.put(url,frame); return url; } // public String retainFrameSet(FrameTable frame){ // Hashtable table = getFrameSetStorage(); // String url = this.getFrameSetIdentifier(frame); // Map frames = new Hashtable(); // List l = frame.getAllContainedFrames(); // if(l != null){ // Iterator iter = l.iterator(); // while (iter.hasNext()) { // Frame item = (Frame)iter.next(); // frames.put(item.getName(),item); // } // } // // table.put(url,frames); // return url; // } private Hashtable getFrameSetStorage(){ if(this.frameStorage == null){ this.frameStorage = new Hashtable(); } return this.frameStorage; } public FrameTable getFrameSet(String identifier){ Hashtable table = getFrameSetStorage(); FrameTable frame = (FrameTable)table.get(identifier); // if(frame != null){ // frame = (FrameSet)frame.clone(); // } return frame; } public Page getFrame(String frameSetIdentifier, String frameName){ // if(frameSetIdentifier.startsWith(0+SLASH)){ // // } else { FrameTable set = getFrameSet(frameSetIdentifier); if(set != null){ if(frameName != null){ return set.getFrame(frameName, this.getUserContext(), false); } else if(set instanceof IWBrowser){ return ((IWBrowser)set).getControlFramePresentation(this.getUserContext(), false); } } // } return null; } public Page getFrame(IWLocation location){ return this.getFrame(this.getFrameSetIdentifier(location),location.getTarget()); } }