Merge Nils' patches to licensechanger
authorTim Boudreau <tboudreau@netbeans.org>
Fri, 14 Sep 2012 00:27:52 -0400
changeset 17879aabfce61b717
parent 17876 85dacebf4fb0
parent 17878 7deec4af1358
child 17880 59cd23a98feb
Merge Nils' patches to licensechanger
licensechanger/external/binaries-list
licensechanger/src/org/netbeans/modules/licensechanger/ChangeLicenseAction.java
licensechanger/src/org/netbeans/modules/licensechanger/CheckboxListView.java
licensechanger/src/org/netbeans/modules/licensechanger/ChooseFileTypesPanel.form
licensechanger/src/org/netbeans/modules/licensechanger/ChooseFileTypesPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/FileChildren.java
licensechanger/src/org/netbeans/modules/licensechanger/FolderChildren.java
licensechanger/src/org/netbeans/modules/licensechanger/LicenseChooserPanel.form
licensechanger/src/org/netbeans/modules/licensechanger/LicenseChooserPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/LineEndingPreference.java
licensechanger/src/org/netbeans/modules/licensechanger/LineEndingsPanel.form
licensechanger/src/org/netbeans/modules/licensechanger/LineEndingsPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/NodeCheckObserver.java
licensechanger/src/org/netbeans/modules/licensechanger/Offsets.java
licensechanger/src/org/netbeans/modules/licensechanger/PreviewPanel.form
licensechanger/src/org/netbeans/modules/licensechanger/PreviewPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/SelectFoldersPanel.form
licensechanger/src/org/netbeans/modules/licensechanger/SelectFoldersPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/WizardPP.java
licensechanger/src/org/netbeans/modules/licensechanger/handlers/Bundle.properties
licensechanger/src/org/netbeans/modules/licensechanger/handlers/JavaFileHandler.java
licensechanger/src/org/netbeans/modules/licensechanger/handlers/JavaFxFileHandler.java
licensechanger/src/org/netbeans/modules/licensechanger/handlers/PropertiesFileHandler.java
licensechanger/src/org/netbeans/modules/licensechanger/handlers/XmlFileHandler.java
licensechanger/src/org/netbeans/modules/licensechanger/handlers/XmlHandlerCustomizer.form
licensechanger/src/org/netbeans/modules/licensechanger/handlers/XmlHandlerCustomizer.java
licensechanger/src/org/netbeans/modules/licensechanger/layer.xml
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/JavaFileHandlerTest.java
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/PropertiesFileHandlerTest.java
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/XmlFileHandlerTest.java
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/fake_license.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_1.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_10.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_11.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_12.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_2.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_3.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_4.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_5.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_6.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_7.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_8.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_9.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_golden.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/props_1.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/props_2.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/props_3.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/props_4.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/props_golden.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_1.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_2.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_3.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_4.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_5.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_6.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_7.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_8.txt
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_golden.txt
     1.1 --- a/licensechanger/build.xml	Wed Sep 12 17:19:28 2012 +0200
     1.2 +++ b/licensechanger/build.xml	Fri Sep 14 00:27:52 2012 -0400
     1.3 @@ -1,34 +1,8 @@
     1.4  <?xml version="1.0" encoding="UTF-8"?>
     1.5 -<project basedir="." default="netbeans" name="contrib/licensechanger">
     1.6 -
     1.7 -    <import file="../../nbbuild/templates/projectized.xml"/>
     1.8 -
     1.9 -    <target name="compile" depends="projectized-common.compile">
    1.10 -        <mkdir dir="${build.classes.dir}/org/netbeans/modules/licensechanger/licenses"/>
    1.11 -        <copy todir="${build.classes.dir}/org/netbeans/modules/licensechanger/licenses">
    1.12 -            <fileset dir="${basedir}/../../nbbuild/licenses">
    1.13 -                <!-- XXX would it be better to just include the ones we _do_ want? -->
    1.14 -                <exclude name="ANTLR-2"/>
    1.15 -                <exclude name="Apache-1.1-xmlunit_variant"/>
    1.16 -                <exclude name="Apache-2.0-Vera-Perseus"/>
    1.17 -                <exclude name="Apache-JDOM"/>
    1.18 -                <exclude name="BSD-jsch-variant"/>
    1.19 -                <exclude name="DOM4J-BSD"/>
    1.20 -                <exclude name="GPL-with-Proguard-exception"/>
    1.21 -                <exclude name="HttpUnit"/>
    1.22 -                <exclude name="Northwoods"/>
    1.23 -                <exclude name="Subversion"/>
    1.24 -                <exclude name="TEL_For_NB_dbxGUI"/>
    1.25 -                <exclude name="cobertura"/>
    1.26 -                <exclude name="freemarker"/>
    1.27 -                <exclude name="prefuse-BSD"/>
    1.28 -            </fileset>
    1.29 -        </copy>
    1.30 -        <fileset dir="${build.classes.dir}/org/netbeans/modules/licensechanger/licenses" id="license.files"/>
    1.31 -        <pathconvert property="license.files.nl" pathsep="&#10;" refid="license.files">
    1.32 -            <mapper type="flatten"/>
    1.33 -        </pathconvert>
    1.34 -        <echo file="${build.classes.dir}/org/netbeans/modules/licensechanger/licenses.txt" message="${license.files.nl}"/>
    1.35 -    </target>
    1.36 -
    1.37 +<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
    1.38 +<!-- for some information on what you could do (e.g. targets to override). -->
    1.39 +<!-- If you delete this file and reopen the project it will be recreated. -->
    1.40 +<project name="org.netbeans.modules.licensechanger" default="netbeans" basedir=".">
    1.41 +    <description>Builds, tests, and runs the project org.netbeans.modules.licensechanger.</description>
    1.42 +    <import file="nbproject/build-impl.xml"/>
    1.43  </project>
     2.1 --- a/licensechanger/external/binaries-list	Wed Sep 12 17:19:28 2012 +0200
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,1 +0,0 @@
     2.4 -6457C7671CCE963183972513BA7DE661512A3653 wizard.java.net.264.jar
     3.1 --- a/licensechanger/manifest.mf	Wed Sep 12 17:19:28 2012 +0200
     3.2 +++ b/licensechanger/manifest.mf	Fri Sep 14 00:27:52 2012 -0400
     3.3 @@ -2,5 +2,8 @@
     3.4  OpenIDE-Module: org.netbeans.modules.licensechanger/1
     3.5  OpenIDE-Module-Layer: org/netbeans/modules/licensechanger/layer.xml
     3.6  OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/licensechanger/Bundle.properties
     3.7 -OpenIDE-Module-Specification-Version: 1.8
     3.8 +OpenIDE-Module-Requires: 
     3.9 +  javax.script.ScriptEngine.FreeMarker,
    3.10 +  javax.script.ScriptEngine.freemarker
    3.11 +OpenIDE-Module-Specification-Version: 1.9
    3.12  
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/licensechanger/nbproject/build-impl.xml	Fri Sep 14 00:27:52 2012 -0400
     4.3 @@ -0,0 +1,42 @@
     4.4 +<?xml version="1.0" encoding="UTF-8"?>
     4.5 +<!--
     4.6 +*** GENERATED FROM project.xml - DO NOT EDIT  ***
     4.7 +***         EDIT ../build.xml INSTEAD         ***
     4.8 +-->
     4.9 +<project name="org.netbeans.modules.licensechanger-impl" basedir="..">
    4.10 +    <fail message="Please build using Ant 1.7.1 or higher.">
    4.11 +        <condition>
    4.12 +            <not>
    4.13 +                <antversion atleast="1.7.1"/>
    4.14 +            </not>
    4.15 +        </condition>
    4.16 +    </fail>
    4.17 +    <property file="nbproject/private/platform-private.properties"/>
    4.18 +    <property file="nbproject/platform.properties"/>
    4.19 +    <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
    4.20 +        <attribute name="name"/>
    4.21 +        <attribute name="value"/>
    4.22 +        <sequential>
    4.23 +            <property name="@{name}" value="${@{value}}"/>
    4.24 +        </sequential>
    4.25 +    </macrodef>
    4.26 +    <macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
    4.27 +        <attribute name="property"/>
    4.28 +        <attribute name="value"/>
    4.29 +        <sequential>
    4.30 +            <property name="@{property}" value="@{value}"/>
    4.31 +        </sequential>
    4.32 +    </macrodef>
    4.33 +    <property file="${user.properties.file}"/>
    4.34 +    <nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
    4.35 +    <nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
    4.36 +    <nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
    4.37 +    <fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
    4.38 +        <condition>
    4.39 +            <not>
    4.40 +                <contains string="${cluster.path.evaluated}" substring="platform"/>
    4.41 +            </not>
    4.42 +        </condition>
    4.43 +    </fail>
    4.44 +    <import file="${harness.dir}/build.xml"/>
    4.45 +</project>
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/licensechanger/nbproject/genfiles.properties	Fri Sep 14 00:27:52 2012 -0400
     5.3 @@ -0,0 +1,8 @@
     5.4 +build.xml.data.CRC32=5f509671
     5.5 +build.xml.script.CRC32=d3b0f448
     5.6 +build.xml.stylesheet.CRC32=a56c6a5b@2.47.2
     5.7 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
     5.8 +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
     5.9 +nbproject/build-impl.xml.data.CRC32=5f509671
    5.10 +nbproject/build-impl.xml.script.CRC32=b50b3f1d
    5.11 +nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.47.2
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/licensechanger/nbproject/platform.properties	Fri Sep 14 00:27:52 2012 -0400
     6.3 @@ -0,0 +1,19 @@
     6.4 +cluster.path=\
     6.5 +    ${nbplatform.active.dir}/dlight:\
     6.6 +    ${nbplatform.active.dir}/harness:\
     6.7 +    ${nbplatform.active.dir}/cnd:\
     6.8 +    ${nbplatform.active.dir}/apisupport:\
     6.9 +    ${nbplatform.active.dir}/enterprise:\
    6.10 +    ${nbplatform.active.dir}/java:\
    6.11 +    ${nbplatform.active.dir}/websvccommon:\
    6.12 +    ${nbplatform.active.dir}/platform:\
    6.13 +    ${nbplatform.active.dir}/webcommon:\
    6.14 +    ${nbplatform.active.dir}/groovy:\
    6.15 +    ${nbplatform.active.dir}/nb:\
    6.16 +    ${nbplatform.active.dir}/javafx:\
    6.17 +    ${nbplatform.active.dir}/mobility:\
    6.18 +    ${nbplatform.active.dir}/php:\
    6.19 +    ${nbplatform.active.dir}/ergonomics:\
    6.20 +    ${nbplatform.active.dir}/profiler:\
    6.21 +    ${nbplatform.active.dir}/ide
    6.22 +nbplatform.active=default
     7.1 --- a/licensechanger/nbproject/project.properties	Wed Sep 12 17:19:28 2012 +0200
     7.2 +++ b/licensechanger/nbproject/project.properties	Fri Sep 14 00:27:52 2012 -0400
     7.3 @@ -1,4 +1,5 @@
     7.4 -javac.source=1.5
     7.5 +javac.source=1.6
     7.6  javac.compilerargs=-Xlint -Xlint:-serial
     7.7 +nbm.homepage=http://hg.netbeans.org/main/contrib
     7.8  nbm.module.author=Tim Boudreau
     7.9 -release.external/wizard.java.net.264.jar=modules/ext/wizard.java.net.264.jar
    7.10 +project.license=cddl-netbeans-sun
     8.1 --- a/licensechanger/nbproject/project.xml	Wed Sep 12 17:19:28 2012 +0200
     8.2 +++ b/licensechanger/nbproject/project.xml	Fri Sep 14 00:27:52 2012 -0400
     8.3 @@ -4,14 +4,49 @@
     8.4      <configuration>
     8.5          <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
     8.6              <code-name-base>org.netbeans.modules.licensechanger</code-name-base>
     8.7 +            <standalone/>
     8.8              <module-dependencies>
     8.9                  <dependency>
    8.10 -                    <code-name-base>org.jdesktop.layout</code-name-base>
    8.11 +                    <code-name-base>org.netbeans.api.progress</code-name-base>
    8.12                      <build-prerequisite/>
    8.13                      <compile-dependency/>
    8.14                      <run-dependency>
    8.15                          <release-version>1</release-version>
    8.16 -                        <specification-version>1.7</specification-version>
    8.17 +                        <specification-version>1.26.1</specification-version>
    8.18 +                    </run-dependency>
    8.19 +                </dependency>
    8.20 +                <dependency>
    8.21 +                    <code-name-base>org.netbeans.libs.freemarker</code-name-base>
    8.22 +                    <run-dependency>
    8.23 +                        <release-version>1</release-version>
    8.24 +                        <specification-version>2.17.1.238</specification-version>
    8.25 +                    </run-dependency>
    8.26 +                </dependency>
    8.27 +                <dependency>
    8.28 +                    <code-name-base>org.netbeans.modules.diff</code-name-base>
    8.29 +                    <build-prerequisite/>
    8.30 +                    <compile-dependency/>
    8.31 +                    <run-dependency>
    8.32 +                        <release-version>1</release-version>
    8.33 +                        <specification-version>1.35.1.42.1</specification-version>
    8.34 +                    </run-dependency>
    8.35 +                </dependency>
    8.36 +                <dependency>
    8.37 +                    <code-name-base>org.netbeans.modules.projectapi</code-name-base>
    8.38 +                    <build-prerequisite/>
    8.39 +                    <compile-dependency/>
    8.40 +                    <run-dependency>
    8.41 +                        <release-version>1</release-version>
    8.42 +                        <specification-version>1.40.1</specification-version>
    8.43 +                    </run-dependency>
    8.44 +                </dependency>
    8.45 +                <dependency>
    8.46 +                    <code-name-base>org.netbeans.modules.projectuiapi</code-name-base>
    8.47 +                    <build-prerequisite/>
    8.48 +                    <compile-dependency/>
    8.49 +                    <run-dependency>
    8.50 +                        <release-version>1</release-version>
    8.51 +                        <specification-version>1.53.1.8</specification-version>
    8.52                      </run-dependency>
    8.53                  </dependency>
    8.54                  <dependency>
    8.55 @@ -20,7 +55,7 @@
    8.56                      <compile-dependency/>
    8.57                      <run-dependency>
    8.58                          <release-version>1</release-version>
    8.59 -                        <specification-version>1.14</specification-version>
    8.60 +                        <specification-version>1.25.1</specification-version>
    8.61                      </run-dependency>
    8.62                  </dependency>
    8.63                  <dependency>
    8.64 @@ -28,7 +63,15 @@
    8.65                      <build-prerequisite/>
    8.66                      <compile-dependency/>
    8.67                      <run-dependency>
    8.68 -                        <specification-version>7.6</specification-version>
    8.69 +                        <specification-version>7.39.1</specification-version>
    8.70 +                    </run-dependency>
    8.71 +                </dependency>
    8.72 +                <dependency>
    8.73 +                    <code-name-base>org.openide.dialogs</code-name-base>
    8.74 +                    <build-prerequisite/>
    8.75 +                    <compile-dependency/>
    8.76 +                    <run-dependency>
    8.77 +                        <specification-version>7.23.1</specification-version>
    8.78                      </run-dependency>
    8.79                  </dependency>
    8.80                  <dependency>
    8.81 @@ -36,7 +79,7 @@
    8.82                      <build-prerequisite/>
    8.83                      <compile-dependency/>
    8.84                      <run-dependency>
    8.85 -                        <specification-version>6.18</specification-version>
    8.86 +                        <specification-version>6.40.1</specification-version>
    8.87                      </run-dependency>
    8.88                  </dependency>
    8.89                  <dependency>
    8.90 @@ -44,7 +87,7 @@
    8.91                      <build-prerequisite/>
    8.92                      <compile-dependency/>
    8.93                      <run-dependency>
    8.94 -                        <specification-version>7.21</specification-version>
    8.95 +                        <specification-version>7.53.2</specification-version>
    8.96                      </run-dependency>
    8.97                  </dependency>
    8.98                  <dependency>
    8.99 @@ -52,7 +95,7 @@
   8.100                      <build-prerequisite/>
   8.101                      <compile-dependency/>
   8.102                      <run-dependency>
   8.103 -                        <specification-version>7.5</specification-version>
   8.104 +                        <specification-version>7.32.1</specification-version>
   8.105                      </run-dependency>
   8.106                  </dependency>
   8.107                  <dependency>
   8.108 @@ -60,7 +103,15 @@
   8.109                      <build-prerequisite/>
   8.110                      <compile-dependency/>
   8.111                      <run-dependency>
   8.112 -                        <specification-version>7.8</specification-version>
   8.113 +                        <specification-version>7.25.1</specification-version>
   8.114 +                    </run-dependency>
   8.115 +                </dependency>
   8.116 +                <dependency>
   8.117 +                    <code-name-base>org.openide.text</code-name-base>
   8.118 +                    <build-prerequisite/>
   8.119 +                    <compile-dependency/>
   8.120 +                    <run-dependency>
   8.121 +                        <specification-version>6.43.3</specification-version>
   8.122                      </run-dependency>
   8.123                  </dependency>
   8.124                  <dependency>
   8.125 @@ -68,7 +119,7 @@
   8.126                      <build-prerequisite/>
   8.127                      <compile-dependency/>
   8.128                      <run-dependency>
   8.129 -                        <specification-version>8.0</specification-version>
   8.130 +                        <specification-version>8.19.2</specification-version>
   8.131                      </run-dependency>
   8.132                  </dependency>
   8.133                  <dependency>
   8.134 @@ -76,7 +127,15 @@
   8.135                      <build-prerequisite/>
   8.136                      <compile-dependency/>
   8.137                      <run-dependency>
   8.138 -                        <specification-version>8.0</specification-version>
   8.139 +                        <specification-version>8.11.1</specification-version>
   8.140 +                    </run-dependency>
   8.141 +                </dependency>
   8.142 +                <dependency>
   8.143 +                    <code-name-base>org.openide.windows</code-name-base>
   8.144 +                    <build-prerequisite/>
   8.145 +                    <compile-dependency/>
   8.146 +                    <run-dependency>
   8.147 +                        <specification-version>6.48.2</specification-version>
   8.148                      </run-dependency>
   8.149                  </dependency>
   8.150              </module-dependencies>
   8.151 @@ -87,15 +146,16 @@
   8.152                          <code-name-base>org.netbeans.libs.junit4</code-name-base>
   8.153                          <compile-dependency/>
   8.154                      </test-dependency>
   8.155 +                    <test-dependency>
   8.156 +                        <code-name-base>org.netbeans.modules.nbjunit</code-name-base>
   8.157 +                        <recursive/>
   8.158 +                        <compile-dependency/>
   8.159 +                    </test-dependency>
   8.160                  </test-type>
   8.161              </test-dependencies>
   8.162              <public-packages>
   8.163                  <package>org.netbeans.modules.licensechanger.api</package>
   8.164              </public-packages>
   8.165 -            <class-path-extension>
   8.166 -                <runtime-relative-path>ext/wizard.java.net.264.jar</runtime-relative-path>
   8.167 -                <binary-origin>external/wizard.java.net.264.jar</binary-origin>
   8.168 -            </class-path-extension>
   8.169          </data>
   8.170      </configuration>
   8.171  </project>
     9.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/Bundle.properties	Wed Sep 12 17:19:28 2012 +0200
     9.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/Bundle.properties	Fri Sep 14 00:27:52 2012 -0400
     9.3 @@ -2,31 +2,4 @@
     9.4  OpenIDE-Module-Long-Description=\
     9.5      Provides an action on folders to change the license headers on all files underneath
     9.6  OpenIDE-Module-Name=License Changer
     9.7 -BROWSE_LICENSE_TITLE=Locate License File
     9.8 -MSG_SELECT_A_LICENSE=Select a License or Browse for file
     9.9 -ERR_COULD_NOT_LOAD=Could not load {0}
    9.10 -LicenseChooserPanel.chooseLabel.text=Choose License
    9.11 -LicenseChooserPanel.browseButton.text=Browse
    9.12 -MSG_WAIT_FOLDERS=Scanning for folders, please wait...
    9.13 -OpenIDE-Module-Short-Description=Provides an action on folders to change the license headers on all files underneath
    9.14 -SelectFoldersPanel.jLabel1.text=Uncheck Folders that Should Be Ignored
    9.15 -PreviewPanel.jLabel1.text=Before
    9.16 -PreviewPanel.jLabel2.text=After
    9.17 -LineEndingsPanel.border.title=Line Endings
    9.18 -ChooseFileTypesPanel.jLabel1.text=Choose and Customize File Types
    9.19 -ChooseFileTypesPanel.noCustomizerLabel.text=[no customizer]
    9.20 -ChooseFileTypesPanel.customizerPanel.border.title=File Type Settings
    9.21 -
    9.22 -WIZARD_TITLE=Add/Replace License Headers
    9.23 -chooseFileTypes=Select File Types
    9.24 -chooseLicense=Select License
    9.25 -chooseFolders=Prune Folders
    9.26 -chooseFiles=Choose Files
    9.27 -preview=Preview
    9.28 -LBL_CHANGE_LICENSE=Change License Headers
    9.29 -
    9.30 -PreviewPanel.jLabel3.text=jLabel3
    9.31 -LineEndingsPanel.noChangeButton.text=Do Not Change
    9.32 -LineEndingsPanel.systemDefaultButton.text=Force System Default
    9.33 -LineEndingsPanel.newlineButton.text=Force Newline
    9.34 -LineEndingsPanel.forceCrlf.text=Force CRLF
    9.35 +OpenIDE-Module-Short-Description=Provides an action on folders to change the license headers on all files underneath
    9.36 \ No newline at end of file
    10.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/ChangeLicenseAction.java	Wed Sep 12 17:19:28 2012 +0200
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,98 +0,0 @@
    10.4 -/*
    10.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    10.6 - *
    10.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    10.8 - *
    10.9 - * The contents of this file are subject to the terms of either the GNU
   10.10 - * General Public License Version 2 only ("GPL") or the Common
   10.11 - * Development and Distribution License("CDDL") (collectively, the
   10.12 - * "License"). You may not use this file except in compliance with the
   10.13 - * License. You can obtain a copy of the License at
   10.14 - * http://www.netbeans.org/cddl-gplv2.html
   10.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   10.16 - * specific language governing permissions and limitations under the
   10.17 - * License.  When distributing the software, include this License Header
   10.18 - * Notice in each file and include the License file at
   10.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   10.20 - * particular file as subject to the "Classpath" exception as provided
   10.21 - * by Sun in the GPL Version 2 section of the License file that
   10.22 - * accompanied this code. If applicable, add the following below the
   10.23 - * License Header, with the fields enclosed by brackets [] replaced by
   10.24 - * your own identifying information:
   10.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   10.26 - *
   10.27 - * If you wish your version of this file to be governed by only the CDDL
   10.28 - * or only the GPL Version 2, indicate your decision by adding
   10.29 - * "[Contributor] elects to include this software in this distribution
   10.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   10.31 - * single choice of license, a recipient has the option to distribute
   10.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   10.33 - * to extend the choice of license to its licensees as provided above.
   10.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   10.35 - * Version 2 license, then the option applies only if the new code is
   10.36 - * made subject to such option by the copyright holder.
   10.37 - *
   10.38 - * Contributor(s):
   10.39 - *
   10.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   10.41 - */
   10.42 -
   10.43 -package org.netbeans.modules.licensechanger;
   10.44 -
   10.45 -import java.awt.event.ActionEvent;
   10.46 -import java.util.HashSet;
   10.47 -import java.util.Set;
   10.48 -import javax.swing.AbstractAction;
   10.49 -import javax.swing.Action;
   10.50 -import org.netbeans.api.wizard.WizardDisplayer;
   10.51 -import org.openide.filesystems.FileObject;
   10.52 -import org.openide.loaders.DataObject;
   10.53 -import org.openide.util.ContextAwareAction;
   10.54 -import org.openide.util.Lookup;
   10.55 -import org.openide.util.LookupEvent;
   10.56 -import org.openide.util.LookupListener;
   10.57 -import org.openide.util.NbBundle;
   10.58 -import org.openide.util.Utilities;
   10.59 -
   10.60 -/**
   10.61 - *
   10.62 - * @author Tim Boudreau
   10.63 - */
   10.64 -public class ChangeLicenseAction extends AbstractAction implements ContextAwareAction, LookupListener {
   10.65 -    private final Lookup lkp;
   10.66 -    private final Lookup.Result<DataObject> res;
   10.67 -    
   10.68 -    public ChangeLicenseAction() {
   10.69 -        this (Utilities.actionsGlobalContext());
   10.70 -    }
   10.71 -    
   10.72 -    ChangeLicenseAction (Lookup lkp) {
   10.73 -        this.lkp = lkp;
   10.74 -        res = lkp.lookupResult(DataObject.class);
   10.75 -        putValue (NAME, NbBundle.getMessage(ChangeLicenseAction.class, 
   10.76 -                "LBL_CHANGE_LICENSE")); //NOI18N
   10.77 -        res.allItems();
   10.78 -    }
   10.79 -
   10.80 -    public void actionPerformed(ActionEvent e) {
   10.81 -        Set<FileObject> files = new HashSet<FileObject>();
   10.82 -        for (DataObject ob : res.allInstances()) {
   10.83 -            files.add (ob.getPrimaryFile());
   10.84 -        }
   10.85 -        WizardPP wiz = new WizardPP (files.toArray(new FileObject[files.size()]));
   10.86 -        WizardDisplayer.showWizard(wiz.createWizard());
   10.87 -    }
   10.88 -
   10.89 -    public Action createContextAwareInstance(Lookup actionContext) {
   10.90 -        return new ChangeLicenseAction(actionContext);
   10.91 -    }
   10.92 -
   10.93 -    public void resultChanged(LookupEvent ev) {
   10.94 -        boolean enable = true;
   10.95 -        for (DataObject ob : res.allInstances()) {
   10.96 -            enable = ob.getPrimaryFile().isValid() && ob.getPrimaryFile().isFolder();
   10.97 -        }
   10.98 -        setEnabled (enable);
   10.99 -    }
  10.100 -
  10.101 -}
    11.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/CheckboxListView.java	Wed Sep 12 17:19:28 2012 +0200
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,353 +0,0 @@
    11.4 -package org.netbeans.modules.licensechanger;
    11.5 -
    11.6 -import java.awt.Component;
    11.7 -import java.awt.Dimension;
    11.8 -import java.awt.Graphics;
    11.9 -import java.awt.Insets;
   11.10 -import java.awt.event.KeyAdapter;
   11.11 -import java.awt.event.KeyEvent;
   11.12 -import java.awt.event.MouseEvent;
   11.13 -import java.awt.event.MouseListener;
   11.14 -import javax.swing.BorderFactory;
   11.15 -import javax.swing.JCheckBox;
   11.16 -import javax.swing.JComponent;
   11.17 -import javax.swing.JList;
   11.18 -import javax.swing.ListSelectionModel;
   11.19 -import javax.swing.SwingUtilities;
   11.20 -import javax.swing.UIManager;
   11.21 -import org.openide.awt.HtmlRenderer.Renderer;
   11.22 -import org.openide.explorer.ExplorerManager;
   11.23 -import org.openide.explorer.ExplorerManager.Provider;
   11.24 -import org.openide.explorer.view.ListView;
   11.25 -import org.openide.explorer.view.NodeRenderer;
   11.26 -import org.openide.nodes.Node;
   11.27 -
   11.28 -/**
   11.29 - * A JList-based list of Nodes which show checkboxes.
   11.30 - *
   11.31 - * @author Tim Boudreau
   11.32 - */
   11.33 -public class CheckboxListView extends ListView {
   11.34 -    public static final String SELECTED = "selected"; //NOI18N
   11.35 -    private final EventHandler ml = new EventHandler();
   11.36 -    private boolean checkboxesEnabled = true;
   11.37 -    private NodeCheckObserver observer;
   11.38 -
   11.39 -    public CheckboxListView() {
   11.40 -        setPopupAllowed(false);
   11.41 -        setViewportBorder(BorderFactory.createMatteBorder(5, 5, 5, 5,
   11.42 -                UIManager.getColor("text"))); //NOI18N
   11.43 -    }
   11.44 -
   11.45 -    @Override
   11.46 -    public void addNotify() {
   11.47 -        super.addNotify();
   11.48 -        //Need to do this here since overriding createList does not work -
   11.49 -        //the list is being created somewhere else; this is the best place
   11.50 -        //to intercept it
   11.51 -        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
   11.52 -        if (checkboxesEnabled) {
   11.53 -            enableCheckboxes();
   11.54 -        }
   11.55 -    }
   11.56 -    
   11.57 -    private boolean enabled = true;
   11.58 -    public void setCheckboxesEnabled(boolean enabled) {
   11.59 -        this.enabled = enabled;
   11.60 -    }
   11.61 -
   11.62 -    public void setListEnabled(boolean enabled) {
   11.63 -        list.setEnabled(enabled);
   11.64 -    }
   11.65 -
   11.66 -    /**
   11.67 -     * Set an observer, which will be notified when nodes are checked or
   11.68 -     * unchecked.
   11.69 -     * @param observer
   11.70 -     */
   11.71 -    public final void setNodeCheckObserver (NodeCheckObserver observer) {
   11.72 -        this.observer = observer;
   11.73 -    }
   11.74 -
   11.75 -    @Override
   11.76 -    public void removeNotify() {
   11.77 -        super.removeNotify();
   11.78 -        if (checkboxesEnabled) {
   11.79 -            disableCheckboxes();
   11.80 -        }
   11.81 -    }
   11.82 -
   11.83 -    public synchronized final void setCheckboxesVisible(boolean val) {
   11.84 -        if (val != checkboxesEnabled) {
   11.85 -            checkboxesEnabled = val;
   11.86 -            if (isDisplayable()) {
   11.87 -                if (val) {
   11.88 -                    enableCheckboxes();
   11.89 -                } else {
   11.90 -                    disableCheckboxes();
   11.91 -                }
   11.92 -            }
   11.93 -        }
   11.94 -    }
   11.95 -
   11.96 -    private void enableCheckboxes() {
   11.97 -        list.addMouseListener(ml);
   11.98 -        list.addKeyListener(ml);
   11.99 -        list.setCellRenderer(new CheckboxCellRenderer());
  11.100 -        repaint();
  11.101 -    }
  11.102 -
  11.103 -    private void disableCheckboxes() {
  11.104 -        list.removeMouseListener(ml);
  11.105 -        list.removeKeyListener(ml);
  11.106 -        list.setCellRenderer(new NodeRenderer());
  11.107 -        repaint();
  11.108 -    }
  11.109 -
  11.110 -    public void setCheckedNodes(Iterable<Node> nodes) {
  11.111 -        clearCheckedNodes();
  11.112 -        for (Node n : nodes) {
  11.113 -            n.setValue(SELECTED, Boolean.TRUE);
  11.114 -        }
  11.115 -        repaint();
  11.116 -    }
  11.117 -
  11.118 -    public void clearCheckedNodes() {
  11.119 -        for (Node n : allNodes()) {
  11.120 -            boolean val = Boolean.TRUE.equals(n.getValue(SELECTED));
  11.121 -            if (observer != null) {
  11.122 -                observer.onNodeUnchecked(n);
  11.123 -            }
  11.124 -            n.setValue(SELECTED, Boolean.FALSE);
  11.125 -        }
  11.126 -        repaint();
  11.127 -    }
  11.128 -
  11.129 -    private void selectNode(int index) {
  11.130 -        if (!enabled) {
  11.131 -            return;
  11.132 -        }
  11.133 -        if (index < 0) {
  11.134 -            return;
  11.135 -        }
  11.136 -        ExplorerManager.Provider prov = (Provider) SwingUtilities.getAncestorOfClass(ExplorerManager.Provider.class, this);
  11.137 -        if (prov != null) {
  11.138 -            Node[] n = prov.getExplorerManager().getRootContext().getChildren().getNodes();
  11.139 -            if (index < n.length) {
  11.140 -                Boolean val = (Boolean) n[index].getValue(SELECTED);
  11.141 -                boolean wasSet = val != null && val.booleanValue();
  11.142 -                n[index].setValue(SELECTED, !wasSet);
  11.143 -                if (observer != null) {
  11.144 -                    if (!wasSet) {
  11.145 -                        observer.onNodeChecked(n[index]);
  11.146 -                    } else {
  11.147 -                        observer.onNodeUnchecked(n[index]);
  11.148 -                    }
  11.149 -                }
  11.150 -                repaint();
  11.151 -            }
  11.152 -        }
  11.153 -    }
  11.154 -
  11.155 -    private Node[] allNodes() {
  11.156 -        ExplorerManager.Provider prov = (Provider)
  11.157 -                SwingUtilities.getAncestorOfClass(ExplorerManager.Provider.class, this);
  11.158 -        return  prov ==  null ? new Node[0] :
  11.159 -            prov.getExplorerManager().getRootContext().getChildren().getNodes();
  11.160 -    }
  11.161 -
  11.162 -    private boolean isChecked(int index) {
  11.163 -        if (index < 0) {
  11.164 -            return false;
  11.165 -        }
  11.166 -        Node[] n = allNodes();
  11.167 -        return index > n.length - 1 ? false :
  11.168 -            Boolean.TRUE.equals(n[index].getValue(SELECTED));
  11.169 -    }
  11.170 -
  11.171 -    private class EventHandler extends KeyAdapter implements MouseListener {
  11.172 -
  11.173 -        @Override
  11.174 -        public void mouseClicked(MouseEvent e) {
  11.175 -            if (e.getClickCount() == 2) {
  11.176 -                selectNode(findIndex(e));
  11.177 -                e.consume();
  11.178 -            }
  11.179 -        }
  11.180 -
  11.181 -        private int findIndex(MouseEvent e) {
  11.182 -            JList jl = (JList) e.getSource();
  11.183 -            int result = jl.locationToIndex(e.getPoint());
  11.184 -            return result;
  11.185 -        }
  11.186 -        int pressIndex = -1;
  11.187 -
  11.188 -        @Override
  11.189 -        public void mousePressed(MouseEvent e) {
  11.190 -            pressIndex = findIndex(e);
  11.191 -        }
  11.192 -
  11.193 -        @Override
  11.194 -        public void mouseReleased(MouseEvent e) {
  11.195 -            int ix = findIndex(e);
  11.196 -            if (pressIndex == ix) {
  11.197 -                if (e.getX() <= 24) {
  11.198 -                    selectNode(ix);
  11.199 -                    e.consume();
  11.200 -                }
  11.201 -            }
  11.202 -            pressIndex = -1;
  11.203 -        }
  11.204 -
  11.205 -        @Override
  11.206 -        public void mouseEntered(MouseEvent e) {
  11.207 -            //do nothing
  11.208 -        }
  11.209 -
  11.210 -        @Override
  11.211 -        public void mouseExited(MouseEvent e) {
  11.212 -            //do nothing
  11.213 -        }
  11.214 -
  11.215 -        @Override
  11.216 -        public void keyTyped(KeyEvent e) {
  11.217 -            JList jl = (JList) e.getSource();
  11.218 -            if (e.getKeyChar() == '\n' && e.getModifiers() == 0) {
  11.219 -                selectNode(jl.getSelectedIndex());
  11.220 -                e.consume();
  11.221 -            }
  11.222 -        }
  11.223 -    }
  11.224 -
  11.225 -    private final class CheckboxCellRenderer extends NodeRenderer {
  11.226 -
  11.227 -        final WrapperComponent rr = new WrapperComponent();
  11.228 -
  11.229 -        @Override
  11.230 -        public Component getListCellRendererComponent(JList list, Object value, int index, boolean sel, boolean cellHasFocus) {
  11.231 -            cellHasFocus = false;
  11.232 -            Component c = super.getListCellRendererComponent(list, value, index, sel, cellHasFocus);
  11.233 -            Renderer r = (Renderer) c;
  11.234 -            r.setIndent(20);
  11.235 -            rr.setSelected(isChecked(index));
  11.236 -            rr.setToPaint(c);
  11.237 -            rr.setEnabled (enabled);
  11.238 -            c.setEnabled (enabled);
  11.239 -            return rr;
  11.240 -        }
  11.241 -    }
  11.242 -
  11.243 -    private static class WrapperComponent extends JComponent {
  11.244 -
  11.245 -        Component toPaint;
  11.246 -        private final JCheckBox box = new JCheckBox();
  11.247 -
  11.248 -        WrapperComponent() {
  11.249 -            add(box);
  11.250 -            box.setBorder(BorderFactory.createEmptyBorder());
  11.251 -        }
  11.252 -
  11.253 -        void setToPaint(Component toPaint) {
  11.254 -            if (this.toPaint != toPaint) {
  11.255 -                if (this.toPaint != null) {
  11.256 -                    remove(this.toPaint);
  11.257 -                }
  11.258 -                this.toPaint = toPaint;
  11.259 -                box.setBackground(toPaint.getBackground());
  11.260 -                add(toPaint);
  11.261 -            }
  11.262 -            doLayout();
  11.263 -        }
  11.264 -
  11.265 -        @Override
  11.266 -        public Dimension getPreferredSize() {
  11.267 -            Dimension a = box.getPreferredSize();
  11.268 -            Dimension b = toPaint == null ? new Dimension(0, 0) : toPaint.getPreferredSize();
  11.269 -            return new Dimension(a.width + b.width, Math.max(22, Math.max(a.height, b.height) + 1));
  11.270 -        }
  11.271 -
  11.272 -        @Override
  11.273 -        public void doLayout() {
  11.274 -            Dimension a = box.getPreferredSize();
  11.275 -            Dimension size = getPreferredSize();
  11.276 -            Insets ins = getInsets();
  11.277 -            size.height -= ins.top + ins.bottom;
  11.278 -            int x = ins.left;
  11.279 -            int y = a.height == size.height ? ins.top : ins.top + ((size.height / 2) - (a.height / 2));
  11.280 -            box.setBounds(x, y, a.width, a.height);
  11.281 -            x += a.width;
  11.282 -            if (toPaint != null) {
  11.283 -                Dimension c = toPaint.getPreferredSize();
  11.284 -                toPaint.setBounds (x, 0, getWidth() - x, c.height);
  11.285 -            }
  11.286 -        }
  11.287 -
  11.288 -        @Override
  11.289 -        public void paint (Graphics g) {
  11.290 -            doLayout();
  11.291 -            box.paint (g);
  11.292 -            if (toPaint != null) {
  11.293 -                toPaint.paint (g);
  11.294 -            }
  11.295 -        }
  11.296 -
  11.297 -        /*
  11.298 -        @Override
  11.299 -        public void doLayout() {
  11.300 -            Dimension a = box.getPreferredSize();
  11.301 -            System.err.println("Box preferred size " + a);
  11.302 -            Dimension size = getPreferredSize();
  11.303 -            System.err.println("My Preferred Size " + size);
  11.304 -            Insets ins = getInsets();
  11.305 -            size.height -= ins.top + ins.bottom;
  11.306 -            int x = ins.left;
  11.307 -            int y = a.height == size.height ? ins.top : ins.top + ((size.height / 2) - (a.height / 2));
  11.308 -            box.setBounds(x, y, a.width, a.height);
  11.309 -            x += a.width;
  11.310 -            if (toPaint != null) {
  11.311 -                a = toPaint.getPreferredSize();
  11.312 -                System.err.println("toPaint preferred size " + a);
  11.313 -                a.height = Math.max(22, a.height);
  11.314 -                y = a.height == size.height ? ins.top : ins.top + ((size.height / 2) - (a.height / 2));
  11.315 -                toPaint.setBounds(x, y, a.width, a.height);
  11.316 -//                toPaint.setBounds (x, 0, getWidth() - x, getHeight());
  11.317 -            }
  11.318 -
  11.319 -            System.err.println("---------------------------------------");
  11.320 -            System.err.println("toPaint bounds " + toPaint.getBounds());
  11.321 -            System.err.println("toPaint text " + ((JLabel) toPaint).getText());
  11.322 -            System.err.println("toPaint fg " + toPaint.getForeground());
  11.323 -        }
  11.324 -         */
  11.325 -
  11.326 -        void setSelected(boolean val) {
  11.327 -            box.setSelected(val);
  11.328 -        }
  11.329 -/*
  11.330 -        @Override
  11.331 -        protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
  11.332 -            //do nothing
  11.333 -        }
  11.334 -
  11.335 -        @Override
  11.336 -        public void repaint(int x, int y, int w, int h) {
  11.337 -        }
  11.338 -
  11.339 -        @Override
  11.340 -        public void invalidate() {
  11.341 -        }
  11.342 -
  11.343 -        @Override
  11.344 -        public void revalidate() {
  11.345 -        }
  11.346 -
  11.347 -        @Override
  11.348 -        public void repaint() {
  11.349 -        }
  11.350 -
  11.351 -        @Override
  11.352 -        public void validate() {
  11.353 -        }
  11.354 - */
  11.355 -    }
  11.356 -}
    12.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/ChooseFileTypesPanel.form	Wed Sep 12 17:19:28 2012 +0200
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,117 +0,0 @@
    12.4 -<?xml version="1.0" encoding="UTF-8" ?>
    12.5 -
    12.6 -<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    12.7 -  <AuxValues>
    12.8 -    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
    12.9 -    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   12.10 -    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   12.11 -    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   12.12 -    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   12.13 -    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
   12.14 -    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   12.15 -    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   12.16 -    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   12.17 -  </AuxValues>
   12.18 -
   12.19 -  <Layout>
   12.20 -    <DimensionLayout dim="0">
   12.21 -      <Group type="103" groupAlignment="0" attributes="0">
   12.22 -          <Group type="102" attributes="0">
   12.23 -              <EmptySpace max="-2" attributes="0"/>
   12.24 -              <Group type="103" groupAlignment="0" attributes="0">
   12.25 -                  <Component id="jScrollPane1" alignment="0" pref="804" max="32767" attributes="0"/>
   12.26 -                  <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
   12.27 -                  <Group type="102" alignment="1" attributes="0">
   12.28 -                      <Component id="customizerPanel" pref="559" max="32767" attributes="0"/>
   12.29 -                      <EmptySpace type="separate" max="-2" attributes="0"/>
   12.30 -                      <Component id="lineEndingsPanel1" min="-2" pref="227" max="-2" attributes="0"/>
   12.31 -                  </Group>
   12.32 -              </Group>
   12.33 -              <EmptySpace max="-2" attributes="0"/>
   12.34 -          </Group>
   12.35 -      </Group>
   12.36 -    </DimensionLayout>
   12.37 -    <DimensionLayout dim="1">
   12.38 -      <Group type="103" groupAlignment="0" attributes="0">
   12.39 -          <Group type="102" alignment="0" attributes="0">
   12.40 -              <EmptySpace max="-2" attributes="0"/>
   12.41 -              <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
   12.42 -              <EmptySpace max="-2" attributes="0"/>
   12.43 -              <Component id="jScrollPane1" min="-2" pref="112" max="-2" attributes="0"/>
   12.44 -              <EmptySpace type="unrelated" max="-2" attributes="0"/>
   12.45 -              <Group type="103" groupAlignment="0" attributes="0">
   12.46 -                  <Component id="customizerPanel" pref="361" max="32767" attributes="0"/>
   12.47 -                  <Component id="lineEndingsPanel1" alignment="0" pref="361" max="32767" attributes="0"/>
   12.48 -              </Group>
   12.49 -              <EmptySpace max="-2" attributes="0"/>
   12.50 -          </Group>
   12.51 -      </Group>
   12.52 -    </DimensionLayout>
   12.53 -  </Layout>
   12.54 -  <SubComponents>
   12.55 -    <Component class="javax.swing.JLabel" name="jLabel1">
   12.56 -      <Properties>
   12.57 -        <Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
   12.58 -          <FontInfo relative="true">
   12.59 -            <Font bold="true" component="jLabel1" property="font" relativeSize="true" size="0"/>
   12.60 -          </FontInfo>
   12.61 -        </Property>
   12.62 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   12.63 -          <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="ChooseFileTypesPanel.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   12.64 -        </Property>
   12.65 -        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   12.66 -          <Border info="org.netbeans.modules.form.compat2.border.MatteColorBorderInfo">
   12.67 -            <MatteColorBorder bottom="1" left="0" right="0" top="0"/>
   12.68 -          </Border>
   12.69 -        </Property>
   12.70 -      </Properties>
   12.71 -    </Component>
   12.72 -    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
   12.73 -      <Properties>
   12.74 -        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   12.75 -          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
   12.76 -            <LineBorder>
   12.77 -              <Color PropertyName="color" blue="99" green="a8" id="controlShadow" palette="3" red="ac" type="palette"/>
   12.78 -            </LineBorder>
   12.79 -          </Border>
   12.80 -        </Property>
   12.81 -      </Properties>
   12.82 -      <AuxValues>
   12.83 -        <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new CheckboxListView()"/>
   12.84 -      </AuxValues>
   12.85 -
   12.86 -      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
   12.87 -    </Container>
   12.88 -    <Component class="org.netbeans.modules.licensechanger.LineEndingsPanel" name="lineEndingsPanel1">
   12.89 -    </Component>
   12.90 -    <Container class="javax.swing.JPanel" name="customizerPanel">
   12.91 -      <Properties>
   12.92 -        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   12.93 -          <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
   12.94 -            <TitledBorder title="File Type Settings">
   12.95 -              <ResourceString PropertyName="titleX" bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="ChooseFileTypesPanel.customizerPanel.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   12.96 -            </TitledBorder>
   12.97 -          </Border>
   12.98 -        </Property>
   12.99 -      </Properties>
  12.100 -
  12.101 -      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
  12.102 -      <SubComponents>
  12.103 -        <Component class="javax.swing.JLabel" name="noCustomizerLabel">
  12.104 -          <Properties>
  12.105 -            <Property name="horizontalAlignment" type="int" value="0"/>
  12.106 -            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  12.107 -              <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="ChooseFileTypesPanel.noCustomizerLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  12.108 -            </Property>
  12.109 -            <Property name="enabled" type="boolean" value="false"/>
  12.110 -          </Properties>
  12.111 -          <Constraints>
  12.112 -            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
  12.113 -              <BorderConstraints direction="Center"/>
  12.114 -            </Constraint>
  12.115 -          </Constraints>
  12.116 -        </Component>
  12.117 -      </SubComponents>
  12.118 -    </Container>
  12.119 -  </SubComponents>
  12.120 -</Form>
    13.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/ChooseFileTypesPanel.java	Wed Sep 12 17:19:28 2012 +0200
    13.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.3 @@ -1,216 +0,0 @@
    13.4 -/*
    13.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    13.6 - *
    13.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    13.8 - *
    13.9 - * The contents of this file are subject to the terms of either the GNU
   13.10 - * General Public License Version 2 only ("GPL") or the Common
   13.11 - * Development and Distribution License("CDDL") (collectively, the
   13.12 - * "License"). You may not use this file except in compliance with the
   13.13 - * License. You can obtain a copy of the License at
   13.14 - * http://www.netbeans.org/cddl-gplv2.html
   13.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   13.16 - * specific language governing permissions and limitations under the
   13.17 - * License.  When distributing the software, include this License Header
   13.18 - * Notice in each file and include the License file at
   13.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   13.20 - * particular file as subject to the "Classpath" exception as provided
   13.21 - * by Sun in the GPL Version 2 section of the License file that
   13.22 - * accompanied this code. If applicable, add the following below the
   13.23 - * License Header, with the fields enclosed by brackets [] replaced by
   13.24 - * your own identifying information:
   13.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   13.26 - *
   13.27 - * If you wish your version of this file to be governed by only the CDDL
   13.28 - * or only the GPL Version 2, indicate your decision by adding
   13.29 - * "[Contributor] elects to include this software in this distribution
   13.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   13.31 - * single choice of license, a recipient has the option to distribute
   13.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   13.33 - * to extend the choice of license to its licensees as provided above.
   13.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   13.35 - * Version 2 license, then the option applies only if the new code is
   13.36 - * made subject to such option by the copyright holder.
   13.37 - *
   13.38 - * Contributor(s):
   13.39 - *
   13.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   13.41 - */
   13.42 -
   13.43 -/*
   13.44 - * NewJPanel.java
   13.45 - *
   13.46 - * Created on Mar 20, 2009, 1:14:43 AM
   13.47 - */
   13.48 -
   13.49 -package org.netbeans.modules.licensechanger;
   13.50 -
   13.51 -import java.beans.PropertyChangeEvent;
   13.52 -import java.beans.PropertyChangeListener;
   13.53 -import java.util.HashSet;
   13.54 -import java.util.List;
   13.55 -import java.util.Map;
   13.56 -import java.util.Set;
   13.57 -import org.netbeans.modules.licensechanger.api.Customizable;
   13.58 -import org.netbeans.modules.licensechanger.api.FileHandler;
   13.59 -import org.openide.explorer.ExplorerManager;
   13.60 -import org.openide.nodes.AbstractNode;
   13.61 -import org.openide.nodes.ChildFactory;
   13.62 -import org.openide.nodes.Children;
   13.63 -import org.openide.nodes.Node;
   13.64 -import org.openide.util.Lookup;
   13.65 -import org.openide.util.lookup.Lookups;
   13.66 -
   13.67 -/**
   13.68 - *
   13.69 - * @author Tim Boudreau
   13.70 - */
   13.71 -public class ChooseFileTypesPanel extends javax.swing.JPanel implements ExplorerManager.Provider, PropertyChangeListener, NodeCheckObserver {
   13.72 -    private final ExplorerManager mgr = new ExplorerManager();
   13.73 -
   13.74 -    public static final String KEY_FILE_HANDLERS = "fileHandlers";
   13.75 -    private Map<Object, Object> settings;
   13.76 -    public ChooseFileTypesPanel(Map<Object, Object> settings) {
   13.77 -        initComponents();
   13.78 -        mgr.setRootContext(new AbstractNode (Children.create(new FileHandlerChildren(), false)));
   13.79 -        settings.put(KEY_FILE_HANDLERS, Lookup.getDefault().lookupAll(FileHandler.class));
   13.80 -        this.settings = settings;
   13.81 -        ((CheckboxListView) jScrollPane1).setNodeCheckObserver(this);
   13.82 -        ((CheckboxListView) jScrollPane1).setListEnabled(true);
   13.83 -        ((CheckboxListView) jScrollPane1).setCheckboxesEnabled(true);
   13.84 -        ((CheckboxListView) jScrollPane1).setCheckboxesVisible(true);
   13.85 -        mgr.addPropertyChangeListener(this);
   13.86 -    }
   13.87 -
   13.88 -    private void updateMap() {
   13.89 -        Set<FileHandler> handlers = new HashSet<FileHandler>();
   13.90 -        for (Node n : mgr.getRootContext().getChildren().getNodes(true)) {
   13.91 -            if (Boolean.TRUE.equals(n.getValue(CheckboxListView.SELECTED))) {
   13.92 -                handlers.addAll (n.getLookup().lookupAll(FileHandler.class));
   13.93 -            }
   13.94 -        }
   13.95 -        settings.put(KEY_FILE_HANDLERS, handlers);
   13.96 -    }
   13.97 -
   13.98 -    /** This method is called from within the constructor to
   13.99 -     * initialize the form.
  13.100 -     * WARNING: Do NOT modify this code. The content of this method is
  13.101 -     * always regenerated by the Form Editor.
  13.102 -     */
  13.103 -    @SuppressWarnings("unchecked")
  13.104 -    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  13.105 -    private void initComponents() {
  13.106 -
  13.107 -        jLabel1 = new javax.swing.JLabel();
  13.108 -        jScrollPane1 = new CheckboxListView();
  13.109 -        lineEndingsPanel1 = new org.netbeans.modules.licensechanger.LineEndingsPanel();
  13.110 -        customizerPanel = new javax.swing.JPanel();
  13.111 -        noCustomizerLabel = new javax.swing.JLabel();
  13.112 -
  13.113 -        jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() | java.awt.Font.BOLD));
  13.114 -        jLabel1.setText(org.openide.util.NbBundle.getMessage(ChooseFileTypesPanel.class, "ChooseFileTypesPanel.jLabel1.text")); // NOI18N
  13.115 -        jLabel1.setBorder(javax.swing.BorderFactory.createMatteBorder(0, 0, 1, 0, new java.awt.Color(0, 0, 0)));
  13.116 -
  13.117 -        jScrollPane1.setBorder(javax.swing.BorderFactory.createLineBorder(javax.swing.UIManager.getDefaults().getColor("controlShadow")));
  13.118 -
  13.119 -        customizerPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ChooseFileTypesPanel.class, "ChooseFileTypesPanel.customizerPanel.border.title"))); // NOI18N
  13.120 -        customizerPanel.setLayout(new java.awt.BorderLayout());
  13.121 -
  13.122 -        noCustomizerLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  13.123 -        noCustomizerLabel.setText(org.openide.util.NbBundle.getMessage(ChooseFileTypesPanel.class, "ChooseFileTypesPanel.noCustomizerLabel.text")); // NOI18N
  13.124 -        noCustomizerLabel.setEnabled(false);
  13.125 -        customizerPanel.add(noCustomizerLabel, java.awt.BorderLayout.CENTER);
  13.126 -
  13.127 -        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
  13.128 -        this.setLayout(layout);
  13.129 -        layout.setHorizontalGroup(
  13.130 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  13.131 -            .add(layout.createSequentialGroup()
  13.132 -                .addContainerGap()
  13.133 -                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  13.134 -                    .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 804, Short.MAX_VALUE)
  13.135 -                    .add(jLabel1)
  13.136 -                    .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
  13.137 -                        .add(customizerPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 559, Short.MAX_VALUE)
  13.138 -                        .add(18, 18, 18)
  13.139 -                        .add(lineEndingsPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 227, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
  13.140 -                .addContainerGap())
  13.141 -        );
  13.142 -        layout.setVerticalGroup(
  13.143 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  13.144 -            .add(layout.createSequentialGroup()
  13.145 -                .addContainerGap()
  13.146 -                .add(jLabel1)
  13.147 -                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
  13.148 -                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 112, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
  13.149 -                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
  13.150 -                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  13.151 -                    .add(customizerPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 361, Short.MAX_VALUE)
  13.152 -                    .add(lineEndingsPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 361, Short.MAX_VALUE))
  13.153 -                .addContainerGap())
  13.154 -        );
  13.155 -    }// </editor-fold>//GEN-END:initComponents
  13.156 -
  13.157 -
  13.158 -    // Variables declaration - do not modify//GEN-BEGIN:variables
  13.159 -    private javax.swing.JPanel customizerPanel;
  13.160 -    private javax.swing.JLabel jLabel1;
  13.161 -    private javax.swing.JScrollPane jScrollPane1;
  13.162 -    private org.netbeans.modules.licensechanger.LineEndingsPanel lineEndingsPanel1;
  13.163 -    private javax.swing.JLabel noCustomizerLabel;
  13.164 -    // End of variables declaration//GEN-END:variables
  13.165 -
  13.166 -    public ExplorerManager getExplorerManager() {
  13.167 -        return mgr;
  13.168 -    }
  13.169 -
  13.170 -    public Set<FileHandler> getFileHandlers() {
  13.171 -        Set <FileHandler> result = new HashSet<FileHandler>();
  13.172 -        for (Node n : mgr.getRootContext().getChildren().getNodes(true)) {
  13.173 -            if (Boolean.TRUE.equals(n.getValue(CheckboxListView.SELECTED))) {
  13.174 -                result.addAll (n.getLookup().lookupAll(FileHandler.class));
  13.175 -            }
  13.176 -        }
  13.177 -        return result;
  13.178 -    }
  13.179 -
  13.180 -    public void propertyChange(PropertyChangeEvent evt) {
  13.181 -        if (ExplorerManager.PROP_SELECTED_NODES.equals(evt.getPropertyName())) {
  13.182 -            Node[] n = mgr.getSelectedNodes();
  13.183 -            updateCustomizer (n.length == 1 ? n[0].getLookup().lookup(Customizable.class) : null);
  13.184 -        }
  13.185 -    }
  13.186 -
  13.187 -    public void onNodeChecked(Node node) {
  13.188 -        updateMap();
  13.189 -    }
  13.190 -
  13.191 -    public void onNodeUnchecked(Node node) {
  13.192 -        updateMap();
  13.193 -    }
  13.194 -
  13.195 -    private static final class FileHandlerChildren extends ChildFactory<FileHandler> {
  13.196 -        @Override
  13.197 -        protected boolean createKeys(List<FileHandler> toPopulate) {
  13.198 -            toPopulate.addAll (Lookup.getDefault().lookupAll(FileHandler.class));
  13.199 -            return true;
  13.200 -        }
  13.201 -
  13.202 -        @Override
  13.203 -        protected Node createNodeForKey(FileHandler key) {
  13.204 -            AbstractNode result = new AbstractNode (Children.LEAF, Lookups.singleton(key));
  13.205 -            result.setDisplayName(key.getDisplayName());
  13.206 -            result.setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  13.207 -            return result;
  13.208 -        }
  13.209 -    }
  13.210 -
  13.211 -    private void updateCustomizer(Customizable c) {
  13.212 -        customizerPanel.removeAll();
  13.213 -        customizerPanel.add (c == null ? noCustomizerLabel : c.getCustomizer());
  13.214 -        invalidate();
  13.215 -        revalidate();
  13.216 -        repaint();
  13.217 -    }
  13.218 -
  13.219 -}
    14.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/FileChildren.java	Wed Sep 12 17:19:28 2012 +0200
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,157 +0,0 @@
    14.4 -/*
    14.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    14.6 - *
    14.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    14.8 - *
    14.9 - * The contents of this file are subject to the terms of either the GNU
   14.10 - * General Public License Version 2 only ("GPL") or the Common
   14.11 - * Development and Distribution License("CDDL") (collectively, the
   14.12 - * "License"). You may not use this file except in compliance with the
   14.13 - * License. You can obtain a copy of the License at
   14.14 - * http://www.netbeans.org/cddl-gplv2.html
   14.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   14.16 - * specific language governing permissions and limitations under the
   14.17 - * License.  When distributing the software, include this License Header
   14.18 - * Notice in each file and include the License file at
   14.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   14.20 - * particular file as subject to the "Classpath" exception as provided
   14.21 - * by Sun in the GPL Version 2 section of the License file that
   14.22 - * accompanied this code. If applicable, add the following below the
   14.23 - * License Header, with the fields enclosed by brackets [] replaced by
   14.24 - * your own identifying information:
   14.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   14.26 - *
   14.27 - * If you wish your version of this file to be governed by only the CDDL
   14.28 - * or only the GPL Version 2, indicate your decision by adding
   14.29 - * "[Contributor] elects to include this software in this distribution
   14.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   14.31 - * single choice of license, a recipient has the option to distribute
   14.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   14.33 - * to extend the choice of license to its licensees as provided above.
   14.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   14.35 - * Version 2 license, then the option applies only if the new code is
   14.36 - * made subject to such option by the copyright holder.
   14.37 - *
   14.38 - * Contributor(s):
   14.39 - *
   14.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   14.41 - */
   14.42 -package org.netbeans.modules.licensechanger;
   14.43 -
   14.44 -import java.util.Collection;
   14.45 -import java.util.Collections;
   14.46 -import java.util.HashSet;
   14.47 -import java.util.LinkedList;
   14.48 -import java.util.List;
   14.49 -import java.util.Map;
   14.50 -import java.util.Set;
   14.51 -import javax.swing.Action;
   14.52 -import org.netbeans.modules.licensechanger.api.FileHandler;
   14.53 -import org.openide.filesystems.FileObject;
   14.54 -import org.openide.loaders.DataObject;
   14.55 -import org.openide.loaders.DataObjectNotFoundException;
   14.56 -import org.openide.nodes.ChildFactory;
   14.57 -import org.openide.nodes.FilterNode;
   14.58 -import org.openide.nodes.Node;
   14.59 -import org.openide.util.Exceptions;
   14.60 -import org.openide.util.Lookup;
   14.61 -import org.openide.util.lookup.Lookups;
   14.62 -import org.openide.util.lookup.ProxyLookup;
   14.63 -
   14.64 -/**
   14.65 - *
   14.66 - * @author Tim Boudreau
   14.67 - */
   14.68 -public class FileChildren extends ChildFactory.Detachable<FileObject> {
   14.69 -
   14.70 -    private final Set<FileObject> folders;
   14.71 -    private final Collection<? extends FileHandler> allHandlers;
   14.72 -    private final Map<Object, Object> settings;
   14.73 -    private final Set<FileItem> items = Collections.synchronizedSet(new HashSet<FileItem>());
   14.74 -
   14.75 -    FileChildren(Set<FileObject> folders, Map<Object, Object> settings) {
   14.76 -        assert folders != null;
   14.77 -        assert settings != null;
   14.78 -        this.settings = settings;
   14.79 -        this.folders = new HashSet<FileObject>(folders);
   14.80 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   14.81 -        settings.put(PreviewPanel.KEY_ITEMS, items);
   14.82 -    }
   14.83 -
   14.84 -    @Override
   14.85 -    protected boolean createKeys(List<FileObject> toPopulate) {
   14.86 -        toPopulate.addAll(folders);
   14.87 -        return true;
   14.88 -    }
   14.89 -
   14.90 -    @Override
   14.91 -    protected Node[] createNodesForKey(FileObject key) {
   14.92 -        List<Node> result = new LinkedList<Node>();
   14.93 -        for (FileObject fo : key.getChildren()) {
   14.94 -            if (fo.isData()) {
   14.95 -                for (FileHandler h : allHandlers) {
   14.96 -                    if (h.match(fo)) {
   14.97 -                        try {
   14.98 -                            DataObject dob = DataObject.find(fo);
   14.99 -                            FileItem item = new FileItem(h, fo);
  14.100 -                            items.add(item);
  14.101 -                            FN fn = new FN (dob.getNodeDelegate(), item);
  14.102 -                            boolean shouldChange =  !h.shouldSkipFile(fo);
  14.103 -                            result.add(fn);
  14.104 -                            fn.setValue (CheckboxListView.SELECTED, shouldChange);
  14.105 -                            break;
  14.106 -                        } catch (DataObjectNotFoundException ex) {
  14.107 -                            Exceptions.printStackTrace(ex);
  14.108 -                        }
  14.109 -                    }
  14.110 -                }
  14.111 -            }
  14.112 -        }
  14.113 -        return result.toArray(new Node[result.size()]);
  14.114 -    }
  14.115 -
  14.116 -    static final class FileItem {
  14.117 -
  14.118 -        FileHandler handler;
  14.119 -        FileObject file;
  14.120 -
  14.121 -        public FileItem(FileHandler handler, FileObject file) {
  14.122 -            this.handler = handler;
  14.123 -            this.file = file;
  14.124 -        }
  14.125 -
  14.126 -        public FileObject getFile() {
  14.127 -            return file;
  14.128 -        }
  14.129 -
  14.130 -        public FileHandler getHandler() {
  14.131 -            return handler;
  14.132 -        }
  14.133 -    }
  14.134 -
  14.135 -    private static final class FN extends FilterNode {
  14.136 -
  14.137 -        FN(Node orig, FileItem item) {
  14.138 -            super(orig, Children.LEAF, new ProxyLookup(
  14.139 -                    Lookups.singleton(item),
  14.140 -                    orig.getLookup()));
  14.141 -            disableDelegation(DELEGATE_GET_ACTIONS);
  14.142 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  14.143 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  14.144 -            disableDelegation(DELEGATE_GET_DISPLAY_NAME);
  14.145 -            disableDelegation(DELEGATE_GET_VALUE);
  14.146 -            disableDelegation(DELEGATE_SET_VALUE);
  14.147 -            disableDelegation(DELEGATE_SET_NAME);
  14.148 -            disableDelegation(DELEGATE_GET_NAME);
  14.149 -            setValue(CheckboxListView.SELECTED, Boolean.TRUE);
  14.150 -            setName(item.file.getPath());
  14.151 -            setDisplayName(item.file.getPath());
  14.152 -            setShortDescription(item.file.getPath());
  14.153 -        }
  14.154 -
  14.155 -        @Override
  14.156 -        public Action[] getActions(boolean ignored) {
  14.157 -            return new Action[0];
  14.158 -        }
  14.159 -    }
  14.160 -}
    15.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/FolderChildren.java	Wed Sep 12 17:19:28 2012 +0200
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,175 +0,0 @@
    15.4 -/*
    15.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    15.6 - *
    15.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    15.8 - *
    15.9 - * The contents of this file are subject to the terms of either the GNU
   15.10 - * General Public License Version 2 only ("GPL") or the Common
   15.11 - * Development and Distribution License("CDDL") (collectively, the
   15.12 - * "License"). You may not use this file except in compliance with the
   15.13 - * License. You can obtain a copy of the License at
   15.14 - * http://www.netbeans.org/cddl-gplv2.html
   15.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   15.16 - * specific language governing permissions and limitations under the
   15.17 - * License.  When distributing the software, include this License Header
   15.18 - * Notice in each file and include the License file at
   15.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   15.20 - * particular file as subject to the "Classpath" exception as provided
   15.21 - * by Sun in the GPL Version 2 section of the License file that
   15.22 - * accompanied this code. If applicable, add the following below the
   15.23 - * License Header, with the fields enclosed by brackets [] replaced by
   15.24 - * your own identifying information:
   15.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   15.26 - *
   15.27 - * If you wish your version of this file to be governed by only the CDDL
   15.28 - * or only the GPL Version 2, indicate your decision by adding
   15.29 - * "[Contributor] elects to include this software in this distribution
   15.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   15.31 - * single choice of license, a recipient has the option to distribute
   15.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   15.33 - * to extend the choice of license to its licensees as provided above.
   15.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   15.35 - * Version 2 license, then the option applies only if the new code is
   15.36 - * made subject to such option by the copyright holder.
   15.37 - *
   15.38 - * Contributor(s):
   15.39 - *
   15.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   15.41 - */
   15.42 -
   15.43 -package org.netbeans.modules.licensechanger;
   15.44 -
   15.45 -import java.awt.EventQueue;
   15.46 -import java.util.List;
   15.47 -import javax.swing.Action;
   15.48 -import org.openide.filesystems.FileObject;
   15.49 -import org.openide.filesystems.FileUtil;
   15.50 -import org.openide.loaders.DataObject;
   15.51 -import org.openide.loaders.DataObjectNotFoundException;
   15.52 -import org.openide.nodes.AbstractNode;
   15.53 -import org.openide.nodes.ChildFactory;
   15.54 -import org.openide.nodes.Children;
   15.55 -import org.openide.nodes.FilterNode;
   15.56 -import org.openide.nodes.Node;
   15.57 -import org.openide.util.Exceptions;
   15.58 -import org.openide.util.NbBundle;
   15.59 -import org.openide.util.NbCollections;
   15.60 -import org.openide.util.lookup.Lookups;
   15.61 -import org.openide.util.lookup.ProxyLookup;
   15.62 -
   15.63 -/**
   15.64 - *
   15.65 - * @author Tim Boudreau
   15.66 - */
   15.67 -abstract class FolderChildren extends ChildFactory.Detachable<FileObject> implements Runnable {
   15.68 -    private FileObject[] roots;
   15.69 -    volatile int keyCount = 0;
   15.70 -    private int nodeCount = 0;
   15.71 -    private volatile boolean cancelled = false;
   15.72 -
   15.73 -    FolderChildren (FileObject[] roots) {
   15.74 -        this.roots = roots;
   15.75 -    }
   15.76 -
   15.77 -    @Override
   15.78 -    protected Node createWaitNode() {
   15.79 -        AbstractNode result = new AbstractNode(Children.LEAF);
   15.80 -        result.setDisplayName(NbBundle.getMessage(FolderChildren.class, "MSG_WAIT_FOLDERS"));
   15.81 -        return result;
   15.82 -    }
   15.83 -
   15.84 -    @Override
   15.85 -    public void addNotify() {
   15.86 -        cancelled = false;
   15.87 -        super.addNotify();
   15.88 -        keyCount = 0;
   15.89 -        nodeCount = 0;
   15.90 -    }
   15.91 -
   15.92 -    @Override
   15.93 -    protected void removeNotify() {
   15.94 -        super.removeNotify();
   15.95 -        cancelled = true;
   15.96 -    }
   15.97 -
   15.98 -    private boolean shouldSkipFolder (FileObject folder) {
   15.99 -        // XXX use VisibilityQuery instead
  15.100 -        String path = folder.getPath();
  15.101 -        return path.contains(".svn") || path.contains(".cvs") || path.contains(".hg") ||
  15.102 -                path.endsWith(".svn") || path.endsWith(".cvs") || path.endsWith(".hg");
  15.103 -    }
  15.104 -
  15.105 -    @Override
  15.106 -    protected boolean createKeys(List<FileObject> toPopulate) {
  15.107 -        for (FileObject f : roots) {
  15.108 -            toPopulate.add(f);
  15.109 -            keyCount++;
  15.110 -            for (FileObject fo : NbCollections.iterable(f.getChildren(true))) {
  15.111 -                if (fo.isFolder()) {
  15.112 -                    if (shouldSkipFolder(fo)) {
  15.113 -                        continue;
  15.114 -                    }
  15.115 -                    toPopulate.add(fo);
  15.116 -                    keyCount++;
  15.117 -                }
  15.118 -                if (cancelled) {
  15.119 -                    return true;
  15.120 -                }
  15.121 -            }
  15.122 -            if (cancelled) {
  15.123 -                return true;
  15.124 -            }
  15.125 -        }
  15.126 -        return true;
  15.127 -    }
  15.128 -
  15.129 -    @Override
  15.130 -    protected Node createNodeForKey(FileObject f) {
  15.131 -        try {
  15.132 -            Node n = DataObject.find(f).getNodeDelegate();
  15.133 -            nodeCount++;
  15.134 -            if (nodeCount == keyCount) {
  15.135 -                EventQueue.invokeLater(this);
  15.136 -            }
  15.137 -            return new FN(n, f);
  15.138 -        } catch (DataObjectNotFoundException ex) {
  15.139 -            Exceptions.printStackTrace(ex);
  15.140 -            return null;
  15.141 -        }
  15.142 -    }
  15.143 -
  15.144 -    public abstract void onAllNodesCreated();
  15.145 -
  15.146 -    public void run() {
  15.147 -        onAllNodesCreated();
  15.148 -    }
  15.149 -
  15.150 -    private static final class FN extends FilterNode {
  15.151 -        FN(Node orig, FileObject f) {
  15.152 -            super (orig, Children.LEAF, new ProxyLookup(
  15.153 -                    Lookups.singleton(f),
  15.154 -                    orig.getLookup()));
  15.155 -            disableDelegation(DELEGATE_GET_ACTIONS);
  15.156 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  15.157 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  15.158 -            disableDelegation(DELEGATE_GET_DISPLAY_NAME);
  15.159 -            disableDelegation(DELEGATE_GET_VALUE);
  15.160 -            disableDelegation(DELEGATE_SET_VALUE);
  15.161 -            disableDelegation(DELEGATE_SET_NAME);
  15.162 -            disableDelegation(DELEGATE_GET_NAME);
  15.163 -            String p = f.getPath();
  15.164 -            // XXX this is a pretty arbitrary list... maybe check SharabilityQuery?
  15.165 -            if (!p.endsWith("nbproject") &&
  15.166 -                !p.endsWith("nbproject/private")) { //NOI18N
  15.167 -                setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  15.168 -            }
  15.169 -            setName(p);
  15.170 -            setDisplayName(FileUtil.getFileDisplayName(f));
  15.171 -        }
  15.172 -
  15.173 -        @Override
  15.174 -        public Action[] getActions(boolean ignored) {
  15.175 -            return new Action[0];
  15.176 -        }
  15.177 -    }
  15.178 -}
    16.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/LicenseChooserPanel.form	Wed Sep 12 17:19:28 2012 +0200
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,101 +0,0 @@
    16.4 -<?xml version="1.0" encoding="UTF-8" ?>
    16.5 -
    16.6 -<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    16.7 -  <AuxValues>
    16.8 -    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
    16.9 -    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   16.10 -    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   16.11 -    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   16.12 -    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   16.13 -    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
   16.14 -    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   16.15 -    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   16.16 -    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   16.17 -  </AuxValues>
   16.18 -
   16.19 -  <Layout>
   16.20 -    <DimensionLayout dim="0">
   16.21 -      <Group type="103" groupAlignment="0" attributes="0">
   16.22 -          <Group type="102" attributes="0">
   16.23 -              <EmptySpace max="-2" attributes="0"/>
   16.24 -              <Group type="103" groupAlignment="0" attributes="0">
   16.25 -                  <Component id="jScrollPane1" alignment="0" pref="380" max="32767" attributes="0"/>
   16.26 -                  <Group type="102" alignment="0" attributes="0">
   16.27 -                      <Component id="chooseLabel" min="-2" max="-2" attributes="0"/>
   16.28 -                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
   16.29 -                      <Component id="selectLicense" pref="296" max="32767" attributes="0"/>
   16.30 -                  </Group>
   16.31 -                  <Component id="browseButton" alignment="1" min="-2" max="-2" attributes="0"/>
   16.32 -              </Group>
   16.33 -              <EmptySpace max="-2" attributes="0"/>
   16.34 -          </Group>
   16.35 -      </Group>
   16.36 -    </DimensionLayout>
   16.37 -    <DimensionLayout dim="1">
   16.38 -      <Group type="103" groupAlignment="0" attributes="0">
   16.39 -          <Group type="102" alignment="0" attributes="0">
   16.40 -              <EmptySpace max="-2" attributes="0"/>
   16.41 -              <Group type="103" groupAlignment="3" attributes="0">
   16.42 -                  <Component id="chooseLabel" alignment="3" min="-2" max="-2" attributes="0"/>
   16.43 -                  <Component id="selectLicense" alignment="3" min="-2" max="-2" attributes="0"/>
   16.44 -              </Group>
   16.45 -              <EmptySpace type="separate" max="-2" attributes="0"/>
   16.46 -              <Component id="jScrollPane1" min="-2" pref="188" max="-2" attributes="0"/>
   16.47 -              <EmptySpace type="unrelated" max="-2" attributes="0"/>
   16.48 -              <Component id="browseButton" min="-2" max="-2" attributes="0"/>
   16.49 -              <EmptySpace max="32767" attributes="0"/>
   16.50 -          </Group>
   16.51 -      </Group>
   16.52 -    </DimensionLayout>
   16.53 -  </Layout>
   16.54 -  <SubComponents>
   16.55 -    <Component class="javax.swing.JLabel" name="chooseLabel">
   16.56 -      <Properties>
   16.57 -        <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
   16.58 -          <ComponentRef name="selectLicense"/>
   16.59 -        </Property>
   16.60 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   16.61 -          <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="LicenseChooserPanel.chooseLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   16.62 -        </Property>
   16.63 -      </Properties>
   16.64 -    </Component>
   16.65 -    <Component class="javax.swing.JComboBox" name="selectLicense">
   16.66 -      <Properties>
   16.67 -        <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
   16.68 -          <StringArray count="1">
   16.69 -            <StringItem index="0" value="[loading licenses]"/>
   16.70 -          </StringArray>
   16.71 -        </Property>
   16.72 -      </Properties>
   16.73 -      <Events>
   16.74 -        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="licenseSelected"/>
   16.75 -      </Events>
   16.76 -    </Component>
   16.77 -    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
   16.78 -      <AuxValues>
   16.79 -        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
   16.80 -      </AuxValues>
   16.81 -
   16.82 -      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
   16.83 -      <SubComponents>
   16.84 -        <Component class="javax.swing.JTextArea" name="licenseText">
   16.85 -          <Properties>
   16.86 -            <Property name="columns" type="int" value="20"/>
   16.87 -            <Property name="rows" type="int" value="5"/>
   16.88 -            <Property name="name" type="java.lang.String" value="licenseText" noResource="true"/>
   16.89 -          </Properties>
   16.90 -        </Component>
   16.91 -      </SubComponents>
   16.92 -    </Container>
   16.93 -    <Component class="javax.swing.JButton" name="browseButton">
   16.94 -      <Properties>
   16.95 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   16.96 -          <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="LicenseChooserPanel.browseButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   16.97 -        </Property>
   16.98 -      </Properties>
   16.99 -      <Events>
  16.100 -        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="browseForLicense"/>
  16.101 -      </Events>
  16.102 -    </Component>
  16.103 -  </SubComponents>
  16.104 -</Form>
    17.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/LicenseChooserPanel.java	Wed Sep 12 17:19:28 2012 +0200
    17.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.3 @@ -1,340 +0,0 @@
    17.4 -/*
    17.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    17.6 - *
    17.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    17.8 - *
    17.9 - * The contents of this file are subject to the terms of either the GNU
   17.10 - * General Public License Version 2 only ("GPL") or the Common
   17.11 - * Development and Distribution License("CDDL") (collectively, the
   17.12 - * "License"). You may not use this file except in compliance with the
   17.13 - * License. You can obtain a copy of the License at
   17.14 - * http://www.netbeans.org/cddl-gplv2.html
   17.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   17.16 - * specific language governing permissions and limitations under the
   17.17 - * License.  When distributing the software, include this License Header
   17.18 - * Notice in each file and include the License file at
   17.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   17.20 - * particular file as subject to the "Classpath" exception as provided
   17.21 - * by Sun in the GPL Version 2 section of the License file that
   17.22 - * accompanied this code. If applicable, add the following below the
   17.23 - * License Header, with the fields enclosed by brackets [] replaced by
   17.24 - * your own identifying information:
   17.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   17.26 - *
   17.27 - * If you wish your version of this file to be governed by only the CDDL
   17.28 - * or only the GPL Version 2, indicate your decision by adding
   17.29 - * "[Contributor] elects to include this software in this distribution
   17.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   17.31 - * single choice of license, a recipient has the option to distribute
   17.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   17.33 - * to extend the choice of license to its licensees as provided above.
   17.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   17.35 - * Version 2 license, then the option applies only if the new code is
   17.36 - * made subject to such option by the copyright holder.
   17.37 - *
   17.38 - * Contributor(s):
   17.39 - *
   17.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   17.41 - */
   17.42 -package org.netbeans.modules.licensechanger;
   17.43 -
   17.44 -import java.awt.Component;
   17.45 -import java.awt.EventQueue;
   17.46 -import java.io.BufferedInputStream;
   17.47 -import java.io.ByteArrayOutputStream;
   17.48 -import java.io.File;
   17.49 -import java.io.FileInputStream;
   17.50 -import java.io.IOException;
   17.51 -import java.io.InputStream;
   17.52 -import java.util.Map;
   17.53 -import java.util.StringTokenizer;
   17.54 -import javax.swing.DefaultComboBoxModel;
   17.55 -import javax.swing.event.DocumentEvent;
   17.56 -import javax.swing.event.DocumentListener;
   17.57 -import org.openide.filesystems.FileChooserBuilder;
   17.58 -import org.openide.filesystems.FileUtil;
   17.59 -import org.openide.util.Exceptions;
   17.60 -import org.openide.util.NbBundle;
   17.61 -import org.openide.util.RequestProcessor;
   17.62 -
   17.63 -/**
   17.64 - *
   17.65 - * @author Tim Boudreau
   17.66 - */
   17.67 -public class LicenseChooserPanel extends javax.swing.JPanel implements Runnable, DocumentListener {
   17.68 -
   17.69 -    private volatile boolean licensesLoaded;
   17.70 -    private volatile boolean loadingLicenses;
   17.71 -    private boolean inLoadFromFile;
   17.72 -    public static final String KEY_LICENSE_TEXT = "licenseText";
   17.73 -    private Map<Object, Object> settings;
   17.74 -    /** Creates new form LicenseChooser */
   17.75 -    public LicenseChooserPanel(Map<Object,Object> settings) {
   17.76 -        this.settings = settings;
   17.77 -        initComponents();
   17.78 -        enabled(false);
   17.79 -        settings.put (KEY_LICENSE_TEXT, "No License");
   17.80 -        licenseText.getDocument().addDocumentListener(this);
   17.81 -    }
   17.82 -
   17.83 -    /** This method is called from within the constructor to
   17.84 -     * initialize the form.
   17.85 -     * WARNING: Do NOT modify this code. The content of this method is
   17.86 -     * always regenerated by the Form Editor.
   17.87 -     */
   17.88 -    @SuppressWarnings("unchecked")
   17.89 -    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   17.90 -    private void initComponents() {
   17.91 -
   17.92 -        chooseLabel = new javax.swing.JLabel();
   17.93 -        selectLicense = new javax.swing.JComboBox();
   17.94 -        jScrollPane1 = new javax.swing.JScrollPane();
   17.95 -        licenseText = new javax.swing.JTextArea();
   17.96 -        browseButton = new javax.swing.JButton();
   17.97 -
   17.98 -        chooseLabel.setLabelFor(selectLicense);
   17.99 -        chooseLabel.setText(org.openide.util.NbBundle.getMessage(LicenseChooserPanel.class, "LicenseChooserPanel.chooseLabel.text")); // NOI18N
  17.100 -
  17.101 -        selectLicense.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "[loading licenses]" }));
  17.102 -        selectLicense.addActionListener(new java.awt.event.ActionListener() {
  17.103 -            public void actionPerformed(java.awt.event.ActionEvent evt) {
  17.104 -                licenseSelected(evt);
  17.105 -            }
  17.106 -        });
  17.107 -
  17.108 -        licenseText.setColumns(20);
  17.109 -        licenseText.setRows(5);
  17.110 -        licenseText.setName("licenseText"); // NOI18N
  17.111 -        jScrollPane1.setViewportView(licenseText);
  17.112 -
  17.113 -        browseButton.setText(org.openide.util.NbBundle.getMessage(LicenseChooserPanel.class, "LicenseChooserPanel.browseButton.text")); // NOI18N
  17.114 -        browseButton.addActionListener(new java.awt.event.ActionListener() {
  17.115 -            public void actionPerformed(java.awt.event.ActionEvent evt) {
  17.116 -                browseForLicense(evt);
  17.117 -            }
  17.118 -        });
  17.119 -
  17.120 -        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
  17.121 -        this.setLayout(layout);
  17.122 -        layout.setHorizontalGroup(
  17.123 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  17.124 -            .add(layout.createSequentialGroup()
  17.125 -                .addContainerGap()
  17.126 -                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  17.127 -                    .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
  17.128 -                    .add(layout.createSequentialGroup()
  17.129 -                        .add(chooseLabel)
  17.130 -                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
  17.131 -                        .add(selectLicense, 0, 296, Short.MAX_VALUE))
  17.132 -                    .add(org.jdesktop.layout.GroupLayout.TRAILING, browseButton))
  17.133 -                .addContainerGap())
  17.134 -        );
  17.135 -        layout.setVerticalGroup(
  17.136 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  17.137 -            .add(layout.createSequentialGroup()
  17.138 -                .addContainerGap()
  17.139 -                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
  17.140 -                    .add(chooseLabel)
  17.141 -                    .add(selectLicense, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
  17.142 -                .add(18, 18, 18)
  17.143 -                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 188, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
  17.144 -                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
  17.145 -                .add(browseButton)
  17.146 -                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  17.147 -        );
  17.148 -    }// </editor-fold>//GEN-END:initComponents
  17.149 -
  17.150 -    private void licenseSelected(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_licenseSelected
  17.151 -        if (loadingLicenses || inLoadFromFile || !selectLicense.isEnabled()) {
  17.152 -            return;
  17.153 -        }
  17.154 -        loadLicenseFromResource (selectLicense.getSelectedItem().toString());
  17.155 -    }//GEN-LAST:event_licenseSelected
  17.156 -
  17.157 -    private void browseForLicense(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseForLicense
  17.158 -        File f;
  17.159 -        if ((f = new FileChooserBuilder(LicenseChooserPanel.class).setTitle(
  17.160 -                NbBundle.getMessage(LicenseChooserPanel.class, "BROWSE_LICENSE_TITLE")) //NOI18N
  17.161 -                .setFilesOnly(true).showOpenDialog()) != null) {
  17.162 -            loadLicenseFromFile(f);
  17.163 -        }
  17.164 -    }//GEN-LAST:event_browseForLicense
  17.165 -
  17.166 -    @Override
  17.167 -    public void addNotify() {
  17.168 -        super.addNotify();
  17.169 -        if (!licensesLoaded && !loadingLicenses) {
  17.170 -            loadingLicenses = true;
  17.171 -            enabled(false);
  17.172 -            RequestProcessor.getDefault().post(this);
  17.173 -        }
  17.174 -    }
  17.175 -    // Variables declaration - do not modify//GEN-BEGIN:variables
  17.176 -    private javax.swing.JButton browseButton;
  17.177 -    private javax.swing.JLabel chooseLabel;
  17.178 -    private javax.swing.JScrollPane jScrollPane1;
  17.179 -    private javax.swing.JTextArea licenseText;
  17.180 -    private javax.swing.JComboBox selectLicense;
  17.181 -    // End of variables declaration//GEN-END:variables
  17.182 -
  17.183 -    private void enabled(boolean val) {
  17.184 -        for (Component c : getComponents()) {
  17.185 -            c.setEnabled(val);
  17.186 -        }
  17.187 -    }
  17.188 -
  17.189 -    private void initLicenses() throws IOException {
  17.190 -        assert !EventQueue.isDispatchThread();
  17.191 -        final DefaultComboBoxModel mdl = new DefaultComboBoxModel();
  17.192 -        InputStream in = new BufferedInputStream(LicenseChooserPanel.class.getResourceAsStream("licenses.txt"));
  17.193 -        ByteArrayOutputStream out = new ByteArrayOutputStream();
  17.194 -        try {
  17.195 -            FileUtil.copy(in, out);
  17.196 -            String s = new String(out.toByteArray());
  17.197 -            StringTokenizer tok = new StringTokenizer(s);
  17.198 -            while (tok.hasMoreTokens()) {
  17.199 -                String curr = tok.nextToken();
  17.200 -                int ix = curr.lastIndexOf("/");
  17.201 -                if (ix >= 0 && ix < curr.length() - 1) {
  17.202 -                    curr = curr.substring(ix + 1);
  17.203 -                }
  17.204 -                mdl.addElement(curr);
  17.205 -            }
  17.206 -        } catch (IOException ioe) {
  17.207 -            Exceptions.printStackTrace(ioe);
  17.208 -        } finally {
  17.209 -            in.close();
  17.210 -            out.close();
  17.211 -            EventQueue.invokeLater(new Runnable() {
  17.212 -                public void run() {
  17.213 -                    mdl.setSelectedItem (NbBundle.getMessage(LicenseChooserPanel.class,
  17.214 -                            "MSG_SELECT_A_LICENSE")); //NOI18N
  17.215 -                    selectLicense.setModel(mdl);
  17.216 -                    enabled(true);
  17.217 -                    licensesLoaded = true;
  17.218 -                    loadingLicenses = false;
  17.219 -                }
  17.220 -            });
  17.221 -        }
  17.222 -    }
  17.223 -
  17.224 -    public void run() {
  17.225 -        try {
  17.226 -            initLicenses();
  17.227 -        } catch (IOException ex) {
  17.228 -            Exceptions.printStackTrace(ex);
  17.229 -        }
  17.230 -    }
  17.231 -
  17.232 -    private void loadLicenseFromFile(File f) {
  17.233 -        inLoadFromFile = true;
  17.234 -        enabled(false);
  17.235 -        RequestProcessor.getDefault().post(new FileLoader(f));
  17.236 -    }
  17.237 -
  17.238 -    private void loadLicenseFromResource(String name) {
  17.239 -        inLoadFromFile = true;
  17.240 -        enabled(false);
  17.241 -        RequestProcessor.getDefault().post(new ResourceLoader(name));
  17.242 -    }
  17.243 -
  17.244 -    public String getLicenseText() {
  17.245 -        return licenseText.getText();
  17.246 -    }
  17.247 -
  17.248 -    private void updateLicense() {
  17.249 -        String txt = licenseText.getText();
  17.250 -        if (!txt.endsWith("\n")) {
  17.251 -            txt += "\n";
  17.252 -        }
  17.253 -        settings.put(KEY_LICENSE_TEXT, txt);
  17.254 -    }
  17.255 -
  17.256 -    public void insertUpdate(DocumentEvent e) {
  17.257 -        updateLicense();
  17.258 -    }
  17.259 -
  17.260 -    public void removeUpdate(DocumentEvent e) {
  17.261 -        updateLicense();
  17.262 -    }
  17.263 -
  17.264 -    public void changedUpdate(DocumentEvent e) {
  17.265 -        updateLicense();
  17.266 -    }
  17.267 -
  17.268 -    private class FileLoader implements Runnable {
  17.269 -
  17.270 -        private final File file;
  17.271 -        private String text;
  17.272 -
  17.273 -        FileLoader(File f) {
  17.274 -            this.file = f;
  17.275 -        }
  17.276 -
  17.277 -        public void run() {
  17.278 -            if (!EventQueue.isDispatchThread()) {
  17.279 -                try {
  17.280 -                    InputStream in = new BufferedInputStream(new FileInputStream(file));
  17.281 -                    ByteArrayOutputStream out = new ByteArrayOutputStream((int) file.length());
  17.282 -                    try {
  17.283 -                        FileUtil.copy(in, out);
  17.284 -                    } finally {
  17.285 -                        in.close();
  17.286 -                        out.close();
  17.287 -                    }
  17.288 -                    text = new String(out.toByteArray());
  17.289 -                } catch (IOException ioe) {
  17.290 -                    ioe.printStackTrace();
  17.291 -                    text = NbBundle.getMessage (LicenseChooserPanel.class,
  17.292 -                            "ERR_COULD_NOT_LOAD", file.getPath()); //NOI18N
  17.293 -                } finally {
  17.294 -                    EventQueue.invokeLater(this);
  17.295 -                }
  17.296 -            } else {
  17.297 -                selectLicense.setSelectedItem(file.getName());
  17.298 -                inLoadFromFile = false;
  17.299 -                licenseText.setText(text);
  17.300 -                settings.put(KEY_LICENSE_TEXT, text);
  17.301 -                enabled(true);
  17.302 -            }
  17.303 -        }
  17.304 -    }
  17.305 -
  17.306 -    private class ResourceLoader implements Runnable {
  17.307 -
  17.308 -        private String name;
  17.309 -        private String text;
  17.310 -
  17.311 -        ResourceLoader(String name) {
  17.312 -            this.name = name;
  17.313 -        }
  17.314 -
  17.315 -        public void run() {
  17.316 -            if (!EventQueue.isDispatchThread()) {
  17.317 -                try {
  17.318 -                    InputStream in = new BufferedInputStream(
  17.319 -                            LicenseChooserPanel.class.getResourceAsStream("licenses/" + name));
  17.320 -                    ByteArrayOutputStream out = new ByteArrayOutputStream();
  17.321 -                    try {
  17.322 -                        FileUtil.copy (in, out);
  17.323 -                    } finally {
  17.324 -                        in.close();
  17.325 -                        out.close();
  17.326 -                    }
  17.327 -                    text = new String (out.toByteArray());
  17.328 -                } catch (IOException ioe) {
  17.329 -                    ioe.printStackTrace();
  17.330 -                    text = NbBundle.getMessage (LicenseChooserPanel.class,
  17.331 -                            "ERR_COULD_NOT_LOAD", name); //NOI18N
  17.332 -                } finally {
  17.333 -                    EventQueue.invokeLater(this);
  17.334 -                }
  17.335 -            } else {
  17.336 -                inLoadFromFile = false;
  17.337 -                licenseText.setText(text);
  17.338 -                settings.put(KEY_LICENSE_TEXT, text);
  17.339 -                enabled(true);
  17.340 -            }
  17.341 -        }
  17.342 -    }
  17.343 -}
    18.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/LineEndingPreference.java	Wed Sep 12 17:19:28 2012 +0200
    18.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.3 @@ -1,52 +0,0 @@
    18.4 -/*
    18.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    18.6 - *
    18.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    18.8 - *
    18.9 - * The contents of this file are subject to the terms of either the GNU
   18.10 - * General Public License Version 2 only ("GPL") or the Common
   18.11 - * Development and Distribution License("CDDL") (collectively, the
   18.12 - * "License"). You may not use this file except in compliance with the
   18.13 - * License. You can obtain a copy of the License at
   18.14 - * http://www.netbeans.org/cddl-gplv2.html
   18.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   18.16 - * specific language governing permissions and limitations under the
   18.17 - * License.  When distributing the software, include this License Header
   18.18 - * Notice in each file and include the License file at
   18.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   18.20 - * particular file as subject to the "Classpath" exception as provided
   18.21 - * by Sun in the GPL Version 2 section of the License file that
   18.22 - * accompanied this code. If applicable, add the following below the
   18.23 - * License Header, with the fields enclosed by brackets [] replaced by
   18.24 - * your own identifying information:
   18.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   18.26 - *
   18.27 - * If you wish your version of this file to be governed by only the CDDL
   18.28 - * or only the GPL Version 2, indicate your decision by adding
   18.29 - * "[Contributor] elects to include this software in this distribution
   18.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   18.31 - * single choice of license, a recipient has the option to distribute
   18.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   18.33 - * to extend the choice of license to its licensees as provided above.
   18.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   18.35 - * Version 2 license, then the option applies only if the new code is
   18.36 - * made subject to such option by the copyright holder.
   18.37 - *
   18.38 - * Contributor(s):
   18.39 - *
   18.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   18.41 - */
   18.42 -
   18.43 -package org.netbeans.modules.licensechanger;
   18.44 -
   18.45 -/**
   18.46 - * User preference for line ending conversion
   18.47 - *
   18.48 - * @author Tim Boudreau
   18.49 - */
   18.50 -public enum LineEndingPreference {
   18.51 -    FORCE_CRLF,
   18.52 -    NO_CHANGE,
   18.53 -    FORCE_NEWLINE,
   18.54 -    SYSTEM_DEFAULT;
   18.55 -}
    19.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/LineEndingsPanel.form	Wed Sep 12 17:19:28 2012 +0200
    19.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.3 @@ -1,114 +0,0 @@
    19.4 -<?xml version="1.0" encoding="UTF-8" ?>
    19.5 -
    19.6 -<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    19.7 -  <NonVisualComponents>
    19.8 -    <Component class="javax.swing.ButtonGroup" name="buttonGroup1">
    19.9 -    </Component>
   19.10 -  </NonVisualComponents>
   19.11 -  <Properties>
   19.12 -    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   19.13 -      <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
   19.14 -        <TitledBorder title="Line Endings">
   19.15 -          <ResourceString PropertyName="titleX" bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="LineEndingsPanel.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   19.16 -        </TitledBorder>
   19.17 -      </Border>
   19.18 -    </Property>
   19.19 -  </Properties>
   19.20 -  <AuxValues>
   19.21 -    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
   19.22 -    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   19.23 -    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   19.24 -    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   19.25 -    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   19.26 -    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
   19.27 -    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   19.28 -    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   19.29 -    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   19.30 -  </AuxValues>
   19.31 -
   19.32 -  <Layout>
   19.33 -    <DimensionLayout dim="0">
   19.34 -      <Group type="103" groupAlignment="0" attributes="0">
   19.35 -          <Group type="102" attributes="0">
   19.36 -              <EmptySpace max="-2" attributes="0"/>
   19.37 -              <Group type="103" groupAlignment="0" attributes="0">
   19.38 -                  <Component id="noChangeButton" alignment="0" min="-2" max="-2" attributes="0"/>
   19.39 -                  <Component id="systemDefaultButton" alignment="0" min="-2" max="-2" attributes="0"/>
   19.40 -                  <Component id="newlineButton" alignment="0" min="-2" max="-2" attributes="0"/>
   19.41 -                  <Component id="forceCrlf" alignment="0" min="-2" max="-2" attributes="0"/>
   19.42 -              </Group>
   19.43 -              <EmptySpace max="32767" attributes="0"/>
   19.44 -          </Group>
   19.45 -      </Group>
   19.46 -    </DimensionLayout>
   19.47 -    <DimensionLayout dim="1">
   19.48 -      <Group type="103" groupAlignment="0" attributes="0">
   19.49 -          <Group type="102" alignment="0" attributes="0">
   19.50 -              <Component id="noChangeButton" min="-2" max="-2" attributes="0"/>
   19.51 -              <EmptySpace type="unrelated" max="-2" attributes="0"/>
   19.52 -              <Component id="systemDefaultButton" min="-2" max="-2" attributes="0"/>
   19.53 -              <EmptySpace type="unrelated" max="-2" attributes="0"/>
   19.54 -              <Component id="newlineButton" min="-2" max="-2" attributes="0"/>
   19.55 -              <EmptySpace type="unrelated" max="-2" attributes="0"/>
   19.56 -              <Component id="forceCrlf" min="-2" max="-2" attributes="0"/>
   19.57 -              <EmptySpace max="32767" attributes="0"/>
   19.58 -          </Group>
   19.59 -      </Group>
   19.60 -    </DimensionLayout>
   19.61 -  </Layout>
   19.62 -  <SubComponents>
   19.63 -    <Component class="javax.swing.JRadioButton" name="noChangeButton">
   19.64 -      <Properties>
   19.65 -        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
   19.66 -          <ComponentRef name="buttonGroup1"/>
   19.67 -        </Property>
   19.68 -        <Property name="selected" type="boolean" value="true"/>
   19.69 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   19.70 -          <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="LineEndingsPanel.noChangeButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   19.71 -        </Property>
   19.72 -      </Properties>
   19.73 -      <Events>
   19.74 -        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lineEndingPreferenceChanged"/>
   19.75 -      </Events>
   19.76 -    </Component>
   19.77 -    <Component class="javax.swing.JRadioButton" name="systemDefaultButton">
   19.78 -      <Properties>
   19.79 -        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
   19.80 -          <ComponentRef name="buttonGroup1"/>
   19.81 -        </Property>
   19.82 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   19.83 -          <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="LineEndingsPanel.systemDefaultButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   19.84 -        </Property>
   19.85 -      </Properties>
   19.86 -      <Events>
   19.87 -        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lineEndingPreferenceChanged"/>
   19.88 -      </Events>
   19.89 -    </Component>
   19.90 -    <Component class="javax.swing.JRadioButton" name="newlineButton">
   19.91 -      <Properties>
   19.92 -        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
   19.93 -          <ComponentRef name="buttonGroup1"/>
   19.94 -        </Property>
   19.95 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   19.96 -          <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="LineEndingsPanel.newlineButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   19.97 -        </Property>
   19.98 -      </Properties>
   19.99 -      <Events>
  19.100 -        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lineEndingPreferenceChanged"/>
  19.101 -      </Events>
  19.102 -    </Component>
  19.103 -    <Component class="javax.swing.JRadioButton" name="forceCrlf">
  19.104 -      <Properties>
  19.105 -        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
  19.106 -          <ComponentRef name="buttonGroup1"/>
  19.107 -        </Property>
  19.108 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  19.109 -          <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="LineEndingsPanel.forceCrlf.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  19.110 -        </Property>
  19.111 -      </Properties>
  19.112 -      <Events>
  19.113 -        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lineEndingPreferenceChanged"/>
  19.114 -      </Events>
  19.115 -    </Component>
  19.116 -  </SubComponents>
  19.117 -</Form>
    20.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/LineEndingsPanel.java	Wed Sep 12 17:19:28 2012 +0200
    20.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.3 @@ -1,171 +0,0 @@
    20.4 -/*
    20.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    20.6 - *
    20.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    20.8 - *
    20.9 - * The contents of this file are subject to the terms of either the GNU
   20.10 - * General Public License Version 2 only ("GPL") or the Common
   20.11 - * Development and Distribution License("CDDL") (collectively, the
   20.12 - * "License"). You may not use this file except in compliance with the
   20.13 - * License. You can obtain a copy of the License at
   20.14 - * http://www.netbeans.org/cddl-gplv2.html
   20.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   20.16 - * specific language governing permissions and limitations under the
   20.17 - * License.  When distributing the software, include this License Header
   20.18 - * Notice in each file and include the License file at
   20.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   20.20 - * particular file as subject to the "Classpath" exception as provided
   20.21 - * by Sun in the GPL Version 2 section of the License file that
   20.22 - * accompanied this code. If applicable, add the following below the
   20.23 - * License Header, with the fields enclosed by brackets [] replaced by
   20.24 - * your own identifying information:
   20.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   20.26 - *
   20.27 - * If you wish your version of this file to be governed by only the CDDL
   20.28 - * or only the GPL Version 2, indicate your decision by adding
   20.29 - * "[Contributor] elects to include this software in this distribution
   20.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   20.31 - * single choice of license, a recipient has the option to distribute
   20.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   20.33 - * to extend the choice of license to its licensees as provided above.
   20.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   20.35 - * Version 2 license, then the option applies only if the new code is
   20.36 - * made subject to such option by the copyright holder.
   20.37 - *
   20.38 - * Contributor(s):
   20.39 - *
   20.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   20.41 - */
   20.42 -
   20.43 -/*
   20.44 - * LineEndingsPanel.java
   20.45 - *
   20.46 - * Created on Mar 20, 2009, 12:33:04 AM
   20.47 - */
   20.48 -
   20.49 -package org.netbeans.modules.licensechanger;
   20.50 -
   20.51 -import javax.swing.JRadioButton;
   20.52 -import org.openide.util.NbPreferences;
   20.53 -
   20.54 -/**
   20.55 - *
   20.56 - * @author Administrator
   20.57 - */
   20.58 -public class LineEndingsPanel extends javax.swing.JPanel {
   20.59 -    private static final String PROP_ENDING = "ending";
   20.60 -    public static final String PREFS_KEY_ENDING = "line_terminator";
   20.61 -    
   20.62 -    /** Creates new form LineEndingsPanel */
   20.63 -    public LineEndingsPanel() {
   20.64 -        initComponents();
   20.65 -        forceCrlf.putClientProperty(PROP_ENDING, LineEndingPreference.FORCE_CRLF);
   20.66 -        noChangeButton.putClientProperty(PROP_ENDING, LineEndingPreference.NO_CHANGE);
   20.67 -        newlineButton.putClientProperty(PROP_ENDING, LineEndingPreference.FORCE_NEWLINE);
   20.68 -        systemDefaultButton.putClientProperty (PROP_ENDING, LineEndingPreference.SYSTEM_DEFAULT);
   20.69 -    }
   20.70 -
   20.71 -    /** This method is called from within the constructor to
   20.72 -     * initialize the form.
   20.73 -     * WARNING: Do NOT modify this code. The content of this method is
   20.74 -     * always regenerated by the Form Editor.
   20.75 -     */
   20.76 -    @SuppressWarnings("unchecked")
   20.77 -    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   20.78 -    private void initComponents() {
   20.79 -
   20.80 -        buttonGroup1 = new javax.swing.ButtonGroup();
   20.81 -        noChangeButton = new javax.swing.JRadioButton();
   20.82 -        systemDefaultButton = new javax.swing.JRadioButton();
   20.83 -        newlineButton = new javax.swing.JRadioButton();
   20.84 -        forceCrlf = new javax.swing.JRadioButton();
   20.85 -
   20.86 -        setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(LineEndingsPanel.class, "LineEndingsPanel.border.title"))); // NOI18N
   20.87 -
   20.88 -        buttonGroup1.add(noChangeButton);
   20.89 -        noChangeButton.setSelected(true);
   20.90 -        noChangeButton.setText(org.openide.util.NbBundle.getMessage(LineEndingsPanel.class, "LineEndingsPanel.noChangeButton.text")); // NOI18N
   20.91 -        noChangeButton.addActionListener(new java.awt.event.ActionListener() {
   20.92 -            public void actionPerformed(java.awt.event.ActionEvent evt) {
   20.93 -                lineEndingPreferenceChanged(evt);
   20.94 -            }
   20.95 -        });
   20.96 -
   20.97 -        buttonGroup1.add(systemDefaultButton);
   20.98 -        systemDefaultButton.setText(org.openide.util.NbBundle.getMessage(LineEndingsPanel.class, "LineEndingsPanel.systemDefaultButton.text")); // NOI18N
   20.99 -        systemDefaultButton.addActionListener(new java.awt.event.ActionListener() {
  20.100 -            public void actionPerformed(java.awt.event.ActionEvent evt) {
  20.101 -                lineEndingPreferenceChanged(evt);
  20.102 -            }
  20.103 -        });
  20.104 -
  20.105 -        buttonGroup1.add(newlineButton);
  20.106 -        newlineButton.setText(org.openide.util.NbBundle.getMessage(LineEndingsPanel.class, "LineEndingsPanel.newlineButton.text")); // NOI18N
  20.107 -        newlineButton.addActionListener(new java.awt.event.ActionListener() {
  20.108 -            public void actionPerformed(java.awt.event.ActionEvent evt) {
  20.109 -                lineEndingPreferenceChanged(evt);
  20.110 -            }
  20.111 -        });
  20.112 -
  20.113 -        buttonGroup1.add(forceCrlf);
  20.114 -        forceCrlf.setText(org.openide.util.NbBundle.getMessage(LineEndingsPanel.class, "LineEndingsPanel.forceCrlf.text")); // NOI18N
  20.115 -        forceCrlf.addActionListener(new java.awt.event.ActionListener() {
  20.116 -            public void actionPerformed(java.awt.event.ActionEvent evt) {
  20.117 -                lineEndingPreferenceChanged(evt);
  20.118 -            }
  20.119 -        });
  20.120 -
  20.121 -        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
  20.122 -        this.setLayout(layout);
  20.123 -        layout.setHorizontalGroup(
  20.124 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  20.125 -            .add(layout.createSequentialGroup()
  20.126 -                .addContainerGap()
  20.127 -                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  20.128 -                    .add(noChangeButton)
  20.129 -                    .add(systemDefaultButton)
  20.130 -                    .add(newlineButton)
  20.131 -                    .add(forceCrlf))
  20.132 -                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  20.133 -        );
  20.134 -        layout.setVerticalGroup(
  20.135 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  20.136 -            .add(layout.createSequentialGroup()
  20.137 -                .add(noChangeButton)
  20.138 -                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
  20.139 -                .add(systemDefaultButton)
  20.140 -                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
  20.141 -                .add(newlineButton)
  20.142 -                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
  20.143 -                .add(forceCrlf)
  20.144 -                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  20.145 -        );
  20.146 -    }// </editor-fold>//GEN-END:initComponents
  20.147 -
  20.148 -    private void lineEndingPreferenceChanged(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lineEndingPreferenceChanged
  20.149 -        for (JRadioButton b : new JRadioButton[] { forceCrlf, newlineButton, noChangeButton, systemDefaultButton }) {
  20.150 -            if (b.isSelected()) {
  20.151 -                LineEndingPreference x = (LineEndingPreference) b.getClientProperty(PROP_ENDING);
  20.152 -                if (x != null) {
  20.153 -                    NbPreferences.forModule(LineEndingsPanel.class).put(PROP_ENDING, x.name());
  20.154 -                }
  20.155 -                break;
  20.156 -            }
  20.157 -        }
  20.158 -    }//GEN-LAST:event_lineEndingPreferenceChanged
  20.159 -
  20.160 -    public static LineEndingPreference getLineEndingPrefs() {
  20.161 -        String ending = NbPreferences.forModule(LineEndingsPanel.class).get(PROP_ENDING, LineEndingPreference.NO_CHANGE.name());
  20.162 -        return LineEndingPreference.valueOf(ending);
  20.163 -    }
  20.164 -
  20.165 -
  20.166 -    // Variables declaration - do not modify//GEN-BEGIN:variables
  20.167 -    private javax.swing.ButtonGroup buttonGroup1;
  20.168 -    private javax.swing.JRadioButton forceCrlf;
  20.169 -    private javax.swing.JRadioButton newlineButton;
  20.170 -    private javax.swing.JRadioButton noChangeButton;
  20.171 -    private javax.swing.JRadioButton systemDefaultButton;
  20.172 -    // End of variables declaration//GEN-END:variables
  20.173 -
  20.174 -}
    21.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/NodeCheckObserver.java	Wed Sep 12 17:19:28 2012 +0200
    21.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.3 @@ -1,12 +0,0 @@
    21.4 -package org.netbeans.modules.licensechanger;
    21.5 -
    21.6 -import org.openide.nodes.Node;
    21.7 -
    21.8 -/**
    21.9 - *
   21.10 - * @author Tim Boudreau
   21.11 - */
   21.12 -public interface NodeCheckObserver {
   21.13 -    public void onNodeChecked (Node node);
   21.14 -    public void onNodeUnchecked (Node node);
   21.15 -}
    22.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/Offsets.java	Wed Sep 12 17:19:28 2012 +0200
    22.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.3 @@ -1,62 +0,0 @@
    22.4 -/*
    22.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    22.6 - *
    22.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    22.8 - *
    22.9 - * The contents of this file are subject to the terms of either the GNU
   22.10 - * General Public License Version 2 only ("GPL") or the Common
   22.11 - * Development and Distribution License("CDDL") (collectively, the
   22.12 - * "License"). You may not use this file except in compliance with the
   22.13 - * License. You can obtain a copy of the License at
   22.14 - * http://www.netbeans.org/cddl-gplv2.html
   22.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   22.16 - * specific language governing permissions and limitations under the
   22.17 - * License.  When distributing the software, include this License Header
   22.18 - * Notice in each file and include the License file at
   22.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   22.20 - * particular file as subject to the "Classpath" exception as provided
   22.21 - * by Sun in the GPL Version 2 section of the License file that
   22.22 - * accompanied this code. If applicable, add the following below the
   22.23 - * License Header, with the fields enclosed by brackets [] replaced by
   22.24 - * your own identifying information:
   22.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   22.26 - *
   22.27 - * If you wish your version of this file to be governed by only the CDDL
   22.28 - * or only the GPL Version 2, indicate your decision by adding
   22.29 - * "[Contributor] elects to include this software in this distribution
   22.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   22.31 - * single choice of license, a recipient has the option to distribute
   22.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   22.33 - * to extend the choice of license to its licensees as provided above.
   22.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   22.35 - * Version 2 license, then the option applies only if the new code is
   22.36 - * made subject to such option by the copyright holder.
   22.37 - *
   22.38 - * Contributor(s):
   22.39 - *
   22.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   22.41 - */
   22.42 -
   22.43 -package org.netbeans.modules.licensechanger;
   22.44 -
   22.45 -/**
   22.46 - *
   22.47 - * @author Tim Boudreau
   22.48 - */
   22.49 -public final class Offsets {
   22.50 -    private final int start;
   22.51 -    private final int end;
   22.52 -
   22.53 -    public Offsets(int start, int end) {
   22.54 -        this.start = start;
   22.55 -        this.end = end;
   22.56 -    }
   22.57 -
   22.58 -    public int getEnd() {
   22.59 -        return end;
   22.60 -    }
   22.61 -
   22.62 -    public int getStart() {
   22.63 -        return start;
   22.64 -    }
   22.65 -}
    23.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/PreviewPanel.form	Wed Sep 12 17:19:28 2012 +0200
    23.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.3 @@ -1,231 +0,0 @@
    23.4 -<?xml version="1.0" encoding="UTF-8" ?>
    23.5 -
    23.6 -<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    23.7 -  <AuxValues>
    23.8 -    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
    23.9 -    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   23.10 -    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   23.11 -    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   23.12 -    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   23.13 -    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
   23.14 -    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   23.15 -    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   23.16 -    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   23.17 -  </AuxValues>
   23.18 -
   23.19 -  <Layout>
   23.20 -    <DimensionLayout dim="0">
   23.21 -      <Group type="103" groupAlignment="0" attributes="0">
   23.22 -          <Group type="102" alignment="1" attributes="0">
   23.23 -              <EmptySpace max="-2" attributes="0"/>
   23.24 -              <Group type="103" groupAlignment="1" attributes="0">
   23.25 -                  <Component id="jSplitPane1" alignment="0" pref="543" max="32767" attributes="0"/>
   23.26 -                  <Component id="jLabel3" alignment="0" pref="543" max="32767" attributes="0"/>
   23.27 -              </Group>
   23.28 -              <EmptySpace max="-2" attributes="0"/>
   23.29 -          </Group>
   23.30 -      </Group>
   23.31 -    </DimensionLayout>
   23.32 -    <DimensionLayout dim="1">
   23.33 -      <Group type="103" groupAlignment="0" attributes="0">
   23.34 -          <Group type="102" alignment="1" attributes="0">
   23.35 -              <EmptySpace max="-2" attributes="0"/>
   23.36 -              <Component id="jSplitPane1" pref="408" max="32767" attributes="0"/>
   23.37 -              <EmptySpace max="-2" attributes="0"/>
   23.38 -              <Component id="jLabel3" min="-2" max="-2" attributes="0"/>
   23.39 -          </Group>
   23.40 -      </Group>
   23.41 -    </DimensionLayout>
   23.42 -  </Layout>
   23.43 -  <SubComponents>
   23.44 -    <Container class="javax.swing.JSplitPane" name="jSplitPane1">
   23.45 -      <Properties>
   23.46 -        <Property name="dividerLocation" type="int" value="200"/>
   23.47 -        <Property name="orientation" type="int" value="0"/>
   23.48 -        <Property name="resizeWeight" type="double" value="0.5"/>
   23.49 -      </Properties>
   23.50 -
   23.51 -      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
   23.52 -      <SubComponents>
   23.53 -        <Container class="javax.swing.JScrollPane" name="fileList">
   23.54 -          <Properties>
   23.55 -            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   23.56 -              <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
   23.57 -                <EmptyBorder bottom="0" left="0" right="0" top="0"/>
   23.58 -              </Border>
   23.59 -            </Property>
   23.60 -          </Properties>
   23.61 -          <AuxValues>
   23.62 -            <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new CheckboxListView()"/>
   23.63 -          </AuxValues>
   23.64 -          <Constraints>
   23.65 -            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
   23.66 -              <JSplitPaneConstraints position="top"/>
   23.67 -            </Constraint>
   23.68 -          </Constraints>
   23.69 -
   23.70 -          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
   23.71 -        </Container>
   23.72 -        <Container class="javax.swing.JSplitPane" name="jSplitPane2">
   23.73 -          <Properties>
   23.74 -            <Property name="dividerLocation" type="int" value="295"/>
   23.75 -            <Property name="resizeWeight" type="double" value="0.5"/>
   23.76 -          </Properties>
   23.77 -          <Constraints>
   23.78 -            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
   23.79 -              <JSplitPaneConstraints position="right"/>
   23.80 -            </Constraint>
   23.81 -          </Constraints>
   23.82 -
   23.83 -          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
   23.84 -          <SubComponents>
   23.85 -            <Container class="javax.swing.JPanel" name="jPanel1">
   23.86 -              <Constraints>
   23.87 -                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
   23.88 -                  <JSplitPaneConstraints position="left"/>
   23.89 -                </Constraint>
   23.90 -              </Constraints>
   23.91 -
   23.92 -              <Layout>
   23.93 -                <DimensionLayout dim="0">
   23.94 -                  <Group type="103" groupAlignment="0" attributes="0">
   23.95 -                      <Group type="102" alignment="0" attributes="0">
   23.96 -                          <EmptySpace max="-2" attributes="0"/>
   23.97 -                          <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
   23.98 -                          <EmptySpace pref="252" max="32767" attributes="0"/>
   23.99 -                      </Group>
  23.100 -                      <Component id="jScrollPane1" alignment="1" pref="294" max="32767" attributes="0"/>
  23.101 -                  </Group>
  23.102 -                </DimensionLayout>
  23.103 -                <DimensionLayout dim="1">
  23.104 -                  <Group type="103" groupAlignment="0" attributes="0">
  23.105 -                      <Group type="102" alignment="0" attributes="0">
  23.106 -                          <EmptySpace max="-2" attributes="0"/>
  23.107 -                          <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
  23.108 -                          <EmptySpace max="-2" attributes="0"/>
  23.109 -                          <Component id="jScrollPane1" pref="161" max="32767" attributes="0"/>
  23.110 -                      </Group>
  23.111 -                  </Group>
  23.112 -                </DimensionLayout>
  23.113 -              </Layout>
  23.114 -              <SubComponents>
  23.115 -                <Component class="javax.swing.JLabel" name="jLabel1">
  23.116 -                  <Properties>
  23.117 -                    <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  23.118 -                      <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="PreviewPanel.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  23.119 -                    </Property>
  23.120 -                  </Properties>
  23.121 -                </Component>
  23.122 -                <Container class="javax.swing.JScrollPane" name="jScrollPane1">
  23.123 -                  <Properties>
  23.124 -                    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
  23.125 -                      <Border info="org.netbeans.modules.form.compat2.border.MatteColorBorderInfo">
  23.126 -                        <MatteColorBorder bottom="0" left="0" right="0" top="1">
  23.127 -                          <Color PropertyName="color" blue="99" green="a8" id="controlShadow" palette="3" red="ac" type="palette"/>
  23.128 -                        </MatteColorBorder>
  23.129 -                      </Border>
  23.130 -                    </Property>
  23.131 -                  </Properties>
  23.132 -                  <AuxValues>
  23.133 -                    <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
  23.134 -                  </AuxValues>
  23.135 -
  23.136 -                  <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
  23.137 -                  <SubComponents>
  23.138 -                    <Component class="javax.swing.JEditorPane" name="before">
  23.139 -                      <Properties>
  23.140 -                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
  23.141 -                          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
  23.142 -                            <EmptyBorder/>
  23.143 -                          </Border>
  23.144 -                        </Property>
  23.145 -                      </Properties>
  23.146 -                    </Component>
  23.147 -                  </SubComponents>
  23.148 -                </Container>
  23.149 -              </SubComponents>
  23.150 -            </Container>
  23.151 -            <Container class="javax.swing.JPanel" name="jPanel2">
  23.152 -              <Constraints>
  23.153 -                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
  23.154 -                  <JSplitPaneConstraints position="right"/>
  23.155 -                </Constraint>
  23.156 -              </Constraints>
  23.157 -
  23.158 -              <Layout>
  23.159 -                <DimensionLayout dim="0">
  23.160 -                  <Group type="103" groupAlignment="0" attributes="0">
  23.161 -                      <Group type="102" attributes="0">
  23.162 -                          <EmptySpace max="-2" attributes="0"/>
  23.163 -                          <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
  23.164 -                          <EmptySpace pref="205" max="32767" attributes="0"/>
  23.165 -                      </Group>
  23.166 -                      <Component id="jScrollPane2" alignment="0" pref="240" max="32767" attributes="0"/>
  23.167 -                  </Group>
  23.168 -                </DimensionLayout>
  23.169 -                <DimensionLayout dim="1">
  23.170 -                  <Group type="103" groupAlignment="0" attributes="0">
  23.171 -                      <Group type="102" alignment="0" attributes="0">
  23.172 -                          <EmptySpace max="-2" attributes="0"/>
  23.173 -                          <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
  23.174 -                          <EmptySpace max="-2" attributes="0"/>
  23.175 -                          <Component id="jScrollPane2" pref="161" max="32767" attributes="0"/>
  23.176 -                      </Group>
  23.177 -                  </Group>
  23.178 -                </DimensionLayout>
  23.179 -              </Layout>
  23.180 -              <SubComponents>
  23.181 -                <Component class="javax.swing.JLabel" name="jLabel2">
  23.182 -                  <Properties>
  23.183 -                    <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  23.184 -                      <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="PreviewPanel.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  23.185 -                    </Property>
  23.186 -                  </Properties>
  23.187 -                </Component>
  23.188 -                <Container class="javax.swing.JScrollPane" name="jScrollPane2">
  23.189 -                  <Properties>
  23.190 -                    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
  23.191 -                      <Border info="org.netbeans.modules.form.compat2.border.MatteColorBorderInfo">
  23.192 -                        <MatteColorBorder bottom="0" left="0" right="0" top="1">
  23.193 -                          <Color PropertyName="color" blue="99" green="a8" id="controlShadow" palette="3" red="ac" type="palette"/>
  23.194 -                        </MatteColorBorder>
  23.195 -                      </Border>
  23.196 -                    </Property>
  23.197 -                    <Property name="viewportBorder" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
  23.198 -                      <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
  23.199 -                        <EmptyBorder bottom="0" left="0" right="0" top="0"/>
  23.200 -                      </Border>
  23.201 -                    </Property>
  23.202 -                  </Properties>
  23.203 -                  <AuxValues>
  23.204 -                    <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
  23.205 -                  </AuxValues>
  23.206 -
  23.207 -                  <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
  23.208 -                  <SubComponents>
  23.209 -                    <Component class="javax.swing.JEditorPane" name="after">
  23.210 -                      <Properties>
  23.211 -                        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
  23.212 -                          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
  23.213 -                            <EmptyBorder/>
  23.214 -                          </Border>
  23.215 -                        </Property>
  23.216 -                      </Properties>
  23.217 -                    </Component>
  23.218 -                  </SubComponents>
  23.219 -                </Container>
  23.220 -              </SubComponents>
  23.221 -            </Container>
  23.222 -          </SubComponents>
  23.223 -        </Container>
  23.224 -      </SubComponents>
  23.225 -    </Container>
  23.226 -    <Component class="javax.swing.JLabel" name="jLabel3">
  23.227 -      <Properties>
  23.228 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  23.229 -          <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="PreviewPanel.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  23.230 -        </Property>
  23.231 -      </Properties>
  23.232 -    </Component>
  23.233 -  </SubComponents>
  23.234 -</Form>
    24.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/PreviewPanel.java	Wed Sep 12 17:19:28 2012 +0200
    24.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.3 @@ -1,408 +0,0 @@
    24.4 -/*
    24.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    24.6 - *
    24.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    24.8 - *
    24.9 - * The contents of this file are subject to the terms of either the GNU
   24.10 - * General Public License Version 2 only ("GPL") or the Common
   24.11 - * Development and Distribution License("CDDL") (collectively, the
   24.12 - * "License"). You may not use this file except in compliance with the
   24.13 - * License. You can obtain a copy of the License at
   24.14 - * http://www.netbeans.org/cddl-gplv2.html
   24.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   24.16 - * specific language governing permissions and limitations under the
   24.17 - * License.  When distributing the software, include this License Header
   24.18 - * Notice in each file and include the License file at
   24.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   24.20 - * particular file as subject to the "Classpath" exception as provided
   24.21 - * by Sun in the GPL Version 2 section of the License file that
   24.22 - * accompanied this code. If applicable, add the following below the
   24.23 - * License Header, with the fields enclosed by brackets [] replaced by
   24.24 - * your own identifying information:
   24.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   24.26 - *
   24.27 - * If you wish your version of this file to be governed by only the CDDL
   24.28 - * or only the GPL Version 2, indicate your decision by adding
   24.29 - * "[Contributor] elects to include this software in this distribution
   24.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   24.31 - * single choice of license, a recipient has the option to distribute
   24.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   24.33 - * to extend the choice of license to its licensees as provided above.
   24.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   24.35 - * Version 2 license, then the option applies only if the new code is
   24.36 - * made subject to such option by the copyright holder.
   24.37 - *
   24.38 - * Contributor(s):
   24.39 - *
   24.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   24.41 - */
   24.42 -package org.netbeans.modules.licensechanger;
   24.43 -
   24.44 -import java.awt.EventQueue;
   24.45 -import java.beans.PropertyChangeEvent;
   24.46 -import java.beans.PropertyChangeListener;
   24.47 -import java.io.BufferedInputStream;
   24.48 -import java.io.ByteArrayOutputStream;
   24.49 -import java.io.IOException;
   24.50 -import java.io.InputStream;
   24.51 -import java.io.PrintWriter;
   24.52 -import java.io.UnsupportedEncodingException;
   24.53 -import java.nio.charset.Charset;
   24.54 -import java.util.HashSet;
   24.55 -import java.util.Map;
   24.56 -import java.util.Set;
   24.57 -import org.netbeans.api.queries.FileEncodingQuery;
   24.58 -import org.netbeans.modules.licensechanger.FileChildren.FileItem;
   24.59 -import org.netbeans.modules.licensechanger.api.FileHandler;
   24.60 -import org.openide.explorer.ExplorerManager;
   24.61 -import org.openide.filesystems.FileObject;
   24.62 -import org.openide.filesystems.FileUtil;
   24.63 -import org.openide.nodes.AbstractNode;
   24.64 -import org.openide.nodes.Children;
   24.65 -import org.openide.nodes.Node;
   24.66 -import org.openide.util.RequestProcessor;
   24.67 -import org.openide.util.RequestProcessor.Task;
   24.68 -import org.openide.util.Utilities;
   24.69 -
   24.70 -/**
   24.71 - *
   24.72 - * @author Tim Boudreau
   24.73 - */
   24.74 -public class PreviewPanel extends javax.swing.JPanel implements ExplorerManager.Provider, PropertyChangeListener, NodeCheckObserver {
   24.75 -
   24.76 -    private final ExplorerManager mgr = new ExplorerManager();
   24.77 -    private ItemLoader loader;
   24.78 -    private String licenseText;
   24.79 -    private Map<Object, Object> settings;
   24.80 -    public static final String KEY_ITEMS = "fileItems";
   24.81 -
   24.82 -    public PreviewPanel(Map<Object, Object> settings) {
   24.83 -        this.settings = settings;
   24.84 -        Set<FileObject> folders = (Set<FileObject>) settings.get(SelectFoldersPanel.KEY_FOLDERS);
   24.85 -        this.licenseText = (String) settings.get(LicenseChooserPanel.KEY_LICENSE_TEXT);
   24.86 -        initComponents();
   24.87 -        Children kids = Children.create(new FileChildren(folders, settings), true);
   24.88 -        mgr.setRootContext(new AbstractNode(kids));
   24.89 -        mgr.addPropertyChangeListener(this);
   24.90 -        view().setNodeCheckObserver(this);
   24.91 -        jLabel3.setText ("  ");
   24.92 -    }
   24.93 -
   24.94 -    private void updateItems() {
   24.95 -        Set<FileItem> s = new HashSet<FileItem>();
   24.96 -        for (Node n : mgr.getRootContext().getChildren().getNodes(true)) {
   24.97 -            if (Boolean.TRUE.equals(n.getValue(CheckboxListView.SELECTED))) {
   24.98 -                s.addAll(n.getLookup().lookupAll(FileItem.class));
   24.99 -            }
  24.100 -        }
  24.101 -        settings.put(KEY_ITEMS, s);
  24.102 -    }
  24.103 -
  24.104 -    private CheckboxListView view() {
  24.105 -        return (CheckboxListView) fileList;
  24.106 -    }
  24.107 -
  24.108 -    public void setLicenseText(String licenseText) {
  24.109 -        this.licenseText = licenseText;
  24.110 -    }
  24.111 -
  24.112 -    /** This method is called from within the constructor to
  24.113 -     * initialize the form.
  24.114 -     * WARNING: Do NOT modify this code. The content of this method is
  24.115 -     * always regenerated by the Form Editor.
  24.116 -     */
  24.117 -    @SuppressWarnings("unchecked")
  24.118 -    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  24.119 -    private void initComponents() {
  24.120 -
  24.121 -        jSplitPane1 = new javax.swing.JSplitPane();
  24.122 -        fileList = new CheckboxListView();
  24.123 -        jSplitPane2 = new javax.swing.JSplitPane();
  24.124 -        jPanel1 = new javax.swing.JPanel();
  24.125 -        jLabel1 = new javax.swing.JLabel();
  24.126 -        jScrollPane1 = new javax.swing.JScrollPane();
  24.127 -        before = new javax.swing.JEditorPane();
  24.128 -        jPanel2 = new javax.swing.JPanel();
  24.129 -        jLabel2 = new javax.swing.JLabel();
  24.130 -        jScrollPane2 = new javax.swing.JScrollPane();
  24.131 -        after = new javax.swing.JEditorPane();
  24.132 -        jLabel3 = new javax.swing.JLabel();
  24.133 -
  24.134 -        jSplitPane1.setDividerLocation(200);
  24.135 -        jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
  24.136 -        jSplitPane1.setResizeWeight(0.5);
  24.137 -
  24.138 -        fileList.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
  24.139 -        jSplitPane1.setTopComponent(fileList);
  24.140 -
  24.141 -        jSplitPane2.setDividerLocation(295);
  24.142 -        jSplitPane2.setResizeWeight(0.5);
  24.143 -
  24.144 -        jLabel1.setText(org.openide.util.NbBundle.getMessage(PreviewPanel.class, "PreviewPanel.jLabel1.text")); // NOI18N
  24.145 -
  24.146 -        jScrollPane1.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 0, 0, 0, javax.swing.UIManager.getDefaults().getColor("controlShadow")));
  24.147 -
  24.148 -        before.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
  24.149 -        jScrollPane1.setViewportView(before);
  24.150 -
  24.151 -        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
  24.152 -        jPanel1.setLayout(jPanel1Layout);
  24.153 -        jPanel1Layout.setHorizontalGroup(
  24.154 -            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  24.155 -            .add(jPanel1Layout.createSequentialGroup()
  24.156 -                .addContainerGap()
  24.157 -                .add(jLabel1)
  24.158 -                .addContainerGap(252, Short.MAX_VALUE))
  24.159 -            .add(org.jdesktop.layout.GroupLayout.TRAILING, jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 294, Short.MAX_VALUE)
  24.160 -        );
  24.161 -        jPanel1Layout.setVerticalGroup(
  24.162 -            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  24.163 -            .add(jPanel1Layout.createSequentialGroup()
  24.164 -                .addContainerGap()
  24.165 -                .add(jLabel1)
  24.166 -                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
  24.167 -                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 161, Short.MAX_VALUE))
  24.168 -        );
  24.169 -
  24.170 -        jSplitPane2.setLeftComponent(jPanel1);
  24.171 -
  24.172 -        jLabel2.setText(org.openide.util.NbBundle.getMessage(PreviewPanel.class, "PreviewPanel.jLabel2.text")); // NOI18N
  24.173 -
  24.174 -        jScrollPane2.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 0, 0, 0, javax.swing.UIManager.getDefaults().getColor("controlShadow")));
  24.175 -        jScrollPane2.setViewportBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
  24.176 -
  24.177 -        after.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
  24.178 -        jScrollPane2.setViewportView(after);
  24.179 -
  24.180 -        org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
  24.181 -        jPanel2.setLayout(jPanel2Layout);
  24.182 -        jPanel2Layout.setHorizontalGroup(
  24.183 -            jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  24.184 -            .add(jPanel2Layout.createSequentialGroup()
  24.185 -                .addContainerGap()
  24.186 -                .add(jLabel2)
  24.187 -                .addContainerGap(205, Short.MAX_VALUE))
  24.188 -            .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 240, Short.MAX_VALUE)
  24.189 -        );
  24.190 -        jPanel2Layout.setVerticalGroup(
  24.191 -            jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  24.192 -            .add(jPanel2Layout.createSequentialGroup()
  24.193 -                .addContainerGap()
  24.194 -                .add(jLabel2)
  24.195 -                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
  24.196 -                .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 161, Short.MAX_VALUE))
  24.197 -        );
  24.198 -
  24.199 -        jSplitPane2.setRightComponent(jPanel2);
  24.200 -
  24.201 -        jSplitPane1.setRightComponent(jSplitPane2);
  24.202 -
  24.203 -        jLabel3.setText(org.openide.util.NbBundle.getMessage(PreviewPanel.class, "PreviewPanel.jLabel3.text")); // NOI18N
  24.204 -
  24.205 -        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
  24.206 -        this.setLayout(layout);
  24.207 -        layout.setHorizontalGroup(
  24.208 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  24.209 -            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
  24.210 -                .addContainerGap()
  24.211 -                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
  24.212 -                    .add(org.jdesktop.layout.GroupLayout.LEADING, jSplitPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 543, Short.MAX_VALUE)
  24.213 -                    .add(org.jdesktop.layout.GroupLayout.LEADING, jLabel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 543, Short.MAX_VALUE))
  24.214 -                .addContainerGap())
  24.215 -        );
  24.216 -        layout.setVerticalGroup(
  24.217 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  24.218 -            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
  24.219 -                .addContainerGap()
  24.220 -                .add(jSplitPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
  24.221 -                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
  24.222 -                .add(jLabel3))
  24.223 -        );
  24.224 -    }// </editor-fold>//GEN-END:initComponents
  24.225 -    // Variables declaration - do not modify//GEN-BEGIN:variables
  24.226 -    private javax.swing.JEditorPane after;
  24.227 -    private javax.swing.JEditorPane before;
  24.228 -    private javax.swing.JScrollPane fileList;
  24.229 -    private javax.swing.JLabel jLabel1;
  24.230 -    private javax.swing.JLabel jLabel2;
  24.231 -    private javax.swing.JLabel jLabel3;
  24.232 -    private javax.swing.JPanel jPanel1;
  24.233 -    private javax.swing.JPanel jPanel2;
  24.234 -    private javax.swing.JScrollPane jScrollPane1;
  24.235 -    private javax.swing.JScrollPane jScrollPane2;
  24.236 -    private javax.swing.JSplitPane jSplitPane1;
  24.237 -    private javax.swing.JSplitPane jSplitPane2;
  24.238 -    // End of variables declaration//GEN-END:variables
  24.239 -
  24.240 -    public ExplorerManager getExplorerManager() {
  24.241 -        return mgr;
  24.242 -    }
  24.243 -
  24.244 -    public void propertyChange(PropertyChangeEvent evt) {
  24.245 -        if (ExplorerManager.PROP_SELECTED_NODES.equals(evt.getPropertyName())) {
  24.246 -            Node[] n = mgr.getSelectedNodes();
  24.247 -            if (n.length > 0) {
  24.248 -                FileItem item = n[0].getLookup().lookup(FileItem.class);
  24.249 -                if (item != null) {
  24.250 -                    setFileItem(item);
  24.251 -                    // XXX use FileUtil.getFileDisplayName rather than FileObject.getPath
  24.252 -                    jLabel3.setText (item.file.getPath());
  24.253 -                } else {
  24.254 -                    before.setText("");
  24.255 -                    jLabel3.setText ("  ");
  24.256 -                }
  24.257 -            } else {
  24.258 -                before.setText("");
  24.259 -                after.setText("");
  24.260 -                jLabel3.setText("  ");
  24.261 -            }
  24.262 -        }
  24.263 -    }
  24.264 -
  24.265 -    private void setFileItem(FileItem item) {
  24.266 -        if (item.file.isValid()) {
  24.267 -            // XXX should use Diff API instead (like refactoring preview)
  24.268 -            before.setContentType("text/plain");
  24.269 -            after.setContentType("text/plain");
  24.270 -            before.setText("Loading " + item.file.getPath());
  24.271 -            after.setText("Loading " + item.file.getPath());
  24.272 -            ItemLoader ldr = new ItemLoader(item);
  24.273 -            setLoader(ldr);
  24.274 -        }
  24.275 -    }
  24.276 -
  24.277 -    private synchronized void setLoader(ItemLoader ldr) {
  24.278 -        if (loader != null) {
  24.279 -            loader.cancel();
  24.280 -        }
  24.281 -        this.loader = ldr;
  24.282 -        loader.start();
  24.283 -    }
  24.284 -
  24.285 -    public void onNodeChecked(Node node) {
  24.286 -        updateItems();
  24.287 -    }
  24.288 -
  24.289 -    public void onNodeUnchecked(Node node) {
  24.290 -        updateItems();
  24.291 -    }
  24.292 -
  24.293 -    static String loadFile(FileObject file) throws IOException {
  24.294 -        Charset encoding = FileEncodingQuery.getEncoding(file);
  24.295 -        InputStream in = new BufferedInputStream(file.getInputStream());
  24.296 -        ByteArrayOutputStream out = new ByteArrayOutputStream((int) file.getSize());
  24.297 -        try {
  24.298 -            FileUtil.copy(in, out);
  24.299 -            try {
  24.300 -                String result = new String(out.toByteArray(), encoding.name());
  24.301 -                String sep = System.getProperty ("line.separator");
  24.302 -                //Convert everything internally to use \n
  24.303 -                if (!"\n".equals(sep) && sep != null) {
  24.304 -                    return Utilities.replaceString(result, sep, "\n");
  24.305 -                } else {
  24.306 -                    return result;
  24.307 -                }
  24.308 -            } catch (UnsupportedEncodingException q) {
  24.309 -                return new String(out.toByteArray(), FileEncodingQuery.getDefaultEncoding().name());
  24.310 -            }
  24.311 -        } finally {
  24.312 -            in.close();
  24.313 -            out.close();
  24.314 -        }
  24.315 -    }
  24.316 -
  24.317 -    private class ItemLoader implements Runnable {
  24.318 -
  24.319 -        private final Task task;
  24.320 -        private volatile boolean cancelled;
  24.321 -        private final FileItem item;
  24.322 -        private volatile String beforeText = "Cancelled";
  24.323 -        private volatile String afterText = "Cancelled";
  24.324 -
  24.325 -        public ItemLoader(FileItem item) {
  24.326 -            this.item = item;
  24.327 -            task = RequestProcessor.getDefault().create(this);
  24.328 -        }
  24.329 -
  24.330 -        void start() {
  24.331 -            task.schedule(200);
  24.332 -        }
  24.333 -
  24.334 -        public void cancel() {
  24.335 -            cancelled = true;
  24.336 -            task.cancel();
  24.337 -        }
  24.338 -
  24.339 -        private void loadFile() throws IOException {
  24.340 -            beforeText = PreviewPanel.loadFile(item.file);
  24.341 -        }
  24.342 -
  24.343 -        public void run() {
  24.344 -            if (cancelled) {
  24.345 -                return;
  24.346 -            }
  24.347 -            if (!EventQueue.isDispatchThread()) {
  24.348 -                try {
  24.349 -                    if (cancelled) {
  24.350 -                        return;
  24.351 -                    }
  24.352 -                    if (!item.file.isValid()) {
  24.353 -                        beforeText = "Invalid file";
  24.354 -                        afterText = "Invalid file";
  24.355 -                        return;
  24.356 -                    }
  24.357 -                    if (!item.file.canRead()) {
  24.358 -                        beforeText = "Cannot read " + item.file.getPath();
  24.359 -                        afterText = "Cannot read " + item.file.getPath();
  24.360 -                        return;
  24.361 -                    }
  24.362 -                    if (item.file.getSize() >= Integer.MAX_VALUE) {
  24.363 -                        beforeText = "File too long: " + item.file.getPath();
  24.364 -                        afterText = "File too long: " + item.file.getPath();
  24.365 -                        return;
  24.366 -                    }
  24.367 -                    if (item.file.getSize() == 0) {
  24.368 -                        beforeText = "Empty file";
  24.369 -                        afterText = "Empty file";
  24.370 -                        return;
  24.371 -                    }
  24.372 -                    if (cancelled) {
  24.373 -                        return;
  24.374 -                    }
  24.375 -                    try {
  24.376 -                        loadFile();
  24.377 -                    } catch (IOException ex) {
  24.378 -                        ByteArrayOutputStream out = new ByteArrayOutputStream();
  24.379 -                        PrintWriter w = new PrintWriter(out);
  24.380 -                        ex.printStackTrace(w);
  24.381 -                        beforeText = new String(out.toByteArray());
  24.382 -                        afterText = "Error";
  24.383 -                        return;
  24.384 -                    }
  24.385 -                    if (cancelled) {
  24.386 -                        return;
  24.387 -                    }
  24.388 -                    if (beforeText.length() == 0) {
  24.389 -                        afterText = "";
  24.390 -                        return;
  24.391 -                    }
  24.392 -                    afterText = transform(beforeText, item.handler);
  24.393 -                } finally {
  24.394 -                    if (!cancelled) {
  24.395 -                        EventQueue.invokeLater(this);
  24.396 -                    }
  24.397 -                }
  24.398 -            } else {
  24.399 -                String contentType = item.file.getMIMEType();
  24.400 -                before.setContentType(contentType);
  24.401 -                after.setContentType(contentType);
  24.402 -                before.setText(beforeText);
  24.403 -                after.setText(afterText);
  24.404 -            }
  24.405 -        }
  24.406 -
  24.407 -        private String transform(String beforeText, FileHandler handler) {
  24.408 -            return handler.transform(beforeText, licenseText);
  24.409 -        }
  24.410 -    }
  24.411 -}
    25.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/SelectFoldersPanel.form	Wed Sep 12 17:19:28 2012 +0200
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,66 +0,0 @@
    25.4 -<?xml version="1.0" encoding="UTF-8" ?>
    25.5 -
    25.6 -<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    25.7 -  <AuxValues>
    25.8 -    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
    25.9 -    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   25.10 -    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   25.11 -    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   25.12 -    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   25.13 -    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
   25.14 -    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   25.15 -    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   25.16 -    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   25.17 -  </AuxValues>
   25.18 -
   25.19 -  <Layout>
   25.20 -    <DimensionLayout dim="0">
   25.21 -      <Group type="103" groupAlignment="0" attributes="0">
   25.22 -          <Group type="102" alignment="0" attributes="0">
   25.23 -              <EmptySpace max="-2" attributes="0"/>
   25.24 -              <Group type="103" groupAlignment="0" attributes="0">
   25.25 -                  <Component id="jScrollPane1" alignment="0" pref="541" max="32767" attributes="0"/>
   25.26 -                  <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
   25.27 -              </Group>
   25.28 -              <EmptySpace max="-2" attributes="0"/>
   25.29 -          </Group>
   25.30 -      </Group>
   25.31 -    </DimensionLayout>
   25.32 -    <DimensionLayout dim="1">
   25.33 -      <Group type="103" groupAlignment="0" attributes="0">
   25.34 -          <Group type="102" alignment="0" attributes="0">
   25.35 -              <EmptySpace max="-2" attributes="0"/>
   25.36 -              <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
   25.37 -              <EmptySpace min="-2" pref="9" max="-2" attributes="0"/>
   25.38 -              <Component id="jScrollPane1" pref="364" max="32767" attributes="0"/>
   25.39 -              <EmptySpace max="-2" attributes="0"/>
   25.40 -          </Group>
   25.41 -      </Group>
   25.42 -    </DimensionLayout>
   25.43 -  </Layout>
   25.44 -  <SubComponents>
   25.45 -    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
   25.46 -      <Properties>
   25.47 -        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   25.48 -          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
   25.49 -            <LineBorder>
   25.50 -              <Color PropertyName="color" blue="99" green="a8" id="controlShadow" palette="3" red="ac" type="palette"/>
   25.51 -            </LineBorder>
   25.52 -          </Border>
   25.53 -        </Property>
   25.54 -      </Properties>
   25.55 -      <AuxValues>
   25.56 -        <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new CheckboxListView()"/>
   25.57 -      </AuxValues>
   25.58 -
   25.59 -      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
   25.60 -    </Container>
   25.61 -    <Component class="javax.swing.JLabel" name="jLabel1">
   25.62 -      <Properties>
   25.63 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   25.64 -          <ResourceString bundle="org/netbeans/modules/licensechanger/Bundle.properties" key="SelectFoldersPanel.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   25.65 -        </Property>
   25.66 -      </Properties>
   25.67 -    </Component>
   25.68 -  </SubComponents>
   25.69 -</Form>
    26.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/SelectFoldersPanel.java	Wed Sep 12 17:19:28 2012 +0200
    26.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.3 @@ -1,168 +0,0 @@
    26.4 -/*
    26.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    26.6 - *
    26.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    26.8 - *
    26.9 - * The contents of this file are subject to the terms of either the GNU
   26.10 - * General Public License Version 2 only ("GPL") or the Common
   26.11 - * Development and Distribution License("CDDL") (collectively, the
   26.12 - * "License"). You may not use this file except in compliance with the
   26.13 - * License. You can obtain a copy of the License at
   26.14 - * http://www.netbeans.org/cddl-gplv2.html
   26.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   26.16 - * specific language governing permissions and limitations under the
   26.17 - * License.  When distributing the software, include this License Header
   26.18 - * Notice in each file and include the License file at
   26.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   26.20 - * particular file as subject to the "Classpath" exception as provided
   26.21 - * by Sun in the GPL Version 2 section of the License file that
   26.22 - * accompanied this code. If applicable, add the following below the
   26.23 - * License Header, with the fields enclosed by brackets [] replaced by
   26.24 - * your own identifying information:
   26.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   26.26 - *
   26.27 - * If you wish your version of this file to be governed by only the CDDL
   26.28 - * or only the GPL Version 2, indicate your decision by adding
   26.29 - * "[Contributor] elects to include this software in this distribution
   26.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   26.31 - * single choice of license, a recipient has the option to distribute
   26.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   26.33 - * to extend the choice of license to its licensees as provided above.
   26.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   26.35 - * Version 2 license, then the option applies only if the new code is
   26.36 - * made subject to such option by the copyright holder.
   26.37 - *
   26.38 - * Contributor(s):
   26.39 - *
   26.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   26.41 - */
   26.42 -package org.netbeans.modules.licensechanger;
   26.43 -
   26.44 -import java.util.HashSet;
   26.45 -import java.util.Map;
   26.46 -import java.util.Set;
   26.47 -import org.openide.explorer.ExplorerManager;
   26.48 -import org.openide.filesystems.FileObject;
   26.49 -import org.openide.nodes.AbstractNode;
   26.50 -import org.openide.nodes.Children;
   26.51 -import org.openide.nodes.Node;
   26.52 -
   26.53 -/**
   26.54 - *
   26.55 - * @author Tim Boudreau
   26.56 - */
   26.57 -public class SelectFoldersPanel extends javax.swing.JPanel implements ExplorerManager.Provider, NodeCheckObserver {
   26.58 -    private final ExplorerManager mgr = new ExplorerManager();
   26.59 -    public static final String KEY_FOLDERS = "folders";
   26.60 -    private final Map<Object, Object> settings;
   26.61 -
   26.62 -    public SelectFoldersPanel(FileObject[] roots, Map<Object,Object> settings) {
   26.63 -        this.settings = settings;
   26.64 -        initComponents();
   26.65 -        AbstractNode root = new AbstractNode (Children.create(new FolderChildren(roots) {
   26.66 -            @Override
   26.67 -            public void onAllNodesCreated() {
   26.68 -                enableUI();
   26.69 -                updateFolders();
   26.70 -            }
   26.71 -        }, true));
   26.72 -        mgr.setRootContext(root);
   26.73 -        view().setCheckboxesVisible(false);
   26.74 -        view().setCheckboxesEnabled(false);
   26.75 -        view().setListEnabled(false);
   26.76 -        view().setNodeCheckObserver(this);
   26.77 -    }
   26.78 -
   26.79 -    private void updateFolders() {
   26.80 -        Set <FileObject> folders = new HashSet<FileObject>();
   26.81 -        for (Node n : mgr.getRootContext().getChildren().getNodes(true)) {
   26.82 -            if (Boolean.TRUE.equals(n.getValue(CheckboxListView.SELECTED))) {
   26.83 -                FileObject f = n.getLookup().lookup(FileObject.class);
   26.84 -                if (f != null) {
   26.85 -                    folders.add(f);
   26.86 -                }
   26.87 -            }
   26.88 -        }
   26.89 -        settings.put (KEY_FOLDERS, folders);
   26.90 -    }
   26.91 -
   26.92 -    private void enableUI() {
   26.93 -        view().setCheckboxesVisible(true);
   26.94 -        view().setCheckboxesEnabled(true);
   26.95 -        jLabel1.setEnabled(true);
   26.96 -        view().setListEnabled(true);
   26.97 -    }
   26.98 -
   26.99 -    private CheckboxListView view() {
  26.100 -        return (CheckboxListView) jScrollPane1;
  26.101 -    }
  26.102 -
  26.103 -    public Set<? extends FileObject> getFolders() {
  26.104 -        Set<FileObject> result = new HashSet<FileObject>();
  26.105 -        for (Node n : mgr.getRootContext().getChildren().getNodes(true)) {
  26.106 -            if (Boolean.TRUE.equals(n.getValue(CheckboxListView.SELECTED))) {
  26.107 -                FileObject f = n.getLookup().lookup(FileObject.class);
  26.108 -                if (f != null) {
  26.109 -                    result.add(f);
  26.110 -                }
  26.111 -            }
  26.112 -        }
  26.113 -        return result;
  26.114 -    }
  26.115 -
  26.116 -    /** This method is called from within the constructor to
  26.117 -     * initialize the form.
  26.118 -     * WARNING: Do NOT modify this code. The content of this method is
  26.119 -     * always regenerated by the Form Editor.
  26.120 -     */
  26.121 -    @SuppressWarnings("unchecked")
  26.122 -    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  26.123 -    private void initComponents() {
  26.124 -
  26.125 -        jScrollPane1 = new CheckboxListView();
  26.126 -        jLabel1 = new javax.swing.JLabel();
  26.127 -
  26.128 -        jScrollPane1.setBorder(javax.swing.BorderFactory.createLineBorder(javax.swing.UIManager.getDefaults().getColor("controlShadow")));
  26.129 -
  26.130 -        jLabel1.setText(org.openide.util.NbBundle.getMessage(SelectFoldersPanel.class, "SelectFoldersPanel.jLabel1.text")); // NOI18N
  26.131 -
  26.132 -        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
  26.133 -        this.setLayout(layout);
  26.134 -        layout.setHorizontalGroup(
  26.135 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.136 -            .add(layout.createSequentialGroup()
  26.137 -                .addContainerGap()
  26.138 -                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.139 -                    .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 541, Short.MAX_VALUE)
  26.140 -                    .add(jLabel1))
  26.141 -                .addContainerGap())
  26.142 -        );
  26.143 -        layout.setVerticalGroup(
  26.144 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  26.145 -            .add(layout.createSequentialGroup()
  26.146 -                .addContainerGap()
  26.147 -                .add(jLabel1)
  26.148 -                .add(9, 9, 9)
  26.149 -                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE)
  26.150 -                .addContainerGap())
  26.151 -        );
  26.152 -    }// </editor-fold>//GEN-END:initComponents
  26.153 -
  26.154 -
  26.155 -    // Variables declaration - do not modify//GEN-BEGIN:variables
  26.156 -    private javax.swing.JLabel jLabel1;
  26.157 -    private javax.swing.JScrollPane jScrollPane1;
  26.158 -    // End of variables declaration//GEN-END:variables
  26.159 -
  26.160 -    public ExplorerManager getExplorerManager() {
  26.161 -        return mgr;
  26.162 -    }
  26.163 -
  26.164 -    public void onNodeChecked(Node node) {
  26.165 -        updateFolders();
  26.166 -    }
  26.167 -
  26.168 -    public void onNodeUnchecked(Node node) {
  26.169 -        updateFolders();
  26.170 -    }
  26.171 -}
    27.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/WizardPP.java	Wed Sep 12 17:19:28 2012 +0200
    27.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.3 @@ -1,201 +0,0 @@
    27.4 -/*
    27.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    27.6 - *
    27.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    27.8 - *
    27.9 - * The contents of this file are subject to the terms of either the GNU
   27.10 - * General Public License Version 2 only ("GPL") or the Common
   27.11 - * Development and Distribution License("CDDL") (collectively, the
   27.12 - * "License"). You may not use this file except in compliance with the
   27.13 - * License. You can obtain a copy of the License at
   27.14 - * http://www.netbeans.org/cddl-gplv2.html
   27.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   27.16 - * specific language governing permissions and limitations under the
   27.17 - * License.  When distributing the software, include this License Header
   27.18 - * Notice in each file and include the License file at
   27.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   27.20 - * particular file as subject to the "Classpath" exception as provided
   27.21 - * by Sun in the GPL Version 2 section of the License file that
   27.22 - * accompanied this code. If applicable, add the following below the
   27.23 - * License Header, with the fields enclosed by brackets [] replaced by
   27.24 - * your own identifying information:
   27.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   27.26 - *
   27.27 - * If you wish your version of this file to be governed by only the CDDL
   27.28 - * or only the GPL Version 2, indicate your decision by adding
   27.29 - * "[Contributor] elects to include this software in this distribution
   27.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   27.31 - * single choice of license, a recipient has the option to distribute
   27.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   27.33 - * to extend the choice of license to its licensees as provided above.
   27.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   27.35 - * Version 2 license, then the option applies only if the new code is
   27.36 - * made subject to such option by the copyright holder.
   27.37 - *
   27.38 - * Contributor(s):
   27.39 - *
   27.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   27.41 - */
   27.42 -package org.netbeans.modules.licensechanger;
   27.43 -
   27.44 -import java.io.BufferedOutputStream;
   27.45 -import java.io.ByteArrayInputStream;
   27.46 -import java.io.IOException;
   27.47 -import java.io.UnsupportedEncodingException;
   27.48 -import java.nio.charset.Charset;
   27.49 -import java.util.HashMap;
   27.50 -import java.util.Map;
   27.51 -import java.util.Set;
   27.52 -import javax.swing.JComponent;
   27.53 -import org.netbeans.api.queries.FileEncodingQuery;
   27.54 -import org.netbeans.modules.licensechanger.FileChildren.FileItem;
   27.55 -import org.netbeans.spi.wizard.DeferredWizardResult;
   27.56 -import org.netbeans.spi.wizard.ResultProgressHandle;
   27.57 -import org.netbeans.spi.wizard.WizardController;
   27.58 -import org.netbeans.spi.wizard.WizardException;
   27.59 -import org.netbeans.spi.wizard.WizardPanelProvider;
   27.60 -import org.openide.filesystems.FileObject;
   27.61 -import org.openide.filesystems.FileUtil;
   27.62 -import org.openide.util.Exceptions;
   27.63 -import org.openide.util.NbBundle;
   27.64 -import org.openide.util.Utilities;
   27.65 -
   27.66 -/**
   27.67 - *
   27.68 - * @author Tim Boudreau
   27.69 - */
   27.70 -class WizardPP extends WizardPanelProvider {
   27.71 -    private FileObject[] roots;
   27.72 -    private enum Steps {
   27.73 -        chooseFileTypes,
   27.74 -        chooseLicense,
   27.75 -        chooseFolders,
   27.76 -        preview;
   27.77 -
   27.78 -        public String getDisplayName() {
   27.79 -            return gs(name());
   27.80 -        }
   27.81 -    }
   27.82 -
   27.83 -    public WizardPP(FileObject[] roots) {
   27.84 -        super(gs("WIZARD_TITLE"), new String[]{
   27.85 -            Steps.chooseFileTypes.name(),
   27.86 -            Steps.chooseLicense.name(),
   27.87 -            Steps.chooseFolders.name(),
   27.88 -            Steps.preview.name(),
   27.89 -        },
   27.90 -                new String[]{
   27.91 -              Steps.chooseFileTypes.getDisplayName(),
   27.92 -              Steps.chooseLicense.getDisplayName(),
   27.93 -              Steps.chooseFolders.getDisplayName(),
   27.94 -              Steps.preview.getDisplayName(),
   27.95 -        });
   27.96 -        this.roots = roots;
   27.97 -    }
   27.98 -
   27.99 -    private static String gs(String key) {
  27.100 -        return NbBundle.getMessage(WizardPP.class, key);
  27.101 -    }
  27.102 -
  27.103 -    @Override
  27.104 -    protected Object finish(Map settings) throws WizardException {
  27.105 -        return new DeferredWizardResult() {
  27.106 -
  27.107 -            @Override
  27.108 -            public void start(Map settings, ResultProgressHandle handle) {
  27.109 -                handle.setBusy("Finding items");
  27.110 -                Set<FileItem> items = (Set<FileItem>) settings.get(PreviewPanel.KEY_ITEMS);
  27.111 -                String licenseText = (String) settings.get(LicenseChooserPanel.KEY_LICENSE_TEXT);
  27.112 -                int ix=0;
  27.113 -                int max = items.size();
  27.114 -                Charset enc;
  27.115 -                for (FileItem item : items) {
  27.116 -                    handle.setProgress(item.getFile().getNameExt(), ix, max);
  27.117 -                    try {
  27.118 -                        String content = PreviewPanel.loadFile(item.file);
  27.119 -                        String nue = item.handler.transform(content, licenseText);
  27.120 -                        nue = convertLineEndings (content, nue);
  27.121 -
  27.122 -                        enc = FileEncodingQuery.getEncoding(item.file);
  27.123 -                        BufferedOutputStream out = new BufferedOutputStream (item.file.getOutputStream());
  27.124 -                        byte[] bytes;
  27.125 -                        try {
  27.126 -                            bytes = nue.getBytes(enc.name());
  27.127 -                        } catch (UnsupportedEncodingException e) {
  27.128 -                            //properties files get resource_bundle_charset
  27.129 -                            bytes = nue.getBytes(FileEncodingQuery.getDefaultEncoding().name());
  27.130 -                        }
  27.131 -                        ByteArrayInputStream in = new ByteArrayInputStream (bytes);
  27.132 -                        try {
  27.133 -                            FileUtil.copy(in, out);
  27.134 -                        } finally {
  27.135 -                            out.close();
  27.136 -                            in.close();
  27.137 -                        }
  27.138 -                    } catch (IOException ex) {
  27.139 -                        Exceptions.printStackTrace(ex);
  27.140 -                    }
  27.141 -                    ix++;
  27.142 -                }
  27.143 -                handle.finished(null);
  27.144 -            }
  27.145 -        };
  27.146 -    }
  27.147 -
  27.148 -    private static String convertLineEndings (String old, String nue) {
  27.149 -        LineEndingPreference pref = LineEndingsPanel.getLineEndingPrefs();
  27.150 -        boolean oldHasCrlf = old.contains("\r\n"); //NOI18N
  27.151 -        switch (pref) {
  27.152 -            case FORCE_CRLF :
  27.153 -                return Utilities.replaceString(nue, "\n", "\r\n"); //NOI18N
  27.154 -            case FORCE_NEWLINE :
  27.155 -                //We already converted everything to newline only on load
  27.156 -                return nue;
  27.157 -            case NO_CHANGE :
  27.158 -                return oldHasCrlf ? Utilities.replaceString(nue, "\n", "\r\n") : //NOI18N
  27.159 -                    nue;
  27.160 -            case SYSTEM_DEFAULT :
  27.161 -                String sep = System.getProperty( "line.separator" ); //NOI18N
  27.162 -                if ("\n".equals(sep)) {
  27.163 -                    return nue;
  27.164 -                } else {
  27.165 -                    return Utilities.replaceString (nue, "\n", sep); //NOI18N
  27.166 -                }
  27.167 -            default :
  27.168 -                throw new AssertionError();
  27.169 -        }
  27.170 -    }
  27.171 -
  27.172 -    @Override
  27.173 -    protected void recycleExistingPanel(String id, WizardController controller, Map wizardData, JComponent panel) {
  27.174 -        //XXX update things
  27.175 -        super.recycleExistingPanel(id, controller, wizardData, panel);
  27.176 -    }
  27.177 -
  27.178 -    Map<Steps, JComponent> panelForStep = new HashMap<Steps, JComponent>();
  27.179 -
  27.180 -    @Override
  27.181 -    protected JComponent createPanel(WizardController arg0, String stepId, Map args) {
  27.182 -        Steps step = Steps.valueOf(stepId);
  27.183 -        JComponent result = panelForStep.get(step);
  27.184 -        if (result == null) {
  27.185 -            switch (step) {
  27.186 -                case chooseFileTypes :
  27.187 -                    result = new ChooseFileTypesPanel(args);
  27.188 -                    break;
  27.189 -                case chooseFolders :
  27.190 -                    result = new SelectFoldersPanel(roots, args);
  27.191 -                    break;
  27.192 -                case chooseLicense :
  27.193 -                    result = new LicenseChooserPanel(args);
  27.194 -                    break;
  27.195 -                case preview :
  27.196 -                    result = new PreviewPanel(args);
  27.197 -                    break;
  27.198 -                default :
  27.199 -                    throw new AssertionError();
  27.200 -            }
  27.201 -        }
  27.202 -        return result;
  27.203 -    }
  27.204 -}
    28.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/api/FileHandler.java	Wed Sep 12 17:19:28 2012 +0200
    28.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/api/FileHandler.java	Fri Sep 14 00:27:52 2012 -0400
    28.3 @@ -38,16 +38,27 @@
    28.4   */
    28.5  package org.netbeans.modules.licensechanger.api;
    28.6  
    28.7 +import java.io.IOException;
    28.8 +import java.io.StringWriter;
    28.9  import java.util.ArrayList;
   28.10 +import java.util.Date;
   28.11  import java.util.List;
   28.12 +import java.util.Properties;
   28.13  import java.util.regex.Matcher;
   28.14  import java.util.regex.Pattern;
   28.15 -import org.netbeans.modules.licensechanger.*;
   28.16 +import javax.script.Bindings;
   28.17 +import javax.script.ScriptEngine;
   28.18 +import javax.script.ScriptEngineManager;
   28.19 +import javax.script.ScriptException;
   28.20 +import org.netbeans.modules.licensechanger.spi.wizard.utils.Offsets;
   28.21  import org.openide.filesystems.FileObject;
   28.22 +import org.openide.filesystems.FileUtil;
   28.23 +import org.openide.util.Exceptions;
   28.24  
   28.25  /**
   28.26   *
   28.27   * @author Tim Boudreau
   28.28 + * @author Nils Hoffmann (Refactoring, Freemarker Variables, resolveLicenseTemplate)
   28.29   */
   28.30  public abstract class FileHandler {
   28.31  
   28.32 @@ -61,24 +72,113 @@
   28.33  
   28.34      protected abstract String escape(String licenseText);
   28.35  
   28.36 +    protected abstract String licenseFirst();
   28.37 +
   28.38 +    protected abstract String licensePrefix();
   28.39 +
   28.40 +    protected abstract String licenseLast();
   28.41 +
   28.42 +    /**
   28.43 +     * Uses the freemarker template engine to resolve the licenseText. If no
   28.44 +     * freemarker script engine is found, a {@link RuntimeException} is thrown.
   28.45 +     * This method will access user information under {@code Templates/Properties/User.properties}
   28.46 +     * in order to resolve various tokens, e.g. 'user'. If that file does not
   28.47 +     * exist, a {@link RuntimeException} will be thrown, wrapping the original {@link IOException}.
   28.48 +     * Should the freemarker engine encounter a {@link ScriptException}, this
   28.49 +     * will also be wrapped in a {@link RuntimeException}.
   28.50 +     *
   28.51 +     * @param licenseText
   28.52 +     * @return the resolved licenseText
   28.53 +     * @throws RuntimeException
   28.54 +     */
   28.55 +    public String resolveLicenseTemplate(String licenseText) throws RuntimeException {
   28.56 +        if (licenseText.contains("${licenseFirst}") && licenseText.contains("${licensePrefix}") && licenseText.contains("${licenseLast}")) {
   28.57 +            System.out.println("License is a freemarker template!");
   28.58 +            //freemarker template
   28.59 +            ScriptEngineManager sem = new ScriptEngineManager();
   28.60 +            ScriptEngine se = sem.getEngineByName("freemarker");
   28.61 +            if (se != null) {
   28.62 +                Bindings bindings = se.createBindings();
   28.63 +                FileObject licenseTemplates = FileUtil.getConfigFile("Templates/Properties/User.properties");
   28.64 +                Properties props = new Properties();
   28.65 +                try {
   28.66 +                    props.load(licenseTemplates.getInputStream());
   28.67 +                    for (String key : props.stringPropertyNames()) {
   28.68 +                        bindings.put(key, props.getProperty(key));
   28.69 +                    }
   28.70 +                } catch (IOException ex) {
   28.71 +                    Exceptions.printStackTrace(ex);
   28.72 +                    throw new RuntimeException(ex);
   28.73 +                }
   28.74 +                bindings.put("licenseFirst", licenseFirst());
   28.75 +                bindings.put("licensePrefix", licensePrefix());
   28.76 +                bindings.put("licenseLast", licenseLast());
   28.77 +                bindings.put("date", new Date());
   28.78 +                if (props.containsKey("project.organization")) {
   28.79 +                    Project project = new Project(props.getProperty("project.organization"));
   28.80 +                    System.out.println("Using project.organization: " + props.getProperty("project.organization"));
   28.81 +                    bindings.put("project", project);
   28.82 +                    bindings.put("user", null);
   28.83 +                } else {
   28.84 +                    String user = props.getProperty("user", System.getProperty("user.name"));
   28.85 +                    System.out.println("Using user: " + user);
   28.86 +                    bindings.put("project", new Project(null));
   28.87 +                    bindings.put("user", user);
   28.88 +                }
   28.89 +                StringWriter writer = new StringWriter();
   28.90 +                try {
   28.91 +                    se.getContext().setWriter(writer);
   28.92 +                    se.eval(licenseText, bindings);
   28.93 +                    return writer.toString();
   28.94 +                } catch (ScriptException ex) {
   28.95 +                    Exceptions.printStackTrace(ex);
   28.96 +                    throw new RuntimeException(ex);
   28.97 +                }
   28.98 +            } else {
   28.99 +                throw new RuntimeException("Could not find script engine 'freemarker'!");
  28.100 +            }
  28.101 +        } else if (licenseText.contains(licenseFirst()) && licenseText.contains(licensePrefix()) && licenseText.contains(licenseLast())) {
  28.102 +            System.out.println("License is already escaped!");
  28.103 +            //probably already escaped
  28.104 +            return licenseText;
  28.105 +        } else {
  28.106 +            System.out.println("License is plain!");
  28.107 +            //unescaped
  28.108 +            return escape(licenseText);
  28.109 +        }
  28.110 +    }
  28.111 +
  28.112      public String transform(String origText, String licenseText) {
  28.113          Offsets offsets = getReplaceOffsets(origText);
  28.114          System.err.println("Will delete from " + offsets.getStart() + " to " + offsets.getEnd());
  28.115          StringBuilder after = new StringBuilder(origText);
  28.116 -        String escaped = escape(licenseText);
  28.117 +        String escaped = resolveLicenseTemplate(licenseText);
  28.118          after.delete(offsets.getStart(), offsets.getEnd());
  28.119          after.insert(offsets.getStart(), escaped);
  28.120          return after.toString();
  28.121      }
  28.122  
  28.123 +    /**
  28.124 +     * Freemarker expects project.organization to be the field 'organization' in
  28.125 +     * an object. This provided a thin wrapper for that.
  28.126 +     */
  28.127 +    private class Project {
  28.128 +
  28.129 +        public String organization;
  28.130 +
  28.131 +        public Project(String organization) {
  28.132 +            this.organization = organization;
  28.133 +        }
  28.134 +    }
  28.135      static Pattern p = Pattern.compile("(.*?)\\n|\\z", Pattern.UNIX_LINES);
  28.136 -    public static String[] splitIntoLines (CharSequence content) {
  28.137 -        List <String> result = new ArrayList<String>(40);
  28.138 +
  28.139 +    public static String[] splitIntoLines(CharSequence content) {
  28.140 +        List<String> result = new ArrayList<String>(40);
  28.141          Matcher m = p.matcher(content);
  28.142          while (m.find()) {
  28.143              if (m.groupCount() == 1) {
  28.144                  if (m.group(1) != null) {
  28.145 -                    result.add (m.group(1));
  28.146 +                    result.add(m.group(1));
  28.147                  }
  28.148              }
  28.149          }
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/api/LicenseHeader.java	Fri Sep 14 00:27:52 2012 -0400
    29.3 @@ -0,0 +1,167 @@
    29.4 +/*
    29.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    29.6 + *
    29.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    29.8 + *
    29.9 + * The contents of this file are subject to the terms of either the GNU
   29.10 + * General Public License Version 2 only ("GPL") or the Common
   29.11 + * Development and Distribution License("CDDL") (collectively, the
   29.12 + * "License"). You may not use this file except in compliance with the
   29.13 + * License. You can obtain a copy of the License at
   29.14 + * http://www.netbeans.org/cddl-gplv2.html
   29.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   29.16 + * specific language governing permissions and limitations under the
   29.17 + * License.  When distributing the software, include this License Header
   29.18 + * Notice in each file and include the License file at
   29.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   29.20 + * particular file as subject to the "Classpath" exception as provided
   29.21 + * by Sun in the GPL Version 2 section of the License file that
   29.22 + * accompanied this code. If applicable, add the following below the
   29.23 + * License Header, with the fields enclosed by brackets [] replaced by
   29.24 + * your own identifying information:
   29.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   29.26 + *
   29.27 + * If you wish your version of this file to be governed by only the CDDL
   29.28 + * or only the GPL Version 2, indicate your decision by adding
   29.29 + * "[Contributor] elects to include this software in this distribution
   29.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   29.31 + * single choice of license, a recipient has the option to distribute
   29.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   29.33 + * to extend the choice of license to its licensees as provided above.
   29.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   29.35 + * Version 2 license, then the option applies only if the new code is
   29.36 + * made subject to such option by the copyright holder.
   29.37 + *
   29.38 + * Contributor(s):
   29.39 + *
   29.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   29.41 + */
   29.42 +
   29.43 +package org.netbeans.modules.licensechanger.api;
   29.44 +
   29.45 +import java.io.*;
   29.46 +import java.nio.charset.Charset;
   29.47 +import java.util.Collection;
   29.48 +import java.util.LinkedList;
   29.49 +import java.util.List;
   29.50 +import org.openide.filesystems.FileObject;
   29.51 +import org.openide.filesystems.FileUtil;
   29.52 +import org.openide.util.Exceptions;
   29.53 +
   29.54 +/**
   29.55 + * License header resource/file abstraction class with static 
   29.56 + * methods to load a license header from file or registered license template.
   29.57 + * @author Nils Hoffmann
   29.58 + */
   29.59 +public final class LicenseHeader {
   29.60 + 
   29.61 +    public static LicenseHeader fromFileObject(FileObject file, String licenseName, boolean isNetBeansTemplate) {
   29.62 +        String name = licenseName==null?file.getName():licenseName;
   29.63 +        String content;
   29.64 +        InputStream in = null;
   29.65 +        try {
   29.66 +            in = new BufferedInputStream(file.getInputStream());
   29.67 +            ByteArrayOutputStream out = new ByteArrayOutputStream();
   29.68 +            FileUtil.copy(in, out);
   29.69 +            content = new String(out.toByteArray());
   29.70 +            LicenseHeader header = new LicenseHeader(name, content, file, isNetBeansTemplate);
   29.71 +            return header;
   29.72 +        } catch (IOException ex) {
   29.73 +            Exceptions.printStackTrace(ex);
   29.74 +            return null;
   29.75 +        } finally {
   29.76 +            try {
   29.77 +                if(in!=null) {
   29.78 +                    in.close();
   29.79 +                }
   29.80 +            } catch (IOException ex) {
   29.81 +                Exceptions.printStackTrace(ex);
   29.82 +            }
   29.83 +        }
   29.84 +    }
   29.85 +    
   29.86 +    public static LicenseHeader fromFileObject(FileObject file, String licenseName) {
   29.87 +        return fromFileObject(file, licenseName, false);
   29.88 +    }
   29.89 +    
   29.90 +    public static LicenseHeader fromFile(File file) {
   29.91 +        return fromFileObject(FileUtil.toFileObject(file),null);
   29.92 +    }
   29.93 +    
   29.94 +    public static Collection<? extends LicenseHeader> fromTemplates() {
   29.95 +        FileObject licenseTemplates = FileUtil.getConfigFile("Templates/Licenses");
   29.96 +        List<LicenseHeader> templateLicenses = new LinkedList<LicenseHeader>();
   29.97 +        for(FileObject license:licenseTemplates.getChildren()) {
   29.98 +            String name = license.getName();
   29.99 +            name = name.substring("license-".length());
  29.100 +            LicenseHeader licenseHeader = LicenseHeader.fromFileObject(license,name,true);
  29.101 +            if(licenseHeader.getLicenseHeader() == null || licenseHeader.getLicenseHeader().isEmpty()) {
  29.102 +                System.err.println("License file "+name+" seems to be empty! Skipping...");
  29.103 +            }else{
  29.104 +                licenseHeader.setIsNetBeansTemplate(true);
  29.105 +                templateLicenses.add(licenseHeader);
  29.106 +            }
  29.107 +        }
  29.108 +        return templateLicenses;
  29.109 +    }
  29.110 +    
  29.111 +    public static void addAsNetBeansTemplate(LicenseHeader header) {
  29.112 +        String filename = "license-"+header.getName()+".txt";
  29.113 +        FileObject licenseTemplates = FileUtil.getConfigFile("Templates/Licenses");
  29.114 +        BufferedWriter bos = null;
  29.115 +        try {
  29.116 +            FileObject templateFile = licenseTemplates.createData(filename);
  29.117 +            bos = new BufferedWriter(new OutputStreamWriter(templateFile.getOutputStream(),Charset.forName("UTF-8")));
  29.118 +            bos.write(header.getLicenseHeader());
  29.119 +            header.setIsNetBeansTemplate(true);
  29.120 +        } catch (IOException ex) {
  29.121 +            Exceptions.printStackTrace(ex);
  29.122 +        } finally {
  29.123 +            try {
  29.124 +                if(bos!=null) {
  29.125 +                    bos.close();
  29.126 +                }
  29.127 +            } catch (IOException ex) {
  29.128 +                Exceptions.printStackTrace(ex);
  29.129 +            }
  29.130 +        }
  29.131 +    }
  29.132 +    
  29.133 +    private final String name;
  29.134 +    private final String licenseHeader;
  29.135 +    private final FileObject fo;
  29.136 +    private boolean isNetBeansTemplate = false;
  29.137 +
  29.138 +    private LicenseHeader(String name, String licenseHeader, FileObject fo, boolean isNetBeansTemplate) {
  29.139 +        this.name = name;
  29.140 +        this.licenseHeader = licenseHeader;
  29.141 +        this.fo = fo;
  29.142 +        this.isNetBeansTemplate = isNetBeansTemplate;
  29.143 +    }
  29.144 +    
  29.145 +    public String getName() {
  29.146 +        return name;
  29.147 +    }
  29.148 +    
  29.149 +    public String getLicenseHeader() {
  29.150 +        return licenseHeader;
  29.151 +    }
  29.152 +
  29.153 +    public FileObject getFileObject() {
  29.154 +        return this.fo;
  29.155 +    }
  29.156 +
  29.157 +    public boolean isIsNetBeansTemplate() {
  29.158 +        return isNetBeansTemplate;
  29.159 +    }
  29.160 +
  29.161 +    public void setIsNetBeansTemplate(boolean isNetBeansTemplate) {
  29.162 +        this.isNetBeansTemplate = isNetBeansTemplate;
  29.163 +    }
  29.164 +
  29.165 +    @Override
  29.166 +    public String toString() {
  29.167 +        return name;
  29.168 +    }
  29.169 +    
  29.170 +}
    30.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/api/RegexpFileHandler.java	Wed Sep 12 17:19:28 2012 +0200
    30.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/api/RegexpFileHandler.java	Fri Sep 14 00:27:52 2012 -0400
    30.3 @@ -39,9 +39,9 @@
    30.4  
    30.5  package org.netbeans.modules.licensechanger.api;
    30.6  
    30.7 -import org.netbeans.modules.licensechanger.*;
    30.8  import java.util.regex.Matcher;
    30.9  import java.util.regex.Pattern;
   30.10 +import org.netbeans.modules.licensechanger.spi.wizard.utils.Offsets;
   30.11  
   30.12  /**
   30.13   *
    31.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/handlers/Bundle.properties	Wed Sep 12 17:19:28 2012 +0200
    31.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.3 @@ -1,42 +0,0 @@
    31.4 -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    31.5 -#
    31.6 -# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    31.7 -#
    31.8 -# The contents of this file are subject to the terms of either the GNU
    31.9 -# General Public License Version 2 only ("GPL") or the Common
   31.10 -# Development and Distribution License("CDDL") (collectively, the
   31.11 -# "License"). You may not use this file except in compliance with the
   31.12 -# License. You can obtain a copy of the License at
   31.13 -# http://www.netbeans.org/cddl-gplv2.html
   31.14 -# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   31.15 -# specific language governing permissions and limitations under the
   31.16 -# License.  When distributing the software, include this License Header
   31.17 -# Notice in each file and include the License file at
   31.18 -# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   31.19 -# particular file as subject to the "Classpath" exception as provided
   31.20 -# by Sun in the GPL Version 2 section of the License file that
   31.21 -# accompanied this code. If applicable, add the following below the
   31.22 -# License Header, with the fields enclosed by brackets [] replaced by
   31.23 -# your own identifying information:
   31.24 -# "Portions Copyrighted [year] [name of copyright owner]"
   31.25 -#
   31.26 -# If you wish your version of this file to be governed by only the CDDL
   31.27 -# or only the GPL Version 2, indicate your decision by adding
   31.28 -# "[Contributor] elects to include this software in this distribution
   31.29 -# under the [CDDL or GPL Version 2] license." If you do not indicate a
   31.30 -# single choice of license, a recipient has the option to distribute
   31.31 -# your version of this file under either the CDDL, the GPL Version 2 or
   31.32 -# to extend the choice of license to its licensees as provided above.
   31.33 -# However, if you add GPL Version 2 code and therefore, elected the GPL
   31.34 -# Version 2 license, then the option applies only if the new code is
   31.35 -# made subject to such option by the copyright holder.
   31.36 -#
   31.37 -# Contributor(s):
   31.38 -#
   31.39 -# Portions Copyrighted 2009 Sun Microsystems, Inc.
   31.40 -NAME_JAVA_FILES=Java Files
   31.41 -NAME_JAVAFX_FILES=JavaFX Files
   31.42 -NAME_PROPERTIES_FILES=Properties Files
   31.43 -NAME_XML_FILES=XML Files
   31.44 -XmlHandlerCustomizer.beforeButton.text=Insert License Before XML Declaration
   31.45 -XmlHandlerCustomizer.afterButton.text=Insert License After XML Declaration
    32.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/handlers/JavaFileHandler.java	Wed Sep 12 17:19:28 2012 +0200
    32.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.3 @@ -1,197 +0,0 @@
    32.4 -/*
    32.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    32.6 - *
    32.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    32.8 - *
    32.9 - * The contents of this file are subject to the terms of either the GNU
   32.10 - * General Public License Version 2 only ("GPL") or the Common
   32.11 - * Development and Distribution License("CDDL") (collectively, the
   32.12 - * "License"). You may not use this file except in compliance with the
   32.13 - * License. You can obtain a copy of the License at
   32.14 - * http://www.netbeans.org/cddl-gplv2.html
   32.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   32.16 - * specific language governing permissions and limitations under the
   32.17 - * License.  When distributing the software, include this License Header
   32.18 - * Notice in each file and include the License file at
   32.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   32.20 - * particular file as subject to the "Classpath" exception as provided
   32.21 - * by Sun in the GPL Version 2 section of the License file that
   32.22 - * accompanied this code. If applicable, add the following below the
   32.23 - * License Header, with the fields enclosed by brackets [] replaced by
   32.24 - * your own identifying information:
   32.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   32.26 - *
   32.27 - * If you wish your version of this file to be governed by only the CDDL
   32.28 - * or only the GPL Version 2, indicate your decision by adding
   32.29 - * "[Contributor] elects to include this software in this distribution
   32.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   32.31 - * single choice of license, a recipient has the option to distribute
   32.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   32.33 - * to extend the choice of license to its licensees as provided above.
   32.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   32.35 - * Version 2 license, then the option applies only if the new code is
   32.36 - * made subject to such option by the copyright holder.
   32.37 - *
   32.38 - * Contributor(s):
   32.39 - *
   32.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   32.41 - */
   32.42 -package org.netbeans.modules.licensechanger.handlers;
   32.43 -
   32.44 -import org.netbeans.modules.licensechanger.Offsets;
   32.45 -import org.netbeans.modules.licensechanger.api.FileHandler;
   32.46 -import org.openide.filesystems.FileObject;
   32.47 -import org.openide.util.NbBundle;
   32.48 -
   32.49 -/**
   32.50 - *
   32.51 - * @author Tim Boudreau
   32.52 - */
   32.53 -@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
   32.54 -public class JavaFileHandler extends FileHandler {
   32.55 -
   32.56 -    public String getDisplayName() {
   32.57 -        return NbBundle.getMessage(JavaFileHandler.class, "NAME_JAVA_FILES"); //NOI18N
   32.58 -    }
   32.59 -
   32.60 -    @Override
   32.61 -    public boolean match(FileObject file) {
   32.62 -        return "text/x-java".equals(file.getMIMEType()); //NOI18N
   32.63 -    }
   32.64 -
   32.65 -    @Override
   32.66 -    public boolean shouldSkipFile(FileObject file) {
   32.67 -        return false;
   32.68 -    }
   32.69 -
   32.70 -    @Override
   32.71 -    protected Offsets getReplaceOffsets(CharSequence seq) {
   32.72 -        String[] lines = splitIntoLines(seq);
   32.73 -        LineVisitor v = new LineVisitor();
   32.74 -        for (int i=0; i < lines.length; i++) {
   32.75 -            String line = lines[i];
   32.76 -            if (!v.visitLine(line)) {
   32.77 -                break;
   32.78 -            }
   32.79 -        }
   32.80 -        return new Offsets (0, v.delCount);
   32.81 -    }
   32.82 -
   32.83 -    private static final class LineVisitor {
   32.84 -        private boolean inComment;
   32.85 -        int delCount;
   32.86 -        public boolean visitLine (String line) {
   32.87 -            String trimmed = line.trim();
   32.88 -            if (trimmed.startsWith("//") || trimmed.startsWith("/*") && trimmed.endsWith("*/")) {
   32.89 -                return visitCommentLine(line);
   32.90 -            } else if (trimmed.length() == 0) {
   32.91 -                return visitEmptyLine (line);
   32.92 -            } else if (inComment) {
   32.93 -                return visitLineInComment (line);
   32.94 -            } else {
   32.95 -                return visitLineAndTestForComment (line);
   32.96 -            }
   32.97 -        }
   32.98 -
   32.99 -        private boolean visitCommentLine(String line) {
  32.100 -            delCount += line.length() + 1;
  32.101 -            return true;
  32.102 -        }
  32.103 -
  32.104 -        private boolean visitEmptyLine(String line) {
  32.105 -            delCount += line.length() + 1;
  32.106 -            return true;
  32.107 -        }
  32.108 -
  32.109 -        private boolean visitLineAndTestForComment(String line) {
  32.110 -            if (line.trim().startsWith("/*")) {
  32.111 -                inComment = true;
  32.112 -                delCount += line.length() + 1;
  32.113 -                return true;
  32.114 -            }
  32.115 -            return false;
  32.116 -        }
  32.117 -
  32.118 -        private boolean visitLineInComment(String line) {
  32.119 -            if (line.trim().endsWith("*/")) {
  32.120 -                inComment = false;
  32.121 -                delCount += line.length() + 1;
  32.122 -                return true;
  32.123 -            }
  32.124 -            int ix = line.indexOf("*/");
  32.125 -            if (ix >= 0) {
  32.126 -                delCount += ix + 2;
  32.127 -                return false;
  32.128 -            } else {
  32.129 -                delCount += line.length() + 1;
  32.130 -                return true;
  32.131 -            }
  32.132 -        }
  32.133 -    }
  32.134 -
  32.135 -
  32.136 -//    @Override
  32.137 -//    protected Offsets getReplaceOffsets(CharSequence seq) {
  32.138 -//        int end2 = 0;
  32.139 -//        boolean inComment = false;
  32.140 -//        boolean maybeLast = false;
  32.141 -//        int lineLen;
  32.142 -//        for (StringTokenizer tok = new StringTokenizer(seq.toString(), "\n", true); tok.hasMoreTokens();) {
  32.143 -//            String line = tok.nextToken();
  32.144 -//            lineLen = line.length();
  32.145 -//            System.err.println("InComment? " + inComment + " Check line: " + line);
  32.146 -//            String trimmed = line.trim();
  32.147 -//            boolean lineWasComment = trimmed.length() == 0 || trimmed.startsWith("//");
  32.148 -//            System.err.println("  was comment? " + lineWasComment);
  32.149 -//            if (maybeLast && !lineWasComment && !trimmed.startsWith("/*")) {
  32.150 -//                break;
  32.151 -//            }
  32.152 -//            if (!lineWasComment && !inComment) {
  32.153 -//                int cmtStartIx = trimmed.indexOf("/*");
  32.154 -//                if (cmtStartIx >= 0) {
  32.155 -//                    int cmtEndIx = trimmed.indexOf("*/");
  32.156 -//                    if (cmtEndIx < 0) {
  32.157 -//                        inComment = true;
  32.158 -//                    } else if (trimmed.endsWith("*/")) {
  32.159 -//                        inComment = false;
  32.160 -//                        lineWasComment = true;
  32.161 -//                        continue;
  32.162 -//                    }
  32.163 -//                }
  32.164 -//            } else if (!lineWasComment && inComment) {
  32.165 -//                int cmtEndIx = line.indexOf("*/");
  32.166 -//                if (cmtEndIx >= 0 && !trimmed.endsWith("*/")) {
  32.167 -//                    // e.g.   blah blah */package foo.bar;
  32.168 -//                    break;
  32.169 -//                } else if (cmtEndIx > 0) {
  32.170 -//                    maybeLast = true;
  32.171 -//                    inComment = false;
  32.172 -//                }
  32.173 -//            }
  32.174 -//            if (!lineWasComment && !inComment && !maybeLast) {
  32.175 -//                break;
  32.176 -//            }
  32.177 -//            end2 += lineLen;
  32.178 -//        }
  32.179 -//        return new Offsets(0, end2);
  32.180 -//    }
  32.181 -
  32.182 -    protected String escape(String licenseText) {
  32.183 -        StringBuilder sb = new StringBuilder(licenseText.length() + 30);
  32.184 -        String[] lines = splitIntoLines (licenseText);
  32.185 -        sb.append ("/*\n");
  32.186 -        for (int i = 0; i < lines.length; i++) {
  32.187 -            String line = lines[i];
  32.188 -            boolean empty = line.trim().length() == 0;
  32.189 -            if (empty) {
  32.190 -                sb.append (" *");
  32.191 -            } else {
  32.192 -                sb.append (" * ");
  32.193 -                sb.append (line);
  32.194 -            }
  32.195 -            sb.append("\n");
  32.196 -        }
  32.197 -        sb.append(" */\n");
  32.198 -        return sb.toString();
  32.199 -    }
  32.200 -}
    33.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/handlers/JavaFxFileHandler.java	Wed Sep 12 17:19:28 2012 +0200
    33.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.3 @@ -1,57 +0,0 @@
    33.4 -/*
    33.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    33.6 - *
    33.7 - * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
    33.8 - *
    33.9 - * The contents of this file are subject to the terms of either the GNU
   33.10 - * General Public License Version 2 only ("GPL") or the Common
   33.11 - * Development and Distribution License("CDDL") (collectively, the
   33.12 - * "License"). You may not use this file except in compliance with the
   33.13 - * License. You can obtain a copy of the License at
   33.14 - * http://www.netbeans.org/cddl-gplv2.html
   33.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   33.16 - * specific language governing permissions and limitations under the
   33.17 - * License.  When distributing the software, include this License Header
   33.18 - * Notice in each file and include the License file at
   33.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   33.20 - * particular file as subject to the "Classpath" exception as provided
   33.21 - * by Sun in the GPL Version 2 section of the License file that
   33.22 - * accompanied this code. If applicable, add the following below the
   33.23 - * License Header, with the fields enclosed by brackets [] replaced by
   33.24 - * your own identifying information:
   33.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   33.26 - *
   33.27 - * If you wish your version of this file to be governed by only the CDDL
   33.28 - * or only the GPL Version 2, indicate your decision by adding
   33.29 - * "[Contributor] elects to include this software in this distribution
   33.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   33.31 - * single choice of license, a recipient has the option to distribute
   33.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   33.33 - * to extend the choice of license to its licensees as provided above.
   33.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   33.35 - * Version 2 license, then the option applies only if the new code is
   33.36 - * made subject to such option by the copyright holder.
   33.37 - *
   33.38 - * Contributor(s):
   33.39 - *
   33.40 - * Portions Copyrighted 2010 Sun Microsystems, Inc.
   33.41 - */
   33.42 -
   33.43 -package org.netbeans.modules.licensechanger.handlers;
   33.44 -
   33.45 -import org.openide.filesystems.FileObject;
   33.46 -import org.openide.util.NbBundle;
   33.47 -
   33.48 -@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
   33.49 -public class JavaFxFileHandler extends JavaFileHandler {
   33.50 -    @Override
   33.51 -    public String getDisplayName() {
   33.52 -        return NbBundle.getMessage(JavaFxFileHandler.class, "NAME_JAVAFX_FILES"); //NOI18N
   33.53 -    }
   33.54 -
   33.55 -    @Override
   33.56 -    public boolean match(FileObject file) {
   33.57 -        return "text/x-fx".equals(file.getMIMEType()); //NOI18N
   33.58 -    }
   33.59 -}
   33.60 -
    34.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/handlers/PropertiesFileHandler.java	Wed Sep 12 17:19:28 2012 +0200
    34.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.3 @@ -1,106 +0,0 @@
    34.4 -/*
    34.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    34.6 - *
    34.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    34.8 - *
    34.9 - * The contents of this file are subject to the terms of either the GNU
   34.10 - * General Public License Version 2 only ("GPL") or the Common
   34.11 - * Development and Distribution License("CDDL") (collectively, the
   34.12 - * "License"). You may not use this file except in compliance with the
   34.13 - * License. You can obtain a copy of the License at
   34.14 - * http://www.netbeans.org/cddl-gplv2.html
   34.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   34.16 - * specific language governing permissions and limitations under the
   34.17 - * License.  When distributing the software, include this License Header
   34.18 - * Notice in each file and include the License file at
   34.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   34.20 - * particular file as subject to the "Classpath" exception as provided
   34.21 - * by Sun in the GPL Version 2 section of the License file that
   34.22 - * accompanied this code. If applicable, add the following below the
   34.23 - * License Header, with the fields enclosed by brackets [] replaced by
   34.24 - * your own identifying information:
   34.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   34.26 - *
   34.27 - * If you wish your version of this file to be governed by only the CDDL
   34.28 - * or only the GPL Version 2, indicate your decision by adding
   34.29 - * "[Contributor] elects to include this software in this distribution
   34.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   34.31 - * single choice of license, a recipient has the option to distribute
   34.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   34.33 - * to extend the choice of license to its licensees as provided above.
   34.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   34.35 - * Version 2 license, then the option applies only if the new code is
   34.36 - * made subject to such option by the copyright holder.
   34.37 - *
   34.38 - * Contributor(s):
   34.39 - *
   34.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   34.41 - */
   34.42 -
   34.43 -package org.netbeans.modules.licensechanger.handlers;
   34.44 -
   34.45 -import org.netbeans.modules.licensechanger.Offsets;
   34.46 -import org.netbeans.modules.licensechanger.api.FileHandler;
   34.47 -import org.openide.filesystems.FileObject;
   34.48 -import org.openide.util.NbBundle;
   34.49 -
   34.50 -/**
   34.51 - * License transformer for properties files
   34.52 - *
   34.53 - * @author Tim Boudreau
   34.54 - */
   34.55 -@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
   34.56 -public class PropertiesFileHandler extends FileHandler {
   34.57 -
   34.58 -    public String getDisplayName() {
   34.59 -        return NbBundle.getMessage (JavaFileHandler.class, "NAME_PROPERTIES_FILES"); //NOI18N
   34.60 -    }
   34.61 -
   34.62 -    @Override
   34.63 -    public boolean match(FileObject file) {
   34.64 -        return "properties".equals (file.getExt());
   34.65 -    }
   34.66 -
   34.67 -    @Override
   34.68 -    public boolean shouldSkipFile(FileObject file) {
   34.69 -        String n = file.getNameExt();
   34.70 -        return "project.properties".equals(n) || "private.properties".equals(n) || //NOI18N
   34.71 -                "platform-private.properties".equals(n) || "genfiles.properties".equals(n)
   34.72 -                || "config.properties".equals(n) || "nblibraries-private.properties".equals(n) ||
   34.73 -                "nblibraries.properties".equals(n); //NOI18N
   34.74 -    }
   34.75 -
   34.76 -    @Override
   34.77 -    protected Offsets getReplaceOffsets(CharSequence seq) {
   34.78 -        String[] lines = splitIntoLines(seq);
   34.79 -        int end = 0;
   34.80 -        for (int i = 0; i < lines.length; i++) {
   34.81 -            String line = lines[i];
   34.82 -            if (line.trim().length() == 0) {
   34.83 -                end += line.length() + 1;
   34.84 -            } else if (line.trim().startsWith("#")) {
   34.85 -                end += line.length() + 1;
   34.86 -            } else {
   34.87 -                break;
   34.88 -            }
   34.89 -        }
   34.90 -        return new Offsets (0, end);
   34.91 -    }
   34.92 -
   34.93 -    @Override
   34.94 -    protected String escape(String licenseText) {
   34.95 -        String[] lines = splitIntoLines(licenseText);
   34.96 -        StringBuilder sb = new StringBuilder();
   34.97 -        for (int i = 0; i < lines.length; i++) {
   34.98 -            String line = lines[i];
   34.99 -            if (line.trim().length() == 0) {
  34.100 -                sb.append ("#");
  34.101 -            } else {
  34.102 -                sb.append ("# ");
  34.103 -                sb.append (line);
  34.104 -            }
  34.105 -            sb.append ("\n");
  34.106 -        }
  34.107 -        return sb.toString();
  34.108 -    }
  34.109 -}
    35.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/handlers/XmlFileHandler.java	Wed Sep 12 17:19:28 2012 +0200
    35.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.3 @@ -1,237 +0,0 @@
    35.4 -/*
    35.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    35.6 - *
    35.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    35.8 - *
    35.9 - * The contents of this file are subject to the terms of either the GNU
   35.10 - * General Public License Version 2 only ("GPL") or the Common
   35.11 - * Development and Distribution License("CDDL") (collectively, the
   35.12 - * "License"). You may not use this file except in compliance with the
   35.13 - * License. You can obtain a copy of the License at
   35.14 - * http://www.netbeans.org/cddl-gplv2.html
   35.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   35.16 - * specific language governing permissions and limitations under the
   35.17 - * License.  When distributing the software, include this License Header
   35.18 - * Notice in each file and include the License file at
   35.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   35.20 - * particular file as subject to the "Classpath" exception as provided
   35.21 - * by Sun in the GPL Version 2 section of the License file that
   35.22 - * accompanied this code. If applicable, add the following below the
   35.23 - * License Header, with the fields enclosed by brackets [] replaced by
   35.24 - * your own identifying information:
   35.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   35.26 - *
   35.27 - * If you wish your version of this file to be governed by only the CDDL
   35.28 - * or only the GPL Version 2, indicate your decision by adding
   35.29 - * "[Contributor] elects to include this software in this distribution
   35.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   35.31 - * single choice of license, a recipient has the option to distribute
   35.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   35.33 - * to extend the choice of license to its licensees as provided above.
   35.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   35.35 - * Version 2 license, then the option applies only if the new code is
   35.36 - * made subject to such option by the copyright holder.
   35.37 - *
   35.38 - * Contributor(s):
   35.39 - *
   35.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   35.41 - */
   35.42 -
   35.43 -package org.netbeans.modules.licensechanger.handlers;
   35.44 -
   35.45 -import java.awt.Component;
   35.46 -import java.io.CharConversionException;
   35.47 -import java.util.regex.Matcher;
   35.48 -import java.util.regex.Pattern;
   35.49 -import org.netbeans.modules.licensechanger.Offsets;
   35.50 -import org.netbeans.modules.licensechanger.api.Customizable;
   35.51 -import org.netbeans.modules.licensechanger.api.FileHandler;
   35.52 -import org.openide.filesystems.FileObject;
   35.53 -import org.openide.util.Exceptions;
   35.54 -import org.openide.util.NbBundle;
   35.55 -import org.openide.util.NbPreferences;
   35.56 -import org.openide.xml.XMLUtil;
   35.57 -
   35.58 -/**
   35.59 - *
   35.60 - * @author Tim Boudreau
   35.61 - */
   35.62 -@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
   35.63 -public class XmlFileHandler extends FileHandler implements Customizable {
   35.64 -
   35.65 -    @Override
   35.66 -    public boolean match(FileObject file) {
   35.67 -        String ext = file.getExt();
   35.68 -        String mime = file.getMIMEType();
   35.69 -        return "xml".equals (file.getExt()) || "text/xml".equals(mime) ||
   35.70 -                "application/xml".equals(mime) || mime.endsWith("+xml");
   35.71 -    }
   35.72 -
   35.73 -    @Override
   35.74 -    public boolean shouldSkipFile(FileObject file) {
   35.75 -        String n = file.getNameExt();
   35.76 -        return "project.xml".equals(n) ||
   35.77 -                "private.xml".equals(n) || "build.xml".equals(n) ||
   35.78 -                "build-impl.xml".equals(n);
   35.79 -    }
   35.80 -
   35.81 -    @Override
   35.82 -    public String getDisplayName() {
   35.83 -        return NbBundle.getMessage(XmlFileHandler.class, "NAME_XML_FILES");
   35.84 -    }
   35.85 -
   35.86 -    @Override
   35.87 -    protected Offsets getReplaceOffsets(CharSequence seq) {
   35.88 -        String[] lines = splitIntoLines(seq);
   35.89 -        LineVisitor v = new LineVisitor();
   35.90 -        for (int i=0; i < lines.length; i++) {
   35.91 -            String line = lines[i];
   35.92 -            if (!v.visitLine(line)) {
   35.93 -                break;
   35.94 -            }
   35.95 -        }
   35.96 -        return new Offsets (v.start, v.delCount);
   35.97 -    }
   35.98 -
   35.99 -    @Override
  35.100 -    protected String escape(String licenseText) {
  35.101 -        try {
  35.102 -            licenseText = XMLUtil.toElementContent(licenseText);
  35.103 -        } catch (CharConversionException ex) {
  35.104 -            Exceptions.printStackTrace(ex);
  35.105 -        }
  35.106 -        return "<!--\n" + licenseText + "\n-->\n";
  35.107 -    }
  35.108 -
  35.109 -    static Pattern xmlDeclaration = Pattern.compile ("(<\\?xml.*?\\?>)");
  35.110 -
  35.111 -    public Component getCustomizer() {
  35.112 -        return new XmlHandlerCustomizer();
  35.113 -    }
  35.114 -
  35.115 -    public static boolean isInsertAtTopOfFile() {
  35.116 -        return NbPreferences.forModule(XmlFileHandler.class).getBoolean("atTop", false);
  35.117 -    }
  35.118 -
  35.119 -    public static void setInsertAtTopOfFile (boolean val) {
  35.120 -        NbPreferences.forModule(XmlFileHandler.class).putBoolean("atTop", val);
  35.121 -    }
  35.122 -
  35.123 -    private static final class XmlDeclarationLocator {
  35.124 -        int declarationStartIndex;
  35.125 -        int declarationEndIndex;
  35.126 -        boolean isMidLine;
  35.127 -        public boolean visitLine(String line) {
  35.128 -            Matcher m = xmlDeclaration.matcher (line);
  35.129 -            if (m.find()) {
  35.130 -                declarationStartIndex += m.start(1);
  35.131 -                declarationEndIndex = declarationStartIndex + m.end(1);
  35.132 -                isMidLine = m.end(1) < line.length() - 1;
  35.133 -                return false;
  35.134 -            } else {
  35.135 -                declarationStartIndex += line.length() + 1;
  35.136 -                return true;
  35.137 -            }
  35.138 -        }
  35.139 -
  35.140 -        boolean foundDeclaration() {
  35.141 -            return declarationEndIndex != 0;
  35.142 -        }
  35.143 -    }
  35.144 -
  35.145 -    @Override
  35.146 -    public String transform(String origText, String licenseText) {
  35.147 -        String[] lines = splitIntoLines(origText);
  35.148 -        XmlDeclarationLocator v = new XmlDeclarationLocator();
  35.149 -        for (int i=0; i < lines.length; i++) {
  35.150 -            if (!v.visitLine(lines[i])) {
  35.151 -                break;
  35.152 -            }
  35.153 -        }
  35.154 -        if (v.foundDeclaration()) {
  35.155 -            StringBuilder sb = new StringBuilder (origText);
  35.156 -            sb.delete(0, v.declarationStartIndex);
  35.157 -            origText = sb.toString();
  35.158 -        }
  35.159 -        String license = escape (licenseText);
  35.160 -        license = "\n" + license;
  35.161 -        StringBuilder sb = new StringBuilder (origText);
  35.162 -        Offsets o = getReplaceOffsets(sb);
  35.163 -        sb.delete(o.getStart(), o.getEnd());
  35.164 -        lines = splitIntoLines(origText);
  35.165 -        v = new XmlDeclarationLocator();
  35.166 -        for (int i=0; i < lines.length; i++) {
  35.167 -            if (!v.visitLine(lines[i])) {
  35.168 -                break;
  35.169 -            }
  35.170 -        }
  35.171 -        if (v.foundDeclaration()) {
  35.172 -            sb.insert(v.declarationEndIndex, license);
  35.173 -        } else {
  35.174 -            sb.insert(isInsertAtTopOfFile() ? 0 : o.getStart(), license);
  35.175 -        }
  35.176 -        return sb.toString();
  35.177 -    }
  35.178 -
  35.179 -
  35.180 -
  35.181 -    private static final class LineVisitor {
  35.182 -        private boolean inComment;
  35.183 -        int delCount;
  35.184 -        int start;
  35.185 -        public boolean visitLine (String line) {
  35.186 -            if (start == 0) {
  35.187 -                if (line.trim().startsWith("<?xml ")) {
  35.188 -                    start += line.length() + 1;
  35.189 -                    delCount += start;
  35.190 -                    return true;
  35.191 -                }
  35.192 -            }
  35.193 -            String trimmed = line.trim();
  35.194 -            if (trimmed.startsWith("<!--") && trimmed.endsWith("-->")) {
  35.195 -                return visitCommentLine(line);
  35.196 -            } else if (trimmed.length() == 0) {
  35.197 -                return visitEmptyLine (line);
  35.198 -            } else if (inComment) {
  35.199 -                return visitLineInComment (line);
  35.200 -            } else {
  35.201 -                return visitLineAndTestForComment (line);
  35.202 -            }
  35.203 -        }
  35.204 -
  35.205 -        private boolean visitCommentLine(String line) {
  35.206 -            delCount += line.length() + 1;
  35.207 -            return true;
  35.208 -        }
  35.209 -
  35.210 -        private boolean visitEmptyLine(String line) {
  35.211 -            delCount += line.length() + 1;
  35.212 -            return true;
  35.213 -        }
  35.214 -
  35.215 -        private boolean visitLineAndTestForComment(String line) {
  35.216 -            if (line.trim().startsWith("<!--")) {
  35.217 -                inComment = true;
  35.218 -                delCount += line.length() + 1;
  35.219 -                return true;
  35.220 -            }
  35.221 -            return false;
  35.222 -        }
  35.223 -
  35.224 -        private boolean visitLineInComment(String line) {
  35.225 -            if (line.trim().endsWith("-->")) {
  35.226 -                inComment = false;
  35.227 -                delCount += line.length() + 1;
  35.228 -                return true;
  35.229 -            }
  35.230 -            int ix = line.indexOf("-->");
  35.231 -            if (ix >= 0) {
  35.232 -                delCount += ix + 3;
  35.233 -                return false;
  35.234 -            } else {
  35.235 -                delCount += line.length() + 1;
  35.236 -                return true;
  35.237 -            }
  35.238 -        }
  35.239 -    }
  35.240 -}
    36.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/handlers/XmlHandlerCustomizer.form	Wed Sep 12 17:19:28 2012 +0200
    36.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.3 @@ -1,74 +0,0 @@
    36.4 -<?xml version="1.0" encoding="UTF-8" ?>
    36.5 -
    36.6 -<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    36.7 -  <NonVisualComponents>
    36.8 -    <Component class="javax.swing.ButtonGroup" name="buttonGroup1">
    36.9 -    </Component>
   36.10 -  </NonVisualComponents>
   36.11 -  <AuxValues>
   36.12 -    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
   36.13 -    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   36.14 -    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   36.15 -    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   36.16 -    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   36.17 -    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
   36.18 -    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   36.19 -    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   36.20 -    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   36.21 -  </AuxValues>
   36.22 -
   36.23 -  <Layout>
   36.24 -    <DimensionLayout dim="0">
   36.25 -      <Group type="103" groupAlignment="0" attributes="0">
   36.26 -          <Group type="102" attributes="0">
   36.27 -              <EmptySpace max="-2" attributes="0"/>
   36.28 -              <Group type="103" groupAlignment="0" attributes="0">
   36.29 -                  <Component id="beforeButton" alignment="0" min="-2" max="-2" attributes="0"/>
   36.30 -                  <Component id="afterButton" alignment="0" min="-2" max="-2" attributes="0"/>
   36.31 -              </Group>
   36.32 -              <EmptySpace max="32767" attributes="0"/>
   36.33 -          </Group>
   36.34 -      </Group>
   36.35 -    </DimensionLayout>
   36.36 -    <DimensionLayout dim="1">
   36.37 -      <Group type="103" groupAlignment="0" attributes="0">
   36.38 -          <Group type="102" alignment="0" attributes="0">
   36.39 -              <EmptySpace max="-2" attributes="0"/>
   36.40 -              <Component id="beforeButton" min="-2" max="-2" attributes="0"/>
   36.41 -              <EmptySpace type="unrelated" max="-2" attributes="0"/>
   36.42 -              <Component id="afterButton" min="-2" max="-2" attributes="0"/>
   36.43 -              <EmptySpace max="32767" attributes="0"/>
   36.44 -          </Group>
   36.45 -      </Group>
   36.46 -    </DimensionLayout>
   36.47 -  </Layout>
   36.48 -  <SubComponents>
   36.49 -    <Component class="javax.swing.JRadioButton" name="beforeButton">
   36.50 -      <Properties>
   36.51 -        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
   36.52 -          <ComponentRef name="buttonGroup1"/>
   36.53 -        </Property>
   36.54 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   36.55 -          <ResourceString bundle="org/netbeans/modules/licensechanger/handlers/Bundle.properties" key="XmlHandlerCustomizer.beforeButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   36.56 -        </Property>
   36.57 -      </Properties>
   36.58 -      <Events>
   36.59 -        <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="licensePreferenceChanged"/>
   36.60 -      </Events>
   36.61 -    </Component>
   36.62 -    <Component class="javax.swing.JRadioButton" name="afterButton">
   36.63 -      <Properties>
   36.64 -        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
   36.65 -          <ComponentRef name="buttonGroup1"/>
   36.66 -        </Property>
   36.67 -        <Property name="selected" type="boolean" value="true"/>
   36.68 -        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   36.69 -          <ResourceString bundle="org/netbeans/modules/licensechanger/handlers/Bundle.properties" key="XmlHandlerCustomizer.afterButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   36.70 -        </Property>
   36.71 -      </Properties>
   36.72 -      <Events>
   36.73 -        <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="licensePreferenceChanged"/>
   36.74 -      </Events>
   36.75 -    </Component>
   36.76 -  </SubComponents>
   36.77 -</Form>
    37.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/handlers/XmlHandlerCustomizer.java	Wed Sep 12 17:19:28 2012 +0200
    37.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.3 @@ -1,119 +0,0 @@
    37.4 -/*
    37.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    37.6 - *
    37.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    37.8 - *
    37.9 - * The contents of this file are subject to the terms of either the GNU
   37.10 - * General Public License Version 2 only ("GPL") or the Common
   37.11 - * Development and Distribution License("CDDL") (collectively, the
   37.12 - * "License"). You may not use this file except in compliance with the
   37.13 - * License. You can obtain a copy of the License at
   37.14 - * http://www.netbeans.org/cddl-gplv2.html
   37.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   37.16 - * specific language governing permissions and limitations under the
   37.17 - * License.  When distributing the software, include this License Header
   37.18 - * Notice in each file and include the License file at
   37.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   37.20 - * particular file as subject to the "Classpath" exception as provided
   37.21 - * by Sun in the GPL Version 2 section of the License file that
   37.22 - * accompanied this code. If applicable, add the following below the
   37.23 - * License Header, with the fields enclosed by brackets [] replaced by
   37.24 - * your own identifying information:
   37.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   37.26 - *
   37.27 - * If you wish your version of this file to be governed by only the CDDL
   37.28 - * or only the GPL Version 2, indicate your decision by adding
   37.29 - * "[Contributor] elects to include this software in this distribution
   37.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   37.31 - * single choice of license, a recipient has the option to distribute
   37.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   37.33 - * to extend the choice of license to its licensees as provided above.
   37.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   37.35 - * Version 2 license, then the option applies only if the new code is
   37.36 - * made subject to such option by the copyright holder.
   37.37 - *
   37.38 - * Contributor(s):
   37.39 - *
   37.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   37.41 - */
   37.42 -package org.netbeans.modules.licensechanger.handlers;
   37.43 -
   37.44 -/**
   37.45 - *
   37.46 - * @author Tim Boudreau
   37.47 - */
   37.48 -public class XmlHandlerCustomizer extends javax.swing.JPanel {
   37.49 -    boolean init;
   37.50 -    /** Creates new form XmlHandlerCustomizer */
   37.51 -    public XmlHandlerCustomizer() {
   37.52 -        initComponents();
   37.53 -        afterButton.setSelected (!XmlFileHandler.isInsertAtTopOfFile());
   37.54 -        beforeButton.setSelected(!afterButton.isSelected());
   37.55 -        init = true;
   37.56 -    }
   37.57 -
   37.58 -    /** This method is called from within the constructor to
   37.59 -     * initialize the form.
   37.60 -     * WARNING: Do NOT modify this code. The content of this method is
   37.61 -     * always regenerated by the Form Editor.
   37.62 -     */
   37.63 -    @SuppressWarnings("unchecked")
   37.64 -    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   37.65 -    private void initComponents() {
   37.66 -
   37.67 -        buttonGroup1 = new javax.swing.ButtonGroup();
   37.68 -        beforeButton = new javax.swing.JRadioButton();
   37.69 -        afterButton = new javax.swing.JRadioButton();
   37.70 -
   37.71 -        buttonGroup1.add(beforeButton);
   37.72 -        beforeButton.setText(org.openide.util.NbBundle.getMessage(XmlHandlerCustomizer.class, "XmlHandlerCustomizer.beforeButton.text")); // NOI18N
   37.73 -        beforeButton.addItemListener(new java.awt.event.ItemListener() {
   37.74 -            public void itemStateChanged(java.awt.event.ItemEvent evt) {
   37.75 -                licensePreferenceChanged(evt);
   37.76 -            }
   37.77 -        });
   37.78 -
   37.79 -        buttonGroup1.add(afterButton);
   37.80 -        afterButton.setSelected(true);
   37.81 -        afterButton.setText(org.openide.util.NbBundle.getMessage(XmlHandlerCustomizer.class, "XmlHandlerCustomizer.afterButton.text")); // NOI18N
   37.82 -        afterButton.addItemListener(new java.awt.event.ItemListener() {
   37.83 -            public void itemStateChanged(java.awt.event.ItemEvent evt) {
   37.84 -                licensePreferenceChanged(evt);
   37.85 -            }
   37.86 -        });
   37.87 -
   37.88 -        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
   37.89 -        this.setLayout(layout);
   37.90 -        layout.setHorizontalGroup(
   37.91 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
   37.92 -            .add(layout.createSequentialGroup()
   37.93 -                .addContainerGap()
   37.94 -                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
   37.95 -                    .add(beforeButton)
   37.96 -                    .add(afterButton))
   37.97 -                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
   37.98 -        );
   37.99 -        layout.setVerticalGroup(
  37.100 -            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
  37.101 -            .add(layout.createSequentialGroup()
  37.102 -                .addContainerGap()
  37.103 -                .add(beforeButton)
  37.104 -                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
  37.105 -                .add(afterButton)
  37.106 -                .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  37.107 -        );
  37.108 -    }// </editor-fold>//GEN-END:initComponents
  37.109 -
  37.110 -    private void licensePreferenceChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_licensePreferenceChanged
  37.111 -        if (!init) return;
  37.112 -        XmlFileHandler.setInsertAtTopOfFile(beforeButton.isSelected());
  37.113 -    }//GEN-LAST:event_licensePreferenceChanged
  37.114 -
  37.115 -
  37.116 -    // Variables declaration - do not modify//GEN-BEGIN:variables
  37.117 -    private javax.swing.JRadioButton afterButton;
  37.118 -    private javax.swing.JRadioButton beforeButton;
  37.119 -    private javax.swing.ButtonGroup buttonGroup1;
  37.120 -    // End of variables declaration//GEN-END:variables
  37.121 -
  37.122 -}
    38.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/layer.xml	Wed Sep 12 17:19:28 2012 +0200
    38.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.3 @@ -1,21 +0,0 @@
    38.4 -<?xml version="1.0" encoding="UTF-8"?>
    38.5 -<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
    38.6 -<filesystem>
    38.7 -    <folder name="Actions">
    38.8 -        <folder name="Tools">
    38.9 -            <file name="org-netbeans-modules-licensechanger-ChangeLicenseAction.instance"/>
   38.10 -        </folder>
   38.11 -    </folder>
   38.12 -    <folder name="Loaders">
   38.13 -        <folder name="folder">
   38.14 -            <folder name="any">
   38.15 -                <folder name="Actions">
   38.16 -                    <file name="org-netbeans-modules-licensechanger-ChangeLicenseAction.shadow">
   38.17 -                        <attr name="originalFile" stringvalue="Actions/Tools/org-netbeans-modules-licensechanger-ChangeLicenseAction.instance"/>
   38.18 -                        <attr name="position" intvalue="951"/>
   38.19 -                    </file>
   38.20 -                </folder>
   38.21 -            </folder>
   38.22 -        </folder>
   38.23 -    </folder>
   38.24 -</filesystem>
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/Bundle.properties	Fri Sep 14 00:27:52 2012 -0400
    39.3 @@ -0,0 +1,42 @@
    39.4 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    39.5 +#
    39.6 +# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    39.7 +#
    39.8 +# The contents of this file are subject to the terms of either the GNU
    39.9 +# General Public License Version 2 only ("GPL") or the Common
   39.10 +# Development and Distribution License("CDDL") (collectively, the
   39.11 +# "License"). You may not use this file except in compliance with the
   39.12 +# License. You can obtain a copy of the License at
   39.13 +# http://www.netbeans.org/cddl-gplv2.html
   39.14 +# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   39.15 +# specific language governing permissions and limitations under the
   39.16 +# License.  When distributing the software, include this License Header
   39.17 +# Notice in each file and include the License file at
   39.18 +# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   39.19 +# particular file as subject to the "Classpath" exception as provided
   39.20 +# by Sun in the GPL Version 2 section of the License file that
   39.21 +# accompanied this code. If applicable, add the following below the
   39.22 +# License Header, with the fields enclosed by brackets [] replaced by
   39.23 +# your own identifying information:
   39.24 +# "Portions Copyrighted [year] [name of copyright owner]"
   39.25 +#
   39.26 +# If you wish your version of this file to be governed by only the CDDL
   39.27 +# or only the GPL Version 2, indicate your decision by adding
   39.28 +# "[Contributor] elects to include this software in this distribution
   39.29 +# under the [CDDL or GPL Version 2] license." If you do not indicate a
   39.30 +# single choice of license, a recipient has the option to distribute
   39.31 +# your version of this file under either the CDDL, the GPL Version 2 or
   39.32 +# to extend the choice of license to its licensees as provided above.
   39.33 +# However, if you add GPL Version 2 code and therefore, elected the GPL
   39.34 +# Version 2 license, then the option applies only if the new code is
   39.35 +# made subject to such option by the copyright holder.
   39.36 +#
   39.37 +# Contributor(s):
   39.38 +#
   39.39 +# Portions Copyrighted 2009 Sun Microsystems, Inc.
   39.40 +NAME_JAVA_FILES=Java Files
   39.41 +NAME_JAVAFX_FILES=JavaFX Files
   39.42 +NAME_PROPERTIES_FILES=Properties Files
   39.43 +NAME_XML_FILES=XML Files
   39.44 +XmlHandlerCustomizer.beforeButton.text=Insert License Before XML Declaration
   39.45 +XmlHandlerCustomizer.afterButton.text=Insert License After XML Declaration
    40.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFileHandler.java	Fri Sep 14 00:27:52 2012 -0400
    40.3 @@ -0,0 +1,214 @@
    40.4 +/*
    40.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    40.6 + *
    40.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    40.8 + *
    40.9 + * The contents of this file are subject to the terms of either the GNU
   40.10 + * General Public License Version 2 only ("GPL") or the Common
   40.11 + * Development and Distribution License("CDDL") (collectively, the
   40.12 + * "License"). You may not use this file except in compliance with the
   40.13 + * License. You can obtain a copy of the License at
   40.14 + * http://www.netbeans.org/cddl-gplv2.html
   40.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   40.16 + * specific language governing permissions and limitations under the
   40.17 + * License.  When distributing the software, include this License Header
   40.18 + * Notice in each file and include the License file at
   40.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   40.20 + * particular file as subject to the "Classpath" exception as provided
   40.21 + * by Sun in the GPL Version 2 section of the License file that
   40.22 + * accompanied this code. If applicable, add the following below the
   40.23 + * License Header, with the fields enclosed by brackets [] replaced by
   40.24 + * your own identifying information:
   40.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   40.26 + *
   40.27 + * If you wish your version of this file to be governed by only the CDDL
   40.28 + * or only the GPL Version 2, indicate your decision by adding
   40.29 + * "[Contributor] elects to include this software in this distribution
   40.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   40.31 + * single choice of license, a recipient has the option to distribute
   40.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   40.33 + * to extend the choice of license to its licensees as provided above.
   40.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   40.35 + * Version 2 license, then the option applies only if the new code is
   40.36 + * made subject to such option by the copyright holder.
   40.37 + *
   40.38 + * Contributor(s):
   40.39 + *
   40.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   40.41 + */
   40.42 +package org.netbeans.modules.licensechanger.spi.handlers;
   40.43 +
   40.44 +import org.netbeans.modules.licensechanger.api.FileHandler;
   40.45 +import org.netbeans.modules.licensechanger.spi.wizard.utils.Offsets;
   40.46 +import org.openide.filesystems.FileObject;
   40.47 +import org.openide.util.NbBundle;
   40.48 +
   40.49 +/**
   40.50 + *
   40.51 + * @author Tim Boudreau
   40.52 + */
   40.53 +@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
   40.54 +public class JavaFileHandler extends FileHandler {
   40.55 +
   40.56 +    @Override
   40.57 +    public String getDisplayName() {
   40.58 +        return NbBundle.getMessage(JavaFileHandler.class, "NAME_JAVA_FILES"); //NOI18N
   40.59 +    }
   40.60 +
   40.61 +    @Override
   40.62 +    public boolean match(FileObject file) {
   40.63 +        return "text/x-java".equals(file.getMIMEType()); //NOI18N
   40.64 +    }
   40.65 +
   40.66 +    @Override
   40.67 +    public boolean shouldSkipFile(FileObject file) {
   40.68 +        return false;
   40.69 +    }
   40.70 +
   40.71 +    @Override
   40.72 +    protected Offsets getReplaceOffsets(CharSequence seq) {
   40.73 +        String[] lines = splitIntoLines(seq);
   40.74 +        LineVisitor v = new LineVisitor();
   40.75 +        for (int i=0; i < lines.length; i++) {
   40.76 +            String line = lines[i];
   40.77 +            if (!v.visitLine(line)) {
   40.78 +                break;
   40.79 +            }
   40.80 +        }
   40.81 +        return new Offsets (0, v.delCount);
   40.82 +    }
   40.83 +
   40.84 +    @Override
   40.85 +    protected String licenseFirst() {
   40.86 +        return "/* ";
   40.87 +    }
   40.88 +
   40.89 +    @Override
   40.90 +    protected String licensePrefix() {
   40.91 +        return " * ";
   40.92 +    }
   40.93 +
   40.94 +    @Override
   40.95 +    protected String licenseLast() {
   40.96 +        return " */";
   40.97 +    }
   40.98 +
   40.99 +    private static final class LineVisitor {
  40.100 +        private boolean inComment;
  40.101 +        int delCount;
  40.102 +        public boolean visitLine (String line) {
  40.103 +            String trimmed = line.trim();
  40.104 +            if (trimmed.startsWith("//") || trimmed.startsWith("/*") && trimmed.endsWith("*/")) {
  40.105 +                return visitCommentLine(line);
  40.106 +            } else if (trimmed.length() == 0) {
  40.107 +                return visitEmptyLine (line);
  40.108 +            } else if (inComment) {
  40.109 +                return visitLineInComment (line);
  40.110 +            } else {
  40.111 +                return visitLineAndTestForComment (line);
  40.112 +            }
  40.113 +        }
  40.114 +
  40.115 +        private boolean visitCommentLine(String line) {
  40.116 +            delCount += line.length() + 1;
  40.117 +            return true;
  40.118 +        }
  40.119 +
  40.120 +        private boolean visitEmptyLine(String line) {
  40.121 +            delCount += line.length() + 1;
  40.122 +            return true;
  40.123 +        }
  40.124 +
  40.125 +        private boolean visitLineAndTestForComment(String line) {
  40.126 +            if (line.trim().startsWith("/*")) {
  40.127 +                inComment = true;
  40.128 +                delCount += line.length() + 1;
  40.129 +                return true;
  40.130 +            }
  40.131 +            return false;
  40.132 +        }
  40.133 +
  40.134 +        private boolean visitLineInComment(String line) {
  40.135 +            if (line.trim().endsWith("*/")) {
  40.136 +                inComment = false;
  40.137 +                delCount += line.length() + 1;
  40.138 +                return true;
  40.139 +            }
  40.140 +            int ix = line.indexOf("*/");
  40.141 +            if (ix >= 0) {
  40.142 +                delCount += ix + 2;
  40.143 +                return false;
  40.144 +            } else {
  40.145 +                delCount += line.length() + 1;
  40.146 +                return true;
  40.147 +            }
  40.148 +        }
  40.149 +    }
  40.150 +
  40.151 +
  40.152 +//    @Override
  40.153 +//    protected Offsets getReplaceOffsets(CharSequence seq) {
  40.154 +//        int end2 = 0;
  40.155 +//        boolean inComment = false;
  40.156 +//        boolean maybeLast = false;
  40.157 +//        int lineLen;
  40.158 +//        for (StringTokenizer tok = new StringTokenizer(seq.toString(), "\n", true); tok.hasMoreTokens();) {
  40.159 +//            String line = tok.nextToken();
  40.160 +//            lineLen = line.length();
  40.161 +//            System.err.println("InComment? " + inComment + " Check line: " + line);
  40.162 +//            String trimmed = line.trim();
  40.163 +//            boolean lineWasComment = trimmed.length() == 0 || trimmed.startsWith("//");
  40.164 +//            System.err.println("  was comment? " + lineWasComment);
  40.165 +//            if (maybeLast && !lineWasComment && !trimmed.startsWith("/*")) {
  40.166 +//                break;
  40.167 +//            }
  40.168 +//            if (!lineWasComment && !inComment) {
  40.169 +//                int cmtStartIx = trimmed.indexOf("/*");
  40.170 +//                if (cmtStartIx >= 0) {
  40.171 +//                    int cmtEndIx = trimmed.indexOf("*/");
  40.172 +//                    if (cmtEndIx < 0) {
  40.173 +//                        inComment = true;
  40.174 +//                    } else if (trimmed.endsWith("*/")) {
  40.175 +//                        inComment = false;
  40.176 +//                        lineWasComment = true;
  40.177 +//                        continue;
  40.178 +//                    }
  40.179 +//                }
  40.180 +//            } else if (!lineWasComment && inComment) {
  40.181 +//                int cmtEndIx = line.indexOf("*/");
  40.182 +//                if (cmtEndIx >= 0 && !trimmed.endsWith("*/")) {
  40.183 +//                    // e.g.   blah blah */package foo.bar;
  40.184 +//                    break;
  40.185 +//                } else if (cmtEndIx > 0) {
  40.186 +//                    maybeLast = true;
  40.187 +//                    inComment = false;
  40.188 +//                }
  40.189 +//            }
  40.190 +//            if (!lineWasComment && !inComment && !maybeLast) {
  40.191 +//                break;
  40.192 +//            }
  40.193 +//            end2 += lineLen;
  40.194 +//        }
  40.195 +//        return new Offsets(0, end2);
  40.196 +//    }
  40.197 +
  40.198 +    @Override
  40.199 +    protected String escape(String licenseText) {
  40.200 +        StringBuilder sb = new StringBuilder(licenseText.length() + 30);
  40.201 +        String[] lines = splitIntoLines (licenseText);
  40.202 +        sb.append ("/*\n");
  40.203 +        for (int i = 0; i < lines.length; i++) {
  40.204 +            String line = lines[i];
  40.205 +            boolean empty = line.trim().length() == 0;
  40.206 +            if (empty) {
  40.207 +                sb.append (" *");
  40.208 +            } else {
  40.209 +                sb.append (" * ");
  40.210 +                sb.append (line);
  40.211 +            }
  40.212 +            sb.append("\n");
  40.213 +        }
  40.214 +        sb.append(" */\n");
  40.215 +        return sb.toString();
  40.216 +    }
  40.217 +}
    41.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFxFileHandler.java	Fri Sep 14 00:27:52 2012 -0400
    41.3 @@ -0,0 +1,57 @@
    41.4 +/*
    41.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    41.6 + *
    41.7 + * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
    41.8 + *
    41.9 + * The contents of this file are subject to the terms of either the GNU
   41.10 + * General Public License Version 2 only ("GPL") or the Common
   41.11 + * Development and Distribution License("CDDL") (collectively, the
   41.12 + * "License"). You may not use this file except in compliance with the
   41.13 + * License. You can obtain a copy of the License at
   41.14 + * http://www.netbeans.org/cddl-gplv2.html
   41.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   41.16 + * specific language governing permissions and limitations under the
   41.17 + * License.  When distributing the software, include this License Header
   41.18 + * Notice in each file and include the License file at
   41.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   41.20 + * particular file as subject to the "Classpath" exception as provided
   41.21 + * by Sun in the GPL Version 2 section of the License file that
   41.22 + * accompanied this code. If applicable, add the following below the
   41.23 + * License Header, with the fields enclosed by brackets [] replaced by
   41.24 + * your own identifying information:
   41.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   41.26 + *
   41.27 + * If you wish your version of this file to be governed by only the CDDL
   41.28 + * or only the GPL Version 2, indicate your decision by adding
   41.29 + * "[Contributor] elects to include this software in this distribution
   41.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   41.31 + * single choice of license, a recipient has the option to distribute
   41.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   41.33 + * to extend the choice of license to its licensees as provided above.
   41.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   41.35 + * Version 2 license, then the option applies only if the new code is
   41.36 + * made subject to such option by the copyright holder.
   41.37 + *
   41.38 + * Contributor(s):
   41.39 + *
   41.40 + * Portions Copyrighted 2010 Sun Microsystems, Inc.
   41.41 + */
   41.42 +
   41.43 +package org.netbeans.modules.licensechanger.spi.handlers;
   41.44 +
   41.45 +import org.openide.filesystems.FileObject;
   41.46 +import org.openide.util.NbBundle;
   41.47 +
   41.48 +@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
   41.49 +public class JavaFxFileHandler extends JavaFileHandler {
   41.50 +    @Override
   41.51 +    public String getDisplayName() {
   41.52 +        return NbBundle.getMessage(JavaFxFileHandler.class, "NAME_JAVAFX_FILES"); //NOI18N
   41.53 +    }
   41.54 +
   41.55 +    @Override
   41.56 +    public boolean match(FileObject file) {
   41.57 +        return "text/x-fx".equals(file.getMIMEType()); //NOI18N
   41.58 +    }
   41.59 +}
   41.60 +
    42.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/PropertiesFileHandler.java	Fri Sep 14 00:27:52 2012 -0400
    42.3 @@ -0,0 +1,122 @@
    42.4 +/*
    42.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    42.6 + *
    42.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    42.8 + *
    42.9 + * The contents of this file are subject to the terms of either the GNU
   42.10 + * General Public License Version 2 only ("GPL") or the Common
   42.11 + * Development and Distribution License("CDDL") (collectively, the
   42.12 + * "License"). You may not use this file except in compliance with the
   42.13 + * License. You can obtain a copy of the License at
   42.14 + * http://www.netbeans.org/cddl-gplv2.html
   42.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   42.16 + * specific language governing permissions and limitations under the
   42.17 + * License.  When distributing the software, include this License Header
   42.18 + * Notice in each file and include the License file at
   42.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   42.20 + * particular file as subject to the "Classpath" exception as provided
   42.21 + * by Sun in the GPL Version 2 section of the License file that
   42.22 + * accompanied this code. If applicable, add the following below the
   42.23 + * License Header, with the fields enclosed by brackets [] replaced by
   42.24 + * your own identifying information:
   42.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   42.26 + *
   42.27 + * If you wish your version of this file to be governed by only the CDDL
   42.28 + * or only the GPL Version 2, indicate your decision by adding
   42.29 + * "[Contributor] elects to include this software in this distribution
   42.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   42.31 + * single choice of license, a recipient has the option to distribute
   42.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   42.33 + * to extend the choice of license to its licensees as provided above.
   42.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   42.35 + * Version 2 license, then the option applies only if the new code is
   42.36 + * made subject to such option by the copyright holder.
   42.37 + *
   42.38 + * Contributor(s):
   42.39 + *
   42.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   42.41 + */
   42.42 +
   42.43 +package org.netbeans.modules.licensechanger.spi.handlers;
   42.44 +
   42.45 +import org.netbeans.modules.licensechanger.api.FileHandler;
   42.46 +import org.netbeans.modules.licensechanger.spi.wizard.utils.Offsets;
   42.47 +import org.openide.filesystems.FileObject;
   42.48 +import org.openide.util.NbBundle;
   42.49 +
   42.50 +/**
   42.51 + * License transformer for properties files
   42.52 + *
   42.53 + * @author Tim Boudreau
   42.54 + */
   42.55 +@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
   42.56 +public class PropertiesFileHandler extends FileHandler {
   42.57 +
   42.58 +    @Override
   42.59 +    public String getDisplayName() {
   42.60 +        return NbBundle.getMessage (JavaFileHandler.class, "NAME_PROPERTIES_FILES"); //NOI18N
   42.61 +    }
   42.62 +
   42.63 +    @Override
   42.64 +    public boolean match(FileObject file) {
   42.65 +        return "properties".equals (file.getExt());
   42.66 +    }
   42.67 +
   42.68 +    @Override
   42.69 +    public boolean shouldSkipFile(FileObject file) {
   42.70 +        String n = file.getNameExt();
   42.71 +        return "project.properties".equals(n) || "private.properties".equals(n) || //NOI18N
   42.72 +                "platform-private.properties".equals(n) || "genfiles.properties".equals(n)
   42.73 +                || "config.properties".equals(n) || "nblibraries-private.properties".equals(n) ||
   42.74 +                "nblibraries.properties".equals(n); //NOI18N
   42.75 +    }
   42.76 +
   42.77 +    @Override
   42.78 +    protected Offsets getReplaceOffsets(CharSequence seq) {
   42.79 +        String[] lines = splitIntoLines(seq);
   42.80 +        int end = 0;
   42.81 +        for (int i = 0; i < lines.length; i++) {
   42.82 +            String line = lines[i];
   42.83 +            if (line.trim().length() == 0) {
   42.84 +                end += line.length() + 1;
   42.85 +            } else if (line.trim().startsWith("#")) {
   42.86 +                end += line.length() + 1;
   42.87 +            } else {
   42.88 +                break;
   42.89 +            }
   42.90 +        }
   42.91 +        return new Offsets (0, end);
   42.92 +    }
   42.93 +
   42.94 +    @Override
   42.95 +    protected String escape(String licenseText) {
   42.96 +        String[] lines = splitIntoLines(licenseText);
   42.97 +        StringBuilder sb = new StringBuilder();
   42.98 +        for (int i = 0; i < lines.length; i++) {
   42.99 +            String line = lines[i];
  42.100 +            if (line.trim().length() == 0) {
  42.101 +                sb.append ("#");
  42.102 +            } else {
  42.103 +                sb.append ("# ");
  42.104 +                sb.append (line);
  42.105 +            }
  42.106 +            sb.append ("\n");
  42.107 +        }
  42.108 +        return sb.toString();
  42.109 +    }
  42.110 +
  42.111 +    @Override
  42.112 +    protected String licenseFirst() {
  42.113 +        return licensePrefix();
  42.114 +    }
  42.115 +
  42.116 +    @Override
  42.117 +    protected String licensePrefix() {
  42.118 +        return "# ";
  42.119 +    }
  42.120 +
  42.121 +    @Override
  42.122 +    protected String licenseLast() {
  42.123 +        return licensePrefix();
  42.124 +    }
  42.125 +}
    43.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/XmlFileHandler.java	Fri Sep 14 00:27:52 2012 -0400
    43.3 @@ -0,0 +1,254 @@
    43.4 +/*
    43.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    43.6 + *
    43.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    43.8 + *
    43.9 + * The contents of this file are subject to the terms of either the GNU
   43.10 + * General Public License Version 2 only ("GPL") or the Common
   43.11 + * Development and Distribution License("CDDL") (collectively, the
   43.12 + * "License"). You may not use this file except in compliance with the
   43.13 + * License. You can obtain a copy of the License at
   43.14 + * http://www.netbeans.org/cddl-gplv2.html
   43.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   43.16 + * specific language governing permissions and limitations under the
   43.17 + * License.  When distributing the software, include this License Header
   43.18 + * Notice in each file and include the License file at
   43.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   43.20 + * particular file as subject to the "Classpath" exception as provided
   43.21 + * by Sun in the GPL Version 2 section of the License file that
   43.22 + * accompanied this code. If applicable, add the following below the
   43.23 + * License Header, with the fields enclosed by brackets [] replaced by
   43.24 + * your own identifying information:
   43.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   43.26 + *
   43.27 + * If you wish your version of this file to be governed by only the CDDL
   43.28 + * or only the GPL Version 2, indicate your decision by adding
   43.29 + * "[Contributor] elects to include this software in this distribution
   43.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   43.31 + * single choice of license, a recipient has the option to distribute
   43.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   43.33 + * to extend the choice of license to its licensees as provided above.
   43.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   43.35 + * Version 2 license, then the option applies only if the new code is
   43.36 + * made subject to such option by the copyright holder.
   43.37 + *
   43.38 + * Contributor(s):
   43.39 + *
   43.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   43.41 + */
   43.42 +
   43.43 +package org.netbeans.modules.licensechanger.spi.handlers;
   43.44 +
   43.45 +import java.awt.Component;
   43.46 +import java.io.CharConversionException;
   43.47 +import java.util.regex.Matcher;
   43.48 +import java.util.regex.Pattern;
   43.49 +import org.netbeans.modules.licensechanger.api.Customizable;
   43.50 +import org.netbeans.modules.licensechanger.api.FileHandler;
   43.51 +import org.netbeans.modules.licensechanger.spi.wizard.utils.Offsets;
   43.52 +import org.openide.filesystems.FileObject;
   43.53 +import org.openide.util.Exceptions;
   43.54 +import org.openide.util.NbBundle;
   43.55 +import org.openide.util.NbPreferences;
   43.56 +import org.openide.xml.XMLUtil;
   43.57 +
   43.58 +/**
   43.59 + *
   43.60 + * @author Tim Boudreau
   43.61 + */
   43.62 +@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
   43.63 +public class XmlFileHandler extends FileHandler{// implements Customizable {
   43.64 +
   43.65 +    @Override
   43.66 +    public boolean match(FileObject file) {
   43.67 +        String ext = file.getExt();
   43.68 +        String mime = file.getMIMEType();
   43.69 +        return "xml".equals (file.getExt()) || "text/xml".equals(mime) ||
   43.70 +                "application/xml".equals(mime) || mime.endsWith("+xml");
   43.71 +    }
   43.72 +
   43.73 +    @Override
   43.74 +    public boolean shouldSkipFile(FileObject file) {
   43.75 +        String n = file.getNameExt();
   43.76 +        return "project.xml".equals(n) ||
   43.77 +                "private.xml".equals(n) || "build.xml".equals(n) ||
   43.78 +                "build-impl.xml".equals(n) || "pom.xml".equals(n);
   43.79 +    }
   43.80 +
   43.81 +    @Override
   43.82 +    public String getDisplayName() {
   43.83 +        return NbBundle.getMessage(XmlFileHandler.class, "NAME_XML_FILES");
   43.84 +    }
   43.85 +
   43.86 +    @Override
   43.87 +    protected Offsets getReplaceOffsets(CharSequence seq) {
   43.88 +        String[] lines = splitIntoLines(seq);
   43.89 +        LineVisitor v = new LineVisitor();
   43.90 +        for (int i=0; i < lines.length; i++) {
   43.91 +            String line = lines[i];
   43.92 +            if (!v.visitLine(line)) {
   43.93 +                break;
   43.94 +            }
   43.95 +        }
   43.96 +        return new Offsets (v.start, v.delCount);
   43.97 +    }
   43.98 +
   43.99 +    @Override
  43.100 +    protected String escape(String licenseText) {
  43.101 +        try {
  43.102 +            licenseText = XMLUtil.toElementContent(licenseText);
  43.103 +        } catch (CharConversionException ex) {
  43.104 +            Exceptions.printStackTrace(ex);
  43.105 +        }
  43.106 +        return "<!--\n" + licenseText + "\n-->\n";
  43.107 +    }
  43.108 +
  43.109 +    static Pattern xmlDeclaration = Pattern.compile ("(<\\?xml.*?\\?>)");
  43.110 +
  43.111 +//    @Override
  43.112 +//    public Component getCustomizer() {
  43.113 +//        return new XmlHandlerCustomizer();
  43.114 +//    }
  43.115 +
  43.116 +    public static boolean isInsertAtTopOfFile() {
  43.117 +        return NbPreferences.forModule(XmlFileHandler.class).getBoolean("atTop", false);
  43.118 +    }
  43.119 +
  43.120 +    public static void setInsertAtTopOfFile (boolean val) {
  43.121 +        NbPreferences.forModule(XmlFileHandler.class).putBoolean("atTop", val);
  43.122 +    }
  43.123 +
  43.124 +    @Override
  43.125 +    protected String licenseFirst() {
  43.126 +        return "<!--";
  43.127 +    }
  43.128 +
  43.129 +    @Override
  43.130 +    protected String licensePrefix() {
  43.131 +        return "";
  43.132 +    }
  43.133 +
  43.134 +    @Override
  43.135 +    protected String licenseLast() {
  43.136 +        return "-->";
  43.137 +    }
  43.138 +
  43.139 +    private static final class XmlDeclarationLocator {
  43.140 +        int declarationStartIndex;
  43.141 +        int declarationEndIndex;
  43.142 +        boolean isMidLine;
  43.143 +        public boolean visitLine(String line) {
  43.144 +            Matcher m = xmlDeclaration.matcher (line);
  43.145 +            if (m.find()) {
  43.146 +                declarationStartIndex += m.start(1);
  43.147 +                declarationEndIndex = declarationStartIndex + m.end(1);
  43.148 +                isMidLine = m.end(1) < line.length() - 1;
  43.149 +                return false;
  43.150 +            } else {
  43.151 +                declarationStartIndex += line.length() + 1;
  43.152 +                return true;
  43.153 +            }
  43.154 +        }
  43.155 +
  43.156 +        boolean foundDeclaration() {
  43.157 +            return declarationEndIndex != 0;
  43.158 +        }
  43.159 +    }
  43.160 +
  43.161 +    @Override
  43.162 +    public String transform(String origText, String licenseText) {
  43.163 +        String[] lines = splitIntoLines(origText);
  43.164 +        XmlDeclarationLocator v = new XmlDeclarationLocator();
  43.165 +        for (int i=0; i < lines.length; i++) {
  43.166 +            if (!v.visitLine(lines[i])) {
  43.167 +                break;
  43.168 +            }
  43.169 +        }
  43.170 +        if (v.foundDeclaration()) {
  43.171 +            StringBuilder sb = new StringBuilder (origText);
  43.172 +            sb.delete(0, v.declarationStartIndex);
  43.173 +            origText = sb.toString();
  43.174 +        }
  43.175 +//        String license = escape (licenseText);
  43.176 +        String license = resolveLicenseTemplate(licenseText);
  43.177 +        license = "\n" + license;
  43.178 +        StringBuilder sb = new StringBuilder (origText);
  43.179 +        Offsets o = getReplaceOffsets(sb);
  43.180 +        sb.delete(o.getStart(), o.getEnd());
  43.181 +        lines = splitIntoLines(origText);
  43.182 +        v = new XmlDeclarationLocator();
  43.183 +        for (int i=0; i < lines.length; i++) {
  43.184 +            if (!v.visitLine(lines[i])) {
  43.185 +                break;
  43.186 +            }
  43.187 +        }
  43.188 +        if (v.foundDeclaration()) {
  43.189 +            sb.insert(v.declarationEndIndex, license);
  43.190 +        } else {
  43.191 +            sb.insert(isInsertAtTopOfFile() ? 0 : o.getStart(), license);
  43.192 +        }
  43.193 +        return sb.toString();
  43.194 +    }
  43.195 +
  43.196 +
  43.197 +
  43.198 +    private static final class LineVisitor {
  43.199 +        private boolean inComment;
  43.200 +        int delCount;
  43.201 +        int start;
  43.202 +        public boolean visitLine (String line) {
  43.203 +            if (start == 0) {
  43.204 +                if (line.trim().startsWith("<?xml ")) {
  43.205 +                    start += line.length() + 1;
  43.206 +                    delCount += start;
  43.207 +                    return true;
  43.208 +                }
  43.209 +            }
  43.210 +            String trimmed = line.trim();
  43.211 +            if (trimmed.startsWith("<!--") && trimmed.endsWith("-->")) {
  43.212 +                return visitCommentLine(line);
  43.213 +            } else if (trimmed.length() == 0) {
  43.214 +                return visitEmptyLine (line);
  43.215 +            } else if (inComment) {
  43.216 +                return visitLineInComment (line);
  43.217 +            } else {
  43.218 +                return visitLineAndTestForComment (line);
  43.219 +            }
  43.220 +        }
  43.221 +
  43.222 +        private boolean visitCommentLine(String line) {
  43.223 +            delCount += line.length() + 1;
  43.224 +            return true;
  43.225 +        }
  43.226 +
  43.227 +        private boolean visitEmptyLine(String line) {
  43.228 +            delCount += line.length() + 1;
  43.229 +            return true;
  43.230 +        }
  43.231 +
  43.232 +        private boolean visitLineAndTestForComment(String line) {
  43.233 +            if (line.trim().startsWith("<!--")) {
  43.234 +                inComment = true;
  43.235 +                delCount += line.length() + 1;
  43.236 +                return true;
  43.237 +            }
  43.238 +            return false;
  43.239 +        }
  43.240 +
  43.241 +        private boolean visitLineInComment(String line) {
  43.242 +            if (line.trim().endsWith("-->")) {
  43.243 +                inComment = false;
  43.244 +                delCount += line.length() + 1;
  43.245 +                return true;
  43.246 +            }
  43.247 +            int ix = line.indexOf("-->");
  43.248 +            if (ix >= 0) {
  43.249 +                delCount += ix + 3;
  43.250 +                return false;
  43.251 +            } else {
  43.252 +                delCount += line.length() + 1;
  43.253 +                return true;
  43.254 +            }
  43.255 +        }
  43.256 +    }
  43.257 +}
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/XmlHandlerCustomizer.form	Fri Sep 14 00:27:52 2012 -0400
    44.3 @@ -0,0 +1,74 @@
    44.4 +<?xml version="1.0" encoding="UTF-8" ?>
    44.5 +
    44.6 +<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    44.7 +  <NonVisualComponents>
    44.8 +    <Component class="javax.swing.ButtonGroup" name="buttonGroup1">
    44.9 +    </Component>
   44.10 +  </NonVisualComponents>
   44.11 +  <AuxValues>
   44.12 +    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
   44.13 +    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   44.14 +    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   44.15 +    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   44.16 +    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   44.17 +    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
   44.18 +    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   44.19 +    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   44.20 +    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   44.21 +  </AuxValues>
   44.22 +
   44.23 +  <Layout>
   44.24 +    <DimensionLayout dim="0">
   44.25 +      <Group type="103" groupAlignment="0" attributes="0">
   44.26 +          <Group type="102" attributes="0">
   44.27 +              <EmptySpace max="-2" attributes="0"/>
   44.28 +              <Group type="103" groupAlignment="0" attributes="0">
   44.29 +                  <Component id="beforeButton" alignment="0" min="-2" max="-2" attributes="0"/>
   44.30 +                  <Component id="afterButton" alignment="0" min="-2" max="-2" attributes="0"/>
   44.31 +              </Group>
   44.32 +              <EmptySpace max="32767" attributes="0"/>
   44.33 +          </Group>
   44.34 +      </Group>
   44.35 +    </DimensionLayout>
   44.36 +    <DimensionLayout dim="1">
   44.37 +      <Group type="103" groupAlignment="0" attributes="0">
   44.38 +          <Group type="102" alignment="0" attributes="0">
   44.39 +              <EmptySpace max="-2" attributes="0"/>
   44.40 +              <Component id="beforeButton" min="-2" max="-2" attributes="0"/>
   44.41 +              <EmptySpace type="unrelated" max="-2" attributes="0"/>
   44.42 +              <Component id="afterButton" min="-2" max="-2" attributes="0"/>
   44.43 +              <EmptySpace max="32767" attributes="0"/>
   44.44 +          </Group>
   44.45 +      </Group>
   44.46 +    </DimensionLayout>
   44.47 +  </Layout>
   44.48 +  <SubComponents>
   44.49 +    <Component class="javax.swing.JRadioButton" name="beforeButton">
   44.50 +      <Properties>
   44.51 +        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
   44.52 +          <ComponentRef name="buttonGroup1"/>
   44.53 +        </Property>
   44.54 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   44.55 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/handlers/Bundle.properties" key="XmlHandlerCustomizer.beforeButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   44.56 +        </Property>
   44.57 +      </Properties>
   44.58 +      <Events>
   44.59 +        <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="licensePreferenceChanged"/>
   44.60 +      </Events>
   44.61 +    </Component>
   44.62 +    <Component class="javax.swing.JRadioButton" name="afterButton">
   44.63 +      <Properties>
   44.64 +        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
   44.65 +          <ComponentRef name="buttonGroup1"/>
   44.66 +        </Property>
   44.67 +        <Property name="selected" type="boolean" value="true"/>
   44.68 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   44.69 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/handlers/Bundle.properties" key="XmlHandlerCustomizer.afterButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   44.70 +        </Property>
   44.71 +      </Properties>
   44.72 +      <Events>
   44.73 +        <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="licensePreferenceChanged"/>
   44.74 +      </Events>
   44.75 +    </Component>
   44.76 +  </SubComponents>
   44.77 +</Form>
    45.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/XmlHandlerCustomizer.java	Fri Sep 14 00:27:52 2012 -0400
    45.3 @@ -0,0 +1,119 @@
    45.4 +/*
    45.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    45.6 + *
    45.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    45.8 + *
    45.9 + * The contents of this file are subject to the terms of either the GNU
   45.10 + * General Public License Version 2 only ("GPL") or the Common
   45.11 + * Development and Distribution License("CDDL") (collectively, the
   45.12 + * "License"). You may not use this file except in compliance with the
   45.13 + * License. You can obtain a copy of the License at
   45.14 + * http://www.netbeans.org/cddl-gplv2.html
   45.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   45.16 + * specific language governing permissions and limitations under the
   45.17 + * License.  When distributing the software, include this License Header
   45.18 + * Notice in each file and include the License file at
   45.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   45.20 + * particular file as subject to the "Classpath" exception as provided
   45.21 + * by Sun in the GPL Version 2 section of the License file that
   45.22 + * accompanied this code. If applicable, add the following below the
   45.23 + * License Header, with the fields enclosed by brackets [] replaced by
   45.24 + * your own identifying information:
   45.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   45.26 + *
   45.27 + * If you wish your version of this file to be governed by only the CDDL
   45.28 + * or only the GPL Version 2, indicate your decision by adding
   45.29 + * "[Contributor] elects to include this software in this distribution
   45.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   45.31 + * single choice of license, a recipient has the option to distribute
   45.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   45.33 + * to extend the choice of license to its licensees as provided above.
   45.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   45.35 + * Version 2 license, then the option applies only if the new code is
   45.36 + * made subject to such option by the copyright holder.
   45.37 + *
   45.38 + * Contributor(s):
   45.39 + *
   45.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   45.41 + */
   45.42 +package org.netbeans.modules.licensechanger.spi.handlers;
   45.43 +
   45.44 +/**
   45.45 + *
   45.46 + * @author Tim Boudreau
   45.47 + */
   45.48 +public class XmlHandlerCustomizer extends javax.swing.JPanel {
   45.49 +    boolean init;
   45.50 +    /** Creates new form XmlHandlerCustomizer */
   45.51 +    public XmlHandlerCustomizer() {
   45.52 +        initComponents();
   45.53 +        afterButton.setSelected (!XmlFileHandler.isInsertAtTopOfFile());
   45.54 +        beforeButton.setSelected(!afterButton.isSelected());
   45.55 +        init = true;
   45.56 +    }
   45.57 +
   45.58 +    /** This method is called from within the constructor to
   45.59 +     * initialize the form.
   45.60 +     * WARNING: Do NOT modify this code. The content of this method is
   45.61 +     * always regenerated by the Form Editor.
   45.62 +     */
   45.63 +    @SuppressWarnings("unchecked")
   45.64 +    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   45.65 +    private void initComponents() {
   45.66 +
   45.67 +        buttonGroup1 = new javax.swing.ButtonGroup();
   45.68 +        beforeButton = new javax.swing.JRadioButton();
   45.69 +        afterButton = new javax.swing.JRadioButton();
   45.70 +
   45.71 +        buttonGroup1.add(beforeButton);
   45.72 +        beforeButton.setText(org.openide.util.NbBundle.getMessage(XmlHandlerCustomizer.class, "XmlHandlerCustomizer.beforeButton.text")); // NOI18N
   45.73 +        beforeButton.addItemListener(new java.awt.event.ItemListener() {
   45.74 +            public void itemStateChanged(java.awt.event.ItemEvent evt) {
   45.75 +                licensePreferenceChanged(evt);
   45.76 +            }
   45.77 +        });
   45.78 +
   45.79 +        buttonGroup1.add(afterButton);
   45.80 +        afterButton.setSelected(true);
   45.81 +        afterButton.setText(org.openide.util.NbBundle.getMessage(XmlHandlerCustomizer.class, "XmlHandlerCustomizer.afterButton.text")); // NOI18N
   45.82 +        afterButton.addItemListener(new java.awt.event.ItemListener() {
   45.83 +            public void itemStateChanged(java.awt.event.ItemEvent evt) {
   45.84 +                licensePreferenceChanged(evt);
   45.85 +            }
   45.86 +        });
   45.87 +
   45.88 +        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
   45.89 +        this.setLayout(layout);
   45.90 +        layout.setHorizontalGroup(
   45.91 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
   45.92 +            .addGroup(layout.createSequentialGroup()
   45.93 +                .addContainerGap()
   45.94 +                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
   45.95 +                    .addComponent(beforeButton)
   45.96 +                    .addComponent(afterButton))
   45.97 +                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
   45.98 +        );
   45.99 +        layout.setVerticalGroup(
  45.100 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  45.101 +            .addGroup(layout.createSequentialGroup()
  45.102 +                .addContainerGap()
  45.103 +                .addComponent(beforeButton)
  45.104 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  45.105 +                .addComponent(afterButton)
  45.106 +                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  45.107 +        );
  45.108 +    }// </editor-fold>//GEN-END:initComponents
  45.109 +
  45.110 +    private void licensePreferenceChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_licensePreferenceChanged
  45.111 +        if (!init) return;
  45.112 +        XmlFileHandler.setInsertAtTopOfFile(beforeButton.isSelected());
  45.113 +    }//GEN-LAST:event_licensePreferenceChanged
  45.114 +
  45.115 +
  45.116 +    // Variables declaration - do not modify//GEN-BEGIN:variables
  45.117 +    private javax.swing.JRadioButton afterButton;
  45.118 +    private javax.swing.JRadioButton beforeButton;
  45.119 +    private javax.swing.ButtonGroup buttonGroup1;
  45.120 +    // End of variables declaration//GEN-END:variables
  45.121 +
  45.122 +}
    46.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties	Fri Sep 14 00:27:52 2012 -0400
    46.3 @@ -0,0 +1,30 @@
    46.4 +BROWSE_LICENSE_TITLE=Locate License File
    46.5 +MSG_SELECT_A_LICENSE=Select a License or Browse for file
    46.6 +ERR_COULD_NOT_LOAD=Could not load {0}
    46.7 +LicenseChooserPanel.chooseLabel.text=Choose License
    46.8 +LicenseChooserPanel.browseButton.text=Browse
    46.9 +SelectFoldersPanel.jLabel1.text=Uncheck Folders that Should Be Ignored
   46.10 +LineEndingsPanel.border.title=Line Endings
   46.11 +ChooseFileTypesPanel.jLabel1.text=Choose and Customize File Types
   46.12 +ChooseFileTypesPanel.noCustomizerLabel.text=[no customizer]
   46.13 +ChooseFileTypesPanel.customizerPanel.border.title=File Type Settings
   46.14 +
   46.15 +WIZARD_TITLE=Add/Replace License Headers
   46.16 +chooseFileTypes=Select File Types
   46.17 +chooseLicense=Select License
   46.18 +chooseFolders=Prune Folders
   46.19 +chooseFiles=Choose Files
   46.20 +preview=Preview
   46.21 +LBL_CHANGE_LICENSE=Change License Headers
   46.22 +
   46.23 +PreviewPanel.jLabel3.text=jLabel3
   46.24 +LineEndingsPanel.noChangeButton.text=Do Not Change
   46.25 +LineEndingsPanel.systemDefaultButton.text=Force System Default
   46.26 +LineEndingsPanel.newlineButton.text=Force Newline
   46.27 +LineEndingsPanel.forceCrlf.text=Force CRLF
   46.28 +LineEndingsPanel.newlineButton.text_1=Force Newline
   46.29 +LineEndingsPanel.systemDefaultButton.text_1=Force System Default
   46.30 +LineEndingsPanel.noChangeButton.text_1=Do Not Change
   46.31 +LineEndingsPanel.forceCrlf.text_1=Force CRLF
   46.32 +LicenseChooserPanel.updateDefaultProjectLicense.text=Set as default project license
   46.33 +PreviewPanel.fileList.border.title=Select File for Preview
    47.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/ChooseFileTypesPanel.form	Fri Sep 14 00:27:52 2012 -0400
    47.3 @@ -0,0 +1,135 @@
    47.4 +<?xml version="1.0" encoding="UTF-8" ?>
    47.5 +
    47.6 +<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    47.7 +  <AuxValues>
    47.8 +    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
    47.9 +    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   47.10 +    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   47.11 +    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   47.12 +    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   47.13 +    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
   47.14 +    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   47.15 +    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   47.16 +    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   47.17 +  </AuxValues>
   47.18 +
   47.19 +  <Layout>
   47.20 +    <DimensionLayout dim="0">
   47.21 +      <Group type="103" groupAlignment="0" attributes="0">
   47.22 +          <Group type="102" attributes="0">
   47.23 +              <EmptySpace max="-2" attributes="0"/>
   47.24 +              <Group type="103" groupAlignment="0" attributes="0">
   47.25 +                  <Component id="jScrollPane1" alignment="0" pref="804" max="32767" attributes="0"/>
   47.26 +                  <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
   47.27 +                  <Group type="102" alignment="1" attributes="0">
   47.28 +                      <Component id="customizerPanel" pref="559" max="32767" attributes="0"/>
   47.29 +                      <EmptySpace max="-2" attributes="0"/>
   47.30 +                      <Component id="lineEndingsPanel1" min="-2" pref="239" max="-2" attributes="0"/>
   47.31 +                  </Group>
   47.32 +              </Group>
   47.33 +              <EmptySpace max="-2" attributes="0"/>
   47.34 +          </Group>
   47.35 +      </Group>
   47.36 +    </DimensionLayout>
   47.37 +    <DimensionLayout dim="1">
   47.38 +      <Group type="103" groupAlignment="0" attributes="0">
   47.39 +          <Group type="102" alignment="0" attributes="0">
   47.40 +              <EmptySpace max="-2" attributes="0"/>
   47.41 +              <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
   47.42 +              <EmptySpace max="-2" attributes="0"/>
   47.43 +              <Component id="jScrollPane1" min="-2" pref="112" max="-2" attributes="0"/>
   47.44 +              <EmptySpace type="unrelated" max="-2" attributes="0"/>
   47.45 +              <Group type="103" groupAlignment="0" attributes="0">
   47.46 +                  <Component id="customizerPanel" pref="361" max="32767" attributes="0"/>
   47.47 +                  <Group type="102" attributes="0">
   47.48 +                      <Component id="lineEndingsPanel1" min="-2" max="-2" attributes="0"/>
   47.49 +                      <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
   47.50 +                  </Group>
   47.51 +              </Group>
   47.52 +              <EmptySpace max="-2" attributes="0"/>
   47.53 +          </Group>
   47.54 +      </Group>
   47.55 +    </DimensionLayout>
   47.56 +  </Layout>
   47.57 +  <SubComponents>
   47.58 +    <Component class="javax.swing.JLabel" name="jLabel1">
   47.59 +      <Properties>
   47.60 +        <Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
   47.61 +          <FontInfo relative="true">
   47.62 +            <Font bold="true" component="jLabel1" property="font" relativeSize="true" size="0"/>
   47.63 +          </FontInfo>
   47.64 +        </Property>
   47.65 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   47.66 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="ChooseFileTypesPanel.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   47.67 +        </Property>
   47.68 +        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   47.69 +          <Border info="org.netbeans.modules.form.compat2.border.MatteColorBorderInfo">
   47.70 +            <MatteColorBorder bottom="1" left="0" right="0" top="0"/>
   47.71 +          </Border>
   47.72 +        </Property>
   47.73 +      </Properties>
   47.74 +      <AccessibilityProperties>
   47.75 +        <Property name="AccessibleContext.accessibleName" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   47.76 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="ChooseFileTypesPanel.customizerPanel.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   47.77 +        </Property>
   47.78 +      </AccessibilityProperties>
   47.79 +    </Component>
   47.80 +    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
   47.81 +      <Properties>
   47.82 +        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   47.83 +          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
   47.84 +            <LineBorder>
   47.85 +              <Color PropertyName="color" blue="99" green="a8" id="controlShadow" palette="3" red="ac" type="palette"/>
   47.86 +            </LineBorder>
   47.87 +          </Border>
   47.88 +        </Property>
   47.89 +      </Properties>
   47.90 +      <AuxValues>
   47.91 +        <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new CheckboxListView()"/>
   47.92 +      </AuxValues>
   47.93 +
   47.94 +      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
   47.95 +    </Container>
   47.96 +    <Container class="javax.swing.JPanel" name="customizerPanel">
   47.97 +      <Properties>
   47.98 +        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   47.99 +          <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
  47.100 +            <TitledBorder title="File Type Settings">
  47.101 +              <ResourceString PropertyName="titleX" bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="ChooseFileTypesPanel.customizerPanel.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  47.102 +            </TitledBorder>
  47.103 +          </Border>
  47.104 +        </Property>
  47.105 +      </Properties>
  47.106 +      <AccessibilityProperties>
  47.107 +        <Property name="AccessibleContext.accessibleName" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  47.108 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="ChooseFileTypesPanel.customizerPanel.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  47.109 +        </Property>
  47.110 +      </AccessibilityProperties>
  47.111 +
  47.112 +      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
  47.113 +      <SubComponents>
  47.114 +        <Component class="javax.swing.JLabel" name="noCustomizerLabel">
  47.115 +          <Properties>
  47.116 +            <Property name="horizontalAlignment" type="int" value="0"/>
  47.117 +            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  47.118 +              <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="ChooseFileTypesPanel.noCustomizerLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  47.119 +            </Property>
  47.120 +            <Property name="enabled" type="boolean" value="false"/>
  47.121 +          </Properties>
  47.122 +          <AccessibilityProperties>
  47.123 +            <Property name="AccessibleContext.accessibleName" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  47.124 +              <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="ChooseFileTypesPanel.noCustomizerLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  47.125 +            </Property>
  47.126 +          </AccessibilityProperties>
  47.127 +          <Constraints>
  47.128 +            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
  47.129 +              <BorderConstraints direction="Center"/>
  47.130 +            </Constraint>
  47.131 +          </Constraints>
  47.132 +        </Component>
  47.133 +      </SubComponents>
  47.134 +    </Container>
  47.135 +    <Component class="org.netbeans.modules.licensechanger.spi.wizard.LineEndingsPanel" name="lineEndingsPanel1">
  47.136 +    </Component>
  47.137 +  </SubComponents>
  47.138 +</Form>
    48.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/ChooseFileTypesPanel.java	Fri Sep 14 00:27:52 2012 -0400
    48.3 @@ -0,0 +1,224 @@
    48.4 +/*
    48.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    48.6 + *
    48.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    48.8 + *
    48.9 + * The contents of this file are subject to the terms of either the GNU
   48.10 + * General Public License Version 2 only ("GPL") or the Common
   48.11 + * Development and Distribution License("CDDL") (collectively, the
   48.12 + * "License"). You may not use this file except in compliance with the
   48.13 + * License. You can obtain a copy of the License at
   48.14 + * http://www.netbeans.org/cddl-gplv2.html
   48.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   48.16 + * specific language governing permissions and limitations under the
   48.17 + * License.  When distributing the software, include this License Header
   48.18 + * Notice in each file and include the License file at
   48.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   48.20 + * particular file as subject to the "Classpath" exception as provided
   48.21 + * by Sun in the GPL Version 2 section of the License file that
   48.22 + * accompanied this code. If applicable, add the following below the
   48.23 + * License Header, with the fields enclosed by brackets [] replaced by
   48.24 + * your own identifying information:
   48.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   48.26 + *
   48.27 + * If you wish your version of this file to be governed by only the CDDL
   48.28 + * or only the GPL Version 2, indicate your decision by adding
   48.29 + * "[Contributor] elects to include this software in this distribution
   48.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   48.31 + * single choice of license, a recipient has the option to distribute
   48.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   48.33 + * to extend the choice of license to its licensees as provided above.
   48.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   48.35 + * Version 2 license, then the option applies only if the new code is
   48.36 + * made subject to such option by the copyright holder.
   48.37 + *
   48.38 + * Contributor(s):
   48.39 + *
   48.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   48.41 + */
   48.42 +
   48.43 +/*
   48.44 + * NewJPanel.java
   48.45 + *
   48.46 + * Created on Mar 20, 2009, 1:14:43 AM
   48.47 + */
   48.48 +
   48.49 +package org.netbeans.modules.licensechanger.spi.wizard;
   48.50 +
   48.51 +import java.beans.PropertyChangeEvent;
   48.52 +import java.beans.PropertyChangeListener;
   48.53 +import java.util.HashSet;
   48.54 +import java.util.List;
   48.55 +import java.util.Set;
   48.56 +import org.netbeans.modules.licensechanger.api.Customizable;
   48.57 +import org.netbeans.modules.licensechanger.api.FileHandler;
   48.58 +import org.netbeans.modules.licensechanger.spi.wizard.utils.CheckableNodeCapability;
   48.59 +import org.netbeans.modules.licensechanger.spi.wizard.utils.CheckboxListView;
   48.60 +import org.netbeans.modules.licensechanger.spi.wizard.utils.NodeCheckObserver;
   48.61 +import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   48.62 +import org.openide.explorer.ExplorerManager;
   48.63 +import org.openide.explorer.view.CheckableNode;
   48.64 +import org.openide.nodes.AbstractNode;
   48.65 +import org.openide.nodes.ChildFactory;
   48.66 +import org.openide.nodes.Children;
   48.67 +import org.openide.nodes.Node;
   48.68 +import org.openide.util.Lookup;
   48.69 +import org.openide.util.lookup.Lookups;
   48.70 +
   48.71 +/**
   48.72 + *
   48.73 + * @author Tim Boudreau
   48.74 + * @author Nils Hoffmann (Refactoring)
   48.75 + */
   48.76 +public class ChooseFileTypesPanel extends javax.swing.JPanel implements ExplorerManager.Provider, PropertyChangeListener, NodeCheckObserver {
   48.77 +    private final ExplorerManager mgr = new ExplorerManager();
   48.78 +
   48.79 +    public ChooseFileTypesPanel() {
   48.80 +        initComponents();
   48.81 +        mgr.setRootContext(new AbstractNode (Children.create(new FileHandlerChildren(), false)));
   48.82 +        ((CheckboxListView) jScrollPane1).setNodeCheckObserver(this);
   48.83 +        ((CheckboxListView) jScrollPane1).setListEnabled(true);
   48.84 +        ((CheckboxListView) jScrollPane1).setCheckboxesEnabled(true);
   48.85 +        ((CheckboxListView) jScrollPane1).setCheckboxesVisible(true);
   48.86 +        mgr.addPropertyChangeListener(this);
   48.87 +        setName("Choose File Types");
   48.88 +        updateMap();
   48.89 +    }
   48.90 +
   48.91 +    private void updateMap() {
   48.92 +        Set<FileHandler> handlers = getFileHandlers();
   48.93 +        firePropertyChange(WizardProperties.KEY_FILE_HANDLERS, null, handlers);
   48.94 +    }
   48.95 +
   48.96 +    /** This method is called from within the constructor to
   48.97 +     * initialize the form.
   48.98 +     * WARNING: Do NOT modify this code. The content of this method is
   48.99 +     * always regenerated by the Form Editor.
  48.100 +     */
  48.101 +    @SuppressWarnings("unchecked")
  48.102 +    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  48.103 +    private void initComponents() {
  48.104 +
  48.105 +        jLabel1 = new javax.swing.JLabel();
  48.106 +        jScrollPane1 = new CheckboxListView();
  48.107 +        customizerPanel = new javax.swing.JPanel();
  48.108 +        noCustomizerLabel = new javax.swing.JLabel();
  48.109 +        lineEndingsPanel1 = new org.netbeans.modules.licensechanger.spi.wizard.LineEndingsPanel();
  48.110 +
  48.111 +        jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() | java.awt.Font.BOLD));
  48.112 +        jLabel1.setText(org.openide.util.NbBundle.getMessage(ChooseFileTypesPanel.class, "ChooseFileTypesPanel.jLabel1.text")); // NOI18N
  48.113 +        jLabel1.setBorder(javax.swing.BorderFactory.createMatteBorder(0, 0, 1, 0, new java.awt.Color(0, 0, 0)));
  48.114 +
  48.115 +        jScrollPane1.setBorder(javax.swing.BorderFactory.createLineBorder(javax.swing.UIManager.getDefaults().getColor("controlShadow")));
  48.116 +
  48.117 +        customizerPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(ChooseFileTypesPanel.class, "ChooseFileTypesPanel.customizerPanel.border.title"))); // NOI18N
  48.118 +        customizerPanel.setLayout(new java.awt.BorderLayout());
  48.119 +
  48.120 +        noCustomizerLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  48.121 +        noCustomizerLabel.setText(org.openide.util.NbBundle.getMessage(ChooseFileTypesPanel.class, "ChooseFileTypesPanel.noCustomizerLabel.text")); // NOI18N
  48.122 +        noCustomizerLabel.setEnabled(false);
  48.123 +        customizerPanel.add(noCustomizerLabel, java.awt.BorderLayout.CENTER);
  48.124 +        noCustomizerLabel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ChooseFileTypesPanel.class, "ChooseFileTypesPanel.noCustomizerLabel.text")); // NOI18N
  48.125 +
  48.126 +        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
  48.127 +        this.setLayout(layout);
  48.128 +        layout.setHorizontalGroup(
  48.129 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  48.130 +            .addGroup(layout.createSequentialGroup()
  48.131 +                .addContainerGap()
  48.132 +                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  48.133 +                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 804, Short.MAX_VALUE)
  48.134 +                    .addComponent(jLabel1)
  48.135 +                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  48.136 +                        .addComponent(customizerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 559, Short.MAX_VALUE)
  48.137 +                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  48.138 +                        .addComponent(lineEndingsPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 239, javax.swing.GroupLayout.PREFERRED_SIZE)))
  48.139 +                .addContainerGap())
  48.140 +        );
  48.141 +        layout.setVerticalGroup(
  48.142 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  48.143 +            .addGroup(layout.createSequentialGroup()
  48.144 +                .addContainerGap()
  48.145 +                .addComponent(jLabel1)
  48.146 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  48.147 +                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)
  48.148 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  48.149 +                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  48.150 +                    .addComponent(customizerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 361, Short.MAX_VALUE)
  48.151 +                    .addGroup(layout.createSequentialGroup()
  48.152 +                        .addComponent(lineEndingsPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  48.153 +                        .addGap(0, 0, Short.MAX_VALUE)))
  48.154 +                .addContainerGap())
  48.155 +        );
  48.156 +
  48.157 +        jLabel1.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ChooseFileTypesPanel.class, "ChooseFileTypesPanel.customizerPanel.border.title")); // NOI18N
  48.158 +        customizerPanel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ChooseFileTypesPanel.class, "ChooseFileTypesPanel.customizerPanel.border.title")); // NOI18N
  48.159 +    }// </editor-fold>//GEN-END:initComponents
  48.160 +
  48.161 +
  48.162 +    // Variables declaration - do not modify//GEN-BEGIN:variables
  48.163 +    private javax.swing.JPanel customizerPanel;
  48.164 +    private javax.swing.JLabel jLabel1;
  48.165 +    private javax.swing.JScrollPane jScrollPane1;
  48.166 +    private org.netbeans.modules.licensechanger.spi.wizard.LineEndingsPanel lineEndingsPanel1;
  48.167 +    private javax.swing.JLabel noCustomizerLabel;
  48.168 +    // End of variables declaration//GEN-END:variables
  48.169 +    
  48.170 +    @Override
  48.171 +    public ExplorerManager getExplorerManager() {
  48.172 +        return mgr;
  48.173 +    }
  48.174 +
  48.175 +    public Set<FileHandler> getFileHandlers() {
  48.176 +        Set <FileHandler> result = new HashSet<FileHandler>();
  48.177 +        for (Node n : mgr.getRootContext().getChildren().getNodes(true)) {
  48.178 +            CheckableNode cn = n.getLookup().lookup(CheckableNode.class);
  48.179 +            if (cn!= null && cn.isSelected()) {
  48.180 +                result.addAll (n.getLookup().lookupAll(FileHandler.class));
  48.181 +            }
  48.182 +        }
  48.183 +        return result;
  48.184 +    }
  48.185 +
  48.186 +    @Override
  48.187 +    public void propertyChange(PropertyChangeEvent evt) {
  48.188 +        if (ExplorerManager.PROP_SELECTED_NODES.equals(evt.getPropertyName())) {
  48.189 +            Node[] n = mgr.getSelectedNodes();
  48.190 +            updateCustomizer (n.length == 1 ? n[0].getLookup().lookup(Customizable.class) : null);
  48.191 +        }
  48.192 +    }
  48.193 +
  48.194 +    @Override
  48.195 +    public void onNodeChecked(Node node) {
  48.196 +        updateMap();
  48.197 +    }
  48.198 +
  48.199 +    @Override
  48.200 +    public void onNodeUnchecked(Node node) {
  48.201 +        updateMap();
  48.202 +    }
  48.203 +
  48.204 +    private static final class FileHandlerChildren extends ChildFactory<FileHandler> {
  48.205 +        @Override
  48.206 +        protected boolean createKeys(List<FileHandler> toPopulate) {
  48.207 +            toPopulate.addAll (Lookup.getDefault().lookupAll(FileHandler.class));
  48.208 +            return true;
  48.209 +        }
  48.210 +
  48.211 +        @Override
  48.212 +        protected Node createNodeForKey(FileHandler key) {
  48.213 +            AbstractNode result = new AbstractNode (Children.LEAF, Lookups.fixed(key,new CheckableNodeCapability()));
  48.214 +            result.setDisplayName(key.getDisplayName());
  48.215 +            return result;
  48.216 +        }
  48.217 +    }
  48.218 +
  48.219 +    private void updateCustomizer(Customizable c) {
  48.220 +        customizerPanel.removeAll();
  48.221 +        customizerPanel.add (c == null ? noCustomizerLabel : c.getCustomizer());
  48.222 +        invalidate();
  48.223 +        revalidate();
  48.224 +        repaint();
  48.225 +    }
  48.226 +    
  48.227 +}
    49.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/ChooseFileTypesWizardPanel.java	Fri Sep 14 00:27:52 2012 -0400
    49.3 @@ -0,0 +1,122 @@
    49.4 +/*
    49.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    49.6 + *
    49.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    49.8 + *
    49.9 + * The contents of this file are subject to the terms of either the GNU
   49.10 + * General Public License Version 2 only ("GPL") or the Common
   49.11 + * Development and Distribution License("CDDL") (collectively, the
   49.12 + * "License"). You may not use this file except in compliance with the
   49.13 + * License. You can obtain a copy of the License at
   49.14 + * http://www.netbeans.org/cddl-gplv2.html
   49.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   49.16 + * specific language governing permissions and limitations under the
   49.17 + * License.  When distributing the software, include this License Header
   49.18 + * Notice in each file and include the License file at
   49.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   49.20 + * particular file as subject to the "Classpath" exception as provided
   49.21 + * by Sun in the GPL Version 2 section of the License file that
   49.22 + * accompanied this code. If applicable, add the following below the
   49.23 + * License Header, with the fields enclosed by brackets [] replaced by
   49.24 + * your own identifying information:
   49.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   49.26 + *
   49.27 + * If you wish your version of this file to be governed by only the CDDL
   49.28 + * or only the GPL Version 2, indicate your decision by adding
   49.29 + * "[Contributor] elects to include this software in this distribution
   49.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   49.31 + * single choice of license, a recipient has the option to distribute
   49.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   49.33 + * to extend the choice of license to its licensees as provided above.
   49.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   49.35 + * Version 2 license, then the option applies only if the new code is
   49.36 + * made subject to such option by the copyright holder.
   49.37 + *
   49.38 + * Contributor(s):
   49.39 + *
   49.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   49.41 + */
   49.42 +
   49.43 +package org.netbeans.modules.licensechanger.spi.wizard;
   49.44 +
   49.45 +import java.beans.PropertyChangeEvent;
   49.46 +import java.beans.PropertyChangeListener;
   49.47 +import javax.swing.event.ChangeListener;
   49.48 +import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   49.49 +import org.openide.WizardDescriptor;
   49.50 +import org.openide.WizardValidationException;
   49.51 +import org.openide.util.ChangeSupport;
   49.52 +import org.openide.util.HelpCtx;
   49.53 +
   49.54 +/**
   49.55 + * 
   49.56 + * @author Nils Hoffmann
   49.57 + */
   49.58 +public class ChooseFileTypesWizardPanel implements WizardDescriptor.ValidatingPanel<WizardDescriptor>, PropertyChangeListener {
   49.59 +
   49.60 +    /**
   49.61 +     * The visual component that displays this panel. If you need to access the
   49.62 +     * component from this class, just use getComponent().
   49.63 +     */
   49.64 +    private ChooseFileTypesPanel component;
   49.65 +    private WizardDescriptor wiz;
   49.66 +    private boolean valid = true;
   49.67 +    private ChangeSupport cs = new ChangeSupport(this);
   49.68 +
   49.69 +    // Get the visual component for the panel. In this template, the component
   49.70 +    // is kept separate. This can be more efficient: if the wizard is created
   49.71 +    // but never displayed, or not all panels are displayed, it is better to
   49.72 +    // create only those which really need to be visible.
   49.73 +    @Override
   49.74 +    public ChooseFileTypesPanel getComponent() {
   49.75 +        if (component == null) {
   49.76 +            component = new ChooseFileTypesPanel();
   49.77 +            component.addPropertyChangeListener(this);
   49.78 +        }
   49.79 +        return component;
   49.80 +    }
   49.81 +
   49.82 +    @Override
   49.83 +    public HelpCtx getHelp() {
   49.84 +        // Show no Help button for this panel:
   49.85 +        return HelpCtx.DEFAULT_HELP;
   49.86 +        // If you have context help:
   49.87 +        // return new HelpCtx("help.key.here");
   49.88 +    }
   49.89 +
   49.90 +    @Override
   49.91 +    public boolean isValid() {
   49.92 +        return valid;
   49.93 +    }
   49.94 +    
   49.95 +    @Override
   49.96 +    public void addChangeListener(ChangeListener l) {
   49.97 +        cs.addChangeListener(l);
   49.98 +    }
   49.99 +    
  49.100 +    @Override
  49.101 +    public void removeChangeListener(ChangeListener l) {
  49.102 +        cs.removeChangeListener(l);
  49.103 +    }
  49.104 +    
  49.105 +    @Override
  49.106 +    public void propertyChange(PropertyChangeEvent pce) {
  49.107 +        cs.fireChange();
  49.108 +    }
  49.109 +
  49.110 +    @Override
  49.111 +    public void readSettings(WizardDescriptor wiz) {
  49.112 +        this.wiz = wiz;
  49.113 +    }
  49.114 +
  49.115 +    @Override
  49.116 +    public void storeSettings(WizardDescriptor wiz) {
  49.117 +        wiz.putProperty(WizardProperties.KEY_FILE_HANDLERS, getComponent().getFileHandlers());
  49.118 +    }
  49.119 +
  49.120 +    @Override
  49.121 +    public void validate() throws WizardValidationException {
  49.122 +        valid = true;
  49.123 +    }
  49.124 +
  49.125 +}
    50.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChangerWizardAction.java	Fri Sep 14 00:27:52 2012 -0400
    50.3 @@ -0,0 +1,132 @@
    50.4 +/*
    50.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    50.6 + *
    50.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    50.8 + *
    50.9 + * The contents of this file are subject to the terms of either the GNU
   50.10 + * General Public License Version 2 only ("GPL") or the Common
   50.11 + * Development and Distribution License("CDDL") (collectively, the
   50.12 + * "License"). You may not use this file except in compliance with the
   50.13 + * License. You can obtain a copy of the License at
   50.14 + * http://www.netbeans.org/cddl-gplv2.html
   50.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   50.16 + * specific language governing permissions and limitations under the
   50.17 + * License.  When distributing the software, include this License Header
   50.18 + * Notice in each file and include the License file at
   50.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   50.20 + * particular file as subject to the "Classpath" exception as provided
   50.21 + * by Sun in the GPL Version 2 section of the License file that
   50.22 + * accompanied this code. If applicable, add the following below the
   50.23 + * License Header, with the fields enclosed by brackets [] replaced by
   50.24 + * your own identifying information:
   50.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   50.26 + *
   50.27 + * If you wish your version of this file to be governed by only the CDDL
   50.28 + * or only the GPL Version 2, indicate your decision by adding
   50.29 + * "[Contributor] elects to include this software in this distribution
   50.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   50.31 + * single choice of license, a recipient has the option to distribute
   50.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   50.33 + * to extend the choice of license to its licensees as provided above.
   50.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   50.35 + * Version 2 license, then the option applies only if the new code is
   50.36 + * made subject to such option by the copyright holder.
   50.37 + *
   50.38 + * Contributor(s):
   50.39 + *
   50.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   50.41 + */
   50.42 +
   50.43 +package org.netbeans.modules.licensechanger.spi.wizard;
   50.44 +
   50.45 +import java.awt.Component;
   50.46 +import java.awt.event.ActionEvent;
   50.47 +import java.awt.event.ActionListener;
   50.48 +import java.text.MessageFormat;
   50.49 +import java.util.ArrayList;
   50.50 +import java.util.HashSet;
   50.51 +import java.util.List;
   50.52 +import java.util.Set;
   50.53 +import javax.swing.JComponent;
   50.54 +import org.netbeans.api.project.*;
   50.55 +import org.netbeans.modules.licensechanger.spi.wizard.utils.LicenseChangerRunnable;
   50.56 +import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   50.57 +import org.openide.DialogDisplayer;
   50.58 +import org.openide.WizardDescriptor;
   50.59 +import org.openide.awt.ActionID;
   50.60 +import org.openide.awt.ActionReference;
   50.61 +import org.openide.awt.ActionRegistration;
   50.62 +import org.openide.filesystems.FileObject;
   50.63 +import org.openide.loaders.DataObject;
   50.64 +import org.openide.util.*;
   50.65 +
   50.66 +/**
   50.67 + * Context-sensitive action to launch the license header change wizard.
   50.68 + * @author Nils Hoffmann
   50.69 + */
   50.70 +@ActionID(
   50.71 +    category = "Tools",
   50.72 +id = "org.netbeans.modules.licensechanger.wizard.LicenseChangerWizardAction")
   50.73 +@ActionRegistration(
   50.74 +    displayName = "#CTL_LicenseChangerWizardAction")
   50.75 +@ActionReference(path = "Loaders/folder/any/Actions", position = 1550)
   50.76 +@NbBundle.Messages("CTL_LicenseChangerWizardAction=Change License Header")
   50.77 +public final class LicenseChangerWizardAction implements ActionListener {
   50.78 +
   50.79 +    private List<DataObject> context;
   50.80 +    
   50.81 +    public LicenseChangerWizardAction(List<DataObject> context) {
   50.82 +        this.context = context;
   50.83 +    }
   50.84 +    
   50.85 +    @Override
   50.86 +    public void actionPerformed(ActionEvent e) {
   50.87 +        Set<FileObject> files = new HashSet<FileObject>();
   50.88 +        Project owningProject = null;
   50.89 +        for (DataObject ob : context) {
   50.90 +            FileObject fo = ob.getPrimaryFile();
   50.91 +            Project proj = FileOwnerQuery.getOwner(fo);
   50.92 +            if(owningProject == null) {
   50.93 +                owningProject = proj;
   50.94 +                //TODO implement better exclusion of build directories 
   50.95 +                files.add (fo);
   50.96 +            } else {
   50.97 +                if(owningProject.equals(proj)) {
   50.98 +                    files.add(fo);
   50.99 +                } else {
  50.100 +                    Exceptions.printStackTrace(new IllegalStateException("Can only handle folders below one project!"));
  50.101 +                    return;
  50.102 +                }
  50.103 +            }
  50.104 +        }
  50.105 +        
  50.106 +        List<WizardDescriptor.Panel<WizardDescriptor>> panels = new ArrayList<WizardDescriptor.Panel<WizardDescriptor>>();
  50.107 +        panels.add(new ChooseFileTypesWizardPanel());
  50.108 +        panels.add(new LicenseChooserWizardPanel());
  50.109 +        panels.add(new SelectFoldersWizardPanel());
  50.110 +        panels.add(new PreviewWizardPanel());
  50.111 +        String[] steps = new String[panels.size()];
  50.112 +        for (int i = 0; i < panels.size(); i++) {
  50.113 +            Component c = panels.get(i).getComponent();
  50.114 +            // Default step name to component name of panel.
  50.115 +            steps[i] = c.getName();
  50.116 +            if (c instanceof JComponent) { // assume Swing components
  50.117 +                JComponent jc = (JComponent) c;
  50.118 +                jc.putClientProperty(WizardDescriptor.PROP_CONTENT_SELECTED_INDEX, i);
  50.119 +                jc.putClientProperty(WizardDescriptor.PROP_CONTENT_DATA, steps);
  50.120 +                jc.putClientProperty(WizardDescriptor.PROP_AUTO_WIZARD_STYLE, true);
  50.121 +                jc.putClientProperty(WizardDescriptor.PROP_CONTENT_DISPLAYED, true);
  50.122 +                jc.putClientProperty(WizardDescriptor.PROP_CONTENT_NUMBERED, true);
  50.123 +            }
  50.124 +        }
  50.125 +        WizardDescriptor wiz = new WizardDescriptor(new WizardDescriptor.ArrayIterator<WizardDescriptor>(panels));
  50.126 +        // {0} will be replaced by WizardDesriptor.Panel.getComponent().getName()
  50.127 +        wiz.setTitleFormat(new MessageFormat("{0}"));
  50.128 +        wiz.setTitle("Change licenses");
  50.129 +        wiz.putProperty(WizardProperties.KEY_ROOT_FILES, files);
  50.130 +        wiz.putProperty(WizardProperties.KEY_PROJECT, owningProject);
  50.131 +        if (DialogDisplayer.getDefault().notify(wiz) == WizardDescriptor.FINISH_OPTION) {
  50.132 +            RequestProcessor.getDefault().post(new LicenseChangerRunnable(wiz));
  50.133 +        }
  50.134 +    }
  50.135 +}
    51.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChooserPanel.form	Fri Sep 14 00:27:52 2012 -0400
    51.3 @@ -0,0 +1,116 @@
    51.4 +<?xml version="1.0" encoding="UTF-8" ?>
    51.5 +
    51.6 +<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    51.7 +  <AuxValues>
    51.8 +    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
    51.9 +    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   51.10 +    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   51.11 +    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   51.12 +    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   51.13 +    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
   51.14 +    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   51.15 +    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   51.16 +    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   51.17 +  </AuxValues>
   51.18 +
   51.19 +  <Layout>
   51.20 +    <DimensionLayout dim="0">
   51.21 +      <Group type="103" groupAlignment="0" attributes="0">
   51.22 +          <Group type="102" alignment="0" attributes="0">
   51.23 +              <EmptySpace max="-2" attributes="0"/>
   51.24 +              <Group type="103" groupAlignment="0" attributes="0">
   51.25 +                  <Component id="jScrollPane2" max="32767" attributes="0"/>
   51.26 +                  <Group type="102" alignment="0" attributes="0">
   51.27 +                      <Component id="chooseLabel" min="-2" max="-2" attributes="0"/>
   51.28 +                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
   51.29 +                      <Component id="selectLicense" max="32767" attributes="0"/>
   51.30 +                  </Group>
   51.31 +                  <Group type="102" alignment="1" attributes="0">
   51.32 +                      <Component id="updateDefaultProjectLicense" min="-2" max="-2" attributes="0"/>
   51.33 +                      <EmptySpace max="32767" attributes="0"/>
   51.34 +                      <Component id="browseButton" min="-2" max="-2" attributes="0"/>
   51.35 +                  </Group>
   51.36 +              </Group>
   51.37 +              <EmptySpace max="-2" attributes="0"/>
   51.38 +          </Group>
   51.39 +      </Group>
   51.40 +    </DimensionLayout>
   51.41 +    <DimensionLayout dim="1">
   51.42 +      <Group type="103" groupAlignment="0" attributes="0">
   51.43 +          <Group type="102" alignment="0" attributes="0">
   51.44 +              <EmptySpace min="-2" max="-2" attributes="0"/>
   51.45 +              <Group type="103" groupAlignment="3" attributes="0">
   51.46 +                  <Component id="chooseLabel" alignment="3" min="-2" max="-2" attributes="0"/>
   51.47 +                  <Component id="selectLicense" alignment="3" min="-2" max="-2" attributes="0"/>
   51.48 +              </Group>
   51.49 +              <EmptySpace max="-2" attributes="0"/>
   51.50 +              <Component id="jScrollPane2" pref="223" max="32767" attributes="0"/>
   51.51 +              <EmptySpace max="-2" attributes="0"/>
   51.52 +              <Group type="103" groupAlignment="0" attributes="0">
   51.53 +                  <Component id="browseButton" min="-2" max="-2" attributes="0"/>
   51.54 +                  <Component id="updateDefaultProjectLicense" min="-2" max="-2" attributes="0"/>
   51.55 +              </Group>
   51.56 +              <EmptySpace max="-2" attributes="0"/>
   51.57 +          </Group>
   51.58 +      </Group>
   51.59 +    </DimensionLayout>
   51.60 +  </Layout>
   51.61 +  <SubComponents>
   51.62 +    <Component class="javax.swing.JLabel" name="chooseLabel">
   51.63 +      <Properties>
   51.64 +        <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
   51.65 +          <ComponentRef name="selectLicense"/>
   51.66 +        </Property>
   51.67 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   51.68 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="LicenseChooserPanel.chooseLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   51.69 +        </Property>
   51.70 +      </Properties>
   51.71 +    </Component>
   51.72 +    <Component class="javax.swing.JComboBox" name="selectLicense">
   51.73 +      <Properties>
   51.74 +        <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
   51.75 +          <StringArray count="1">
   51.76 +            <StringItem index="0" value="[loading licenses]"/>
   51.77 +          </StringArray>
   51.78 +        </Property>
   51.79 +      </Properties>
   51.80 +      <Events>
   51.81 +        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="licenseSelected"/>
   51.82 +      </Events>
   51.83 +    </Component>
   51.84 +    <Component class="javax.swing.JButton" name="browseButton">
   51.85 +      <Properties>
   51.86 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   51.87 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="LicenseChooserPanel.browseButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   51.88 +        </Property>
   51.89 +      </Properties>
   51.90 +      <Events>
   51.91 +        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="browseForLicense"/>
   51.92 +      </Events>
   51.93 +    </Component>
   51.94 +    <Component class="javax.swing.JCheckBox" name="updateDefaultProjectLicense">
   51.95 +      <Properties>
   51.96 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   51.97 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="LicenseChooserPanel.updateDefaultProjectLicense.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   51.98 +        </Property>
   51.99 +      </Properties>
  51.100 +    </Component>
  51.101 +    <Container class="javax.swing.JScrollPane" name="jScrollPane2">
  51.102 +      <AuxValues>
  51.103 +        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
  51.104 +      </AuxValues>
  51.105 +
  51.106 +      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
  51.107 +      <SubComponents>
  51.108 +        <Component class="javax.swing.JEditorPane" name="licenseText">
  51.109 +          <Properties>
  51.110 +            <Property name="editable" type="boolean" value="false"/>
  51.111 +          </Properties>
  51.112 +          <AuxValues>
  51.113 +            <AuxValue name="JavaCodeGenerator_AddingCodePost" type="java.lang.String" value="licenseText.setContentType(&quot;text/plain&quot;);"/>
  51.114 +          </AuxValues>
  51.115 +        </Component>
  51.116 +      </SubComponents>
  51.117 +    </Container>
  51.118 +  </SubComponents>
  51.119 +</Form>
    52.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChooserPanel.java	Fri Sep 14 00:27:52 2012 -0400
    52.3 @@ -0,0 +1,302 @@
    52.4 +/*
    52.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    52.6 + *
    52.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    52.8 + *
    52.9 + * The contents of this file are subject to the terms of either the GNU
   52.10 + * General Public License Version 2 only ("GPL") or the Common
   52.11 + * Development and Distribution License("CDDL") (collectively, the
   52.12 + * "License"). You may not use this file except in compliance with the
   52.13 + * License. You can obtain a copy of the License at
   52.14 + * http://www.netbeans.org/cddl-gplv2.html
   52.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   52.16 + * specific language governing permissions and limitations under the
   52.17 + * License.  When distributing the software, include this License Header
   52.18 + * Notice in each file and include the License file at
   52.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   52.20 + * particular file as subject to the "Classpath" exception as provided
   52.21 + * by Sun in the GPL Version 2 section of the License file that
   52.22 + * accompanied this code. If applicable, add the following below the
   52.23 + * License Header, with the fields enclosed by brackets [] replaced by
   52.24 + * your own identifying information:
   52.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   52.26 + *
   52.27 + * If you wish your version of this file to be governed by only the CDDL
   52.28 + * or only the GPL Version 2, indicate your decision by adding
   52.29 + * "[Contributor] elects to include this software in this distribution
   52.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   52.31 + * single choice of license, a recipient has the option to distribute
   52.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   52.33 + * to extend the choice of license to its licensees as provided above.
   52.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   52.35 + * Version 2 license, then the option applies only if the new code is
   52.36 + * made subject to such option by the copyright holder.
   52.37 + *
   52.38 + * Contributor(s):
   52.39 + *
   52.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   52.41 + */
   52.42 +
   52.43 +package org.netbeans.modules.licensechanger.spi.wizard;
   52.44 +
   52.45 +import java.awt.Component;
   52.46 +import java.awt.EventQueue;
   52.47 +import java.io.File;
   52.48 +import java.io.IOException;
   52.49 +import javax.swing.DefaultComboBoxModel;
   52.50 +import javax.swing.SwingUtilities;
   52.51 +import javax.swing.event.DocumentEvent;
   52.52 +import javax.swing.event.DocumentListener;
   52.53 +import org.netbeans.modules.licensechanger.api.LicenseHeader;
   52.54 +import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   52.55 +import org.openide.filesystems.FileChooserBuilder;
   52.56 +import org.openide.util.Exceptions;
   52.57 +import org.openide.util.NbBundle;
   52.58 +import org.openide.util.RequestProcessor;
   52.59 +
   52.60 +/**
   52.61 + *
   52.62 + * @author Tim Boudreau
   52.63 + * @author Nils Hoffmann (Refactoring)
   52.64 + */
   52.65 +public class LicenseChooserPanel extends javax.swing.JPanel implements Runnable, DocumentListener {
   52.66 +
   52.67 +    private volatile boolean licensesLoaded;
   52.68 +    private volatile boolean loadingLicenses;
   52.69 +
   52.70 +    /**
   52.71 +     * Creates new form LicenseChooser
   52.72 +     */
   52.73 +    public LicenseChooserPanel() {
   52.74 +        initComponents();
   52.75 +        enabled(false);
   52.76 +        licenseText.getDocument().addDocumentListener(this);
   52.77 +        licenseText.setText(WizardProperties.VALUE_DEFAULT_LICENSE_TEXT);
   52.78 +        setName("Choose License Header");
   52.79 +    }
   52.80 +
   52.81 +    /**
   52.82 +     * This method is called from within the constructor to initialize the form.
   52.83 +     * WARNING: Do NOT modify this code. The content of this method is always
   52.84 +     * regenerated by the Form Editor.
   52.85 +     */
   52.86 +    @SuppressWarnings("unchecked")
   52.87 +    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   52.88 +    private void initComponents() {
   52.89 +
   52.90 +        chooseLabel = new javax.swing.JLabel();
   52.91 +        selectLicense = new javax.swing.JComboBox();
   52.92 +        browseButton = new javax.swing.JButton();
   52.93 +        updateDefaultProjectLicense = new javax.swing.JCheckBox();
   52.94 +        jScrollPane2 = new javax.swing.JScrollPane();
   52.95 +        licenseText = new javax.swing.JEditorPane();
   52.96 +
   52.97 +        chooseLabel.setLabelFor(selectLicense);
   52.98 +        chooseLabel.setText(org.openide.util.NbBundle.getMessage(LicenseChooserPanel.class, "LicenseChooserPanel.chooseLabel.text")); // NOI18N
   52.99 +
  52.100 +        selectLicense.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "[loading licenses]" }));
  52.101 +        selectLicense.addActionListener(new java.awt.event.ActionListener() {
  52.102 +            public void actionPerformed(java.awt.event.ActionEvent evt) {
  52.103 +                licenseSelected(evt);
  52.104 +            }
  52.105 +        });
  52.106 +
  52.107 +        browseButton.setText(org.openide.util.NbBundle.getMessage(LicenseChooserPanel.class, "LicenseChooserPanel.browseButton.text")); // NOI18N
  52.108 +        browseButton.addActionListener(new java.awt.event.ActionListener() {
  52.109 +            public void actionPerformed(java.awt.event.ActionEvent evt) {
  52.110 +                browseForLicense(evt);
  52.111 +            }
  52.112 +        });
  52.113 +
  52.114 +        updateDefaultProjectLicense.setText(org.openide.util.NbBundle.getMessage(LicenseChooserPanel.class, "LicenseChooserPanel.updateDefaultProjectLicense.text")); // NOI18N
  52.115 +
  52.116 +        licenseText.setEditable(false);
  52.117 +        jScrollPane2.setViewportView(licenseText);
  52.118 +        licenseText.setContentType("text/plain");
  52.119 +
  52.120 +        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
  52.121 +        this.setLayout(layout);
  52.122 +        layout.setHorizontalGroup(
  52.123 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  52.124 +            .addGroup(layout.createSequentialGroup()
  52.125 +                .addContainerGap()
  52.126 +                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  52.127 +                    .addComponent(jScrollPane2)
  52.128 +                    .addGroup(layout.createSequentialGroup()
  52.129 +                        .addComponent(chooseLabel)
  52.130 +                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  52.131 +                        .addComponent(selectLicense, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  52.132 +                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  52.133 +                        .addComponent(updateDefaultProjectLicense)
  52.134 +                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  52.135 +                        .addComponent(browseButton)))
  52.136 +                .addContainerGap())
  52.137 +        );
  52.138 +        layout.setVerticalGroup(
  52.139 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  52.140 +            .addGroup(layout.createSequentialGroup()
  52.141 +                .addContainerGap()
  52.142 +                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  52.143 +                    .addComponent(chooseLabel)
  52.144 +                    .addComponent(selectLicense, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  52.145 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  52.146 +                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 223, Short.MAX_VALUE)
  52.147 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  52.148 +                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  52.149 +                    .addComponent(browseButton)
  52.150 +                    .addComponent(updateDefaultProjectLicense))
  52.151 +                .addContainerGap())
  52.152 +        );
  52.153 +    }// </editor-fold>//GEN-END:initComponents
  52.154 +
  52.155 +    private void licenseSelected(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_licenseSelected
  52.156 +        if (loadingLicenses || !selectLicense.isEnabled()) {
  52.157 +            return;
  52.158 +        }
  52.159 +        loadLicenseFromResource((LicenseHeader) selectLicense.getSelectedItem());
  52.160 +    }//GEN-LAST:event_licenseSelected
  52.161 +
  52.162 +    private void browseForLicense(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseForLicense
  52.163 +        File f;
  52.164 +        if ((f = new FileChooserBuilder(LicenseChooserPanel.class).setTitle(
  52.165 +                NbBundle.getMessage(LicenseChooserPanel.class, "BROWSE_LICENSE_TITLE")) //NOI18N
  52.166 +                .setFilesOnly(true).showOpenDialog()) != null) {
  52.167 +            updateDefaultProjectLicense.setSelected(false);
  52.168 +            DefaultComboBoxModel dcbm = (DefaultComboBoxModel) selectLicense.getModel();
  52.169 +            LicenseHeader lh = LicenseHeader.fromFile(f);
  52.170 +            LicenseHeader.addAsNetBeansTemplate(lh);
  52.171 +            for(LicenseHeader header:LicenseHeader.fromTemplates()) {
  52.172 +                if(header.getName().equals(lh.getName())) {
  52.173 +                    System.out.println("Found newly added template!");
  52.174 +                    dcbm.addElement(header);
  52.175 +                    dcbm.setSelectedItem(header);
  52.176 +                    loadLicenseFromResource(header);
  52.177 +                }
  52.178 +            }
  52.179 +        }
  52.180 +    }//GEN-LAST:event_browseForLicense
  52.181 +
  52.182 +    @Override
  52.183 +    public void addNotify() {
  52.184 +        super.addNotify();
  52.185 +        if (!licensesLoaded && !loadingLicenses) {
  52.186 +            loadingLicenses = true;
  52.187 +            enabled(false);
  52.188 +            RequestProcessor.getDefault().post(this);
  52.189 +        }
  52.190 +    }
  52.191 +    // Variables declaration - do not modify//GEN-BEGIN:variables
  52.192 +    private javax.swing.JButton browseButton;
  52.193 +    private javax.swing.JLabel chooseLabel;
  52.194 +    private javax.swing.JScrollPane jScrollPane2;
  52.195 +    private javax.swing.JEditorPane licenseText;
  52.196 +    private javax.swing.JComboBox selectLicense;
  52.197 +    private javax.swing.JCheckBox updateDefaultProjectLicense;
  52.198 +    // End of variables declaration//GEN-END:variables
  52.199 +
  52.200 +    private void enabled(boolean val) {
  52.201 +        for (Component c : getComponents()) {
  52.202 +            c.setEnabled(val);
  52.203 +        }
  52.204 +    }
  52.205 +
  52.206 +    private void initLicenses() throws IOException {
  52.207 +        assert !EventQueue.isDispatchThread();
  52.208 +        final DefaultComboBoxModel mdl = new DefaultComboBoxModel();
  52.209 +        for(LicenseHeader header:LicenseHeader.fromTemplates()) {
  52.210 +            mdl.addElement(header);
  52.211 +        }
  52.212 +        EventQueue.invokeLater(new Runnable() {
  52.213 +            @Override
  52.214 +            public void run() {
  52.215 +                mdl.setSelectedItem(NbBundle.getMessage(LicenseChooserPanel.class,
  52.216 +                        "MSG_SELECT_A_LICENSE")); //NOI18N
  52.217 +                selectLicense.setModel(mdl);
  52.218 +                enabled(true);
  52.219 +                licensesLoaded = true;
  52.220 +                loadingLicenses = false;
  52.221 +            }
  52.222 +        });
  52.223 +    }
  52.224 +
  52.225 +    @Override
  52.226 +    public void run() {
  52.227 +        try {
  52.228 +            initLicenses();
  52.229 +        } catch (IOException ex) {
  52.230 +            Exceptions.printStackTrace(ex);
  52.231 +        }
  52.232 +    }
  52.233 +
  52.234 +    private void loadLicenseFromResource(LicenseHeader header) {
  52.235 +        enabled(false);
  52.236 +        SwingUtilities.invokeLater(new ResourceLoader(header));
  52.237 +    }
  52.238 +
  52.239 +    public String getLicenseText() {
  52.240 +        return licenseText.getText();
  52.241 +    }
  52.242 +    
  52.243 +    public String getLicenseName() {
  52.244 +        Object obj = selectLicense.getSelectedItem();
  52.245 +        if(obj!= null && obj instanceof LicenseHeader) {
  52.246 +            LicenseHeader header = (LicenseHeader)obj;
  52.247 +            return header.getName();
  52.248 +        }
  52.249 +        return null;
  52.250 +    }
  52.251 +    
  52.252 +    public boolean isUpdateDefaultProjectLicense() {
  52.253 +        return updateDefaultProjectLicense.isSelected();
  52.254 +    }
  52.255 +    
  52.256 +    public void setUpdateDefaultProjectLicense(boolean b) {
  52.257 +        updateDefaultProjectLicense.setSelected(b);
  52.258 +    }
  52.259 +
  52.260 +    private void updateLicense() {
  52.261 +        System.out.println("Update license called");
  52.262 +        licenseText.setEditable(false);
  52.263 +        String txt = licenseText.getText();
  52.264 +        if (!txt.endsWith("\n")) {
  52.265 +            txt += "\n";
  52.266 +        }
  52.267 +        firePropertyChange(WizardProperties.KEY_LICENSE_TEXT, null, txt);
  52.268 +    }
  52.269 +
  52.270 +    @Override
  52.271 +    public void insertUpdate(DocumentEvent e) {
  52.272 +        updateLicense();
  52.273 +    }
  52.274 +
  52.275 +    @Override
  52.276 +    public void removeUpdate(DocumentEvent e) {
  52.277 +        updateLicense();
  52.278 +    }
  52.279 +
  52.280 +    @Override
  52.281 +    public void changedUpdate(DocumentEvent e) {
  52.282 +        updateLicense();
  52.283 +    }
  52.284 +
  52.285 +    private class ResourceLoader implements Runnable {
  52.286 +
  52.287 +        private LicenseHeader header;
  52.288 +
  52.289 +        ResourceLoader(LicenseHeader header) {
  52.290 +            this.header = header;
  52.291 +        }
  52.292 +        
  52.293 +        @Override
  52.294 +        public void run() {
  52.295 +            licenseText.setText(header.getLicenseHeader());
  52.296 +            String mimeType = header.getFileObject().getMIMEType();
  52.297 +            licenseText.setContentType(mimeType);
  52.298 +            enabled(true);
  52.299 +        }
  52.300 +    }
  52.301 +
  52.302 +    public void setLicenseText(String text) {
  52.303 +        licenseText.setText(text);
  52.304 +    }
  52.305 +}
    53.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChooserWizardPanel.java	Fri Sep 14 00:27:52 2012 -0400
    53.3 @@ -0,0 +1,149 @@
    53.4 +/*
    53.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    53.6 + *
    53.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    53.8 + *
    53.9 + * The contents of this file are subject to the terms of either the GNU
   53.10 + * General Public License Version 2 only ("GPL") or the Common
   53.11 + * Development and Distribution License("CDDL") (collectively, the
   53.12 + * "License"). You may not use this file except in compliance with the
   53.13 + * License. You can obtain a copy of the License at
   53.14 + * http://www.netbeans.org/cddl-gplv2.html
   53.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   53.16 + * specific language governing permissions and limitations under the
   53.17 + * License.  When distributing the software, include this License Header
   53.18 + * Notice in each file and include the License file at
   53.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   53.20 + * particular file as subject to the "Classpath" exception as provided
   53.21 + * by Sun in the GPL Version 2 section of the License file that
   53.22 + * accompanied this code. If applicable, add the following below the
   53.23 + * License Header, with the fields enclosed by brackets [] replaced by
   53.24 + * your own identifying information:
   53.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   53.26 + *
   53.27 + * If you wish your version of this file to be governed by only the CDDL
   53.28 + * or only the GPL Version 2, indicate your decision by adding
   53.29 + * "[Contributor] elects to include this software in this distribution
   53.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   53.31 + * single choice of license, a recipient has the option to distribute
   53.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   53.33 + * to extend the choice of license to its licensees as provided above.
   53.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   53.35 + * Version 2 license, then the option applies only if the new code is
   53.36 + * made subject to such option by the copyright holder.
   53.37 + *
   53.38 + * Contributor(s):
   53.39 + *
   53.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   53.41 + */
   53.42 +
   53.43 +package org.netbeans.modules.licensechanger.spi.wizard;
   53.44 +
   53.45 +import java.beans.PropertyChangeEvent;
   53.46 +import java.beans.PropertyChangeListener;
   53.47 +import javax.swing.event.ChangeListener;
   53.48 +import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   53.49 +import org.openide.WizardDescriptor;
   53.50 +import org.openide.WizardValidationException;
   53.51 +import org.openide.util.ChangeSupport;
   53.52 +import org.openide.util.HelpCtx;
   53.53 +
   53.54 +/**
   53.55 + * 
   53.56 + * @author Nils Hoffmann
   53.57 + */
   53.58 +public class LicenseChooserWizardPanel implements WizardDescriptor.ValidatingPanel<WizardDescriptor>, PropertyChangeListener {
   53.59 +
   53.60 +    /**
   53.61 +     * The visual component that displays this panel. If you need to access the
   53.62 +     * component from this class, just use getComponent().
   53.63 +     */
   53.64 +    private LicenseChooserPanel component;
   53.65 +    private WizardDescriptor wiz;
   53.66 +    private boolean valid = false;
   53.67 +    private ChangeSupport cs = new ChangeSupport(this);
   53.68 +
   53.69 +    // Get the visual component for the panel. In this template, the component
   53.70 +    // is kept separate. This can be more efficient: if the wizard is created
   53.71 +    // but never displayed, or not all panels are displayed, it is better to
   53.72 +    // create only those which really need to be visible.
   53.73 +    @Override
   53.74 +    public LicenseChooserPanel getComponent() {
   53.75 +        if (component == null) {
   53.76 +            component = new LicenseChooserPanel();
   53.77 +            component.addPropertyChangeListener(this);
   53.78 +        }
   53.79 +        return component;
   53.80 +    }
   53.81 +    
   53.82 +    @Override
   53.83 +    public HelpCtx getHelp() {
   53.84 +        // Show no Help button for this panel:
   53.85 +        return HelpCtx.DEFAULT_HELP;
   53.86 +        // If you have context help:
   53.87 +        // return new HelpCtx("help.key.here");
   53.88 +    }
   53.89 +    
   53.90 +    @Override
   53.91 +    public boolean isValid() {
   53.92 +        return valid;
   53.93 +    }
   53.94 +    
   53.95 +    @Override
   53.96 +    public void addChangeListener(ChangeListener l) {
   53.97 +        cs.addChangeListener(l);
   53.98 +    }
   53.99 +    
  53.100 +    @Override
  53.101 +    public void removeChangeListener(ChangeListener l) {
  53.102 +        cs.removeChangeListener(l);
  53.103 +    }
  53.104 +    
  53.105 +    @Override
  53.106 +    public void propertyChange(PropertyChangeEvent pce) {
  53.107 +        cs.fireChange();
  53.108 +        try{
  53.109 +            validate();
  53.110 +        }catch(WizardValidationException ex) {
  53.111 +            if(wiz!=null) {
  53.112 +                wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, "Please select a license!");
  53.113 +            }
  53.114 +        }
  53.115 +    }
  53.116 +    
  53.117 +    @Override
  53.118 +    public void readSettings(WizardDescriptor wiz) {
  53.119 +        this.wiz = wiz;
  53.120 +        Object obj = wiz.getProperty(WizardProperties.KEY_LICENSE_TEXT);
  53.121 +        if (obj != null && obj instanceof String) {
  53.122 +            getComponent().setLicenseText((String) obj);
  53.123 +        }
  53.124 +        Boolean b = (Boolean)wiz.getProperty(WizardProperties.KEY_UPDATE_DEFAULT_PROJECT_LICENSE);
  53.125 +        if(b != null) {
  53.126 +            getComponent().setUpdateDefaultProjectLicense(b);
  53.127 +        }
  53.128 +    }
  53.129 +    
  53.130 +    @Override
  53.131 +    public void storeSettings(WizardDescriptor wiz) {
  53.132 +        wiz.putProperty(WizardProperties.KEY_LICENSE_TEXT, getComponent().getLicenseText());
  53.133 +        wiz.putProperty(WizardProperties.KEY_LICENSE_NAME, getComponent().getLicenseName());
  53.134 +        wiz.putProperty(WizardProperties.KEY_UPDATE_DEFAULT_PROJECT_LICENSE, Boolean.valueOf(getComponent().isUpdateDefaultProjectLicense()));
  53.135 +    }
  53.136 +
  53.137 +    @Override
  53.138 +    public void validate() throws WizardValidationException {
  53.139 +        valid = true;
  53.140 +        if (getComponent().getLicenseText() == null ||
  53.141 +            getComponent().getLicenseText().equals(WizardProperties.VALUE_DEFAULT_LICENSE_TEXT)) {
  53.142 +            valid = false;
  53.143 +            throw new WizardValidationException(component, "Please select a license!", null);
  53.144 +        }
  53.145 +        if(wiz!=null) {
  53.146 +            wiz.putProperty(WizardDescriptor.PROP_INFO_MESSAGE, null);
  53.147 +            wiz.putProperty(WizardDescriptor.PROP_WARNING_MESSAGE, null);
  53.148 +            wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, null);
  53.149 +        }
  53.150 +    }
  53.151 +
  53.152 +}
    54.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LineEndingsPanel.form	Fri Sep 14 00:27:52 2012 -0400
    54.3 @@ -0,0 +1,119 @@
    54.4 +<?xml version="1.0" encoding="UTF-8" ?>
    54.5 +
    54.6 +<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    54.7 +  <NonVisualComponents>
    54.8 +    <Component class="javax.swing.ButtonGroup" name="buttonGroup1">
    54.9 +    </Component>
   54.10 +  </NonVisualComponents>
   54.11 +  <Properties>
   54.12 +    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   54.13 +      <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
   54.14 +        <TitledBorder title="Line Endings">
   54.15 +          <ResourceString PropertyName="titleX" bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="LineEndingsPanel.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   54.16 +        </TitledBorder>
   54.17 +      </Border>
   54.18 +    </Property>
   54.19 +  </Properties>
   54.20 +  <AccessibilityProperties>
   54.21 +    <Property name="AccessibleContext.accessibleName" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   54.22 +      <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="LineEndingsPanel.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   54.23 +    </Property>
   54.24 +  </AccessibilityProperties>
   54.25 +  <AuxValues>
   54.26 +    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
   54.27 +    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   54.28 +    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   54.29 +    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   54.30 +    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   54.31 +    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
   54.32 +    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   54.33 +    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   54.34 +    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   54.35 +  </AuxValues>
   54.36 +
   54.37 +  <Layout>
   54.38 +    <DimensionLayout dim="0">
   54.39 +      <Group type="103" groupAlignment="0" attributes="0">
   54.40 +          <Group type="102" attributes="0">
   54.41 +              <EmptySpace max="-2" attributes="0"/>
   54.42 +              <Group type="103" groupAlignment="0" attributes="0">
   54.43 +                  <Component id="noChangeButton" alignment="0" min="-2" max="-2" attributes="0"/>
   54.44 +                  <Component id="systemDefaultButton" alignment="0" min="-2" max="-2" attributes="0"/>
   54.45 +                  <Component id="newlineButton" alignment="0" min="-2" max="-2" attributes="0"/>
   54.46 +                  <Component id="forceCrlf" alignment="0" min="-2" max="-2" attributes="0"/>
   54.47 +              </Group>
   54.48 +              <EmptySpace max="32767" attributes="0"/>
   54.49 +          </Group>
   54.50 +      </Group>
   54.51 +    </DimensionLayout>
   54.52 +    <DimensionLayout dim="1">
   54.53 +      <Group type="103" groupAlignment="0" attributes="0">
   54.54 +          <Group type="102" alignment="0" attributes="0">
   54.55 +              <Component id="noChangeButton" min="-2" max="-2" attributes="0"/>
   54.56 +              <EmptySpace type="unrelated" max="-2" attributes="0"/>
   54.57 +              <Component id="systemDefaultButton" min="-2" max="-2" attributes="0"/>
   54.58 +              <EmptySpace type="unrelated" max="-2" attributes="0"/>
   54.59 +              <Component id="newlineButton" min="-2" max="-2" attributes="0"/>
   54.60 +              <EmptySpace type="unrelated" max="-2" attributes="0"/>
   54.61 +              <Component id="forceCrlf" min="-2" max="-2" attributes="0"/>
   54.62 +              <EmptySpace max="32767" attributes="0"/>
   54.63 +          </Group>
   54.64 +      </Group>
   54.65 +    </DimensionLayout>
   54.66 +  </Layout>
   54.67 +  <SubComponents>
   54.68 +    <Component class="javax.swing.JRadioButton" name="noChangeButton">
   54.69 +      <Properties>
   54.70 +        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
   54.71 +          <ComponentRef name="buttonGroup1"/>
   54.72 +        </Property>
   54.73 +        <Property name="selected" type="boolean" value="true"/>
   54.74 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   54.75 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="LineEndingsPanel.noChangeButton.text_1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   54.76 +        </Property>
   54.77 +      </Properties>
   54.78 +      <Events>
   54.79 +        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lineEndingPreferenceChanged"/>
   54.80 +      </Events>
   54.81 +    </Component>
   54.82 +    <Component class="javax.swing.JRadioButton" name="systemDefaultButton">
   54.83 +      <Properties>
   54.84 +        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
   54.85 +          <ComponentRef name="buttonGroup1"/>
   54.86 +        </Property>
   54.87 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   54.88 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="LineEndingsPanel.systemDefaultButton.text_1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   54.89 +        </Property>
   54.90 +      </Properties>
   54.91 +      <Events>
   54.92 +        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lineEndingPreferenceChanged"/>
   54.93 +      </Events>
   54.94 +    </Component>
   54.95 +    <Component class="javax.swing.JRadioButton" name="newlineButton">
   54.96 +      <Properties>
   54.97 +        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
   54.98 +          <ComponentRef name="buttonGroup1"/>
   54.99 +        </Property>
  54.100 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  54.101 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="LineEndingsPanel.newlineButton.text_1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  54.102 +        </Property>
  54.103 +      </Properties>
  54.104 +      <Events>
  54.105 +        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lineEndingPreferenceChanged"/>
  54.106 +      </Events>
  54.107 +    </Component>
  54.108 +    <Component class="javax.swing.JRadioButton" name="forceCrlf">
  54.109 +      <Properties>
  54.110 +        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
  54.111 +          <ComponentRef name="buttonGroup1"/>
  54.112 +        </Property>
  54.113 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
  54.114 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="LineEndingsPanel.forceCrlf.text_1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  54.115 +        </Property>
  54.116 +      </Properties>
  54.117 +      <Events>
  54.118 +        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lineEndingPreferenceChanged"/>
  54.119 +      </Events>
  54.120 +    </Component>
  54.121 +  </SubComponents>
  54.122 +</Form>
    55.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LineEndingsPanel.java	Fri Sep 14 00:27:52 2012 -0400
    55.3 @@ -0,0 +1,173 @@
    55.4 +/*
    55.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    55.6 + *
    55.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    55.8 + *
    55.9 + * The contents of this file are subject to the terms of either the GNU
   55.10 + * General Public License Version 2 only ("GPL") or the Common
   55.11 + * Development and Distribution License("CDDL") (collectively, the
   55.12 + * "License"). You may not use this file except in compliance with the
   55.13 + * License. You can obtain a copy of the License at
   55.14 + * http://www.netbeans.org/cddl-gplv2.html
   55.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   55.16 + * specific language governing permissions and limitations under the
   55.17 + * License.  When distributing the software, include this License Header
   55.18 + * Notice in each file and include the License file at
   55.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   55.20 + * particular file as subject to the "Classpath" exception as provided
   55.21 + * by Sun in the GPL Version 2 section of the License file that
   55.22 + * accompanied this code. If applicable, add the following below the
   55.23 + * License Header, with the fields enclosed by brackets [] replaced by
   55.24 + * your own identifying information:
   55.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   55.26 + *
   55.27 + * If you wish your version of this file to be governed by only the CDDL
   55.28 + * or only the GPL Version 2, indicate your decision by adding
   55.29 + * "[Contributor] elects to include this software in this distribution
   55.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   55.31 + * single choice of license, a recipient has the option to distribute
   55.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   55.33 + * to extend the choice of license to its licensees as provided above.
   55.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   55.35 + * Version 2 license, then the option applies only if the new code is
   55.36 + * made subject to such option by the copyright holder.
   55.37 + *
   55.38 + * Contributor(s):
   55.39 + *
   55.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   55.41 + */
   55.42 +
   55.43 +/*
   55.44 + * LineEndingsPanel.java
   55.45 + *
   55.46 + * Created on Mar 20, 2009, 12:33:04 AM
   55.47 + */
   55.48 +
   55.49 +package org.netbeans.modules.licensechanger.spi.wizard;
   55.50 +
   55.51 +import javax.swing.JRadioButton;
   55.52 +import org.netbeans.modules.licensechanger.spi.wizard.utils.LineEndingPreference;
   55.53 +import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   55.54 +import org.openide.util.NbPreferences;
   55.55 +
   55.56 +/**
   55.57 + *
   55.58 + * @author Administrator
   55.59 + */
   55.60 +public class LineEndingsPanel extends javax.swing.JPanel {
   55.61 +    
   55.62 +    /** Creates new form LineEndingsPanel */
   55.63 +    public LineEndingsPanel() {
   55.64 +        initComponents();
   55.65 +        forceCrlf.putClientProperty(WizardProperties.PROP_ENDING, LineEndingPreference.FORCE_CRLF);
   55.66 +        noChangeButton.putClientProperty(WizardProperties.PROP_ENDING, LineEndingPreference.NO_CHANGE);
   55.67 +        newlineButton.putClientProperty(WizardProperties.PROP_ENDING, LineEndingPreference.FORCE_NEWLINE);
   55.68 +        systemDefaultButton.putClientProperty(WizardProperties.PROP_ENDING, LineEndingPreference.SYSTEM_DEFAULT);
   55.69 +    }
   55.70 +
   55.71 +    /** This method is called from within the constructor to
   55.72 +     * initialize the form.
   55.73 +     * WARNING: Do NOT modify this code. The content of this method is
   55.74 +     * always regenerated by the Form Editor.
   55.75 +     */
   55.76 +    @SuppressWarnings("unchecked")
   55.77 +    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   55.78 +    private void initComponents() {
   55.79 +
   55.80 +        buttonGroup1 = new javax.swing.ButtonGroup();
   55.81 +        noChangeButton = new javax.swing.JRadioButton();
   55.82 +        systemDefaultButton = new javax.swing.JRadioButton();
   55.83 +        newlineButton = new javax.swing.JRadioButton();
   55.84 +        forceCrlf = new javax.swing.JRadioButton();
   55.85 +
   55.86 +        setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(LineEndingsPanel.class, "LineEndingsPanel.border.title"))); // NOI18N
   55.87 +
   55.88 +        buttonGroup1.add(noChangeButton);
   55.89 +        noChangeButton.setSelected(true);
   55.90 +        noChangeButton.setText(org.openide.util.NbBundle.getMessage(LineEndingsPanel.class, "LineEndingsPanel.noChangeButton.text_1")); // NOI18N
   55.91 +        noChangeButton.addActionListener(new java.awt.event.ActionListener() {
   55.92 +            public void actionPerformed(java.awt.event.ActionEvent evt) {
   55.93 +                lineEndingPreferenceChanged(evt);
   55.94 +            }
   55.95 +        });
   55.96 +
   55.97 +        buttonGroup1.add(systemDefaultButton);
   55.98 +        systemDefaultButton.setText(org.openide.util.NbBundle.getMessage(LineEndingsPanel.class, "LineEndingsPanel.systemDefaultButton.text_1")); // NOI18N
   55.99 +        systemDefaultButton.addActionListener(new java.awt.event.ActionListener() {
  55.100 +            public void actionPerformed(java.awt.event.ActionEvent evt) {
  55.101 +                lineEndingPreferenceChanged(evt);
  55.102 +            }
  55.103 +        });
  55.104 +
  55.105 +        buttonGroup1.add(newlineButton);
  55.106 +        newlineButton.setText(org.openide.util.NbBundle.getMessage(LineEndingsPanel.class, "LineEndingsPanel.newlineButton.text_1")); // NOI18N
  55.107 +        newlineButton.addActionListener(new java.awt.event.ActionListener() {
  55.108 +            public void actionPerformed(java.awt.event.ActionEvent evt) {
  55.109 +                lineEndingPreferenceChanged(evt);
  55.110 +            }
  55.111 +        });
  55.112 +
  55.113 +        buttonGroup1.add(forceCrlf);
  55.114 +        forceCrlf.setText(org.openide.util.NbBundle.getMessage(LineEndingsPanel.class, "LineEndingsPanel.forceCrlf.text_1")); // NOI18N
  55.115 +        forceCrlf.addActionListener(new java.awt.event.ActionListener() {
  55.116 +            public void actionPerformed(java.awt.event.ActionEvent evt) {
  55.117 +                lineEndingPreferenceChanged(evt);
  55.118 +            }
  55.119 +        });
  55.120 +
  55.121 +        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
  55.122 +        this.setLayout(layout);
  55.123 +        layout.setHorizontalGroup(
  55.124 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  55.125 +            .addGroup(layout.createSequentialGroup()
  55.126 +                .addContainerGap()
  55.127 +                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  55.128 +                    .addComponent(noChangeButton)
  55.129 +                    .addComponent(systemDefaultButton)
  55.130 +                    .addComponent(newlineButton)
  55.131 +                    .addComponent(forceCrlf))
  55.132 +                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  55.133 +        );
  55.134 +        layout.setVerticalGroup(
  55.135 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  55.136 +            .addGroup(layout.createSequentialGroup()
  55.137 +                .addComponent(noChangeButton)
  55.138 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  55.139 +                .addComponent(systemDefaultButton)
  55.140 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  55.141 +                .addComponent(newlineButton)
  55.142 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  55.143 +                .addComponent(forceCrlf)
  55.144 +                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  55.145 +        );
  55.146 +
  55.147 +        getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(LineEndingsPanel.class, "LineEndingsPanel.border.title")); // NOI18N
  55.148 +    }// </editor-fold>//GEN-END:initComponents
  55.149 +
  55.150 +    private void lineEndingPreferenceChanged(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lineEndingPreferenceChanged
  55.151 +        for (JRadioButton b : new JRadioButton[] { forceCrlf, newlineButton, noChangeButton, systemDefaultButton }) {
  55.152 +            if (b.isSelected()) {
  55.153 +                LineEndingPreference x = (LineEndingPreference) b.getClientProperty(WizardProperties.PROP_ENDING);
  55.154 +                if (x != null) {
  55.155 +                    NbPreferences.forModule(LineEndingsPanel.class).put(WizardProperties.PROP_ENDING, x.name());
  55.156 +                }
  55.157 +                break;
  55.158 +            }
  55.159 +        }
  55.160 +    }//GEN-LAST:event_lineEndingPreferenceChanged
  55.161 +
  55.162 +    public static LineEndingPreference getLineEndingPrefs() {
  55.163 +        String ending = NbPreferences.forModule(LineEndingsPanel.class).get(WizardProperties.PROP_ENDING, LineEndingPreference.NO_CHANGE.name());
  55.164 +        return LineEndingPreference.valueOf(ending);
  55.165 +    }
  55.166 +
  55.167 +
  55.168 +    // Variables declaration - do not modify//GEN-BEGIN:variables
  55.169 +    private javax.swing.ButtonGroup buttonGroup1;
  55.170 +    private javax.swing.JRadioButton forceCrlf;
  55.171 +    private javax.swing.JRadioButton newlineButton;
  55.172 +    private javax.swing.JRadioButton noChangeButton;
  55.173 +    private javax.swing.JRadioButton systemDefaultButton;
  55.174 +    // End of variables declaration//GEN-END:variables
  55.175 +
  55.176 +}
    56.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/PreviewPanel.form	Fri Sep 14 00:27:52 2012 -0400
    56.3 @@ -0,0 +1,101 @@
    56.4 +<?xml version="1.0" encoding="UTF-8" ?>
    56.5 +
    56.6 +<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    56.7 +  <AuxValues>
    56.8 +    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
    56.9 +    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   56.10 +    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   56.11 +    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   56.12 +    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   56.13 +    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
   56.14 +    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   56.15 +    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   56.16 +    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   56.17 +  </AuxValues>
   56.18 +
   56.19 +  <Layout>
   56.20 +    <DimensionLayout dim="0">
   56.21 +      <Group type="103" groupAlignment="0" attributes="0">
   56.22 +          <Group type="102" alignment="1" attributes="0">
   56.23 +              <EmptySpace max="-2" attributes="0"/>
   56.24 +              <Group type="103" groupAlignment="1" attributes="0">
   56.25 +                  <Component id="jSplitPane1" alignment="0" max="32767" attributes="0"/>
   56.26 +                  <Component id="jLabel3" alignment="0" max="32767" attributes="0"/>
   56.27 +              </Group>
   56.28 +              <EmptySpace max="-2" attributes="0"/>
   56.29 +          </Group>
   56.30 +      </Group>
   56.31 +    </DimensionLayout>
   56.32 +    <DimensionLayout dim="1">
   56.33 +      <Group type="103" groupAlignment="0" attributes="0">
   56.34 +          <Group type="102" alignment="1" attributes="0">
   56.35 +              <EmptySpace max="-2" attributes="0"/>
   56.36 +              <Component id="jSplitPane1" pref="408" max="32767" attributes="0"/>
   56.37 +              <EmptySpace max="-2" attributes="0"/>
   56.38 +              <Component id="jLabel3" min="-2" max="-2" attributes="0"/>
   56.39 +          </Group>
   56.40 +      </Group>
   56.41 +    </DimensionLayout>
   56.42 +  </Layout>
   56.43 +  <SubComponents>
   56.44 +    <Container class="javax.swing.JSplitPane" name="jSplitPane1">
   56.45 +      <Properties>
   56.46 +        <Property name="dividerLocation" type="int" value="200"/>
   56.47 +        <Property name="orientation" type="int" value="0"/>
   56.48 +        <Property name="resizeWeight" type="double" value="0.5"/>
   56.49 +      </Properties>
   56.50 +
   56.51 +      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
   56.52 +      <SubComponents>
   56.53 +        <Container class="javax.swing.JScrollPane" name="fileList">
   56.54 +          <Properties>
   56.55 +            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   56.56 +              <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
   56.57 +                <TitledBorder title="Select File for Preview">
   56.58 +                  <ResourceString PropertyName="titleX" bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="PreviewPanel.fileList.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   56.59 +                </TitledBorder>
   56.60 +              </Border>
   56.61 +            </Property>
   56.62 +          </Properties>
   56.63 +          <AuxValues>
   56.64 +            <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new CheckboxListView()"/>
   56.65 +          </AuxValues>
   56.66 +          <Constraints>
   56.67 +            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
   56.68 +              <JSplitPaneConstraints position="top"/>
   56.69 +            </Constraint>
   56.70 +          </Constraints>
   56.71 +
   56.72 +          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
   56.73 +        </Container>
   56.74 +        <Container class="javax.swing.JPanel" name="diffPanel">
   56.75 +          <Constraints>
   56.76 +            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
   56.77 +              <JSplitPaneConstraints position="right"/>
   56.78 +            </Constraint>
   56.79 +          </Constraints>
   56.80 +
   56.81 +          <Layout>
   56.82 +            <DimensionLayout dim="0">
   56.83 +              <Group type="103" groupAlignment="0" attributes="0">
   56.84 +                  <EmptySpace min="0" pref="417" max="32767" attributes="0"/>
   56.85 +              </Group>
   56.86 +            </DimensionLayout>
   56.87 +            <DimensionLayout dim="1">
   56.88 +              <Group type="103" groupAlignment="0" attributes="0">
   56.89 +                  <EmptySpace min="0" pref="202" max="32767" attributes="0"/>
   56.90 +              </Group>
   56.91 +            </DimensionLayout>
   56.92 +          </Layout>
   56.93 +        </Container>
   56.94 +      </SubComponents>
   56.95 +    </Container>
   56.96 +    <Component class="javax.swing.JLabel" name="jLabel3">
   56.97 +      <Properties>
   56.98 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   56.99 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="PreviewPanel.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
  56.100 +        </Property>
  56.101 +      </Properties>
  56.102 +    </Component>
  56.103 +  </SubComponents>
  56.104 +</Form>
    57.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    57.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/PreviewPanel.java	Fri Sep 14 00:27:52 2012 -0400
    57.3 @@ -0,0 +1,353 @@
    57.4 +/*
    57.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    57.6 + *
    57.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    57.8 + *
    57.9 + * The contents of this file are subject to the terms of either the GNU
   57.10 + * General Public License Version 2 only ("GPL") or the Common
   57.11 + * Development and Distribution License("CDDL") (collectively, the
   57.12 + * "License"). You may not use this file except in compliance with the
   57.13 + * License. You can obtain a copy of the License at
   57.14 + * http://www.netbeans.org/cddl-gplv2.html
   57.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   57.16 + * specific language governing permissions and limitations under the
   57.17 + * License.  When distributing the software, include this License Header
   57.18 + * Notice in each file and include the License file at
   57.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   57.20 + * particular file as subject to the "Classpath" exception as provided
   57.21 + * by Sun in the GPL Version 2 section of the License file that
   57.22 + * accompanied this code. If applicable, add the following below the
   57.23 + * License Header, with the fields enclosed by brackets [] replaced by
   57.24 + * your own identifying information:
   57.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   57.26 + *
   57.27 + * If you wish your version of this file to be governed by only the CDDL
   57.28 + * or only the GPL Version 2, indicate your decision by adding
   57.29 + * "[Contributor] elects to include this software in this distribution
   57.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   57.31 + * single choice of license, a recipient has the option to distribute
   57.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   57.33 + * to extend the choice of license to its licensees as provided above.
   57.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   57.35 + * Version 2 license, then the option applies only if the new code is
   57.36 + * made subject to such option by the copyright holder.
   57.37 + *
   57.38 + * Contributor(s):
   57.39 + *
   57.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   57.41 + */
   57.42 +
   57.43 +package org.netbeans.modules.licensechanger.spi.wizard;
   57.44 +
   57.45 +import java.awt.EventQueue;
   57.46 +import java.beans.PropertyChangeEvent;
   57.47 +import java.beans.PropertyChangeListener;
   57.48 +import java.io.ByteArrayOutputStream;
   57.49 +import java.io.IOException;
   57.50 +import java.io.PrintWriter;
   57.51 +import java.io.StringReader;
   57.52 +import java.util.HashMap;
   57.53 +import java.util.HashSet;
   57.54 +import java.util.Map;
   57.55 +import java.util.Set;
   57.56 +import org.netbeans.api.diff.Diff;
   57.57 +import org.netbeans.api.diff.DiffView;
   57.58 +import org.netbeans.api.diff.StreamSource;
   57.59 +import org.netbeans.modules.licensechanger.api.FileHandler;
   57.60 +import org.netbeans.modules.licensechanger.spi.wizard.utils.CheckboxListView;
   57.61 +import org.netbeans.modules.licensechanger.spi.wizard.utils.FileChildren;
   57.62 +import org.netbeans.modules.licensechanger.spi.wizard.utils.FileChildren.FileItem;
   57.63 +import org.netbeans.modules.licensechanger.spi.wizard.utils.FileLoader;
   57.64 +import org.netbeans.modules.licensechanger.spi.wizard.utils.NodeCheckObserver;
   57.65 +import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   57.66 +import org.openide.explorer.ExplorerManager;
   57.67 +import org.openide.explorer.view.CheckableNode;
   57.68 +import org.openide.filesystems.FileObject;
   57.69 +import org.openide.nodes.AbstractNode;
   57.70 +import org.openide.nodes.Children;
   57.71 +import org.openide.nodes.Node;
   57.72 +import org.openide.util.Exceptions;
   57.73 +import org.openide.util.RequestProcessor;
   57.74 +import org.openide.util.RequestProcessor.Task;
   57.75 +
   57.76 +/**
   57.77 + *
   57.78 + * @author Tim Boudreau
   57.79 + * @author Nils Hoffmann (Refactoring, Diff API inclusion)
   57.80 + */
   57.81 +public class PreviewPanel extends javax.swing.JPanel implements ExplorerManager.Provider, PropertyChangeListener, NodeCheckObserver {
   57.82 +
   57.83 +    private final ExplorerManager mgr = new ExplorerManager();
   57.84 +    private ItemLoader loader;
   57.85 +    private String licenseText;
   57.86 +    private Diff diff;
   57.87 +
   57.88 +    public PreviewPanel() {
   57.89 +        diff = Diff.getDefault();
   57.90 +        initComponents();
   57.91 +        mgr.addPropertyChangeListener(this);
   57.92 +        jLabel3.setText ("  ");
   57.93 +        view().setNodeCheckObserver(this);
   57.94 +        setName("Preview Changes");
   57.95 +    }
   57.96 +    
   57.97 +    public void setFolders(Set<FileObject> folders, Set<FileHandler> fileHandler) {
   57.98 +        Children kids = Children.create(new FileChildren(folders,fileHandler), true);
   57.99 +        mgr.setRootContext(new AbstractNode(kids));
  57.100 +        view().setCheckboxesVisible(true);
  57.101 +        view().setCheckboxesEnabled(true);
  57.102 +        view().setListEnabled(true);
  57.103 +        updateItems();
  57.104 +    }
  57.105 +
  57.106 +    public Set<FileItem> getSelectedItems() {
  57.107 +        Set<FileItem> s = new HashSet<FileItem>();
  57.108 +        for (Node n : mgr.getRootContext().getChildren().getNodes(true)) {
  57.109 +            CheckableNode cn = n.getLookup().lookup(CheckableNode.class);
  57.110 +            if (cn!= null && cn.isSelected()) {
  57.111 +                s.addAll(n.getLookup().lookupAll(FileItem.class));
  57.112 +            }
  57.113 +        }
  57.114 +        return s;
  57.115 +    }
  57.116 +    
  57.117 +    private void updateItems() {
  57.118 +        Set<FileItem> s = getSelectedItems();
  57.119 +        firePropertyChange(WizardProperties.KEY_ITEMS, null, s);
  57.120 +    }
  57.121 +
  57.122 +    private CheckboxListView view() {
  57.123 +        return (CheckboxListView) fileList;
  57.124 +    }
  57.125 +
  57.126 +    public void setLicenseText(String licenseText) {
  57.127 +        this.licenseText = licenseText;
  57.128 +        firePropertyChange(WizardProperties.KEY_LICENSE_TEXT, null, this.licenseText);
  57.129 +    }
  57.130 +
  57.131 +    /** This method is called from within the constructor to
  57.132 +     * initialize the form.
  57.133 +     * WARNING: Do NOT modify this code. The content of this method is
  57.134 +     * always regenerated by the Form Editor.
  57.135 +     */
  57.136 +    @SuppressWarnings("unchecked")
  57.137 +    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  57.138 +    private void initComponents() {
  57.139 +
  57.140 +        jSplitPane1 = new javax.swing.JSplitPane();
  57.141 +        fileList = new CheckboxListView();
  57.142 +        diffPanel = new javax.swing.JPanel();
  57.143 +        jLabel3 = new javax.swing.JLabel();
  57.144 +
  57.145 +        jSplitPane1.setDividerLocation(200);
  57.146 +        jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
  57.147 +        jSplitPane1.setResizeWeight(0.5);
  57.148 +
  57.149 +        fileList.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(PreviewPanel.class, "PreviewPanel.fileList.border.title"))); // NOI18N
  57.150 +        jSplitPane1.setTopComponent(fileList);
  57.151 +
  57.152 +        javax.swing.GroupLayout diffPanelLayout = new javax.swing.GroupLayout(diffPanel);
  57.153 +        diffPanel.setLayout(diffPanelLayout);
  57.154 +        diffPanelLayout.setHorizontalGroup(
  57.155 +            diffPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  57.156 +            .addGap(0, 417, Short.MAX_VALUE)
  57.157 +        );
  57.158 +        diffPanelLayout.setVerticalGroup(
  57.159 +            diffPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  57.160 +            .addGap(0, 202, Short.MAX_VALUE)
  57.161 +        );
  57.162 +
  57.163 +        jSplitPane1.setRightComponent(diffPanel);
  57.164 +
  57.165 +        jLabel3.setText(org.openide.util.NbBundle.getMessage(PreviewPanel.class, "PreviewPanel.jLabel3.text")); // NOI18N
  57.166 +
  57.167 +        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
  57.168 +        this.setLayout(layout);
  57.169 +        layout.setHorizontalGroup(
  57.170 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  57.171 +            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  57.172 +                .addContainerGap()
  57.173 +                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  57.174 +                    .addComponent(jSplitPane1, javax.swing.GroupLayout.Alignment.LEADING)
  57.175 +                    .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  57.176 +                .addContainerGap())
  57.177 +        );
  57.178 +        layout.setVerticalGroup(
  57.179 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  57.180 +            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  57.181 +                .addContainerGap()
  57.182 +                .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)
  57.183 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  57.184 +                .addComponent(jLabel3))
  57.185 +        );
  57.186 +    }// </editor-fold>//GEN-END:initComponents
  57.187 +    // Variables declaration - do not modify//GEN-BEGIN:variables
  57.188 +    private javax.swing.JPanel diffPanel;
  57.189 +    private javax.swing.JScrollPane fileList;
  57.190 +    private javax.swing.JLabel jLabel3;
  57.191 +    private javax.swing.JSplitPane jSplitPane1;
  57.192 +    // End of variables declaration//GEN-END:variables
  57.193 +
  57.194 +    @Override
  57.195 +    public ExplorerManager getExplorerManager() {
  57.196 +        return mgr;
  57.197 +    }
  57.198 +
  57.199 +    @Override
  57.200 +    public void propertyChange(PropertyChangeEvent evt) {
  57.201 +        if (ExplorerManager.PROP_SELECTED_NODES.equals(evt.getPropertyName())) {
  57.202 +            Node[] n = mgr.getSelectedNodes();
  57.203 +            if (n.length > 0) {
  57.204 +                FileItem item = n[0].getLookup().lookup(FileItem.class);
  57.205 +                if (item != null) {
  57.206 +                    setFileItem(item);
  57.207 +                    // XXX use FileUtil.getFileDisplayName rather than FileObject.getPath
  57.208 +                    jLabel3.setText (item.getFile().getPath());
  57.209 +                } else {
  57.210 +//                    before.setText("");
  57.211 +                    jLabel3.setText ("  ");
  57.212 +                }
  57.213 +            } else {
  57.214 +//                before.setText("");
  57.215 +//                after.setText("");
  57.216 +                jLabel3.setText("  ");
  57.217 +            }
  57.218 +        }
  57.219 +    }
  57.220 +
  57.221 +    private void setFileItem(FileItem item) {
  57.222 +        if (item.getFile().isValid()) {
  57.223 +            // XXX should use Diff API instead (like refactoring preview)
  57.224 +//            before.setContentType("text/plain");
  57.225 +//            after.setContentType("text/plain");
  57.226 +//            before.setText("Loading " + item.getFile().getPath());
  57.227 +//            after.setText("Loading " + item.getFile().getPath());
  57.228 +            ItemLoader ldr = new ItemLoader(item);
  57.229 +            setLoader(ldr);
  57.230 +        }
  57.231 +    }
  57.232 +
  57.233 +    private synchronized void setLoader(ItemLoader ldr) {
  57.234 +        if (loader != null) {
  57.235 +            loader.cancel();
  57.236 +        }
  57.237 +        this.loader = ldr;
  57.238 +        loader.start();
  57.239 +    }
  57.240 +
  57.241 +    @Override
  57.242 +    public void onNodeChecked(Node node) {
  57.243 +        updateItems();
  57.244 +    }
  57.245 +
  57.246 +    @Override
  57.247 +    public void onNodeUnchecked(Node node) {
  57.248 +        updateItems();
  57.249 +    }
  57.250 +
  57.251 +    private class ItemLoader implements Runnable {
  57.252 +
  57.253 +        private final Task task;
  57.254 +        private volatile boolean cancelled;
  57.255 +        private final FileItem item;
  57.256 +        private volatile String beforeText = "Cancelled";
  57.257 +        private volatile String afterText = "Cancelled";
  57.258 +
  57.259 +        public ItemLoader(FileItem item) {
  57.260 +            this.item = item;
  57.261 +            task = RequestProcessor.getDefault().create(this);
  57.262 +        }
  57.263 +
  57.264 +        void start() {
  57.265 +            task.schedule(200);
  57.266 +        }
  57.267 +
  57.268 +        public void cancel() {
  57.269 +            cancelled = true;
  57.270 +            task.cancel();
  57.271 +        }
  57.272 +
  57.273 +        private void loadFile() throws IOException {
  57.274 +            beforeText = FileLoader.loadFile(item.getFile());
  57.275 +        }
  57.276 +
  57.277 +        @Override
  57.278 +        public void run() {
  57.279 +            if (cancelled) {
  57.280 +                return;
  57.281 +            }
  57.282 +            if (!EventQueue.isDispatchThread()) {
  57.283 +                try {
  57.284 +                    if (cancelled) {
  57.285 +                        return;
  57.286 +                    }
  57.287 +                    if (!item.getFile().isValid()) {
  57.288 +                        beforeText = "Invalid file";
  57.289 +                        afterText = "Invalid file";
  57.290 +                        return;
  57.291 +                    }
  57.292 +                    if (!item.getFile().canRead()) {
  57.293 +                        beforeText = "Cannot read " + item.getFile().getPath();
  57.294 +                        afterText = "Cannot read " + item.getFile().getPath();
  57.295 +                        return;
  57.296 +                    }
  57.297 +                    if (item.getFile().getSize() >= Integer.MAX_VALUE) {
  57.298 +                        beforeText = "File too long: " + item.getFile().getPath();
  57.299 +                        afterText = "File too long: " + item.getFile().getPath();
  57.300 +                        return;
  57.301 +                    }
  57.302 +                    if (item.getFile().getSize() == 0) {
  57.303 +                        beforeText = "Empty file";
  57.304 +                        afterText = "Empty file";
  57.305 +                        return;
  57.306 +                    }
  57.307 +                    if (cancelled) {
  57.308 +                        return;
  57.309 +                    }
  57.310 +                    try {
  57.311 +                        loadFile();
  57.312 +                    } catch (IOException ex) {
  57.313 +                        ByteArrayOutputStream out = new ByteArrayOutputStream();
  57.314 +                        PrintWriter w = new PrintWriter(out);
  57.315 +                        ex.printStackTrace(w);
  57.316 +                        beforeText = new String(out.toByteArray());
  57.317 +                        afterText = "Error";
  57.318 +                        return;
  57.319 +                    }
  57.320 +                    if (cancelled) {
  57.321 +                        return;
  57.322 +                    }
  57.323 +                    if (beforeText.length() == 0) {
  57.324 +                        afterText = "";
  57.325 +                        return;
  57.326 +                    }
  57.327 +                    afterText = transform(beforeText, item.getHandler());
  57.328 +                } finally {
  57.329 +                    if (!cancelled) {
  57.330 +                        EventQueue.invokeLater(this);
  57.331 +                    }
  57.332 +                }
  57.333 +            } else {
  57.334 +                String contentType = item.getFile().getMIMEType();
  57.335 +                DiffView view;
  57.336 +                try {
  57.337 +                    view = diff.createDiff(StreamSource.createSource("Before", "Before", contentType, new StringReader(beforeText)),
  57.338 +                           StreamSource.createSource("After", "After", contentType, new StringReader(afterText)));
  57.339 +                    int dloc = jSplitPane1.getDividerLocation();
  57.340 +                    jSplitPane1.setBottomComponent(view.getComponent());
  57.341 +                    jSplitPane1.setDividerLocation(dloc);
  57.342 +                } catch (IOException ex) {
  57.343 +                    Exceptions.printStackTrace(ex);
  57.344 +                    int dloc = jSplitPane1.getDividerLocation();
  57.345 +                    jSplitPane1.setBottomComponent(diffPanel);
  57.346 +                    jSplitPane1.setDividerLocation(dloc);
  57.347 +                }
  57.348 +                
  57.349 +            }
  57.350 +        }
  57.351 +
  57.352 +        private String transform(String beforeText, FileHandler handler) {
  57.353 +            return handler.transform(beforeText, licenseText);
  57.354 +        }
  57.355 +    }
  57.356 +}
    58.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    58.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/PreviewWizardPanel.java	Fri Sep 14 00:27:52 2012 -0400
    58.3 @@ -0,0 +1,153 @@
    58.4 +/*
    58.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    58.6 + *
    58.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    58.8 + *
    58.9 + * The contents of this file are subject to the terms of either the GNU
   58.10 + * General Public License Version 2 only ("GPL") or the Common
   58.11 + * Development and Distribution License("CDDL") (collectively, the
   58.12 + * "License"). You may not use this file except in compliance with the
   58.13 + * License. You can obtain a copy of the License at
   58.14 + * http://www.netbeans.org/cddl-gplv2.html
   58.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   58.16 + * specific language governing permissions and limitations under the
   58.17 + * License.  When distributing the software, include this License Header
   58.18 + * Notice in each file and include the License file at
   58.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   58.20 + * particular file as subject to the "Classpath" exception as provided
   58.21 + * by Sun in the GPL Version 2 section of the License file that
   58.22 + * accompanied this code. If applicable, add the following below the
   58.23 + * License Header, with the fields enclosed by brackets [] replaced by
   58.24 + * your own identifying information:
   58.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   58.26 + *
   58.27 + * If you wish your version of this file to be governed by only the CDDL
   58.28 + * or only the GPL Version 2, indicate your decision by adding
   58.29 + * "[Contributor] elects to include this software in this distribution
   58.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   58.31 + * single choice of license, a recipient has the option to distribute
   58.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   58.33 + * to extend the choice of license to its licensees as provided above.
   58.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   58.35 + * Version 2 license, then the option applies only if the new code is
   58.36 + * made subject to such option by the copyright holder.
   58.37 + *
   58.38 + * Contributor(s):
   58.39 + *
   58.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   58.41 + */
   58.42 +
   58.43 +package org.netbeans.modules.licensechanger.spi.wizard;
   58.44 +
   58.45 +import java.beans.PropertyChangeEvent;
   58.46 +import java.beans.PropertyChangeListener;
   58.47 +import java.util.Set;
   58.48 +import javax.swing.event.ChangeListener;
   58.49 +import org.netbeans.modules.licensechanger.api.FileHandler;
   58.50 +import org.netbeans.modules.licensechanger.spi.wizard.utils.FileChildren.FileItem;
   58.51 +import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   58.52 +import org.openide.WizardDescriptor;
   58.53 +import org.openide.WizardValidationException;
   58.54 +import org.openide.filesystems.FileObject;
   58.55 +import org.openide.util.ChangeSupport;
   58.56 +import org.openide.util.HelpCtx;
   58.57 +
   58.58 +/**
   58.59 + * 
   58.60 + * @author Nils Hoffmann
   58.61 + */
   58.62 +public class PreviewWizardPanel implements WizardDescriptor.ValidatingPanel<WizardDescriptor>, PropertyChangeListener{
   58.63 +
   58.64 +    /**
   58.65 +     * The visual component that displays this panel. If you need to access the
   58.66 +     * component from this class, just use getComponent().
   58.67 +     */
   58.68 +    private PreviewPanel component;
   58.69 +    private WizardDescriptor wiz;
   58.70 +    private boolean valid = true;
   58.71 +    private ChangeSupport cs = new ChangeSupport(this);
   58.72 +
   58.73 +    // Get the visual component for the panel. In this template, the component
   58.74 +    // is kept separate. This can be more efficient: if the wizard is created
   58.75 +    // but never displayed, or not all panels are displayed, it is better to
   58.76 +    // create only those which really need to be visible.
   58.77 +    @Override
   58.78 +    public PreviewPanel getComponent() {
   58.79 +        if (component == null) {
   58.80 +            component = new PreviewPanel();
   58.81 +            component.addPropertyChangeListener(this);
   58.82 +        }
   58.83 +        return component;
   58.84 +    }
   58.85 +
   58.86 +    @Override
   58.87 +    public HelpCtx getHelp() {
   58.88 +        // Show no Help button for this panel:
   58.89 +        return HelpCtx.DEFAULT_HELP;
   58.90 +        // If you have context help:
   58.91 +        // return new HelpCtx("help.key.here");
   58.92 +    }
   58.93 +
   58.94 +    @Override
   58.95 +    public boolean isValid() {
   58.96 +        return valid;
   58.97 +    }
   58.98 +    
   58.99 +    @Override
  58.100 +    public void addChangeListener(ChangeListener l) {
  58.101 +        cs.addChangeListener(l);
  58.102 +    }
  58.103 +    
  58.104 +    @Override
  58.105 +    public void removeChangeListener(ChangeListener l) {
  58.106 +        cs.removeChangeListener(l);
  58.107 +    }
  58.108 +    
  58.109 +    @Override
  58.110 +    public void propertyChange(PropertyChangeEvent pce) {
  58.111 +        cs.fireChange();
  58.112 +        try {
  58.113 +            validate();
  58.114 +        } catch (WizardValidationException ex) {
  58.115 +            if(wiz!=null) {
  58.116 +                wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, ex.getMessage());
  58.117 +            }
  58.118 +        }
  58.119 +    }
  58.120 +
  58.121 +    @Override
  58.122 +    public void readSettings(WizardDescriptor wiz) {
  58.123 +        this.wiz = wiz;
  58.124 +        String license = (String)wiz.getProperty(WizardProperties.KEY_LICENSE_TEXT);
  58.125 +        if(license!=null) {
  58.126 +            getComponent().setLicenseText(license);
  58.127 +        }
  58.128 +        Set<FileHandler> fileHandler = (Set<FileHandler>)wiz.getProperty(WizardProperties.KEY_FILE_HANDLERS);
  58.129 +        Set<FileObject> folders = (Set<FileObject>)wiz.getProperty(WizardProperties.KEY_FOLDERS);
  58.130 +        if(fileHandler!=null && folders != null) {
  58.131 +            getComponent().setFolders(folders, fileHandler);
  58.132 +        }
  58.133 +        wiz.putProperty(WizardProperties.KEY_ITEMS, null);
  58.134 +    }
  58.135 +
  58.136 +    @Override
  58.137 +    public void storeSettings(WizardDescriptor wiz) {
  58.138 +        wiz.putProperty(WizardProperties.KEY_ITEMS, getComponent().getSelectedItems());
  58.139 +    }
  58.140 +
  58.141 +    @Override
  58.142 +    public void validate() throws WizardValidationException {
  58.143 +        valid = true;
  58.144 +        Set<FileItem> keyItems = (Set<FileItem>)getComponent().getSelectedItems();
  58.145 +        
  58.146 +        if(keyItems==null || keyItems.isEmpty()) {
  58.147 +            valid = false;
  58.148 +            throw new WizardValidationException(component, "Please select at least one file!", null);
  58.149 +        }
  58.150 +        if(wiz!=null) {
  58.151 +            wiz.putProperty(WizardDescriptor.PROP_INFO_MESSAGE, null);
  58.152 +            wiz.putProperty(WizardDescriptor.PROP_WARNING_MESSAGE, null);
  58.153 +            wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, null);
  58.154 +        }
  58.155 +    }
  58.156 +}
    59.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    59.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/SelectFoldersPanel.form	Fri Sep 14 00:27:52 2012 -0400
    59.3 @@ -0,0 +1,66 @@
    59.4 +<?xml version="1.0" encoding="UTF-8" ?>
    59.5 +
    59.6 +<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
    59.7 +  <AuxValues>
    59.8 +    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
    59.9 +    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
   59.10 +    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
   59.11 +    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
   59.12 +    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
   59.13 +    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
   59.14 +    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
   59.15 +    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
   59.16 +    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
   59.17 +  </AuxValues>
   59.18 +
   59.19 +  <Layout>
   59.20 +    <DimensionLayout dim="0">
   59.21 +      <Group type="103" groupAlignment="0" attributes="0">
   59.22 +          <Group type="102" alignment="0" attributes="0">
   59.23 +              <EmptySpace max="-2" attributes="0"/>
   59.24 +              <Group type="103" groupAlignment="0" attributes="0">
   59.25 +                  <Component id="jScrollPane1" alignment="0" pref="541" max="32767" attributes="0"/>
   59.26 +                  <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
   59.27 +              </Group>
   59.28 +              <EmptySpace max="-2" attributes="0"/>
   59.29 +          </Group>
   59.30 +      </Group>
   59.31 +    </DimensionLayout>
   59.32 +    <DimensionLayout dim="1">
   59.33 +      <Group type="103" groupAlignment="0" attributes="0">
   59.34 +          <Group type="102" alignment="0" attributes="0">
   59.35 +              <EmptySpace max="-2" attributes="0"/>
   59.36 +              <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
   59.37 +              <EmptySpace min="-2" pref="9" max="-2" attributes="0"/>
   59.38 +              <Component id="jScrollPane1" pref="364" max="32767" attributes="0"/>
   59.39 +              <EmptySpace max="-2" attributes="0"/>
   59.40 +          </Group>
   59.41 +      </Group>
   59.42 +    </DimensionLayout>
   59.43 +  </Layout>
   59.44 +  <SubComponents>
   59.45 +    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
   59.46 +      <Properties>
   59.47 +        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
   59.48 +          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
   59.49 +            <LineBorder>
   59.50 +              <Color PropertyName="color" blue="99" green="a8" id="controlShadow" palette="3" red="ac" type="palette"/>
   59.51 +            </LineBorder>
   59.52 +          </Border>
   59.53 +        </Property>
   59.54 +      </Properties>
   59.55 +      <AuxValues>
   59.56 +        <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new CheckboxListView()"/>
   59.57 +      </AuxValues>
   59.58 +
   59.59 +      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
   59.60 +    </Container>
   59.61 +    <Component class="javax.swing.JLabel" name="jLabel1">
   59.62 +      <Properties>
   59.63 +        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
   59.64 +          <ResourceString bundle="org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties" key="SelectFoldersPanel.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
   59.65 +        </Property>
   59.66 +      </Properties>
   59.67 +    </Component>
   59.68 +  </SubComponents>
   59.69 +</Form>
    60.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    60.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/SelectFoldersPanel.java	Fri Sep 14 00:27:52 2012 -0400
    60.3 @@ -0,0 +1,169 @@
    60.4 +/*
    60.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    60.6 + *
    60.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    60.8 + *
    60.9 + * The contents of this file are subject to the terms of either the GNU
   60.10 + * General Public License Version 2 only ("GPL") or the Common
   60.11 + * Development and Distribution License("CDDL") (collectively, the
   60.12 + * "License"). You may not use this file except in compliance with the
   60.13 + * License. You can obtain a copy of the License at
   60.14 + * http://www.netbeans.org/cddl-gplv2.html
   60.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   60.16 + * specific language governing permissions and limitations under the
   60.17 + * License.  When distributing the software, include this License Header
   60.18 + * Notice in each file and include the License file at
   60.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   60.20 + * particular file as subject to the "Classpath" exception as provided
   60.21 + * by Sun in the GPL Version 2 section of the License file that
   60.22 + * accompanied this code. If applicable, add the following below the
   60.23 + * License Header, with the fields enclosed by brackets [] replaced by
   60.24 + * your own identifying information:
   60.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   60.26 + *
   60.27 + * If you wish your version of this file to be governed by only the CDDL
   60.28 + * or only the GPL Version 2, indicate your decision by adding
   60.29 + * "[Contributor] elects to include this software in this distribution
   60.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   60.31 + * single choice of license, a recipient has the option to distribute
   60.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   60.33 + * to extend the choice of license to its licensees as provided above.
   60.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   60.35 + * Version 2 license, then the option applies only if the new code is
   60.36 + * made subject to such option by the copyright holder.
   60.37 + *
   60.38 + * Contributor(s):
   60.39 + *
   60.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   60.41 + */
   60.42 +
   60.43 +package org.netbeans.modules.licensechanger.spi.wizard;
   60.44 +
   60.45 +import java.util.HashSet;
   60.46 +import java.util.Set;
   60.47 +import org.netbeans.modules.licensechanger.spi.wizard.utils.CheckboxListView;
   60.48 +import org.netbeans.modules.licensechanger.spi.wizard.utils.FolderChildren;
   60.49 +import org.netbeans.modules.licensechanger.spi.wizard.utils.NodeCheckObserver;
   60.50 +import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   60.51 +import org.openide.explorer.ExplorerManager;
   60.52 +import org.openide.explorer.view.CheckableNode;
   60.53 +import org.openide.filesystems.FileObject;
   60.54 +import org.openide.nodes.AbstractNode;
   60.55 +import org.openide.nodes.Children;
   60.56 +import org.openide.nodes.Node;
   60.57 +
   60.58 +/**
   60.59 + *
   60.60 + * @author Tim Boudreau
   60.61 + * @author Nils Hoffmann (Refactoring)
   60.62 + */
   60.63 +public class SelectFoldersPanel extends javax.swing.JPanel implements ExplorerManager.Provider, NodeCheckObserver {
   60.64 +
   60.65 +    private final ExplorerManager mgr = new ExplorerManager();
   60.66 +
   60.67 +    public SelectFoldersPanel() {
   60.68 +        initComponents();
   60.69 +        view().setNodeCheckObserver(this);
   60.70 +        setName("Select Folders");
   60.71 +    }
   60.72 +
   60.73 +    private void updateFolders() {
   60.74 +        Set<FileObject> folders = getSelectedFolders();
   60.75 +        System.out.println("Selected folders: "+folders);
   60.76 +        firePropertyChange(WizardProperties.KEY_FOLDERS, null, folders);
   60.77 +    }
   60.78 +
   60.79 +    private void enableUI() {
   60.80 +        view().setCheckboxesVisible(true);
   60.81 +        view().setCheckboxesEnabled(true);
   60.82 +        jLabel1.setEnabled(true);
   60.83 +        view().setListEnabled(true);
   60.84 +    }
   60.85 +
   60.86 +    private CheckboxListView view() {
   60.87 +        return (CheckboxListView) jScrollPane1;
   60.88 +    }
   60.89 +
   60.90 +    /**
   60.91 +     * This method is called from within the constructor to initialize the form.
   60.92 +     * WARNING: Do NOT modify this code. The content of this method is always
   60.93 +     * regenerated by the Form Editor.
   60.94 +     */
   60.95 +    @SuppressWarnings("unchecked")
   60.96 +    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   60.97 +    private void initComponents() {
   60.98 +
   60.99 +        jScrollPane1 = new CheckboxListView();
  60.100 +        jLabel1 = new javax.swing.JLabel();
  60.101 +
  60.102 +        jScrollPane1.setBorder(javax.swing.BorderFactory.createLineBorder(javax.swing.UIManager.getDefaults().getColor("controlShadow")));
  60.103 +
  60.104 +        jLabel1.setText(org.openide.util.NbBundle.getMessage(SelectFoldersPanel.class, "SelectFoldersPanel.jLabel1.text")); // NOI18N
  60.105 +
  60.106 +        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
  60.107 +        this.setLayout(layout);
  60.108 +        layout.setHorizontalGroup(
  60.109 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  60.110 +            .addGroup(layout.createSequentialGroup()
  60.111 +                .addContainerGap()
  60.112 +                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  60.113 +                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 541, Short.MAX_VALUE)
  60.114 +                    .addComponent(jLabel1))
  60.115 +                .addContainerGap())
  60.116 +        );
  60.117 +        layout.setVerticalGroup(
  60.118 +            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  60.119 +            .addGroup(layout.createSequentialGroup()
  60.120 +                .addContainerGap()
  60.121 +                .addComponent(jLabel1)
  60.122 +                .addGap(9, 9, 9)
  60.123 +                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE)
  60.124 +                .addContainerGap())
  60.125 +        );
  60.126 +    }// </editor-fold>//GEN-END:initComponents
  60.127 +    // Variables declaration - do not modify//GEN-BEGIN:variables
  60.128 +    private javax.swing.JLabel jLabel1;
  60.129 +    private javax.swing.JScrollPane jScrollPane1;
  60.130 +    // End of variables declaration//GEN-END:variables
  60.131 +
  60.132 +    @Override
  60.133 +    public ExplorerManager getExplorerManager() {
  60.134 +        return mgr;
  60.135 +    }
  60.136 +
  60.137 +    @Override
  60.138 +    public void onNodeChecked(Node node) {
  60.139 +        updateFolders();
  60.140 +    }
  60.141 +
  60.142 +    @Override
  60.143 +    public void onNodeUnchecked(Node node) {
  60.144 +        updateFolders();
  60.145 +    }
  60.146 +
  60.147 +    public void setRootFiles(Set<FileObject> roots) {
  60.148 +        AbstractNode root = new AbstractNode(Children.create(new FolderChildren(roots.toArray(new FileObject[roots.size()])) {
  60.149 +            @Override
  60.150 +            public void onAllNodesCreated() {
  60.151 +                enableUI();
  60.152 +                updateFolders();
  60.153 +            }
  60.154 +        }, true));
  60.155 +        mgr.setRootContext(root);
  60.156 +        firePropertyChange("rootFiles", null, roots);
  60.157 +    }
  60.158 +    
  60.159 +    public Set<FileObject> getSelectedFolders() {
  60.160 +        Set<FileObject> folders = new HashSet<FileObject>();
  60.161 +        for (Node n : mgr.getRootContext().getChildren().getNodes(true)) {
  60.162 +            CheckableNode cn = n.getLookup().lookup(CheckableNode.class);
  60.163 +            if (cn != null && cn.isSelected()) {
  60.164 +                FileObject f = n.getLookup().lookup(FileObject.class);
  60.165 +                if (f != null) {
  60.166 +                    folders.add(f);
  60.167 +                }
  60.168 +            }
  60.169 +        }
  60.170 +        return folders;
  60.171 +    }
  60.172 +}
    61.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    61.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/SelectFoldersWizardPanel.java	Fri Sep 14 00:27:52 2012 -0400
    61.3 @@ -0,0 +1,150 @@
    61.4 +/*
    61.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    61.6 + *
    61.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    61.8 + *
    61.9 + * The contents of this file are subject to the terms of either the GNU
   61.10 + * General Public License Version 2 only ("GPL") or the Common
   61.11 + * Development and Distribution License("CDDL") (collectively, the
   61.12 + * "License"). You may not use this file except in compliance with the
   61.13 + * License. You can obtain a copy of the License at
   61.14 + * http://www.netbeans.org/cddl-gplv2.html
   61.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   61.16 + * specific language governing permissions and limitations under the
   61.17 + * License.  When distributing the software, include this License Header
   61.18 + * Notice in each file and include the License file at
   61.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   61.20 + * particular file as subject to the "Classpath" exception as provided
   61.21 + * by Sun in the GPL Version 2 section of the License file that
   61.22 + * accompanied this code. If applicable, add the following below the
   61.23 + * License Header, with the fields enclosed by brackets [] replaced by
   61.24 + * your own identifying information:
   61.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   61.26 + *
   61.27 + * If you wish your version of this file to be governed by only the CDDL
   61.28 + * or only the GPL Version 2, indicate your decision by adding
   61.29 + * "[Contributor] elects to include this software in this distribution
   61.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   61.31 + * single choice of license, a recipient has the option to distribute
   61.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   61.33 + * to extend the choice of license to its licensees as provided above.
   61.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   61.35 + * Version 2 license, then the option applies only if the new code is
   61.36 + * made subject to such option by the copyright holder.
   61.37 + *
   61.38 + * Contributor(s):
   61.39 + *
   61.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   61.41 + */
   61.42 +
   61.43 +package org.netbeans.modules.licensechanger.spi.wizard;
   61.44 +
   61.45 +import java.beans.PropertyChangeEvent;
   61.46 +import java.beans.PropertyChangeListener;
   61.47 +import java.util.Set;
   61.48 +import javax.swing.event.ChangeListener;
   61.49 +import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   61.50 +import org.openide.WizardDescriptor;
   61.51 +import org.openide.WizardValidationException;
   61.52 +import org.openide.filesystems.FileObject;
   61.53 +import org.openide.util.ChangeSupport;
   61.54 +import org.openide.util.HelpCtx;
   61.55 +
   61.56 +/**
   61.57 + * 
   61.58 + * @author Nils Hoffmann
   61.59 + */
   61.60 +public class SelectFoldersWizardPanel implements WizardDescriptor.ValidatingPanel<WizardDescriptor>, PropertyChangeListener {
   61.61 +
   61.62 +    /**
   61.63 +     * The visual component that displays this panel. If you need to access the
   61.64 +     * component from this class, just use getComponent().
   61.65 +     */
   61.66 +    private SelectFoldersPanel component;
   61.67 +    private WizardDescriptor wiz;
   61.68 +    private boolean valid = false;
   61.69 +    private ChangeSupport cs = new ChangeSupport(this);
   61.70 +
   61.71 +    // Get the visual component for the panel. In this template, the component
   61.72 +    // is kept separate. This can be more efficient: if the wizard is created
   61.73 +    // but never displayed, or not all panels are displayed, it is better to
   61.74 +    // create only those which really need to be visible.
   61.75 +    @Override
   61.76 +    public SelectFoldersPanel getComponent() {
   61.77 +        if (component == null) {
   61.78 +            component = new SelectFoldersPanel();
   61.79 +            component.addPropertyChangeListener(this);
   61.80 +        }
   61.81 +        return component;
   61.82 +    }
   61.83 +
   61.84 +    @Override
   61.85 +    public HelpCtx getHelp() {
   61.86 +        // Show no Help button for this panel:
   61.87 +        return HelpCtx.DEFAULT_HELP;
   61.88 +        // If you have context help:
   61.89 +        // return new HelpCtx("help.key.here");
   61.90 +    }
   61.91 +
   61.92 +    @Override
   61.93 +    public boolean isValid() {
   61.94 +        return valid;
   61.95 +    }
   61.96 +    
   61.97 +    @Override
   61.98 +    public void addChangeListener(ChangeListener l) {
   61.99 +        cs.addChangeListener(l);
  61.100 +    }
  61.101 +    
  61.102 +    @Override
  61.103 +    public void removeChangeListener(ChangeListener l) {
  61.104 +        cs.removeChangeListener(l);
  61.105 +    }
  61.106 +    
  61.107 +    @Override
  61.108 +    public void propertyChange(PropertyChangeEvent pce) {
  61.109 +        cs.fireChange();
  61.110 +        try{
  61.111 +            validate();
  61.112 +        }catch(WizardValidationException ex) {
  61.113 +            if(wiz!=null) {
  61.114 +                wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, ex.getMessage());
  61.115 +            }
  61.116 +        }
  61.117 +    }
  61.118 +
  61.119 +    @Override
  61.120 +    public void readSettings(WizardDescriptor wiz) {
  61.121 +        this.wiz = wiz;
  61.122 +        Set<FileObject> folders = (Set<FileObject>)wiz.getProperty(WizardProperties.KEY_FOLDERS);
  61.123 +        if(folders==null || folders.isEmpty()) {
  61.124 +            Object obj = wiz.getProperty(WizardProperties.KEY_ROOT_FILES);
  61.125 +            if(obj!=null) {
  61.126 +                getComponent().setRootFiles((Set<FileObject>)obj);
  61.127 +            }
  61.128 +        }else{
  61.129 +            getComponent().setRootFiles(folders);
  61.130 +        }
  61.131 +    }
  61.132 +
  61.133 +    @Override
  61.134 +    public void storeSettings(WizardDescriptor wiz) {
  61.135 +        Set<FileObject> folders = getComponent().getSelectedFolders();
  61.136 +        wiz.putProperty(WizardProperties.KEY_FOLDERS, folders);
  61.137 +    }
  61.138 +
  61.139 +    @Override
  61.140 +    public void validate() throws WizardValidationException {
  61.141 +        valid = true;
  61.142 +        Set<FileObject> folders = getComponent().getSelectedFolders();
  61.143 +        if(folders==null || folders.isEmpty()) {
  61.144 +            valid = false;
  61.145 +            throw new WizardValidationException(component, "Please select at least one folder!", null);
  61.146 +        }
  61.147 +        if(wiz!=null) {
  61.148 +            wiz.putProperty(WizardDescriptor.PROP_INFO_MESSAGE, null);
  61.149 +            wiz.putProperty(WizardDescriptor.PROP_WARNING_MESSAGE, null);
  61.150 +            wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, null);
  61.151 +        }
  61.152 +    }
  61.153 +}
    62.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    62.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/Bundle.properties	Fri Sep 14 00:27:52 2012 -0400
    62.3 @@ -0,0 +1,1 @@
    62.4 +MSG_WAIT_FOLDERS=Scanning for folders, please wait...
    63.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    63.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/CheckableNodeCapability.java	Fri Sep 14 00:27:52 2012 -0400
    63.3 @@ -0,0 +1,76 @@
    63.4 +/*
    63.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    63.6 + *
    63.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    63.8 + *
    63.9 + * The contents of this file are subject to the terms of either the GNU
   63.10 + * General Public License Version 2 only ("GPL") or the Common
   63.11 + * Development and Distribution License("CDDL") (collectively, the
   63.12 + * "License"). You may not use this file except in compliance with the
   63.13 + * License. You can obtain a copy of the License at
   63.14 + * http://www.netbeans.org/cddl-gplv2.html
   63.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   63.16 + * specific language governing permissions and limitations under the
   63.17 + * License.  When distributing the software, include this License Header
   63.18 + * Notice in each file and include the License file at
   63.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   63.20 + * particular file as subject to the "Classpath" exception as provided
   63.21 + * by Sun in the GPL Version 2 section of the License file that
   63.22 + * accompanied this code. If applicable, add the following below the
   63.23 + * License Header, with the fields enclosed by brackets [] replaced by
   63.24 + * your own identifying information:
   63.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   63.26 + *
   63.27 + * If you wish your version of this file to be governed by only the CDDL
   63.28 + * or only the GPL Version 2, indicate your decision by adding
   63.29 + * "[Contributor] elects to include this software in this distribution
   63.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   63.31 + * single choice of license, a recipient has the option to distribute
   63.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   63.33 + * to extend the choice of license to its licensees as provided above.
   63.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   63.35 + * Version 2 license, then the option applies only if the new code is
   63.36 + * made subject to such option by the copyright holder.
   63.37 + *
   63.38 + * Contributor(s):
   63.39 + *
   63.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   63.41 + */
   63.42 +
   63.43 +package org.netbeans.modules.licensechanger.spi.wizard.utils;
   63.44 +
   63.45 +import org.openide.explorer.view.CheckableNode;
   63.46 +
   63.47 +/**
   63.48 + * Implements {@see CheckableNode} to allow display and 
   63.49 + * use of checkable nodes in views.
   63.50 + * 
   63.51 + * @author Nils Hoffmann
   63.52 + */
   63.53 +public class CheckableNodeCapability implements CheckableNode {
   63.54 +
   63.55 +    private boolean checkable = true;
   63.56 +    private boolean checkEnabled = true;
   63.57 +    private boolean selected = true;
   63.58 +    
   63.59 +    @Override
   63.60 +    public boolean isCheckable() {
   63.61 +        return checkable;
   63.62 +    }
   63.63 +
   63.64 +    @Override
   63.65 +    public boolean isCheckEnabled() {
   63.66 +        return checkEnabled;
   63.67 +    }
   63.68 +
   63.69 +    @Override
   63.70 +    public Boolean isSelected() {
   63.71 +        return selected;
   63.72 +    }
   63.73 +
   63.74 +    @Override
   63.75 +    public void setSelected(Boolean selected) {
   63.76 +        this.selected = selected.booleanValue();
   63.77 +    }
   63.78 +    
   63.79 +}
    64.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    64.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/CheckboxListView.java	Fri Sep 14 00:27:52 2012 -0400
    64.3 @@ -0,0 +1,421 @@
    64.4 +/*
    64.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    64.6 + *
    64.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    64.8 + *
    64.9 + * The contents of this file are subject to the terms of either the GNU
   64.10 + * General Public License Version 2 only ("GPL") or the Common
   64.11 + * Development and Distribution License("CDDL") (collectively, the
   64.12 + * "License"). You may not use this file except in compliance with the
   64.13 + * License. You can obtain a copy of the License at
   64.14 + * http://www.netbeans.org/cddl-gplv2.html
   64.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   64.16 + * specific language governing permissions and limitations under the
   64.17 + * License.  When distributing the software, include this License Header
   64.18 + * Notice in each file and include the License file at
   64.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   64.20 + * particular file as subject to the "Classpath" exception as provided
   64.21 + * by Sun in the GPL Version 2 section of the License file that
   64.22 + * accompanied this code. If applicable, add the following below the
   64.23 + * License Header, with the fields enclosed by brackets [] replaced by
   64.24 + * your own identifying information:
   64.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   64.26 + *
   64.27 + * If you wish your version of this file to be governed by only the CDDL
   64.28 + * or only the GPL Version 2, indicate your decision by adding
   64.29 + * "[Contributor] elects to include this software in this distribution
   64.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   64.31 + * single choice of license, a recipient has the option to distribute
   64.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   64.33 + * to extend the choice of license to its licensees as provided above.
   64.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   64.35 + * Version 2 license, then the option applies only if the new code is
   64.36 + * made subject to such option by the copyright holder.
   64.37 + *
   64.38 + * Contributor(s):
   64.39 + *
   64.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   64.41 + */
   64.42 +
   64.43 +package org.netbeans.modules.licensechanger.spi.wizard.utils;
   64.44 +
   64.45 +import java.awt.Component;
   64.46 +import java.awt.Dimension;
   64.47 +import java.awt.Graphics;
   64.48 +import java.awt.Insets;
   64.49 +import java.awt.event.KeyAdapter;
   64.50 +import java.awt.event.KeyEvent;
   64.51 +import java.awt.event.MouseEvent;
   64.52 +import java.awt.event.MouseListener;
   64.53 +import javax.swing.BorderFactory;
   64.54 +import javax.swing.JCheckBox;
   64.55 +import javax.swing.JComponent;
   64.56 +import javax.swing.JList;
   64.57 +import javax.swing.ListSelectionModel;
   64.58 +import javax.swing.SwingUtilities;
   64.59 +import javax.swing.UIManager;
   64.60 +import org.openide.awt.HtmlRenderer.Renderer;
   64.61 +import org.openide.explorer.ExplorerManager;
   64.62 +import org.openide.explorer.ExplorerManager.Provider;
   64.63 +import org.openide.explorer.view.CheckableNode;
   64.64 +import org.openide.explorer.view.ListView;
   64.65 +import org.openide.explorer.view.NodeRenderer;
   64.66 +import org.openide.nodes.Node;
   64.67 +
   64.68 +/**
   64.69 + * A JList-based list of Nodes which show checkboxes.
   64.70 + *
   64.71 + * @author Tim Boudreau (original author)
   64.72 + * @author Nils Hoffmann (changed to use CheckableNodeCapability)
   64.73 + */
   64.74 +public class CheckboxListView extends ListView {
   64.75 +
   64.76 +//    public static final String SELECTED = "selected"; //NOI18N
   64.77 +    private final EventHandler ml = new EventHandler();
   64.78 +    private boolean checkboxesEnabled = true;
   64.79 +    private NodeCheckObserver observer;
   64.80 +
   64.81 +    public CheckboxListView() {
   64.82 +        setPopupAllowed(false);
   64.83 +        setViewportBorder(BorderFactory.createMatteBorder(5, 5, 5, 5,
   64.84 +                UIManager.getColor("text"))); //NOI18N
   64.85 +    }
   64.86 +
   64.87 +    @Override
   64.88 +    public void addNotify() {
   64.89 +        super.addNotify();
   64.90 +        //Need to do this here since overriding createList does not work -
   64.91 +        //the list is being created somewhere else; this is the best place
   64.92 +        //to intercept it
   64.93 +        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
   64.94 +        if (checkboxesEnabled) {
   64.95 +            enableCheckboxes();
   64.96 +        }
   64.97 +    }
   64.98 +    private boolean enabled = true;
   64.99 +
  64.100 +    public void setCheckboxesEnabled(boolean enabled) {
  64.101 +        this.enabled = enabled;
  64.102 +    }
  64.103 +
  64.104 +    public void setListEnabled(boolean enabled) {
  64.105 +        list.setEnabled(enabled);
  64.106 +    }
  64.107 +
  64.108 +    /**
  64.109 +     * Set an observer, which will be notified when nodes are checked or
  64.110 +     * unchecked.
  64.111 +     *
  64.112 +     * @param observer
  64.113 +     */
  64.114 +    public final void setNodeCheckObserver(NodeCheckObserver observer) {
  64.115 +        this.observer = observer;
  64.116 +    }
  64.117 +
  64.118 +    @Override
  64.119 +    public void removeNotify() {
  64.120 +        super.removeNotify();
  64.121 +        if (checkboxesEnabled) {
  64.122 +            disableCheckboxes();
  64.123 +        }
  64.124 +    }
  64.125 +
  64.126 +    public synchronized final void setCheckboxesVisible(boolean val) {
  64.127 +        if (val != checkboxesEnabled) {
  64.128 +            checkboxesEnabled = val;
  64.129 +            if (isDisplayable()) {
  64.130 +                if (val) {
  64.131 +                    enableCheckboxes();
  64.132 +                } else {
  64.133 +                    disableCheckboxes();
  64.134 +                }
  64.135 +            }
  64.136 +        }
  64.137 +    }
  64.138 +
  64.139 +    private void enableCheckboxes() {
  64.140 +        list.addMouseListener(ml);
  64.141 +        list.addKeyListener(ml);
  64.142 +        list.setCellRenderer(new CheckboxCellRenderer());
  64.143 +        repaint();
  64.144 +    }
  64.145 +
  64.146 +    private void disableCheckboxes() {
  64.147 +        list.removeMouseListener(ml);
  64.148 +        list.removeKeyListener(ml);
  64.149 +        list.setCellRenderer(new NodeRenderer());
  64.150 +        repaint();
  64.151 +    }
  64.152 +
  64.153 +    public void setCheckedNodes(Iterable<Node> nodes) {
  64.154 +        clearCheckedNodes();
  64.155 +        for (Node n : nodes) {
  64.156 +            CheckableNode cn = n.getLookup().lookup(CheckableNode.class);
  64.157 +            if (cn != null) {
  64.158 +                cn.setSelected(Boolean.TRUE);
  64.159 +            }
  64.160 +//            n.setValue(SELECTED, Boolean.TRUE);
  64.161 +        }
  64.162 +        repaint();
  64.163 +    }
  64.164 +
  64.165 +    public void clearCheckedNodes() {
  64.166 +        for (Node n : allNodes()) {
  64.167 +            CheckableNode cn = n.getLookup().lookup(CheckableNode.class);
  64.168 +            if (cn != null) {
  64.169 +                cn.setSelected(Boolean.FALSE);
  64.170 +                if (observer != null) {
  64.171 +                    observer.onNodeUnchecked(n);
  64.172 +                }
  64.173 +            }
  64.174 +//            boolean val = Boolean.TRUE.equals(n.getValue(SELECTED));
  64.175 +//
  64.176 +//            n.setValue(SELECTED, Boolean.FALSE);
  64.177 +        }
  64.178 +        repaint();
  64.179 +    }
  64.180 +
  64.181 +    private void selectNode(int index) {
  64.182 +        if (!enabled) {
  64.183 +            return;
  64.184 +        }
  64.185 +        if (index < 0) {
  64.186 +            return;
  64.187 +        }
  64.188 +        ExplorerManager.Provider prov = (Provider) SwingUtilities.getAncestorOfClass(ExplorerManager.Provider.class, this);
  64.189 +        if (prov != null) {
  64.190 +            Node[] n = prov.getExplorerManager().getRootContext().getChildren().getNodes();
  64.191 +            if (index < n.length) {
  64.192 +                CheckableNode cn = n[index].getLookup().lookup(CheckableNode.class);
  64.193 +                if (cn != null) {
  64.194 +                    boolean wasSet = cn.isSelected();
  64.195 +                    if (wasSet) {
  64.196 +                        cn.setSelected(Boolean.FALSE);
  64.197 +                    } else {
  64.198 +                        cn.setSelected(Boolean.TRUE);
  64.199 +                    }
  64.200 +                    if (observer != null) {
  64.201 +                        if (!wasSet) {
  64.202 +                            observer.onNodeChecked(n[index]);
  64.203 +                        } else {
  64.204 +                            observer.onNodeUnchecked(n[index]);
  64.205 +                        }
  64.206 +                    }
  64.207 +                    repaint();
  64.208 +                }
  64.209 +//                Boolean val = (Boolean) n[index].getValue(SELECTED);
  64.210 +//                boolean wasSet = val != null && val.booleanValue();
  64.211 +//                n[index].setValue(SELECTED, !wasSet);
  64.212 +            }
  64.213 +        }
  64.214 +    }
  64.215 +
  64.216 +    private Node[] allNodes() {
  64.217 +        ExplorerManager.Provider prov = (Provider) SwingUtilities.getAncestorOfClass(ExplorerManager.Provider.class, this);
  64.218 +        return prov == null ? new Node[0]
  64.219 +                : prov.getExplorerManager().getRootContext().getChildren().getNodes();
  64.220 +    }
  64.221 +
  64.222 +    private boolean isChecked(int index) {
  64.223 +        if (index < 0) {
  64.224 +            return false;
  64.225 +        }
  64.226 +        Node[] n = allNodes();
  64.227 +        if(index>n.length-1) {
  64.228 +            return false;
  64.229 +        }
  64.230 +        CheckableNode cn = n[index].getLookup().lookup(CheckableNode.class);
  64.231 +        if (cn != null) {
  64.232 +            return cn.isSelected();
  64.233 +        }else{
  64.234 +            return false;
  64.235 +        }
  64.236 +//        return index > n.length - 1 ? false
  64.237 +//                : Boolean.TRUE.equals(n[index].getValue(SELECTED));
  64.238 +    }
  64.239 +
  64.240 +    private class EventHandler extends KeyAdapter implements MouseListener {
  64.241 +
  64.242 +        @Override
  64.243 +        public void mouseClicked(MouseEvent e) {
  64.244 +            if (e.getClickCount() == 2) {
  64.245 +                selectNode(findIndex(e));
  64.246 +                e.consume();
  64.247 +            }
  64.248 +        }
  64.249 +
  64.250 +        private int findIndex(MouseEvent e) {
  64.251 +            JList jl = (JList) e.getSource();
  64.252 +            int result = jl.locationToIndex(e.getPoint());
  64.253 +            return result;
  64.254 +        }
  64.255 +        int pressIndex = -1;
  64.256 +
  64.257 +        @Override
  64.258 +        public void mousePressed(MouseEvent e) {
  64.259 +            pressIndex = findIndex(e);
  64.260 +        }
  64.261 +
  64.262 +        @Override
  64.263 +        public void mouseReleased(MouseEvent e) {
  64.264 +            int ix = findIndex(e);
  64.265 +            if (pressIndex == ix) {
  64.266 +                if (e.getX() <= 24) {
  64.267 +                    selectNode(ix);
  64.268 +                    e.consume();
  64.269 +                }
  64.270 +            }
  64.271 +            pressIndex = -1;
  64.272 +        }
  64.273 +
  64.274 +        @Override
  64.275 +        public void mouseEntered(MouseEvent e) {
  64.276 +            //do nothing
  64.277 +        }
  64.278 +
  64.279 +        @Override
  64.280 +        public void mouseExited(MouseEvent e) {
  64.281 +            //do nothing
  64.282 +        }
  64.283 +
  64.284 +        @Override
  64.285 +        public void keyTyped(KeyEvent e) {
  64.286 +            JList jl = (JList) e.getSource();
  64.287 +            if (e.getKeyChar() == '\n' && e.getModifiers() == 0) {
  64.288 +                selectNode(jl.getSelectedIndex());
  64.289 +                e.consume();
  64.290 +            }
  64.291 +        }
  64.292 +    }
  64.293 +
  64.294 +    private final class CheckboxCellRenderer extends NodeRenderer {
  64.295 +
  64.296 +        final WrapperComponent rr = new WrapperComponent();
  64.297 +
  64.298 +        @Override
  64.299 +        public Component getListCellRendererComponent(JList list, Object value, int index, boolean sel, boolean cellHasFocus) {
  64.300 +            cellHasFocus = false;
  64.301 +            Component c = super.getListCellRendererComponent(list, value, index, sel, cellHasFocus);
  64.302 +            Renderer r = (Renderer) c;
  64.303 +            r.setIndent(20);
  64.304 +            rr.setSelected(isChecked(index));
  64.305 +            rr.setToPaint(c);
  64.306 +            rr.setEnabled(enabled);
  64.307 +            c.setEnabled(enabled);
  64.308 +            return rr;
  64.309 +        }
  64.310 +    }
  64.311 +
  64.312 +    private static class WrapperComponent extends JComponent {
  64.313 +
  64.314 +        Component toPaint;
  64.315 +        private final JCheckBox box = new JCheckBox();
  64.316 +
  64.317 +        WrapperComponent() {
  64.318 +            add(box);
  64.319 +            box.setBorder(BorderFactory.createEmptyBorder());
  64.320 +        }
  64.321 +
  64.322 +        void setToPaint(Component toPaint) {
  64.323 +            if (this.toPaint != toPaint) {
  64.324 +                if (this.toPaint != null) {
  64.325 +                    remove(this.toPaint);
  64.326 +                }
  64.327 +                this.toPaint = toPaint;
  64.328 +                box.setBackground(toPaint.getBackground());
  64.329 +                add(toPaint);
  64.330 +            }
  64.331 +            doLayout();
  64.332 +        }
  64.333 +
  64.334 +        @Override
  64.335 +        public Dimension getPreferredSize() {
  64.336 +            Dimension a = box.getPreferredSize();
  64.337 +            Dimension b = toPaint == null ? new Dimension(0, 0) : toPaint.getPreferredSize();
  64.338 +            return new Dimension(a.width + b.width, Math.max(22, Math.max(a.height, b.height) + 1));
  64.339 +        }
  64.340 +
  64.341 +        @Override
  64.342 +        public void doLayout() {
  64.343 +            Dimension a = box.getPreferredSize();
  64.344 +            Dimension size = getPreferredSize();
  64.345 +            Insets ins = getInsets();
  64.346 +            size.height -= ins.top + ins.bottom;
  64.347 +            int x = ins.left;
  64.348 +            int y = a.height == size.height ? ins.top : ins.top + ((size.height / 2) - (a.height / 2));
  64.349 +            box.setBounds(x, y, a.width, a.height);
  64.350 +            x += a.width;
  64.351 +            if (toPaint != null) {
  64.352 +                Dimension c = toPaint.getPreferredSize();
  64.353 +                toPaint.setBounds(x, 0, getWidth() - x, c.height);
  64.354 +            }
  64.355 +        }
  64.356 +
  64.357 +        @Override
  64.358 +        public void paint(Graphics g) {
  64.359 +            doLayout();
  64.360 +            box.paint(g);
  64.361 +            if (toPaint != null) {
  64.362 +                toPaint.paint(g);
  64.363 +            }
  64.364 +        }
  64.365 +
  64.366 +        /*
  64.367 +         @Override
  64.368 +         public void doLayout() {
  64.369 +         Dimension a = box.getPreferredSize();
  64.370 +         System.err.println("Box preferred size " + a);
  64.371 +         Dimension size = getPreferredSize();
  64.372 +         System.err.println("My Preferred Size " + size);
  64.373 +         Insets ins = getInsets();
  64.374 +         size.height -= ins.top + ins.bottom;
  64.375 +         int x = ins.left;
  64.376 +         int y = a.height == size.height ? ins.top : ins.top + ((size.height / 2) - (a.height / 2));
  64.377 +         box.setBounds(x, y, a.width, a.height);
  64.378 +         x += a.width;
  64.379 +         if (toPaint != null) {
  64.380 +         a = toPaint.getPreferredSize();
  64.381 +         System.err.println("toPaint preferred size " + a);
  64.382 +         a.height = Math.max(22, a.height);
  64.383 +         y = a.height == size.height ? ins.top : ins.top + ((size.height / 2) - (a.height / 2));
  64.384 +         toPaint.setBounds(x, y, a.width, a.height);
  64.385 +         //                toPaint.setBounds (x, 0, getWidth() - x, getHeight());
  64.386 +         }
  64.387 +
  64.388 +         System.err.println("---------------------------------------");
  64.389 +         System.err.println("toPaint bounds " + toPaint.getBounds());
  64.390 +         System.err.println("toPaint text " + ((JLabel) toPaint).getText());
  64.391 +         System.err.println("toPaint fg " + toPaint.getForeground());
  64.392 +         }
  64.393 +         */
  64.394 +        void setSelected(boolean val) {
  64.395 +            box.setSelected(val);
  64.396 +        }
  64.397 +        /*
  64.398 +         @Override
  64.399 +         protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
  64.400 +         //do nothing
  64.401 +         }
  64.402 +
  64.403 +         @Override
  64.404 +         public void repaint(int x, int y, int w, int h) {
  64.405 +         }
  64.406 +
  64.407 +         @Override
  64.408 +         public void invalidate() {
  64.409 +         }
  64.410 +
  64.411 +         @Override
  64.412 +         public void revalidate() {
  64.413 +         }
  64.414 +
  64.415 +         @Override
  64.416 +         public void repaint() {
  64.417 +         }
  64.418 +
  64.419 +         @Override
  64.420 +         public void validate() {
  64.421 +         }
  64.422 +         */
  64.423 +    }
  64.424 +}
    65.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    65.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FileChildren.java	Fri Sep 14 00:27:52 2012 -0400
    65.3 @@ -0,0 +1,155 @@
    65.4 +/*
    65.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    65.6 + *
    65.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    65.8 + *
    65.9 + * The contents of this file are subject to the terms of either the GNU
   65.10 + * General Public License Version 2 only ("GPL") or the Common
   65.11 + * Development and Distribution License("CDDL") (collectively, the
   65.12 + * "License"). You may not use this file except in compliance with the
   65.13 + * License. You can obtain a copy of the License at
   65.14 + * http://www.netbeans.org/cddl-gplv2.html
   65.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   65.16 + * specific language governing permissions and limitations under the
   65.17 + * License.  When distributing the software, include this License Header
   65.18 + * Notice in each file and include the License file at
   65.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   65.20 + * particular file as subject to the "Classpath" exception as provided
   65.21 + * by Sun in the GPL Version 2 section of the License file that
   65.22 + * accompanied this code. If applicable, add the following below the
   65.23 + * License Header, with the fields enclosed by brackets [] replaced by
   65.24 + * your own identifying information:
   65.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   65.26 + *
   65.27 + * If you wish your version of this file to be governed by only the CDDL
   65.28 + * or only the GPL Version 2, indicate your decision by adding
   65.29 + * "[Contributor] elects to include this software in this distribution
   65.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   65.31 + * single choice of license, a recipient has the option to distribute
   65.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   65.33 + * to extend the choice of license to its licensees as provided above.
   65.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   65.35 + * Version 2 license, then the option applies only if the new code is
   65.36 + * made subject to such option by the copyright holder.
   65.37 + *
   65.38 + * Contributor(s):
   65.39 + *
   65.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   65.41 + */
   65.42 +
   65.43 +package org.netbeans.modules.licensechanger.spi.wizard.utils;
   65.44 +
   65.45 +import java.util.Collection;
   65.46 +import java.util.Collections;
   65.47 +import java.util.HashSet;
   65.48 +import java.util.LinkedList;
   65.49 +import java.util.List;
   65.50 +import java.util.Set;
   65.51 +import javax.swing.Action;
   65.52 +import org.netbeans.modules.licensechanger.api.FileHandler;
   65.53 +import org.openide.filesystems.FileObject;
   65.54 +import org.openide.loaders.DataObject;
   65.55 +import org.openide.loaders.DataObjectNotFoundException;
   65.56 +import org.openide.nodes.ChildFactory;
   65.57 +import org.openide.nodes.FilterNode;
   65.58 +import org.openide.nodes.Node;
   65.59 +import org.openide.util.Exceptions;
   65.60 +import org.openide.util.Lookup;
   65.61 +import org.openide.util.lookup.Lookups;
   65.62 +import org.openide.util.lookup.ProxyLookup;
   65.63 +
   65.64 +/**
   65.65 + *
   65.66 + * @author Tim Boudreau (original author)
   65.67 + * @author Nils Hoffmann (changed to use CheckableNodeCapability)
   65.68 + */
   65.69 +public class FileChildren extends ChildFactory.Detachable<FileObject> {
   65.70 +
   65.71 +    private final Set<FileObject> folders;
   65.72 +    private final Collection<? extends FileHandler> allHandlers;
   65.73 +    private final Set<FileItem> items = Collections.synchronizedSet(new HashSet<FileItem>());
   65.74 +
   65.75 +    public FileChildren(Set<FileObject> folders, Set<FileHandler> fileHandler) {
   65.76 +        assert folders != null;
   65.77 +        this.folders = new HashSet<FileObject>(folders);
   65.78 +        allHandlers = fileHandler;//Lookup.getDefault().lookupAll(FileHandler.class);
   65.79 +        //settings.put(WizardProperties.KEY_ITEMS, items);
   65.80 +    }
   65.81 +
   65.82 +    @Override
   65.83 +    protected boolean createKeys(List<FileObject> toPopulate) {
   65.84 +        toPopulate.addAll(folders);
   65.85 +        return true;
   65.86 +    }
   65.87 +
   65.88 +    @Override
   65.89 +    protected Node[] createNodesForKey(FileObject key) {
   65.90 +        List<Node> result = new LinkedList<Node>();
   65.91 +        for (FileObject fo : key.getChildren()) {
   65.92 +            if (fo.isData()) {
   65.93 +                for (FileHandler h : allHandlers) {
   65.94 +                    if (h.match(fo)) {
   65.95 +                        try {
   65.96 +                            DataObject dob = DataObject.find(fo);
   65.97 +                            FileItem item = new FileItem(h, fo);
   65.98 +                            items.add(item);
   65.99 +                            FN fn = new FN (dob.getNodeDelegate(), item);
  65.100 +                            boolean shouldChange =  !h.shouldSkipFile(fo);
  65.101 +                            result.add(fn);
  65.102 +//                            fn.setValue (CheckboxListView.SELECTED, shouldChange);
  65.103 +                            break;
  65.104 +                        } catch (DataObjectNotFoundException ex) {
  65.105 +                            Exceptions.printStackTrace(ex);
  65.106 +                        }
  65.107 +                    }
  65.108 +                }
  65.109 +            }
  65.110 +        }
  65.111 +        return result.toArray(new Node[result.size()]);
  65.112 +    }
  65.113 +
  65.114 +    public static final class FileItem {
  65.115 +
  65.116 +        FileHandler handler;
  65.117 +        FileObject file;
  65.118 +
  65.119 +        public FileItem(FileHandler handler, FileObject file) {
  65.120 +            this.handler = handler;
  65.121 +            this.file = file;
  65.122 +        }
  65.123 +
  65.124 +        public FileObject getFile() {
  65.125 +            return file;
  65.126 +        }
  65.127 +
  65.128 +        public FileHandler getHandler() {
  65.129 +            return handler;
  65.130 +        }
  65.131 +    }
  65.132 +
  65.133 +    private static final class FN extends FilterNode {
  65.134 +
  65.135 +        FN(Node orig, FileItem item) {
  65.136 +            super(orig, Children.LEAF, new ProxyLookup(
  65.137 +                    Lookups.fixed(item,new CheckableNodeCapability()),
  65.138 +                    orig.getLookup()));
  65.139 +            disableDelegation(DELEGATE_GET_ACTIONS);
  65.140 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  65.141 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  65.142 +            disableDelegation(DELEGATE_GET_DISPLAY_NAME);
  65.143 +            disableDelegation(DELEGATE_GET_VALUE);
  65.144 +            disableDelegation(DELEGATE_SET_VALUE);
  65.145 +            disableDelegation(DELEGATE_SET_NAME);
  65.146 +            disableDelegation(DELEGATE_GET_NAME);
  65.147 +//            setValue(CheckboxListView.SELECTED, Boolean.TRUE);
  65.148 +            setName(item.file.getPath());
  65.149 +            setDisplayName(item.file.getPath());
  65.150 +            setShortDescription(item.file.getPath());
  65.151 +        }
  65.152 +
  65.153 +        @Override
  65.154 +        public Action[] getActions(boolean ignored) {
  65.155 +            return new Action[0];
  65.156 +        }
  65.157 +    }
  65.158 +}
    66.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    66.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FileLoader.java	Fri Sep 14 00:27:52 2012 -0400
    66.3 @@ -0,0 +1,81 @@
    66.4 +/*
    66.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    66.6 + *
    66.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    66.8 + *
    66.9 + * The contents of this file are subject to the terms of either the GNU
   66.10 + * General Public License Version 2 only ("GPL") or the Common
   66.11 + * Development and Distribution License("CDDL") (collectively, the
   66.12 + * "License"). You may not use this file except in compliance with the
   66.13 + * License. You can obtain a copy of the License at
   66.14 + * http://www.netbeans.org/cddl-gplv2.html
   66.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   66.16 + * specific language governing permissions and limitations under the
   66.17 + * License.  When distributing the software, include this License Header
   66.18 + * Notice in each file and include the License file at
   66.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   66.20 + * particular file as subject to the "Classpath" exception as provided
   66.21 + * by Sun in the GPL Version 2 section of the License file that
   66.22 + * accompanied this code. If applicable, add the following below the
   66.23 + * License Header, with the fields enclosed by brackets [] replaced by
   66.24 + * your own identifying information:
   66.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   66.26 + *
   66.27 + * If you wish your version of this file to be governed by only the CDDL
   66.28 + * or only the GPL Version 2, indicate your decision by adding
   66.29 + * "[Contributor] elects to include this software in this distribution
   66.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   66.31 + * single choice of license, a recipient has the option to distribute
   66.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   66.33 + * to extend the choice of license to its licensees as provided above.
   66.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   66.35 + * Version 2 license, then the option applies only if the new code is
   66.36 + * made subject to such option by the copyright holder.
   66.37 + *
   66.38 + * Contributor(s):
   66.39 + *
   66.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   66.41 + */
   66.42 +
   66.43 +package org.netbeans.modules.licensechanger.spi.wizard.utils;
   66.44 +
   66.45 +import java.io.BufferedInputStream;
   66.46 +import java.io.ByteArrayOutputStream;
   66.47 +import java.io.IOException;
   66.48 +import java.io.InputStream;
   66.49 +import java.io.UnsupportedEncodingException;
   66.50 +import java.nio.charset.Charset;
   66.51 +import org.netbeans.api.queries.FileEncodingQuery;
   66.52 +import org.openide.filesystems.FileObject;
   66.53 +import org.openide.filesystems.FileUtil;
   66.54 +import org.openide.util.Utilities;
   66.55 +
   66.56 +/**
   66.57 + * @author Tim Boudreau
   66.58 + * @author Nils Hoffmann (Refactoring)
   66.59 + */
   66.60 +public class FileLoader {
   66.61 +    public static String loadFile(FileObject file) throws IOException {
   66.62 +        Charset encoding = FileEncodingQuery.getEncoding(file);
   66.63 +        InputStream in = new BufferedInputStream(file.getInputStream());
   66.64 +        ByteArrayOutputStream out = new ByteArrayOutputStream((int) file.getSize());
   66.65 +        try {
   66.66 +            FileUtil.copy(in, out);
   66.67 +            try {
   66.68 +                String result = new String(out.toByteArray(), encoding.name());
   66.69 +                String sep = System.getProperty ("line.separator");
   66.70 +                //Convert everything internally to use \n
   66.71 +                if (!"\n".equals(sep) && sep != null) {
   66.72 +                    return Utilities.replaceString(result, sep, "\n");
   66.73 +                } else {
   66.74 +                    return result;
   66.75 +                }
   66.76 +            } catch (UnsupportedEncodingException q) {
   66.77 +                return new String(out.toByteArray(), FileEncodingQuery.getDefaultEncoding().name());
   66.78 +            }
   66.79 +        } finally {
   66.80 +            in.close();
   66.81 +            out.close();
   66.82 +        }
   66.83 +    }
   66.84 +}
    67.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    67.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FolderChildren.java	Fri Sep 14 00:27:52 2012 -0400
    67.3 @@ -0,0 +1,186 @@
    67.4 +/*
    67.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    67.6 + *
    67.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    67.8 + *
    67.9 + * The contents of this file are subject to the terms of either the GNU
   67.10 + * General Public License Version 2 only ("GPL") or the Common
   67.11 + * Development and Distribution License("CDDL") (collectively, the
   67.12 + * "License"). You may not use this file except in compliance with the
   67.13 + * License. You can obtain a copy of the License at
   67.14 + * http://www.netbeans.org/cddl-gplv2.html
   67.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   67.16 + * specific language governing permissions and limitations under the
   67.17 + * License.  When distributing the software, include this License Header
   67.18 + * Notice in each file and include the License file at
   67.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   67.20 + * particular file as subject to the "Classpath" exception as provided
   67.21 + * by Sun in the GPL Version 2 section of the License file that
   67.22 + * accompanied this code. If applicable, add the following below the
   67.23 + * License Header, with the fields enclosed by brackets [] replaced by
   67.24 + * your own identifying information:
   67.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   67.26 + *
   67.27 + * If you wish your version of this file to be governed by only the CDDL
   67.28 + * or only the GPL Version 2, indicate your decision by adding
   67.29 + * "[Contributor] elects to include this software in this distribution
   67.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   67.31 + * single choice of license, a recipient has the option to distribute
   67.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   67.33 + * to extend the choice of license to its licensees as provided above.
   67.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   67.35 + * Version 2 license, then the option applies only if the new code is
   67.36 + * made subject to such option by the copyright holder.
   67.37 + *
   67.38 + * Contributor(s):
   67.39 + *
   67.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   67.41 + */
   67.42 +
   67.43 +package org.netbeans.modules.licensechanger.spi.wizard.utils;
   67.44 +
   67.45 +import java.awt.EventQueue;
   67.46 +import java.util.List;
   67.47 +import javax.swing.Action;
   67.48 +import org.netbeans.api.queries.VisibilityQuery;
   67.49 +import org.openide.explorer.view.CheckableNode;
   67.50 +import org.openide.filesystems.FileObject;
   67.51 +import org.openide.filesystems.FileUtil;
   67.52 +import org.openide.loaders.DataObject;
   67.53 +import org.openide.loaders.DataObjectNotFoundException;
   67.54 +import org.openide.nodes.AbstractNode;
   67.55 +import org.openide.nodes.ChildFactory;
   67.56 +import org.openide.nodes.Children;
   67.57 +import org.openide.nodes.FilterNode;
   67.58 +import org.openide.nodes.Node;
   67.59 +import org.openide.util.Exceptions;
   67.60 +import org.openide.util.NbBundle;
   67.61 +import org.openide.util.NbCollections;
   67.62 +import org.openide.util.lookup.Lookups;
   67.63 +import org.openide.util.lookup.ProxyLookup;
   67.64 +
   67.65 +/**
   67.66 + *
   67.67 + * @author Tim Boudreau (original author)
   67.68 + * @author Nils Hoffmann (changed to use CheckableNodeCapability)
   67.69 + */
   67.70 +public abstract class FolderChildren extends ChildFactory.Detachable<FileObject> implements Runnable {
   67.71 +    private FileObject[] roots;
   67.72 +    volatile int keyCount = 0;
   67.73 +    private int nodeCount = 0;
   67.74 +    private volatile boolean cancelled = false;
   67.75 +
   67.76 +    public FolderChildren (FileObject[] roots) {
   67.77 +        this.roots = roots;
   67.78 +    }
   67.79 +
   67.80 +    @Override
   67.81 +    protected Node createWaitNode() {
   67.82 +        AbstractNode result = new AbstractNode(Children.LEAF);
   67.83 +        result.setDisplayName(NbBundle.getMessage(FolderChildren.class, "MSG_WAIT_FOLDERS"));
   67.84 +        return result;
   67.85 +    }
   67.86 +
   67.87 +    @Override
   67.88 +    public void addNotify() {
   67.89 +        cancelled = false;
   67.90 +        super.addNotify();
   67.91 +        keyCount = 0;
   67.92 +        nodeCount = 0;
   67.93 +    }
   67.94 +
   67.95 +    @Override
   67.96 +    protected void removeNotify() {
   67.97 +        super.removeNotify();
   67.98 +        cancelled = true;
   67.99 +    }
  67.100 +
  67.101 +    private boolean shouldSkipFolder (FileObject folder) {
  67.102 +        // XXX use VisibilityQuery instead
  67.103 +        String path = folder.getPath();
  67.104 +        return path.contains(".svn") || path.contains(".cvs") || path.contains(".hg") ||
  67.105 +                path.endsWith(".svn") || path.endsWith(".cvs") || path.endsWith(".hg") ||
  67.106 +                path.contains("target") || path.endsWith("target") || path.contains("build") || path.endsWith("build");
  67.107 +    }
  67.108 +
  67.109 +    @Override
  67.110 +    protected boolean createKeys(List<FileObject> toPopulate) {
  67.111 +        for (FileObject f : roots) {
  67.112 +            toPopulate.add(f);
  67.113 +            keyCount++;
  67.114 +            for (FileObject fo : NbCollections.iterable(f.getChildren(true))) {
  67.115 +                if (fo.isFolder()) {
  67.116 +                    if (shouldSkipFolder(fo)) {
  67.117 +                        continue;
  67.118 +                    }
  67.119 +                    toPopulate.add(fo);
  67.120 +                    keyCount++;
  67.121 +                }
  67.122 +                if (cancelled) {
  67.123 +                    return true;
  67.124 +                }
  67.125 +            }
  67.126 +            if (cancelled) {
  67.127 +                return true;
  67.128 +            }
  67.129 +        }
  67.130 +        return true;
  67.131 +    }
  67.132 +
  67.133 +    @Override
  67.134 +    protected Node createNodeForKey(FileObject f) {
  67.135 +        try {
  67.136 +            Node n = DataObject.find(f).getNodeDelegate();
  67.137 +            nodeCount++;
  67.138 +            if (nodeCount == keyCount) {
  67.139 +                EventQueue.invokeLater(this);
  67.140 +            }
  67.141 +            return new FN(n, f);
  67.142 +        } catch (DataObjectNotFoundException ex) {
  67.143 +            Exceptions.printStackTrace(ex);
  67.144 +            return null;
  67.145 +        }
  67.146 +    }
  67.147 +
  67.148 +    public abstract void onAllNodesCreated();
  67.149 +
  67.150 +    @Override
  67.151 +    public void run() {
  67.152 +        onAllNodesCreated();
  67.153 +    }
  67.154 +
  67.155 +    private static final class FN extends FilterNode {
  67.156 +        FN(Node orig, FileObject f) {
  67.157 +            super (orig, Children.LEAF, new ProxyLookup(
  67.158 +                    Lookups.fixed(f,new CheckableNodeCapability()),
  67.159 +                    orig.getLookup()));
  67.160 +            disableDelegation(DELEGATE_GET_ACTIONS);
  67.161 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  67.162 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  67.163 +            disableDelegation(DELEGATE_GET_DISPLAY_NAME);
  67.164 +            disableDelegation(DELEGATE_GET_VALUE);
  67.165 +            disableDelegation(DELEGATE_SET_VALUE);
  67.166 +            disableDelegation(DELEGATE_SET_NAME);
  67.167 +            disableDelegation(DELEGATE_GET_NAME);
  67.168 +            String p = f.getPath();
  67.169 +            // XXX this is a pretty arbitrary list... maybe check SharabilityQuery?
  67.170 +            if (!p.endsWith("nbproject") &&
  67.171 +                !p.endsWith("nbproject/private")) { //NOI18N
  67.172 +//                setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  67.173 +                    
  67.174 +            }else{
  67.175 +                CheckableNode cn = getLookup().lookup(CheckableNode.class);
  67.176 +                if(cn!=null) {
  67.177 +                    cn.setSelected(false);
  67.178 +                }
  67.179 +            }
  67.180 +            setName(p);
  67.181 +            setDisplayName(FileUtil.getFileDisplayName(f));
  67.182 +        }
  67.183 +
  67.184 +        @Override
  67.185 +        public Action[] getActions(boolean ignored) {
  67.186 +            return new Action[0];
  67.187 +        }
  67.188 +    }
  67.189 +}
    68.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    68.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/LicenseChangerRunnable.java	Fri Sep 14 00:27:52 2012 -0400
    68.3 @@ -0,0 +1,163 @@
    68.4 +/*
    68.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    68.6 + *
    68.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    68.8 + *
    68.9 + * The contents of this file are subject to the terms of either the GNU
   68.10 + * General Public License Version 2 only ("GPL") or the Common
   68.11 + * Development and Distribution License("CDDL") (collectively, the
   68.12 + * "License"). You may not use this file except in compliance with the
   68.13 + * License. You can obtain a copy of the License at
   68.14 + * http://www.netbeans.org/cddl-gplv2.html
   68.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   68.16 + * specific language governing permissions and limitations under the
   68.17 + * License.  When distributing the software, include this License Header
   68.18 + * Notice in each file and include the License file at
   68.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   68.20 + * particular file as subject to the "Classpath" exception as provided
   68.21 + * by Sun in the GPL Version 2 section of the License file that
   68.22 + * accompanied this code. If applicable, add the following below the
   68.23 + * License Header, with the fields enclosed by brackets [] replaced by
   68.24 + * your own identifying information:
   68.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   68.26 + *
   68.27 + * If you wish your version of this file to be governed by only the CDDL
   68.28 + * or only the GPL Version 2, indicate your decision by adding
   68.29 + * "[Contributor] elects to include this software in this distribution
   68.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   68.31 + * single choice of license, a recipient has the option to distribute
   68.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   68.33 + * to extend the choice of license to its licensees as provided above.
   68.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   68.35 + * Version 2 license, then the option applies only if the new code is
   68.36 + * made subject to such option by the copyright holder.
   68.37 + *
   68.38 + * Contributor(s):
   68.39 + *
   68.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   68.41 + */
   68.42 +package org.netbeans.modules.licensechanger.spi.wizard.utils;
   68.43 +
   68.44 +import java.io.*;
   68.45 +import java.nio.charset.Charset;
   68.46 +import java.util.Properties;
   68.47 +import java.util.Set;
   68.48 +import org.netbeans.api.progress.ProgressHandle;
   68.49 +import org.netbeans.api.progress.ProgressHandleFactory;
   68.50 +import org.netbeans.api.project.*;
   68.51 +import org.netbeans.api.project.ui.OpenProjects;
   68.52 +import org.netbeans.api.queries.FileEncodingQuery;
   68.53 +import org.netbeans.modules.licensechanger.spi.wizard.LineEndingsPanel;
   68.54 +import org.openide.WizardDescriptor;
   68.55 +import org.openide.filesystems.*;
   68.56 +import org.openide.filesystems.FileUtil;
   68.57 +import org.openide.util.EditableProperties;
   68.58 +import org.openide.util.Exceptions;
   68.59 +
   68.60 +/**
   68.61 + * @author Tim Boudreau
   68.62 + * @author Nils Hoffmann (Refactoring)
   68.63 + */
   68.64 +public class LicenseChangerRunnable implements Runnable {
   68.65 +
   68.66 +    private final WizardDescriptor wizard;
   68.67 +
   68.68 +    public LicenseChangerRunnable(WizardDescriptor wizard) {
   68.69 +        this.wizard = wizard;
   68.70 +    }
   68.71 +
   68.72 +    @Override
   68.73 +    public void run() {
   68.74 +        ProgressHandle handle = ProgressHandleFactory.createHandle("Changing license headers");
   68.75 +        try {
   68.76 +            Set<FileChildren.FileItem> items = (Set<FileChildren.FileItem>) wizard.getProperty(WizardProperties.KEY_ITEMS);
   68.77 +            final String licenseText = (String) wizard.getProperty(WizardProperties.KEY_LICENSE_TEXT);
   68.78 +            final String licenseName = (String) wizard.getProperty(WizardProperties.KEY_LICENSE_NAME);
   68.79 +            int ix = 0;
   68.80 +            int max = items.size();
   68.81 +            handle.start(max);
   68.82 +            Charset enc;
   68.83 +            for (FileChildren.FileItem item : items) {
   68.84 +                handle.progress(item.getFile().getNameExt(), ix);
   68.85 +                try {
   68.86 +                    String content = FileLoader.loadFile(item.file);
   68.87 +                    String nue = item.handler.transform(content, licenseText);
   68.88 +                    LineEndingPreference pref = LineEndingsPanel.getLineEndingPrefs();
   68.89 +                    nue = LineEndingPreference.convertLineEndings(pref, content, nue);
   68.90 +
   68.91 +                    enc = FileEncodingQuery.getEncoding(item.file);
   68.92 +                    BufferedOutputStream out = new BufferedOutputStream(item.file.getOutputStream());
   68.93 +                    byte[] bytes;
   68.94 +                    try {
   68.95 +                        bytes = nue.getBytes(enc.name());
   68.96 +                    } catch (UnsupportedEncodingException e) {
   68.97 +                        //properties files get resource_bundle_charset
   68.98 +                        bytes = nue.getBytes(FileEncodingQuery.getDefaultEncoding().name());
   68.99 +                    }
  68.100 +                    ByteArrayInputStream in = new ByteArrayInputStream(bytes);
  68.101 +                    try {
  68.102 +                        FileUtil.copy(in, out);
  68.103 +                    } finally {
  68.104 +                        out.close();
  68.105 +                        in.close();
  68.106 +                    }
  68.107 +                } catch (IOException ex) {
  68.108 +                    Exceptions.printStackTrace(ex);
  68.109 +                }
  68.110 +                ix++;
  68.111 +            }
  68.112 +            Boolean updateProjectLicense = (Boolean) wizard.getProperty(WizardProperties.KEY_UPDATE_DEFAULT_PROJECT_LICENSE);
  68.113 +            if (updateProjectLicense) {
  68.114 +                System.out.println("Updating default license header!");
  68.115 +                Project project = (Project) wizard.getProperty(WizardProperties.KEY_PROJECT);
  68.116 +                Sources source = ProjectUtils.getSources(project);
  68.117 +                for (SourceGroup group : source.getSourceGroups(Sources.TYPE_GENERIC)) {
  68.118 +                    try {
  68.119 +                        FileObject nbprojectDir = group.getRootFolder().getFileObject("nbproject");
  68.120 +                        if (nbprojectDir != null) {
  68.121 +                            final FileObject projectProps = FileUtil.createData(nbprojectDir, "project.properties");
  68.122 +                            boolean hasProjectProperties = group.contains(projectProps);
  68.123 +                            if (hasProjectProperties) {
  68.124 +                                System.out.println("Found project.properties at " + projectProps.getPath());
  68.125 +                                ProjectManager.mutex().writeAccess(new Runnable() {
  68.126 +
  68.127 +                                    @Override
  68.128 +                                    public void run() {
  68.129 +                                        try {
  68.130 +                                            InputStream istream = projectProps.getInputStream();
  68.131 +                                            EditableProperties props = new EditableProperties(true);
  68.132 +                                            props.load(istream);
  68.133 +                                            istream.close();
  68.134 +                                            props.setProperty("project.license", licenseName);
  68.135 +                                            OutputStream ostream = projectProps.getOutputStream();
  68.136 +                                            props.store(ostream);
  68.137 +                                            ostream.close();
  68.138 +                                        } catch (IOException ex) {
  68.139 +                                            Exceptions.printStackTrace(ex);
  68.140 +                                        } finally {
  68.141 +                                        }
  68.142 +                                    }
  68.143 +                                });
  68.144 +
  68.145 +                            }
  68.146 +                        } else {
  68.147 +                            //TODO implement handling of maven-based projects and others
  68.148 +                            //check for pom.xml
  68.149 +                            FileObject pom = group.getRootFolder().getFileObject("pom.xml");
  68.150 +                            if (pom != null) {
  68.151 +                                System.out.println("Found maven pom.xml at " + pom.getPath());
  68.152 +                                //found pom-based maven project
  68.153 +                                String netbeansHintLicense = "<netbeans.hint.license>" + licenseName + "</netbeans.hint.license>";
  68.154 +                                System.out.println("Please add " + netbeansHintLicense + " within your pom.xml <properties> section!");
  68.155 +                            }
  68.156 +                        }
  68.157 +                    } catch (IOException ex) {
  68.158 +                        Exceptions.printStackTrace(ex);
  68.159 +                    }
  68.160 +                }
  68.161 +            }
  68.162 +        } finally {
  68.163 +            handle.finish();
  68.164 +        }
  68.165 +    }
  68.166 +}
    69.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    69.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/LineEndingPreference.java	Fri Sep 14 00:27:52 2012 -0400
    69.3 @@ -0,0 +1,77 @@
    69.4 +/*
    69.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    69.6 + *
    69.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    69.8 + *
    69.9 + * The contents of this file are subject to the terms of either the GNU
   69.10 + * General Public License Version 2 only ("GPL") or the Common
   69.11 + * Development and Distribution License("CDDL") (collectively, the
   69.12 + * "License"). You may not use this file except in compliance with the
   69.13 + * License. You can obtain a copy of the License at
   69.14 + * http://www.netbeans.org/cddl-gplv2.html
   69.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   69.16 + * specific language governing permissions and limitations under the
   69.17 + * License.  When distributing the software, include this License Header
   69.18 + * Notice in each file and include the License file at
   69.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   69.20 + * particular file as subject to the "Classpath" exception as provided
   69.21 + * by Sun in the GPL Version 2 section of the License file that
   69.22 + * accompanied this code. If applicable, add the following below the
   69.23 + * License Header, with the fields enclosed by brackets [] replaced by
   69.24 + * your own identifying information:
   69.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   69.26 + *
   69.27 + * If you wish your version of this file to be governed by only the CDDL
   69.28 + * or only the GPL Version 2, indicate your decision by adding
   69.29 + * "[Contributor] elects to include this software in this distribution
   69.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   69.31 + * single choice of license, a recipient has the option to distribute
   69.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   69.33 + * to extend the choice of license to its licensees as provided above.
   69.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   69.35 + * Version 2 license, then the option applies only if the new code is
   69.36 + * made subject to such option by the copyright holder.
   69.37 + *
   69.38 + * Contributor(s):
   69.39 + *
   69.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   69.41 + */
   69.42 +
   69.43 +package org.netbeans.modules.licensechanger.spi.wizard.utils;
   69.44 +
   69.45 +import org.openide.util.Utilities;
   69.46 +
   69.47 +/**
   69.48 + * User preference for line ending conversion
   69.49 + *
   69.50 + * @author Tim Boudreau
   69.51 + */
   69.52 +public enum LineEndingPreference {
   69.53 +    FORCE_CRLF,
   69.54 +    NO_CHANGE,
   69.55 +    FORCE_NEWLINE,
   69.56 +    SYSTEM_DEFAULT;
   69.57 +    
   69.58 +    public static String convertLineEndings (LineEndingPreference pref, String old, String nue) {
   69.59 +        boolean oldHasCrlf = old.contains("\r\n"); //NOI18N
   69.60 +        switch (pref) {
   69.61 +            case FORCE_CRLF :
   69.62 +                return Utilities.replaceString(nue, "\n", "\r\n"); //NOI18N
   69.63 +            case FORCE_NEWLINE :
   69.64 +                //We already converted everything to newline only on load
   69.65 +                return nue;
   69.66 +            case NO_CHANGE :
   69.67 +                return oldHasCrlf ? Utilities.replaceString(nue, "\n", "\r\n") : //NOI18N
   69.68 +                    nue;
   69.69 +            case SYSTEM_DEFAULT :
   69.70 +                String sep = System.getProperty( "line.separator" ); //NOI18N
   69.71 +                if ("\n".equals(sep)) {
   69.72 +                    return nue;
   69.73 +                } else {
   69.74 +                    return Utilities.replaceString (nue, "\n", sep); //NOI18N
   69.75 +                }
   69.76 +            default :
   69.77 +                throw new AssertionError();
   69.78 +        }
   69.79 +    }
   69.80 +}
    70.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    70.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/NodeCheckObserver.java	Fri Sep 14 00:27:52 2012 -0400
    70.3 @@ -0,0 +1,51 @@
    70.4 +/*
    70.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    70.6 + *
    70.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    70.8 + *
    70.9 + * The contents of this file are subject to the terms of either the GNU
   70.10 + * General Public License Version 2 only ("GPL") or the Common
   70.11 + * Development and Distribution License("CDDL") (collectively, the
   70.12 + * "License"). You may not use this file except in compliance with the
   70.13 + * License. You can obtain a copy of the License at
   70.14 + * http://www.netbeans.org/cddl-gplv2.html
   70.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   70.16 + * specific language governing permissions and limitations under the
   70.17 + * License.  When distributing the software, include this License Header
   70.18 + * Notice in each file and include the License file at
   70.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   70.20 + * particular file as subject to the "Classpath" exception as provided
   70.21 + * by Sun in the GPL Version 2 section of the License file that
   70.22 + * accompanied this code. If applicable, add the following below the
   70.23 + * License Header, with the fields enclosed by brackets [] replaced by
   70.24 + * your own identifying information:
   70.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   70.26 + *
   70.27 + * If you wish your version of this file to be governed by only the CDDL
   70.28 + * or only the GPL Version 2, indicate your decision by adding
   70.29 + * "[Contributor] elects to include this software in this distribution
   70.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   70.31 + * single choice of license, a recipient has the option to distribute
   70.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   70.33 + * to extend the choice of license to its licensees as provided above.
   70.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   70.35 + * Version 2 license, then the option applies only if the new code is
   70.36 + * made subject to such option by the copyright holder.
   70.37 + *
   70.38 + * Contributor(s):
   70.39 + *
   70.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   70.41 + */
   70.42 +
   70.43 +package org.netbeans.modules.licensechanger.spi.wizard.utils;
   70.44 +
   70.45 +import org.openide.nodes.Node;
   70.46 +
   70.47 +/**
   70.48 + *
   70.49 + * @author Tim Boudreau
   70.50 + */
   70.51 +public interface NodeCheckObserver {
   70.52 +    public void onNodeChecked (Node node);
   70.53 +    public void onNodeUnchecked (Node node);
   70.54 +}
    71.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    71.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/Offsets.java	Fri Sep 14 00:27:52 2012 -0400
    71.3 @@ -0,0 +1,62 @@
    71.4 +/*
    71.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    71.6 + *
    71.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    71.8 + *
    71.9 + * The contents of this file are subject to the terms of either the GNU
   71.10 + * General Public License Version 2 only ("GPL") or the Common
   71.11 + * Development and Distribution License("CDDL") (collectively, the
   71.12 + * "License"). You may not use this file except in compliance with the
   71.13 + * License. You can obtain a copy of the License at
   71.14 + * http://www.netbeans.org/cddl-gplv2.html
   71.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   71.16 + * specific language governing permissions and limitations under the
   71.17 + * License.  When distributing the software, include this License Header
   71.18 + * Notice in each file and include the License file at
   71.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   71.20 + * particular file as subject to the "Classpath" exception as provided
   71.21 + * by Sun in the GPL Version 2 section of the License file that
   71.22 + * accompanied this code. If applicable, add the following below the
   71.23 + * License Header, with the fields enclosed by brackets [] replaced by
   71.24 + * your own identifying information:
   71.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   71.26 + *
   71.27 + * If you wish your version of this file to be governed by only the CDDL
   71.28 + * or only the GPL Version 2, indicate your decision by adding
   71.29 + * "[Contributor] elects to include this software in this distribution
   71.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   71.31 + * single choice of license, a recipient has the option to distribute
   71.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   71.33 + * to extend the choice of license to its licensees as provided above.
   71.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   71.35 + * Version 2 license, then the option applies only if the new code is
   71.36 + * made subject to such option by the copyright holder.
   71.37 + *
   71.38 + * Contributor(s):
   71.39 + *
   71.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   71.41 + */
   71.42 +
   71.43 +package org.netbeans.modules.licensechanger.spi.wizard.utils;
   71.44 +
   71.45 +/**
   71.46 + *
   71.47 + * @author Tim Boudreau
   71.48 + */
   71.49 +public final class Offsets {
   71.50 +    private final int start;
   71.51 +    private final int end;
   71.52 +
   71.53 +    public Offsets(int start, int end) {
   71.54 +        this.start = start;
   71.55 +        this.end = end;
   71.56 +    }
   71.57 +
   71.58 +    public int getEnd() {
   71.59 +        return end;
   71.60 +    }
   71.61 +
   71.62 +    public int getStart() {
   71.63 +        return start;
   71.64 +    }
   71.65 +}
    72.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    72.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/WizardProperties.java	Fri Sep 14 00:27:52 2012 -0400
    72.3 @@ -0,0 +1,60 @@
    72.4 +/*
    72.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    72.6 + *
    72.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    72.8 + *
    72.9 + * The contents of this file are subject to the terms of either the GNU
   72.10 + * General Public License Version 2 only ("GPL") or the Common
   72.11 + * Development and Distribution License("CDDL") (collectively, the
   72.12 + * "License"). You may not use this file except in compliance with the
   72.13 + * License. You can obtain a copy of the License at
   72.14 + * http://www.netbeans.org/cddl-gplv2.html
   72.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   72.16 + * specific language governing permissions and limitations under the
   72.17 + * License.  When distributing the software, include this License Header
   72.18 + * Notice in each file and include the License file at
   72.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   72.20 + * particular file as subject to the "Classpath" exception as provided
   72.21 + * by Sun in the GPL Version 2 section of the License file that
   72.22 + * accompanied this code. If applicable, add the following below the
   72.23 + * License Header, with the fields enclosed by brackets [] replaced by
   72.24 + * your own identifying information:
   72.25 + * "Portions Copyrighted [year] [name of copyright owner]"
   72.26 + *
   72.27 + * If you wish your version of this file to be governed by only the CDDL
   72.28 + * or only the GPL Version 2, indicate your decision by adding
   72.29 + * "[Contributor] elects to include this software in this distribution
   72.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
   72.31 + * single choice of license, a recipient has the option to distribute
   72.32 + * your version of this file under either the CDDL, the GPL Version 2 or
   72.33 + * to extend the choice of license to its licensees as provided above.
   72.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
   72.35 + * Version 2 license, then the option applies only if the new code is
   72.36 + * made subject to such option by the copyright holder.
   72.37 + *
   72.38 + * Contributor(s):
   72.39 + *
   72.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
   72.41 + */
   72.42 +
   72.43 +package org.netbeans.modules.licensechanger.spi.wizard.utils;
   72.44 +
   72.45 +/**
   72.46 + * Central class for Wizard-related property keys.
   72.47 + * 
   72.48 + * @author Nils Hoffmann
   72.49 + */
   72.50 +public class WizardProperties {
   72.51 +
   72.52 +    public static final String KEY_FILE_HANDLERS = "fileHandlers";
   72.53 +    public static final String KEY_ITEMS = "fileItems";
   72.54 +    public static final String KEY_LICENSE_TEXT = "licenseText";
   72.55 +    public static final String KEY_LICENSE_NAME = "licenseName";
   72.56 +    public static final String KEY_ROOT_FILES = "rootFiles";
   72.57 +    public static final String KEY_FOLDERS = "folders";
   72.58 +    public static final String KEY_UPDATE_DEFAULT_PROJECT_LICENSE = "updateDefaultProjectLicense";
   72.59 +    public static final String VALUE_DEFAULT_LICENSE_TEXT = "No License";
   72.60 +    public static final String PROP_ENDING = "ending";
   72.61 +    public static final String KEY_ENDING = "line_terminator";
   72.62 +    public static final String KEY_PROJECT = "project";
   72.63 +}
    73.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/JavaFileHandlerTest.java	Wed Sep 12 17:19:28 2012 +0200
    73.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    73.3 @@ -1,125 +0,0 @@
    73.4 -/*
    73.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    73.6 - *
    73.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    73.8 - *
    73.9 - * The contents of this file are subject to the terms of either the GNU
   73.10 - * General Public License Version 2 only ("GPL") or the Common
   73.11 - * Development and Distribution License("CDDL") (collectively, the
   73.12 - * "License"). You may not use this file except in compliance with the
   73.13 - * License. You can obtain a copy of the License at
   73.14 - * http://www.netbeans.org/cddl-gplv2.html
   73.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   73.16 - * specific language governing permissions and limitations under the
   73.17 - * License.  When distributing the software, include this License Header
   73.18 - * Notice in each file and include the License file at
   73.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   73.20 - * particular file as subject to the "Classpath" exception as provided
   73.21 - * by Sun in the GPL Version 2 section of the License file that
   73.22 - * accompanied this code. If applicable, add the following below the
   73.23 - * License Header, with the fields enclosed by brackets [] replaced by
   73.24 - * your own identifying information:
   73.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   73.26 - *
   73.27 - * If you wish your version of this file to be governed by only the CDDL
   73.28 - * or only the GPL Version 2, indicate your decision by adding
   73.29 - * "[Contributor] elects to include this software in this distribution
   73.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   73.31 - * single choice of license, a recipient has the option to distribute
   73.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   73.33 - * to extend the choice of license to its licensees as provided above.
   73.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   73.35 - * Version 2 license, then the option applies only if the new code is
   73.36 - * made subject to such option by the copyright holder.
   73.37 - *
   73.38 - * Contributor(s):
   73.39 - *
   73.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   73.41 - */
   73.42 -
   73.43 -package org.netbeans.modules.licensechanger.handlers;
   73.44 -
   73.45 -import java.io.ByteArrayOutputStream;
   73.46 -import java.io.InputStream;
   73.47 -import org.junit.Test;
   73.48 -import org.netbeans.modules.licensechanger.api.FileHandler;
   73.49 -import org.openide.filesystems.FileUtil;
   73.50 -import org.openide.util.Utilities;
   73.51 -import static org.junit.Assert.*;
   73.52 -
   73.53 -/**
   73.54 - *
   73.55 - * @author Tim Boudreau
   73.56 - */
   73.57 -public class JavaFileHandlerTest {
   73.58 -
   73.59 -    @Test
   73.60 -    public void testStuff() throws Exception {
   73.61 -        System.out.println("testStuff");
   73.62 -        String golden = getGolden();
   73.63 -        String license = getLicense();
   73.64 -        for (int i=1; i <= 12; i++) {
   73.65 -            String filename = "java_" + i + ".txt";
   73.66 -            testOneVersion(golden, license, filename);
   73.67 -        }
   73.68 -    }
   73.69 -
   73.70 -    private void testOneVersion(String golden, String license, String filename) throws Exception {
   73.71 -        System.out.println("Test " + filename);
   73.72 -        JavaFileHandler instance = new JavaFileHandler();
   73.73 -        String original = readFile (filename);
   73.74 -        String processed = instance.transform(original, license);
   73.75 -        assertEqualsLineByLine (golden, processed, filename);
   73.76 -    }
   73.77 -
   73.78 -    static void assertEqualsLineByLine (String golden, String processed, String filename) {
   73.79 -        String[] g = FileHandler.splitIntoLines(golden);
   73.80 -        String[] p = FileHandler.splitIntoLines(processed);
   73.81 -        for (int i=0; i < Math.min (g.length, p.length); i++) {
   73.82 -            assertEquals ("Difference in " + filename + " at line " + i + "\n", g[i], p[i]);
   73.83 -        }
   73.84 -    }
   73.85 -
   73.86 -
   73.87 -//    static void assertEqualsLineByLine (String golden, String processed, String filename) {
   73.88 -//        StringTokenizer a = new StringTokenizer (golden, "\n");
   73.89 -//        StringTokenizer b = new StringTokenizer (processed, "\n");
   73.90 -//        int ix = 0;
   73.91 -//        while (a.hasMoreTokens() && b.hasMoreTokens()) {
   73.92 -//            String as = a.nextToken();
   73.93 -//            String bs = b.nextToken();
   73.94 -//            if (!as.equals(bs)) {
   73.95 -//                System.err.println("PROCESSED OUTPUT ");
   73.96 -//            }
   73.97 -//            assertEquals ("Difference in " + filename + " at line " + ix + "\n", as, bs);
   73.98 -//            ix++;
   73.99 -//        }
  73.100 -//
  73.101 -//    }
  73.102 -
  73.103 -    private static String getGolden() throws Exception {
  73.104 -        return readFile ("java_golden.txt");
  73.105 -    }
  73.106 -
  73.107 -    static String getLicense() throws Exception {
  73.108 -        return readFile ("fake_license.txt");
  73.109 -    }
  73.110 -
  73.111 -    static String readFile (String name) throws Exception {
  73.112 -        InputStream in = JavaFileHandlerTest.class.getResourceAsStream(name);
  73.113 -        if (in == null) {
  73.114 -            fail ("No input stream for " + name);
  73.115 -        }
  73.116 -        ByteArrayOutputStream out = new ByteArrayOutputStream();
  73.117 -        try {
  73.118 -            FileUtil.copy (in, out);
  73.119 -        } finally {
  73.120 -            in.close();
  73.121 -            out.close();
  73.122 -        }
  73.123 -        String result = new String (out.toByteArray(), "UTF-8");
  73.124 -        result = Utilities.replaceString(result, "\r\n", "\n");
  73.125 -        return result;
  73.126 -    }
  73.127 - 
  73.128 -}
  73.129 \ No newline at end of file
    74.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/PropertiesFileHandlerTest.java	Wed Sep 12 17:19:28 2012 +0200
    74.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    74.3 @@ -1,78 +0,0 @@
    74.4 -/*
    74.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    74.6 - *
    74.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    74.8 - *
    74.9 - * The contents of this file are subject to the terms of either the GNU
   74.10 - * General Public License Version 2 only ("GPL") or the Common
   74.11 - * Development and Distribution License("CDDL") (collectively, the
   74.12 - * "License"). You may not use this file except in compliance with the
   74.13 - * License. You can obtain a copy of the License at
   74.14 - * http://www.netbeans.org/cddl-gplv2.html
   74.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   74.16 - * specific language governing permissions and limitations under the
   74.17 - * License.  When distributing the software, include this License Header
   74.18 - * Notice in each file and include the License file at
   74.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   74.20 - * particular file as subject to the "Classpath" exception as provided
   74.21 - * by Sun in the GPL Version 2 section of the License file that
   74.22 - * accompanied this code. If applicable, add the following below the
   74.23 - * License Header, with the fields enclosed by brackets [] replaced by
   74.24 - * your own identifying information:
   74.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   74.26 - *
   74.27 - * If you wish your version of this file to be governed by only the CDDL
   74.28 - * or only the GPL Version 2, indicate your decision by adding
   74.29 - * "[Contributor] elects to include this software in this distribution
   74.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   74.31 - * single choice of license, a recipient has the option to distribute
   74.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   74.33 - * to extend the choice of license to its licensees as provided above.
   74.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   74.35 - * Version 2 license, then the option applies only if the new code is
   74.36 - * made subject to such option by the copyright holder.
   74.37 - *
   74.38 - * Contributor(s):
   74.39 - *
   74.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   74.41 - */
   74.42 -
   74.43 -package org.netbeans.modules.licensechanger.handlers;
   74.44 -
   74.45 -import org.junit.Test;
   74.46 -import static org.junit.Assert.*;
   74.47 -
   74.48 -/**
   74.49 - *
   74.50 - * @author Tim Boudreau
   74.51 - */
   74.52 -public class PropertiesFileHandlerTest {
   74.53 -
   74.54 -    @Test
   74.55 -    public void testStuff() throws Exception {
   74.56 -        System.out.println("testStuff");
   74.57 -        String golden = getGolden();
   74.58 -        String license = JavaFileHandlerTest.getLicense();
   74.59 -        for (int i=1; i <= 4; i++) {
   74.60 -            testOneVersion (golden, license, "props_" + i + ".txt");
   74.61 -        }
   74.62 -        assertEquals (0, 0);
   74.63 -    }
   74.64 -
   74.65 -    private void testOneVersion(String golden, String license, String filename) throws Exception {
   74.66 -        System.out.println("Test " + filename);
   74.67 -        PropertiesFileHandler instance = new PropertiesFileHandler();
   74.68 -        String original = JavaFileHandlerTest.readFile (filename);
   74.69 -        String processed = instance.transform(original, license);
   74.70 -//        if (!original.equals(processed)) {
   74.71 -//            System.out.println("************************************");
   74.72 -//            System.out.println(processed);
   74.73 -//            System.out.println("************************************");
   74.74 -//        }
   74.75 -        JavaFileHandlerTest.assertEqualsLineByLine (golden, processed, filename);
   74.76 -    }
   74.77 -
   74.78 -    private static String getGolden() throws Exception {
   74.79 -        return JavaFileHandlerTest.readFile ("props_golden.txt");
   74.80 -    }
   74.81 -}
   74.82 \ No newline at end of file
    75.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/XmlFileHandlerTest.java	Wed Sep 12 17:19:28 2012 +0200
    75.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    75.3 @@ -1,118 +0,0 @@
    75.4 -/*
    75.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    75.6 - *
    75.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    75.8 - *
    75.9 - * The contents of this file are subject to the terms of either the GNU
   75.10 - * General Public License Version 2 only ("GPL") or the Common
   75.11 - * Development and Distribution License("CDDL") (collectively, the
   75.12 - * "License"). You may not use this file except in compliance with the
   75.13 - * License. You can obtain a copy of the License at
   75.14 - * http://www.netbeans.org/cddl-gplv2.html
   75.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   75.16 - * specific language governing permissions and limitations under the
   75.17 - * License.  When distributing the software, include this License Header
   75.18 - * Notice in each file and include the License file at
   75.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   75.20 - * particular file as subject to the "Classpath" exception as provided
   75.21 - * by Sun in the GPL Version 2 section of the License file that
   75.22 - * accompanied this code. If applicable, add the following below the
   75.23 - * License Header, with the fields enclosed by brackets [] replaced by
   75.24 - * your own identifying information:
   75.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   75.26 - *
   75.27 - * If you wish your version of this file to be governed by only the CDDL
   75.28 - * or only the GPL Version 2, indicate your decision by adding
   75.29 - * "[Contributor] elects to include this software in this distribution
   75.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   75.31 - * single choice of license, a recipient has the option to distribute
   75.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   75.33 - * to extend the choice of license to its licensees as provided above.
   75.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   75.35 - * Version 2 license, then the option applies only if the new code is
   75.36 - * made subject to such option by the copyright holder.
   75.37 - *
   75.38 - * Contributor(s):
   75.39 - *
   75.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   75.41 - */
   75.42 -
   75.43 -package org.netbeans.modules.licensechanger.handlers;
   75.44 -
   75.45 -import java.util.StringTokenizer;
   75.46 -import java.util.regex.Matcher;
   75.47 -import org.junit.Test;
   75.48 -import org.netbeans.modules.licensechanger.api.FileHandler;
   75.49 -import static org.junit.Assert.*;
   75.50 -
   75.51 -/**
   75.52 - *
   75.53 - * @author Tim Boudreau
   75.54 - */
   75.55 -public class XmlFileHandlerTest {
   75.56 -    @Test
   75.57 -    public void testDeclarationFinder() throws Exception {
   75.58 -        String xml = getGolden();
   75.59 -        assertDeclarationFound (xml, "xml_golden.txt");
   75.60 -        for (int i=1; i <= 8; i++) {
   75.61 -            String filename = "xml_" + i + ".txt";
   75.62 -            String content = JavaFileHandlerTest.readFile(filename);
   75.63 -            assertDeclarationFound(content, filename);
   75.64 -        }
   75.65 -    }
   75.66 -
   75.67 -    private void assertDeclarationFound (String content, String filename) {
   75.68 -        String[] lines = FileHandler.splitIntoLines(content);
   75.69 -        boolean found = false;
   75.70 -        for (int i = 0; i < lines.length; i++) {
   75.71 -            String line = lines[i];
   75.72 -            Matcher m = XmlFileHandler.xmlDeclaration.matcher(line);
   75.73 -            found = m.find();
   75.74 -            if (found) {
   75.75 -                System.err.println("Found declaration in line " + line + " of " + filename + "\n"
   75.76 -                        + m.group(1));
   75.77 -                break;
   75.78 -            }
   75.79 -        }
   75.80 -        assertTrue ("Did not find xml declaration in " + filename, found);
   75.81 -    }
   75.82 -
   75.83 -    @Test
   75.84 -    public void testStuff() throws Exception {
   75.85 -        System.out.println("testStuff");
   75.86 -        String golden = getGolden();
   75.87 -        String license = JavaFileHandlerTest.getLicense();
   75.88 -        for (int i=1; i <= 8; i++) {
   75.89 -            String filename = "xml_" + i + ".txt";
   75.90 -            testOneVersion(golden, license, filename);
   75.91 -        }
   75.92 -    }
   75.93 -
   75.94 -    private void testOneVersion(String golden, String license, String filename) throws Exception {
   75.95 -        System.out.println("Test " + filename);
   75.96 -        XmlFileHandler instance = new XmlFileHandler();
   75.97 -        String original = JavaFileHandlerTest.readFile (filename);
   75.98 -        String processed = instance.transform(original, license);
   75.99 -        assertEqualsLineByLine (golden, processed, filename);
  75.100 -    }
  75.101 -
  75.102 -    static void assertEqualsLineByLine (String golden, String processed, String filename) {
  75.103 -        StringTokenizer a = new StringTokenizer (golden, "\n");
  75.104 -        StringTokenizer b = new StringTokenizer (processed, "\n");
  75.105 -        int ix = 0;
  75.106 -        while (a.hasMoreTokens() && b.hasMoreTokens()) {
  75.107 -            String as = a.nextToken();
  75.108 -            String bs = b.nextToken();
  75.109 -            if (!as.equals(bs)) {
  75.110 -                System.err.println("PROCESSED OUTPUT ");
  75.111 -            }
  75.112 -            assertEquals ("Difference in " + filename + " at line " + ix + "\n", as, bs);
  75.113 -            ix++;
  75.114 -        }
  75.115 -
  75.116 -    }
  75.117 -
  75.118 -    private static String getGolden() throws Exception {
  75.119 -        return JavaFileHandlerTest.readFile ("xml_golden.txt");
  75.120 -    }
  75.121 -}
  75.122 \ No newline at end of file
    76.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/fake_license.txt	Wed Sep 12 17:19:28 2012 +0200
    76.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    76.3 @@ -1,29 +0,0 @@
    76.4 -Copyright (c) 1892-2193 Centrifugal Bumblepuppy, SRO, Inc., LLC, WTF
    76.5 -All rights reversed.
    76.6 -
    76.7 -Redistribution and use in source, binary or corpuscular forms, with or without
    76.8 -modification, are prohibited under all circumstances unless the following
    76.9 -conditions have been met:
   76.10 -
   76.11 -  1. You have an eyeball growing in the palm of your left hand
   76.12 -
   76.13 -  2. Seven dwarfs really like your golden hair
   76.14 -
   76.15 -  3. The moon has reversed its course a multiple of times divisible by
   76.16 -     the eighteenth prime number in the last year
   76.17 -
   76.18 -THIS MALWARE IS PROVIDED ``AS IS'' AND ANY IMPLICIT OR IMPLIED WARRANTIES
   76.19 -INCLUDING BUT NOT LIMITED TO EXPECTATION OF CONTINUED SURVIVAL ARE
   76.20 -DISCLAIMED.  IN NO EVENT SHALL CENTRIFUGAL BUMBLEPUPPY, SRO, INC., LLC, WTF
   76.21 -OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
   76.22 -ECTOPLASMIC OR GEOTHERMAL DAMAGES, INCLUDING BUT NOT LIMITED TO:
   76.23 -SPONTANEOUS HUMAN COMBUSTION, THRID ARM SYNDROME, BAD BREATH, OVOID HEART;
   76.24 -LOSS OF SOUL, ENUII OR EXISTENTIAL INFLAMMATION; OXYGEN EVASION SYNDROME,
   76.25 -BALL DROP, BECOMING A LAWYER.
   76.26 -
   76.27 -BY USING THIS SOFTWARE YOU AGREE TO THE HARVESTING OF YOUR GENETIC MATERIAL
   76.28 -AND/OR OFFSPRING WITHIN THE FIRST THOUSAND YEARS SUBSEQUENT TO FIRST USE, AND
   76.29 -AGREE TO THE USE OF REANIMATION TECHNOLOGIES IF CENTRIFUGAL BUMBLEPUPPY, SRO,
   76.30 -INC., LLC, WTF DEEMS IT NECESSARY AT THEIR SOLE DISCRETION.
   76.31 -
   76.32 -RUN, RUN NOW, AND RUN VERY FAST.
    77.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_1.txt	Wed Sep 12 17:19:28 2012 +0200
    77.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    77.3 @@ -1,139 +0,0 @@
    77.4 -/*
    77.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    77.6 - *
    77.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    77.8 - *
    77.9 - * The contents of this file are subject to the terms of either the GNU
   77.10 - * General Public License Version 2 only ("GPL") or the Common
   77.11 - * Development and Distribution License("CDDL") (collectively, the
   77.12 - * "License"). You may not use this file except in compliance with the
   77.13 - * License. You can obtain a copy of the License at
   77.14 - * http://www.netbeans.org/cddl-gplv2.html
   77.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   77.16 - * specific language governing permissions and limitations under the
   77.17 - * License.  When distributing the software, include this License Header
   77.18 - * Notice in each file and include the License file at
   77.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   77.20 - * particular file as subject to the "Classpath" exception as provided
   77.21 - * by Sun in the GPL Version 2 section of the License file that
   77.22 - * accompanied this code. If applicable, add the following below the
   77.23 - * License Header, with the fields enclosed by brackets [] replaced by
   77.24 - * your own identifying information:
   77.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   77.26 - *
   77.27 - * If you wish your version of this file to be governed by only the CDDL
   77.28 - * or only the GPL Version 2, indicate your decision by adding
   77.29 - * "[Contributor] elects to include this software in this distribution
   77.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   77.31 - * single choice of license, a recipient has the option to distribute
   77.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   77.33 - * to extend the choice of license to its licensees as provided above.
   77.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   77.35 - * Version 2 license, then the option applies only if the new code is
   77.36 - * made subject to such option by the copyright holder.
   77.37 - *
   77.38 - * Contributor(s):
   77.39 - *
   77.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   77.41 - */
   77.42 -
   77.43 -package org.netbeans.modules.licensechanger;
   77.44 -
   77.45 -import java.util.Collection;
   77.46 -import java.util.HashSet;
   77.47 -import java.util.LinkedList;
   77.48 -import java.util.List;
   77.49 -import java.util.Set;
   77.50 -import javax.swing.Action;
   77.51 -import org.netbeans.modules.licensechanger.api.FileHandler;
   77.52 -import org.openide.filesystems.FileObject;
   77.53 -import org.openide.loaders.DataObject;
   77.54 -import org.openide.loaders.DataObjectNotFoundException;
   77.55 -import org.openide.nodes.ChildFactory;
   77.56 -import org.openide.nodes.FilterNode;
   77.57 -import org.openide.nodes.Node;
   77.58 -import org.openide.util.Exceptions;
   77.59 -import org.openide.util.Lookup;
   77.60 -import org.openide.util.lookup.Lookups;
   77.61 -import org.openide.util.lookup.ProxyLookup;
   77.62 -
   77.63 -/**
   77.64 - *
   77.65 - * @author Tim Boudreau
   77.66 - */
   77.67 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   77.68 -    private final Set<FileObject> folders;
   77.69 -    private final Collection <? extends FileHandler> allHandlers;
   77.70 -    FileChildren (Set<FileObject> folders) {
   77.71 -        this.folders = new HashSet(folders);
   77.72 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   77.73 -    }
   77.74 -
   77.75 -    @Override
   77.76 -    protected boolean createKeys(List<FileObject> toPopulate) {
   77.77 -        toPopulate.addAll (folders);
   77.78 -        return true;
   77.79 -    }
   77.80 -
   77.81 -    @Override
   77.82 -    protected Node[] createNodesForKey(FileObject key) {
   77.83 -        List<Node> result = new LinkedList<Node>();
   77.84 -outer:  for (FileObject fo : key.getChildren()) {
   77.85 -            if (fo.isData()) {
   77.86 -                for (FileHandler h : allHandlers) {
   77.87 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   77.88 -                        try {
   77.89 -                            DataObject dob = DataObject.find(fo);
   77.90 -                            FileItem item = new FileItem (h, fo);
   77.91 -                            result.add (new FN (dob.getNodeDelegate(), item));
   77.92 -                            break outer;
   77.93 -                        } catch (DataObjectNotFoundException ex) {
   77.94 -                            Exceptions.printStackTrace(ex);
   77.95 -                        }
   77.96 -                    }
   77.97 -                }
   77.98 -            }
   77.99 -        }
  77.100 -        return result.toArray(new Node[result.size()]);
  77.101 -    }
  77.102 -
  77.103 -    static final class FileItem {
  77.104 -        FileHandler handler;
  77.105 -        FileObject file;
  77.106 -
  77.107 -        public FileItem(FileHandler handler, FileObject file) {
  77.108 -            this.handler = handler;
  77.109 -            this.file = file;
  77.110 -        }
  77.111 -
  77.112 -        public FileObject getFile() {
  77.113 -            return file;
  77.114 -        }
  77.115 -
  77.116 -        public FileHandler getHandler() {
  77.117 -            return handler;
  77.118 -        }
  77.119 -
  77.120 -    }
  77.121 -
  77.122 -    private static final class FN extends FilterNode {
  77.123 -        FN(Node orig, FileItem item) {
  77.124 -            super (orig, Children.LEAF, new ProxyLookup(
  77.125 -                    Lookups.singleton(item),
  77.126 -                    orig.getLookup()));
  77.127 -            disableDelegation(DELEGATE_GET_ACTIONS);
  77.128 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  77.129 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  77.130 -            disableDelegation(DELEGATE_GET_VALUE);
  77.131 -            disableDelegation(DELEGATE_SET_VALUE);
  77.132 -            disableDelegation(DELEGATE_SET_NAME);
  77.133 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  77.134 -            setDisplayName (item.file.getPath());
  77.135 -        }
  77.136 -
  77.137 -        @Override
  77.138 -        public Action[] getActions(boolean ignored) {
  77.139 -            return new Action[0];
  77.140 -        }
  77.141 -    }
  77.142 -}
    78.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_10.txt	Wed Sep 12 17:19:28 2012 +0200
    78.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    78.3 @@ -1,145 +0,0 @@
    78.4 -/*
    78.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    78.6 - *
    78.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    78.8 - *
    78.9 - * The contents of this file are subject to the terms of either the GNU
   78.10 - * General Public License Version 2 only ("GPL") or the Common
   78.11 - * Development and Distribution License("CDDL") (collectively, the
   78.12 - * "License"). You may not use this file except in compliance with the
   78.13 - * License. You can obtain a copy of the License at
   78.14 - * http://www.netbeans.org/cddl-gplv2.html
   78.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   78.16 - * specific language governing permissions and limitations under the
   78.17 - * License.  When distributing the software, include this License Header
   78.18 - * Notice in each file and include the License file at
   78.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   78.20 - * particular file as subject to the "Classpath" exception as provided
   78.21 - * by Sun in the GPL Version 2 section of the License file that
   78.22 - * accompanied this code. If applicable, add the following below the
   78.23 - * License Header, with the fields enclosed by brackets [] replaced by
   78.24 - * your own identifying information:
   78.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   78.26 - *
   78.27 - * If you wish your version of this file to be governed by only the CDDL
   78.28 - * or only the GPL Version 2, indicate your decision by adding
   78.29 - * "[Contributor] elects to include this software in this distribution
   78.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   78.31 - * single choice of license, a recipient has the option to distribute
   78.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   78.33 - * to extend the choice of license to its licensees as provided above.
   78.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   78.35 - * Version 2 license, then the option applies only if the new code is
   78.36 - * made subject to such option by the copyright holder.
   78.37 - *
   78.38 - * Contributor(s):
   78.39 - *
   78.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   78.41 - */
   78.42 -/* Created on March 14, 2009 
   78.43 - * by some IDE or other
   78.44 - */
   78.45 -
   78.46 -//blah blah blah
   78.47 -//blah blah blah
   78.48 -
   78.49 -package org.netbeans.modules.licensechanger;
   78.50 -
   78.51 -import java.util.Collection;
   78.52 -import java.util.HashSet;
   78.53 -import java.util.LinkedList;
   78.54 -import java.util.List;
   78.55 -import java.util.Set;
   78.56 -import javax.swing.Action;
   78.57 -import org.netbeans.modules.licensechanger.api.FileHandler;
   78.58 -import org.openide.filesystems.FileObject;
   78.59 -import org.openide.loaders.DataObject;
   78.60 -import org.openide.loaders.DataObjectNotFoundException;
   78.61 -import org.openide.nodes.ChildFactory;
   78.62 -import org.openide.nodes.FilterNode;
   78.63 -import org.openide.nodes.Node;
   78.64 -import org.openide.util.Exceptions;
   78.65 -import org.openide.util.Lookup;
   78.66 -import org.openide.util.lookup.Lookups;
   78.67 -import org.openide.util.lookup.ProxyLookup;
   78.68 -
   78.69 -/**
   78.70 - *
   78.71 - * @author Tim Boudreau
   78.72 - */
   78.73 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   78.74 -    private final Set<FileObject> folders;
   78.75 -    private final Collection <? extends FileHandler> allHandlers;
   78.76 -    FileChildren (Set<FileObject> folders) {
   78.77 -        this.folders = new HashSet(folders);
   78.78 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   78.79 -    }
   78.80 -
   78.81 -    @Override
   78.82 -    protected boolean createKeys(List<FileObject> toPopulate) {
   78.83 -        toPopulate.addAll (folders);
   78.84 -        return true;
   78.85 -    }
   78.86 -
   78.87 -    @Override
   78.88 -    protected Node[] createNodesForKey(FileObject key) {
   78.89 -        List<Node> result = new LinkedList<Node>();
   78.90 -outer:  for (FileObject fo : key.getChildren()) {
   78.91 -            if (fo.isData()) {
   78.92 -                for (FileHandler h : allHandlers) {
   78.93 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   78.94 -                        try {
   78.95 -                            DataObject dob = DataObject.find(fo);
   78.96 -                            FileItem item = new FileItem (h, fo);
   78.97 -                            result.add (new FN (dob.getNodeDelegate(), item));
   78.98 -                            break outer;
   78.99 -                        } catch (DataObjectNotFoundException ex) {
  78.100 -                            Exceptions.printStackTrace(ex);
  78.101 -                        }
  78.102 -                    }
  78.103 -                }
  78.104 -            }
  78.105 -        }
  78.106 -        return result.toArray(new Node[result.size()]);
  78.107 -    }
  78.108 -
  78.109 -    static final class FileItem {
  78.110 -        FileHandler handler;
  78.111 -        FileObject file;
  78.112 -
  78.113 -        public FileItem(FileHandler handler, FileObject file) {
  78.114 -            this.handler = handler;
  78.115 -            this.file = file;
  78.116 -        }
  78.117 -
  78.118 -        public FileObject getFile() {
  78.119 -            return file;
  78.120 -        }
  78.121 -
  78.122 -        public FileHandler getHandler() {
  78.123 -            return handler;
  78.124 -        }
  78.125 -
  78.126 -    }
  78.127 -
  78.128 -    private static final class FN extends FilterNode {
  78.129 -        FN(Node orig, FileItem item) {
  78.130 -            super (orig, Children.LEAF, new ProxyLookup(
  78.131 -                    Lookups.singleton(item),
  78.132 -                    orig.getLookup()));
  78.133 -            disableDelegation(DELEGATE_GET_ACTIONS);
  78.134 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  78.135 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  78.136 -            disableDelegation(DELEGATE_GET_VALUE);
  78.137 -            disableDelegation(DELEGATE_SET_VALUE);
  78.138 -            disableDelegation(DELEGATE_SET_NAME);
  78.139 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  78.140 -            setDisplayName (item.file.getPath());
  78.141 -        }
  78.142 -
  78.143 -        @Override
  78.144 -        public Action[] getActions(boolean ignored) {
  78.145 -            return new Action[0];
  78.146 -        }
  78.147 -    }
  78.148 -}
    79.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_11.txt	Wed Sep 12 17:19:28 2012 +0200
    79.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    79.3 @@ -1,149 +0,0 @@
    79.4 -/*
    79.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    79.6 - *
    79.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    79.8 - *
    79.9 - * The contents of this file are subject to the terms of either the GNU
   79.10 - * General Public License Version 2 only ("GPL") or the Common
   79.11 - * Development and Distribution License("CDDL") (collectively, the
   79.12 - * "License"). You may not use this file except in compliance with the
   79.13 - * License. You can obtain a copy of the License at
   79.14 - * http://www.netbeans.org/cddl-gplv2.html
   79.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   79.16 - * specific language governing permissions and limitations under the */
   79.17 -
   79.18 -//BLAH BLAH BLAH
   79.19 -//BLAH BLAH BLAH
   79.20 -
   79.21 -     /* License.  When distributing the software, include this License Header
   79.22 - * Notice in each file and include the License file at
   79.23 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   79.24 - * particular file as subject to the "Classpath" exception as provided
   79.25 - * by Sun in the GPL Version 2 section of the License file that
   79.26 - * accompanied this code. If applicable, add the following below the
   79.27 - * License Header, with the fields enclosed by brackets [] replaced by
   79.28 - * your own identifying information:
   79.29 - * "Portions Copyrighted [year] [name of copyright owner]"
   79.30 - *
   79.31 - * If you wish your version of this file to be governed by only the CDDL
   79.32 - * or only the GPL Version 2, indicate your decision by adding
   79.33 - * "[Contributor] elects to include this software in this distribution
   79.34 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   79.35 - * single choice of license, a recipient has the option to distribute
   79.36 - * your version of this file under either the CDDL, the GPL Version 2 or
   79.37 - * to extend the choice of license to its licensees as provided above.
   79.38 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   79.39 - * Version 2 license, then the option applies only if the new code is
   79.40 - * made subject to such option by the copyright holder.
   79.41 - *
   79.42 - * Contributor(s):
   79.43 - *
   79.44 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   79.45 - */
   79.46 -/* Created on March 14, 2009 
   79.47 - * by some IDE or other
   79.48 - */
   79.49 -
   79.50 -//blah blah blah
   79.51 -//blah blah blah
   79.52 -
   79.53 -package org.netbeans.modules.licensechanger;
   79.54 -
   79.55 -import java.util.Collection;
   79.56 -import java.util.HashSet;
   79.57 -import java.util.LinkedList;
   79.58 -import java.util.List;
   79.59 -import java.util.Set;
   79.60 -import javax.swing.Action;
   79.61 -import org.netbeans.modules.licensechanger.api.FileHandler;
   79.62 -import org.openide.filesystems.FileObject;
   79.63 -import org.openide.loaders.DataObject;
   79.64 -import org.openide.loaders.DataObjectNotFoundException;
   79.65 -import org.openide.nodes.ChildFactory;
   79.66 -import org.openide.nodes.FilterNode;
   79.67 -import org.openide.nodes.Node;
   79.68 -import org.openide.util.Exceptions;
   79.69 -import org.openide.util.Lookup;
   79.70 -import org.openide.util.lookup.Lookups;
   79.71 -import org.openide.util.lookup.ProxyLookup;
   79.72 -
   79.73 -/**
   79.74 - *
   79.75 - * @author Tim Boudreau
   79.76 - */
   79.77 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   79.78 -    private final Set<FileObject> folders;
   79.79 -    private final Collection <? extends FileHandler> allHandlers;
   79.80 -    FileChildren (Set<FileObject> folders) {
   79.81 -        this.folders = new HashSet(folders);
   79.82 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   79.83 -    }
   79.84 -
   79.85 -    @Override
   79.86 -    protected boolean createKeys(List<FileObject> toPopulate) {
   79.87 -        toPopulate.addAll (folders);
   79.88 -        return true;
   79.89 -    }
   79.90 -
   79.91 -    @Override
   79.92 -    protected Node[] createNodesForKey(FileObject key) {
   79.93 -        List<Node> result = new LinkedList<Node>();
   79.94 -outer:  for (FileObject fo : key.getChildren()) {
   79.95 -            if (fo.isData()) {
   79.96 -                for (FileHandler h : allHandlers) {
   79.97 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   79.98 -                        try {
   79.99 -                            DataObject dob = DataObject.find(fo);
  79.100 -                            FileItem item = new FileItem (h, fo);
  79.101 -                            result.add (new FN (dob.getNodeDelegate(), item));
  79.102 -                            break outer;
  79.103 -                        } catch (DataObjectNotFoundException ex) {
  79.104 -                            Exceptions.printStackTrace(ex);
  79.105 -                        }
  79.106 -                    }
  79.107 -                }
  79.108 -            }
  79.109 -        }
  79.110 -        return result.toArray(new Node[result.size()]);
  79.111 -    }
  79.112 -
  79.113 -    static final class FileItem {
  79.114 -        FileHandler handler;
  79.115 -        FileObject file;
  79.116 -
  79.117 -        public FileItem(FileHandler handler, FileObject file) {
  79.118 -            this.handler = handler;
  79.119 -            this.file = file;
  79.120 -        }
  79.121 -
  79.122 -        public FileObject getFile() {
  79.123 -            return file;
  79.124 -        }
  79.125 -
  79.126 -        public FileHandler getHandler() {
  79.127 -            return handler;
  79.128 -        }
  79.129 -
  79.130 -    }
  79.131 -
  79.132 -    private static final class FN extends FilterNode {
  79.133 -        FN(Node orig, FileItem item) {
  79.134 -            super (orig, Children.LEAF, new ProxyLookup(
  79.135 -                    Lookups.singleton(item),
  79.136 -                    orig.getLookup()));
  79.137 -            disableDelegation(DELEGATE_GET_ACTIONS);
  79.138 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  79.139 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  79.140 -            disableDelegation(DELEGATE_GET_VALUE);
  79.141 -            disableDelegation(DELEGATE_SET_VALUE);
  79.142 -            disableDelegation(DELEGATE_SET_NAME);
  79.143 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  79.144 -            setDisplayName (item.file.getPath());
  79.145 -        }
  79.146 -
  79.147 -        @Override
  79.148 -        public Action[] getActions(boolean ignored) {
  79.149 -            return new Action[0];
  79.150 -        }
  79.151 -    }
  79.152 -}
    80.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_12.txt	Wed Sep 12 17:19:28 2012 +0200
    80.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    80.3 @@ -1,148 +0,0 @@
    80.4 -/*
    80.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    80.6 - *
    80.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    80.8 - *
    80.9 - * The contents of this file are subject to the terms of either the GNU
   80.10 - * General Public License Version 2 only ("GPL") or the Common
   80.11 - * Development and Distribution License("CDDL") (collectively, the
   80.12 - * "License"). You may not use this file except in compliance with the
   80.13 - * License. You can obtain a copy of the License at
   80.14 - * http://www.netbeans.org/cddl-gplv2.html
   80.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   80.16 - * specific language governing permissions and limitations under the
   80.17 -*/
   80.18 -//BLAH BLAH BLAH
   80.19 -//BLAH BLAH BLAH
   80.20 -     /* License.  When distributing the software, include this License Header
   80.21 - * Notice in each file and include the License file at
   80.22 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   80.23 - * particular file as subject to the "Classpath" exception as provided
   80.24 - * by Sun in the GPL Version 2 section of the License file that
   80.25 - * accompanied this code. If applicable, add the following below the
   80.26 - * License Header, with the fields enclosed by brackets [] replaced by
   80.27 - * your own identifying information:
   80.28 - * "Portions Copyrighted [year] [name of copyright owner]"
   80.29 - *
   80.30 - * If you wish your version of this file to be governed by only the CDDL
   80.31 - * or only the GPL Version 2, indicate your decision by adding
   80.32 - * "[Contributor] elects to include this software in this distribution
   80.33 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   80.34 - * single choice of license, a recipient has the option to distribute
   80.35 - * your version of this file under either the CDDL, the GPL Version 2 or
   80.36 - * to extend the choice of license to its licensees as provided above.
   80.37 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   80.38 - * Version 2 license, then the option applies only if the new code is
   80.39 - * made subject to such option by the copyright holder.
   80.40 - *
   80.41 - * Contributor(s):
   80.42 - *
   80.43 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   80.44 - */
   80.45 -/* Created on March 14, 2009 
   80.46 - * by some IDE or other
   80.47 - */
   80.48 -
   80.49 -//blah blah blah
   80.50 -//blah blah blah
   80.51 -
   80.52 -package org.netbeans.modules.licensechanger;
   80.53 -
   80.54 -import java.util.Collection;
   80.55 -import java.util.HashSet;
   80.56 -import java.util.LinkedList;
   80.57 -import java.util.List;
   80.58 -import java.util.Set;
   80.59 -import javax.swing.Action;
   80.60 -import org.netbeans.modules.licensechanger.api.FileHandler;
   80.61 -import org.openide.filesystems.FileObject;
   80.62 -import org.openide.loaders.DataObject;
   80.63 -import org.openide.loaders.DataObjectNotFoundException;
   80.64 -import org.openide.nodes.ChildFactory;
   80.65 -import org.openide.nodes.FilterNode;
   80.66 -import org.openide.nodes.Node;
   80.67 -import org.openide.util.Exceptions;
   80.68 -import org.openide.util.Lookup;
   80.69 -import org.openide.util.lookup.Lookups;
   80.70 -import org.openide.util.lookup.ProxyLookup;
   80.71 -
   80.72 -/**
   80.73 - *
   80.74 - * @author Tim Boudreau
   80.75 - */
   80.76 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   80.77 -    private final Set<FileObject> folders;
   80.78 -    private final Collection <? extends FileHandler> allHandlers;
   80.79 -    FileChildren (Set<FileObject> folders) {
   80.80 -        this.folders = new HashSet(folders);
   80.81 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   80.82 -    }
   80.83 -
   80.84 -    @Override
   80.85 -    protected boolean createKeys(List<FileObject> toPopulate) {
   80.86 -        toPopulate.addAll (folders);
   80.87 -        return true;
   80.88 -    }
   80.89 -
   80.90 -    @Override
   80.91 -    protected Node[] createNodesForKey(FileObject key) {
   80.92 -        List<Node> result = new LinkedList<Node>();
   80.93 -outer:  for (FileObject fo : key.getChildren()) {
   80.94 -            if (fo.isData()) {
   80.95 -                for (FileHandler h : allHandlers) {
   80.96 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   80.97 -                        try {
   80.98 -                            DataObject dob = DataObject.find(fo);
   80.99 -                            FileItem item = new FileItem (h, fo);
  80.100 -                            result.add (new FN (dob.getNodeDelegate(), item));
  80.101 -                            break outer;
  80.102 -                        } catch (DataObjectNotFoundException ex) {
  80.103 -                            Exceptions.printStackTrace(ex);
  80.104 -                        }
  80.105 -                    }
  80.106 -                }
  80.107 -            }
  80.108 -        }
  80.109 -        return result.toArray(new Node[result.size()]);
  80.110 -    }
  80.111 -
  80.112 -    static final class FileItem {
  80.113 -        FileHandler handler;
  80.114 -        FileObject file;
  80.115 -
  80.116 -        public FileItem(FileHandler handler, FileObject file) {
  80.117 -            this.handler = handler;
  80.118 -            this.file = file;
  80.119 -        }
  80.120 -
  80.121 -        public FileObject getFile() {
  80.122 -            return file;
  80.123 -        }
  80.124 -
  80.125 -        public FileHandler getHandler() {
  80.126 -            return handler;
  80.127 -        }
  80.128 -
  80.129 -    }
  80.130 -
  80.131 -    private static final class FN extends FilterNode {
  80.132 -        FN(Node orig, FileItem item) {
  80.133 -            super (orig, Children.LEAF, new ProxyLookup(
  80.134 -                    Lookups.singleton(item),
  80.135 -                    orig.getLookup()));
  80.136 -            disableDelegation(DELEGATE_GET_ACTIONS);
  80.137 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  80.138 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  80.139 -            disableDelegation(DELEGATE_GET_VALUE);
  80.140 -            disableDelegation(DELEGATE_SET_VALUE);
  80.141 -            disableDelegation(DELEGATE_SET_NAME);
  80.142 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  80.143 -            setDisplayName (item.file.getPath());
  80.144 -        }
  80.145 -
  80.146 -        @Override
  80.147 -        public Action[] getActions(boolean ignored) {
  80.148 -            return new Action[0];
  80.149 -        }
  80.150 -    }
  80.151 -}
    81.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_2.txt	Wed Sep 12 17:19:28 2012 +0200
    81.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    81.3 @@ -1,139 +0,0 @@
    81.4 -
    81.5 -
    81.6 -/*
    81.7 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    81.8 - *
    81.9 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   81.10 - *
   81.11 - * The contents of this file are subject to the terms of either the GNU
   81.12 - * General Public License Version 2 only ("GPL") or the Common
   81.13 - * Development and Distribution License("CDDL") (collectively, the
   81.14 - * "License"). You may not use this file except in compliance with the
   81.15 - * License. You can obtain a copy of the License at
   81.16 - * http://www.netbeans.org/cddl-gplv2.html
   81.17 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   81.18 - * specific language governing permissions and limitations under the
   81.19 - * License.  When distributing the software, include this License Header
   81.20 - * Notice in each file and include the License file at
   81.21 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   81.22 - * particular file as subject to the "Classpath" exception as provided
   81.23 - * by Sun in the GPL Version 2 section of the License file that
   81.24 - * accompanied this code. If applicable, add the following below the
   81.25 - * License Header, with the fields enclosed by brackets [] replaced by
   81.26 - * your own identifying information:
   81.27 - * "Portions Copyrighted [year] [name of copyright owner]"
   81.28 - *
   81.29 - * If you wish your version of this file to be governed by only the CDDL
   81.30 - * or only the GPL Version 2, indicate your decision by adding
   81.31 - * "[Contributor] elects to include this software in this distribution
   81.32 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   81.33 - * single choice of license, a recipient has the option to distribute
   81.34 - * your version of this file under either the CDDL, the GPL Version 2 or
   81.35 - * to extend the choice of license to its licensees as provided above.
   81.36 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   81.37 - * Version 2 license, then the option applies only if the new code is
   81.38 - * made subject to such option by the copyright holder.
   81.39 - *
   81.40 - * Contributor(s):
   81.41 - *
   81.42 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   81.43 - */package org.netbeans.modules.licensechanger;
   81.44 -
   81.45 -import java.util.Collection;
   81.46 -import java.util.HashSet;
   81.47 -import java.util.LinkedList;
   81.48 -import java.util.List;
   81.49 -import java.util.Set;
   81.50 -import javax.swing.Action;
   81.51 -import org.netbeans.modules.licensechanger.api.FileHandler;
   81.52 -import org.openide.filesystems.FileObject;
   81.53 -import org.openide.loaders.DataObject;
   81.54 -import org.openide.loaders.DataObjectNotFoundException;
   81.55 -import org.openide.nodes.ChildFactory;
   81.56 -import org.openide.nodes.FilterNode;
   81.57 -import org.openide.nodes.Node;
   81.58 -import org.openide.util.Exceptions;
   81.59 -import org.openide.util.Lookup;
   81.60 -import org.openide.util.lookup.Lookups;
   81.61 -import org.openide.util.lookup.ProxyLookup;
   81.62 -
   81.63 -/**
   81.64 - *
   81.65 - * @author Tim Boudreau
   81.66 - */
   81.67 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   81.68 -    private final Set<FileObject> folders;
   81.69 -    private final Collection <? extends FileHandler> allHandlers;
   81.70 -    FileChildren (Set<FileObject> folders) {
   81.71 -        this.folders = new HashSet(folders);
   81.72 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   81.73 -    }
   81.74 -
   81.75 -    @Override
   81.76 -    protected boolean createKeys(List<FileObject> toPopulate) {
   81.77 -        toPopulate.addAll (folders);
   81.78 -        return true;
   81.79 -    }
   81.80 -
   81.81 -    @Override
   81.82 -    protected Node[] createNodesForKey(FileObject key) {
   81.83 -        List<Node> result = new LinkedList<Node>();
   81.84 -outer:  for (FileObject fo : key.getChildren()) {
   81.85 -            if (fo.isData()) {
   81.86 -                for (FileHandler h : allHandlers) {
   81.87 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   81.88 -                        try {
   81.89 -                            DataObject dob = DataObject.find(fo);
   81.90 -                            FileItem item = new FileItem (h, fo);
   81.91 -                            result.add (new FN (dob.getNodeDelegate(), item));
   81.92 -                            break outer;
   81.93 -                        } catch (DataObjectNotFoundException ex) {
   81.94 -                            Exceptions.printStackTrace(ex);
   81.95 -                        }
   81.96 -                    }
   81.97 -                }
   81.98 -            }
   81.99 -        }
  81.100 -        return result.toArray(new Node[result.size()]);
  81.101 -    }
  81.102 -
  81.103 -    static final class FileItem {
  81.104 -        FileHandler handler;
  81.105 -        FileObject file;
  81.106 -
  81.107 -        public FileItem(FileHandler handler, FileObject file) {
  81.108 -            this.handler = handler;
  81.109 -            this.file = file;
  81.110 -        }
  81.111 -
  81.112 -        public FileObject getFile() {
  81.113 -            return file;
  81.114 -        }
  81.115 -
  81.116 -        public FileHandler getHandler() {
  81.117 -            return handler;
  81.118 -        }
  81.119 -
  81.120 -    }
  81.121 -
  81.122 -    private static final class FN extends FilterNode {
  81.123 -        FN(Node orig, FileItem item) {
  81.124 -            super (orig, Children.LEAF, new ProxyLookup(
  81.125 -                    Lookups.singleton(item),
  81.126 -                    orig.getLookup()));
  81.127 -            disableDelegation(DELEGATE_GET_ACTIONS);
  81.128 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  81.129 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  81.130 -            disableDelegation(DELEGATE_GET_VALUE);
  81.131 -            disableDelegation(DELEGATE_SET_VALUE);
  81.132 -            disableDelegation(DELEGATE_SET_NAME);
  81.133 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  81.134 -            setDisplayName (item.file.getPath());
  81.135 -        }
  81.136 -
  81.137 -        @Override
  81.138 -        public Action[] getActions(boolean ignored) {
  81.139 -            return new Action[0];
  81.140 -        }
  81.141 -    }
  81.142 -}
    82.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_3.txt	Wed Sep 12 17:19:28 2012 +0200
    82.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    82.3 @@ -1,137 +0,0 @@
    82.4 -/*
    82.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    82.6 - *
    82.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    82.8 - *
    82.9 - * The contents of this file are subject to the terms of either the GNU
   82.10 - * General Public License Version 2 only ("GPL") or the Common
   82.11 - * Development and Distribution License("CDDL") (collectively, the
   82.12 - * "License"). You may not use this file except in compliance with the
   82.13 - * License. You can obtain a copy of the License at
   82.14 - * http://www.netbeans.org/cddl-gplv2.html
   82.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   82.16 - * specific language governing permissions and limitations under the
   82.17 - * License.  When distributing the software, include this License Header
   82.18 - * Notice in each file and include the License file at
   82.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   82.20 - * particular file as subject to the "Classpath" exception as provided
   82.21 - * by Sun in the GPL Version 2 section of the License file that
   82.22 - * accompanied this code. If applicable, add the following below the
   82.23 - * License Header, with the fields enclosed by brackets [] replaced by
   82.24 - * your own identifying information:
   82.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   82.26 - *
   82.27 - * If you wish your version of this file to be governed by only the CDDL
   82.28 - * or only the GPL Version 2, indicate your decision by adding
   82.29 - * "[Contributor] elects to include this software in this distribution
   82.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   82.31 - * single choice of license, a recipient has the option to distribute
   82.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   82.33 - * to extend the choice of license to its licensees as provided above.
   82.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   82.35 - * Version 2 license, then the option applies only if the new code is
   82.36 - * made subject to such option by the copyright holder.
   82.37 - *
   82.38 - * Contributor(s):
   82.39 - *
   82.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   82.41 - */package org.netbeans.modules.licensechanger;
   82.42 -
   82.43 -import java.util.Collection;
   82.44 -import java.util.HashSet;
   82.45 -import java.util.LinkedList;
   82.46 -import java.util.List;
   82.47 -import java.util.Set;
   82.48 -import javax.swing.Action;
   82.49 -import org.netbeans.modules.licensechanger.api.FileHandler;
   82.50 -import org.openide.filesystems.FileObject;
   82.51 -import org.openide.loaders.DataObject;
   82.52 -import org.openide.loaders.DataObjectNotFoundException;
   82.53 -import org.openide.nodes.ChildFactory;
   82.54 -import org.openide.nodes.FilterNode;
   82.55 -import org.openide.nodes.Node;
   82.56 -import org.openide.util.Exceptions;
   82.57 -import org.openide.util.Lookup;
   82.58 -import org.openide.util.lookup.Lookups;
   82.59 -import org.openide.util.lookup.ProxyLookup;
   82.60 -
   82.61 -/**
   82.62 - *
   82.63 - * @author Tim Boudreau
   82.64 - */
   82.65 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   82.66 -    private final Set<FileObject> folders;
   82.67 -    private final Collection <? extends FileHandler> allHandlers;
   82.68 -    FileChildren (Set<FileObject> folders) {
   82.69 -        this.folders = new HashSet(folders);
   82.70 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   82.71 -    }
   82.72 -
   82.73 -    @Override
   82.74 -    protected boolean createKeys(List<FileObject> toPopulate) {
   82.75 -        toPopulate.addAll (folders);
   82.76 -        return true;
   82.77 -    }
   82.78 -
   82.79 -    @Override
   82.80 -    protected Node[] createNodesForKey(FileObject key) {
   82.81 -        List<Node> result = new LinkedList<Node>();
   82.82 -outer:  for (FileObject fo : key.getChildren()) {
   82.83 -            if (fo.isData()) {
   82.84 -                for (FileHandler h : allHandlers) {
   82.85 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   82.86 -                        try {
   82.87 -                            DataObject dob = DataObject.find(fo);
   82.88 -                            FileItem item = new FileItem (h, fo);
   82.89 -                            result.add (new FN (dob.getNodeDelegate(), item));
   82.90 -                            break outer;
   82.91 -                        } catch (DataObjectNotFoundException ex) {
   82.92 -                            Exceptions.printStackTrace(ex);
   82.93 -                        }
   82.94 -                    }
   82.95 -                }
   82.96 -            }
   82.97 -        }
   82.98 -        return result.toArray(new Node[result.size()]);
   82.99 -    }
  82.100 -
  82.101 -    static final class FileItem {
  82.102 -        FileHandler handler;
  82.103 -        FileObject file;
  82.104 -
  82.105 -        public FileItem(FileHandler handler, FileObject file) {
  82.106 -            this.handler = handler;
  82.107 -            this.file = file;
  82.108 -        }
  82.109 -
  82.110 -        public FileObject getFile() {
  82.111 -            return file;
  82.112 -        }
  82.113 -
  82.114 -        public FileHandler getHandler() {
  82.115 -            return handler;
  82.116 -        }
  82.117 -
  82.118 -    }
  82.119 -
  82.120 -    private static final class FN extends FilterNode {
  82.121 -        FN(Node orig, FileItem item) {
  82.122 -            super (orig, Children.LEAF, new ProxyLookup(
  82.123 -                    Lookups.singleton(item),
  82.124 -                    orig.getLookup()));
  82.125 -            disableDelegation(DELEGATE_GET_ACTIONS);
  82.126 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  82.127 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  82.128 -            disableDelegation(DELEGATE_GET_VALUE);
  82.129 -            disableDelegation(DELEGATE_SET_VALUE);
  82.130 -            disableDelegation(DELEGATE_SET_NAME);
  82.131 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  82.132 -            setDisplayName (item.file.getPath());
  82.133 -        }
  82.134 -
  82.135 -        @Override
  82.136 -        public Action[] getActions(boolean ignored) {
  82.137 -            return new Action[0];
  82.138 -        }
  82.139 -    }
  82.140 -}
    83.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_4.txt	Wed Sep 12 17:19:28 2012 +0200
    83.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    83.3 @@ -1,140 +0,0 @@
    83.4 -
    83.5 -    //Hello world
    83.6 -
    83.7 -/*
    83.8 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    83.9 - *
   83.10 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   83.11 - *
   83.12 - * The contents of this file are subject to the terms of either the GNU
   83.13 - * General Public License Version 2 only ("GPL") or the Common
   83.14 - * Development and Distribution License("CDDL") (collectively, the
   83.15 - * "License"). You may not use this file except in compliance with the
   83.16 - * License. You can obtain a copy of the License at
   83.17 - * http://www.netbeans.org/cddl-gplv2.html
   83.18 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   83.19 - * specific language governing permissions and limitations under the
   83.20 - * License.  When distributing the software, include this License Header
   83.21 - * Notice in each file and include the License file at
   83.22 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   83.23 - * particular file as subject to the "Classpath" exception as provided
   83.24 - * by Sun in the GPL Version 2 section of the License file that
   83.25 - * accompanied this code. If applicable, add the following below the
   83.26 - * License Header, with the fields enclosed by brackets [] replaced by
   83.27 - * your own identifying information:
   83.28 - * "Portions Copyrighted [year] [name of copyright owner]"
   83.29 - *
   83.30 - * If you wish your version of this file to be governed by only the CDDL
   83.31 - * or only the GPL Version 2, indicate your decision by adding
   83.32 - * "[Contributor] elects to include this software in this distribution
   83.33 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   83.34 - * single choice of license, a recipient has the option to distribute
   83.35 - * your version of this file under either the CDDL, the GPL Version 2 or
   83.36 - * to extend the choice of license to its licensees as provided above.
   83.37 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   83.38 - * Version 2 license, then the option applies only if the new code is
   83.39 - * made subject to such option by the copyright holder.
   83.40 - *
   83.41 - * Contributor(s):
   83.42 - *
   83.43 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   83.44 - */package org.netbeans.modules.licensechanger;
   83.45 -
   83.46 -import java.util.Collection;
   83.47 -import java.util.HashSet;
   83.48 -import java.util.LinkedList;
   83.49 -import java.util.List;
   83.50 -import java.util.Set;
   83.51 -import javax.swing.Action;
   83.52 -import org.netbeans.modules.licensechanger.api.FileHandler;
   83.53 -import org.openide.filesystems.FileObject;
   83.54 -import org.openide.loaders.DataObject;
   83.55 -import org.openide.loaders.DataObjectNotFoundException;
   83.56 -import org.openide.nodes.ChildFactory;
   83.57 -import org.openide.nodes.FilterNode;
   83.58 -import org.openide.nodes.Node;
   83.59 -import org.openide.util.Exceptions;
   83.60 -import org.openide.util.Lookup;
   83.61 -import org.openide.util.lookup.Lookups;
   83.62 -import org.openide.util.lookup.ProxyLookup;
   83.63 -
   83.64 -/**
   83.65 - *
   83.66 - * @author Tim Boudreau
   83.67 - */
   83.68 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   83.69 -    private final Set<FileObject> folders;
   83.70 -    private final Collection <? extends FileHandler> allHandlers;
   83.71 -    FileChildren (Set<FileObject> folders) {
   83.72 -        this.folders = new HashSet(folders);
   83.73 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   83.74 -    }
   83.75 -
   83.76 -    @Override
   83.77 -    protected boolean createKeys(List<FileObject> toPopulate) {
   83.78 -        toPopulate.addAll (folders);
   83.79 -        return true;
   83.80 -    }
   83.81 -
   83.82 -    @Override
   83.83 -    protected Node[] createNodesForKey(FileObject key) {
   83.84 -        List<Node> result = new LinkedList<Node>();
   83.85 -outer:  for (FileObject fo : key.getChildren()) {
   83.86 -            if (fo.isData()) {
   83.87 -                for (FileHandler h : allHandlers) {
   83.88 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   83.89 -                        try {
   83.90 -                            DataObject dob = DataObject.find(fo);
   83.91 -                            FileItem item = new FileItem (h, fo);
   83.92 -                            result.add (new FN (dob.getNodeDelegate(), item));
   83.93 -                            break outer;
   83.94 -                        } catch (DataObjectNotFoundException ex) {
   83.95 -                            Exceptions.printStackTrace(ex);
   83.96 -                        }
   83.97 -                    }
   83.98 -                }
   83.99 -            }
  83.100 -        }
  83.101 -        return result.toArray(new Node[result.size()]);
  83.102 -    }
  83.103 -
  83.104 -    static final class FileItem {
  83.105 -        FileHandler handler;
  83.106 -        FileObject file;
  83.107 -
  83.108 -        public FileItem(FileHandler handler, FileObject file) {
  83.109 -            this.handler = handler;
  83.110 -            this.file = file;
  83.111 -        }
  83.112 -
  83.113 -        public FileObject getFile() {
  83.114 -            return file;
  83.115 -        }
  83.116 -
  83.117 -        public FileHandler getHandler() {
  83.118 -            return handler;
  83.119 -        }
  83.120 -
  83.121 -    }
  83.122 -
  83.123 -    private static final class FN extends FilterNode {
  83.124 -        FN(Node orig, FileItem item) {
  83.125 -            super (orig, Children.LEAF, new ProxyLookup(
  83.126 -                    Lookups.singleton(item),
  83.127 -                    orig.getLookup()));
  83.128 -            disableDelegation(DELEGATE_GET_ACTIONS);
  83.129 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  83.130 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  83.131 -            disableDelegation(DELEGATE_GET_VALUE);
  83.132 -            disableDelegation(DELEGATE_SET_VALUE);
  83.133 -            disableDelegation(DELEGATE_SET_NAME);
  83.134 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  83.135 -            setDisplayName (item.file.getPath());
  83.136 -        }
  83.137 -
  83.138 -        @Override
  83.139 -        public Action[] getActions(boolean ignored) {
  83.140 -            return new Action[0];
  83.141 -        }
  83.142 -    }
  83.143 -}
    84.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_5.txt	Wed Sep 12 17:19:28 2012 +0200
    84.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    84.3 @@ -1,103 +0,0 @@
    84.4 -//This is another kind of license comment
    84.5 -//We should make sure it catches this too
    84.6 -//We really want to get rid of all stuff before the package statement
    84.7 -package org.netbeans.modules.licensechanger;
    84.8 -
    84.9 -import java.util.Collection;
   84.10 -import java.util.HashSet;
   84.11 -import java.util.LinkedList;
   84.12 -import java.util.List;
   84.13 -import java.util.Set;
   84.14 -import javax.swing.Action;
   84.15 -import org.netbeans.modules.licensechanger.api.FileHandler;
   84.16 -import org.openide.filesystems.FileObject;
   84.17 -import org.openide.loaders.DataObject;
   84.18 -import org.openide.loaders.DataObjectNotFoundException;
   84.19 -import org.openide.nodes.ChildFactory;
   84.20 -import org.openide.nodes.FilterNode;
   84.21 -import org.openide.nodes.Node;
   84.22 -import org.openide.util.Exceptions;
   84.23 -import org.openide.util.Lookup;
   84.24 -import org.openide.util.lookup.Lookups;
   84.25 -import org.openide.util.lookup.ProxyLookup;
   84.26 -
   84.27 -/**
   84.28 - *
   84.29 - * @author Tim Boudreau
   84.30 - */
   84.31 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   84.32 -    private final Set<FileObject> folders;
   84.33 -    private final Collection <? extends FileHandler> allHandlers;
   84.34 -    FileChildren (Set<FileObject> folders) {
   84.35 -        this.folders = new HashSet(folders);
   84.36 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   84.37 -    }
   84.38 -
   84.39 -    @Override
   84.40 -    protected boolean createKeys(List<FileObject> toPopulate) {
   84.41 -        toPopulate.addAll (folders);
   84.42 -        return true;
   84.43 -    }
   84.44 -
   84.45 -    @Override
   84.46 -    protected Node[] createNodesForKey(FileObject key) {
   84.47 -        List<Node> result = new LinkedList<Node>();
   84.48 -outer:  for (FileObject fo : key.getChildren()) {
   84.49 -            if (fo.isData()) {
   84.50 -                for (FileHandler h : allHandlers) {
   84.51 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   84.52 -                        try {
   84.53 -                            DataObject dob = DataObject.find(fo);
   84.54 -                            FileItem item = new FileItem (h, fo);
   84.55 -                            result.add (new FN (dob.getNodeDelegate(), item));
   84.56 -                            break outer;
   84.57 -                        } catch (DataObjectNotFoundException ex) {
   84.58 -                            Exceptions.printStackTrace(ex);
   84.59 -                        }
   84.60 -                    }
   84.61 -                }
   84.62 -            }
   84.63 -        }
   84.64 -        return result.toArray(new Node[result.size()]);
   84.65 -    }
   84.66 -
   84.67 -    static final class FileItem {
   84.68 -        FileHandler handler;
   84.69 -        FileObject file;
   84.70 -
   84.71 -        public FileItem(FileHandler handler, FileObject file) {
   84.72 -            this.handler = handler;
   84.73 -            this.file = file;
   84.74 -        }
   84.75 -
   84.76 -        public FileObject getFile() {
   84.77 -            return file;
   84.78 -        }
   84.79 -
   84.80 -        public FileHandler getHandler() {
   84.81 -            return handler;
   84.82 -        }
   84.83 -
   84.84 -    }
   84.85 -
   84.86 -    private static final class FN extends FilterNode {
   84.87 -        FN(Node orig, FileItem item) {
   84.88 -            super (orig, Children.LEAF, new ProxyLookup(
   84.89 -                    Lookups.singleton(item),
   84.90 -                    orig.getLookup()));
   84.91 -            disableDelegation(DELEGATE_GET_ACTIONS);
   84.92 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
   84.93 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
   84.94 -            disableDelegation(DELEGATE_GET_VALUE);
   84.95 -            disableDelegation(DELEGATE_SET_VALUE);
   84.96 -            disableDelegation(DELEGATE_SET_NAME);
   84.97 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
   84.98 -            setDisplayName (item.file.getPath());
   84.99 -        }
  84.100 -
  84.101 -        @Override
  84.102 -        public Action[] getActions(boolean ignored) {
  84.103 -            return new Action[0];
  84.104 -        }
  84.105 -    }
  84.106 -}
    85.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_6.txt	Wed Sep 12 17:19:28 2012 +0200
    85.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    85.3 @@ -1,100 +0,0 @@
    85.4 -package org.netbeans.modules.licensechanger;
    85.5 -
    85.6 -import java.util.Collection;
    85.7 -import java.util.HashSet;
    85.8 -import java.util.LinkedList;
    85.9 -import java.util.List;
   85.10 -import java.util.Set;
   85.11 -import javax.swing.Action;
   85.12 -import org.netbeans.modules.licensechanger.api.FileHandler;
   85.13 -import org.openide.filesystems.FileObject;
   85.14 -import org.openide.loaders.DataObject;
   85.15 -import org.openide.loaders.DataObjectNotFoundException;
   85.16 -import org.openide.nodes.ChildFactory;
   85.17 -import org.openide.nodes.FilterNode;
   85.18 -import org.openide.nodes.Node;
   85.19 -import org.openide.util.Exceptions;
   85.20 -import org.openide.util.Lookup;
   85.21 -import org.openide.util.lookup.Lookups;
   85.22 -import org.openide.util.lookup.ProxyLookup;
   85.23 -
   85.24 -/**
   85.25 - *
   85.26 - * @author Tim Boudreau
   85.27 - */
   85.28 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   85.29 -    private final Set<FileObject> folders;
   85.30 -    private final Collection <? extends FileHandler> allHandlers;
   85.31 -    FileChildren (Set<FileObject> folders) {
   85.32 -        this.folders = new HashSet(folders);
   85.33 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   85.34 -    }
   85.35 -
   85.36 -    @Override
   85.37 -    protected boolean createKeys(List<FileObject> toPopulate) {
   85.38 -        toPopulate.addAll (folders);
   85.39 -        return true;
   85.40 -    }
   85.41 -
   85.42 -    @Override
   85.43 -    protected Node[] createNodesForKey(FileObject key) {
   85.44 -        List<Node> result = new LinkedList<Node>();
   85.45 -outer:  for (FileObject fo : key.getChildren()) {
   85.46 -            if (fo.isData()) {
   85.47 -                for (FileHandler h : allHandlers) {
   85.48 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   85.49 -                        try {
   85.50 -                            DataObject dob = DataObject.find(fo);
   85.51 -                            FileItem item = new FileItem (h, fo);
   85.52 -                            result.add (new FN (dob.getNodeDelegate(), item));
   85.53 -                            break outer;
   85.54 -                        } catch (DataObjectNotFoundException ex) {
   85.55 -                            Exceptions.printStackTrace(ex);
   85.56 -                        }
   85.57 -                    }
   85.58 -                }
   85.59 -            }
   85.60 -        }
   85.61 -        return result.toArray(new Node[result.size()]);
   85.62 -    }
   85.63 -
   85.64 -    static final class FileItem {
   85.65 -        FileHandler handler;
   85.66 -        FileObject file;
   85.67 -
   85.68 -        public FileItem(FileHandler handler, FileObject file) {
   85.69 -            this.handler = handler;
   85.70 -            this.file = file;
   85.71 -        }
   85.72 -
   85.73 -        public FileObject getFile() {
   85.74 -            return file;
   85.75 -        }
   85.76 -
   85.77 -        public FileHandler getHandler() {
   85.78 -            return handler;
   85.79 -        }
   85.80 -
   85.81 -    }
   85.82 -
   85.83 -    private static final class FN extends FilterNode {
   85.84 -        FN(Node orig, FileItem item) {
   85.85 -            super (orig, Children.LEAF, new ProxyLookup(
   85.86 -                    Lookups.singleton(item),
   85.87 -                    orig.getLookup()));
   85.88 -            disableDelegation(DELEGATE_GET_ACTIONS);
   85.89 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
   85.90 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
   85.91 -            disableDelegation(DELEGATE_GET_VALUE);
   85.92 -            disableDelegation(DELEGATE_SET_VALUE);
   85.93 -            disableDelegation(DELEGATE_SET_NAME);
   85.94 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
   85.95 -            setDisplayName (item.file.getPath());
   85.96 -        }
   85.97 -
   85.98 -        @Override
   85.99 -        public Action[] getActions(boolean ignored) {
  85.100 -            return new Action[0];
  85.101 -        }
  85.102 -    }
  85.103 -}
    86.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_7.txt	Wed Sep 12 17:19:28 2012 +0200
    86.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    86.3 @@ -1,140 +0,0 @@
    86.4 -/*
    86.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    86.6 - *
    86.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    86.8 - *
    86.9 - * The contents of this file are subject to the terms of either the GNU
   86.10 - * General Public License Version 2 only ("GPL") or the Common
   86.11 - * Development and Distribution License("CDDL") (collectively, the
   86.12 - * "License"). You may not use this file except in compliance with the
   86.13 - * License. You can obtain a copy of the License at
   86.14 - * http://www.netbeans.org/cddl-gplv2.html
   86.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   86.16 - * specific language governing permissions and limitations under the
   86.17 - * License.  When distributing the software, include this License Header
   86.18 - * Notice in each file and include the License file at
   86.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   86.20 - * particular file as subject to the "Classpath" exception as provided
   86.21 - * by Sun in the GPL Version 2 section of the License file that
   86.22 - * accompanied this code. If applicable, add the following below the
   86.23 - * License Header, with the fields enclosed by brackets [] replaced by
   86.24 - * your own identifying information:
   86.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   86.26 - *
   86.27 - * If you wish your version of this file to be governed by only the CDDL
   86.28 - * or only the GPL Version 2, indicate your decision by adding
   86.29 - * "[Contributor] elects to include this software in this distribution
   86.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   86.31 - * single choice of license, a recipient has the option to distribute
   86.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   86.33 - * to extend the choice of license to its licensees as provided above.
   86.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   86.35 - * Version 2 license, then the option applies only if the new code is
   86.36 - * made subject to such option by the copyright holder.
   86.37 - *
   86.38 - * Contributor(s):
   86.39 - *
   86.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   86.41 - */
   86.42 -/* Created on March 14, 2009 */
   86.43 -
   86.44 -package org.netbeans.modules.licensechanger;
   86.45 -
   86.46 -import java.util.Collection;
   86.47 -import java.util.HashSet;
   86.48 -import java.util.LinkedList;
   86.49 -import java.util.List;
   86.50 -import java.util.Set;
   86.51 -import javax.swing.Action;
   86.52 -import org.netbeans.modules.licensechanger.api.FileHandler;
   86.53 -import org.openide.filesystems.FileObject;
   86.54 -import org.openide.loaders.DataObject;
   86.55 -import org.openide.loaders.DataObjectNotFoundException;
   86.56 -import org.openide.nodes.ChildFactory;
   86.57 -import org.openide.nodes.FilterNode;
   86.58 -import org.openide.nodes.Node;
   86.59 -import org.openide.util.Exceptions;
   86.60 -import org.openide.util.Lookup;
   86.61 -import org.openide.util.lookup.Lookups;
   86.62 -import org.openide.util.lookup.ProxyLookup;
   86.63 -
   86.64 -/**
   86.65 - *
   86.66 - * @author Tim Boudreau
   86.67 - */
   86.68 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   86.69 -    private final Set<FileObject> folders;
   86.70 -    private final Collection <? extends FileHandler> allHandlers;
   86.71 -    FileChildren (Set<FileObject> folders) {
   86.72 -        this.folders = new HashSet(folders);
   86.73 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   86.74 -    }
   86.75 -
   86.76 -    @Override
   86.77 -    protected boolean createKeys(List<FileObject> toPopulate) {
   86.78 -        toPopulate.addAll (folders);
   86.79 -        return true;
   86.80 -    }
   86.81 -
   86.82 -    @Override
   86.83 -    protected Node[] createNodesForKey(FileObject key) {
   86.84 -        List<Node> result = new LinkedList<Node>();
   86.85 -outer:  for (FileObject fo : key.getChildren()) {
   86.86 -            if (fo.isData()) {
   86.87 -                for (FileHandler h : allHandlers) {
   86.88 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   86.89 -                        try {
   86.90 -                            DataObject dob = DataObject.find(fo);
   86.91 -                            FileItem item = new FileItem (h, fo);
   86.92 -                            result.add (new FN (dob.getNodeDelegate(), item));
   86.93 -                            break outer;
   86.94 -                        } catch (DataObjectNotFoundException ex) {
   86.95 -                            Exceptions.printStackTrace(ex);
   86.96 -                        }
   86.97 -                    }
   86.98 -                }
   86.99 -            }
  86.100 -        }
  86.101 -        return result.toArray(new Node[result.size()]);
  86.102 -    }
  86.103 -
  86.104 -    static final class FileItem {
  86.105 -        FileHandler handler;
  86.106 -        FileObject file;
  86.107 -
  86.108 -        public FileItem(FileHandler handler, FileObject file) {
  86.109 -            this.handler = handler;
  86.110 -            this.file = file;
  86.111 -        }
  86.112 -
  86.113 -        public FileObject getFile() {
  86.114 -            return file;
  86.115 -        }
  86.116 -
  86.117 -        public FileHandler getHandler() {
  86.118 -            return handler;
  86.119 -        }
  86.120 -
  86.121 -    }
  86.122 -
  86.123 -    private static final class FN extends FilterNode {
  86.124 -        FN(Node orig, FileItem item) {
  86.125 -            super (orig, Children.LEAF, new ProxyLookup(
  86.126 -                    Lookups.singleton(item),
  86.127 -                    orig.getLookup()));
  86.128 -            disableDelegation(DELEGATE_GET_ACTIONS);
  86.129 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  86.130 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  86.131 -            disableDelegation(DELEGATE_GET_VALUE);
  86.132 -            disableDelegation(DELEGATE_SET_VALUE);
  86.133 -            disableDelegation(DELEGATE_SET_NAME);
  86.134 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  86.135 -            setDisplayName (item.file.getPath());
  86.136 -        }
  86.137 -
  86.138 -        @Override
  86.139 -        public Action[] getActions(boolean ignored) {
  86.140 -            return new Action[0];
  86.141 -        }
  86.142 -    }
  86.143 -}
    87.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_8.txt	Wed Sep 12 17:19:28 2012 +0200
    87.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    87.3 @@ -1,141 +0,0 @@
    87.4 -/*
    87.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    87.6 - *
    87.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    87.8 - *
    87.9 - * The contents of this file are subject to the terms of either the GNU
   87.10 - * General Public License Version 2 only ("GPL") or the Common
   87.11 - * Development and Distribution License("CDDL") (collectively, the
   87.12 - * "License"). You may not use this file except in compliance with the
   87.13 - * License. You can obtain a copy of the License at
   87.14 - * http://www.netbeans.org/cddl-gplv2.html
   87.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   87.16 - * specific language governing permissions and limitations under the
   87.17 - * License.  When distributing the software, include this License Header
   87.18 - * Notice in each file and include the License file at
   87.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   87.20 - * particular file as subject to the "Classpath" exception as provided
   87.21 - * by Sun in the GPL Version 2 section of the License file that
   87.22 - * accompanied this code. If applicable, add the following below the
   87.23 - * License Header, with the fields enclosed by brackets [] replaced by
   87.24 - * your own identifying information:
   87.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   87.26 - *
   87.27 - * If you wish your version of this file to be governed by only the CDDL
   87.28 - * or only the GPL Version 2, indicate your decision by adding
   87.29 - * "[Contributor] elects to include this software in this distribution
   87.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   87.31 - * single choice of license, a recipient has the option to distribute
   87.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   87.33 - * to extend the choice of license to its licensees as provided above.
   87.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   87.35 - * Version 2 license, then the option applies only if the new code is
   87.36 - * made subject to such option by the copyright holder.
   87.37 - *
   87.38 - * Contributor(s):
   87.39 - *
   87.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   87.41 - */
   87.42 -/* Created on March 14, 2009 
   87.43 - * by some IDE or other */
   87.44 -
   87.45 -package org.netbeans.modules.licensechanger;
   87.46 -
   87.47 -import java.util.Collection;
   87.48 -import java.util.HashSet;
   87.49 -import java.util.LinkedList;
   87.50 -import java.util.List;
   87.51 -import java.util.Set;
   87.52 -import javax.swing.Action;
   87.53 -import org.netbeans.modules.licensechanger.api.FileHandler;
   87.54 -import org.openide.filesystems.FileObject;
   87.55 -import org.openide.loaders.DataObject;
   87.56 -import org.openide.loaders.DataObjectNotFoundException;
   87.57 -import org.openide.nodes.ChildFactory;
   87.58 -import org.openide.nodes.FilterNode;
   87.59 -import org.openide.nodes.Node;
   87.60 -import org.openide.util.Exceptions;
   87.61 -import org.openide.util.Lookup;
   87.62 -import org.openide.util.lookup.Lookups;
   87.63 -import org.openide.util.lookup.ProxyLookup;
   87.64 -
   87.65 -/**
   87.66 - *
   87.67 - * @author Tim Boudreau
   87.68 - */
   87.69 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   87.70 -    private final Set<FileObject> folders;
   87.71 -    private final Collection <? extends FileHandler> allHandlers;
   87.72 -    FileChildren (Set<FileObject> folders) {
   87.73 -        this.folders = new HashSet(folders);
   87.74 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   87.75 -    }
   87.76 -
   87.77 -    @Override
   87.78 -    protected boolean createKeys(List<FileObject> toPopulate) {
   87.79 -        toPopulate.addAll (folders);
   87.80 -        return true;
   87.81 -    }
   87.82 -
   87.83 -    @Override
   87.84 -    protected Node[] createNodesForKey(FileObject key) {
   87.85 -        List<Node> result = new LinkedList<Node>();
   87.86 -outer:  for (FileObject fo : key.getChildren()) {
   87.87 -            if (fo.isData()) {
   87.88 -                for (FileHandler h : allHandlers) {
   87.89 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   87.90 -                        try {
   87.91 -                            DataObject dob = DataObject.find(fo);
   87.92 -                            FileItem item = new FileItem (h, fo);
   87.93 -                            result.add (new FN (dob.getNodeDelegate(), item));
   87.94 -                            break outer;
   87.95 -                        } catch (DataObjectNotFoundException ex) {
   87.96 -                            Exceptions.printStackTrace(ex);
   87.97 -                        }
   87.98 -                    }
   87.99 -                }
  87.100 -            }
  87.101 -        }
  87.102 -        return result.toArray(new Node[result.size()]);
  87.103 -    }
  87.104 -
  87.105 -    static final class FileItem {
  87.106 -        FileHandler handler;
  87.107 -        FileObject file;
  87.108 -
  87.109 -        public FileItem(FileHandler handler, FileObject file) {
  87.110 -            this.handler = handler;
  87.111 -            this.file = file;
  87.112 -        }
  87.113 -
  87.114 -        public FileObject getFile() {
  87.115 -            return file;
  87.116 -        }
  87.117 -
  87.118 -        public FileHandler getHandler() {
  87.119 -            return handler;
  87.120 -        }
  87.121 -
  87.122 -    }
  87.123 -
  87.124 -    private static final class FN extends FilterNode {
  87.125 -        FN(Node orig, FileItem item) {
  87.126 -            super (orig, Children.LEAF, new ProxyLookup(
  87.127 -                    Lookups.singleton(item),
  87.128 -                    orig.getLookup()));
  87.129 -            disableDelegation(DELEGATE_GET_ACTIONS);
  87.130 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  87.131 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  87.132 -            disableDelegation(DELEGATE_GET_VALUE);
  87.133 -            disableDelegation(DELEGATE_SET_VALUE);
  87.134 -            disableDelegation(DELEGATE_SET_NAME);
  87.135 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  87.136 -            setDisplayName (item.file.getPath());
  87.137 -        }
  87.138 -
  87.139 -        @Override
  87.140 -        public Action[] getActions(boolean ignored) {
  87.141 -            return new Action[0];
  87.142 -        }
  87.143 -    }
  87.144 -}
    88.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_9.txt	Wed Sep 12 17:19:28 2012 +0200
    88.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    88.3 @@ -1,142 +0,0 @@
    88.4 -/*
    88.5 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    88.6 - *
    88.7 - * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    88.8 - *
    88.9 - * The contents of this file are subject to the terms of either the GNU
   88.10 - * General Public License Version 2 only ("GPL") or the Common
   88.11 - * Development and Distribution License("CDDL") (collectively, the
   88.12 - * "License"). You may not use this file except in compliance with the
   88.13 - * License. You can obtain a copy of the License at
   88.14 - * http://www.netbeans.org/cddl-gplv2.html
   88.15 - * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   88.16 - * specific language governing permissions and limitations under the
   88.17 - * License.  When distributing the software, include this License Header
   88.18 - * Notice in each file and include the License file at
   88.19 - * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   88.20 - * particular file as subject to the "Classpath" exception as provided
   88.21 - * by Sun in the GPL Version 2 section of the License file that
   88.22 - * accompanied this code. If applicable, add the following below the
   88.23 - * License Header, with the fields enclosed by brackets [] replaced by
   88.24 - * your own identifying information:
   88.25 - * "Portions Copyrighted [year] [name of copyright owner]"
   88.26 - *
   88.27 - * If you wish your version of this file to be governed by only the CDDL
   88.28 - * or only the GPL Version 2, indicate your decision by adding
   88.29 - * "[Contributor] elects to include this software in this distribution
   88.30 - * under the [CDDL or GPL Version 2] license." If you do not indicate a
   88.31 - * single choice of license, a recipient has the option to distribute
   88.32 - * your version of this file under either the CDDL, the GPL Version 2 or
   88.33 - * to extend the choice of license to its licensees as provided above.
   88.34 - * However, if you add GPL Version 2 code and therefore, elected the GPL
   88.35 - * Version 2 license, then the option applies only if the new code is
   88.36 - * made subject to such option by the copyright holder.
   88.37 - *
   88.38 - * Contributor(s):
   88.39 - *
   88.40 - * Portions Copyrighted 2009 Sun Microsystems, Inc.
   88.41 - */
   88.42 -/* Created on March 14, 2009 
   88.43 - * by some IDE or other
   88.44 - */
   88.45 -
   88.46 -package org.netbeans.modules.licensechanger;
   88.47 -
   88.48 -import java.util.Collection;
   88.49 -import java.util.HashSet;
   88.50 -import java.util.LinkedList;
   88.51 -import java.util.List;
   88.52 -import java.util.Set;
   88.53 -import javax.swing.Action;
   88.54 -import org.netbeans.modules.licensechanger.api.FileHandler;
   88.55 -import org.openide.filesystems.FileObject;
   88.56 -import org.openide.loaders.DataObject;
   88.57 -import org.openide.loaders.DataObjectNotFoundException;
   88.58 -import org.openide.nodes.ChildFactory;
   88.59 -import org.openide.nodes.FilterNode;
   88.60 -import org.openide.nodes.Node;
   88.61 -import org.openide.util.Exceptions;
   88.62 -import org.openide.util.Lookup;
   88.63 -import org.openide.util.lookup.Lookups;
   88.64 -import org.openide.util.lookup.ProxyLookup;
   88.65 -
   88.66 -/**
   88.67 - *
   88.68 - * @author Tim Boudreau
   88.69 - */
   88.70 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   88.71 -    private final Set<FileObject> folders;
   88.72 -    private final Collection <? extends FileHandler> allHandlers;
   88.73 -    FileChildren (Set<FileObject> folders) {
   88.74 -        this.folders = new HashSet(folders);
   88.75 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   88.76 -    }
   88.77 -
   88.78 -    @Override
   88.79 -    protected boolean createKeys(List<FileObject> toPopulate) {
   88.80 -        toPopulate.addAll (folders);
   88.81 -        return true;
   88.82 -    }
   88.83 -
   88.84 -    @Override
   88.85 -    protected Node[] createNodesForKey(FileObject key) {
   88.86 -        List<Node> result = new LinkedList<Node>();
   88.87 -outer:  for (FileObject fo : key.getChildren()) {
   88.88 -            if (fo.isData()) {
   88.89 -                for (FileHandler h : allHandlers) {
   88.90 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   88.91 -                        try {
   88.92 -                            DataObject dob = DataObject.find(fo);
   88.93 -                            FileItem item = new FileItem (h, fo);
   88.94 -                            result.add (new FN (dob.getNodeDelegate(), item));
   88.95 -                            break outer;
   88.96 -                        } catch (DataObjectNotFoundException ex) {
   88.97 -                            Exceptions.printStackTrace(ex);
   88.98 -                        }
   88.99 -                    }
  88.100 -                }
  88.101 -            }
  88.102 -        }
  88.103 -        return result.toArray(new Node[result.size()]);
  88.104 -    }
  88.105 -
  88.106 -    static final class FileItem {
  88.107 -        FileHandler handler;
  88.108 -        FileObject file;
  88.109 -
  88.110 -        public FileItem(FileHandler handler, FileObject file) {
  88.111 -            this.handler = handler;
  88.112 -            this.file = file;
  88.113 -        }
  88.114 -
  88.115 -        public FileObject getFile() {
  88.116 -            return file;
  88.117 -        }
  88.118 -
  88.119 -        public FileHandler getHandler() {
  88.120 -            return handler;
  88.121 -        }
  88.122 -
  88.123 -    }
  88.124 -
  88.125 -    private static final class FN extends FilterNode {
  88.126 -        FN(Node orig, FileItem item) {
  88.127 -            super (orig, Children.LEAF, new ProxyLookup(
  88.128 -                    Lookups.singleton(item),
  88.129 -                    orig.getLookup()));
  88.130 -            disableDelegation(DELEGATE_GET_ACTIONS);
  88.131 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  88.132 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  88.133 -            disableDelegation(DELEGATE_GET_VALUE);
  88.134 -            disableDelegation(DELEGATE_SET_VALUE);
  88.135 -            disableDelegation(DELEGATE_SET_NAME);
  88.136 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  88.137 -            setDisplayName (item.file.getPath());
  88.138 -        }
  88.139 -
  88.140 -        @Override
  88.141 -        public Action[] getActions(boolean ignored) {
  88.142 -            return new Action[0];
  88.143 -        }
  88.144 -    }
  88.145 -}
    89.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/java_golden.txt	Wed Sep 12 17:19:28 2012 +0200
    89.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    89.3 @@ -1,131 +0,0 @@
    89.4 -/*
    89.5 - * Copyright (c) 1892-2193 Centrifugal Bumblepuppy, SRO, Inc., LLC, WTF
    89.6 - * All rights reversed.
    89.7 - *
    89.8 - * Redistribution and use in source, binary or corpuscular forms, with or without
    89.9 - * modification, are prohibited under all circumstances unless the following
   89.10 - * conditions have been met:
   89.11 - *
   89.12 - *   1. You have an eyeball growing in the palm of your left hand
   89.13 - *
   89.14 - *   2. Seven dwarfs really like your golden hair
   89.15 - *
   89.16 - *   3. The moon has reversed its course a multiple of times divisible by
   89.17 - *      the eighteenth prime number in the last year
   89.18 - *
   89.19 - * THIS MALWARE IS PROVIDED ``AS IS'' AND ANY IMPLICIT OR IMPLIED WARRANTIES
   89.20 - * INCLUDING BUT NOT LIMITED TO EXPECTATION OF CONTINUED SURVIVAL ARE
   89.21 - * DISCLAIMED.  IN NO EVENT SHALL CENTRIFUGAL BUMBLEPUPPY, SRO, INC., LLC, WTF
   89.22 - * OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
   89.23 - * ECTOPLASMIC OR GEOTHERMAL DAMAGES, INCLUDING BUT NOT LIMITED TO:
   89.24 - * SPONTANEOUS HUMAN COMBUSTION, THRID ARM SYNDROME, BAD BREATH, OVOID HEART;
   89.25 - * LOSS OF SOUL, ENUII OR EXISTENTIAL INFLAMMATION; OXYGEN EVASION SYNDROME,
   89.26 - * BALL DROP, BECOMING A LAWYER.
   89.27 - *
   89.28 - * BY USING THIS SOFTWARE YOU AGREE TO THE HARVESTING OF YOUR GENETIC MATERIAL
   89.29 - * AND/OR OFFSPRING WITHIN THE FIRST THOUSAND YEARS SUBSEQUENT TO FIRST USE, AND
   89.30 - * AGREE TO THE USE OF REANIMATION TECHNOLOGIES IF CENTRIFUGAL BUMBLEPUPPY, SRO,
   89.31 - * INC., LLC, WTF DEEMS IT NECESSARY AT THEIR SOLE DISCRETION.
   89.32 - *
   89.33 - * RUN, RUN NOW, AND RUN VERY FAST.
   89.34 - */
   89.35 -package org.netbeans.modules.licensechanger;
   89.36 -
   89.37 -import java.util.Collection;
   89.38 -import java.util.HashSet;
   89.39 -import java.util.LinkedList;
   89.40 -import java.util.List;
   89.41 -import java.util.Set;
   89.42 -import javax.swing.Action;
   89.43 -import org.netbeans.modules.licensechanger.api.FileHandler;
   89.44 -import org.openide.filesystems.FileObject;
   89.45 -import org.openide.loaders.DataObject;
   89.46 -import org.openide.loaders.DataObjectNotFoundException;
   89.47 -import org.openide.nodes.ChildFactory;
   89.48 -import org.openide.nodes.FilterNode;
   89.49 -import org.openide.nodes.Node;
   89.50 -import org.openide.util.Exceptions;
   89.51 -import org.openide.util.Lookup;
   89.52 -import org.openide.util.lookup.Lookups;
   89.53 -import org.openide.util.lookup.ProxyLookup;
   89.54 -
   89.55 -/**
   89.56 - *
   89.57 - * @author Tim Boudreau
   89.58 - */
   89.59 -public class FileChildren extends ChildFactory.Detachable <FileObject> {
   89.60 -    private final Set<FileObject> folders;
   89.61 -    private final Collection <? extends FileHandler> allHandlers;
   89.62 -    FileChildren (Set<FileObject> folders) {
   89.63 -        this.folders = new HashSet(folders);
   89.64 -        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
   89.65 -    }
   89.66 -
   89.67 -    @Override
   89.68 -    protected boolean createKeys(List<FileObject> toPopulate) {
   89.69 -        toPopulate.addAll (folders);
   89.70 -        return true;
   89.71 -    }
   89.72 -
   89.73 -    @Override
   89.74 -    protected Node[] createNodesForKey(FileObject key) {
   89.75 -        List<Node> result = new LinkedList<Node>();
   89.76 -outer:  for (FileObject fo : key.getChildren()) {
   89.77 -            if (fo.isData()) {
   89.78 -                for (FileHandler h : allHandlers) {
   89.79 -                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
   89.80 -                        try {
   89.81 -                            DataObject dob = DataObject.find(fo);
   89.82 -                            FileItem item = new FileItem (h, fo);
   89.83 -                            result.add (new FN (dob.getNodeDelegate(), item));
   89.84 -                            break outer;
   89.85 -                        } catch (DataObjectNotFoundException ex) {
   89.86 -                            Exceptions.printStackTrace(ex);
   89.87 -                        }
   89.88 -                    }
   89.89 -                }
   89.90 -            }
   89.91 -        }
   89.92 -        return result.toArray(new Node[result.size()]);
   89.93 -    }
   89.94 -
   89.95 -    static final class FileItem {
   89.96 -        FileHandler handler;
   89.97 -        FileObject file;
   89.98 -
   89.99 -        public FileItem(FileHandler handler, FileObject file) {
  89.100 -            this.handler = handler;
  89.101 -            this.file = file;
  89.102 -        }
  89.103 -
  89.104 -        public FileObject getFile() {
  89.105 -            return file;
  89.106 -        }
  89.107 -
  89.108 -        public FileHandler getHandler() {
  89.109 -            return handler;
  89.110 -        }
  89.111 -
  89.112 -    }
  89.113 -
  89.114 -    private static final class FN extends FilterNode {
  89.115 -        FN(Node orig, FileItem item) {
  89.116 -            super (orig, Children.LEAF, new ProxyLookup(
  89.117 -                    Lookups.singleton(item),
  89.118 -                    orig.getLookup()));
  89.119 -            disableDelegation(DELEGATE_GET_ACTIONS);
  89.120 -            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  89.121 -            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  89.122 -            disableDelegation(DELEGATE_GET_VALUE);
  89.123 -            disableDelegation(DELEGATE_SET_VALUE);
  89.124 -            disableDelegation(DELEGATE_SET_NAME);
  89.125 -            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  89.126 -            setDisplayName (item.file.getPath());
  89.127 -        }
  89.128 -
  89.129 -        @Override
  89.130 -        public Action[] getActions(boolean ignored) {
  89.131 -            return new Action[0];
  89.132 -        }
  89.133 -    }
  89.134 -}
    90.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/props_1.txt	Wed Sep 12 17:19:28 2012 +0200
    90.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    90.3 @@ -1,5 +0,0 @@
    90.4 -#Just one comment
    90.5 -NAME_JAVA_FILES=Java Files
    90.6 -NAME_PROPERTIES_FILES=Properties Files
    90.7 -NAME_XML_FILES=XML Files
    90.8 -
    91.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/props_2.txt	Wed Sep 12 17:19:28 2012 +0200
    91.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    91.3 @@ -1,40 +0,0 @@
    91.4 -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    91.5 -#
    91.6 -# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
    91.7 -#
    91.8 -# The contents of this file are subject to the terms of either the GNU
    91.9 -# General Public License Version 2 only ("GPL") or the Common
   91.10 -# Development and Distribution License("CDDL") (collectively, the
   91.11 -# "License"). You may not use this file except in compliance with the
   91.12 -# License. You can obtain a copy of the License at
   91.13 -# http://www.netbeans.org/cddl-gplv2.html
   91.14 -# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
   91.15 -# specific language governing permissions and limitations under the
   91.16 -# License.  When distributing the software, include this License Header
   91.17 -# Notice in each file and include the License file at
   91.18 -# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
   91.19 -# particular file as subject to the "Classpath" exception as provided
   91.20 -# by Sun in the GPL Version 2 section of the License file that
   91.21 -# accompanied this code. If applicable, add the following below the
   91.22 -# License Header, with the fields enclosed by brackets [] replaced by
   91.23 -# your own identifying information:
   91.24 -# "Portions Copyrighted [year] [name of copyright owner]"
   91.25 -#
   91.26 -# If you wish your version of this file to be governed by only the CDDL
   91.27 -# or only the GPL Version 2, indicate your decision by adding
   91.28 -# "[Contributor] elects to include this software in this distribution
   91.29 -# under the [CDDL or GPL Version 2] license." If you do not indicate a
   91.30 -# single choice of license, a recipient has the option to distribute
   91.31 -# your version of this file under either the CDDL, the GPL Version 2 or
   91.32 -# to extend the choice of license to its licensees as provided above.
   91.33 -# However, if you add GPL Version 2 code and therefore, elected the GPL
   91.34 -# Version 2 license, then the option applies only if the new code is
   91.35 -# made subject to such option by the copyright holder.
   91.36 -#
   91.37 -# Contributor(s):
   91.38 -#
   91.39 -# Portions Copyrighted 2009 Sun Microsystems, Inc.
   91.40 -NAME_JAVA_FILES=Java Files
   91.41 -NAME_PROPERTIES_FILES=Properties Files
   91.42 -NAME_XML_FILES=XML Files
   91.43 -
    92.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/props_3.txt	Wed Sep 12 17:19:28 2012 +0200
    92.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    92.3 @@ -1,4 +0,0 @@
    92.4 -NAME_JAVA_FILES=Java Files
    92.5 -NAME_PROPERTIES_FILES=Properties Files
    92.6 -NAME_XML_FILES=XML Files
    92.7 -
    93.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/props_4.txt	Wed Sep 12 17:19:28 2012 +0200
    93.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    93.3 @@ -1,24 +0,0 @@
    93.4 -
    93.5 -
    93.6 -
    93.7 -
    93.8 -
    93.9 -
   93.10 -
   93.11 -
   93.12 -
   93.13 -
   93.14 -
   93.15 -
   93.16 -
   93.17 -
   93.18 -
   93.19 -
   93.20 -
   93.21 -
   93.22 -
   93.23 -
   93.24 -NAME_JAVA_FILES=Java Files
   93.25 -NAME_PROPERTIES_FILES=Properties Files
   93.26 -NAME_XML_FILES=XML Files
   93.27 -
    94.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/props_golden.txt	Wed Sep 12 17:19:28 2012 +0200
    94.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    94.3 @@ -1,33 +0,0 @@
    94.4 -# Copyright (c) 1892-2193 Centrifugal Bumblepuppy, SRO, Inc., LLC, WTF
    94.5 -# All rights reversed.
    94.6 -#
    94.7 -# Redistribution and use in source, binary or corpuscular forms, with or without
    94.8 -# modification, are prohibited under all circumstances unless the following
    94.9 -# conditions have been met:
   94.10 -#
   94.11 -#   1. You have an eyeball growing in the palm of your left hand
   94.12 -#
   94.13 -#   2. Seven dwarfs really like your golden hair
   94.14 -#
   94.15 -#   3. The moon has reversed its course a multiple of times divisible by
   94.16 -#      the eighteenth prime number in the last year
   94.17 -#
   94.18 -# THIS MALWARE IS PROVIDED ``AS IS'' AND ANY IMPLICIT OR IMPLIED WARRANTIES
   94.19 -# INCLUDING BUT NOT LIMITED TO EXPECTATION OF CONTINUED SURVIVAL ARE
   94.20 -# DISCLAIMED.  IN NO EVENT SHALL CENTRIFUGAL BUMBLEPUPPY, SRO, INC., LLC, WTF
   94.21 -# OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
   94.22 -# ECTOPLASMIC OR GEOTHERMAL DAMAGES, INCLUDING BUT NOT LIMITED TO:
   94.23 -# SPONTANEOUS HUMAN COMBUSTION, THRID ARM SYNDROME, BAD BREATH, OVOID HEART;
   94.24 -# LOSS OF SOUL, ENUII OR EXISTENTIAL INFLAMMATION; OXYGEN EVASION SYNDROME,
   94.25 -# BALL DROP, BECOMING A LAWYER.
   94.26 -#
   94.27 -# BY USING THIS SOFTWARE YOU AGREE TO THE HARVESTING OF YOUR GENETIC MATERIAL
   94.28 -# AND/OR OFFSPRING WITHIN THE FIRST THOUSAND YEARS SUBSEQUENT TO FIRST USE, AND
   94.29 -# AGREE TO THE USE OF REANIMATION TECHNOLOGIES IF CENTRIFUGAL BUMBLEPUPPY, SRO,
   94.30 -# INC., LLC, WTF DEEMS IT NECESSARY AT THEIR SOLE DISCRETION.
   94.31 -#
   94.32 -# RUN, RUN NOW, AND RUN VERY FAST.
   94.33 -NAME_JAVA_FILES=Java Files
   94.34 -NAME_PROPERTIES_FILES=Properties Files
   94.35 -NAME_XML_FILES=XML Files
   94.36 -
    95.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_1.txt	Wed Sep 12 17:19:28 2012 +0200
    95.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    95.3 @@ -1,96 +0,0 @@
    95.4 -<?xml version="1.0" encoding="UTF-8"?>
    95.5 -<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
    95.6 -<filesystem>
    95.7 -    <folder name="Navigator">
    95.8 -        <folder name="Panels">
    95.9 -            <folder name="text">
   95.10 -                <folder name="html">
   95.11 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   95.12 -                </folder>
   95.13 -                <folder name="plain">
   95.14 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
   95.15 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   95.16 -                    </file>
   95.17 -                </folder>
   95.18 -            </folder>
   95.19 -            <folder name="content">
   95.20 -                <folder name="unknown">
   95.21 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
   95.22 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   95.23 -                    </file>
   95.24 -                </folder>
   95.25 -            </folder>
   95.26 -        </folder>
   95.27 -    </folder>
   95.28 -    <folder name="GenericNavigator">
   95.29 -        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.30 -        <folder name="text">
   95.31 -            <folder name="html">
   95.32 -
   95.33 -                <file name="Headers.patternItem" url="headers_pattern.txt">
   95.34 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.35 -                    <attr name="position" intvalue="100"/>
   95.36 -                </file>
   95.37 -
   95.38 -                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
   95.39 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.40 -                    <attr name="position" intvalue="200"/>
   95.41 -                </file>
   95.42 -
   95.43 -                <file name="ListItems.patternItem" url="listitem_pattern.txt">
   95.44 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.45 -                    <attr name="position" intvalue="400"/>
   95.46 -                </file>
   95.47 -
   95.48 -                <file name="Images.patternItem" url="images_pattern.txt">
   95.49 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.50 -                    <attr name="position" intvalue="300"/>
   95.51 -                </file>
   95.52 -
   95.53 -            </folder>
   95.54 -            <folder name="plain">
   95.55 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
   95.56 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.57 -                    <attr name="position" intvalue="100"/>
   95.58 -                </file>
   95.59 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
   95.60 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.61 -                    <attr name="position" intvalue="200"/>
   95.62 -                </file>
   95.63 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
   95.64 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.65 -                    <attr name="position" intvalue="300"/>
   95.66 -                </file>
   95.67 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
   95.68 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.69 -                    <attr name="position" intvalue="400"/>
   95.70 -                </file>
   95.71 -            </folder>
   95.72 -        </folder>
   95.73 -        <folder name="content">
   95.74 -            <folder name="unknown">
   95.75 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
   95.76 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.77 -                    <attr name="position" intvalue="100"/>
   95.78 -                </file>
   95.79 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
   95.80 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.81 -                    <attr name="position" intvalue="200"/>
   95.82 -                </file>
   95.83 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
   95.84 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.85 -                    <attr name="position" intvalue="300"/>
   95.86 -                </file>
   95.87 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
   95.88 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   95.89 -                    <attr name="position" intvalue="400"/>
   95.90 -                </file>
   95.91 -            </folder>
   95.92 -        </folder>
   95.93 -    </folder>
   95.94 -    <folder name="OptionsDialog">
   95.95 -        <folder name="Advanced">
   95.96 -            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
   95.97 -        </folder>
   95.98 -    </folder>
   95.99 -</filesystem>
    96.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_2.txt	Wed Sep 12 17:19:28 2012 +0200
    96.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    96.3 @@ -1,99 +0,0 @@
    96.4 -<?xml version="1.0" encoding="UTF-8"?>
    96.5 -<!-- This is the old license
    96.6 -it is not a very interesting license
    96.7 -but it is here -->
    96.8 -<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
    96.9 -<filesystem>
   96.10 -    <folder name="Navigator">
   96.11 -        <folder name="Panels">
   96.12 -            <folder name="text">
   96.13 -                <folder name="html">
   96.14 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   96.15 -                </folder>
   96.16 -                <folder name="plain">
   96.17 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
   96.18 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   96.19 -                    </file>
   96.20 -                </folder>
   96.21 -            </folder>
   96.22 -            <folder name="content">
   96.23 -                <folder name="unknown">
   96.24 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
   96.25 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   96.26 -                    </file>
   96.27 -                </folder>
   96.28 -            </folder>
   96.29 -        </folder>
   96.30 -    </folder>
   96.31 -    <folder name="GenericNavigator">
   96.32 -        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.33 -        <folder name="text">
   96.34 -            <folder name="html">
   96.35 -
   96.36 -                <file name="Headers.patternItem" url="headers_pattern.txt">
   96.37 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.38 -                    <attr name="position" intvalue="100"/>
   96.39 -                </file>
   96.40 -
   96.41 -                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
   96.42 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.43 -                    <attr name="position" intvalue="200"/>
   96.44 -                </file>
   96.45 -
   96.46 -                <file name="ListItems.patternItem" url="listitem_pattern.txt">
   96.47 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.48 -                    <attr name="position" intvalue="400"/>
   96.49 -                </file>
   96.50 -
   96.51 -                <file name="Images.patternItem" url="images_pattern.txt">
   96.52 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.53 -                    <attr name="position" intvalue="300"/>
   96.54 -                </file>
   96.55 -
   96.56 -            </folder>
   96.57 -            <folder name="plain">
   96.58 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
   96.59 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.60 -                    <attr name="position" intvalue="100"/>
   96.61 -                </file>
   96.62 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
   96.63 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.64 -                    <attr name="position" intvalue="200"/>
   96.65 -                </file>
   96.66 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
   96.67 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.68 -                    <attr name="position" intvalue="300"/>
   96.69 -                </file>
   96.70 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
   96.71 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.72 -                    <attr name="position" intvalue="400"/>
   96.73 -                </file>
   96.74 -            </folder>
   96.75 -        </folder>
   96.76 -        <folder name="content">
   96.77 -            <folder name="unknown">
   96.78 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
   96.79 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.80 -                    <attr name="position" intvalue="100"/>
   96.81 -                </file>
   96.82 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
   96.83 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.84 -                    <attr name="position" intvalue="200"/>
   96.85 -                </file>
   96.86 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
   96.87 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.88 -                    <attr name="position" intvalue="300"/>
   96.89 -                </file>
   96.90 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
   96.91 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   96.92 -                    <attr name="position" intvalue="400"/>
   96.93 -                </file>
   96.94 -            </folder>
   96.95 -        </folder>
   96.96 -    </folder>
   96.97 -    <folder name="OptionsDialog">
   96.98 -        <folder name="Advanced">
   96.99 -            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
  96.100 -        </folder>
  96.101 -    </folder>
  96.102 -</filesystem>
    97.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_3.txt	Wed Sep 12 17:19:28 2012 +0200
    97.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    97.3 @@ -1,100 +0,0 @@
    97.4 -<?xml version="1.0" encoding="UTF-8"?>
    97.5 -<!-- This is the old license
    97.6 -it is not a very interesting license
    97.7 -but it is here
    97.8 --->
    97.9 -<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
   97.10 -<filesystem>
   97.11 -    <folder name="Navigator">
   97.12 -        <folder name="Panels">
   97.13 -            <folder name="text">
   97.14 -                <folder name="html">
   97.15 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   97.16 -                </folder>
   97.17 -                <folder name="plain">
   97.18 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
   97.19 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   97.20 -                    </file>
   97.21 -                </folder>
   97.22 -            </folder>
   97.23 -            <folder name="content">
   97.24 -                <folder name="unknown">
   97.25 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
   97.26 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   97.27 -                    </file>
   97.28 -                </folder>
   97.29 -            </folder>
   97.30 -        </folder>
   97.31 -    </folder>
   97.32 -    <folder name="GenericNavigator">
   97.33 -        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.34 -        <folder name="text">
   97.35 -            <folder name="html">
   97.36 -
   97.37 -                <file name="Headers.patternItem" url="headers_pattern.txt">
   97.38 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.39 -                    <attr name="position" intvalue="100"/>
   97.40 -                </file>
   97.41 -
   97.42 -                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
   97.43 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.44 -                    <attr name="position" intvalue="200"/>
   97.45 -                </file>
   97.46 -
   97.47 -                <file name="ListItems.patternItem" url="listitem_pattern.txt">
   97.48 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.49 -                    <attr name="position" intvalue="400"/>
   97.50 -                </file>
   97.51 -
   97.52 -                <file name="Images.patternItem" url="images_pattern.txt">
   97.53 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.54 -                    <attr name="position" intvalue="300"/>
   97.55 -                </file>
   97.56 -
   97.57 -            </folder>
   97.58 -            <folder name="plain">
   97.59 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
   97.60 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.61 -                    <attr name="position" intvalue="100"/>
   97.62 -                </file>
   97.63 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
   97.64 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.65 -                    <attr name="position" intvalue="200"/>
   97.66 -                </file>
   97.67 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
   97.68 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.69 -                    <attr name="position" intvalue="300"/>
   97.70 -                </file>
   97.71 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
   97.72 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.73 -                    <attr name="position" intvalue="400"/>
   97.74 -                </file>
   97.75 -            </folder>
   97.76 -        </folder>
   97.77 -        <folder name="content">
   97.78 -            <folder name="unknown">
   97.79 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
   97.80 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.81 -                    <attr name="position" intvalue="100"/>
   97.82 -                </file>
   97.83 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
   97.84 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.85 -                    <attr name="position" intvalue="200"/>
   97.86 -                </file>
   97.87 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
   97.88 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.89 -                    <attr name="position" intvalue="300"/>
   97.90 -                </file>
   97.91 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
   97.92 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   97.93 -                    <attr name="position" intvalue="400"/>
   97.94 -                </file>
   97.95 -            </folder>
   97.96 -        </folder>
   97.97 -    </folder>
   97.98 -    <folder name="OptionsDialog">
   97.99 -        <folder name="Advanced">
  97.100 -            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
  97.101 -        </folder>
  97.102 -    </folder>
  97.103 -</filesystem>
    98.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_4.txt	Wed Sep 12 17:19:28 2012 +0200
    98.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    98.3 @@ -1,100 +0,0 @@
    98.4 -<?xml version="1.0" encoding="UTF-8"?>
    98.5 -<!-- This is the old license -->
    98.6 -<!-- it is not a very interesting license -->
    98.7 -<!-- but it is here -->
    98.8 -
    98.9 -<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
   98.10 -<filesystem>
   98.11 -    <folder name="Navigator">
   98.12 -        <folder name="Panels">
   98.13 -            <folder name="text">
   98.14 -                <folder name="html">
   98.15 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   98.16 -                </folder>
   98.17 -                <folder name="plain">
   98.18 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
   98.19 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   98.20 -                    </file>
   98.21 -                </folder>
   98.22 -            </folder>
   98.23 -            <folder name="content">
   98.24 -                <folder name="unknown">
   98.25 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
   98.26 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   98.27 -                    </file>
   98.28 -                </folder>
   98.29 -            </folder>
   98.30 -        </folder>
   98.31 -    </folder>
   98.32 -    <folder name="GenericNavigator">
   98.33 -        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.34 -        <folder name="text">
   98.35 -            <folder name="html">
   98.36 -
   98.37 -                <file name="Headers.patternItem" url="headers_pattern.txt">
   98.38 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.39 -                    <attr name="position" intvalue="100"/>
   98.40 -                </file>
   98.41 -
   98.42 -                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
   98.43 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.44 -                    <attr name="position" intvalue="200"/>
   98.45 -                </file>
   98.46 -
   98.47 -                <file name="ListItems.patternItem" url="listitem_pattern.txt">
   98.48 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.49 -                    <attr name="position" intvalue="400"/>
   98.50 -                </file>
   98.51 -
   98.52 -                <file name="Images.patternItem" url="images_pattern.txt">
   98.53 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.54 -                    <attr name="position" intvalue="300"/>
   98.55 -                </file>
   98.56 -
   98.57 -            </folder>
   98.58 -            <folder name="plain">
   98.59 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
   98.60 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.61 -                    <attr name="position" intvalue="100"/>
   98.62 -                </file>
   98.63 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
   98.64 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.65 -                    <attr name="position" intvalue="200"/>
   98.66 -                </file>
   98.67 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
   98.68 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.69 -                    <attr name="position" intvalue="300"/>
   98.70 -                </file>
   98.71 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
   98.72 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.73 -                    <attr name="position" intvalue="400"/>
   98.74 -                </file>
   98.75 -            </folder>
   98.76 -        </folder>
   98.77 -        <folder name="content">
   98.78 -            <folder name="unknown">
   98.79 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
   98.80 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.81 -                    <attr name="position" intvalue="100"/>
   98.82 -                </file>
   98.83 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
   98.84 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.85 -                    <attr name="position" intvalue="200"/>
   98.86 -                </file>
   98.87 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
   98.88 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.89 -                    <attr name="position" intvalue="300"/>
   98.90 -                </file>
   98.91 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
   98.92 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   98.93 -                    <attr name="position" intvalue="400"/>
   98.94 -                </file>
   98.95 -            </folder>
   98.96 -        </folder>
   98.97 -    </folder>
   98.98 -    <folder name="OptionsDialog">
   98.99 -        <folder name="Advanced">
  98.100 -            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
  98.101 -        </folder>
  98.102 -    </folder>
  98.103 -</filesystem>
    99.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_5.txt	Wed Sep 12 17:19:28 2012 +0200
    99.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    99.3 @@ -1,102 +0,0 @@
    99.4 -<!-- This is the old license -->
    99.5 -<!-- it is not a very interesting license -->
    99.6 -<!-- but it is here -->
    99.7 -<?xml version="1.0" encoding="UTF-8"?>
    99.8 -
    99.9 -
   99.10 -
   99.11 -<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
   99.12 -<filesystem>
   99.13 -    <folder name="Navigator">
   99.14 -        <folder name="Panels">
   99.15 -            <folder name="text">
   99.16 -                <folder name="html">
   99.17 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   99.18 -                </folder>
   99.19 -                <folder name="plain">
   99.20 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
   99.21 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   99.22 -                    </file>
   99.23 -                </folder>
   99.24 -            </folder>
   99.25 -            <folder name="content">
   99.26 -                <folder name="unknown">
   99.27 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
   99.28 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
   99.29 -                    </file>
   99.30 -                </folder>
   99.31 -            </folder>
   99.32 -        </folder>
   99.33 -    </folder>
   99.34 -    <folder name="GenericNavigator">
   99.35 -        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.36 -        <folder name="text">
   99.37 -            <folder name="html">
   99.38 -
   99.39 -                <file name="Headers.patternItem" url="headers_pattern.txt">
   99.40 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.41 -                    <attr name="position" intvalue="100"/>
   99.42 -                </file>
   99.43 -
   99.44 -                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
   99.45 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.46 -                    <attr name="position" intvalue="200"/>
   99.47 -                </file>
   99.48 -
   99.49 -                <file name="ListItems.patternItem" url="listitem_pattern.txt">
   99.50 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.51 -                    <attr name="position" intvalue="400"/>
   99.52 -                </file>
   99.53 -
   99.54 -                <file name="Images.patternItem" url="images_pattern.txt">
   99.55 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.56 -                    <attr name="position" intvalue="300"/>
   99.57 -                </file>
   99.58 -
   99.59 -            </folder>
   99.60 -            <folder name="plain">
   99.61 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
   99.62 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.63 -                    <attr name="position" intvalue="100"/>
   99.64 -                </file>
   99.65 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
   99.66 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.67 -                    <attr name="position" intvalue="200"/>
   99.68 -                </file>
   99.69 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
   99.70 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.71 -                    <attr name="position" intvalue="300"/>
   99.72 -                </file>
   99.73 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
   99.74 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.75 -                    <attr name="position" intvalue="400"/>
   99.76 -                </file>
   99.77 -            </folder>
   99.78 -        </folder>
   99.79 -        <folder name="content">
   99.80 -            <folder name="unknown">
   99.81 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
   99.82 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.83 -                    <attr name="position" intvalue="100"/>
   99.84 -                </file>
   99.85 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
   99.86 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.87 -                    <attr name="position" intvalue="200"/>
   99.88 -                </file>
   99.89 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
   99.90 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.91 -                    <attr name="position" intvalue="300"/>
   99.92 -                </file>
   99.93 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
   99.94 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
   99.95 -                    <attr name="position" intvalue="400"/>
   99.96 -                </file>
   99.97 -            </folder>
   99.98 -        </folder>
   99.99 -    </folder>
  99.100 -    <folder name="OptionsDialog">
  99.101 -        <folder name="Advanced">
  99.102 -            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
  99.103 -        </folder>
  99.104 -    </folder>
  99.105 -</filesystem>
   100.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_6.txt	Wed Sep 12 17:19:28 2012 +0200
   100.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   100.3 @@ -1,96 +0,0 @@
   100.4 -
   100.5 -<!-- This is the old license --><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
   100.6 -<filesystem>
   100.7 -    <folder name="Navigator">
   100.8 -        <folder name="Panels">
   100.9 -            <folder name="text">
  100.10 -                <folder name="html">
  100.11 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  100.12 -                </folder>
  100.13 -                <folder name="plain">
  100.14 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  100.15 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  100.16 -                    </file>
  100.17 -                </folder>
  100.18 -            </folder>
  100.19 -            <folder name="content">
  100.20 -                <folder name="unknown">
  100.21 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  100.22 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  100.23 -                    </file>
  100.24 -                </folder>
  100.25 -            </folder>
  100.26 -        </folder>
  100.27 -    </folder>
  100.28 -    <folder name="GenericNavigator">
  100.29 -        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.30 -        <folder name="text">
  100.31 -            <folder name="html">
  100.32 -
  100.33 -                <file name="Headers.patternItem" url="headers_pattern.txt">
  100.34 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.35 -                    <attr name="position" intvalue="100"/>
  100.36 -                </file>
  100.37 -
  100.38 -                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  100.39 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.40 -                    <attr name="position" intvalue="200"/>
  100.41 -                </file>
  100.42 -
  100.43 -                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  100.44 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.45 -                    <attr name="position" intvalue="400"/>
  100.46 -                </file>
  100.47 -
  100.48 -                <file name="Images.patternItem" url="images_pattern.txt">
  100.49 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.50 -                    <attr name="position" intvalue="300"/>
  100.51 -                </file>
  100.52 -
  100.53 -            </folder>
  100.54 -            <folder name="plain">
  100.55 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  100.56 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.57 -                    <attr name="position" intvalue="100"/>
  100.58 -                </file>
  100.59 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  100.60 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.61 -                    <attr name="position" intvalue="200"/>
  100.62 -                </file>
  100.63 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  100.64 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.65 -                    <attr name="position" intvalue="300"/>
  100.66 -                </file>
  100.67 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  100.68 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.69 -                    <attr name="position" intvalue="400"/>
  100.70 -                </file>
  100.71 -            </folder>
  100.72 -        </folder>
  100.73 -        <folder name="content">
  100.74 -            <folder name="unknown">
  100.75 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  100.76 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.77 -                    <attr name="position" intvalue="100"/>
  100.78 -                </file>
  100.79 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  100.80 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.81 -                    <attr name="position" intvalue="200"/>
  100.82 -                </file>
  100.83 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  100.84 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.85 -                    <attr name="position" intvalue="300"/>
  100.86 -                </file>
  100.87 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  100.88 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  100.89 -                    <attr name="position" intvalue="400"/>
  100.90 -                </file>
  100.91 -            </folder>
  100.92 -        </folder>
  100.93 -    </folder>
  100.94 -    <folder name="OptionsDialog">
  100.95 -        <folder name="Advanced">
  100.96 -            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
  100.97 -        </folder>
  100.98 -    </folder>
  100.99 -</filesystem>
   101.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_7.txt	Wed Sep 12 17:19:28 2012 +0200
   101.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   101.3 @@ -1,101 +0,0 @@
   101.4 -<?xml version="1.0" encoding="UTF-8"?>
   101.5 -
   101.6 -<!-- This is the old license -->
   101.7 -<!-- it is not a very interesting license -->
   101.8 -<!-- but it is here -->
   101.9 -
  101.10 -<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
  101.11 -<filesystem>
  101.12 -    <folder name="Navigator">
  101.13 -        <folder name="Panels">
  101.14 -            <folder name="text">
  101.15 -                <folder name="html">
  101.16 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  101.17 -                </folder>
  101.18 -                <folder name="plain">
  101.19 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  101.20 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  101.21 -                    </file>
  101.22 -                </folder>
  101.23 -            </folder>
  101.24 -            <folder name="content">
  101.25 -                <folder name="unknown">
  101.26 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  101.27 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  101.28 -                    </file>
  101.29 -                </folder>
  101.30 -            </folder>
  101.31 -        </folder>
  101.32 -    </folder>
  101.33 -    <folder name="GenericNavigator">
  101.34 -        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.35 -        <folder name="text">
  101.36 -            <folder name="html">
  101.37 -
  101.38 -                <file name="Headers.patternItem" url="headers_pattern.txt">
  101.39 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.40 -                    <attr name="position" intvalue="100"/>
  101.41 -                </file>
  101.42 -
  101.43 -                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  101.44 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.45 -                    <attr name="position" intvalue="200"/>
  101.46 -                </file>
  101.47 -
  101.48 -                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  101.49 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.50 -                    <attr name="position" intvalue="400"/>
  101.51 -                </file>
  101.52 -
  101.53 -                <file name="Images.patternItem" url="images_pattern.txt">
  101.54 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.55 -                    <attr name="position" intvalue="300"/>
  101.56 -                </file>
  101.57 -
  101.58 -            </folder>
  101.59 -            <folder name="plain">
  101.60 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  101.61 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.62 -                    <attr name="position" intvalue="100"/>
  101.63 -                </file>
  101.64 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  101.65 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.66 -                    <attr name="position" intvalue="200"/>
  101.67 -                </file>
  101.68 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  101.69 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.70 -                    <attr name="position" intvalue="300"/>
  101.71 -                </file>
  101.72 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  101.73 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.74 -                    <attr name="position" intvalue="400"/>
  101.75 -                </file>
  101.76 -            </folder>
  101.77 -        </folder>
  101.78 -        <folder name="content">
  101.79 -            <folder name="unknown">
  101.80 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  101.81 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.82 -                    <attr name="position" intvalue="100"/>
  101.83 -                </file>
  101.84 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  101.85 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.86 -                    <attr name="position" intvalue="200"/>
  101.87 -                </file>
  101.88 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  101.89 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.90 -                    <attr name="position" intvalue="300"/>
  101.91 -                </file>
  101.92 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  101.93 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  101.94 -                    <attr name="position" intvalue="400"/>
  101.95 -                </file>
  101.96 -            </folder>
  101.97 -        </folder>
  101.98 -    </folder>
  101.99 -    <folder name="OptionsDialog">
 101.100 -        <folder name="Advanced">
 101.101 -            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
 101.102 -        </folder>
 101.103 -    </folder>
 101.104 -</filesystem>
   102.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_8.txt	Wed Sep 12 17:19:28 2012 +0200
   102.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   102.3 @@ -1,101 +0,0 @@
   102.4 -<?xml version="1.0" encoding="UTF-8"?>
   102.5 -
   102.6 -<!-- This is the old license -->
   102.7 -<!-- it is not a very interesting license -->
   102.8 -<!-- but it is here -->
   102.9 -
  102.10 -<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
  102.11 -<filesystem>
  102.12 -    <folder name="Navigator">
  102.13 -        <folder name="Panels">
  102.14 -            <folder name="text">
  102.15 -                <folder name="html">
  102.16 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  102.17 -                </folder>
  102.18 -                <folder name="plain">
  102.19 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  102.20 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  102.21 -                    </file>
  102.22 -                </folder>
  102.23 -            </folder>
  102.24 -            <folder name="content">
  102.25 -                <folder name="unknown">
  102.26 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  102.27 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  102.28 -                    </file>
  102.29 -                </folder>
  102.30 -            </folder>
  102.31 -        </folder>
  102.32 -    </folder>
  102.33 -    <folder name="GenericNavigator">
  102.34 -        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.35 -        <folder name="text">
  102.36 -            <folder name="html">
  102.37 -
  102.38 -                <file name="Headers.patternItem" url="headers_pattern.txt">
  102.39 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.40 -                    <attr name="position" intvalue="100"/>
  102.41 -                </file>
  102.42 -
  102.43 -                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  102.44 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.45 -                    <attr name="position" intvalue="200"/>
  102.46 -                </file>
  102.47 -
  102.48 -                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  102.49 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.50 -                    <attr name="position" intvalue="400"/>
  102.51 -                </file>
  102.52 -
  102.53 -                <file name="Images.patternItem" url="images_pattern.txt">
  102.54 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.55 -                    <attr name="position" intvalue="300"/>
  102.56 -                </file>
  102.57 -
  102.58 -            </folder>
  102.59 -            <folder name="plain">
  102.60 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  102.61 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.62 -                    <attr name="position" intvalue="100"/>
  102.63 -                </file>
  102.64 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  102.65 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.66 -                    <attr name="position" intvalue="200"/>
  102.67 -                </file>
  102.68 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  102.69 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.70 -                    <attr name="position" intvalue="300"/>
  102.71 -                </file>
  102.72 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  102.73 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.74 -                    <attr name="position" intvalue="400"/>
  102.75 -                </file>
  102.76 -            </folder>
  102.77 -        </folder>
  102.78 -        <folder name="content">
  102.79 -            <folder name="unknown">
  102.80 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  102.81 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.82 -                    <attr name="position" intvalue="100"/>
  102.83 -                </file>
  102.84 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  102.85 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.86 -                    <attr name="position" intvalue="200"/>
  102.87 -                </file>
  102.88 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  102.89 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.90 -                    <attr name="position" intvalue="300"/>
  102.91 -                </file>
  102.92 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  102.93 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  102.94 -                    <attr name="position" intvalue="400"/>
  102.95 -                </file>
  102.96 -            </folder>
  102.97 -        </folder>
  102.98 -    </folder>
  102.99 -    <folder name="OptionsDialog">
 102.100 -        <folder name="Advanced">
 102.101 -            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
 102.102 -        </folder>
 102.103 -    </folder>
 102.104 -</filesystem>
   103.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/handlers/xml_golden.txt	Wed Sep 12 17:19:28 2012 +0200
   103.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   103.3 @@ -1,127 +0,0 @@
   103.4 -<?xml version="1.0" encoding="UTF-8"?>
   103.5 -<!--
   103.6 -Copyright (c) 1892-2193 Centrifugal Bumblepuppy, SRO, Inc., LLC, WTF
   103.7 -All rights reversed.
   103.8 -
   103.9 -Redistribution and use in source, binary or corpuscular forms, with or without
  103.10 -modification, are prohibited under all circumstances unless the following
  103.11 -conditions have been met:
  103.12 -
  103.13 -  1. You have an eyeball growing in the palm of your left hand
  103.14 -
  103.15 -  2. Seven dwarfs really like your golden hair
  103.16 -
  103.17 -  3. The moon has reversed its course a multiple of times divisible by
  103.18 -     the eighteenth prime number in the last year
  103.19 -
  103.20 -THIS MALWARE IS PROVIDED ``AS IS'' AND ANY IMPLICIT OR IMPLIED WARRANTIES
  103.21 -INCLUDING BUT NOT LIMITED TO EXPECTATION OF CONTINUED SURVIVAL ARE
  103.22 -DISCLAIMED.  IN NO EVENT SHALL CENTRIFUGAL BUMBLEPUPPY, SRO, INC., LLC, WTF
  103.23 -OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
  103.24 -ECTOPLASMIC OR GEOTHERMAL DAMAGES, INCLUDING BUT NOT LIMITED TO:
  103.25 -SPONTANEOUS HUMAN COMBUSTION, THRID ARM SYNDROME, BAD BREATH, OVOID HEART;
  103.26 -LOSS OF SOUL, ENUII OR EXISTENTIAL INFLAMMATION; OXYGEN EVASION SYNDROME,
  103.27 -BALL DROP, BECOMING A LAWYER.
  103.28 -
  103.29 -BY USING THIS SOFTWARE YOU AGREE TO THE HARVESTING OF YOUR GENETIC MATERIAL
  103.30 -AND/OR OFFSPRING WITHIN THE FIRST THOUSAND YEARS SUBSEQUENT TO FIRST USE, AND
  103.31 -AGREE TO THE USE OF REANIMATION TECHNOLOGIES IF CENTRIFUGAL BUMBLEPUPPY, SRO,
  103.32 -INC., LLC, WTF DEEMS IT NECESSARY AT THEIR SOLE DISCRETION.
  103.33 -
  103.34 -RUN, RUN NOW, AND RUN VERY FAST.
  103.35 --->
  103.36 -<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
  103.37 -<filesystem>
  103.38 -    <folder name="Navigator">
  103.39 -        <folder name="Panels">
  103.40 -            <folder name="text">
  103.41 -                <folder name="html">
  103.42 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  103.43 -                </folder>
  103.44 -                <folder name="plain">
  103.45 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  103.46 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  103.47 -                    </file>
  103.48 -                </folder>
  103.49 -            </folder>
  103.50 -            <folder name="content">
  103.51 -                <folder name="unknown">
  103.52 -                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  103.53 -                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  103.54 -                    </file>
  103.55 -                </folder>
  103.56 -            </folder>
  103.57 -        </folder>
  103.58 -    </folder>
  103.59 -    <folder name="GenericNavigator">
  103.60 -        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  103.61 -        <folder name="text">
  103.62 -            <folder name="html">
  103.63 -
  103.64 -                <file name="Headers.patternItem" url="headers_pattern.txt">
  103.65 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  103.66 -                    <attr name="position" intvalue="100"/>
  103.67 -                </file>
  103.68 -
  103.69 -                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  103.70 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  103.71 -                    <attr name="position" intvalue="200"/>
  103.72 -                </file>
  103.73 -
  103.74 -                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  103.75 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  103.76 -                    <attr name="position" intvalue="400"/>
  103.77 -                </file>
  103.78 -
  103.79 -                <file name="Images.patternItem" url="images_pattern.txt">
  103.80 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  103.81 -                    <attr name="position" intvalue="300"/>
  103.82 -                </file>
  103.83 -
  103.84 -            </folder>
  103.85 -            <folder name="plain">
  103.86 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  103.87 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  103.88 -                    <attr name="position" intvalue="100"/>
  103.89 -                </file>
  103.90 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  103.91 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  103.92 -                    <attr name="position" intvalue="200"/>
  103.93 -                </file>
  103.94 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  103.95 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  103.96 -                    <attr name="position" intvalue="300"/>
  103.97 -                </file>
  103.98 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  103.99 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
 103.100 -                    <attr name="position" intvalue="400"/>
 103.101 -                </file>
 103.102 -            </folder>
 103.103 -        </folder>
 103.104 -        <folder name="content">
 103.105 -            <folder name="unknown">
 103.106 -                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
 103.107 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
 103.108 -                    <attr name="position" intvalue="100"/>
 103.109 -                </file>
 103.110 -                <file name="Sentences.patternItem" url="sentences_pattern.txt">
 103.111 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
 103.112 -                    <attr name="position" intvalue="200"/>
 103.113 -                </file>
 103.114 -                <file name="Quotations.patternItem" url="quotations_pattern.txt">
 103.115 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
 103.116 -                    <attr name="position" intvalue="300"/>
 103.117 -                </file>
 103.118 -                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
 103.119 -                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
 103.120 -                    <attr name="position" intvalue="400"/>
 103.121 -                </file>
 103.122 -            </folder>
 103.123 -        </folder>
 103.124 -    </folder>
 103.125 -    <folder name="OptionsDialog">
 103.126 -        <folder name="Advanced">
 103.127 -            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
 103.128 -        </folder>
 103.129 -    </folder>
 103.130 -</filesystem>
   104.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   104.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFileHandlerTest.java	Fri Sep 14 00:27:52 2012 -0400
   104.3 @@ -0,0 +1,125 @@
   104.4 +/*
   104.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   104.6 + *
   104.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   104.8 + *
   104.9 + * The contents of this file are subject to the terms of either the GNU
  104.10 + * General Public License Version 2 only ("GPL") or the Common
  104.11 + * Development and Distribution License("CDDL") (collectively, the
  104.12 + * "License"). You may not use this file except in compliance with the
  104.13 + * License. You can obtain a copy of the License at
  104.14 + * http://www.netbeans.org/cddl-gplv2.html
  104.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  104.16 + * specific language governing permissions and limitations under the
  104.17 + * License.  When distributing the software, include this License Header
  104.18 + * Notice in each file and include the License file at
  104.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  104.20 + * particular file as subject to the "Classpath" exception as provided
  104.21 + * by Sun in the GPL Version 2 section of the License file that
  104.22 + * accompanied this code. If applicable, add the following below the
  104.23 + * License Header, with the fields enclosed by brackets [] replaced by
  104.24 + * your own identifying information:
  104.25 + * "Portions Copyrighted [year] [name of copyright owner]"
  104.26 + *
  104.27 + * If you wish your version of this file to be governed by only the CDDL
  104.28 + * or only the GPL Version 2, indicate your decision by adding
  104.29 + * "[Contributor] elects to include this software in this distribution
  104.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  104.31 + * single choice of license, a recipient has the option to distribute
  104.32 + * your version of this file under either the CDDL, the GPL Version 2 or
  104.33 + * to extend the choice of license to its licensees as provided above.
  104.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  104.35 + * Version 2 license, then the option applies only if the new code is
  104.36 + * made subject to such option by the copyright holder.
  104.37 + *
  104.38 + * Contributor(s):
  104.39 + *
  104.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  104.41 + */
  104.42 +
  104.43 +package org.netbeans.modules.licensechanger.spi.handlers;
  104.44 +
  104.45 +import java.io.ByteArrayOutputStream;
  104.46 +import java.io.InputStream;
  104.47 +import static org.junit.Assert.*;
  104.48 +import org.junit.Test;
  104.49 +import org.netbeans.modules.licensechanger.api.FileHandler;
  104.50 +import org.openide.filesystems.FileUtil;
  104.51 +import org.openide.util.Utilities;
  104.52 +
  104.53 +/**
  104.54 + *
  104.55 + * @author Tim Boudreau
  104.56 + */
  104.57 +public class JavaFileHandlerTest {
  104.58 +
  104.59 +    @Test
  104.60 +    public void testStuff() throws Exception {
  104.61 +        System.out.println("testStuff");
  104.62 +        String golden = getGolden();
  104.63 +        String license = getLicense();
  104.64 +        for (int i=1; i <= 12; i++) {
  104.65 +            String filename = "java_" + i + ".txt";
  104.66 +            testOneVersion(golden, license, filename);
  104.67 +        }
  104.68 +    }
  104.69 +
  104.70 +    private void testOneVersion(String golden, String license, String filename) throws Exception {
  104.71 +        System.out.println("Test " + filename);
  104.72 +        JavaFileHandler instance = new JavaFileHandler();
  104.73 +        String original = readFile (filename);
  104.74 +        String processed = instance.transform(original, license);
  104.75 +        assertEqualsLineByLine (golden, processed, filename);
  104.76 +    }
  104.77 +
  104.78 +    static void assertEqualsLineByLine (String golden, String processed, String filename) {
  104.79 +        String[] g = FileHandler.splitIntoLines(golden);
  104.80 +        String[] p = FileHandler.splitIntoLines(processed);
  104.81 +        for (int i=0; i < Math.min (g.length, p.length); i++) {
  104.82 +            assertEquals ("Difference in " + filename + " at line " + i + "\n", g[i], p[i]);
  104.83 +        }
  104.84 +    }
  104.85 +
  104.86 +
  104.87 +//    static void assertEqualsLineByLine (String golden, String processed, String filename) {
  104.88 +//        StringTokenizer a = new StringTokenizer (golden, "\n");
  104.89 +//        StringTokenizer b = new StringTokenizer (processed, "\n");
  104.90 +//        int ix = 0;
  104.91 +//        while (a.hasMoreTokens() && b.hasMoreTokens()) {
  104.92 +//            String as = a.nextToken();
  104.93 +//            String bs = b.nextToken();
  104.94 +//            if (!as.equals(bs)) {
  104.95 +//                System.err.println("PROCESSED OUTPUT ");
  104.96 +//            }
  104.97 +//            assertEquals ("Difference in " + filename + " at line " + ix + "\n", as, bs);
  104.98 +//            ix++;
  104.99 +//        }
 104.100 +//
 104.101 +//    }
 104.102 +
 104.103 +    private static String getGolden() throws Exception {
 104.104 +        return readFile ("java_golden.txt");
 104.105 +    }
 104.106 +
 104.107 +    static String getLicense() throws Exception {
 104.108 +        return readFile ("fake_license.txt");
 104.109 +    }
 104.110 +
 104.111 +    static String readFile (String name) throws Exception {
 104.112 +        InputStream in = JavaFileHandlerTest.class.getResourceAsStream(name);
 104.113 +        if (in == null) {
 104.114 +            fail ("No input stream for " + name);
 104.115 +        }
 104.116 +        ByteArrayOutputStream out = new ByteArrayOutputStream();
 104.117 +        try {
 104.118 +            FileUtil.copy (in, out);
 104.119 +        } finally {
 104.120 +            in.close();
 104.121 +            out.close();
 104.122 +        }
 104.123 +        String result = new String (out.toByteArray(), "UTF-8");
 104.124 +        result = Utilities.replaceString(result, "\r\n", "\n");
 104.125 +        return result;
 104.126 +    }
 104.127 + 
 104.128 +}
 104.129 \ No newline at end of file
   105.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   105.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/PropertiesFileHandlerTest.java	Fri Sep 14 00:27:52 2012 -0400
   105.3 @@ -0,0 +1,79 @@
   105.4 +/*
   105.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   105.6 + *
   105.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   105.8 + *
   105.9 + * The contents of this file are subject to the terms of either the GNU
  105.10 + * General Public License Version 2 only ("GPL") or the Common
  105.11 + * Development and Distribution License("CDDL") (collectively, the
  105.12 + * "License"). You may not use this file except in compliance with the
  105.13 + * License. You can obtain a copy of the License at
  105.14 + * http://www.netbeans.org/cddl-gplv2.html
  105.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  105.16 + * specific language governing permissions and limitations under the
  105.17 + * License.  When distributing the software, include this License Header
  105.18 + * Notice in each file and include the License file at
  105.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  105.20 + * particular file as subject to the "Classpath" exception as provided
  105.21 + * by Sun in the GPL Version 2 section of the License file that
  105.22 + * accompanied this code. If applicable, add the following below the
  105.23 + * License Header, with the fields enclosed by brackets [] replaced by
  105.24 + * your own identifying information:
  105.25 + * "Portions Copyrighted [year] [name of copyright owner]"
  105.26 + *
  105.27 + * If you wish your version of this file to be governed by only the CDDL
  105.28 + * or only the GPL Version 2, indicate your decision by adding
  105.29 + * "[Contributor] elects to include this software in this distribution
  105.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  105.31 + * single choice of license, a recipient has the option to distribute
  105.32 + * your version of this file under either the CDDL, the GPL Version 2 or
  105.33 + * to extend the choice of license to its licensees as provided above.
  105.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  105.35 + * Version 2 license, then the option applies only if the new code is
  105.36 + * made subject to such option by the copyright holder.
  105.37 + *
  105.38 + * Contributor(s):
  105.39 + *
  105.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  105.41 + */
  105.42 +
  105.43 +package org.netbeans.modules.licensechanger.spi.handlers;
  105.44 +
  105.45 +import org.netbeans.modules.licensechanger.spi.handlers.PropertiesFileHandler;
  105.46 +import org.junit.Test;
  105.47 +import static org.junit.Assert.*;
  105.48 +
  105.49 +/**
  105.50 + *
  105.51 + * @author Tim Boudreau
  105.52 + */
  105.53 +public class PropertiesFileHandlerTest {
  105.54 +
  105.55 +    @Test
  105.56 +    public void testStuff() throws Exception {
  105.57 +        System.out.println("testStuff");
  105.58 +        String golden = getGolden();
  105.59 +        String license = JavaFileHandlerTest.getLicense();
  105.60 +        for (int i=1; i <= 4; i++) {
  105.61 +            testOneVersion (golden, license, "props_" + i + ".txt");
  105.62 +        }
  105.63 +        assertEquals (0, 0);
  105.64 +    }
  105.65 +
  105.66 +    private void testOneVersion(String golden, String license, String filename) throws Exception {
  105.67 +        System.out.println("Test " + filename);
  105.68 +        PropertiesFileHandler instance = new PropertiesFileHandler();
  105.69 +        String original = JavaFileHandlerTest.readFile (filename);
  105.70 +        String processed = instance.transform(original, license);
  105.71 +//        if (!original.equals(processed)) {
  105.72 +//            System.out.println("************************************");
  105.73 +//            System.out.println(processed);
  105.74 +//            System.out.println("************************************");
  105.75 +//        }
  105.76 +        JavaFileHandlerTest.assertEqualsLineByLine (golden, processed, filename);
  105.77 +    }
  105.78 +
  105.79 +    private static String getGolden() throws Exception {
  105.80 +        return JavaFileHandlerTest.readFile ("props_golden.txt");
  105.81 +    }
  105.82 +}
  105.83 \ No newline at end of file
   106.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   106.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/XmlFileHandlerTest.java	Fri Sep 14 00:27:52 2012 -0400
   106.3 @@ -0,0 +1,119 @@
   106.4 +/*
   106.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   106.6 + *
   106.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   106.8 + *
   106.9 + * The contents of this file are subject to the terms of either the GNU
  106.10 + * General Public License Version 2 only ("GPL") or the Common
  106.11 + * Development and Distribution License("CDDL") (collectively, the
  106.12 + * "License"). You may not use this file except in compliance with the
  106.13 + * License. You can obtain a copy of the License at
  106.14 + * http://www.netbeans.org/cddl-gplv2.html
  106.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  106.16 + * specific language governing permissions and limitations under the
  106.17 + * License.  When distributing the software, include this License Header
  106.18 + * Notice in each file and include the License file at
  106.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  106.20 + * particular file as subject to the "Classpath" exception as provided
  106.21 + * by Sun in the GPL Version 2 section of the License file that
  106.22 + * accompanied this code. If applicable, add the following below the
  106.23 + * License Header, with the fields enclosed by brackets [] replaced by
  106.24 + * your own identifying information:
  106.25 + * "Portions Copyrighted [year] [name of copyright owner]"
  106.26 + *
  106.27 + * If you wish your version of this file to be governed by only the CDDL
  106.28 + * or only the GPL Version 2, indicate your decision by adding
  106.29 + * "[Contributor] elects to include this software in this distribution
  106.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  106.31 + * single choice of license, a recipient has the option to distribute
  106.32 + * your version of this file under either the CDDL, the GPL Version 2 or
  106.33 + * to extend the choice of license to its licensees as provided above.
  106.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  106.35 + * Version 2 license, then the option applies only if the new code is
  106.36 + * made subject to such option by the copyright holder.
  106.37 + *
  106.38 + * Contributor(s):
  106.39 + *
  106.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  106.41 + */
  106.42 +
  106.43 +package org.netbeans.modules.licensechanger.spi.handlers;
  106.44 +
  106.45 +import org.netbeans.modules.licensechanger.spi.handlers.XmlFileHandler;
  106.46 +import java.util.StringTokenizer;
  106.47 +import java.util.regex.Matcher;
  106.48 +import org.junit.Test;
  106.49 +import org.netbeans.modules.licensechanger.api.FileHandler;
  106.50 +import static org.junit.Assert.*;
  106.51 +
  106.52 +/**
  106.53 + *
  106.54 + * @author Tim Boudreau
  106.55 + */
  106.56 +public class XmlFileHandlerTest {
  106.57 +    @Test
  106.58 +    public void testDeclarationFinder() throws Exception {
  106.59 +        String xml = getGolden();
  106.60 +        assertDeclarationFound (xml, "xml_golden.txt");
  106.61 +        for (int i=1; i <= 8; i++) {
  106.62 +            String filename = "xml_" + i + ".txt";
  106.63 +            String content = JavaFileHandlerTest.readFile(filename);
  106.64 +            assertDeclarationFound(content, filename);
  106.65 +        }
  106.66 +    }
  106.67 +
  106.68 +    private void assertDeclarationFound (String content, String filename) {
  106.69 +        String[] lines = FileHandler.splitIntoLines(content);
  106.70 +        boolean found = false;
  106.71 +        for (int i = 0; i < lines.length; i++) {
  106.72 +            String line = lines[i];
  106.73 +            Matcher m = XmlFileHandler.xmlDeclaration.matcher(line);
  106.74 +            found = m.find();
  106.75 +            if (found) {
  106.76 +                System.err.println("Found declaration in line " + line + " of " + filename + "\n"
  106.77 +                        + m.group(1));
  106.78 +                break;
  106.79 +            }
  106.80 +        }
  106.81 +        assertTrue ("Did not find xml declaration in " + filename, found);
  106.82 +    }
  106.83 +
  106.84 +    @Test
  106.85 +    public void testStuff() throws Exception {
  106.86 +        System.out.println("testStuff");
  106.87 +        String golden = getGolden();
  106.88 +        String license = JavaFileHandlerTest.getLicense();
  106.89 +        for (int i=1; i <= 8; i++) {
  106.90 +            String filename = "xml_" + i + ".txt";
  106.91 +            testOneVersion(golden, license, filename);
  106.92 +        }
  106.93 +    }
  106.94 +
  106.95 +    private void testOneVersion(String golden, String license, String filename) throws Exception {
  106.96 +        System.out.println("Test " + filename);
  106.97 +        XmlFileHandler instance = new XmlFileHandler();
  106.98 +        String original = JavaFileHandlerTest.readFile (filename);
  106.99 +        String processed = instance.transform(original, license);
 106.100 +        assertEqualsLineByLine (golden, processed, filename);
 106.101 +    }
 106.102 +
 106.103 +    static void assertEqualsLineByLine (String golden, String processed, String filename) {
 106.104 +        StringTokenizer a = new StringTokenizer (golden, "\n");
 106.105 +        StringTokenizer b = new StringTokenizer (processed, "\n");
 106.106 +        int ix = 0;
 106.107 +        while (a.hasMoreTokens() && b.hasMoreTokens()) {
 106.108 +            String as = a.nextToken();
 106.109 +            String bs = b.nextToken();
 106.110 +            if (!as.equals(bs)) {
 106.111 +                System.err.println("PROCESSED OUTPUT ");
 106.112 +            }
 106.113 +            assertEquals ("Difference in " + filename + " at line " + ix + "\n", as, bs);
 106.114 +            ix++;
 106.115 +        }
 106.116 +
 106.117 +    }
 106.118 +
 106.119 +    private static String getGolden() throws Exception {
 106.120 +        return JavaFileHandlerTest.readFile ("xml_golden.txt");
 106.121 +    }
 106.122 +}
 106.123 \ No newline at end of file
   107.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   107.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/fake_license.txt	Fri Sep 14 00:27:52 2012 -0400
   107.3 @@ -0,0 +1,29 @@
   107.4 +Copyright (c) 1892-2193 Centrifugal Bumblepuppy, SRO, Inc., LLC, WTF
   107.5 +All rights reversed.
   107.6 +
   107.7 +Redistribution and use in source, binary or corpuscular forms, with or without
   107.8 +modification, are prohibited under all circumstances unless the following
   107.9 +conditions have been met:
  107.10 +
  107.11 +  1. You have an eyeball growing in the palm of your left hand
  107.12 +
  107.13 +  2. Seven dwarfs really like your golden hair
  107.14 +
  107.15 +  3. The moon has reversed its course a multiple of times divisible by
  107.16 +     the eighteenth prime number in the last year
  107.17 +
  107.18 +THIS MALWARE IS PROVIDED ``AS IS'' AND ANY IMPLICIT OR IMPLIED WARRANTIES
  107.19 +INCLUDING BUT NOT LIMITED TO EXPECTATION OF CONTINUED SURVIVAL ARE
  107.20 +DISCLAIMED.  IN NO EVENT SHALL CENTRIFUGAL BUMBLEPUPPY, SRO, INC., LLC, WTF
  107.21 +OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
  107.22 +ECTOPLASMIC OR GEOTHERMAL DAMAGES, INCLUDING BUT NOT LIMITED TO:
  107.23 +SPONTANEOUS HUMAN COMBUSTION, THRID ARM SYNDROME, BAD BREATH, OVOID HEART;
  107.24 +LOSS OF SOUL, ENUII OR EXISTENTIAL INFLAMMATION; OXYGEN EVASION SYNDROME,
  107.25 +BALL DROP, BECOMING A LAWYER.
  107.26 +
  107.27 +BY USING THIS SOFTWARE YOU AGREE TO THE HARVESTING OF YOUR GENETIC MATERIAL
  107.28 +AND/OR OFFSPRING WITHIN THE FIRST THOUSAND YEARS SUBSEQUENT TO FIRST USE, AND
  107.29 +AGREE TO THE USE OF REANIMATION TECHNOLOGIES IF CENTRIFUGAL BUMBLEPUPPY, SRO,
  107.30 +INC., LLC, WTF DEEMS IT NECESSARY AT THEIR SOLE DISCRETION.
  107.31 +
  107.32 +RUN, RUN NOW, AND RUN VERY FAST.
   108.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   108.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_1.txt	Fri Sep 14 00:27:52 2012 -0400
   108.3 @@ -0,0 +1,139 @@
   108.4 +/*
   108.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   108.6 + *
   108.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   108.8 + *
   108.9 + * The contents of this file are subject to the terms of either the GNU
  108.10 + * General Public License Version 2 only ("GPL") or the Common
  108.11 + * Development and Distribution License("CDDL") (collectively, the
  108.12 + * "License"). You may not use this file except in compliance with the
  108.13 + * License. You can obtain a copy of the License at
  108.14 + * http://www.netbeans.org/cddl-gplv2.html
  108.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  108.16 + * specific language governing permissions and limitations under the
  108.17 + * License.  When distributing the software, include this License Header
  108.18 + * Notice in each file and include the License file at
  108.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  108.20 + * particular file as subject to the "Classpath" exception as provided
  108.21 + * by Sun in the GPL Version 2 section of the License file that
  108.22 + * accompanied this code. If applicable, add the following below the
  108.23 + * License Header, with the fields enclosed by brackets [] replaced by
  108.24 + * your own identifying information:
  108.25 + * "Portions Copyrighted [year] [name of copyright owner]"
  108.26 + *
  108.27 + * If you wish your version of this file to be governed by only the CDDL
  108.28 + * or only the GPL Version 2, indicate your decision by adding
  108.29 + * "[Contributor] elects to include this software in this distribution
  108.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  108.31 + * single choice of license, a recipient has the option to distribute
  108.32 + * your version of this file under either the CDDL, the GPL Version 2 or
  108.33 + * to extend the choice of license to its licensees as provided above.
  108.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  108.35 + * Version 2 license, then the option applies only if the new code is
  108.36 + * made subject to such option by the copyright holder.
  108.37 + *
  108.38 + * Contributor(s):
  108.39 + *
  108.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  108.41 + */
  108.42 +
  108.43 +package org.netbeans.modules.licensechanger;
  108.44 +
  108.45 +import java.util.Collection;
  108.46 +import java.util.HashSet;
  108.47 +import java.util.LinkedList;
  108.48 +import java.util.List;
  108.49 +import java.util.Set;
  108.50 +import javax.swing.Action;
  108.51 +import org.netbeans.modules.licensechanger.api.FileHandler;
  108.52 +import org.openide.filesystems.FileObject;
  108.53 +import org.openide.loaders.DataObject;
  108.54 +import org.openide.loaders.DataObjectNotFoundException;
  108.55 +import org.openide.nodes.ChildFactory;
  108.56 +import org.openide.nodes.FilterNode;
  108.57 +import org.openide.nodes.Node;
  108.58 +import org.openide.util.Exceptions;
  108.59 +import org.openide.util.Lookup;
  108.60 +import org.openide.util.lookup.Lookups;
  108.61 +import org.openide.util.lookup.ProxyLookup;
  108.62 +
  108.63 +/**
  108.64 + *
  108.65 + * @author Tim Boudreau
  108.66 + */
  108.67 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  108.68 +    private final Set<FileObject> folders;
  108.69 +    private final Collection <? extends FileHandler> allHandlers;
  108.70 +    FileChildren (Set<FileObject> folders) {
  108.71 +        this.folders = new HashSet(folders);
  108.72 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  108.73 +    }
  108.74 +
  108.75 +    @Override
  108.76 +    protected boolean createKeys(List<FileObject> toPopulate) {
  108.77 +        toPopulate.addAll (folders);
  108.78 +        return true;
  108.79 +    }
  108.80 +
  108.81 +    @Override
  108.82 +    protected Node[] createNodesForKey(FileObject key) {
  108.83 +        List<Node> result = new LinkedList<Node>();
  108.84 +outer:  for (FileObject fo : key.getChildren()) {
  108.85 +            if (fo.isData()) {
  108.86 +                for (FileHandler h : allHandlers) {
  108.87 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  108.88 +                        try {
  108.89 +                            DataObject dob = DataObject.find(fo);
  108.90 +                            FileItem item = new FileItem (h, fo);
  108.91 +                            result.add (new FN (dob.getNodeDelegate(), item));
  108.92 +                            break outer;
  108.93 +                        } catch (DataObjectNotFoundException ex) {
  108.94 +                            Exceptions.printStackTrace(ex);
  108.95 +                        }
  108.96 +                    }
  108.97 +                }
  108.98 +            }
  108.99 +        }
 108.100 +        return result.toArray(new Node[result.size()]);
 108.101 +    }
 108.102 +
 108.103 +    static final class FileItem {
 108.104 +        FileHandler handler;
 108.105 +        FileObject file;
 108.106 +
 108.107 +        public FileItem(FileHandler handler, FileObject file) {
 108.108 +            this.handler = handler;
 108.109 +            this.file = file;
 108.110 +        }
 108.111 +
 108.112 +        public FileObject getFile() {
 108.113 +            return file;
 108.114 +        }
 108.115 +
 108.116 +        public FileHandler getHandler() {
 108.117 +            return handler;
 108.118 +        }
 108.119 +
 108.120 +    }
 108.121 +
 108.122 +    private static final class FN extends FilterNode {
 108.123 +        FN(Node orig, FileItem item) {
 108.124 +            super (orig, Children.LEAF, new ProxyLookup(
 108.125 +                    Lookups.singleton(item),
 108.126 +                    orig.getLookup()));
 108.127 +            disableDelegation(DELEGATE_GET_ACTIONS);
 108.128 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
 108.129 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
 108.130 +            disableDelegation(DELEGATE_GET_VALUE);
 108.131 +            disableDelegation(DELEGATE_SET_VALUE);
 108.132 +            disableDelegation(DELEGATE_SET_NAME);
 108.133 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
 108.134 +            setDisplayName (item.file.getPath());
 108.135 +        }
 108.136 +
 108.137 +        @Override
 108.138 +        public Action[] getActions(boolean ignored) {
 108.139 +            return new Action[0];
 108.140 +        }
 108.141 +    }
 108.142 +}
   109.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   109.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_10.txt	Fri Sep 14 00:27:52 2012 -0400
   109.3 @@ -0,0 +1,145 @@
   109.4 +/*
   109.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   109.6 + *
   109.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   109.8 + *
   109.9 + * The contents of this file are subject to the terms of either the GNU
  109.10 + * General Public License Version 2 only ("GPL") or the Common
  109.11 + * Development and Distribution License("CDDL") (collectively, the
  109.12 + * "License"). You may not use this file except in compliance with the
  109.13 + * License. You can obtain a copy of the License at
  109.14 + * http://www.netbeans.org/cddl-gplv2.html
  109.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  109.16 + * specific language governing permissions and limitations under the
  109.17 + * License.  When distributing the software, include this License Header
  109.18 + * Notice in each file and include the License file at
  109.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  109.20 + * particular file as subject to the "Classpath" exception as provided
  109.21 + * by Sun in the GPL Version 2 section of the License file that
  109.22 + * accompanied this code. If applicable, add the following below the
  109.23 + * License Header, with the fields enclosed by brackets [] replaced by
  109.24 + * your own identifying information:
  109.25 + * "Portions Copyrighted [year] [name of copyright owner]"
  109.26 + *
  109.27 + * If you wish your version of this file to be governed by only the CDDL
  109.28 + * or only the GPL Version 2, indicate your decision by adding
  109.29 + * "[Contributor] elects to include this software in this distribution
  109.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  109.31 + * single choice of license, a recipient has the option to distribute
  109.32 + * your version of this file under either the CDDL, the GPL Version 2 or
  109.33 + * to extend the choice of license to its licensees as provided above.
  109.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  109.35 + * Version 2 license, then the option applies only if the new code is
  109.36 + * made subject to such option by the copyright holder.
  109.37 + *
  109.38 + * Contributor(s):
  109.39 + *
  109.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  109.41 + */
  109.42 +/* Created on March 14, 2009 
  109.43 + * by some IDE or other
  109.44 + */
  109.45 +
  109.46 +//blah blah blah
  109.47 +//blah blah blah
  109.48 +
  109.49 +package org.netbeans.modules.licensechanger;
  109.50 +
  109.51 +import java.util.Collection;
  109.52 +import java.util.HashSet;
  109.53 +import java.util.LinkedList;
  109.54 +import java.util.List;
  109.55 +import java.util.Set;
  109.56 +import javax.swing.Action;
  109.57 +import org.netbeans.modules.licensechanger.api.FileHandler;
  109.58 +import org.openide.filesystems.FileObject;
  109.59 +import org.openide.loaders.DataObject;
  109.60 +import org.openide.loaders.DataObjectNotFoundException;
  109.61 +import org.openide.nodes.ChildFactory;
  109.62 +import org.openide.nodes.FilterNode;
  109.63 +import org.openide.nodes.Node;
  109.64 +import org.openide.util.Exceptions;
  109.65 +import org.openide.util.Lookup;
  109.66 +import org.openide.util.lookup.Lookups;
  109.67 +import org.openide.util.lookup.ProxyLookup;
  109.68 +
  109.69 +/**
  109.70 + *
  109.71 + * @author Tim Boudreau
  109.72 + */
  109.73 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  109.74 +    private final Set<FileObject> folders;
  109.75 +    private final Collection <? extends FileHandler> allHandlers;
  109.76 +    FileChildren (Set<FileObject> folders) {
  109.77 +        this.folders = new HashSet(folders);
  109.78 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  109.79 +    }
  109.80 +
  109.81 +    @Override
  109.82 +    protected boolean createKeys(List<FileObject> toPopulate) {
  109.83 +        toPopulate.addAll (folders);
  109.84 +        return true;
  109.85 +    }
  109.86 +
  109.87 +    @Override
  109.88 +    protected Node[] createNodesForKey(FileObject key) {
  109.89 +        List<Node> result = new LinkedList<Node>();
  109.90 +outer:  for (FileObject fo : key.getChildren()) {
  109.91 +            if (fo.isData()) {
  109.92 +                for (FileHandler h : allHandlers) {
  109.93 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  109.94 +                        try {
  109.95 +                            DataObject dob = DataObject.find(fo);
  109.96 +                            FileItem item = new FileItem (h, fo);
  109.97 +                            result.add (new FN (dob.getNodeDelegate(), item));
  109.98 +                            break outer;
  109.99 +                        } catch (DataObjectNotFoundException ex) {
 109.100 +                            Exceptions.printStackTrace(ex);
 109.101 +                        }
 109.102 +                    }
 109.103 +                }
 109.104 +            }
 109.105 +        }
 109.106 +        return result.toArray(new Node[result.size()]);
 109.107 +    }
 109.108 +
 109.109 +    static final class FileItem {
 109.110 +        FileHandler handler;
 109.111 +        FileObject file;
 109.112 +
 109.113 +        public FileItem(FileHandler handler, FileObject file) {
 109.114 +            this.handler = handler;
 109.115 +            this.file = file;
 109.116 +        }
 109.117 +
 109.118 +        public FileObject getFile() {
 109.119 +            return file;
 109.120 +        }
 109.121 +
 109.122 +        public FileHandler getHandler() {
 109.123 +            return handler;
 109.124 +        }
 109.125 +
 109.126 +    }
 109.127 +
 109.128 +    private static final class FN extends FilterNode {
 109.129 +        FN(Node orig, FileItem item) {
 109.130 +            super (orig, Children.LEAF, new ProxyLookup(
 109.131 +                    Lookups.singleton(item),
 109.132 +                    orig.getLookup()));
 109.133 +            disableDelegation(DELEGATE_GET_ACTIONS);
 109.134 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
 109.135 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
 109.136 +            disableDelegation(DELEGATE_GET_VALUE);
 109.137 +            disableDelegation(DELEGATE_SET_VALUE);
 109.138 +            disableDelegation(DELEGATE_SET_NAME);
 109.139 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
 109.140 +            setDisplayName (item.file.getPath());
 109.141 +        }
 109.142 +
 109.143 +        @Override
 109.144 +        public Action[] getActions(boolean ignored) {
 109.145 +            return new Action[0];
 109.146 +        }
 109.147 +    }
 109.148 +}
   110.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   110.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_11.txt	Fri Sep 14 00:27:52 2012 -0400
   110.3 @@ -0,0 +1,149 @@
   110.4 +/*
   110.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   110.6 + *
   110.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   110.8 + *
   110.9 + * The contents of this file are subject to the terms of either the GNU
  110.10 + * General Public License Version 2 only ("GPL") or the Common
  110.11 + * Development and Distribution License("CDDL") (collectively, the
  110.12 + * "License"). You may not use this file except in compliance with the
  110.13 + * License. You can obtain a copy of the License at
  110.14 + * http://www.netbeans.org/cddl-gplv2.html
  110.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  110.16 + * specific language governing permissions and limitations under the */
  110.17 +
  110.18 +//BLAH BLAH BLAH
  110.19 +//BLAH BLAH BLAH
  110.20 +
  110.21 +     /* License.  When distributing the software, include this License Header
  110.22 + * Notice in each file and include the License file at
  110.23 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  110.24 + * particular file as subject to the "Classpath" exception as provided
  110.25 + * by Sun in the GPL Version 2 section of the License file that
  110.26 + * accompanied this code. If applicable, add the following below the
  110.27 + * License Header, with the fields enclosed by brackets [] replaced by
  110.28 + * your own identifying information:
  110.29 + * "Portions Copyrighted [year] [name of copyright owner]"
  110.30 + *
  110.31 + * If you wish your version of this file to be governed by only the CDDL
  110.32 + * or only the GPL Version 2, indicate your decision by adding
  110.33 + * "[Contributor] elects to include this software in this distribution
  110.34 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  110.35 + * single choice of license, a recipient has the option to distribute
  110.36 + * your version of this file under either the CDDL, the GPL Version 2 or
  110.37 + * to extend the choice of license to its licensees as provided above.
  110.38 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  110.39 + * Version 2 license, then the option applies only if the new code is
  110.40 + * made subject to such option by the copyright holder.
  110.41 + *
  110.42 + * Contributor(s):
  110.43 + *
  110.44 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  110.45 + */
  110.46 +/* Created on March 14, 2009 
  110.47 + * by some IDE or other
  110.48 + */
  110.49 +
  110.50 +//blah blah blah
  110.51 +//blah blah blah
  110.52 +
  110.53 +package org.netbeans.modules.licensechanger;
  110.54 +
  110.55 +import java.util.Collection;
  110.56 +import java.util.HashSet;
  110.57 +import java.util.LinkedList;
  110.58 +import java.util.List;
  110.59 +import java.util.Set;
  110.60 +import javax.swing.Action;
  110.61 +import org.netbeans.modules.licensechanger.api.FileHandler;
  110.62 +import org.openide.filesystems.FileObject;
  110.63 +import org.openide.loaders.DataObject;
  110.64 +import org.openide.loaders.DataObjectNotFoundException;
  110.65 +import org.openide.nodes.ChildFactory;
  110.66 +import org.openide.nodes.FilterNode;
  110.67 +import org.openide.nodes.Node;
  110.68 +import org.openide.util.Exceptions;
  110.69 +import org.openide.util.Lookup;
  110.70 +import org.openide.util.lookup.Lookups;
  110.71 +import org.openide.util.lookup.ProxyLookup;
  110.72 +
  110.73 +/**
  110.74 + *
  110.75 + * @author Tim Boudreau
  110.76 + */
  110.77 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  110.78 +    private final Set<FileObject> folders;
  110.79 +    private final Collection <? extends FileHandler> allHandlers;
  110.80 +    FileChildren (Set<FileObject> folders) {
  110.81 +        this.folders = new HashSet(folders);
  110.82 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  110.83 +    }
  110.84 +
  110.85 +    @Override
  110.86 +    protected boolean createKeys(List<FileObject> toPopulate) {
  110.87 +        toPopulate.addAll (folders);
  110.88 +        return true;
  110.89 +    }
  110.90 +
  110.91 +    @Override
  110.92 +    protected Node[] createNodesForKey(FileObject key) {
  110.93 +        List<Node> result = new LinkedList<Node>();
  110.94 +outer:  for (FileObject fo : key.getChildren()) {
  110.95 +            if (fo.isData()) {
  110.96 +                for (FileHandler h : allHandlers) {
  110.97 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  110.98 +                        try {
  110.99 +                            DataObject dob = DataObject.find(fo);
 110.100 +                            FileItem item = new FileItem (h, fo);
 110.101 +                            result.add (new FN (dob.getNodeDelegate(), item));
 110.102 +                            break outer;
 110.103 +                        } catch (DataObjectNotFoundException ex) {
 110.104 +                            Exceptions.printStackTrace(ex);
 110.105 +                        }
 110.106 +                    }
 110.107 +                }
 110.108 +            }
 110.109 +        }
 110.110 +        return result.toArray(new Node[result.size()]);
 110.111 +    }
 110.112 +
 110.113 +    static final class FileItem {
 110.114 +        FileHandler handler;
 110.115 +        FileObject file;
 110.116 +
 110.117 +        public FileItem(FileHandler handler, FileObject file) {
 110.118 +            this.handler = handler;
 110.119 +            this.file = file;
 110.120 +        }
 110.121 +
 110.122 +        public FileObject getFile() {
 110.123 +            return file;
 110.124 +        }
 110.125 +
 110.126 +        public FileHandler getHandler() {
 110.127 +            return handler;
 110.128 +        }
 110.129 +
 110.130 +    }
 110.131 +
 110.132 +    private static final class FN extends FilterNode {
 110.133 +        FN(Node orig, FileItem item) {
 110.134 +            super (orig, Children.LEAF, new ProxyLookup(
 110.135 +                    Lookups.singleton(item),
 110.136 +                    orig.getLookup()));
 110.137 +            disableDelegation(DELEGATE_GET_ACTIONS);
 110.138 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
 110.139 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
 110.140 +            disableDelegation(DELEGATE_GET_VALUE);
 110.141 +            disableDelegation(DELEGATE_SET_VALUE);
 110.142 +            disableDelegation(DELEGATE_SET_NAME);
 110.143 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
 110.144 +            setDisplayName (item.file.getPath());
 110.145 +        }
 110.146 +
 110.147 +        @Override
 110.148 +        public Action[] getActions(boolean ignored) {
 110.149 +            return new Action[0];
 110.150 +        }
 110.151 +    }
 110.152 +}
   111.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   111.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_12.txt	Fri Sep 14 00:27:52 2012 -0400
   111.3 @@ -0,0 +1,148 @@
   111.4 +/*
   111.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   111.6 + *
   111.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   111.8 + *
   111.9 + * The contents of this file are subject to the terms of either the GNU
  111.10 + * General Public License Version 2 only ("GPL") or the Common
  111.11 + * Development and Distribution License("CDDL") (collectively, the
  111.12 + * "License"). You may not use this file except in compliance with the
  111.13 + * License. You can obtain a copy of the License at
  111.14 + * http://www.netbeans.org/cddl-gplv2.html
  111.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  111.16 + * specific language governing permissions and limitations under the
  111.17 +*/
  111.18 +//BLAH BLAH BLAH
  111.19 +//BLAH BLAH BLAH
  111.20 +     /* License.  When distributing the software, include this License Header
  111.21 + * Notice in each file and include the License file at
  111.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  111.23 + * particular file as subject to the "Classpath" exception as provided
  111.24 + * by Sun in the GPL Version 2 section of the License file that
  111.25 + * accompanied this code. If applicable, add the following below the
  111.26 + * License Header, with the fields enclosed by brackets [] replaced by
  111.27 + * your own identifying information:
  111.28 + * "Portions Copyrighted [year] [name of copyright owner]"
  111.29 + *
  111.30 + * If you wish your version of this file to be governed by only the CDDL
  111.31 + * or only the GPL Version 2, indicate your decision by adding
  111.32 + * "[Contributor] elects to include this software in this distribution
  111.33 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  111.34 + * single choice of license, a recipient has the option to distribute
  111.35 + * your version of this file under either the CDDL, the GPL Version 2 or
  111.36 + * to extend the choice of license to its licensees as provided above.
  111.37 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  111.38 + * Version 2 license, then the option applies only if the new code is
  111.39 + * made subject to such option by the copyright holder.
  111.40 + *
  111.41 + * Contributor(s):
  111.42 + *
  111.43 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  111.44 + */
  111.45 +/* Created on March 14, 2009 
  111.46 + * by some IDE or other
  111.47 + */
  111.48 +
  111.49 +//blah blah blah
  111.50 +//blah blah blah
  111.51 +
  111.52 +package org.netbeans.modules.licensechanger;
  111.53 +
  111.54 +import java.util.Collection;
  111.55 +import java.util.HashSet;
  111.56 +import java.util.LinkedList;
  111.57 +import java.util.List;
  111.58 +import java.util.Set;
  111.59 +import javax.swing.Action;
  111.60 +import org.netbeans.modules.licensechanger.api.FileHandler;
  111.61 +import org.openide.filesystems.FileObject;
  111.62 +import org.openide.loaders.DataObject;
  111.63 +import org.openide.loaders.DataObjectNotFoundException;
  111.64 +import org.openide.nodes.ChildFactory;
  111.65 +import org.openide.nodes.FilterNode;
  111.66 +import org.openide.nodes.Node;
  111.67 +import org.openide.util.Exceptions;
  111.68 +import org.openide.util.Lookup;
  111.69 +import org.openide.util.lookup.Lookups;
  111.70 +import org.openide.util.lookup.ProxyLookup;
  111.71 +
  111.72 +/**
  111.73 + *
  111.74 + * @author Tim Boudreau
  111.75 + */
  111.76 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  111.77 +    private final Set<FileObject> folders;
  111.78 +    private final Collection <? extends FileHandler> allHandlers;
  111.79 +    FileChildren (Set<FileObject> folders) {
  111.80 +        this.folders = new HashSet(folders);
  111.81 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  111.82 +    }
  111.83 +
  111.84 +    @Override
  111.85 +    protected boolean createKeys(List<FileObject> toPopulate) {
  111.86 +        toPopulate.addAll (folders);
  111.87 +        return true;
  111.88 +    }
  111.89 +
  111.90 +    @Override
  111.91 +    protected Node[] createNodesForKey(FileObject key) {
  111.92 +        List<Node> result = new LinkedList<Node>();
  111.93 +outer:  for (FileObject fo : key.getChildren()) {
  111.94 +            if (fo.isData()) {
  111.95 +                for (FileHandler h : allHandlers) {
  111.96 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  111.97 +                        try {
  111.98 +                            DataObject dob = DataObject.find(fo);
  111.99 +                            FileItem item = new FileItem (h, fo);
 111.100 +                            result.add (new FN (dob.getNodeDelegate(), item));
 111.101 +                            break outer;
 111.102 +                        } catch (DataObjectNotFoundException ex) {
 111.103 +                            Exceptions.printStackTrace(ex);
 111.104 +                        }
 111.105 +                    }
 111.106 +                }
 111.107 +            }
 111.108 +        }
 111.109 +        return result.toArray(new Node[result.size()]);
 111.110 +    }
 111.111 +
 111.112 +    static final class FileItem {
 111.113 +        FileHandler handler;
 111.114 +        FileObject file;
 111.115 +
 111.116 +        public FileItem(FileHandler handler, FileObject file) {
 111.117 +            this.handler = handler;
 111.118 +            this.file = file;
 111.119 +        }
 111.120 +
 111.121 +        public FileObject getFile() {
 111.122 +            return file;
 111.123 +        }
 111.124 +
 111.125 +        public FileHandler getHandler() {
 111.126 +            return handler;
 111.127 +        }
 111.128 +
 111.129 +    }
 111.130 +
 111.131 +    private static final class FN extends FilterNode {
 111.132 +        FN(Node orig, FileItem item) {
 111.133 +            super (orig, Children.LEAF, new ProxyLookup(
 111.134 +                    Lookups.singleton(item),
 111.135 +                    orig.getLookup()));
 111.136 +            disableDelegation(DELEGATE_GET_ACTIONS);
 111.137 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
 111.138 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
 111.139 +            disableDelegation(DELEGATE_GET_VALUE);
 111.140 +            disableDelegation(DELEGATE_SET_VALUE);
 111.141 +            disableDelegation(DELEGATE_SET_NAME);
 111.142 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
 111.143 +            setDisplayName (item.file.getPath());
 111.144 +        }
 111.145 +
 111.146 +        @Override
 111.147 +        public Action[] getActions(boolean ignored) {
 111.148 +            return new Action[0];
 111.149 +        }
 111.150 +    }
 111.151 +}
   112.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   112.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_2.txt	Fri Sep 14 00:27:52 2012 -0400
   112.3 @@ -0,0 +1,139 @@
   112.4 +
   112.5 +
   112.6 +/*
   112.7 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   112.8 + *
   112.9 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
  112.10 + *
  112.11 + * The contents of this file are subject to the terms of either the GNU
  112.12 + * General Public License Version 2 only ("GPL") or the Common
  112.13 + * Development and Distribution License("CDDL") (collectively, the
  112.14 + * "License"). You may not use this file except in compliance with the
  112.15 + * License. You can obtain a copy of the License at
  112.16 + * http://www.netbeans.org/cddl-gplv2.html
  112.17 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  112.18 + * specific language governing permissions and limitations under the
  112.19 + * License.  When distributing the software, include this License Header
  112.20 + * Notice in each file and include the License file at
  112.21 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  112.22 + * particular file as subject to the "Classpath" exception as provided
  112.23 + * by Sun in the GPL Version 2 section of the License file that
  112.24 + * accompanied this code. If applicable, add the following below the
  112.25 + * License Header, with the fields enclosed by brackets [] replaced by
  112.26 + * your own identifying information:
  112.27 + * "Portions Copyrighted [year] [name of copyright owner]"
  112.28 + *
  112.29 + * If you wish your version of this file to be governed by only the CDDL
  112.30 + * or only the GPL Version 2, indicate your decision by adding
  112.31 + * "[Contributor] elects to include this software in this distribution
  112.32 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  112.33 + * single choice of license, a recipient has the option to distribute
  112.34 + * your version of this file under either the CDDL, the GPL Version 2 or
  112.35 + * to extend the choice of license to its licensees as provided above.
  112.36 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  112.37 + * Version 2 license, then the option applies only if the new code is
  112.38 + * made subject to such option by the copyright holder.
  112.39 + *
  112.40 + * Contributor(s):
  112.41 + *
  112.42 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  112.43 + */package org.netbeans.modules.licensechanger;
  112.44 +
  112.45 +import java.util.Collection;
  112.46 +import java.util.HashSet;
  112.47 +import java.util.LinkedList;
  112.48 +import java.util.List;
  112.49 +import java.util.Set;
  112.50 +import javax.swing.Action;
  112.51 +import org.netbeans.modules.licensechanger.api.FileHandler;
  112.52 +import org.openide.filesystems.FileObject;
  112.53 +import org.openide.loaders.DataObject;
  112.54 +import org.openide.loaders.DataObjectNotFoundException;
  112.55 +import org.openide.nodes.ChildFactory;
  112.56 +import org.openide.nodes.FilterNode;
  112.57 +import org.openide.nodes.Node;
  112.58 +import org.openide.util.Exceptions;
  112.59 +import org.openide.util.Lookup;
  112.60 +import org.openide.util.lookup.Lookups;
  112.61 +import org.openide.util.lookup.ProxyLookup;
  112.62 +
  112.63 +/**
  112.64 + *
  112.65 + * @author Tim Boudreau
  112.66 + */
  112.67 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  112.68 +    private final Set<FileObject> folders;
  112.69 +    private final Collection <? extends FileHandler> allHandlers;
  112.70 +    FileChildren (Set<FileObject> folders) {
  112.71 +        this.folders = new HashSet(folders);
  112.72 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  112.73 +    }
  112.74 +
  112.75 +    @Override
  112.76 +    protected boolean createKeys(List<FileObject> toPopulate) {
  112.77 +        toPopulate.addAll (folders);
  112.78 +        return true;
  112.79 +    }
  112.80 +
  112.81 +    @Override
  112.82 +    protected Node[] createNodesForKey(FileObject key) {
  112.83 +        List<Node> result = new LinkedList<Node>();
  112.84 +outer:  for (FileObject fo : key.getChildren()) {
  112.85 +            if (fo.isData()) {
  112.86 +                for (FileHandler h : allHandlers) {
  112.87 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  112.88 +                        try {
  112.89 +                            DataObject dob = DataObject.find(fo);
  112.90 +                            FileItem item = new FileItem (h, fo);
  112.91 +                            result.add (new FN (dob.getNodeDelegate(), item));
  112.92 +                            break outer;
  112.93 +                        } catch (DataObjectNotFoundException ex) {
  112.94 +                            Exceptions.printStackTrace(ex);
  112.95 +                        }
  112.96 +                    }
  112.97 +                }
  112.98 +            }
  112.99 +        }
 112.100 +        return result.toArray(new Node[result.size()]);
 112.101 +    }
 112.102 +
 112.103 +    static final class FileItem {
 112.104 +        FileHandler handler;
 112.105 +        FileObject file;
 112.106 +
 112.107 +        public FileItem(FileHandler handler, FileObject file) {
 112.108 +            this.handler = handler;
 112.109 +            this.file = file;
 112.110 +        }
 112.111 +
 112.112 +        public FileObject getFile() {
 112.113 +            return file;
 112.114 +        }
 112.115 +
 112.116 +        public FileHandler getHandler() {
 112.117 +            return handler;
 112.118 +        }
 112.119 +
 112.120 +    }
 112.121 +
 112.122 +    private static final class FN extends FilterNode {
 112.123 +        FN(Node orig, FileItem item) {
 112.124 +            super (orig, Children.LEAF, new ProxyLookup(
 112.125 +                    Lookups.singleton(item),
 112.126 +                    orig.getLookup()));
 112.127 +            disableDelegation(DELEGATE_GET_ACTIONS);
 112.128 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
 112.129 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
 112.130 +            disableDelegation(DELEGATE_GET_VALUE);
 112.131 +            disableDelegation(DELEGATE_SET_VALUE);
 112.132 +            disableDelegation(DELEGATE_SET_NAME);
 112.133 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
 112.134 +            setDisplayName (item.file.getPath());
 112.135 +        }
 112.136 +
 112.137 +        @Override
 112.138 +        public Action[] getActions(boolean ignored) {
 112.139 +            return new Action[0];
 112.140 +        }
 112.141 +    }
 112.142 +}
   113.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   113.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_3.txt	Fri Sep 14 00:27:52 2012 -0400
   113.3 @@ -0,0 +1,137 @@
   113.4 +/*
   113.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   113.6 + *
   113.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   113.8 + *
   113.9 + * The contents of this file are subject to the terms of either the GNU
  113.10 + * General Public License Version 2 only ("GPL") or the Common
  113.11 + * Development and Distribution License("CDDL") (collectively, the
  113.12 + * "License"). You may not use this file except in compliance with the
  113.13 + * License. You can obtain a copy of the License at
  113.14 + * http://www.netbeans.org/cddl-gplv2.html
  113.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  113.16 + * specific language governing permissions and limitations under the
  113.17 + * License.  When distributing the software, include this License Header
  113.18 + * Notice in each file and include the License file at
  113.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  113.20 + * particular file as subject to the "Classpath" exception as provided
  113.21 + * by Sun in the GPL Version 2 section of the License file that
  113.22 + * accompanied this code. If applicable, add the following below the
  113.23 + * License Header, with the fields enclosed by brackets [] replaced by
  113.24 + * your own identifying information:
  113.25 + * "Portions Copyrighted [year] [name of copyright owner]"
  113.26 + *
  113.27 + * If you wish your version of this file to be governed by only the CDDL
  113.28 + * or only the GPL Version 2, indicate your decision by adding
  113.29 + * "[Contributor] elects to include this software in this distribution
  113.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  113.31 + * single choice of license, a recipient has the option to distribute
  113.32 + * your version of this file under either the CDDL, the GPL Version 2 or
  113.33 + * to extend the choice of license to its licensees as provided above.
  113.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  113.35 + * Version 2 license, then the option applies only if the new code is
  113.36 + * made subject to such option by the copyright holder.
  113.37 + *
  113.38 + * Contributor(s):
  113.39 + *
  113.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  113.41 + */package org.netbeans.modules.licensechanger;
  113.42 +
  113.43 +import java.util.Collection;
  113.44 +import java.util.HashSet;
  113.45 +import java.util.LinkedList;
  113.46 +import java.util.List;
  113.47 +import java.util.Set;
  113.48 +import javax.swing.Action;
  113.49 +import org.netbeans.modules.licensechanger.api.FileHandler;
  113.50 +import org.openide.filesystems.FileObject;
  113.51 +import org.openide.loaders.DataObject;
  113.52 +import org.openide.loaders.DataObjectNotFoundException;
  113.53 +import org.openide.nodes.ChildFactory;
  113.54 +import org.openide.nodes.FilterNode;
  113.55 +import org.openide.nodes.Node;
  113.56 +import org.openide.util.Exceptions;
  113.57 +import org.openide.util.Lookup;
  113.58 +import org.openide.util.lookup.Lookups;
  113.59 +import org.openide.util.lookup.ProxyLookup;
  113.60 +
  113.61 +/**
  113.62 + *
  113.63 + * @author Tim Boudreau
  113.64 + */
  113.65 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  113.66 +    private final Set<FileObject> folders;
  113.67 +    private final Collection <? extends FileHandler> allHandlers;
  113.68 +    FileChildren (Set<FileObject> folders) {
  113.69 +        this.folders = new HashSet(folders);
  113.70 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  113.71 +    }
  113.72 +
  113.73 +    @Override
  113.74 +    protected boolean createKeys(List<FileObject> toPopulate) {
  113.75 +        toPopulate.addAll (folders);
  113.76 +        return true;
  113.77 +    }
  113.78 +
  113.79 +    @Override
  113.80 +    protected Node[] createNodesForKey(FileObject key) {
  113.81 +        List<Node> result = new LinkedList<Node>();
  113.82 +outer:  for (FileObject fo : key.getChildren()) {
  113.83 +            if (fo.isData()) {
  113.84 +                for (FileHandler h : allHandlers) {
  113.85 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  113.86 +                        try {
  113.87 +                            DataObject dob = DataObject.find(fo);
  113.88 +                            FileItem item = new FileItem (h, fo);
  113.89 +                            result.add (new FN (dob.getNodeDelegate(), item));
  113.90 +                            break outer;
  113.91 +                        } catch (DataObjectNotFoundException ex) {
  113.92 +                            Exceptions.printStackTrace(ex);
  113.93 +                        }
  113.94 +                    }
  113.95 +                }
  113.96 +            }
  113.97 +        }
  113.98 +        return result.toArray(new Node[result.size()]);
  113.99 +    }
 113.100 +
 113.101 +    static final class FileItem {
 113.102 +        FileHandler handler;
 113.103 +        FileObject file;
 113.104 +
 113.105 +        public FileItem(FileHandler handler, FileObject file) {
 113.106 +            this.handler = handler;
 113.107 +            this.file = file;
 113.108 +        }
 113.109 +
 113.110 +        public FileObject getFile() {
 113.111 +            return file;
 113.112 +        }
 113.113 +
 113.114 +        public FileHandler getHandler() {
 113.115 +            return handler;
 113.116 +        }
 113.117 +
 113.118 +    }
 113.119 +
 113.120 +    private static final class FN extends FilterNode {
 113.121 +        FN(Node orig, FileItem item) {
 113.122 +            super (orig, Children.LEAF, new ProxyLookup(
 113.123 +                    Lookups.singleton(item),
 113.124 +                    orig.getLookup()));
 113.125 +            disableDelegation(DELEGATE_GET_ACTIONS);
 113.126 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
 113.127 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
 113.128 +            disableDelegation(DELEGATE_GET_VALUE);
 113.129 +            disableDelegation(DELEGATE_SET_VALUE);
 113.130 +            disableDelegation(DELEGATE_SET_NAME);
 113.131 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
 113.132 +            setDisplayName (item.file.getPath());
 113.133 +        }
 113.134 +
 113.135 +        @Override
 113.136 +        public Action[] getActions(boolean ignored) {
 113.137 +            return new Action[0];
 113.138 +        }
 113.139 +    }
 113.140 +}
   114.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   114.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_4.txt	Fri Sep 14 00:27:52 2012 -0400
   114.3 @@ -0,0 +1,140 @@
   114.4 +
   114.5 +    //Hello world
   114.6 +
   114.7 +/*
   114.8 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   114.9 + *
  114.10 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
  114.11 + *
  114.12 + * The contents of this file are subject to the terms of either the GNU
  114.13 + * General Public License Version 2 only ("GPL") or the Common
  114.14 + * Development and Distribution License("CDDL") (collectively, the
  114.15 + * "License"). You may not use this file except in compliance with the
  114.16 + * License. You can obtain a copy of the License at
  114.17 + * http://www.netbeans.org/cddl-gplv2.html
  114.18 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  114.19 + * specific language governing permissions and limitations under the
  114.20 + * License.  When distributing the software, include this License Header
  114.21 + * Notice in each file and include the License file at
  114.22 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  114.23 + * particular file as subject to the "Classpath" exception as provided
  114.24 + * by Sun in the GPL Version 2 section of the License file that
  114.25 + * accompanied this code. If applicable, add the following below the
  114.26 + * License Header, with the fields enclosed by brackets [] replaced by
  114.27 + * your own identifying information:
  114.28 + * "Portions Copyrighted [year] [name of copyright owner]"
  114.29 + *
  114.30 + * If you wish your version of this file to be governed by only the CDDL
  114.31 + * or only the GPL Version 2, indicate your decision by adding
  114.32 + * "[Contributor] elects to include this software in this distribution
  114.33 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  114.34 + * single choice of license, a recipient has the option to distribute
  114.35 + * your version of this file under either the CDDL, the GPL Version 2 or
  114.36 + * to extend the choice of license to its licensees as provided above.
  114.37 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  114.38 + * Version 2 license, then the option applies only if the new code is
  114.39 + * made subject to such option by the copyright holder.
  114.40 + *
  114.41 + * Contributor(s):
  114.42 + *
  114.43 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  114.44 + */package org.netbeans.modules.licensechanger;
  114.45 +
  114.46 +import java.util.Collection;
  114.47 +import java.util.HashSet;
  114.48 +import java.util.LinkedList;
  114.49 +import java.util.List;
  114.50 +import java.util.Set;
  114.51 +import javax.swing.Action;
  114.52 +import org.netbeans.modules.licensechanger.api.FileHandler;
  114.53 +import org.openide.filesystems.FileObject;
  114.54 +import org.openide.loaders.DataObject;
  114.55 +import org.openide.loaders.DataObjectNotFoundException;
  114.56 +import org.openide.nodes.ChildFactory;
  114.57 +import org.openide.nodes.FilterNode;
  114.58 +import org.openide.nodes.Node;
  114.59 +import org.openide.util.Exceptions;
  114.60 +import org.openide.util.Lookup;
  114.61 +import org.openide.util.lookup.Lookups;
  114.62 +import org.openide.util.lookup.ProxyLookup;
  114.63 +
  114.64 +/**
  114.65 + *
  114.66 + * @author Tim Boudreau
  114.67 + */
  114.68 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  114.69 +    private final Set<FileObject> folders;
  114.70 +    private final Collection <? extends FileHandler> allHandlers;
  114.71 +    FileChildren (Set<FileObject> folders) {
  114.72 +        this.folders = new HashSet(folders);
  114.73 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  114.74 +    }
  114.75 +
  114.76 +    @Override
  114.77 +    protected boolean createKeys(List<FileObject> toPopulate) {
  114.78 +        toPopulate.addAll (folders);
  114.79 +        return true;
  114.80 +    }
  114.81 +
  114.82 +    @Override
  114.83 +    protected Node[] createNodesForKey(FileObject key) {
  114.84 +        List<Node> result = new LinkedList<Node>();
  114.85 +outer:  for (FileObject fo : key.getChildren()) {
  114.86 +            if (fo.isData()) {
  114.87 +                for (FileHandler h : allHandlers) {
  114.88 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  114.89 +                        try {
  114.90 +                            DataObject dob = DataObject.find(fo);
  114.91 +                            FileItem item = new FileItem (h, fo);
  114.92 +                            result.add (new FN (dob.getNodeDelegate(), item));
  114.93 +                            break outer;
  114.94 +                        } catch (DataObjectNotFoundException ex) {
  114.95 +                            Exceptions.printStackTrace(ex);
  114.96 +                        }
  114.97 +                    }
  114.98 +                }
  114.99 +            }
 114.100 +        }
 114.101 +        return result.toArray(new Node[result.size()]);
 114.102 +    }
 114.103 +
 114.104 +    static final class FileItem {
 114.105 +        FileHandler handler;
 114.106 +        FileObject file;
 114.107 +
 114.108 +        public FileItem(FileHandler handler, FileObject file) {
 114.109 +            this.handler = handler;
 114.110 +            this.file = file;
 114.111 +        }
 114.112 +
 114.113 +        public FileObject getFile() {
 114.114 +            return file;
 114.115 +        }
 114.116 +
 114.117 +        public FileHandler getHandler() {
 114.118 +            return handler;
 114.119 +        }
 114.120 +
 114.121 +    }
 114.122 +
 114.123 +    private static final class FN extends FilterNode {
 114.124 +        FN(Node orig, FileItem item) {
 114.125 +            super (orig, Children.LEAF, new ProxyLookup(
 114.126 +                    Lookups.singleton(item),
 114.127 +                    orig.getLookup()));
 114.128 +            disableDelegation(DELEGATE_GET_ACTIONS);
 114.129 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
 114.130 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
 114.131 +            disableDelegation(DELEGATE_GET_VALUE);
 114.132 +            disableDelegation(DELEGATE_SET_VALUE);
 114.133 +            disableDelegation(DELEGATE_SET_NAME);
 114.134 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
 114.135 +            setDisplayName (item.file.getPath());
 114.136 +        }
 114.137 +
 114.138 +        @Override
 114.139 +        public Action[] getActions(boolean ignored) {
 114.140 +            return new Action[0];
 114.141 +        }
 114.142 +    }
 114.143 +}
   115.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   115.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_5.txt	Fri Sep 14 00:27:52 2012 -0400
   115.3 @@ -0,0 +1,103 @@
   115.4 +//This is another kind of license comment
   115.5 +//We should make sure it catches this too
   115.6 +//We really want to get rid of all stuff before the package statement
   115.7 +package org.netbeans.modules.licensechanger;
   115.8 +
   115.9 +import java.util.Collection;
  115.10 +import java.util.HashSet;
  115.11 +import java.util.LinkedList;
  115.12 +import java.util.List;
  115.13 +import java.util.Set;
  115.14 +import javax.swing.Action;
  115.15 +import org.netbeans.modules.licensechanger.api.FileHandler;
  115.16 +import org.openide.filesystems.FileObject;
  115.17 +import org.openide.loaders.DataObject;
  115.18 +import org.openide.loaders.DataObjectNotFoundException;
  115.19 +import org.openide.nodes.ChildFactory;
  115.20 +import org.openide.nodes.FilterNode;
  115.21 +import org.openide.nodes.Node;
  115.22 +import org.openide.util.Exceptions;
  115.23 +import org.openide.util.Lookup;
  115.24 +import org.openide.util.lookup.Lookups;
  115.25 +import org.openide.util.lookup.ProxyLookup;
  115.26 +
  115.27 +/**
  115.28 + *
  115.29 + * @author Tim Boudreau
  115.30 + */
  115.31 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  115.32 +    private final Set<FileObject> folders;
  115.33 +    private final Collection <? extends FileHandler> allHandlers;
  115.34 +    FileChildren (Set<FileObject> folders) {
  115.35 +        this.folders = new HashSet(folders);
  115.36 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  115.37 +    }
  115.38 +
  115.39 +    @Override
  115.40 +    protected boolean createKeys(List<FileObject> toPopulate) {
  115.41 +        toPopulate.addAll (folders);
  115.42 +        return true;
  115.43 +    }
  115.44 +
  115.45 +    @Override
  115.46 +    protected Node[] createNodesForKey(FileObject key) {
  115.47 +        List<Node> result = new LinkedList<Node>();
  115.48 +outer:  for (FileObject fo : key.getChildren()) {
  115.49 +            if (fo.isData()) {
  115.50 +                for (FileHandler h : allHandlers) {
  115.51 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  115.52 +                        try {
  115.53 +                            DataObject dob = DataObject.find(fo);
  115.54 +                            FileItem item = new FileItem (h, fo);
  115.55 +                            result.add (new FN (dob.getNodeDelegate(), item));
  115.56 +                            break outer;
  115.57 +                        } catch (DataObjectNotFoundException ex) {
  115.58 +                            Exceptions.printStackTrace(ex);
  115.59 +                        }
  115.60 +                    }
  115.61 +                }
  115.62 +            }
  115.63 +        }
  115.64 +        return result.toArray(new Node[result.size()]);
  115.65 +    }
  115.66 +
  115.67 +    static final class FileItem {
  115.68 +        FileHandler handler;
  115.69 +        FileObject file;
  115.70 +
  115.71 +        public FileItem(FileHandler handler, FileObject file) {
  115.72 +            this.handler = handler;
  115.73 +            this.file = file;
  115.74 +        }
  115.75 +
  115.76 +        public FileObject getFile() {
  115.77 +            return file;
  115.78 +        }
  115.79 +
  115.80 +        public FileHandler getHandler() {
  115.81 +            return handler;
  115.82 +        }
  115.83 +
  115.84 +    }
  115.85 +
  115.86 +    private static final class FN extends FilterNode {
  115.87 +        FN(Node orig, FileItem item) {
  115.88 +            super (orig, Children.LEAF, new ProxyLookup(
  115.89 +                    Lookups.singleton(item),
  115.90 +                    orig.getLookup()));
  115.91 +            disableDelegation(DELEGATE_GET_ACTIONS);
  115.92 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  115.93 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  115.94 +            disableDelegation(DELEGATE_GET_VALUE);
  115.95 +            disableDelegation(DELEGATE_SET_VALUE);
  115.96 +            disableDelegation(DELEGATE_SET_NAME);
  115.97 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  115.98 +            setDisplayName (item.file.getPath());
  115.99 +        }
 115.100 +
 115.101 +        @Override
 115.102 +        public Action[] getActions(boolean ignored) {
 115.103 +            return new Action[0];
 115.104 +        }
 115.105 +    }
 115.106 +}
   116.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   116.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_6.txt	Fri Sep 14 00:27:52 2012 -0400
   116.3 @@ -0,0 +1,100 @@
   116.4 +package org.netbeans.modules.licensechanger;
   116.5 +
   116.6 +import java.util.Collection;
   116.7 +import java.util.HashSet;
   116.8 +import java.util.LinkedList;
   116.9 +import java.util.List;
  116.10 +import java.util.Set;
  116.11 +import javax.swing.Action;
  116.12 +import org.netbeans.modules.licensechanger.api.FileHandler;
  116.13 +import org.openide.filesystems.FileObject;
  116.14 +import org.openide.loaders.DataObject;
  116.15 +import org.openide.loaders.DataObjectNotFoundException;
  116.16 +import org.openide.nodes.ChildFactory;
  116.17 +import org.openide.nodes.FilterNode;
  116.18 +import org.openide.nodes.Node;
  116.19 +import org.openide.util.Exceptions;
  116.20 +import org.openide.util.Lookup;
  116.21 +import org.openide.util.lookup.Lookups;
  116.22 +import org.openide.util.lookup.ProxyLookup;
  116.23 +
  116.24 +/**
  116.25 + *
  116.26 + * @author Tim Boudreau
  116.27 + */
  116.28 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  116.29 +    private final Set<FileObject> folders;
  116.30 +    private final Collection <? extends FileHandler> allHandlers;
  116.31 +    FileChildren (Set<FileObject> folders) {
  116.32 +        this.folders = new HashSet(folders);
  116.33 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  116.34 +    }
  116.35 +
  116.36 +    @Override
  116.37 +    protected boolean createKeys(List<FileObject> toPopulate) {
  116.38 +        toPopulate.addAll (folders);
  116.39 +        return true;
  116.40 +    }
  116.41 +
  116.42 +    @Override
  116.43 +    protected Node[] createNodesForKey(FileObject key) {
  116.44 +        List<Node> result = new LinkedList<Node>();
  116.45 +outer:  for (FileObject fo : key.getChildren()) {
  116.46 +            if (fo.isData()) {
  116.47 +                for (FileHandler h : allHandlers) {
  116.48 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  116.49 +                        try {
  116.50 +                            DataObject dob = DataObject.find(fo);
  116.51 +                            FileItem item = new FileItem (h, fo);
  116.52 +                            result.add (new FN (dob.getNodeDelegate(), item));
  116.53 +                            break outer;
  116.54 +                        } catch (DataObjectNotFoundException ex) {
  116.55 +                            Exceptions.printStackTrace(ex);
  116.56 +                        }
  116.57 +                    }
  116.58 +                }
  116.59 +            }
  116.60 +        }
  116.61 +        return result.toArray(new Node[result.size()]);
  116.62 +    }
  116.63 +
  116.64 +    static final class FileItem {
  116.65 +        FileHandler handler;
  116.66 +        FileObject file;
  116.67 +
  116.68 +        public FileItem(FileHandler handler, FileObject file) {
  116.69 +            this.handler = handler;
  116.70 +            this.file = file;
  116.71 +        }
  116.72 +
  116.73 +        public FileObject getFile() {
  116.74 +            return file;
  116.75 +        }
  116.76 +
  116.77 +        public FileHandler getHandler() {
  116.78 +            return handler;
  116.79 +        }
  116.80 +
  116.81 +    }
  116.82 +
  116.83 +    private static final class FN extends FilterNode {
  116.84 +        FN(Node orig, FileItem item) {
  116.85 +            super (orig, Children.LEAF, new ProxyLookup(
  116.86 +                    Lookups.singleton(item),
  116.87 +                    orig.getLookup()));
  116.88 +            disableDelegation(DELEGATE_GET_ACTIONS);
  116.89 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
  116.90 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
  116.91 +            disableDelegation(DELEGATE_GET_VALUE);
  116.92 +            disableDelegation(DELEGATE_SET_VALUE);
  116.93 +            disableDelegation(DELEGATE_SET_NAME);
  116.94 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
  116.95 +            setDisplayName (item.file.getPath());
  116.96 +        }
  116.97 +
  116.98 +        @Override
  116.99 +        public Action[] getActions(boolean ignored) {
 116.100 +            return new Action[0];
 116.101 +        }
 116.102 +    }
 116.103 +}
   117.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   117.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_7.txt	Fri Sep 14 00:27:52 2012 -0400
   117.3 @@ -0,0 +1,140 @@
   117.4 +/*
   117.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   117.6 + *
   117.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   117.8 + *
   117.9 + * The contents of this file are subject to the terms of either the GNU
  117.10 + * General Public License Version 2 only ("GPL") or the Common
  117.11 + * Development and Distribution License("CDDL") (collectively, the
  117.12 + * "License"). You may not use this file except in compliance with the
  117.13 + * License. You can obtain a copy of the License at
  117.14 + * http://www.netbeans.org/cddl-gplv2.html
  117.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  117.16 + * specific language governing permissions and limitations under the
  117.17 + * License.  When distributing the software, include this License Header
  117.18 + * Notice in each file and include the License file at
  117.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  117.20 + * particular file as subject to the "Classpath" exception as provided
  117.21 + * by Sun in the GPL Version 2 section of the License file that
  117.22 + * accompanied this code. If applicable, add the following below the
  117.23 + * License Header, with the fields enclosed by brackets [] replaced by
  117.24 + * your own identifying information:
  117.25 + * "Portions Copyrighted [year] [name of copyright owner]"
  117.26 + *
  117.27 + * If you wish your version of this file to be governed by only the CDDL
  117.28 + * or only the GPL Version 2, indicate your decision by adding
  117.29 + * "[Contributor] elects to include this software in this distribution
  117.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  117.31 + * single choice of license, a recipient has the option to distribute
  117.32 + * your version of this file under either the CDDL, the GPL Version 2 or
  117.33 + * to extend the choice of license to its licensees as provided above.
  117.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  117.35 + * Version 2 license, then the option applies only if the new code is
  117.36 + * made subject to such option by the copyright holder.
  117.37 + *
  117.38 + * Contributor(s):
  117.39 + *
  117.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  117.41 + */
  117.42 +/* Created on March 14, 2009 */
  117.43 +
  117.44 +package org.netbeans.modules.licensechanger;
  117.45 +
  117.46 +import java.util.Collection;
  117.47 +import java.util.HashSet;
  117.48 +import java.util.LinkedList;
  117.49 +import java.util.List;
  117.50 +import java.util.Set;
  117.51 +import javax.swing.Action;
  117.52 +import org.netbeans.modules.licensechanger.api.FileHandler;
  117.53 +import org.openide.filesystems.FileObject;
  117.54 +import org.openide.loaders.DataObject;
  117.55 +import org.openide.loaders.DataObjectNotFoundException;
  117.56 +import org.openide.nodes.ChildFactory;
  117.57 +import org.openide.nodes.FilterNode;
  117.58 +import org.openide.nodes.Node;
  117.59 +import org.openide.util.Exceptions;
  117.60 +import org.openide.util.Lookup;
  117.61 +import org.openide.util.lookup.Lookups;
  117.62 +import org.openide.util.lookup.ProxyLookup;
  117.63 +
  117.64 +/**
  117.65 + *
  117.66 + * @author Tim Boudreau
  117.67 + */
  117.68 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  117.69 +    private final Set<FileObject> folders;
  117.70 +    private final Collection <? extends FileHandler> allHandlers;
  117.71 +    FileChildren (Set<FileObject> folders) {
  117.72 +        this.folders = new HashSet(folders);
  117.73 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  117.74 +    }
  117.75 +
  117.76 +    @Override
  117.77 +    protected boolean createKeys(List<FileObject> toPopulate) {
  117.78 +        toPopulate.addAll (folders);
  117.79 +        return true;
  117.80 +    }
  117.81 +
  117.82 +    @Override
  117.83 +    protected Node[] createNodesForKey(FileObject key) {
  117.84 +        List<Node> result = new LinkedList<Node>();
  117.85 +outer:  for (FileObject fo : key.getChildren()) {
  117.86 +            if (fo.isData()) {
  117.87 +                for (FileHandler h : allHandlers) {
  117.88 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  117.89 +                        try {
  117.90 +                            DataObject dob = DataObject.find(fo);
  117.91 +                            FileItem item = new FileItem (h, fo);
  117.92 +                            result.add (new FN (dob.getNodeDelegate(), item));
  117.93 +                            break outer;
  117.94 +                        } catch (DataObjectNotFoundException ex) {
  117.95 +                            Exceptions.printStackTrace(ex);
  117.96 +                        }
  117.97 +                    }
  117.98 +                }
  117.99 +            }
 117.100 +        }
 117.101 +        return result.toArray(new Node[result.size()]);
 117.102 +    }
 117.103 +
 117.104 +    static final class FileItem {
 117.105 +        FileHandler handler;
 117.106 +        FileObject file;
 117.107 +
 117.108 +        public FileItem(FileHandler handler, FileObject file) {
 117.109 +            this.handler = handler;
 117.110 +            this.file = file;
 117.111 +        }
 117.112 +
 117.113 +        public FileObject getFile() {
 117.114 +            return file;
 117.115 +        }
 117.116 +
 117.117 +        public FileHandler getHandler() {
 117.118 +            return handler;
 117.119 +        }
 117.120 +
 117.121 +    }
 117.122 +
 117.123 +    private static final class FN extends FilterNode {
 117.124 +        FN(Node orig, FileItem item) {
 117.125 +            super (orig, Children.LEAF, new ProxyLookup(
 117.126 +                    Lookups.singleton(item),
 117.127 +                    orig.getLookup()));
 117.128 +            disableDelegation(DELEGATE_GET_ACTIONS);
 117.129 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
 117.130 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
 117.131 +            disableDelegation(DELEGATE_GET_VALUE);
 117.132 +            disableDelegation(DELEGATE_SET_VALUE);
 117.133 +            disableDelegation(DELEGATE_SET_NAME);
 117.134 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
 117.135 +            setDisplayName (item.file.getPath());
 117.136 +        }
 117.137 +
 117.138 +        @Override
 117.139 +        public Action[] getActions(boolean ignored) {
 117.140 +            return new Action[0];
 117.141 +        }
 117.142 +    }
 117.143 +}
   118.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   118.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_8.txt	Fri Sep 14 00:27:52 2012 -0400
   118.3 @@ -0,0 +1,141 @@
   118.4 +/*
   118.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   118.6 + *
   118.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   118.8 + *
   118.9 + * The contents of this file are subject to the terms of either the GNU
  118.10 + * General Public License Version 2 only ("GPL") or the Common
  118.11 + * Development and Distribution License("CDDL") (collectively, the
  118.12 + * "License"). You may not use this file except in compliance with the
  118.13 + * License. You can obtain a copy of the License at
  118.14 + * http://www.netbeans.org/cddl-gplv2.html
  118.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  118.16 + * specific language governing permissions and limitations under the
  118.17 + * License.  When distributing the software, include this License Header
  118.18 + * Notice in each file and include the License file at
  118.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  118.20 + * particular file as subject to the "Classpath" exception as provided
  118.21 + * by Sun in the GPL Version 2 section of the License file that
  118.22 + * accompanied this code. If applicable, add the following below the
  118.23 + * License Header, with the fields enclosed by brackets [] replaced by
  118.24 + * your own identifying information:
  118.25 + * "Portions Copyrighted [year] [name of copyright owner]"
  118.26 + *
  118.27 + * If you wish your version of this file to be governed by only the CDDL
  118.28 + * or only the GPL Version 2, indicate your decision by adding
  118.29 + * "[Contributor] elects to include this software in this distribution
  118.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  118.31 + * single choice of license, a recipient has the option to distribute
  118.32 + * your version of this file under either the CDDL, the GPL Version 2 or
  118.33 + * to extend the choice of license to its licensees as provided above.
  118.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  118.35 + * Version 2 license, then the option applies only if the new code is
  118.36 + * made subject to such option by the copyright holder.
  118.37 + *
  118.38 + * Contributor(s):
  118.39 + *
  118.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  118.41 + */
  118.42 +/* Created on March 14, 2009 
  118.43 + * by some IDE or other */
  118.44 +
  118.45 +package org.netbeans.modules.licensechanger;
  118.46 +
  118.47 +import java.util.Collection;
  118.48 +import java.util.HashSet;
  118.49 +import java.util.LinkedList;
  118.50 +import java.util.List;
  118.51 +import java.util.Set;
  118.52 +import javax.swing.Action;
  118.53 +import org.netbeans.modules.licensechanger.api.FileHandler;
  118.54 +import org.openide.filesystems.FileObject;
  118.55 +import org.openide.loaders.DataObject;
  118.56 +import org.openide.loaders.DataObjectNotFoundException;
  118.57 +import org.openide.nodes.ChildFactory;
  118.58 +import org.openide.nodes.FilterNode;
  118.59 +import org.openide.nodes.Node;
  118.60 +import org.openide.util.Exceptions;
  118.61 +import org.openide.util.Lookup;
  118.62 +import org.openide.util.lookup.Lookups;
  118.63 +import org.openide.util.lookup.ProxyLookup;
  118.64 +
  118.65 +/**
  118.66 + *
  118.67 + * @author Tim Boudreau
  118.68 + */
  118.69 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  118.70 +    private final Set<FileObject> folders;
  118.71 +    private final Collection <? extends FileHandler> allHandlers;
  118.72 +    FileChildren (Set<FileObject> folders) {
  118.73 +        this.folders = new HashSet(folders);
  118.74 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  118.75 +    }
  118.76 +
  118.77 +    @Override
  118.78 +    protected boolean createKeys(List<FileObject> toPopulate) {
  118.79 +        toPopulate.addAll (folders);
  118.80 +        return true;
  118.81 +    }
  118.82 +
  118.83 +    @Override
  118.84 +    protected Node[] createNodesForKey(FileObject key) {
  118.85 +        List<Node> result = new LinkedList<Node>();
  118.86 +outer:  for (FileObject fo : key.getChildren()) {
  118.87 +            if (fo.isData()) {
  118.88 +                for (FileHandler h : allHandlers) {
  118.89 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  118.90 +                        try {
  118.91 +                            DataObject dob = DataObject.find(fo);
  118.92 +                            FileItem item = new FileItem (h, fo);
  118.93 +                            result.add (new FN (dob.getNodeDelegate(), item));
  118.94 +                            break outer;
  118.95 +                        } catch (DataObjectNotFoundException ex) {
  118.96 +                            Exceptions.printStackTrace(ex);
  118.97 +                        }
  118.98 +                    }
  118.99 +                }
 118.100 +            }
 118.101 +        }
 118.102 +        return result.toArray(new Node[result.size()]);
 118.103 +    }
 118.104 +
 118.105 +    static final class FileItem {
 118.106 +        FileHandler handler;
 118.107 +        FileObject file;
 118.108 +
 118.109 +        public FileItem(FileHandler handler, FileObject file) {
 118.110 +            this.handler = handler;
 118.111 +            this.file = file;
 118.112 +        }
 118.113 +
 118.114 +        public FileObject getFile() {
 118.115 +            return file;
 118.116 +        }
 118.117 +
 118.118 +        public FileHandler getHandler() {
 118.119 +            return handler;
 118.120 +        }
 118.121 +
 118.122 +    }
 118.123 +
 118.124 +    private static final class FN extends FilterNode {
 118.125 +        FN(Node orig, FileItem item) {
 118.126 +            super (orig, Children.LEAF, new ProxyLookup(
 118.127 +                    Lookups.singleton(item),
 118.128 +                    orig.getLookup()));
 118.129 +            disableDelegation(DELEGATE_GET_ACTIONS);
 118.130 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
 118.131 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
 118.132 +            disableDelegation(DELEGATE_GET_VALUE);
 118.133 +            disableDelegation(DELEGATE_SET_VALUE);
 118.134 +            disableDelegation(DELEGATE_SET_NAME);
 118.135 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
 118.136 +            setDisplayName (item.file.getPath());
 118.137 +        }
 118.138 +
 118.139 +        @Override
 118.140 +        public Action[] getActions(boolean ignored) {
 118.141 +            return new Action[0];
 118.142 +        }
 118.143 +    }
 118.144 +}
   119.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   119.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_9.txt	Fri Sep 14 00:27:52 2012 -0400
   119.3 @@ -0,0 +1,142 @@
   119.4 +/*
   119.5 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   119.6 + *
   119.7 + * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   119.8 + *
   119.9 + * The contents of this file are subject to the terms of either the GNU
  119.10 + * General Public License Version 2 only ("GPL") or the Common
  119.11 + * Development and Distribution License("CDDL") (collectively, the
  119.12 + * "License"). You may not use this file except in compliance with the
  119.13 + * License. You can obtain a copy of the License at
  119.14 + * http://www.netbeans.org/cddl-gplv2.html
  119.15 + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  119.16 + * specific language governing permissions and limitations under the
  119.17 + * License.  When distributing the software, include this License Header
  119.18 + * Notice in each file and include the License file at
  119.19 + * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  119.20 + * particular file as subject to the "Classpath" exception as provided
  119.21 + * by Sun in the GPL Version 2 section of the License file that
  119.22 + * accompanied this code. If applicable, add the following below the
  119.23 + * License Header, with the fields enclosed by brackets [] replaced by
  119.24 + * your own identifying information:
  119.25 + * "Portions Copyrighted [year] [name of copyright owner]"
  119.26 + *
  119.27 + * If you wish your version of this file to be governed by only the CDDL
  119.28 + * or only the GPL Version 2, indicate your decision by adding
  119.29 + * "[Contributor] elects to include this software in this distribution
  119.30 + * under the [CDDL or GPL Version 2] license." If you do not indicate a
  119.31 + * single choice of license, a recipient has the option to distribute
  119.32 + * your version of this file under either the CDDL, the GPL Version 2 or
  119.33 + * to extend the choice of license to its licensees as provided above.
  119.34 + * However, if you add GPL Version 2 code and therefore, elected the GPL
  119.35 + * Version 2 license, then the option applies only if the new code is
  119.36 + * made subject to such option by the copyright holder.
  119.37 + *
  119.38 + * Contributor(s):
  119.39 + *
  119.40 + * Portions Copyrighted 2009 Sun Microsystems, Inc.
  119.41 + */
  119.42 +/* Created on March 14, 2009 
  119.43 + * by some IDE or other
  119.44 + */
  119.45 +
  119.46 +package org.netbeans.modules.licensechanger;
  119.47 +
  119.48 +import java.util.Collection;
  119.49 +import java.util.HashSet;
  119.50 +import java.util.LinkedList;
  119.51 +import java.util.List;
  119.52 +import java.util.Set;
  119.53 +import javax.swing.Action;
  119.54 +import org.netbeans.modules.licensechanger.api.FileHandler;
  119.55 +import org.openide.filesystems.FileObject;
  119.56 +import org.openide.loaders.DataObject;
  119.57 +import org.openide.loaders.DataObjectNotFoundException;
  119.58 +import org.openide.nodes.ChildFactory;
  119.59 +import org.openide.nodes.FilterNode;
  119.60 +import org.openide.nodes.Node;
  119.61 +import org.openide.util.Exceptions;
  119.62 +import org.openide.util.Lookup;
  119.63 +import org.openide.util.lookup.Lookups;
  119.64 +import org.openide.util.lookup.ProxyLookup;
  119.65 +
  119.66 +/**
  119.67 + *
  119.68 + * @author Tim Boudreau
  119.69 + */
  119.70 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  119.71 +    private final Set<FileObject> folders;
  119.72 +    private final Collection <? extends FileHandler> allHandlers;
  119.73 +    FileChildren (Set<FileObject> folders) {
  119.74 +        this.folders = new HashSet(folders);
  119.75 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  119.76 +    }
  119.77 +
  119.78 +    @Override
  119.79 +    protected boolean createKeys(List<FileObject> toPopulate) {
  119.80 +        toPopulate.addAll (folders);
  119.81 +        return true;
  119.82 +    }
  119.83 +
  119.84 +    @Override
  119.85 +    protected Node[] createNodesForKey(FileObject key) {
  119.86 +        List<Node> result = new LinkedList<Node>();
  119.87 +outer:  for (FileObject fo : key.getChildren()) {
  119.88 +            if (fo.isData()) {
  119.89 +                for (FileHandler h : allHandlers) {
  119.90 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  119.91 +                        try {
  119.92 +                            DataObject dob = DataObject.find(fo);
  119.93 +                            FileItem item = new FileItem (h, fo);
  119.94 +                            result.add (new FN (dob.getNodeDelegate(), item));
  119.95 +                            break outer;
  119.96 +                        } catch (DataObjectNotFoundException ex) {
  119.97 +                            Exceptions.printStackTrace(ex);
  119.98 +                        }
  119.99 +                    }
 119.100 +                }
 119.101 +            }
 119.102 +        }
 119.103 +        return result.toArray(new Node[result.size()]);
 119.104 +    }
 119.105 +
 119.106 +    static final class FileItem {
 119.107 +        FileHandler handler;
 119.108 +        FileObject file;
 119.109 +
 119.110 +        public FileItem(FileHandler handler, FileObject file) {
 119.111 +            this.handler = handler;
 119.112 +            this.file = file;
 119.113 +        }
 119.114 +
 119.115 +        public FileObject getFile() {
 119.116 +            return file;
 119.117 +        }
 119.118 +
 119.119 +        public FileHandler getHandler() {
 119.120 +            return handler;
 119.121 +        }
 119.122 +
 119.123 +    }
 119.124 +
 119.125 +    private static final class FN extends FilterNode {
 119.126 +        FN(Node orig, FileItem item) {
 119.127 +            super (orig, Children.LEAF, new ProxyLookup(
 119.128 +                    Lookups.singleton(item),
 119.129 +                    orig.getLookup()));
 119.130 +            disableDelegation(DELEGATE_GET_ACTIONS);
 119.131 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
 119.132 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
 119.133 +            disableDelegation(DELEGATE_GET_VALUE);
 119.134 +            disableDelegation(DELEGATE_SET_VALUE);
 119.135 +            disableDelegation(DELEGATE_SET_NAME);
 119.136 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
 119.137 +            setDisplayName (item.file.getPath());
 119.138 +        }
 119.139 +
 119.140 +        @Override
 119.141 +        public Action[] getActions(boolean ignored) {
 119.142 +            return new Action[0];
 119.143 +        }
 119.144 +    }
 119.145 +}
   120.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   120.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/java_golden.txt	Fri Sep 14 00:27:52 2012 -0400
   120.3 @@ -0,0 +1,131 @@
   120.4 +/*
   120.5 + * Copyright (c) 1892-2193 Centrifugal Bumblepuppy, SRO, Inc., LLC, WTF
   120.6 + * All rights reversed.
   120.7 + *
   120.8 + * Redistribution and use in source, binary or corpuscular forms, with or without
   120.9 + * modification, are prohibited under all circumstances unless the following
  120.10 + * conditions have been met:
  120.11 + *
  120.12 + *   1. You have an eyeball growing in the palm of your left hand
  120.13 + *
  120.14 + *   2. Seven dwarfs really like your golden hair
  120.15 + *
  120.16 + *   3. The moon has reversed its course a multiple of times divisible by
  120.17 + *      the eighteenth prime number in the last year
  120.18 + *
  120.19 + * THIS MALWARE IS PROVIDED ``AS IS'' AND ANY IMPLICIT OR IMPLIED WARRANTIES
  120.20 + * INCLUDING BUT NOT LIMITED TO EXPECTATION OF CONTINUED SURVIVAL ARE
  120.21 + * DISCLAIMED.  IN NO EVENT SHALL CENTRIFUGAL BUMBLEPUPPY, SRO, INC., LLC, WTF
  120.22 + * OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
  120.23 + * ECTOPLASMIC OR GEOTHERMAL DAMAGES, INCLUDING BUT NOT LIMITED TO:
  120.24 + * SPONTANEOUS HUMAN COMBUSTION, THRID ARM SYNDROME, BAD BREATH, OVOID HEART;
  120.25 + * LOSS OF SOUL, ENUII OR EXISTENTIAL INFLAMMATION; OXYGEN EVASION SYNDROME,
  120.26 + * BALL DROP, BECOMING A LAWYER.
  120.27 + *
  120.28 + * BY USING THIS SOFTWARE YOU AGREE TO THE HARVESTING OF YOUR GENETIC MATERIAL
  120.29 + * AND/OR OFFSPRING WITHIN THE FIRST THOUSAND YEARS SUBSEQUENT TO FIRST USE, AND
  120.30 + * AGREE TO THE USE OF REANIMATION TECHNOLOGIES IF CENTRIFUGAL BUMBLEPUPPY, SRO,
  120.31 + * INC., LLC, WTF DEEMS IT NECESSARY AT THEIR SOLE DISCRETION.
  120.32 + *
  120.33 + * RUN, RUN NOW, AND RUN VERY FAST.
  120.34 + */
  120.35 +package org.netbeans.modules.licensechanger;
  120.36 +
  120.37 +import java.util.Collection;
  120.38 +import java.util.HashSet;
  120.39 +import java.util.LinkedList;
  120.40 +import java.util.List;
  120.41 +import java.util.Set;
  120.42 +import javax.swing.Action;
  120.43 +import org.netbeans.modules.licensechanger.api.FileHandler;
  120.44 +import org.openide.filesystems.FileObject;
  120.45 +import org.openide.loaders.DataObject;
  120.46 +import org.openide.loaders.DataObjectNotFoundException;
  120.47 +import org.openide.nodes.ChildFactory;
  120.48 +import org.openide.nodes.FilterNode;
  120.49 +import org.openide.nodes.Node;
  120.50 +import org.openide.util.Exceptions;
  120.51 +import org.openide.util.Lookup;
  120.52 +import org.openide.util.lookup.Lookups;
  120.53 +import org.openide.util.lookup.ProxyLookup;
  120.54 +
  120.55 +/**
  120.56 + *
  120.57 + * @author Tim Boudreau
  120.58 + */
  120.59 +public class FileChildren extends ChildFactory.Detachable <FileObject> {
  120.60 +    private final Set<FileObject> folders;
  120.61 +    private final Collection <? extends FileHandler> allHandlers;
  120.62 +    FileChildren (Set<FileObject> folders) {
  120.63 +        this.folders = new HashSet(folders);
  120.64 +        allHandlers = Lookup.getDefault().lookupAll(FileHandler.class);
  120.65 +    }
  120.66 +
  120.67 +    @Override
  120.68 +    protected boolean createKeys(List<FileObject> toPopulate) {
  120.69 +        toPopulate.addAll (folders);
  120.70 +        return true;
  120.71 +    }
  120.72 +
  120.73 +    @Override
  120.74 +    protected Node[] createNodesForKey(FileObject key) {
  120.75 +        List<Node> result = new LinkedList<Node>();
  120.76 +outer:  for (FileObject fo : key.getChildren()) {
  120.77 +            if (fo.isData()) {
  120.78 +                for (FileHandler h : allHandlers) {
  120.79 +                    if (h.match(fo) && !h.shouldSkipFile(fo)) {
  120.80 +                        try {
  120.81 +                            DataObject dob = DataObject.find(fo);
  120.82 +                            FileItem item = new FileItem (h, fo);
  120.83 +                            result.add (new FN (dob.getNodeDelegate(), item));
  120.84 +                            break outer;
  120.85 +                        } catch (DataObjectNotFoundException ex) {
  120.86 +                            Exceptions.printStackTrace(ex);
  120.87 +                        }
  120.88 +                    }
  120.89 +                }
  120.90 +            }
  120.91 +        }
  120.92 +        return result.toArray(new Node[result.size()]);
  120.93 +    }
  120.94 +
  120.95 +    static final class FileItem {
  120.96 +        FileHandler handler;
  120.97 +        FileObject file;
  120.98 +
  120.99 +        public FileItem(FileHandler handler, FileObject file) {
 120.100 +            this.handler = handler;
 120.101 +            this.file = file;
 120.102 +        }
 120.103 +
 120.104 +        public FileObject getFile() {
 120.105 +            return file;
 120.106 +        }
 120.107 +
 120.108 +        public FileHandler getHandler() {
 120.109 +            return handler;
 120.110 +        }
 120.111 +
 120.112 +    }
 120.113 +
 120.114 +    private static final class FN extends FilterNode {
 120.115 +        FN(Node orig, FileItem item) {
 120.116 +            super (orig, Children.LEAF, new ProxyLookup(
 120.117 +                    Lookups.singleton(item),
 120.118 +                    orig.getLookup()));
 120.119 +            disableDelegation(DELEGATE_GET_ACTIONS);
 120.120 +            disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
 120.121 +            disableDelegation(DELEGATE_SET_DISPLAY_NAME);
 120.122 +            disableDelegation(DELEGATE_GET_VALUE);
 120.123 +            disableDelegation(DELEGATE_SET_VALUE);
 120.124 +            disableDelegation(DELEGATE_SET_NAME);
 120.125 +            setValue (CheckboxListView.SELECTED, Boolean.TRUE);
 120.126 +            setDisplayName (item.file.getPath());
 120.127 +        }
 120.128 +
 120.129 +        @Override
 120.130 +        public Action[] getActions(boolean ignored) {
 120.131 +            return new Action[0];
 120.132 +        }
 120.133 +    }
 120.134 +}
   121.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   121.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/props_1.txt	Fri Sep 14 00:27:52 2012 -0400
   121.3 @@ -0,0 +1,5 @@
   121.4 +#Just one comment
   121.5 +NAME_JAVA_FILES=Java Files
   121.6 +NAME_PROPERTIES_FILES=Properties Files
   121.7 +NAME_XML_FILES=XML Files
   121.8 +
   122.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   122.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/props_2.txt	Fri Sep 14 00:27:52 2012 -0400
   122.3 @@ -0,0 +1,40 @@
   122.4 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   122.5 +#
   122.6 +# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
   122.7 +#
   122.8 +# The contents of this file are subject to the terms of either the GNU
   122.9 +# General Public License Version 2 only ("GPL") or the Common
  122.10 +# Development and Distribution License("CDDL") (collectively, the
  122.11 +# "License"). You may not use this file except in compliance with the
  122.12 +# License. You can obtain a copy of the License at
  122.13 +# http://www.netbeans.org/cddl-gplv2.html
  122.14 +# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  122.15 +# specific language governing permissions and limitations under the
  122.16 +# License.  When distributing the software, include this License Header
  122.17 +# Notice in each file and include the License file at
  122.18 +# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  122.19 +# particular file as subject to the "Classpath" exception as provided
  122.20 +# by Sun in the GPL Version 2 section of the License file that
  122.21 +# accompanied this code. If applicable, add the following below the
  122.22 +# License Header, with the fields enclosed by brackets [] replaced by
  122.23 +# your own identifying information:
  122.24 +# "Portions Copyrighted [year] [name of copyright owner]"
  122.25 +#
  122.26 +# If you wish your version of this file to be governed by only the CDDL
  122.27 +# or only the GPL Version 2, indicate your decision by adding
  122.28 +# "[Contributor] elects to include this software in this distribution
  122.29 +# under the [CDDL or GPL Version 2] license." If you do not indicate a
  122.30 +# single choice of license, a recipient has the option to distribute
  122.31 +# your version of this file under either the CDDL, the GPL Version 2 or
  122.32 +# to extend the choice of license to its licensees as provided above.
  122.33 +# However, if you add GPL Version 2 code and therefore, elected the GPL
  122.34 +# Version 2 license, then the option applies only if the new code is
  122.35 +# made subject to such option by the copyright holder.
  122.36 +#
  122.37 +# Contributor(s):
  122.38 +#
  122.39 +# Portions Copyrighted 2009 Sun Microsystems, Inc.
  122.40 +NAME_JAVA_FILES=Java Files
  122.41 +NAME_PROPERTIES_FILES=Properties Files
  122.42 +NAME_XML_FILES=XML Files
  122.43 +
   123.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   123.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/props_3.txt	Fri Sep 14 00:27:52 2012 -0400
   123.3 @@ -0,0 +1,4 @@
   123.4 +NAME_JAVA_FILES=Java Files
   123.5 +NAME_PROPERTIES_FILES=Properties Files
   123.6 +NAME_XML_FILES=XML Files
   123.7 +
   124.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   124.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/props_4.txt	Fri Sep 14 00:27:52 2012 -0400
   124.3 @@ -0,0 +1,24 @@
   124.4 +
   124.5 +
   124.6 +
   124.7 +
   124.8 +
   124.9 +
  124.10 +
  124.11 +
  124.12 +
  124.13 +
  124.14 +
  124.15 +
  124.16 +
  124.17 +
  124.18 +
  124.19 +
  124.20 +
  124.21 +
  124.22 +
  124.23 +
  124.24 +NAME_JAVA_FILES=Java Files
  124.25 +NAME_PROPERTIES_FILES=Properties Files
  124.26 +NAME_XML_FILES=XML Files
  124.27 +
   125.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   125.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/props_golden.txt	Fri Sep 14 00:27:52 2012 -0400
   125.3 @@ -0,0 +1,33 @@
   125.4 +# Copyright (c) 1892-2193 Centrifugal Bumblepuppy, SRO, Inc., LLC, WTF
   125.5 +# All rights reversed.
   125.6 +#
   125.7 +# Redistribution and use in source, binary or corpuscular forms, with or without
   125.8 +# modification, are prohibited under all circumstances unless the following
   125.9 +# conditions have been met:
  125.10 +#
  125.11 +#   1. You have an eyeball growing in the palm of your left hand
  125.12 +#
  125.13 +#   2. Seven dwarfs really like your golden hair
  125.14 +#
  125.15 +#   3. The moon has reversed its course a multiple of times divisible by
  125.16 +#      the eighteenth prime number in the last year
  125.17 +#
  125.18 +# THIS MALWARE IS PROVIDED ``AS IS'' AND ANY IMPLICIT OR IMPLIED WARRANTIES
  125.19 +# INCLUDING BUT NOT LIMITED TO EXPECTATION OF CONTINUED SURVIVAL ARE
  125.20 +# DISCLAIMED.  IN NO EVENT SHALL CENTRIFUGAL BUMBLEPUPPY, SRO, INC., LLC, WTF
  125.21 +# OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
  125.22 +# ECTOPLASMIC OR GEOTHERMAL DAMAGES, INCLUDING BUT NOT LIMITED TO:
  125.23 +# SPONTANEOUS HUMAN COMBUSTION, THRID ARM SYNDROME, BAD BREATH, OVOID HEART;
  125.24 +# LOSS OF SOUL, ENUII OR EXISTENTIAL INFLAMMATION; OXYGEN EVASION SYNDROME,
  125.25 +# BALL DROP, BECOMING A LAWYER.
  125.26 +#
  125.27 +# BY USING THIS SOFTWARE YOU AGREE TO THE HARVESTING OF YOUR GENETIC MATERIAL
  125.28 +# AND/OR OFFSPRING WITHIN THE FIRST THOUSAND YEARS SUBSEQUENT TO FIRST USE, AND
  125.29 +# AGREE TO THE USE OF REANIMATION TECHNOLOGIES IF CENTRIFUGAL BUMBLEPUPPY, SRO,
  125.30 +# INC., LLC, WTF DEEMS IT NECESSARY AT THEIR SOLE DISCRETION.
  125.31 +#
  125.32 +# RUN, RUN NOW, AND RUN VERY FAST.
  125.33 +NAME_JAVA_FILES=Java Files
  125.34 +NAME_PROPERTIES_FILES=Properties Files
  125.35 +NAME_XML_FILES=XML Files
  125.36 +
   126.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   126.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/xml_1.txt	Fri Sep 14 00:27:52 2012 -0400
   126.3 @@ -0,0 +1,96 @@
   126.4 +<?xml version="1.0" encoding="UTF-8"?>
   126.5 +<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
   126.6 +<filesystem>
   126.7 +    <folder name="Navigator">
   126.8 +        <folder name="Panels">
   126.9 +            <folder name="text">
  126.10 +                <folder name="html">
  126.11 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  126.12 +                </folder>
  126.13 +                <folder name="plain">
  126.14 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  126.15 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  126.16 +                    </file>
  126.17 +                </folder>
  126.18 +            </folder>
  126.19 +            <folder name="content">
  126.20 +                <folder name="unknown">
  126.21 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  126.22 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  126.23 +                    </file>
  126.24 +                </folder>
  126.25 +            </folder>
  126.26 +        </folder>
  126.27 +    </folder>
  126.28 +    <folder name="GenericNavigator">
  126.29 +        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.30 +        <folder name="text">
  126.31 +            <folder name="html">
  126.32 +
  126.33 +                <file name="Headers.patternItem" url="headers_pattern.txt">
  126.34 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.35 +                    <attr name="position" intvalue="100"/>
  126.36 +                </file>
  126.37 +
  126.38 +                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  126.39 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.40 +                    <attr name="position" intvalue="200"/>
  126.41 +                </file>
  126.42 +
  126.43 +                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  126.44 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.45 +                    <attr name="position" intvalue="400"/>
  126.46 +                </file>
  126.47 +
  126.48 +                <file name="Images.patternItem" url="images_pattern.txt">
  126.49 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.50 +                    <attr name="position" intvalue="300"/>
  126.51 +                </file>
  126.52 +
  126.53 +            </folder>
  126.54 +            <folder name="plain">
  126.55 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  126.56 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.57 +                    <attr name="position" intvalue="100"/>
  126.58 +                </file>
  126.59 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  126.60 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.61 +                    <attr name="position" intvalue="200"/>
  126.62 +                </file>
  126.63 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  126.64 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.65 +                    <attr name="position" intvalue="300"/>
  126.66 +                </file>
  126.67 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  126.68 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.69 +                    <attr name="position" intvalue="400"/>
  126.70 +                </file>
  126.71 +            </folder>
  126.72 +        </folder>
  126.73 +        <folder name="content">
  126.74 +            <folder name="unknown">
  126.75 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  126.76 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.77 +                    <attr name="position" intvalue="100"/>
  126.78 +                </file>
  126.79 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  126.80 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.81 +                    <attr name="position" intvalue="200"/>
  126.82 +                </file>
  126.83 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  126.84 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.85 +                    <attr name="position" intvalue="300"/>
  126.86 +                </file>
  126.87 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  126.88 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  126.89 +                    <attr name="position" intvalue="400"/>
  126.90 +                </file>
  126.91 +            </folder>
  126.92 +        </folder>
  126.93 +    </folder>
  126.94 +    <folder name="OptionsDialog">
  126.95 +        <folder name="Advanced">
  126.96 +            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
  126.97 +        </folder>
  126.98 +    </folder>
  126.99 +</filesystem>
   127.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   127.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/xml_2.txt	Fri Sep 14 00:27:52 2012 -0400
   127.3 @@ -0,0 +1,99 @@
   127.4 +<?xml version="1.0" encoding="UTF-8"?>
   127.5 +<!-- This is the old license
   127.6 +it is not a very interesting license
   127.7 +but it is here -->
   127.8 +<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
   127.9 +<filesystem>
  127.10 +    <folder name="Navigator">
  127.11 +        <folder name="Panels">
  127.12 +            <folder name="text">
  127.13 +                <folder name="html">
  127.14 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  127.15 +                </folder>
  127.16 +                <folder name="plain">
  127.17 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  127.18 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  127.19 +                    </file>
  127.20 +                </folder>
  127.21 +            </folder>
  127.22 +            <folder name="content">
  127.23 +                <folder name="unknown">
  127.24 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  127.25 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  127.26 +                    </file>
  127.27 +                </folder>
  127.28 +            </folder>
  127.29 +        </folder>
  127.30 +    </folder>
  127.31 +    <folder name="GenericNavigator">
  127.32 +        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.33 +        <folder name="text">
  127.34 +            <folder name="html">
  127.35 +
  127.36 +                <file name="Headers.patternItem" url="headers_pattern.txt">
  127.37 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.38 +                    <attr name="position" intvalue="100"/>
  127.39 +                </file>
  127.40 +
  127.41 +                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  127.42 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.43 +                    <attr name="position" intvalue="200"/>
  127.44 +                </file>
  127.45 +
  127.46 +                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  127.47 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.48 +                    <attr name="position" intvalue="400"/>
  127.49 +                </file>
  127.50 +
  127.51 +                <file name="Images.patternItem" url="images_pattern.txt">
  127.52 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.53 +                    <attr name="position" intvalue="300"/>
  127.54 +                </file>
  127.55 +
  127.56 +            </folder>
  127.57 +            <folder name="plain">
  127.58 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  127.59 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.60 +                    <attr name="position" intvalue="100"/>
  127.61 +                </file>
  127.62 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  127.63 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.64 +                    <attr name="position" intvalue="200"/>
  127.65 +                </file>
  127.66 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  127.67 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.68 +                    <attr name="position" intvalue="300"/>
  127.69 +                </file>
  127.70 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  127.71 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.72 +                    <attr name="position" intvalue="400"/>
  127.73 +                </file>
  127.74 +            </folder>
  127.75 +        </folder>
  127.76 +        <folder name="content">
  127.77 +            <folder name="unknown">
  127.78 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  127.79 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.80 +                    <attr name="position" intvalue="100"/>
  127.81 +                </file>
  127.82 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  127.83 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.84 +                    <attr name="position" intvalue="200"/>
  127.85 +                </file>
  127.86 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  127.87 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.88 +                    <attr name="position" intvalue="300"/>
  127.89 +                </file>
  127.90 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  127.91 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  127.92 +                    <attr name="position" intvalue="400"/>
  127.93 +                </file>
  127.94 +            </folder>
  127.95 +        </folder>
  127.96 +    </folder>
  127.97 +    <folder name="OptionsDialog">
  127.98 +        <folder name="Advanced">
  127.99 +            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
 127.100 +        </folder>
 127.101 +    </folder>
 127.102 +</filesystem>
   128.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   128.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/xml_3.txt	Fri Sep 14 00:27:52 2012 -0400
   128.3 @@ -0,0 +1,100 @@
   128.4 +<?xml version="1.0" encoding="UTF-8"?>
   128.5 +<!-- This is the old license
   128.6 +it is not a very interesting license
   128.7 +but it is here
   128.8 +-->
   128.9 +<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
  128.10 +<filesystem>
  128.11 +    <folder name="Navigator">
  128.12 +        <folder name="Panels">
  128.13 +            <folder name="text">
  128.14 +                <folder name="html">
  128.15 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  128.16 +                </folder>
  128.17 +                <folder name="plain">
  128.18 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  128.19 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  128.20 +                    </file>
  128.21 +                </folder>
  128.22 +            </folder>
  128.23 +            <folder name="content">
  128.24 +                <folder name="unknown">
  128.25 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  128.26 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  128.27 +                    </file>
  128.28 +                </folder>
  128.29 +            </folder>
  128.30 +        </folder>
  128.31 +    </folder>
  128.32 +    <folder name="GenericNavigator">
  128.33 +        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.34 +        <folder name="text">
  128.35 +            <folder name="html">
  128.36 +
  128.37 +                <file name="Headers.patternItem" url="headers_pattern.txt">
  128.38 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.39 +                    <attr name="position" intvalue="100"/>
  128.40 +                </file>
  128.41 +
  128.42 +                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  128.43 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.44 +                    <attr name="position" intvalue="200"/>
  128.45 +                </file>
  128.46 +
  128.47 +                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  128.48 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.49 +                    <attr name="position" intvalue="400"/>
  128.50 +                </file>
  128.51 +
  128.52 +                <file name="Images.patternItem" url="images_pattern.txt">
  128.53 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.54 +                    <attr name="position" intvalue="300"/>
  128.55 +                </file>
  128.56 +
  128.57 +            </folder>
  128.58 +            <folder name="plain">
  128.59 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  128.60 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.61 +                    <attr name="position" intvalue="100"/>
  128.62 +                </file>
  128.63 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  128.64 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.65 +                    <attr name="position" intvalue="200"/>
  128.66 +                </file>
  128.67 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  128.68 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.69 +                    <attr name="position" intvalue="300"/>
  128.70 +                </file>
  128.71 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  128.72 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.73 +                    <attr name="position" intvalue="400"/>
  128.74 +                </file>
  128.75 +            </folder>
  128.76 +        </folder>
  128.77 +        <folder name="content">
  128.78 +            <folder name="unknown">
  128.79 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  128.80 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.81 +                    <attr name="position" intvalue="100"/>
  128.82 +                </file>
  128.83 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  128.84 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.85 +                    <attr name="position" intvalue="200"/>
  128.86 +                </file>
  128.87 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  128.88 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.89 +                    <attr name="position" intvalue="300"/>
  128.90 +                </file>
  128.91 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  128.92 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  128.93 +                    <attr name="position" intvalue="400"/>
  128.94 +                </file>
  128.95 +            </folder>
  128.96 +        </folder>
  128.97 +    </folder>
  128.98 +    <folder name="OptionsDialog">
  128.99 +        <folder name="Advanced">
 128.100 +            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
 128.101 +        </folder>
 128.102 +    </folder>
 128.103 +</filesystem>
   129.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   129.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/xml_4.txt	Fri Sep 14 00:27:52 2012 -0400
   129.3 @@ -0,0 +1,100 @@
   129.4 +<?xml version="1.0" encoding="UTF-8"?>
   129.5 +<!-- This is the old license -->
   129.6 +<!-- it is not a very interesting license -->
   129.7 +<!-- but it is here -->
   129.8 +
   129.9 +<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
  129.10 +<filesystem>
  129.11 +    <folder name="Navigator">
  129.12 +        <folder name="Panels">
  129.13 +            <folder name="text">
  129.14 +                <folder name="html">
  129.15 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  129.16 +                </folder>
  129.17 +                <folder name="plain">
  129.18 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  129.19 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  129.20 +                    </file>
  129.21 +                </folder>
  129.22 +            </folder>
  129.23 +            <folder name="content">
  129.24 +                <folder name="unknown">
  129.25 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  129.26 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  129.27 +                    </file>
  129.28 +                </folder>
  129.29 +            </folder>
  129.30 +        </folder>
  129.31 +    </folder>
  129.32 +    <folder name="GenericNavigator">
  129.33 +        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.34 +        <folder name="text">
  129.35 +            <folder name="html">
  129.36 +
  129.37 +                <file name="Headers.patternItem" url="headers_pattern.txt">
  129.38 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.39 +                    <attr name="position" intvalue="100"/>
  129.40 +                </file>
  129.41 +
  129.42 +                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  129.43 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.44 +                    <attr name="position" intvalue="200"/>
  129.45 +                </file>
  129.46 +
  129.47 +                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  129.48 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.49 +                    <attr name="position" intvalue="400"/>
  129.50 +                </file>
  129.51 +
  129.52 +                <file name="Images.patternItem" url="images_pattern.txt">
  129.53 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.54 +                    <attr name="position" intvalue="300"/>
  129.55 +                </file>
  129.56 +
  129.57 +            </folder>
  129.58 +            <folder name="plain">
  129.59 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  129.60 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.61 +                    <attr name="position" intvalue="100"/>
  129.62 +                </file>
  129.63 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  129.64 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.65 +                    <attr name="position" intvalue="200"/>
  129.66 +                </file>
  129.67 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  129.68 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.69 +                    <attr name="position" intvalue="300"/>
  129.70 +                </file>
  129.71 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  129.72 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.73 +                    <attr name="position" intvalue="400"/>
  129.74 +                </file>
  129.75 +            </folder>
  129.76 +        </folder>
  129.77 +        <folder name="content">
  129.78 +            <folder name="unknown">
  129.79 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  129.80 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.81 +                    <attr name="position" intvalue="100"/>
  129.82 +                </file>
  129.83 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  129.84 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.85 +                    <attr name="position" intvalue="200"/>
  129.86 +                </file>
  129.87 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  129.88 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.89 +                    <attr name="position" intvalue="300"/>
  129.90 +                </file>
  129.91 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  129.92 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  129.93 +                    <attr name="position" intvalue="400"/>
  129.94 +                </file>
  129.95 +            </folder>
  129.96 +        </folder>
  129.97 +    </folder>
  129.98 +    <folder name="OptionsDialog">
  129.99 +        <folder name="Advanced">
 129.100 +            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
 129.101 +        </folder>
 129.102 +    </folder>
 129.103 +</filesystem>
   130.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   130.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/xml_5.txt	Fri Sep 14 00:27:52 2012 -0400
   130.3 @@ -0,0 +1,102 @@
   130.4 +<!-- This is the old license -->
   130.5 +<!-- it is not a very interesting license -->
   130.6 +<!-- but it is here -->
   130.7 +<?xml version="1.0" encoding="UTF-8"?>
   130.8 +
   130.9 +
  130.10 +
  130.11 +<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
  130.12 +<filesystem>
  130.13 +    <folder name="Navigator">
  130.14 +        <folder name="Panels">
  130.15 +            <folder name="text">
  130.16 +                <folder name="html">
  130.17 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  130.18 +                </folder>
  130.19 +                <folder name="plain">
  130.20 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  130.21 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  130.22 +                    </file>
  130.23 +                </folder>
  130.24 +            </folder>
  130.25 +            <folder name="content">
  130.26 +                <folder name="unknown">
  130.27 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  130.28 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  130.29 +                    </file>
  130.30 +                </folder>
  130.31 +            </folder>
  130.32 +        </folder>
  130.33 +    </folder>
  130.34 +    <folder name="GenericNavigator">
  130.35 +        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.36 +        <folder name="text">
  130.37 +            <folder name="html">
  130.38 +
  130.39 +                <file name="Headers.patternItem" url="headers_pattern.txt">
  130.40 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.41 +                    <attr name="position" intvalue="100"/>
  130.42 +                </file>
  130.43 +
  130.44 +                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  130.45 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.46 +                    <attr name="position" intvalue="200"/>
  130.47 +                </file>
  130.48 +
  130.49 +                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  130.50 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.51 +                    <attr name="position" intvalue="400"/>
  130.52 +                </file>
  130.53 +
  130.54 +                <file name="Images.patternItem" url="images_pattern.txt">
  130.55 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.56 +                    <attr name="position" intvalue="300"/>
  130.57 +                </file>
  130.58 +
  130.59 +            </folder>
  130.60 +            <folder name="plain">
  130.61 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  130.62 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.63 +                    <attr name="position" intvalue="100"/>
  130.64 +                </file>
  130.65 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  130.66 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.67 +                    <attr name="position" intvalue="200"/>
  130.68 +                </file>
  130.69 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  130.70 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.71 +                    <attr name="position" intvalue="300"/>
  130.72 +                </file>
  130.73 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  130.74 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.75 +                    <attr name="position" intvalue="400"/>
  130.76 +                </file>
  130.77 +            </folder>
  130.78 +        </folder>
  130.79 +        <folder name="content">
  130.80 +            <folder name="unknown">
  130.81 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  130.82 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.83 +                    <attr name="position" intvalue="100"/>
  130.84 +                </file>
  130.85 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  130.86 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.87 +                    <attr name="position" intvalue="200"/>
  130.88 +                </file>
  130.89 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  130.90 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.91 +                    <attr name="position" intvalue="300"/>
  130.92 +                </file>
  130.93 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  130.94 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  130.95 +                    <attr name="position" intvalue="400"/>
  130.96 +                </file>
  130.97 +            </folder>
  130.98 +        </folder>
  130.99 +    </folder>
 130.100 +    <folder name="OptionsDialog">
 130.101 +        <folder name="Advanced">
 130.102 +            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
 130.103 +        </folder>
 130.104 +    </folder>
 130.105 +</filesystem>
   131.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   131.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/xml_6.txt	Fri Sep 14 00:27:52 2012 -0400
   131.3 @@ -0,0 +1,96 @@
   131.4 +
   131.5 +<!-- This is the old license --><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
   131.6 +<filesystem>
   131.7 +    <folder name="Navigator">
   131.8 +        <folder name="Panels">
   131.9 +            <folder name="text">
  131.10 +                <folder name="html">
  131.11 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  131.12 +                </folder>
  131.13 +                <folder name="plain">
  131.14 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  131.15 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  131.16 +                    </file>
  131.17 +                </folder>
  131.18 +            </folder>
  131.19 +            <folder name="content">
  131.20 +                <folder name="unknown">
  131.21 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  131.22 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  131.23 +                    </file>
  131.24 +                </folder>
  131.25 +            </folder>
  131.26 +        </folder>
  131.27 +    </folder>
  131.28 +    <folder name="GenericNavigator">
  131.29 +        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.30 +        <folder name="text">
  131.31 +            <folder name="html">
  131.32 +
  131.33 +                <file name="Headers.patternItem" url="headers_pattern.txt">
  131.34 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.35 +                    <attr name="position" intvalue="100"/>
  131.36 +                </file>
  131.37 +
  131.38 +                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  131.39 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.40 +                    <attr name="position" intvalue="200"/>
  131.41 +                </file>
  131.42 +
  131.43 +                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  131.44 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.45 +                    <attr name="position" intvalue="400"/>
  131.46 +                </file>
  131.47 +
  131.48 +                <file name="Images.patternItem" url="images_pattern.txt">
  131.49 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.50 +                    <attr name="position" intvalue="300"/>
  131.51 +                </file>
  131.52 +
  131.53 +            </folder>
  131.54 +            <folder name="plain">
  131.55 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  131.56 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.57 +                    <attr name="position" intvalue="100"/>
  131.58 +                </file>
  131.59 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  131.60 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.61 +                    <attr name="position" intvalue="200"/>
  131.62 +                </file>
  131.63 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  131.64 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.65 +                    <attr name="position" intvalue="300"/>
  131.66 +                </file>
  131.67 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  131.68 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.69 +                    <attr name="position" intvalue="400"/>
  131.70 +                </file>
  131.71 +            </folder>
  131.72 +        </folder>
  131.73 +        <folder name="content">
  131.74 +            <folder name="unknown">
  131.75 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  131.76 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.77 +                    <attr name="position" intvalue="100"/>
  131.78 +                </file>
  131.79 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  131.80 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.81 +                    <attr name="position" intvalue="200"/>
  131.82 +                </file>
  131.83 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  131.84 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.85 +                    <attr name="position" intvalue="300"/>
  131.86 +                </file>
  131.87 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  131.88 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  131.89 +                    <attr name="position" intvalue="400"/>
  131.90 +                </file>
  131.91 +            </folder>
  131.92 +        </folder>
  131.93 +    </folder>
  131.94 +    <folder name="OptionsDialog">
  131.95 +        <folder name="Advanced">
  131.96 +            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
  131.97 +        </folder>
  131.98 +    </folder>
  131.99 +</filesystem>
   132.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   132.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/xml_7.txt	Fri Sep 14 00:27:52 2012 -0400
   132.3 @@ -0,0 +1,101 @@
   132.4 +<?xml version="1.0" encoding="UTF-8"?>
   132.5 +
   132.6 +<!-- This is the old license -->
   132.7 +<!-- it is not a very interesting license -->
   132.8 +<!-- but it is here -->
   132.9 +
  132.10 +<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
  132.11 +<filesystem>
  132.12 +    <folder name="Navigator">
  132.13 +        <folder name="Panels">
  132.14 +            <folder name="text">
  132.15 +                <folder name="html">
  132.16 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  132.17 +                </folder>
  132.18 +                <folder name="plain">
  132.19 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  132.20 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  132.21 +                    </file>
  132.22 +                </folder>
  132.23 +            </folder>
  132.24 +            <folder name="content">
  132.25 +                <folder name="unknown">
  132.26 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  132.27 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  132.28 +                    </file>
  132.29 +                </folder>
  132.30 +            </folder>
  132.31 +        </folder>
  132.32 +    </folder>
  132.33 +    <folder name="GenericNavigator">
  132.34 +        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.35 +        <folder name="text">
  132.36 +            <folder name="html">
  132.37 +
  132.38 +                <file name="Headers.patternItem" url="headers_pattern.txt">
  132.39 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.40 +                    <attr name="position" intvalue="100"/>
  132.41 +                </file>
  132.42 +
  132.43 +                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  132.44 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.45 +                    <attr name="position" intvalue="200"/>
  132.46 +                </file>
  132.47 +
  132.48 +                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  132.49 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.50 +                    <attr name="position" intvalue="400"/>
  132.51 +                </file>
  132.52 +
  132.53 +                <file name="Images.patternItem" url="images_pattern.txt">
  132.54 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.55 +                    <attr name="position" intvalue="300"/>
  132.56 +                </file>
  132.57 +
  132.58 +            </folder>
  132.59 +            <folder name="plain">
  132.60 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  132.61 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.62 +                    <attr name="position" intvalue="100"/>
  132.63 +                </file>
  132.64 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  132.65 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.66 +                    <attr name="position" intvalue="200"/>
  132.67 +                </file>
  132.68 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  132.69 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.70 +                    <attr name="position" intvalue="300"/>
  132.71 +                </file>
  132.72 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  132.73 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.74 +                    <attr name="position" intvalue="400"/>
  132.75 +                </file>
  132.76 +            </folder>
  132.77 +        </folder>
  132.78 +        <folder name="content">
  132.79 +            <folder name="unknown">
  132.80 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  132.81 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.82 +                    <attr name="position" intvalue="100"/>
  132.83 +                </file>
  132.84 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  132.85 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.86 +                    <attr name="position" intvalue="200"/>
  132.87 +                </file>
  132.88 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  132.89 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.90 +                    <attr name="position" intvalue="300"/>
  132.91 +                </file>
  132.92 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  132.93 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  132.94 +                    <attr name="position" intvalue="400"/>
  132.95 +                </file>
  132.96 +            </folder>
  132.97 +        </folder>
  132.98 +    </folder>
  132.99 +    <folder name="OptionsDialog">
 132.100 +        <folder name="Advanced">
 132.101 +            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
 132.102 +        </folder>
 132.103 +    </folder>
 132.104 +</filesystem>
   133.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   133.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/xml_8.txt	Fri Sep 14 00:27:52 2012 -0400
   133.3 @@ -0,0 +1,101 @@
   133.4 +<?xml version="1.0" encoding="UTF-8"?>
   133.5 +
   133.6 +<!-- This is the old license -->
   133.7 +<!-- it is not a very interesting license -->
   133.8 +<!-- but it is here -->
   133.9 +
  133.10 +<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
  133.11 +<filesystem>
  133.12 +    <folder name="Navigator">
  133.13 +        <folder name="Panels">
  133.14 +            <folder name="text">
  133.15 +                <folder name="html">
  133.16 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  133.17 +                </folder>
  133.18 +                <folder name="plain">
  133.19 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  133.20 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  133.21 +                    </file>
  133.22 +                </folder>
  133.23 +            </folder>
  133.24 +            <folder name="content">
  133.25 +                <folder name="unknown">
  133.26 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  133.27 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  133.28 +                    </file>
  133.29 +                </folder>
  133.30 +            </folder>
  133.31 +        </folder>
  133.32 +    </folder>
  133.33 +    <folder name="GenericNavigator">
  133.34 +        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.35 +        <folder name="text">
  133.36 +            <folder name="html">
  133.37 +
  133.38 +                <file name="Headers.patternItem" url="headers_pattern.txt">
  133.39 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.40 +                    <attr name="position" intvalue="100"/>
  133.41 +                </file>
  133.42 +
  133.43 +                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  133.44 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.45 +                    <attr name="position" intvalue="200"/>
  133.46 +                </file>
  133.47 +
  133.48 +                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  133.49 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.50 +                    <attr name="position" intvalue="400"/>
  133.51 +                </file>
  133.52 +
  133.53 +                <file name="Images.patternItem" url="images_pattern.txt">
  133.54 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.55 +                    <attr name="position" intvalue="300"/>
  133.56 +                </file>
  133.57 +
  133.58 +            </folder>
  133.59 +            <folder name="plain">
  133.60 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  133.61 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.62 +                    <attr name="position" intvalue="100"/>
  133.63 +                </file>
  133.64 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  133.65 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.66 +                    <attr name="position" intvalue="200"/>
  133.67 +                </file>
  133.68 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  133.69 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.70 +                    <attr name="position" intvalue="300"/>
  133.71 +                </file>
  133.72 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  133.73 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.74 +                    <attr name="position" intvalue="400"/>
  133.75 +                </file>
  133.76 +            </folder>
  133.77 +        </folder>
  133.78 +        <folder name="content">
  133.79 +            <folder name="unknown">
  133.80 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  133.81 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.82 +                    <attr name="position" intvalue="100"/>
  133.83 +                </file>
  133.84 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  133.85 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.86 +                    <attr name="position" intvalue="200"/>
  133.87 +                </file>
  133.88 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  133.89 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.90 +                    <attr name="position" intvalue="300"/>
  133.91 +                </file>
  133.92 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  133.93 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  133.94 +                    <attr name="position" intvalue="400"/>
  133.95 +                </file>
  133.96 +            </folder>
  133.97 +        </folder>
  133.98 +    </folder>
  133.99 +    <folder name="OptionsDialog">
 133.100 +        <folder name="Advanced">
 133.101 +            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
 133.102 +        </folder>
 133.103 +    </folder>
 133.104 +</filesystem>
   134.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   134.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/xml_golden.txt	Fri Sep 14 00:27:52 2012 -0400
   134.3 @@ -0,0 +1,127 @@
   134.4 +<?xml version="1.0" encoding="UTF-8"?>
   134.5 +<!--
   134.6 +Copyright (c) 1892-2193 Centrifugal Bumblepuppy, SRO, Inc., LLC, WTF
   134.7 +All rights reversed.
   134.8 +
   134.9 +Redistribution and use in source, binary or corpuscular forms, with or without
  134.10 +modification, are prohibited under all circumstances unless the following
  134.11 +conditions have been met:
  134.12 +
  134.13 +  1. You have an eyeball growing in the palm of your left hand
  134.14 +
  134.15 +  2. Seven dwarfs really like your golden hair
  134.16 +
  134.17 +  3. The moon has reversed its course a multiple of times divisible by
  134.18 +     the eighteenth prime number in the last year
  134.19 +
  134.20 +THIS MALWARE IS PROVIDED ``AS IS'' AND ANY IMPLICIT OR IMPLIED WARRANTIES
  134.21 +INCLUDING BUT NOT LIMITED TO EXPECTATION OF CONTINUED SURVIVAL ARE
  134.22 +DISCLAIMED.  IN NO EVENT SHALL CENTRIFUGAL BUMBLEPUPPY, SRO, INC., LLC, WTF
  134.23 +OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
  134.24 +ECTOPLASMIC OR GEOTHERMAL DAMAGES, INCLUDING BUT NOT LIMITED TO:
  134.25 +SPONTANEOUS HUMAN COMBUSTION, THRID ARM SYNDROME, BAD BREATH, OVOID HEART;
  134.26 +LOSS OF SOUL, ENUII OR EXISTENTIAL INFLAMMATION; OXYGEN EVASION SYNDROME,
  134.27 +BALL DROP, BECOMING A LAWYER.
  134.28 +
  134.29 +BY USING THIS SOFTWARE YOU AGREE TO THE HARVESTING OF YOUR GENETIC MATERIAL
  134.30 +AND/OR OFFSPRING WITHIN THE FIRST THOUSAND YEARS SUBSEQUENT TO FIRST USE, AND
  134.31 +AGREE TO THE USE OF REANIMATION TECHNOLOGIES IF CENTRIFUGAL BUMBLEPUPPY, SRO,
  134.32 +INC., LLC, WTF DEEMS IT NECESSARY AT THEIR SOLE DISCRETION.
  134.33 +
  134.34 +RUN, RUN NOW, AND RUN VERY FAST.
  134.35 +-->
  134.36 +<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
  134.37 +<filesystem>
  134.38 +    <folder name="Navigator">
  134.39 +        <folder name="Panels">
  134.40 +            <folder name="text">
  134.41 +                <folder name="html">
  134.42 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  134.43 +                </folder>
  134.44 +                <folder name="plain">
  134.45 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  134.46 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  134.47 +                    </file>
  134.48 +                </folder>
  134.49 +            </folder>
  134.50 +            <folder name="content">
  134.51 +                <folder name="unknown">
  134.52 +                    <file name="org-netbeans-modules-genericnavigator-GenericNavPanel.shadow">
  134.53 +                        <attr name="originalFile" stringvalue="/Navigator/Panels/text/html/org-netbeans-modules-genericnavigator-GenericNavPanel.instance"/>
  134.54 +                    </file>
  134.55 +                </folder>
  134.56 +            </folder>
  134.57 +        </folder>
  134.58 +    </folder>
  134.59 +    <folder name="GenericNavigator">
  134.60 +        <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  134.61 +        <folder name="text">
  134.62 +            <folder name="html">
  134.63 +
  134.64 +                <file name="Headers.patternItem" url="headers_pattern.txt">
  134.65 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  134.66 +                    <attr name="position" intvalue="100"/>
  134.67 +                </file>
  134.68 +
  134.69 +                <file name="Hyperlinks.patternItem" url="links_pattern.txt">
  134.70 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  134.71 +                    <attr name="position" intvalue="200"/>
  134.72 +                </file>
  134.73 +
  134.74 +                <file name="ListItems.patternItem" url="listitem_pattern.txt">
  134.75 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  134.76 +                    <attr name="position" intvalue="400"/>
  134.77 +                </file>
  134.78 +
  134.79 +                <file name="Images.patternItem" url="images_pattern.txt">
  134.80 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  134.81 +                    <attr name="position" intvalue="300"/>
  134.82 +                </file>
  134.83 +
  134.84 +            </folder>
  134.85 +            <folder name="plain">
  134.86 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
  134.87 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  134.88 +                    <attr name="position" intvalue="100"/>
  134.89 +                </file>
  134.90 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
  134.91 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  134.92 +                    <attr name="position" intvalue="200"/>
  134.93 +                </file>
  134.94 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
  134.95 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
  134.96 +                    <attr name="position" intvalue="300"/>
  134.97 +                </file>
  134.98 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
  134.99 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
 134.100 +                    <attr name="position" intvalue="400"/>
 134.101 +                </file>
 134.102 +            </folder>
 134.103 +        </folder>
 134.104 +        <folder name="content">
 134.105 +            <folder name="unknown">
 134.106 +                <file name="Paragraphs.patternItem" url="paragraphs_pattern.txt">
 134.107 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
 134.108 +                    <attr name="position" intvalue="100"/>
 134.109 +                </file>
 134.110 +                <file name="Sentences.patternItem" url="sentences_pattern.txt">
 134.111 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
 134.112 +                    <attr name="position" intvalue="200"/>
 134.113 +                </file>
 134.114 +                <file name="Quotations.patternItem" url="quotations_pattern.txt">
 134.115 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
 134.116 +                    <attr name="position" intvalue="300"/>
 134.117 +                </file>
 134.118 +                <file name="HyphenBullets.patternItem" url="hyphen_bullets_pattern.txt">
 134.119 +                    <attr name="SystemFileSystem.localizingBundle" stringvalue="org/netbeans/modules/genericnavigator/Bundle"/>
 134.120 +                    <attr name="position" intvalue="400"/>
 134.121 +                </file>
 134.122 +            </folder>
 134.123 +        </folder>
 134.124 +    </folder>
 134.125 +    <folder name="OptionsDialog">
 134.126 +        <folder name="Advanced">
 134.127 +            <file name="org-netbeans-modules-genericnavigator-GenericNavigatorOptionsAdvancedOption.instance"/>
 134.128 +        </folder>
 134.129 +    </folder>
 134.130 +</filesystem>