My solution is to create a new content screen each time, by checking the class at runtime and calling a factory method.
It's a workaround...but I would still like to know what was going on under there! Thanks for your help. On Thu, Feb 5, 2009 at 8:20 AM, Giles Baxter <[email protected]> wrote: > If I comment out the add() call, no content is added at all, so I never get > a link that I can use to navigate to the next page. > > > On Thu, Feb 5, 2009 at 12:18 AM, Damien Picard <[email protected]>wrote: > >> And if you only try to remove the currScreen ; is it removed ? >> >> >> 2009/2/5 Giles Baxter <[email protected]> >> >>> I realized I didn't need the two elements that came after the content. >>> >>> So I tried add instead of insert as you suggested, but I still get the >>> same behavior. >>> >>> >>> On Wed, Feb 4, 2009 at 11:49 PM, Giles Baxter <[email protected]>wrote: >>> >>>> Seems to be consistent. >>>> >>>> Here are the screenshots - don't know if that'll help. >>>> http://www.engr.uvic.ca/~gbaxter/tests.html<http://www.engr.uvic.ca/%7Egbaxter/tests.html> >>>> >>>> Only problem with the code you suggested is that I want to insert the >>>> content at a specific point in mainInnerPanel. If I use add, content will >>>> be at the end... >>>> >>>> >>>> On Wed, Feb 4, 2009 at 11:44 PM, Damien Picard <[email protected] >>>> > wrote: >>>> >>>>> Your mainInnerPanel is a FlowPanel, right ? >>>>> >>>>> try something like that : >>>>> >>>>> public void setCurrScreen(Widget content) { >>>>> mainInnerPanel.remove(currScreen); >>>>> mainInnerPanel.add(content); >>>>> currScreen = content; >>>>> } >>>>> >>>>> does the problem always appears ? >>>>> >>>>> >>>>> >>>>> 2009/2/5 Giles Baxter <[email protected]> >>>>> >>>>> Sure. I used the Showcase sample as a template. They have a tree >>>>>> where the tree items map to different content widgets. >>>>>> >>>>>> I've created two Maps: one for history tokens and one for link texts. >>>>>> Here are the two listeners that use them to figure out what screen to >>>>>> display: >>>>>> >>>>>> final HistoryListener historyListener = new HistoryListener() { >>>>>> public void onHistoryChanged(String historyToken) { >>>>>> Composite screen = exchangerTokens.get(historyToken); >>>>>> app.setCurrScreen(screen); >>>>>> } >>>>>> }; >>>>>> >>>>>> History.addHistoryListener(historyListener); >>>>>> >>>>>> app.setListener(new ApplicationListener() { >>>>>> public void onHyperlinkClicked(Hyperlink link) { >>>>>> Composite content = >>>>>> exchangerScreenLinks.get(link.getText()); >>>>>> if (content != null && !content.equals(app.getCurrScreen())) >>>>>> { >>>>>> History.newItem(getCurrScreenToken(content)); >>>>>> } >>>>>> } >>>>>> }); >>>>>> >>>>>> And here's the setCurrScreen method that calls insert(); >>>>>> >>>>>> public void setCurrScreen(Widget content) { >>>>>> int currScreenIndex = >>>>>> mainInnerPanel.getWidgetIndex(currScreen); >>>>>> if (currScreenIndex > -1) { >>>>>> // the screen widget referenced by currScreen was found in >>>>>> the container >>>>>> mainInnerPanel.remove(currScreenIndex); >>>>>> mainInnerPanel.insert(content, currScreenIndex); >>>>>> } >>>>>> else { >>>>>> // the container had not yet been populated >>>>>> mainInnerPanel.insert(content, 1); >>>>>> } >>>>>> currScreen = content; >>>>>> >>>>>> } >>>>>> >>>>>> On Wed, Feb 4, 2009 at 11:15 PM, Damien Picard < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> Could you copy past your code ? I think that it is probably an error >>>>>>> in your algorithm. >>>>>>> >>>>>>> Regards, >>>>>>> Damien >>>>>>> >>>>>>> 2009/2/5 Giles <[email protected]> >>>>>>> >>>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> I'm trying to give the impression of navigating through a site by >>>>>>>> updating a component contained in a FlowPanel. >>>>>>>> >>>>>>>> Each time I call myPanel.insert(myComponent, index), the contents of >>>>>>>> myComponent are repeated. I have some screenshots from running the >>>>>>>> debugger in Eclipse if anyone thinks they can help. >>>>>>>> >>>>>>>> In this case, myComponent wraps another FlowPanel. After inserting >>>>>>>> into myPanel, the id of myComponent, the FlowPanel it wraps, and the >>>>>>>> WidgetCollection inside the FlowPanel are the same. But the id of >>>>>>>> the >>>>>>>> Widget array inside the WidgetCollection changes, and now contains >>>>>>>> the >>>>>>>> duplicated contents. >>>>>>>> >>>>>>>> I don't understand how the object being passed to insert() could be >>>>>>>> modified like this. >>>>>>>> >>>>>>>> Thanks >>>>>>>> Giles >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>> >>> >>> >>> >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---
