0

I am facing a problem with CollapsePanel.

I need to change it's title when an event gets fired. So far I override createCollapsePanel of BorderLayout and add a listener to the event i need:

final BorderLayout layout = new BorderLayout()
{

    @Override
    protected CollapsePanel createCollapsePanel(final ContentPanel panel, final BorderLayoutData data)
    {
        final CollapsePanel result = super.createCollapsePanel(panel, data);
        panel.getHeader().addListener(Events.Change, new Listener<BaseEvent>()
        {
            @Override
            public void handleEvent(BaseEvent be)
            {
                result.setTitle(panel.getHeading());
                result.repaint();
                layout();
            }
        });
        result.setTitle(panel.getHeading());
        return result;
    }
};

The code above executes just fine, however result CollapsePanel never gets the new title.

Is there something I am missing? Thanks

Andrew
  • 2,663
  • 6
  • 28
  • 50

2 Answers2

0

you may need to sink the event you are listening for...

result.sinkEvents(Events.Change);

(I switched to gxt3 which does it a little differently so I haven't tested that line. I'm not sure if you need Events.Change or Events.OnChange)

user1258245
  • 3,639
  • 2
  • 18
  • 23
  • Unfortunately it didn't help. The handler get's executed anyway, but changes are not reflected in the browser. – Andrew Jul 25 '12 at 08:59
0
    final BorderLayout layout = new BorderLayout()
    {
        @Override
        protected CollapsePanel createCollapsePanel(final ContentPanel panel, final BorderLayoutData data)
        {
            final CollapsePanel result = super.createCollapsePanel(panel, data);

            result.sinkEvents(Events.Change.getEventCode());
            panel.getHeader().addListener(Events.Change, new Listener<BaseEvent>()
            {
                @Override
                public void handleEvent(BaseEvent be)
                {
                    result.getElement().getElementsByTagName("span").getItem(0).setInnerText(panel.getHeading());
                    PcTreeUI.this.layout(true);
                }
            });
            result.setTitle(panel.getHeading());
            return result;
        }
    };
Andrew
  • 2,663
  • 6
  • 28
  • 50