# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /data/work/src/netbeans-cm # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: versioning.core/nbproject/project.properties --- versioning.core/nbproject/project.properties Base (BASE) +++ versioning.core/nbproject/project.properties Locally Modified (Based On LOCAL) @@ -44,7 +44,7 @@ javac.source=1.6 javadoc.name=Versioning -spec.version.base=1.9.0 +spec.version.base=1.10.0 is.autoload=true javadoc.arch=${basedir}/arch.xml Index: versioning.core/src/org/netbeans/modules/versioning/core/spi/VCSVisibilityQuery.java --- versioning.core/src/org/netbeans/modules/versioning/core/spi/VCSVisibilityQuery.java Base (BASE) +++ versioning.core/src/org/netbeans/modules/versioning/core/spi/VCSVisibilityQuery.java Locally Modified (Based On LOCAL) @@ -69,4 +69,14 @@ protected final void fireVisibilityChanged() { VcsVisibilityQueryImplementation.visibilityChanged(); } + + /** + * Notify a visibility change + * + * @param VCSFileProxy[] the files with a changed visibility + * @since 1.10 + */ + protected final void fireVisibilityChanged(VCSFileProxy... file) { + VcsVisibilityQueryImplementation.visibilityChanged(file); + } } Index: versioning.core/src/org/netbeans/modules/versioning/core/util/Utils.java --- versioning.core/src/org/netbeans/modules/versioning/core/util/Utils.java Base (BASE) +++ versioning.core/src/org/netbeans/modules/versioning/core/util/Utils.java Locally Modified (Based On LOCAL) @@ -47,6 +47,7 @@ import javax.swing.Action; import org.netbeans.modules.versioning.core.*; import org.netbeans.modules.versioning.core.api.VCSFileProxy; +import org.netbeans.modules.versioning.core.filesystems.VCSFileProxyOperations; import org.netbeans.modules.versioning.core.spi.VCSHistoryProvider; import org.netbeans.modules.versioning.core.spi.VCSHistoryProvider.HistoryEntry; import org.netbeans.modules.versioning.core.spi.VCSHistoryProvider.MessageEditProvider; @@ -139,6 +140,19 @@ } /** + * Notifies about visibility changes according to {@link VisibilityQueryImplementation} + * + * @param File[] the files with a changed visibility + */ + public static void fireVisibilityChanged(File... files) { + VCSFileProxy[] proxies = new VCSFileProxy[files.length]; + for (int i = 0; i < files.length; i++) { + proxies[i] = VCSFileProxy.createFileProxy(files[i]); + } + VcsVisibilityQueryImplementation.visibilityChanged(proxies); + } + + /** * Notifies that a versioning system started to manage some previously unversioned files * (e.g. those files were imported into repository). */ Index: versioning.core/test/unit/src/org/netbeans/modules/versioning/core/spi/VCSVisibilityQueryTest.java --- versioning.core/test/unit/src/org/netbeans/modules/versioning/core/spi/VCSVisibilityQueryTest.java Base (BASE) +++ versioning.core/test/unit/src/org/netbeans/modules/versioning/core/spi/VCSVisibilityQueryTest.java Locally Modified (Based On LOCAL) @@ -50,11 +50,16 @@ import org.openide.filesystems.FileObject; import java.io.File; +import java.util.ArrayList; +import java.util.List; import javax.swing.event.ChangeListener; +import junit.framework.Assert; import org.netbeans.api.queries.VisibilityQuery; import org.netbeans.junit.NbTestCase; +import org.netbeans.modules.versioning.core.api.VCSFileProxy; import org.netbeans.modules.versioning.core.spi.testvcs.TestVCS; import org.netbeans.modules.versioning.core.spi.testvcs.TestVCSVisibilityQuery; +import org.netbeans.spi.queries.VisibilityQueryChangeEvent; import org.openide.util.test.MockLookup; /** @@ -100,6 +105,43 @@ VisibilityQuery.getDefault().removeChangeListener(cl); } + public void testFireForAll() { + final boolean [] received = new boolean[] {false}; + VisibilityQuery.getDefault().addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent ce) { + received[0] = true; + } + }); + TestVCS.getInstance().getVisibilityQuery().fireVisibilityChanged(); + assertTrue(received[0]); + } + + public void testFireForFiles() throws IOException { + final List received = new ArrayList(); + VisibilityQuery.getDefault().addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent ce) { + Assert.assertTrue(ce instanceof VisibilityQueryChangeEvent); + FileObject[] fos = ((VisibilityQueryChangeEvent)ce).getFileObjects(); + Assert.assertEquals(2, fos.length); + received.add(fos[0].getName()); + received.add(fos[1].getName()); + } + }); + File f1 = new File(getWorkDir(), "f1" + TestVCS.VERSIONED_FOLDER_SUFFIX); + File f2 = new File(getWorkDir(), "f2" + TestVCS.VERSIONED_FOLDER_SUFFIX); + f1.createNewFile(); + f2.createNewFile(); + TestVCS.getInstance().getVisibilityQuery().fireVisibilityChanged( + new VCSFileProxy[] { + VCSFileProxy.createFileProxy(f1), + VCSFileProxy.createFileProxy(f2)}); + + assertTrue(received.contains(f1.getName())); + assertTrue(received.contains(f2.getName())); + } + private class VQChangeListener implements ChangeListener { private static final long MAXTIME = 30000; private static final long STABLETIME = 10000; Index: versioning.core/test/unit/src/org/netbeans/modules/versioning/core/spi/testvcs/TestVCSVisibilityQuery.java --- versioning.core/test/unit/src/org/netbeans/modules/versioning/core/spi/testvcs/TestVCSVisibilityQuery.java Base (BASE) +++ versioning.core/test/unit/src/org/netbeans/modules/versioning/core/spi/testvcs/TestVCSVisibilityQuery.java Locally Modified (Based On LOCAL) @@ -58,4 +58,11 @@ return !file.getName().endsWith(INVISIBLE_FILE_SUFFIX); } + public void visibilityChanged() { + fireVisibilityChanged(); + } + + public void visibilityChanged(VCSFileProxy... files) { + fireVisibilityChanged(files); + } } Index: versioning/apichanges.xml --- versioning/apichanges.xml Base (BASE) +++ versioning/apichanges.xml Locally Modified (Based On LOCAL) @@ -112,6 +112,20 @@ Support ContextAwareActions + + + + + + make it possible for Versioning Systems to fire visibility changes for a list of files + instead of one unspecific change event. + + + + + + + Support ContextAwareActions Index: versioning/nbproject/project.properties --- versioning/nbproject/project.properties Base (BASE) +++ versioning/nbproject/project.properties Locally Modified (Based On LOCAL) @@ -44,7 +44,7 @@ javac.source=1.6 javadoc.name=Versioning -spec.version.base=1.36.0 +spec.version.base=1.37.0 is.autoload=true javadoc.arch=${basedir}/arch.xml Index: versioning/nbproject/project.xml --- versioning/nbproject/project.xml Base (BASE) +++ versioning/nbproject/project.xml Locally Modified (Based On LOCAL) @@ -64,7 +64,7 @@ 1 - 1.7.0 + 1.10.0 Index: versioning/src/org/netbeans/modules/versioning/spi/VCSVisibilityQuery.java --- versioning/src/org/netbeans/modules/versioning/spi/VCSVisibilityQuery.java Base (BASE) +++ versioning/src/org/netbeans/modules/versioning/spi/VCSVisibilityQuery.java Locally Modified (Based On LOCAL) @@ -69,4 +69,15 @@ protected final void fireVisibilityChanged() { Utils.fireVisibilityChanged(); } + + /** + * Notify a visibility change + * + * @param File[] the files with a changed visibility + * @since 1.37 + */ + protected final void fireVisibilityChanged(File... files) { + Utils.fireVisibilityChanged(files); + } + } Index: versioning/test/unit/src/org/netbeans/modules/versioning/spi/VCSVisibilityQueryTest.java --- versioning/test/unit/src/org/netbeans/modules/versioning/spi/VCSVisibilityQueryTest.java Base (BASE) +++ versioning/test/unit/src/org/netbeans/modules/versioning/spi/VCSVisibilityQueryTest.java Locally Modified (Based On LOCAL) @@ -50,11 +50,15 @@ import org.openide.filesystems.FileObject; import java.io.File; +import java.util.ArrayList; +import java.util.List; import javax.swing.event.ChangeListener; +import junit.framework.Assert; import org.netbeans.api.queries.VisibilityQuery; import org.netbeans.junit.NbTestCase; import org.netbeans.modules.versioning.spi.testvcs.TestVCS; import org.netbeans.modules.versioning.spi.testvcs.TestVCSVisibilityQuery; +import org.netbeans.spi.queries.VisibilityQueryChangeEvent; /** * Versioning SPI unit tests of VCSVisibilityQuery. @@ -96,6 +100,39 @@ assertFalse(VisibilityQuery.getDefault().isVisible(invisibleFO)); VisibilityQuery.getDefault().removeChangeListener(cl); } + + public void testFireForAll() { + final boolean [] received = new boolean[] {false}; + VisibilityQuery.getDefault().addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent ce) { + received[0] = true; + } + }); + TestVCS.getInstance().getVisibilityQuery().fireVisibilityChanged(); + assertTrue(received[0]); + } + + public void testFireForFiles() throws IOException { + final List received = new ArrayList(); + VisibilityQuery.getDefault().addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent ce) { + Assert.assertTrue(ce instanceof VisibilityQueryChangeEvent); + FileObject[] fos = ((VisibilityQueryChangeEvent)ce).getFileObjects(); + Assert.assertEquals(2, fos.length); + received.add(fos[0].getName()); + received.add(fos[1].getName()); + } + }); + File f1 = new File(getWorkDir(), "f1" + TestVCS.VERSIONED_FOLDER_SUFFIX); + File f2 = new File(getWorkDir(), "f2" + TestVCS.VERSIONED_FOLDER_SUFFIX); + f1.createNewFile(); + f2.createNewFile(); + TestVCS.getInstance().getVisibilityQuery().fireVisibilityChanged(new File[] {f1, f2}); + assertTrue(received.contains(f1.getName())); + assertTrue(received.contains(f2.getName())); + } private class VQChangeListener implements ChangeListener { private static final long MAXTIME = 30000; Index: versioning/test/unit/src/org/netbeans/modules/versioning/spi/testvcs/TestVCSVisibilityQuery.java --- versioning/test/unit/src/org/netbeans/modules/versioning/spi/testvcs/TestVCSVisibilityQuery.java Base (BASE) +++ versioning/test/unit/src/org/netbeans/modules/versioning/spi/testvcs/TestVCSVisibilityQuery.java Locally Modified (Based On LOCAL) @@ -57,5 +57,13 @@ public boolean isVisible(File file) { return !file.getName().endsWith(INVISIBLE_FILE_SUFFIX); } + + public void visibilityChanged() { + fireVisibilityChanged(); + } + + public void visibilityChanged(File... files) { + fireVisibilityChanged(files); + } }