Thanks Martin! It worked. On Mon, Aug 12, 2013 at 1:59 PM, Martin Grigorov <[email protected]>wrote:
> Hi, > > > On Mon, Aug 12, 2013 at 9:22 AM, Andun Sameera <[email protected]> wrote: > > > Hi all, > > > > I have implemented a custom Behviour called WhiteboardBehavior extending > > the AbstractDefaultAjaxBehavior. In that class I have a static HashMap > like > > this, > > > > private static ConcurrentHashMap<Integer,Element> elementMap=new > > ConcurrentHashMap<Integer,Element>(); > > > > In the constructor of my Behavior class I put elements to the map like > > this, > > > > public WhiteboardBehavior(String whiteboardId,String whiteboardContent){ > > super(); > > this.whiteboardId=whiteboardId; > > Element element=new Element(whiteboardContent); > > > > if(element!=null){ > > elementMap.put(element.getId(),element); > > } > > } > > > > I am trying to execute some JavaScript codes int he renderHead method > using > > the above added elements. I did it like this, > > > > public void renderHead(Component component, IHeaderResponse response) { > > super.renderHead(component,response); > > > > initReferences(response); > > String callbackUrl=getCallbackUrl().toString(); > > String whiteboardInitializeScript="" + > > "callbackUrl='"+callbackUrl+"';\n" + > > "whiteboard = bay.whiteboard.Create();\n" + > > "elementCollection=whiteboard.getMainCollection();\n"+ > > "whiteboard.getMainCollection().onChange = > > function(element){\n"+ > > "changedElement=this.getJson(element);\n"+ > > > > > > > "Wicket.Ajax.get({u:'"+callbackUrl+"',ep:{editedElement:changedElement}});\n};\n"+ > > > > "whiteboard.render(document.getElementById('"+whiteboardId+"'));\n"+ > > "whiteboard.setBoundaries(0, 0, 0, 0);\n"; > > > > //Clearing the whiteboard for first client > > IWebSocketConnectionRegistry reg = > > IWebSocketSettings.Holder.get(Application.get()).getConnectionRegistry(); > > if(reg.getConnections(Application.get()).size()==0){ > > elementMap.clear(); > > } > > > > I guess the map is cleared here ^^. > The web socket connections are opened after the page is loaded. > > > > > > * //Loading existing content for clients join after first one > > if(!elementMap.isEmpty()){ > > Map<Integer,Element> sortedElementList = new > > TreeMap<Integer,Element>(elementMap); > > JSONArray jsonArray=new JSONArray(); > > for (Element e : sortedElementList.values()) { > > jsonArray.put(e.getJSON()); > > } > > > > > > > whiteboardInitializeScript+="elementCollection.parseJson('"+jsonArray.toString()+"');"; > > }* > > > > > > > > > response.render(OnDomReadyHeaderItem.forScript(whiteboardInitializeScript)); > > } > > > > But when renderHead is executed for the first time, the elementMap is > > empty. What has gone wrong here? > > > > Thanks! > > > > -- > > Regards > > Andun S.L. Gunawardana > > Undergraduate > > Department of Computer Science And Engineering > > University of Moratuwa > > Sri Lanka > > > > Blog - http://www.insightforfuture.blogspot.com/ > > LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703 > > Twitter -http://twitter.com/AndunSLG > > > -- Regards Andun S.L. Gunawardana Undergraduate Department of Computer Science And Engineering University of Moratuwa Sri Lanka Blog - http://www.insightforfuture.blogspot.com/ LinkedIn - http://www.linkedin.com/pub/andun-s-l-gunawardana/34/646/703 Twitter -http://twitter.com/AndunSLG
