Index: java/j2seproject/nbproject/project.xml =================================================================== RCS file: /cvs/java/j2seproject/nbproject/project.xml,v retrieving revision 1.41 diff -u -r1.41 project.xml --- java/j2seproject/nbproject/project.xml 17 Mar 2007 12:26:29 -0000 1.41 +++ java/j2seproject/nbproject/project.xml 19 Mar 2007 21:16:52 -0000 @@ -234,7 +234,7 @@ - 7.3 + 7.8 Index: java/j2seproject/src/org/netbeans/modules/java/j2seproject/J2SESources.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/J2SESources.java,v retrieving revision 1.18 diff -u -r1.18 J2SESources.java --- java/j2seproject/src/org/netbeans/modules/java/j2seproject/J2SESources.java 2 Mar 2007 03:34:36 -0000 1.18 +++ java/j2seproject/src/org/netbeans/modules/java/j2seproject/J2SESources.java 19 Mar 2007 21:16:52 -0000 @@ -21,8 +21,6 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeEvent; -import java.util.ArrayList; -import java.util.List; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.netbeans.modules.java.j2seproject.ui.customizer.J2SEProjectProperties; @@ -35,6 +33,7 @@ import org.netbeans.spi.project.support.ant.SourcesHelper; import org.netbeans.spi.project.support.ant.AntProjectHelper; import org.netbeans.spi.project.support.ant.PropertyEvaluator; +import org.openide.util.ChangeSupport; /** * Implementation of {@link Sources} interface for J2SEProject. @@ -54,7 +53,7 @@ * Flag to forbid multiple invocation of {@link SourcesHelper#registerExternalRoots} **/ private boolean externalRootsRegistered; - private final List listeners = new ArrayList(); + private final ChangeSupport changeSupport = new ChangeSupport(this); J2SESources(AntProjectHelper helper, PropertyEvaluator evaluator, SourceRoots sourceRoots, SourceRoots testRoots) { @@ -124,35 +123,21 @@ } public void addChangeListener(ChangeListener changeListener) { - synchronized (listeners) { - listeners.add(changeListener); - } + changeSupport.addChangeListener(changeListener); } public void removeChangeListener(ChangeListener changeListener) { - synchronized (listeners) { - listeners.remove(changeListener); - } + changeSupport.removeChangeListener(changeListener); } private void fireChange() { - ChangeListener[] _listeners; synchronized (this) { if (delegate != null) { delegate.removeChangeListener(this); delegate = null; } } - synchronized (listeners) { - if (listeners.isEmpty()) { - return; - } - _listeners = listeners.toArray(new ChangeListener[listeners.size()]); - } - ChangeEvent ev = new ChangeEvent(this); - for (ChangeListener l : _listeners) { - l.stateChanged(ev); - } + changeSupport.fireChange(); } public void propertyChange(PropertyChangeEvent evt) { Index: java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/BinaryForSourceQueryImpl.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/BinaryForSourceQueryImpl.java,v retrieving revision 1.1 diff -u -r1.1 BinaryForSourceQueryImpl.java --- java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/BinaryForSourceQueryImpl.java 9 Feb 2007 10:50:39 -0000 1.1 +++ java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/BinaryForSourceQueryImpl.java 19 Mar 2007 21:16:52 -0000 @@ -25,9 +25,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; -import java.util.List; import java.util.Map; -import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.netbeans.api.java.queries.BinaryForSourceQuery; @@ -37,6 +35,7 @@ import org.netbeans.spi.java.queries.BinaryForSourceQueryImplementation; import org.netbeans.spi.project.support.ant.AntProjectHelper; import org.netbeans.spi.project.support.ant.PropertyEvaluator; +import org.openide.util.ChangeSupport; import org.openide.util.Exceptions; /** @@ -89,7 +88,7 @@ class R implements BinaryForSourceQuery.Result, PropertyChangeListener { private final String propName; - private final List listeners = new CopyOnWriteArrayList(); + private final ChangeSupport changeSupport = new ChangeSupport(this); R (final String propName) { assert propName != null; @@ -114,19 +113,16 @@ public void addChangeListener(ChangeListener l) { assert l != null; - this.listeners.add (l); + changeSupport.addChangeListener(l); } public void removeChangeListener(ChangeListener l) { assert l != null; - this.listeners.remove (l); + changeSupport.removeChangeListener(l); } public void propertyChange(PropertyChangeEvent event) { - ChangeEvent ce = new ChangeEvent (this); - for (ChangeListener l : listeners) { - l.stateChanged(ce); - } + changeSupport.fireChange(); } } Index: java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/CompiledSourceForBinaryQuery.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/CompiledSourceForBinaryQuery.java,v retrieving revision 1.14 diff -u -r1.14 CompiledSourceForBinaryQuery.java --- java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/CompiledSourceForBinaryQuery.java 26 Oct 2006 20:35:59 -0000 1.14 +++ java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/CompiledSourceForBinaryQuery.java 19 Mar 2007 21:16:52 -0000 @@ -39,6 +39,7 @@ import org.netbeans.spi.project.support.ant.PropertyEvaluator; import org.netbeans.modules.java.j2seproject.SourceRoots; import org.openide.filesystems.URLMapper; +import org.openide.util.ChangeSupport; /** * Finds sources corresponding to binaries in a J2SE project. @@ -114,7 +115,7 @@ private class Result implements SourceForBinaryQuery.Result, PropertyChangeListener { - private List listeners; + private final ChangeSupport changeSupport = new ChangeSupport(this); private SourceRoots sourceRoots; public Result (SourceRoots sourceRoots) { @@ -159,37 +160,17 @@ return result.toArray(new FileObject[result.size()]); } - public synchronized void addChangeListener (ChangeListener l) { - if (this.listeners == null) { - this.listeners = new ArrayList(); - } - this.listeners.add (l); + public void addChangeListener (ChangeListener l) { + changeSupport.addChangeListener(l); } - public synchronized void removeChangeListener (ChangeListener l) { - if (this.listeners == null) { - return; - } - this.listeners.remove (l); + public void removeChangeListener (ChangeListener l) { + changeSupport.removeChangeListener(l); } public void propertyChange(PropertyChangeEvent evt) { if (SourceRoots.PROP_ROOTS.equals(evt.getPropertyName())) { - this.fireChange (); - } - } - - private void fireChange() { - ChangeListener[] ls; - synchronized (this) { - if (this.listeners == null) { - return; - } - ls = listeners.toArray(new ChangeListener[listeners.size()]); - } - ChangeEvent event = new ChangeEvent(this); - for (ChangeListener l : ls) { - l.stateChanged(event); + this.changeSupport.fireChange (); } } Index: java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/JavadocForBinaryQueryImpl.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/JavadocForBinaryQueryImpl.java,v retrieving revision 1.8 diff -u -r1.8 JavadocForBinaryQueryImpl.java --- java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/JavadocForBinaryQueryImpl.java 30 Jun 2006 20:07:40 -0000 1.8 +++ java/j2seproject/src/org/netbeans/modules/java/j2seproject/queries/JavadocForBinaryQueryImpl.java 19 Mar 2007 21:16:52 -0000 @@ -22,7 +22,6 @@ import java.beans.PropertyChangeListener; import java.io.File; import java.util.ArrayList; -import java.util.List; import javax.swing.event.ChangeEvent; import org.netbeans.spi.project.support.ant.AntProjectHelper; import org.openide.ErrorManager; @@ -30,10 +29,10 @@ import java.net.URL; import java.net.MalformedURLException; import javax.swing.event.ChangeListener; -import javax.xml.transform.Result; import org.netbeans.api.java.queries.JavadocForBinaryQuery; import org.netbeans.spi.java.queries.JavadocForBinaryQueryImplementation; import org.netbeans.spi.project.support.ant.PropertyEvaluator; +import org.openide.util.ChangeSupport; import org.openide.util.WeakListeners; /** @@ -56,7 +55,7 @@ class R implements JavadocForBinaryQuery.Result, PropertyChangeListener { - private List listeners; + private final ChangeSupport changeSupport = new ChangeSupport(this); private URL[] result; public R () { @@ -86,19 +85,13 @@ } return this.result; } - public synchronized void addChangeListener(final ChangeListener l) { + public void addChangeListener(final ChangeListener l) { assert l != null; - if (this.listeners == null) { - this.listeners = new ArrayList (); - } - this.listeners.add (l); + changeSupport.addChangeListener(l); } - public synchronized void removeChangeListener(final ChangeListener l) { + public void removeChangeListener(final ChangeListener l) { assert l != null; - if (this.listeners == null) { - return; - } - this.listeners.remove (l); + changeSupport.removeChangeListener(l); } public void propertyChange (final PropertyChangeEvent event) { @@ -106,21 +99,7 @@ synchronized (this) { result = null; } - this.fireChange (); - } - } - - private void fireChange () { - ChangeListener[] _listeners; - synchronized (this) { - if (this.listeners == null) { - return; - } - _listeners = (ChangeListener[]) this.listeners.toArray (new ChangeListener[this.listeners.size()]); - } - ChangeEvent event = new ChangeEvent (this); - for (int i=0; i<_listeners.length; i++) { - _listeners[i].stateChanged(event); + this.changeSupport.fireChange (); } } } Index: java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/J2SELogicalViewProvider.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/J2SELogicalViewProvider.java,v retrieving revision 1.23 diff -u -r1.23 J2SELogicalViewProvider.java --- java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/J2SELogicalViewProvider.java 29 Nov 2006 23:17:20 -0000 1.23 +++ java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/J2SELogicalViewProvider.java 19 Mar 2007 21:16:52 -0000 @@ -78,6 +78,7 @@ import org.openide.modules.SpecificationVersion; import org.openide.nodes.AbstractNode; import org.openide.nodes.Node; +import org.openide.util.ChangeSupport; import org.openide.util.HelpCtx; import org.openide.util.Lookup; import org.openide.util.NbBundle; @@ -101,7 +102,7 @@ private final PropertyEvaluator evaluator; private final SubprojectProvider spp; private final ReferenceHelper resolver; - private List changeListeners; + private final ChangeSupport changeSupport = new ChangeSupport(this); public J2SELogicalViewProvider(J2SEProject project, UpdateHelper helper, PropertyEvaluator evaluator, SubprojectProvider spp, ReferenceHelper resolver) { this.project = project; @@ -157,18 +158,12 @@ - public synchronized void addChangeListener(ChangeListener l) { - if (this.changeListeners == null) { - this.changeListeners = new ArrayList(); - } - this.changeListeners.add(l); + public void addChangeListener(ChangeListener l) { + changeSupport.addChangeListener(l); } - public synchronized void removeChangeListener(ChangeListener l) { - if (this.changeListeners == null) { - return; - } - this.changeListeners.remove(l); + public void removeChangeListener(ChangeListener l) { + changeSupport.removeChangeListener(l); } /** @@ -177,17 +172,7 @@ * */ public void testBroken() { - ChangeListener[] _listeners; - synchronized (this) { - if (this.changeListeners == null) { - return; - } - _listeners = changeListeners.toArray(new ChangeListener[changeListeners.size()]); - } - ChangeEvent event = new ChangeEvent(this); - for (ChangeListener l : _listeners) { - l.stateChanged(event); - } + changeSupport.fireChange(); } private static Lookup createLookup( Project project ) { Index: java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/LibrariesNodeFactory.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/LibrariesNodeFactory.java,v retrieving revision 1.2 diff -u -r1.2 LibrariesNodeFactory.java --- java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/LibrariesNodeFactory.java 18 Sep 2006 19:45:11 -0000 1.2 +++ java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/LibrariesNodeFactory.java 19 Mar 2007 21:16:52 -0000 @@ -42,6 +42,7 @@ import org.netbeans.spi.project.ui.support.NodeFactory; import org.netbeans.spi.project.ui.support.NodeList; import org.openide.nodes.Node; +import org.openide.util.ChangeSupport; import org.openide.util.NbBundle; /** @@ -66,7 +67,7 @@ private SourceRoots testSources; private J2SEProject project; - private ArrayList listeners = new ArrayList(); + private final ChangeSupport changeSupport = new ChangeSupport(this); private PropertyEvaluator evaluator; private UpdateHelper helper; @@ -100,24 +101,12 @@ return result; } - public synchronized void addChangeListener(ChangeListener l) { - listeners.add(l); + public void addChangeListener(ChangeListener l) { + changeSupport.addChangeListener(l); } - public synchronized void removeChangeListener(ChangeListener l) { - listeners.remove(l); - } - - private void fireChange() { - ArrayList list = new ArrayList(); - synchronized (this) { - list.addAll(listeners); - } - Iterator it = list.iterator(); - while (it.hasNext()) { - ChangeListener elem = it.next(); - elem.stateChanged(new ChangeEvent( this )); - } + public void removeChangeListener(ChangeListener l) { + changeSupport.removeChangeListener(l); } public Node node(String key) { @@ -172,7 +161,7 @@ // The caller holds ProjectManager.mutex() read lock SwingUtilities.invokeLater(new Runnable() { public void run() { - fireChange(); + changeSupport.fireChange(); } }); } Index: java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/PlatformNode.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/PlatformNode.java,v retrieving revision 1.10 diff -u -r1.10 PlatformNode.java --- java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/PlatformNode.java 30 Jun 2006 20:07:42 -0000 1.10 +++ java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/PlatformNode.java 19 Mar 2007 21:16:52 -0000 @@ -43,7 +43,6 @@ import org.openide.filesystems.FileObject; import org.openide.filesystems.FileStateInvalidException; import org.openide.filesystems.FileUtil; -import org.openide.filesystems.URLMapper; import org.openide.nodes.Children; import org.openide.nodes.AbstractNode; import org.openide.nodes.Node; @@ -56,6 +55,7 @@ import org.netbeans.api.project.SourceGroup; import org.netbeans.spi.project.support.ant.PropertyEvaluator; import org.netbeans.spi.java.project.support.ui.PackageView; +import org.openide.util.ChangeSupport; import org.openide.util.actions.SystemAction; import org.openide.util.lookup.Lookups; import org.openide.xml.XMLUtil; @@ -212,7 +212,7 @@ private final PropertyEvaluator evaluator; private final String platformPropName; private JavaPlatform platformCache; - private List/**/ listeners; + private final ChangeSupport changeSupport = new ChangeSupport(this); public PlatformProvider (PropertyEvaluator evaluator, String platformPropName) { this.evaluator = evaluator; @@ -245,38 +245,18 @@ return platformCache; } - public synchronized void addChangeListener (ChangeListener l) { - if (this.listeners == null) { - this.listeners = new ArrayList (); - } - this.listeners.add (l); + public void addChangeListener (ChangeListener l) { + changeSupport.addChangeListener (l); } - public synchronized void removeChangeListener (ChangeListener l) { - if (this.listeners == null) { - return; - } - this.listeners.remove(l); + public void removeChangeListener (ChangeListener l) { + changeSupport.removeChangeListener (l); } public void propertyChange(PropertyChangeEvent evt) { if (platformPropName.equals (evt.getPropertyName())) { platformCache = null; - this.fireChange (); - } - } - - private void fireChange () { - ChangeListener[] _listeners; - synchronized (this) { - if (this.listeners == null) { - return; - } - _listeners = (ChangeListener[]) this.listeners.toArray(new ChangeListener[listeners.size()]); - } - ChangeEvent event = new ChangeEvent (this); - for (int i=0; i< _listeners.length; i++) { - _listeners[i].stateChanged(event); + this.changeSupport.fireChange (); } } Index: java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/SourceNodeFactory.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/SourceNodeFactory.java,v retrieving revision 1.2 diff -u -r1.2 SourceNodeFactory.java --- java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/SourceNodeFactory.java 18 Sep 2006 19:45:11 -0000 1.2 +++ java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/SourceNodeFactory.java 19 Mar 2007 21:16:52 -0000 @@ -22,7 +22,6 @@ import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.Collections; -import java.util.Iterator; import java.util.List; import javax.swing.AbstractAction; import javax.swing.Action; @@ -37,12 +36,12 @@ import org.netbeans.modules.java.j2seproject.J2SEProject; import org.netbeans.modules.java.j2seproject.ui.customizer.CustomizerProviderImpl; import org.netbeans.spi.java.project.support.ui.PackageView; -import org.netbeans.spi.project.ui.support.NodeFactorySupport; import org.netbeans.spi.project.ui.support.NodeFactory; import org.netbeans.spi.project.ui.support.NodeList; import org.openide.filesystems.FileObject; import org.openide.nodes.FilterNode; import org.openide.nodes.Node; +import org.openide.util.ChangeSupport; import org.openide.util.NbBundle; /** @@ -63,7 +62,7 @@ private J2SEProject project; - private List listeners = new ArrayList(); + private final ChangeSupport changeSupport = new ChangeSupport(this); public SourcesNodeList(J2SEProject proj) { project = proj; @@ -83,24 +82,12 @@ return result; } - public synchronized void addChangeListener(ChangeListener l) { - listeners.add(l); + public void addChangeListener(ChangeListener l) { + changeSupport.addChangeListener(l); } - public synchronized void removeChangeListener(ChangeListener l) { - listeners.remove(l); - } - - private void fireChange() { - ArrayList list = new ArrayList(); - synchronized (this) { - list.addAll(listeners); - } - Iterator it = list.iterator(); - while (it.hasNext()) { - ChangeListener elem = it.next(); - elem.stateChanged(new ChangeEvent( this )); - } + public void removeChangeListener(ChangeListener l) { + changeSupport.removeChangeListener(l); } public Node node(SourceGroupKey key) { @@ -120,7 +107,7 @@ // The caller holds ProjectManager.mutex() read lock SwingUtilities.invokeLater(new Runnable() { public void run() { - fireChange(); + changeSupport.fireChange(); } }); } Index: java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/PanelConfigureProject.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/PanelConfigureProject.java,v retrieving revision 1.11 diff -u -r1.11 PanelConfigureProject.java --- java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/PanelConfigureProject.java 29 Nov 2006 20:25:06 -0000 1.11 +++ java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/PanelConfigureProject.java 19 Mar 2007 21:16:52 -0000 @@ -20,13 +20,12 @@ package org.netbeans.modules.java.j2seproject.ui.wizards; import java.awt.Component; -import java.util.HashSet; -import java.util.Set; import javax.swing.JComponent; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.openide.WizardDescriptor; import org.openide.WizardValidationException; +import org.openide.util.ChangeSupport; import org.openide.util.HelpCtx; /** @@ -59,26 +58,15 @@ return component.valid( wizardDescriptor ); } - private final Set listeners = new HashSet(1); + private final ChangeSupport changeSupport = new ChangeSupport(this); public final void addChangeListener(ChangeListener l) { - synchronized (listeners) { - listeners.add(l); - } + changeSupport.addChangeListener(l); } public final void removeChangeListener(ChangeListener l) { - synchronized (listeners) { - listeners.remove(l); - } + changeSupport.removeChangeListener(l); } protected final void fireChangeEvent() { - ChangeListener[] _listeners; - synchronized (listeners) { - _listeners = listeners.toArray(new ChangeListener[listeners.size()]); - } - ChangeEvent ev = new ChangeEvent(this); - for (ChangeListener l : _listeners) { - l.stateChanged(ev); - } + changeSupport.fireChange(); } public void readSettings(Object settings) { Index: java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/PanelSourceFolders.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/PanelSourceFolders.java,v retrieving revision 1.47 diff -u -r1.47 PanelSourceFolders.java --- java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/PanelSourceFolders.java 2 Mar 2007 03:34:41 -0000 1.47 +++ java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/wizards/PanelSourceFolders.java 19 Mar 2007 21:16:52 -0000 @@ -26,7 +26,6 @@ import java.util.ArrayList; import java.util.List; import javax.swing.JButton; -import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.netbeans.spi.project.ui.templates.support.Templates; import org.openide.DialogDisplayer; @@ -35,6 +34,7 @@ import org.openide.WizardValidationException; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; +import org.openide.util.ChangeSupport; import org.openide.util.HelpCtx; import org.openide.util.NbBundle; @@ -268,22 +268,16 @@ static class Panel implements WizardDescriptor.ValidatingPanel, WizardDescriptor.FinishablePanel { - private List listeners; + private final ChangeSupport changeSupport = new ChangeSupport(this); private PanelSourceFolders component; private WizardDescriptor settings; - public synchronized void removeChangeListener(ChangeListener l) { - if (this.listeners == null) { - return; - } - this.listeners.remove(l); + public void removeChangeListener(ChangeListener l) { + changeSupport.removeChangeListener(l); } public void addChangeListener(ChangeListener l) { - if (this.listeners == null) { - this.listeners = new ArrayList(); - } - this.listeners.add (l); + changeSupport.addChangeListener(l); } public void readSettings(Object settings) { @@ -321,17 +315,7 @@ } private void fireChangeEvent () { - ChangeListener[] _listeners; - synchronized (this) { - if (listeners == null) { - return; - } - _listeners = listeners.toArray(new ChangeListener[listeners.size()]); - } - ChangeEvent event = new ChangeEvent (this); - for (ChangeListener l : _listeners) { - l.stateChanged(event); - } + changeSupport.fireChange(); } public boolean isFinishPanel() {