Skip to content

Commit 4eab629

Browse files
author
Zach Glueckert
committed
Improvements for managing PropertyChangeListeners associated with the WorldWindow. Maintains fix for null pointer exception found when setting some Java Look and Feels and using the WorldWindowGLJPanel.
1 parent 08e9201 commit 4eab629

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

src/gov/nasa/worldwind/awt/WorldWindowGLCanvas.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public WorldWindowGLCanvas()
6767
{
6868
this.wwd = ((WorldWindowGLDrawable) WorldWind.createConfigurationComponent(AVKey.WORLD_WINDOW_CLASS_NAME));
6969
this.wwd.initDrawable(this);
70+
this.wwd.addPropertyChangeListener(this);
7071
this.wwd.initGpuResourceCache(WorldWindowImpl.createGpuResourceCache());
7172
this.createView();
7273
this.createDefaultInputHandler();
@@ -101,6 +102,7 @@ public WorldWindowGLCanvas(WorldWindow shareWith)
101102
{
102103
this.wwd = ((WorldWindowGLDrawable) WorldWind.createConfigurationComponent(AVKey.WORLD_WINDOW_CLASS_NAME));
103104
this.wwd.initDrawable(this);
105+
this.wwd.addPropertyChangeListener(this);
104106
if (shareWith != null)
105107
this.wwd.initGpuResourceCache(shareWith.getGpuResourceCache());
106108
else
@@ -140,6 +142,7 @@ public WorldWindowGLCanvas(WorldWindow shareWith, java.awt.GraphicsDevice device
140142
{
141143
this.wwd = ((WorldWindowGLDrawable) WorldWind.createConfigurationComponent(AVKey.WORLD_WINDOW_CLASS_NAME));
142144
this.wwd.initDrawable(this);
145+
this.wwd.addPropertyChangeListener(this);
143146
if (shareWith != null)
144147
this.wwd.initGpuResourceCache(shareWith.getGpuResourceCache());
145148
else
@@ -203,6 +206,9 @@ public WorldWindowGLCanvas(WorldWindow shareWith, java.awt.GraphicsDevice device
203206

204207
public void propertyChange(PropertyChangeEvent evt)
205208
{
209+
if(this.wwd == evt.getSource())
210+
this.firePropertyChange(evt);
211+
206212
//noinspection StringEquality
207213
if (evt.getPropertyName() == WorldWind.SHUTDOWN_EVENT)
208214
this.shutdown();
@@ -408,28 +414,24 @@ public Object removeKey(String key)
408414
public synchronized void addPropertyChangeListener(PropertyChangeListener listener)
409415
{
410416
super.addPropertyChangeListener(listener);
411-
this.wwd.addPropertyChangeListener(listener);
412417
}
413418

414419
@Override
415420
public synchronized void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
416421
{
417422
super.addPropertyChangeListener(propertyName, listener);
418-
this.wwd.addPropertyChangeListener(propertyName, listener);
419423
}
420424

421425
@Override
422426
public synchronized void removePropertyChangeListener(PropertyChangeListener listener)
423427
{
424428
super.removePropertyChangeListener(listener);
425-
this.wwd.removePropertyChangeListener(listener);
426429
}
427430

428431
@Override
429432
public synchronized void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
430433
{
431434
super.removePropertyChangeListener(propertyName, listener);
432-
this.wwd.removePropertyChangeListener(propertyName, listener);
433435
}
434436

435437
@Override

src/gov/nasa/worldwind/awt/WorldWindowGLJPanel.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public WorldWindowGLJPanel()
6666
{
6767
this.wwd = ((WorldWindowGLDrawable) WorldWind.createConfigurationComponent(AVKey.WORLD_WINDOW_CLASS_NAME));
6868
this.wwd.initDrawable(this);
69+
this.wwd.addPropertyChangeListener(this);
6970
this.wwd.initGpuResourceCache(WorldWindowImpl.createGpuResourceCache());
7071
this.createView();
7172
this.createDefaultInputHandler();
@@ -100,6 +101,7 @@ public WorldWindowGLJPanel(WorldWindow shareWith)
100101
{
101102
this.wwd = ((WorldWindowGLDrawable) WorldWind.createConfigurationComponent(AVKey.WORLD_WINDOW_CLASS_NAME));
102103
this.wwd.initDrawable(this);
104+
this.wwd.addPropertyChangeListener(this);
103105
if (shareWith != null)
104106
this.wwd.initGpuResourceCache(shareWith.getGpuResourceCache());
105107
else
@@ -143,6 +145,7 @@ public WorldWindowGLJPanel(WorldWindow shareWith, GLCapabilities capabilities,
143145
{
144146
this.wwd = ((WorldWindowGLDrawable) WorldWind.createConfigurationComponent(AVKey.WORLD_WINDOW_CLASS_NAME));
145147
this.wwd.initDrawable(this);
148+
this.wwd.addPropertyChangeListener(this);
146149
if (shareWith != null)
147150
this.wwd.initGpuResourceCache(shareWith.getGpuResourceCache());
148151
else
@@ -162,6 +165,9 @@ public WorldWindowGLJPanel(WorldWindow shareWith, GLCapabilities capabilities,
162165

163166
public void propertyChange(PropertyChangeEvent evt)
164167
{
168+
if(this.wwd == evt.getSource())
169+
this.firePropertyChange(evt);
170+
165171
//noinspection StringEquality
166172
if (evt.getPropertyName() == WorldWind.SHUTDOWN_EVENT)
167173
this.shutdown();
@@ -367,29 +373,24 @@ public Object removeKey(String key)
367373
public synchronized void addPropertyChangeListener(PropertyChangeListener listener)
368374
{
369375
super.addPropertyChangeListener(listener);
370-
if (wwd != null) // defensive condition for NPE that happens when (for example) setting a swing look/feel
371-
this.wwd.addPropertyChangeListener(listener);
372376
}
373377

374378
@Override
375379
public synchronized void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
376380
{
377381
super.addPropertyChangeListener(propertyName, listener);
378-
this.wwd.addPropertyChangeListener(propertyName, listener);
379382
}
380383

381384
@Override
382385
public synchronized void removePropertyChangeListener(PropertyChangeListener listener)
383386
{
384387
super.removePropertyChangeListener(listener);
385-
this.wwd.removePropertyChangeListener(listener);
386388
}
387389

388390
@Override
389391
public synchronized void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
390392
{
391393
super.removePropertyChangeListener(listener);
392-
this.wwd.removePropertyChangeListener(listener);
393394
}
394395

395396
@Override

0 commit comments

Comments
 (0)