NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[IDV #HDK-655572]: Weirdness with component groups



Hi
Hi Jonathon,

> 
> The IDV svn repo has been amazing to watch recently. ...I've secretly
> started taking bets on the number of commits per day...
Yuan and I have been on a roll lately. We've been working on storm track data 
and displays.

> 
> Anyway, us McV folks, we love component groups. However, we've noticed
> that sometimes there are occasional problems with drawing "visad
> panels" in the first tab/component holder. Some people, like Tom
> Whittaker, see this problem basically all the time. I see it maybe
> once out of every 10-15 restarts of McV or the IDV, with it happening
> slightly more on Linux than OS X.
> 
> One of the particularly strange things is that aside from the visad
> part, the rest of the UI acts normally. Also, if another panel is
> created or interacted with, the "crazy" visad panel will draw itself!
> 
> Tom Rink and myself are currently thinking it's a threading thing
> (owing to the fact that it doesn't always happen)... any suggestions?
> If you'd like to try to see it, saving off a default bundle that uses
> component groups seems to be the easiest way.
> 


This is  a heavyweight component mixing with lightweight component problem.
I'm actually suprised this doesn't show up more. I have a utility method in 
GuiUtils:
    public static void handleHeavyWeightComponentsInTabs(JTabbedPane)
That sort of fixes this. It listens for tab changes and then recurses down the 
component tree and turns off the visibility of any heavyweight components.

I was not using this for the ComponentGroup but I am checking in a change now 
that does.

To try this out today just change ucar.unidata.ui.ComponentGroup.doMakeContents 
and add the GuiUtils call after the tabbedPane is created:
    public JComponent doMakeContents() {
        desktop        = new JDesktopPane();
        tabbedPane     = new JTabbedPane();
        GuiUtils.handleHeavyWeightComponentsInTabs(tabbedPane);


This is working on my laptop but I'd like to hear if it fixes your problem.

-Jeff


Ticket Details
===================
Ticket ID: HDK-655572
Department: Support IDV
Priority: Normal
Status: Open