Index: NodeDisplayPanel.java =================================================================== RCS file: /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/NodeDisplayPanel.java,v retrieving revision 1.6 diff -u -B -b -r1.6 NodeDisplayPanel.java --- NodeDisplayPanel.java 23 Apr 2007 14:24:28 -0000 1.6 +++ NodeDisplayPanel.java 24 Apr 2007 08:29:29 -0000 @@ -34,7 +34,7 @@ */ public class NodeDisplayPanel extends JPanel implements ExplorerManager.Provider { - private final PropertyChangeSupport pcs; + private PropertyChangeSupport pcs; private final ExplorerManager manager = new ExplorerManager(); /** Creates a new instance of NodeDisplayPanel */ @@ -57,15 +57,14 @@ add(btv, BorderLayout.CENTER); btv.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(NodeDisplayPanel.class, "ACSD_NodeTreeView")); btv.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(NodeDisplayPanel.class, "ACSD_NodeTreeView")); - pcs = new PropertyChangeSupport(this); } public void addPropertyChangeListener(PropertyChangeListener listener) { - pcs.addPropertyChangeListener(listener); + getPropertyChangeSupport().addPropertyChangeListener(listener); } private void firePropertyChange() { - pcs.firePropertyChange(ExplorerManager.PROP_NODE_CHANGE, null, null); + getPropertyChangeSupport().firePropertyChange(ExplorerManager.PROP_NODE_CHANGE, null, null); } public Node[] getSelectedNodes() { @@ -76,6 +75,15 @@ return manager; } - + /** + * See issue #101804, addPropertyChangeListener was called before the pcs field was initialized, + * because it is exposed before before the constructor of NodeDisplayPanel is finished + */ + private synchronized PropertyChangeSupport getPropertyChangeSupport() { + if (pcs == null) { + pcs = new PropertyChangeSupport(this); + } + return pcs; + } }