FileObject folders are now displayed in lexical order.
authorNils Hoffmann <nhoffmann@netbeans.org>
Wed, 02 Jan 2013 13:38:30 +0100
changeset 1797110f00750c2ec
parent 17970 8ceeb7ae741f
child 17972 ae1c51f07289
FileObject folders are now displayed in lexical order.
Changed action registration location from primary file object menu to to Tools/Change License Header.
licensechanger/src/org/netbeans/modules/licensechanger/api/Customizable.java
licensechanger/src/org/netbeans/modules/licensechanger/api/FileHandler.java
licensechanger/src/org/netbeans/modules/licensechanger/api/LicenseHeader.java
licensechanger/src/org/netbeans/modules/licensechanger/api/RegexpFileHandler.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/GroovyFileHandler.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFileHandler.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFxFileHandler.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/PropertiesFileHandler.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/XmlFileHandler.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/XmlHandlerCustomizer.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/ChooseFileTypesPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChangerWizardAction.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChooserPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChooserWizardPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LineEndingsPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/PreviewPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/PreviewWizardPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/SelectFoldersPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/SelectFoldersWizardPanel.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/CheckableNodeCapability.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FileChildren.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FileLoader.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FolderChildren.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/LicenseChangerRunnable.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/LineEndingPreference.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/Offsets.java
licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/WizardProperties.java
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/GroovyFileHandlerTest.java
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFileHandlerTest.java
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/PropertiesFileHandlerTest.java
licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/XmlFileHandlerTest.java
     1.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/api/Customizable.java	Sun Dec 30 21:11:51 2012 +0100
     1.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/api/Customizable.java	Wed Jan 02 13:38:30 2013 +0100
     1.3 @@ -36,7 +36,6 @@
     1.4   *
     1.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
     1.6   */
     1.7 -
     1.8  package org.netbeans.modules.licensechanger.api;
     1.9  
    1.10  import java.awt.Component;
    1.11 @@ -47,5 +46,6 @@
    1.12   * @author Tim Boudreau
    1.13   */
    1.14  public interface Customizable {
    1.15 +
    1.16      public Component getCustomizer();
    1.17  }
     2.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/api/FileHandler.java	Sun Dec 30 21:11:51 2012 +0100
     2.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/api/FileHandler.java	Wed Jan 02 13:38:30 2013 +0100
     2.3 @@ -40,9 +40,7 @@
     2.4  
     2.5  import java.io.IOException;
     2.6  import java.io.InputStream;
     2.7 -import java.io.Reader;
     2.8  import java.io.StringWriter;
     2.9 -import java.io.Writer;
    2.10  import java.util.ArrayList;
    2.11  import java.util.Date;
    2.12  import java.util.List;
    2.13 @@ -51,7 +49,6 @@
    2.14  import java.util.regex.Matcher;
    2.15  import java.util.regex.Pattern;
    2.16  import javax.script.Bindings;
    2.17 -import javax.script.ScriptContext;
    2.18  import javax.script.ScriptEngine;
    2.19  import javax.script.ScriptEngineManager;
    2.20  import javax.script.ScriptException;
    2.21 @@ -87,9 +84,10 @@
    2.22  
    2.23      /**
    2.24       * <p>Uses the freemarker template engine to resolve the licenseText.</p>
    2.25 -     * 
    2.26 -     * <p>If no freemarker script engine is found, a {@link RuntimeException} is thrown.</p>
    2.27 -     * 
    2.28 +     *
    2.29 +     * <p>If no freemarker script engine is found, a {@link RuntimeException} is
    2.30 +     * thrown.</p>
    2.31 +     *
    2.32       * <p>This method will access user information under
    2.33       * {@code Templates/Properties/User.properties} in order to resolve various
    2.34       * tokens, e.g. 'user'. If that file does not exist, a
    2.35 @@ -97,22 +95,26 @@
    2.36       * {@link IOException}. Should the freemarker engine encounter a
    2.37       * {@link ScriptException}, this will also be wrapped in a
    2.38       * {@link RuntimeException}.</p>
    2.39 -     * 
    2.40 -     * <p>The additionalBindings parameter may be used to supplement or override the information 
    2.41 -     * retrieved from <code>User.properties</code>.</p>
    2.42 -     * 
    2.43 -     * <p>The implementation will look for tokens <code>${licenseFirst}</code>, <code>${licensePrefix}</code>, and 
    2.44 -     * <code>${licenseLast}</code> to determine whether the licenseText has already been interpolated or if it needs
    2.45 -     * escaping.
    2.46 +     *
    2.47 +     * <p>The additionalBindings parameter may be used to supplement or override
    2.48 +     * the information retrieved from
    2.49 +     * <code>User.properties</code>.</p>
    2.50 +     *
    2.51 +     * <p>The implementation will look for tokens
    2.52 +     * <code>${licenseFirst}</code>,
    2.53 +     * <code>${licensePrefix}</code>, and
    2.54 +     * <code>${licenseLast}</code> to determine whether the licenseText has
    2.55 +     * already been interpolated or if it needs escaping.
    2.56       *
    2.57       * @param licenseText the license test with freemarker template tokens
    2.58 -     * @param additionalBindings additional binding values for freemarker interpolation
    2.59 +     * @param additionalBindings additional binding values for freemarker
    2.60 +     * interpolation
    2.61       * @return the resolved licenseText
    2.62       * @throws RuntimeException
    2.63       */
    2.64      public String resolveLicenseTemplate(String licenseText, Map<String, Object> additionalBindings) throws RuntimeException {
    2.65          if (licenseText.contains("${") || (licenseText.contains("${licenseFirst}") && licenseText.contains("${licensePrefix}") && licenseText.contains("${licenseLast}"))) {
    2.66 -            System.out.println("License is a freemarker template!");
    2.67 +//            System.out.println("License is a freemarker template!");
    2.68              //freemarker template
    2.69              ScriptEngineManager sem = new ScriptEngineManager();
    2.70              ScriptEngine se = sem.getEngineByName("freemarker");
    2.71 @@ -129,7 +131,7 @@
    2.72                      throw new RuntimeException(ex);
    2.73                  } finally {
    2.74                      try {
    2.75 -                        if(in!=null) {
    2.76 +                        if (in != null) {
    2.77                              in.close();
    2.78                          }
    2.79                      } catch (IOException ex) {
    2.80 @@ -147,11 +149,11 @@
    2.81                  for (Map.Entry<String, Object> e : additionalBindings.entrySet()) {
    2.82                      bindings.put(e.getKey(), e.getValue());
    2.83                  }
    2.84 -                String user = additionalBindings.containsKey(WizardProperties.KEY_COPYRIGHT_HOLDER) ? (String)additionalBindings.get(WizardProperties.KEY_COPYRIGHT_HOLDER) : props.getProperty("user", System.getProperty("user.name"));
    2.85 -                System.out.println("Using user: " + user);
    2.86 +                String user = additionalBindings.containsKey(WizardProperties.KEY_COPYRIGHT_HOLDER) ? (String) additionalBindings.get(WizardProperties.KEY_COPYRIGHT_HOLDER) : props.getProperty("user", System.getProperty("user.name"));
    2.87 +//                System.out.println("Using user: " + user);
    2.88                  if (props.containsKey("project.organization")) {
    2.89                      Project project = new Project(props.getProperty("project.organization"));
    2.90 -                    System.out.println("Using project.organization: " + props.getProperty("project.organization"));
    2.91 +//                    System.out.println("Using project.organization: " + props.getProperty("project.organization"));
    2.92                      bindings.put("project", project);
    2.93                      bindings.put("user", user);
    2.94                  } else {
    2.95 @@ -173,11 +175,11 @@
    2.96                  throw new RuntimeException("Could not find script engine 'freemarker'!");
    2.97              }
    2.98          } else if (licenseText.contains(licenseFirst()) && licenseText.contains(licensePrefix()) && licenseText.contains(licenseLast())) {
    2.99 -            System.out.println("License is already escaped!");
   2.100 +//            System.out.println("License is already escaped!");
   2.101              //probably already escaped
   2.102              return licenseText;
   2.103          } else {
   2.104 -            System.out.println("License is plain!");
   2.105 +//            System.out.println("License is plain!");
   2.106              //unescaped
   2.107              return escape(licenseText);
   2.108          }
   2.109 @@ -195,7 +197,7 @@
   2.110  
   2.111      /**
   2.112       * Freemarker expects project.organization to be the field 'organization' in
   2.113 -     * an object. This provides a thin wrapper for that. Class must be public to 
   2.114 +     * an object. This provides a thin wrapper for that. Class must be public to
   2.115       * be accessible by freemarker.
   2.116       */
   2.117      public class Project {
   2.118 @@ -205,11 +207,10 @@
   2.119          public Project(String organization) {
   2.120              this.organization = organization;
   2.121          }
   2.122 -        
   2.123 +
   2.124          public String getOrganization() {
   2.125              return this.organization;
   2.126          }
   2.127 -        
   2.128      }
   2.129      static Pattern p = Pattern.compile("(.*?)\\n|\\z", Pattern.UNIX_LINES);
   2.130  
     3.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/api/LicenseHeader.java	Sun Dec 30 21:11:51 2012 +0100
     3.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/api/LicenseHeader.java	Wed Jan 02 13:38:30 2013 +0100
     3.3 @@ -36,7 +36,6 @@
     3.4   *
     3.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
     3.6   */
     3.7 -
     3.8  package org.netbeans.modules.licensechanger.api;
     3.9  
    3.10  import java.io.*;
    3.11 @@ -51,31 +50,36 @@
    3.12  import org.openide.util.Exceptions;
    3.13  
    3.14  /**
    3.15 - * License header resource/file abstraction class with static 
    3.16 - * methods to load a license header from file or registered license template.
    3.17 + * License header resource/file abstraction class with static methods to load a
    3.18 + * license header from file or registered license template.
    3.19 + *
    3.20   * @author Nils Hoffmann
    3.21   */
    3.22  public final class LicenseHeader {
    3.23 - 
    3.24 +
    3.25      /**
    3.26 -     * <p>Creates a <code>LicenseHeader</code> from a given <code>FileObject</code>.</p>
    3.27 -     * 
    3.28 -     * <p>If the passed in <code>licenseName</code> is <em>null</em>, the name is inferred 
    3.29 -     * from the <code>FileObject</code>'s name. According to NetBeans conventions, license
    3.30 -     * file names start with a prefixed <em>license-</em> before the actual license abbreviation,
    3.31 -     * e.g. <em>epl10</em> for the Eclipse public license version 1.0.</p>
    3.32 -     * 
    3.33 +     * <p>Creates a
    3.34 +     * <code>LicenseHeader</code> from a given
    3.35 +     * <code>FileObject</code>.</p>
    3.36 +     *
    3.37 +     * <p>If the passed in
    3.38 +     * <code>licenseName</code> is <em>null</em>, the name is inferred from the
    3.39 +     * <code>FileObject</code>'s name. According to NetBeans conventions,
    3.40 +     * license file names start with a prefixed <em>license-</em> before the
    3.41 +     * actual license abbreviation, e.g. <em>epl10</em> for the Eclipse public
    3.42 +     * license version 1.0.</p>
    3.43 +     *
    3.44       * @param file
    3.45       * @param licenseName
    3.46       * @param netBeansTemplate
    3.47 -     * @return 
    3.48 +     * @return
    3.49       */
    3.50      public static LicenseHeader fromFileObject(FileObject file, String licenseName, boolean isNetBeansTemplate) {
    3.51          String name;
    3.52 -        if(licenseName==null) {
    3.53 +        if (licenseName == null) {
    3.54              name = file.getName();
    3.55              name = name.substring("license-".length());
    3.56 -        }else{
    3.57 +        } else {
    3.58              name = licenseName;
    3.59          }
    3.60          String content;
    3.61 @@ -92,7 +96,7 @@
    3.62              return null;
    3.63          } finally {
    3.64              try {
    3.65 -                if(in!=null) {
    3.66 +                if (in != null) {
    3.67                      in.close();
    3.68                  }
    3.69              } catch (IOException ex) {
    3.70 @@ -100,46 +104,46 @@
    3.71              }
    3.72          }
    3.73      }
    3.74 -    
    3.75 +
    3.76      public static LicenseHeader fromFileObject(FileObject file, String licenseName) {
    3.77          return fromFileObject(file, licenseName, false);
    3.78      }
    3.79 -    
    3.80 +
    3.81      public static LicenseHeader fromFile(File file) {
    3.82 -        return fromFileObject(FileUtil.toFileObject(file),null);
    3.83 +        return fromFileObject(FileUtil.toFileObject(file), null);
    3.84      }
    3.85 -    
    3.86 +
    3.87      public static Collection<? extends LicenseHeader> fromTemplates() {
    3.88          FileObject licenseTemplates = FileUtil.getConfigFile("Templates/Licenses");
    3.89          List<LicenseHeader> templateLicenses = new LinkedList<LicenseHeader>();
    3.90 -        for(FileObject license:licenseTemplates.getChildren()) {
    3.91 +        for (FileObject license : licenseTemplates.getChildren()) {
    3.92              String name = license.getName();
    3.93              name = name.substring("license-".length());
    3.94 -            LicenseHeader licenseHeader = LicenseHeader.fromFileObject(license,name,true);
    3.95 -            if(licenseHeader.getLicenseHeader() == null || licenseHeader.getLicenseHeader().isEmpty()) {
    3.96 -                System.err.println("License file "+name+" seems to be empty! Skipping...");
    3.97 -            }else{
    3.98 +            LicenseHeader licenseHeader = LicenseHeader.fromFileObject(license, name, true);
    3.99 +            if (licenseHeader.getLicenseHeader() == null || licenseHeader.getLicenseHeader().isEmpty()) {
   3.100 +                System.err.println("License file " + name + " seems to be empty! Skipping...");
   3.101 +            } else {
   3.102                  licenseHeader.setNetBeansTemplate(true);
   3.103                  templateLicenses.add(licenseHeader);
   3.104              }
   3.105          }
   3.106          return templateLicenses;
   3.107      }
   3.108 -    
   3.109 +
   3.110      public static void addAsNetBeansTemplate(LicenseHeader header) {
   3.111 -        String filename = "license-"+header.getName()+".txt";
   3.112 +        String filename = "license-" + header.getName() + ".txt";
   3.113          FileObject licenseTemplates = FileUtil.getConfigFile("Templates/Licenses");
   3.114          BufferedWriter bos = null;
   3.115          try {
   3.116              FileObject templateFile = licenseTemplates.createData(filename);
   3.117 -            bos = new BufferedWriter(new OutputStreamWriter(templateFile.getOutputStream(),Charset.forName("UTF-8")));
   3.118 +            bos = new BufferedWriter(new OutputStreamWriter(templateFile.getOutputStream(), Charset.forName("UTF-8")));
   3.119              bos.write(header.getLicenseHeader());
   3.120              header.setNetBeansTemplate(true);
   3.121          } catch (IOException ex) {
   3.122              Exceptions.printStackTrace(ex);
   3.123          } finally {
   3.124              try {
   3.125 -                if(bos!=null) {
   3.126 +                if (bos != null) {
   3.127                      bos.close();
   3.128                  }
   3.129              } catch (IOException ex) {
   3.130 @@ -147,7 +151,6 @@
   3.131              }
   3.132          }
   3.133      }
   3.134 -    
   3.135      private final String name;
   3.136      private final String licenseHeader;
   3.137      private final FileObject fo;
   3.138 @@ -159,11 +162,11 @@
   3.139          this.fo = fo;
   3.140          this.netBeansTemplate = netBeansTemplate;
   3.141      }
   3.142 -    
   3.143 +
   3.144      public String getName() {
   3.145          return name;
   3.146      }
   3.147 -    
   3.148 +
   3.149      public String getLicenseHeader() {
   3.150          return licenseHeader;
   3.151      }
   3.152 @@ -189,5 +192,4 @@
   3.153          }
   3.154          return name;
   3.155      }
   3.156 -    
   3.157  }
     4.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/api/RegexpFileHandler.java	Sun Dec 30 21:11:51 2012 +0100
     4.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/api/RegexpFileHandler.java	Wed Jan 02 13:38:30 2013 +0100
     4.3 @@ -36,7 +36,6 @@
     4.4   *
     4.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
     4.6   */
     4.7 -
     4.8  package org.netbeans.modules.licensechanger.api;
     4.9  
    4.10  import java.util.regex.Matcher;
    4.11 @@ -48,8 +47,10 @@
    4.12   * @author Tim Boudreau
    4.13   */
    4.14  public abstract class RegexpFileHandler extends FileHandler {
    4.15 +
    4.16      private final Pattern pattern;
    4.17 -    public RegexpFileHandler (Pattern pattern) {
    4.18 +
    4.19 +    public RegexpFileHandler(Pattern pattern) {
    4.20          this.pattern = pattern;
    4.21      }
    4.22  
    4.23 @@ -61,13 +62,12 @@
    4.24                  int end = m.end(1);
    4.25                  return new Offsets(start, end);
    4.26              } else {
    4.27 -                throw new IllegalStateException ("Regexp " + pattern.pattern()
    4.28 +                throw new IllegalStateException("Regexp " + pattern.pattern()
    4.29                          + " gets groupCount " + m.groupCount());
    4.30              }
    4.31          } else {
    4.32 -            throw new IllegalStateException ("Regexp " + pattern.pattern() +
    4.33 -                    " could find match in " + seq);
    4.34 +            throw new IllegalStateException("Regexp " + pattern.pattern()
    4.35 +                    + " could find match in " + seq);
    4.36          }
    4.37      }
    4.38 -
    4.39  }
     5.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/GroovyFileHandler.java	Sun Dec 30 21:11:51 2012 +0100
     5.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/GroovyFileHandler.java	Wed Jan 02 13:38:30 2013 +0100
     5.3 @@ -46,11 +46,12 @@
     5.4  
     5.5  /**
     5.6   * Service Provider implementation for files with mime-type text/x-groovy.
     5.7 - * 
     5.8 + *
     5.9   * @author Nils Hoffmann
    5.10   */
    5.11 -@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
    5.12 +@org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.licensechanger.api.FileHandler.class)
    5.13  public class GroovyFileHandler extends JavaFileHandler {
    5.14 +
    5.15      @Override
    5.16      public String getDisplayName() {
    5.17          return NbBundle.getMessage(GroovyFileHandler.class, "NAME_GROOVY_FILES"); //NOI18N
     6.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFileHandler.java	Sun Dec 30 21:11:51 2012 +0100
     6.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFileHandler.java	Wed Jan 02 13:38:30 2013 +0100
     6.3 @@ -47,7 +47,7 @@
     6.4   *
     6.5   * @author Tim Boudreau
     6.6   */
     6.7 -@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
     6.8 +@org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.licensechanger.api.FileHandler.class)
     6.9  public class JavaFileHandler extends FileHandler {
    6.10  
    6.11      @Override
    6.12 @@ -69,13 +69,13 @@
    6.13      protected Offsets getReplaceOffsets(CharSequence seq) {
    6.14          String[] lines = splitIntoLines(seq);
    6.15          LineVisitor v = new LineVisitor();
    6.16 -        for (int i=0; i < lines.length; i++) {
    6.17 +        for (int i = 0; i < lines.length; i++) {
    6.18              String line = lines[i];
    6.19              if (!v.visitLine(line)) {
    6.20                  break;
    6.21              }
    6.22          }
    6.23 -        return new Offsets (0, v.delCount);
    6.24 +        return new Offsets(0, v.delCount);
    6.25      }
    6.26  
    6.27      @Override
    6.28 @@ -94,18 +94,20 @@
    6.29      }
    6.30  
    6.31      private static final class LineVisitor {
    6.32 +
    6.33          private boolean inComment;
    6.34          int delCount;
    6.35 -        public boolean visitLine (String line) {
    6.36 +
    6.37 +        public boolean visitLine(String line) {
    6.38              String trimmed = line.trim();
    6.39              if (trimmed.startsWith("//") || trimmed.startsWith("/*") && trimmed.endsWith("*/")) {
    6.40                  return visitCommentLine(line);
    6.41              } else if (trimmed.length() == 0) {
    6.42 -                return visitEmptyLine (line);
    6.43 +                return visitEmptyLine(line);
    6.44              } else if (inComment) {
    6.45 -                return visitLineInComment (line);
    6.46 +                return visitLineInComment(line);
    6.47              } else {
    6.48 -                return visitLineAndTestForComment (line);
    6.49 +                return visitLineAndTestForComment(line);
    6.50              }
    6.51          }
    6.52  
    6.53 @@ -145,7 +147,6 @@
    6.54          }
    6.55      }
    6.56  
    6.57 -
    6.58  //    @Override
    6.59  //    protected Offsets getReplaceOffsets(CharSequence seq) {
    6.60  //        int end2 = 0;
    6.61 @@ -191,20 +192,19 @@
    6.62  //        }
    6.63  //        return new Offsets(0, end2);
    6.64  //    }
    6.65 -
    6.66      @Override
    6.67      protected String escape(String licenseText) {
    6.68          StringBuilder sb = new StringBuilder(licenseText.length() + 30);
    6.69 -        String[] lines = splitIntoLines (licenseText);
    6.70 -        sb.append ("/*\n");
    6.71 +        String[] lines = splitIntoLines(licenseText);
    6.72 +        sb.append("/*\n");
    6.73          for (int i = 0; i < lines.length; i++) {
    6.74              String line = lines[i];
    6.75              boolean empty = line.trim().length() == 0;
    6.76              if (empty) {
    6.77 -                sb.append (" *");
    6.78 +                sb.append(" *");
    6.79              } else {
    6.80 -                sb.append (" * ");
    6.81 -                sb.append (line);
    6.82 +                sb.append(" * ");
    6.83 +                sb.append(line);
    6.84              }
    6.85              sb.append("\n");
    6.86          }
     7.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFxFileHandler.java	Sun Dec 30 21:11:51 2012 +0100
     7.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFxFileHandler.java	Wed Jan 02 13:38:30 2013 +0100
     7.3 @@ -36,14 +36,14 @@
     7.4   *
     7.5   * Portions Copyrighted 2010 Sun Microsystems, Inc.
     7.6   */
     7.7 -
     7.8  package org.netbeans.modules.licensechanger.spi.handlers;
     7.9  
    7.10  import org.openide.filesystems.FileObject;
    7.11  import org.openide.util.NbBundle;
    7.12  
    7.13 -@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
    7.14 +@org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.licensechanger.api.FileHandler.class)
    7.15  public class JavaFxFileHandler extends JavaFileHandler {
    7.16 +
    7.17      @Override
    7.18      public String getDisplayName() {
    7.19          return NbBundle.getMessage(JavaFxFileHandler.class, "NAME_JAVAFX_FILES"); //NOI18N
    7.20 @@ -54,4 +54,3 @@
    7.21          return "text/x-fx".equals(file.getMIMEType()); //NOI18N
    7.22      }
    7.23  }
    7.24 -
     8.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/PropertiesFileHandler.java	Sun Dec 30 21:11:51 2012 +0100
     8.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/PropertiesFileHandler.java	Wed Jan 02 13:38:30 2013 +0100
     8.3 @@ -36,7 +36,6 @@
     8.4   *
     8.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
     8.6   */
     8.7 -
     8.8  package org.netbeans.modules.licensechanger.spi.handlers;
     8.9  
    8.10  import org.netbeans.modules.licensechanger.api.FileHandler;
    8.11 @@ -49,17 +48,17 @@
    8.12   *
    8.13   * @author Tim Boudreau
    8.14   */
    8.15 -@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
    8.16 +@org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.licensechanger.api.FileHandler.class)
    8.17  public class PropertiesFileHandler extends FileHandler {
    8.18  
    8.19      @Override
    8.20      public String getDisplayName() {
    8.21 -        return NbBundle.getMessage (JavaFileHandler.class, "NAME_PROPERTIES_FILES"); //NOI18N
    8.22 +        return NbBundle.getMessage(JavaFileHandler.class, "NAME_PROPERTIES_FILES"); //NOI18N
    8.23      }
    8.24  
    8.25      @Override
    8.26      public boolean match(FileObject file) {
    8.27 -        return "properties".equals (file.getExt());
    8.28 +        return "properties".equals(file.getExt());
    8.29      }
    8.30  
    8.31      @Override
    8.32 @@ -67,8 +66,8 @@
    8.33          String n = file.getNameExt();
    8.34          return "project.properties".equals(n) || "private.properties".equals(n) || //NOI18N
    8.35                  "platform-private.properties".equals(n) || "genfiles.properties".equals(n)
    8.36 -                || "config.properties".equals(n) || "nblibraries-private.properties".equals(n) ||
    8.37 -                "nblibraries.properties".equals(n); //NOI18N
    8.38 +                || "config.properties".equals(n) || "nblibraries-private.properties".equals(n)
    8.39 +                || "nblibraries.properties".equals(n); //NOI18N
    8.40      }
    8.41  
    8.42      @Override
    8.43 @@ -85,7 +84,7 @@
    8.44                  break;
    8.45              }
    8.46          }
    8.47 -        return new Offsets (0, end);
    8.48 +        return new Offsets(0, end);
    8.49      }
    8.50  
    8.51      @Override
    8.52 @@ -95,12 +94,12 @@
    8.53          for (int i = 0; i < lines.length; i++) {
    8.54              String line = lines[i];
    8.55              if (line.trim().length() == 0) {
    8.56 -                sb.append ("#");
    8.57 +                sb.append("#");
    8.58              } else {
    8.59 -                sb.append ("# ");
    8.60 -                sb.append (line);
    8.61 +                sb.append("# ");
    8.62 +                sb.append(line);
    8.63              }
    8.64 -            sb.append ("\n");
    8.65 +            sb.append("\n");
    8.66          }
    8.67          return sb.toString();
    8.68      }
     9.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/XmlFileHandler.java	Sun Dec 30 21:11:51 2012 +0100
     9.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/XmlFileHandler.java	Wed Jan 02 13:38:30 2013 +0100
     9.3 @@ -36,7 +36,6 @@
     9.4   *
     9.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
     9.6   */
     9.7 -
     9.8  package org.netbeans.modules.licensechanger.spi.handlers;
     9.9  
    9.10  import java.io.CharConversionException;
    9.11 @@ -55,23 +54,23 @@
    9.12   *
    9.13   * @author Tim Boudreau
    9.14   */
    9.15 -@org.openide.util.lookup.ServiceProvider(service=org.netbeans.modules.licensechanger.api.FileHandler.class)
    9.16 -public class XmlFileHandler extends FileHandler{// implements Customizable {
    9.17 +@org.openide.util.lookup.ServiceProvider(service = org.netbeans.modules.licensechanger.api.FileHandler.class)
    9.18 +public class XmlFileHandler extends FileHandler {// implements Customizable {
    9.19  
    9.20      @Override
    9.21      public boolean match(FileObject file) {
    9.22          String ext = file.getExt();
    9.23          String mime = file.getMIMEType();
    9.24 -        return "xml".equals (file.getExt()) || "text/xml".equals(mime) ||
    9.25 -                "application/xml".equals(mime) || mime.endsWith("+xml");
    9.26 +        return "xml".equals(file.getExt()) || "text/xml".equals(mime)
    9.27 +                || "application/xml".equals(mime) || mime.endsWith("+xml");
    9.28      }
    9.29  
    9.30      @Override
    9.31      public boolean shouldSkipFile(FileObject file) {
    9.32          String n = file.getNameExt();
    9.33 -        return "project.xml".equals(n) ||
    9.34 -                "private.xml".equals(n) || "build.xml".equals(n) ||
    9.35 -                "build-impl.xml".equals(n) || "pom.xml".equals(n);
    9.36 +        return "project.xml".equals(n)
    9.37 +                || "private.xml".equals(n) || "build.xml".equals(n)
    9.38 +                || "build-impl.xml".equals(n) || "pom.xml".equals(n);
    9.39      }
    9.40  
    9.41      @Override
    9.42 @@ -83,13 +82,13 @@
    9.43      protected Offsets getReplaceOffsets(CharSequence seq) {
    9.44          String[] lines = splitIntoLines(seq);
    9.45          LineVisitor v = new LineVisitor();
    9.46 -        for (int i=0; i < lines.length; i++) {
    9.47 +        for (int i = 0; i < lines.length; i++) {
    9.48              String line = lines[i];
    9.49              if (!v.visitLine(line)) {
    9.50                  break;
    9.51              }
    9.52          }
    9.53 -        return new Offsets (v.start, v.delCount);
    9.54 +        return new Offsets(v.start, v.delCount);
    9.55      }
    9.56  
    9.57      @Override
    9.58 @@ -101,19 +100,17 @@
    9.59          }
    9.60          return "<!--\n" + licenseText + "\n-->\n";
    9.61      }
    9.62 -
    9.63 -    static Pattern xmlDeclaration = Pattern.compile ("(<\\?xml.*?\\?>)");
    9.64 +    static Pattern xmlDeclaration = Pattern.compile("(<\\?xml.*?\\?>)");
    9.65  
    9.66  //    @Override
    9.67  //    public Component getCustomizer() {
    9.68  //        return new XmlHandlerCustomizer();
    9.69  //    }
    9.70 -
    9.71      public static boolean isInsertAtTopOfFile() {
    9.72          return NbPreferences.forModule(XmlFileHandler.class).getBoolean("atTop", false);
    9.73      }
    9.74  
    9.75 -    public static void setInsertAtTopOfFile (boolean val) {
    9.76 +    public static void setInsertAtTopOfFile(boolean val) {
    9.77          NbPreferences.forModule(XmlFileHandler.class).putBoolean("atTop", val);
    9.78      }
    9.79  
    9.80 @@ -133,11 +130,13 @@
    9.81      }
    9.82  
    9.83      private static final class XmlDeclarationLocator {
    9.84 +
    9.85          int declarationStartIndex;
    9.86          int declarationEndIndex;
    9.87          boolean isMidLine;
    9.88 +
    9.89          public boolean visitLine(String line) {
    9.90 -            Matcher m = xmlDeclaration.matcher (line);
    9.91 +            Matcher m = xmlDeclaration.matcher(line);
    9.92              if (m.find()) {
    9.93                  declarationStartIndex += m.start(1);
    9.94                  declarationEndIndex = declarationStartIndex + m.end(1);
    9.95 @@ -155,28 +154,28 @@
    9.96      }
    9.97  
    9.98      @Override
    9.99 -    public String transform(String origText, String licenseText, Map<String,Object> bindings) {
   9.100 +    public String transform(String origText, String licenseText, Map<String, Object> bindings) {
   9.101          String[] lines = splitIntoLines(origText);
   9.102          XmlDeclarationLocator v = new XmlDeclarationLocator();
   9.103 -        for (int i=0; i < lines.length; i++) {
   9.104 +        for (int i = 0; i < lines.length; i++) {
   9.105              if (!v.visitLine(lines[i])) {
   9.106                  break;
   9.107              }
   9.108          }
   9.109          if (v.foundDeclaration()) {
   9.110 -            StringBuilder sb = new StringBuilder (origText);
   9.111 +            StringBuilder sb = new StringBuilder(origText);
   9.112              sb.delete(0, v.declarationStartIndex);
   9.113              origText = sb.toString();
   9.114          }
   9.115  //        String license = escape (licenseText);
   9.116          String license = resolveLicenseTemplate(licenseText, bindings);
   9.117          license = "\n" + license;
   9.118 -        StringBuilder sb = new StringBuilder (origText);
   9.119 +        StringBuilder sb = new StringBuilder(origText);
   9.120          Offsets o = getReplaceOffsets(sb);
   9.121          sb.delete(o.getStart(), o.getEnd());
   9.122          lines = splitIntoLines(origText);
   9.123          v = new XmlDeclarationLocator();
   9.124 -        for (int i=0; i < lines.length; i++) {
   9.125 +        for (int i = 0; i < lines.length; i++) {
   9.126              if (!v.visitLine(lines[i])) {
   9.127                  break;
   9.128              }
   9.129 @@ -189,13 +188,13 @@
   9.130          return sb.toString();
   9.131      }
   9.132  
   9.133 +    private static final class LineVisitor {
   9.134  
   9.135 -
   9.136 -    private static final class LineVisitor {
   9.137          private boolean inComment;
   9.138          int delCount;
   9.139          int start;
   9.140 -        public boolean visitLine (String line) {
   9.141 +
   9.142 +        public boolean visitLine(String line) {
   9.143              if (start == 0) {
   9.144                  if (line.trim().startsWith("<?xml ")) {
   9.145                      start += line.length() + 1;
   9.146 @@ -207,11 +206,11 @@
   9.147              if (trimmed.startsWith("<!--") && trimmed.endsWith("-->")) {
   9.148                  return visitCommentLine(line);
   9.149              } else if (trimmed.length() == 0) {
   9.150 -                return visitEmptyLine (line);
   9.151 +                return visitEmptyLine(line);
   9.152              } else if (inComment) {
   9.153 -                return visitLineInComment (line);
   9.154 +                return visitLineInComment(line);
   9.155              } else {
   9.156 -                return visitLineAndTestForComment (line);
   9.157 +                return visitLineAndTestForComment(line);
   9.158              }
   9.159          }
   9.160  
    10.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/XmlHandlerCustomizer.java	Sun Dec 30 21:11:51 2012 +0100
    10.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/handlers/XmlHandlerCustomizer.java	Wed Jan 02 13:38:30 2013 +0100
    10.3 @@ -43,19 +43,23 @@
    10.4   * @author Tim Boudreau
    10.5   */
    10.6  public class XmlHandlerCustomizer extends javax.swing.JPanel {
    10.7 +
    10.8      boolean init;
    10.9 -    /** Creates new form XmlHandlerCustomizer */
   10.10 +
   10.11 +    /**
   10.12 +     * Creates new form XmlHandlerCustomizer
   10.13 +     */
   10.14      public XmlHandlerCustomizer() {
   10.15          initComponents();
   10.16 -        afterButton.setSelected (!XmlFileHandler.isInsertAtTopOfFile());
   10.17 +        afterButton.setSelected(!XmlFileHandler.isInsertAtTopOfFile());
   10.18          beforeButton.setSelected(!afterButton.isSelected());
   10.19          init = true;
   10.20      }
   10.21  
   10.22 -    /** This method is called from within the constructor to
   10.23 -     * initialize the form.
   10.24 -     * WARNING: Do NOT modify this code. The content of this method is
   10.25 -     * always regenerated by the Form Editor.
   10.26 +    /**
   10.27 +     * This method is called from within the constructor to initialize the form.
   10.28 +     * WARNING: Do NOT modify this code. The content of this method is always
   10.29 +     * regenerated by the Form Editor.
   10.30       */
   10.31      @SuppressWarnings("unchecked")
   10.32      // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   10.33 @@ -105,15 +109,14 @@
   10.34      }// </editor-fold>//GEN-END:initComponents
   10.35  
   10.36      private void licensePreferenceChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_licensePreferenceChanged
   10.37 -        if (!init) return;
   10.38 +        if (!init) {
   10.39 +            return;
   10.40 +        }
   10.41          XmlFileHandler.setInsertAtTopOfFile(beforeButton.isSelected());
   10.42      }//GEN-LAST:event_licensePreferenceChanged
   10.43 -
   10.44 -
   10.45      // Variables declaration - do not modify//GEN-BEGIN:variables
   10.46      private javax.swing.JRadioButton afterButton;
   10.47      private javax.swing.JRadioButton beforeButton;
   10.48      private javax.swing.ButtonGroup buttonGroup1;
   10.49      // End of variables declaration//GEN-END:variables
   10.50 -
   10.51  }
    11.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties	Sun Dec 30 21:11:51 2012 +0100
    11.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/Bundle.properties	Wed Jan 02 13:38:30 2013 +0100
    11.3 @@ -3,11 +3,11 @@
    11.4  ERR_COULD_NOT_LOAD=Could not load {0}
    11.5  
    11.6  WIZARD_TITLE=Add/Replace License Headers
    11.7 -chooseFileTypes=Select File Types
    11.8 -chooseLicense=Select License
    11.9 -chooseFolders=Prune Folders
   11.10 -chooseFiles=Choose Files
   11.11 -preview=Preview
   11.12 +#chooseFileTypes=Select File Types
   11.13 +#chooseLicense=Select License
   11.14 +#chooseFolders=Prune Folders
   11.15 +#chooseFiles=Choose Files
   11.16 +#preview=Preview
   11.17  LBL_CHANGE_LICENSE=Change License Headers
   11.18  
   11.19  LicenseChooserPanel.chooseLabel.text=Choose License
   11.20 @@ -19,8 +19,10 @@
   11.21  ChooseFileTypesPanel.copyrightHolderLabel.text=Copyright Holder
   11.22  ChooseFileTypesPanel.licensePropertiesPanel.border.title=License Properties
   11.23  ChooseFileTypesPanel.storeInUserProperties.text=Store in User.properties
   11.24 +ChooseFileTypesPanel.nodesLabel.text=File Types
   11.25  
   11.26  SelectFoldersPanel.jLabel1.text=Uncheck Folders that Should Be Ignored
   11.27 +SelectFoldersPanel.nodesLabel.text=Folders
   11.28  
   11.29  LineEndingsPanel.border.title=Line Endings
   11.30  LineEndingsPanel.noChangeButton.text=Do Not Change
   11.31 @@ -34,3 +36,4 @@
   11.32  
   11.33  PreviewPanel.jLabel1.text=Select File for Preview
   11.34  PreviewPanel.jLabel3.text=jLabel3
   11.35 +PreviewPanel.nodesLabel.text=Files
    12.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/ChooseFileTypesPanel.java	Sun Dec 30 21:11:51 2012 +0100
    12.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/ChooseFileTypesPanel.java	Wed Jan 02 13:38:30 2013 +0100
    12.3 @@ -42,11 +42,12 @@
    12.4   *
    12.5   * Created on Mar 20, 2009, 1:14:43 AM
    12.6   */
    12.7 -
    12.8  package org.netbeans.modules.licensechanger.spi.wizard;
    12.9  
   12.10  import java.beans.PropertyChangeEvent;
   12.11  import java.beans.PropertyChangeListener;
   12.12 +import java.util.Collections;
   12.13 +import java.util.Comparator;
   12.14  import java.util.HashSet;
   12.15  import java.util.List;
   12.16  import java.util.Set;
   12.17 @@ -54,6 +55,7 @@
   12.18  import org.netbeans.modules.licensechanger.api.FileHandler;
   12.19  import org.netbeans.modules.licensechanger.spi.wizard.utils.CheckableNodeCapability;
   12.20  import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   12.21 +import org.netbeans.swing.outline.DefaultOutlineModel;
   12.22  import org.openide.explorer.ExplorerManager;
   12.23  import org.openide.explorer.view.CheckableNode;
   12.24  import org.openide.explorer.view.OutlineView;
   12.25 @@ -64,34 +66,26 @@
   12.26  import org.openide.util.Lookup;
   12.27  import org.openide.util.NbPreferences;
   12.28  import org.openide.util.lookup.Lookups;
   12.29 -import static org.netbeans.modules.licensechanger.spi.wizard.Bundle.*;
   12.30 -import org.openide.util.NbBundle;
   12.31 -import org.openide.util.NbBundle.Messages;
   12.32  
   12.33  /**
   12.34   *
   12.35   * @author Tim Boudreau
   12.36   * @author Nils Hoffmann (Refactoring)
   12.37   */
   12.38 -@Messages("ChooseFileTypesPanel.jScrollPane1.nodeHeaderLabel=File Type")
   12.39  public class ChooseFileTypesPanel extends javax.swing.JPanel implements ExplorerManager.Provider, PropertyChangeListener {
   12.40 +
   12.41      private final ExplorerManager mgr = new ExplorerManager();
   12.42  
   12.43      public ChooseFileTypesPanel() {
   12.44          initComponents();
   12.45 -        String copyrightHolder = 
   12.46 +        String copyrightHolder =
   12.47                  NbPreferences.forModule(ChooseFileTypesWizardPanel.class)
   12.48                  .get(WizardProperties.KEY_COPYRIGHT_HOLDER, null);
   12.49          if (copyrightHolder != null && !copyrightHolder.trim().isEmpty()) {
   12.50              copyrightHolderField.setText(copyrightHolder);
   12.51          }
   12.52 -        mgr.setRootContext(new AbstractNode (Children.create(new FileHandlerChildren(), false)));
   12.53 -//        ((CheckboxListView) jScrollPane1).setNodeCheckObserver(this);
   12.54 -//        ((CheckboxListView) jScrollPane1).setListEnabled(true);
   12.55 -//        ((CheckboxListView) jScrollPane1).setCheckboxesEnabled(true);
   12.56 -//        ((CheckboxListView) jScrollPane1).setCheckboxesVisible(true);
   12.57 +        mgr.setRootContext(new AbstractNode(Children.create(new FileHandlerChildren(), false)));
   12.58          mgr.addPropertyChangeListener(this);
   12.59 -        setName("Choose File Types");
   12.60          updateMap();
   12.61          updateView();
   12.62      }
   12.63 @@ -101,10 +95,10 @@
   12.64          firePropertyChange(WizardProperties.KEY_FILE_HANDLERS, null, handlers);
   12.65      }
   12.66  
   12.67 -    /** This method is called from within the constructor to
   12.68 -     * initialize the form.
   12.69 -     * WARNING: Do NOT modify this code. The content of this method is
   12.70 -     * always regenerated by the Form Editor.
   12.71 +    /**
   12.72 +     * This method is called from within the constructor to initialize the form.
   12.73 +     * WARNING: Do NOT modify this code. The content of this method is always
   12.74 +     * regenerated by the Form Editor.
   12.75       */
   12.76      @SuppressWarnings("unchecked")
   12.77      // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   12.78 @@ -207,8 +201,6 @@
   12.79      private void copyrightHolderFieldFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_copyrightHolderFieldFocusGained
   12.80          copyrightHolderField.selectAll();
   12.81      }//GEN-LAST:event_copyrightHolderFieldFocusGained
   12.82 -
   12.83 -
   12.84      // Variables declaration - do not modify//GEN-BEGIN:variables
   12.85      private javax.swing.JTextField copyrightHolderField;
   12.86      private javax.swing.JLabel copyrightHolderLabel;
   12.87 @@ -219,18 +211,18 @@
   12.88      private javax.swing.JLabel noCustomizerLabel;
   12.89      private javax.swing.JCheckBox storeInUserProperties;
   12.90      // End of variables declaration//GEN-END:variables
   12.91 -    
   12.92 +
   12.93      @Override
   12.94      public ExplorerManager getExplorerManager() {
   12.95          return mgr;
   12.96      }
   12.97  
   12.98      public Set<FileHandler> getFileHandlers() {
   12.99 -        Set <FileHandler> result = new HashSet<FileHandler>();
  12.100 +        Set<FileHandler> result = new HashSet<FileHandler>();
  12.101          for (Node n : mgr.getRootContext().getChildren().getNodes(true)) {
  12.102              CheckableNode cn = n.getLookup().lookup(CheckableNode.class);
  12.103 -            if (cn!= null && cn.isSelected()) {
  12.104 -                result.addAll (n.getLookup().lookupAll(FileHandler.class));
  12.105 +            if (cn != null && cn.isSelected()) {
  12.106 +                result.addAll(n.getLookup().lookupAll(FileHandler.class));
  12.107              }
  12.108          }
  12.109          return result;
  12.110 @@ -240,14 +232,14 @@
  12.111      public void propertyChange(PropertyChangeEvent evt) {
  12.112          if (ExplorerManager.PROP_SELECTED_NODES.equals(evt.getPropertyName())) {
  12.113              Node[] n = mgr.getSelectedNodes();
  12.114 -            updateCustomizer (n.length == 1 ? n[0].getLookup().lookup(Customizable.class) : null);
  12.115 +            updateCustomizer(n.length == 1 ? n[0].getLookup().lookup(Customizable.class) : null);
  12.116          }
  12.117      }
  12.118 -    
  12.119 +
  12.120      public String getCopyrightHolder() {
  12.121          return copyrightHolderField.getText();
  12.122      }
  12.123 -    
  12.124 +
  12.125      public void setCopyrightHolder(String copyrightHolder) {
  12.126          copyrightHolderField.setText(copyrightHolder);
  12.127      }
  12.128 @@ -255,31 +247,39 @@
  12.129      public boolean isStoreInUserProperties() {
  12.130          return storeInUserProperties.isSelected();
  12.131      }
  12.132 -    
  12.133 +
  12.134      public void setStoreInUserProperties(boolean b) {
  12.135          storeInUserProperties.setSelected(b);
  12.136      }
  12.137  
  12.138      private void updateView() {
  12.139 -        OutlineView ov = (OutlineView)jScrollPane1;
  12.140 +        OutlineView ov = (OutlineView) jScrollPane1;
  12.141          ov.getOutline().setRootVisible(false);
  12.142          ov.setPopupAllowed(false);
  12.143          ov.setTreeSortable(false);
  12.144          ov.getOutline().setShowGrid(false);
  12.145 -        String headerName = ChooseFileTypesPanel_jScrollPane1_nodeHeaderLabel(); // NOI18N
  12.146 -        ov.getOutline().getTableHeader().getColumnModel().getColumn(0).setHeaderValue(headerName);
  12.147 +        String headerName = org.openide.util.NbBundle.getMessage(ChooseFileTypesPanel.class, "SelectFoldersPanel.nodesLabel.text"); // NOI18N
  12.148 +        ((DefaultOutlineModel) ov.getOutline().getOutlineModel()).setNodesColumnLabel(headerName);
  12.149 +        setName("Choose File Types");
  12.150      }
  12.151  
  12.152      private static final class FileHandlerChildren extends ChildFactory<FileHandler> {
  12.153 +
  12.154          @Override
  12.155          protected boolean createKeys(List<FileHandler> toPopulate) {
  12.156 -            toPopulate.addAll (Lookup.getDefault().lookupAll(FileHandler.class));
  12.157 +            toPopulate.addAll(Lookup.getDefault().lookupAll(FileHandler.class));
  12.158 +            Collections.sort(toPopulate, new Comparator<FileHandler>() {
  12.159 +                @Override
  12.160 +                public int compare(FileHandler t, FileHandler t1) {
  12.161 +                    return t.getDisplayName().compareTo(t1.getDisplayName());
  12.162 +                }
  12.163 +            });
  12.164              return true;
  12.165          }
  12.166  
  12.167          @Override
  12.168          protected Node createNodeForKey(FileHandler key) {
  12.169 -            AbstractNode result = new AbstractNode (Children.LEAF, Lookups.fixed(key,new CheckableNodeCapability()));
  12.170 +            AbstractNode result = new AbstractNode(Children.LEAF, Lookups.fixed(key, new CheckableNodeCapability()));
  12.171              result.setDisplayName(key.getDisplayName());
  12.172              return result;
  12.173          }
  12.174 @@ -287,10 +287,9 @@
  12.175  
  12.176      private void updateCustomizer(Customizable c) {
  12.177          customizerPanel.removeAll();
  12.178 -        customizerPanel.add (c == null ? noCustomizerLabel : c.getCustomizer());
  12.179 +        customizerPanel.add(c == null ? noCustomizerLabel : c.getCustomizer());
  12.180          invalidate();
  12.181          revalidate();
  12.182          repaint();
  12.183      }
  12.184 -    
  12.185  }
    13.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChangerWizardAction.java	Sun Dec 30 21:11:51 2012 +0100
    13.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChangerWizardAction.java	Wed Jan 02 13:38:30 2013 +0100
    13.3 @@ -36,7 +36,6 @@
    13.4   *
    13.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    13.6   */
    13.7 -
    13.8  package org.netbeans.modules.licensechanger.spi.wizard;
    13.9  
   13.10  import java.awt.Component;
   13.11 @@ -55,6 +54,7 @@
   13.12  import org.openide.WizardDescriptor;
   13.13  import org.openide.awt.ActionID;
   13.14  import org.openide.awt.ActionReference;
   13.15 +import org.openide.awt.ActionReferences;
   13.16  import org.openide.awt.ActionRegistration;
   13.17  import org.openide.filesystems.FileObject;
   13.18  import org.openide.loaders.DataObject;
   13.19 @@ -62,6 +62,7 @@
   13.20  
   13.21  /**
   13.22   * Context-sensitive action to launch the license header change wizard.
   13.23 + *
   13.24   * @author Nils Hoffmann
   13.25   */
   13.26  @ActionID(
   13.27 @@ -69,16 +70,31 @@
   13.28  id = "org.netbeans.modules.licensechanger.wizard.LicenseChangerWizardAction")
   13.29  @ActionRegistration(
   13.30      displayName = "#CTL_LicenseChangerWizardAction")
   13.31 -@ActionReference(path = "Loaders/folder/any/Actions", position = 951)
   13.32 +@ActionReferences(
   13.33 +//    @ActionReference(path = "Loaders/folder/any/Actions", position = 951)
   13.34 +@ActionReference(path = "UI/ToolActions/Files", position = 951))
   13.35  @NbBundle.Messages("CTL_LicenseChangerWizardAction=Change License Header")
   13.36  public final class LicenseChangerWizardAction implements ActionListener {
   13.37  
   13.38      private List<DataObject> context;
   13.39 -    
   13.40 +
   13.41      public LicenseChangerWizardAction(List<DataObject> context) {
   13.42          this.context = context;
   13.43      }
   13.44 -    
   13.45 +
   13.46 +    /**
   13.47 +     * Used to return the parent folder of a file or the folder itself.
   13.48 +     *
   13.49 +     * @param fo
   13.50 +     * @return
   13.51 +     */
   13.52 +    private FileObject addFileObject(FileObject fo) {
   13.53 +        if (fo.isFolder()) {
   13.54 +            return fo;
   13.55 +        }
   13.56 +        return fo.getParent();
   13.57 +    }
   13.58 +
   13.59      @Override
   13.60      public void actionPerformed(ActionEvent e) {
   13.61          Set<FileObject> files = new HashSet<FileObject>();
   13.62 @@ -86,20 +102,20 @@
   13.63          for (DataObject ob : context) {
   13.64              FileObject fo = ob.getPrimaryFile();
   13.65              Project proj = FileOwnerQuery.getOwner(fo);
   13.66 -            if(owningProject == null) {
   13.67 +            if (owningProject == null) {
   13.68                  owningProject = proj;
   13.69                  //TODO implement better exclusion of build directories 
   13.70 -                files.add (fo);
   13.71 +                files.add(addFileObject(fo));
   13.72              } else {
   13.73 -                if(owningProject.equals(proj)) {
   13.74 -                    files.add(fo);
   13.75 +                if (owningProject.equals(proj)) {
   13.76 +                    files.add(addFileObject(fo));
   13.77                  } else {
   13.78                      Exceptions.printStackTrace(new IllegalStateException("Can only handle folders below one project!"));
   13.79                      return;
   13.80                  }
   13.81              }
   13.82          }
   13.83 -        
   13.84 +
   13.85          List<WizardDescriptor.Panel<WizardDescriptor>> panels = new ArrayList<WizardDescriptor.Panel<WizardDescriptor>>();
   13.86          panels.add(new ChooseFileTypesWizardPanel());
   13.87          panels.add(new LicenseChooserWizardPanel());
   13.88 @@ -122,7 +138,7 @@
   13.89          WizardDescriptor wiz = new WizardDescriptor(new WizardDescriptor.ArrayIterator<WizardDescriptor>(panels));
   13.90          // {0} will be replaced by WizardDesriptor.Panel.getComponent().getName()
   13.91          wiz.setTitleFormat(new MessageFormat("{0}"));
   13.92 -        wiz.setTitle("Change licenses");
   13.93 +        wiz.setTitle("Change License Headers");
   13.94          wiz.putProperty(WizardProperties.KEY_ROOT_FILES, files);
   13.95          wiz.putProperty(WizardProperties.KEY_PROJECT, owningProject);
   13.96          if (DialogDisplayer.getDefault().notify(wiz) == WizardDescriptor.FINISH_OPTION) {
    14.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChooserPanel.java	Sun Dec 30 21:11:51 2012 +0100
    14.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChooserPanel.java	Wed Jan 02 13:38:30 2013 +0100
    14.3 @@ -36,7 +36,6 @@
    14.4   *
    14.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    14.6   */
    14.7 -
    14.8  package org.netbeans.modules.licensechanger.spi.wizard;
    14.9  
   14.10  import java.awt.Component;
   14.11 @@ -165,9 +164,9 @@
   14.12              DefaultComboBoxModel dcbm = (DefaultComboBoxModel) selectLicense.getModel();
   14.13              LicenseHeader lh = LicenseHeader.fromFile(f);
   14.14              LicenseHeader.addAsNetBeansTemplate(lh);
   14.15 -            for(LicenseHeader header:LicenseHeader.fromTemplates()) {
   14.16 -                if(header.getName().equals(lh.getName())) {
   14.17 -                    System.out.println("Found newly added template!");
   14.18 +            for (LicenseHeader header : LicenseHeader.fromTemplates()) {
   14.19 +                if (header.getName().equals(lh.getName())) {
   14.20 +//                    System.out.println("Found newly added template!");
   14.21                      dcbm.addElement(header);
   14.22                      dcbm.setSelectedItem(header);
   14.23                      loadLicenseFromResource(header);
   14.24 @@ -203,7 +202,7 @@
   14.25      private void initLicenses() throws IOException {
   14.26          assert !EventQueue.isDispatchThread();
   14.27          final DefaultComboBoxModel mdl = new DefaultComboBoxModel();
   14.28 -        for(LicenseHeader header:LicenseHeader.fromTemplates()) {
   14.29 +        for (LicenseHeader header : LicenseHeader.fromTemplates()) {
   14.30              mdl.addElement(header);
   14.31          }
   14.32          EventQueue.invokeLater(new Runnable() {
   14.33 @@ -236,26 +235,25 @@
   14.34      public String getLicenseText() {
   14.35          return licenseText.getText();
   14.36      }
   14.37 -    
   14.38 +
   14.39      public String getLicenseName() {
   14.40          Object obj = selectLicense.getSelectedItem();
   14.41 -        if(obj!= null && obj instanceof LicenseHeader) {
   14.42 -            LicenseHeader header = (LicenseHeader)obj;
   14.43 +        if (obj != null && obj instanceof LicenseHeader) {
   14.44 +            LicenseHeader header = (LicenseHeader) obj;
   14.45              return header.getName();
   14.46          }
   14.47          return null;
   14.48      }
   14.49 -    
   14.50 +
   14.51      public boolean isUpdateDefaultProjectLicense() {
   14.52          return updateDefaultProjectLicense.isSelected();
   14.53      }
   14.54 -    
   14.55 +
   14.56      public void setUpdateDefaultProjectLicense(boolean b) {
   14.57          updateDefaultProjectLicense.setSelected(b);
   14.58      }
   14.59  
   14.60      private void updateLicense() {
   14.61 -        System.out.println("Update license called");
   14.62          licenseText.setEditable(false);
   14.63          String txt = licenseText.getText();
   14.64          if (!txt.endsWith("\n")) {
   14.65 @@ -286,7 +284,7 @@
   14.66          ResourceLoader(LicenseHeader header) {
   14.67              this.header = header;
   14.68          }
   14.69 -        
   14.70 +
   14.71          @Override
   14.72          public void run() {
   14.73              licenseText.setText(header.getLicenseHeader());
    15.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChooserWizardPanel.java	Sun Dec 30 21:11:51 2012 +0100
    15.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LicenseChooserWizardPanel.java	Wed Jan 02 13:38:30 2013 +0100
    15.3 @@ -36,7 +36,6 @@
    15.4   *
    15.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    15.6   */
    15.7 -
    15.8  package org.netbeans.modules.licensechanger.spi.wizard;
    15.9  
   15.10  import java.beans.PropertyChangeEvent;
   15.11 @@ -49,7 +48,7 @@
   15.12  import org.openide.util.HelpCtx;
   15.13  
   15.14  /**
   15.15 - * 
   15.16 + *
   15.17   * @author Nils Hoffmann
   15.18   */
   15.19  public class LicenseChooserWizardPanel implements WizardDescriptor.ValidatingPanel<WizardDescriptor>, PropertyChangeListener {
   15.20 @@ -75,7 +74,7 @@
   15.21          }
   15.22          return component;
   15.23      }
   15.24 -    
   15.25 +
   15.26      @Override
   15.27      public HelpCtx getHelp() {
   15.28          // Show no Help button for this panel:
   15.29 @@ -83,34 +82,34 @@
   15.30          // If you have context help:
   15.31          // return new HelpCtx("help.key.here");
   15.32      }
   15.33 -    
   15.34 +
   15.35      @Override
   15.36      public boolean isValid() {
   15.37          return valid;
   15.38      }
   15.39 -    
   15.40 +
   15.41      @Override
   15.42      public void addChangeListener(ChangeListener l) {
   15.43          cs.addChangeListener(l);
   15.44      }
   15.45 -    
   15.46 +
   15.47      @Override
   15.48      public void removeChangeListener(ChangeListener l) {
   15.49          cs.removeChangeListener(l);
   15.50      }
   15.51 -    
   15.52 +
   15.53      @Override
   15.54      public void propertyChange(PropertyChangeEvent pce) {
   15.55          cs.fireChange();
   15.56 -        try{
   15.57 +        try {
   15.58              validate();
   15.59 -        }catch(WizardValidationException ex) {
   15.60 -            if(wiz!=null) {
   15.61 +        } catch (WizardValidationException ex) {
   15.62 +            if (wiz != null) {
   15.63                  wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, "Please select a license!");
   15.64              }
   15.65          }
   15.66      }
   15.67 -    
   15.68 +
   15.69      @Override
   15.70      public void readSettings(WizardDescriptor wiz) {
   15.71          this.wiz = wiz;
   15.72 @@ -118,12 +117,12 @@
   15.73          if (obj != null && obj instanceof String) {
   15.74              getComponent().setLicenseText((String) obj);
   15.75          }
   15.76 -        Boolean b = (Boolean)wiz.getProperty(WizardProperties.KEY_UPDATE_DEFAULT_PROJECT_LICENSE);
   15.77 -        if(b != null) {
   15.78 +        Boolean b = (Boolean) wiz.getProperty(WizardProperties.KEY_UPDATE_DEFAULT_PROJECT_LICENSE);
   15.79 +        if (b != null) {
   15.80              getComponent().setUpdateDefaultProjectLicense(b);
   15.81          }
   15.82      }
   15.83 -    
   15.84 +
   15.85      @Override
   15.86      public void storeSettings(WizardDescriptor wiz) {
   15.87          wiz.putProperty(WizardProperties.KEY_LICENSE_TEXT, getComponent().getLicenseText());
   15.88 @@ -134,16 +133,15 @@
   15.89      @Override
   15.90      public void validate() throws WizardValidationException {
   15.91          valid = true;
   15.92 -        if (getComponent().getLicenseText() == null ||
   15.93 -            getComponent().getLicenseText().equals(WizardProperties.VALUE_DEFAULT_LICENSE_TEXT)) {
   15.94 +        if (getComponent().getLicenseText() == null
   15.95 +                || getComponent().getLicenseText().equals(WizardProperties.VALUE_DEFAULT_LICENSE_TEXT)) {
   15.96              valid = false;
   15.97              throw new WizardValidationException(component, "Please select a license!", null);
   15.98          }
   15.99 -        if(wiz!=null) {
  15.100 +        if (wiz != null) {
  15.101              wiz.putProperty(WizardDescriptor.PROP_INFO_MESSAGE, null);
  15.102              wiz.putProperty(WizardDescriptor.PROP_WARNING_MESSAGE, null);
  15.103              wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, null);
  15.104          }
  15.105      }
  15.106 -
  15.107  }
    16.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LineEndingsPanel.java	Sun Dec 30 21:11:51 2012 +0100
    16.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/LineEndingsPanel.java	Wed Jan 02 13:38:30 2013 +0100
    16.3 @@ -42,7 +42,6 @@
    16.4   *
    16.5   * Created on Mar 20, 2009, 12:33:04 AM
    16.6   */
    16.7 -
    16.8  package org.netbeans.modules.licensechanger.spi.wizard;
    16.9  
   16.10  import javax.swing.JRadioButton;
   16.11 @@ -55,8 +54,10 @@
   16.12   * @author Administrator
   16.13   */
   16.14  public class LineEndingsPanel extends javax.swing.JPanel {
   16.15 -    
   16.16 -    /** Creates new form LineEndingsPanel */
   16.17 +
   16.18 +    /**
   16.19 +     * Creates new form LineEndingsPanel
   16.20 +     */
   16.21      public LineEndingsPanel() {
   16.22          initComponents();
   16.23          forceCrlf.putClientProperty(WizardProperties.PROP_ENDING, LineEndingPreference.FORCE_CRLF);
   16.24 @@ -65,10 +66,10 @@
   16.25          systemDefaultButton.putClientProperty(WizardProperties.PROP_ENDING, LineEndingPreference.SYSTEM_DEFAULT);
   16.26      }
   16.27  
   16.28 -    /** This method is called from within the constructor to
   16.29 -     * initialize the form.
   16.30 -     * WARNING: Do NOT modify this code. The content of this method is
   16.31 -     * always regenerated by the Form Editor.
   16.32 +    /**
   16.33 +     * This method is called from within the constructor to initialize the form.
   16.34 +     * WARNING: Do NOT modify this code. The content of this method is always
   16.35 +     * regenerated by the Form Editor.
   16.36       */
   16.37      @SuppressWarnings("unchecked")
   16.38      // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   16.39 @@ -145,7 +146,7 @@
   16.40      }// </editor-fold>//GEN-END:initComponents
   16.41  
   16.42      private void lineEndingPreferenceChanged(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lineEndingPreferenceChanged
   16.43 -        for (JRadioButton b : new JRadioButton[] { forceCrlf, newlineButton, noChangeButton, systemDefaultButton }) {
   16.44 +        for (JRadioButton b : new JRadioButton[]{forceCrlf, newlineButton, noChangeButton, systemDefaultButton}) {
   16.45              if (b.isSelected()) {
   16.46                  LineEndingPreference x = (LineEndingPreference) b.getClientProperty(WizardProperties.PROP_ENDING);
   16.47                  if (x != null) {
   16.48 @@ -160,8 +161,6 @@
   16.49          String ending = NbPreferences.forModule(LineEndingsPanel.class).get(WizardProperties.PROP_ENDING, LineEndingPreference.NO_CHANGE.name());
   16.50          return LineEndingPreference.valueOf(ending);
   16.51      }
   16.52 -
   16.53 -
   16.54      // Variables declaration - do not modify//GEN-BEGIN:variables
   16.55      private javax.swing.ButtonGroup buttonGroup1;
   16.56      private javax.swing.JRadioButton forceCrlf;
   16.57 @@ -169,5 +168,4 @@
   16.58      private javax.swing.JRadioButton noChangeButton;
   16.59      private javax.swing.JRadioButton systemDefaultButton;
   16.60      // End of variables declaration//GEN-END:variables
   16.61 -
   16.62  }
    17.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/PreviewPanel.java	Sun Dec 30 21:11:51 2012 +0100
    17.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/PreviewPanel.java	Wed Jan 02 13:38:30 2013 +0100
    17.3 @@ -57,6 +57,7 @@
    17.4  import org.netbeans.modules.licensechanger.spi.wizard.utils.FileChildren.FileItem;
    17.5  import org.netbeans.modules.licensechanger.spi.wizard.utils.FileLoader;
    17.6  import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
    17.7 +import org.netbeans.swing.outline.DefaultOutlineModel;
    17.8  import org.openide.explorer.ExplorerManager;
    17.9  import org.openide.explorer.view.CheckableNode;
   17.10  import org.openide.explorer.view.OutlineView;
   17.11 @@ -67,15 +68,12 @@
   17.12  import org.openide.util.Exceptions;
   17.13  import org.openide.util.RequestProcessor;
   17.14  import org.openide.util.RequestProcessor.Task;
   17.15 -import static org.netbeans.modules.licensechanger.spi.wizard.Bundle.*;
   17.16 -import org.openide.util.NbBundle.Messages;
   17.17  
   17.18  /**
   17.19   *
   17.20   * @author Tim Boudreau
   17.21   * @author Nils Hoffmann (Refactoring, Diff API inclusion)
   17.22   */
   17.23 -@Messages("PreviewPanel.fileList.nodeHeaderLabel=Selected Files")
   17.24  public class PreviewPanel extends javax.swing.JPanel implements ExplorerManager.Provider, PropertyChangeListener {
   17.25  
   17.26      private final ExplorerManager mgr = new ExplorerManager();
   17.27 @@ -91,23 +89,21 @@
   17.28          jLabel3.setText("  ");
   17.29          updateView();
   17.30      }
   17.31 -    
   17.32 +
   17.33      private void updateView() {
   17.34          OutlineView ov = (OutlineView) fileList;
   17.35          ov.getOutline().setRootVisible(false);
   17.36          ov.setPopupAllowed(false);
   17.37          ov.setTreeSortable(false);
   17.38          ov.getOutline().setShowGrid(false);
   17.39 -        String headerName = PreviewPanel_fileList_nodeHeaderLabel(); // NOI18N
   17.40 -        ov.getOutline().getTableHeader().getColumnModel().getColumn(0).setHeaderValue(headerName);
   17.41 +        String headerName = org.openide.util.NbBundle.getMessage(PreviewPanel.class, "PreviewPanel.nodesLabel.text"); // NOI18N
   17.42 +        ((DefaultOutlineModel) ov.getOutline().getOutlineModel()).setNodesColumnLabel(headerName);
   17.43 +        setName("Preview Changes");
   17.44      }
   17.45  
   17.46      public void setFolders(Set<FileObject> folders, Set<FileHandler> fileHandler) {
   17.47          Children kids = Children.create(new FileChildren(folders, fileHandler), true);
   17.48          mgr.setRootContext(new AbstractNode(kids));
   17.49 -//        view().setCheckboxesVisible(true);
   17.50 -//        view().setCheckboxesEnabled(true);
   17.51 -//        view().setListEnabled(true);
   17.52          updateView();
   17.53          updateItems();
   17.54      }
   17.55 @@ -128,9 +124,6 @@
   17.56          firePropertyChange(WizardProperties.KEY_ITEMS, null, s);
   17.57      }
   17.58  
   17.59 -//    private CheckboxListView view() {
   17.60 -//        return (CheckboxListView) fileList;
   17.61 -//    }
   17.62      public void setLicenseText(String licenseText) {
   17.63          this.licenseText = licenseText;
   17.64          firePropertyChange(WizardProperties.KEY_LICENSE_TEXT, null, this.licenseText);
    18.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/PreviewWizardPanel.java	Sun Dec 30 21:11:51 2012 +0100
    18.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/PreviewWizardPanel.java	Wed Jan 02 13:38:30 2013 +0100
    18.3 @@ -36,7 +36,6 @@
    18.4   *
    18.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    18.6   */
    18.7 -
    18.8  package org.netbeans.modules.licensechanger.spi.wizard;
    18.9  
   18.10  import java.beans.PropertyChangeEvent;
   18.11 @@ -53,10 +52,10 @@
   18.12  import org.openide.util.HelpCtx;
   18.13  
   18.14  /**
   18.15 - * 
   18.16 + *
   18.17   * @author Nils Hoffmann
   18.18   */
   18.19 -public class PreviewWizardPanel implements WizardDescriptor.ValidatingPanel<WizardDescriptor>, PropertyChangeListener{
   18.20 +public class PreviewWizardPanel implements WizardDescriptor.ValidatingPanel<WizardDescriptor>, PropertyChangeListener {
   18.21  
   18.22      /**
   18.23       * The visual component that displays this panel. If you need to access the
   18.24 @@ -92,24 +91,24 @@
   18.25      public boolean isValid() {
   18.26          return valid;
   18.27      }
   18.28 -    
   18.29 +
   18.30      @Override
   18.31      public void addChangeListener(ChangeListener l) {
   18.32          cs.addChangeListener(l);
   18.33      }
   18.34 -    
   18.35 +
   18.36      @Override
   18.37      public void removeChangeListener(ChangeListener l) {
   18.38          cs.removeChangeListener(l);
   18.39      }
   18.40 -    
   18.41 +
   18.42      @Override
   18.43      public void propertyChange(PropertyChangeEvent pce) {
   18.44          cs.fireChange();
   18.45          try {
   18.46              validate();
   18.47          } catch (WizardValidationException ex) {
   18.48 -            if(wiz!=null) {
   18.49 +            if (wiz != null) {
   18.50                  wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, ex.getMessage());
   18.51              }
   18.52          }
   18.53 @@ -119,16 +118,16 @@
   18.54      public void readSettings(WizardDescriptor wiz) {
   18.55          this.wiz = wiz;
   18.56          @SuppressWarnings("unchecked")
   18.57 -        String license = (String)wiz.getProperty(WizardProperties.KEY_LICENSE_TEXT);
   18.58 -        if(license!=null) {
   18.59 +        String license = (String) wiz.getProperty(WizardProperties.KEY_LICENSE_TEXT);
   18.60 +        if (license != null) {
   18.61              getComponent().setLicenseText(license);
   18.62          }
   18.63          getComponent().setProperties(wiz.getProperties());
   18.64          @SuppressWarnings("unchecked")
   18.65 -        Set<FileHandler> fileHandler = (Set<FileHandler>)wiz.getProperty(WizardProperties.KEY_FILE_HANDLERS);
   18.66 +        Set<FileHandler> fileHandler = (Set<FileHandler>) wiz.getProperty(WizardProperties.KEY_FILE_HANDLERS);
   18.67          @SuppressWarnings("unchecked")
   18.68 -        Set<FileObject> folders = (Set<FileObject>)wiz.getProperty(WizardProperties.KEY_FOLDERS);
   18.69 -        if(fileHandler!=null && folders != null) {
   18.70 +        Set<FileObject> folders = (Set<FileObject>) wiz.getProperty(WizardProperties.KEY_FOLDERS);
   18.71 +        if (fileHandler != null && folders != null) {
   18.72              getComponent().setFolders(folders, fileHandler);
   18.73          }
   18.74          wiz.putProperty(WizardProperties.KEY_ITEMS, null);
   18.75 @@ -143,12 +142,12 @@
   18.76      public void validate() throws WizardValidationException {
   18.77          valid = true;
   18.78          Set<FileItem> keyItems = getComponent().getSelectedItems();
   18.79 -        
   18.80 -        if(keyItems==null || keyItems.isEmpty()) {
   18.81 +
   18.82 +        if (keyItems == null || keyItems.isEmpty()) {
   18.83              valid = false;
   18.84              throw new WizardValidationException(component, "Please select at least one file!", null);
   18.85          }
   18.86 -        if(wiz!=null) {
   18.87 +        if (wiz != null) {
   18.88              wiz.putProperty(WizardDescriptor.PROP_INFO_MESSAGE, null);
   18.89              wiz.putProperty(WizardDescriptor.PROP_WARNING_MESSAGE, null);
   18.90              wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, null);
    19.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/SelectFoldersPanel.java	Sun Dec 30 21:11:51 2012 +0100
    19.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/SelectFoldersPanel.java	Wed Jan 02 13:38:30 2013 +0100
    19.3 @@ -38,10 +38,12 @@
    19.4   */
    19.5  package org.netbeans.modules.licensechanger.spi.wizard;
    19.6  
    19.7 -import java.util.HashSet;
    19.8 +import java.util.Comparator;
    19.9  import java.util.Set;
   19.10 +import java.util.TreeSet;
   19.11  import org.netbeans.modules.licensechanger.spi.wizard.utils.FolderChildren;
   19.12  import org.netbeans.modules.licensechanger.spi.wizard.utils.WizardProperties;
   19.13 +import org.netbeans.swing.outline.DefaultOutlineModel;
   19.14  import org.openide.explorer.ExplorerManager;
   19.15  import org.openide.explorer.view.CheckableNode;
   19.16  import org.openide.explorer.view.OutlineView;
   19.17 @@ -49,41 +51,33 @@
   19.18  import org.openide.nodes.AbstractNode;
   19.19  import org.openide.nodes.Children;
   19.20  import org.openide.nodes.Node;
   19.21 -import static org.netbeans.modules.licensechanger.spi.wizard.Bundle.*;
   19.22 -import org.openide.util.NbBundle.Messages;
   19.23  
   19.24  /**
   19.25   *
   19.26   * @author Tim Boudreau
   19.27   * @author Nils Hoffmann (Refactoring)
   19.28   */
   19.29 -@Messages("SelectFoldersPanel.jScrollPane1.nodeHeaderLabel=Folders")
   19.30  public class SelectFoldersPanel extends javax.swing.JPanel implements ExplorerManager.Provider {
   19.31 -
   19.32 +    
   19.33      private final ExplorerManager mgr = new ExplorerManager();
   19.34 -
   19.35 +    
   19.36      public SelectFoldersPanel() {
   19.37          initComponents();
   19.38          updateView();
   19.39 +        setName("Select Folders");
   19.40      }
   19.41 -
   19.42 +    
   19.43      private void updateFolders() {
   19.44          Set<FileObject> folders = getSelectedFolders();
   19.45 -        System.out.println("Selected folders: " + folders);
   19.46 +//        System.out.println("Selected folders: " + folders);
   19.47          firePropertyChange(WizardProperties.KEY_FOLDERS, null, folders);
   19.48      }
   19.49 -
   19.50 +    
   19.51      private void enableUI() {
   19.52 -//        view().setCheckboxesVisible(true);
   19.53 -//        view().setCheckboxesEnabled(true);
   19.54          jLabel1.setEnabled(true);
   19.55 -//        view().setListEnabled(true);
   19.56          updateView();
   19.57      }
   19.58  
   19.59 -//    private CheckboxListView view() {
   19.60 -//        return (CheckboxListView) jScrollPane1;
   19.61 -//    }
   19.62      /**
   19.63       * This method is called from within the constructor to initialize the form.
   19.64       * WARNING: Do NOT modify this code. The content of this method is always
   19.65 @@ -130,7 +124,7 @@
   19.66      public ExplorerManager getExplorerManager() {
   19.67          return mgr;
   19.68      }
   19.69 -
   19.70 +    
   19.71      public void setRootFiles(Set<FileObject> roots) {
   19.72          AbstractNode root = new AbstractNode(Children.create(new FolderChildren(roots.toArray(new FileObject[roots.size()])) {
   19.73              @Override
   19.74 @@ -142,9 +136,14 @@
   19.75          mgr.setRootContext(root);
   19.76          firePropertyChange("rootFiles", null, roots);
   19.77      }
   19.78 -
   19.79 +    
   19.80      public Set<FileObject> getSelectedFolders() {
   19.81 -        Set<FileObject> folders = new HashSet<FileObject>();
   19.82 +        Set<FileObject> folders = new TreeSet<FileObject>(new Comparator<FileObject>() {
   19.83 +            @Override
   19.84 +            public int compare(FileObject t, FileObject t1) {
   19.85 +                return t.getPath().compareTo(t1.getPath());
   19.86 +            }
   19.87 +        });
   19.88          for (Node n : mgr.getRootContext().getChildren().getNodes(true)) {
   19.89              CheckableNode cn = n.getLookup().lookup(CheckableNode.class);
   19.90              if (cn != null && cn.isSelected()) {
   19.91 @@ -156,15 +155,14 @@
   19.92          }
   19.93          return folders;
   19.94      }
   19.95 -
   19.96 +    
   19.97      private void updateView() {
   19.98 -        //        view().setNodeCheckObserver(this);
   19.99          OutlineView ov = (OutlineView) jScrollPane1;
  19.100          ov.getOutline().setRootVisible(false);
  19.101          ov.setPopupAllowed(false);
  19.102          ov.setTreeSortable(false);
  19.103 -        ov.setName("Selected Folders");
  19.104 -        String headerName = SelectFoldersPanel_jScrollPane1_nodeHeaderLabel(); // NOI18N
  19.105 -        ov.getOutline().getTableHeader().getColumnModel().getColumn(0).setHeaderValue(headerName);
  19.106 +        String headerName = org.openide.util.NbBundle.getMessage(SelectFoldersPanel.class, "SelectFoldersPanel.nodesLabel.text"); // NOI18N
  19.107 +        ((DefaultOutlineModel) ov.getOutline().getOutlineModel()).setNodesColumnLabel(headerName);
  19.108 +        setName("Select Folders");
  19.109      }
  19.110  }
    20.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/SelectFoldersWizardPanel.java	Sun Dec 30 21:11:51 2012 +0100
    20.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/SelectFoldersWizardPanel.java	Wed Jan 02 13:38:30 2013 +0100
    20.3 @@ -36,7 +36,6 @@
    20.4   *
    20.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    20.6   */
    20.7 -
    20.8  package org.netbeans.modules.licensechanger.spi.wizard;
    20.9  
   20.10  import java.beans.PropertyChangeEvent;
   20.11 @@ -51,7 +50,7 @@
   20.12  import org.openide.util.HelpCtx;
   20.13  
   20.14  /**
   20.15 - * 
   20.16 + *
   20.17   * @author Nils Hoffmann
   20.18   */
   20.19  public class SelectFoldersWizardPanel implements WizardDescriptor.ValidatingPanel<WizardDescriptor>, PropertyChangeListener {
   20.20 @@ -90,24 +89,24 @@
   20.21      public boolean isValid() {
   20.22          return valid;
   20.23      }
   20.24 -    
   20.25 +
   20.26      @Override
   20.27      public void addChangeListener(ChangeListener l) {
   20.28          cs.addChangeListener(l);
   20.29      }
   20.30 -    
   20.31 +
   20.32      @Override
   20.33      public void removeChangeListener(ChangeListener l) {
   20.34          cs.removeChangeListener(l);
   20.35      }
   20.36 -    
   20.37 +
   20.38      @Override
   20.39      public void propertyChange(PropertyChangeEvent pce) {
   20.40          cs.fireChange();
   20.41 -        try{
   20.42 +        try {
   20.43              validate();
   20.44 -        }catch(WizardValidationException ex) {
   20.45 -            if(wiz!=null) {
   20.46 +        } catch (WizardValidationException ex) {
   20.47 +            if (wiz != null) {
   20.48                  wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, ex.getMessage());
   20.49              }
   20.50          }
   20.51 @@ -117,15 +116,15 @@
   20.52      public void readSettings(WizardDescriptor wiz) {
   20.53          this.wiz = wiz;
   20.54          @SuppressWarnings("unchecked")
   20.55 -        Set<FileObject> folders = (Set<FileObject>)wiz.getProperty(WizardProperties.KEY_FOLDERS);
   20.56 -        if(folders==null || folders.isEmpty()) {
   20.57 +        Set<FileObject> folders = (Set<FileObject>) wiz.getProperty(WizardProperties.KEY_FOLDERS);
   20.58 +        if (folders == null || folders.isEmpty()) {
   20.59              Object obj = wiz.getProperty(WizardProperties.KEY_ROOT_FILES);
   20.60 -            if(obj!=null) {
   20.61 +            if (obj != null) {
   20.62                  @SuppressWarnings("unchecked")
   20.63 -                Set<FileObject> sobj = (Set<FileObject>)obj;
   20.64 +                Set<FileObject> sobj = (Set<FileObject>) obj;
   20.65                  getComponent().setRootFiles(sobj);
   20.66              }
   20.67 -        }else{
   20.68 +        } else {
   20.69              getComponent().setRootFiles(folders);
   20.70          }
   20.71      }
   20.72 @@ -140,11 +139,11 @@
   20.73      public void validate() throws WizardValidationException {
   20.74          valid = true;
   20.75          Set<FileObject> folders = getComponent().getSelectedFolders();
   20.76 -        if(folders==null || folders.isEmpty()) {
   20.77 +        if (folders == null || folders.isEmpty()) {
   20.78              valid = false;
   20.79              throw new WizardValidationException(component, "Please select at least one folder!", null);
   20.80          }
   20.81 -        if(wiz!=null) {
   20.82 +        if (wiz != null) {
   20.83              wiz.putProperty(WizardDescriptor.PROP_INFO_MESSAGE, null);
   20.84              wiz.putProperty(WizardDescriptor.PROP_WARNING_MESSAGE, null);
   20.85              wiz.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, null);
    21.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/CheckableNodeCapability.java	Sun Dec 30 21:11:51 2012 +0100
    21.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/CheckableNodeCapability.java	Wed Jan 02 13:38:30 2013 +0100
    21.3 @@ -36,15 +36,14 @@
    21.4   *
    21.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    21.6   */
    21.7 -
    21.8  package org.netbeans.modules.licensechanger.spi.wizard.utils;
    21.9  
   21.10  import org.openide.explorer.view.CheckableNode;
   21.11  
   21.12  /**
   21.13 - * Implements {@see CheckableNode} to allow display and 
   21.14 - * use of checkable nodes in views.
   21.15 - * 
   21.16 + * Implements {@link CheckableNode} to allow display and use of checkable nodes
   21.17 + * in views.
   21.18 + *
   21.19   * @author Nils Hoffmann
   21.20   */
   21.21  public class CheckableNodeCapability implements CheckableNode {
   21.22 @@ -52,7 +51,7 @@
   21.23      private boolean checkable = true;
   21.24      private boolean checkEnabled = true;
   21.25      private boolean selected = true;
   21.26 -    
   21.27 +
   21.28      @Override
   21.29      public boolean isCheckable() {
   21.30          return checkable;
   21.31 @@ -72,5 +71,4 @@
   21.32      public void setSelected(Boolean selected) {
   21.33          this.selected = selected.booleanValue();
   21.34      }
   21.35 -    
   21.36  }
    22.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FileChildren.java	Sun Dec 30 21:11:51 2012 +0100
    22.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FileChildren.java	Wed Jan 02 13:38:30 2013 +0100
    22.3 @@ -36,7 +36,6 @@
    22.4   *
    22.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    22.6   */
    22.7 -
    22.8  package org.netbeans.modules.licensechanger.spi.wizard.utils;
    22.9  
   22.10  import java.util.Collection;
   22.11 @@ -92,8 +91,8 @@
   22.12                              DataObject dob = DataObject.find(fo);
   22.13                              FileItem item = new FileItem(h, fo);
   22.14                              items.add(item);
   22.15 -                            FN fn = new FN (dob.getNodeDelegate(), item);
   22.16 -                            boolean shouldChange =  !h.shouldSkipFile(fo);
   22.17 +                            FN fn = new FN(dob.getNodeDelegate(), item);
   22.18 +                            boolean shouldChange = !h.shouldSkipFile(fo);
   22.19                              result.add(fn);
   22.20  //                            fn.setValue (CheckboxListView.SELECTED, shouldChange);
   22.21                              break;
   22.22 @@ -130,7 +129,7 @@
   22.23  
   22.24          FN(Node orig, FileItem item) {
   22.25              super(orig, Children.LEAF, new ProxyLookup(
   22.26 -                    Lookups.fixed(item,new CheckableNodeCapability()),
   22.27 +                    Lookups.fixed(item, new CheckableNodeCapability()),
   22.28                      orig.getLookup()));
   22.29              disableDelegation(DELEGATE_GET_ACTIONS);
   22.30              disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
    23.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FileLoader.java	Sun Dec 30 21:11:51 2012 +0100
    23.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FileLoader.java	Wed Jan 02 13:38:30 2013 +0100
    23.3 @@ -36,7 +36,6 @@
    23.4   *
    23.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    23.6   */
    23.7 -
    23.8  package org.netbeans.modules.licensechanger.spi.wizard.utils;
    23.9  
   23.10  import java.io.BufferedInputStream;
   23.11 @@ -54,6 +53,7 @@
   23.12   * @author Nils Hoffmann (Refactoring)
   23.13   */
   23.14  public class FileLoader {
   23.15 +
   23.16      public static String loadFile(FileObject file) throws IOException {
   23.17          Charset encoding = FileEncodingQuery.getEncoding(file);
   23.18          InputStream in = new BufferedInputStream(file.getInputStream());
   23.19 @@ -62,7 +62,7 @@
   23.20              FileUtil.copy(in, out);
   23.21              try {
   23.22                  String result = new String(out.toByteArray(), encoding.name());
   23.23 -                String sep = System.getProperty ("line.separator");
   23.24 +                String sep = System.getProperty("line.separator");
   23.25                  //Convert everything internally to use \n
   23.26                  if (!"\n".equals(sep) && sep != null) {
   23.27                      return result.replaceAll(sep, "\n");
    24.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FolderChildren.java	Sun Dec 30 21:11:51 2012 +0100
    24.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/FolderChildren.java	Wed Jan 02 13:38:30 2013 +0100
    24.3 @@ -36,7 +36,6 @@
    24.4   *
    24.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    24.6   */
    24.7 -
    24.8  package org.netbeans.modules.licensechanger.spi.wizard.utils;
    24.9  
   24.10  import java.awt.EventQueue;
   24.11 @@ -64,12 +63,13 @@
   24.12   * @author Nils Hoffmann (changed to use CheckableNodeCapability)
   24.13   */
   24.14  public abstract class FolderChildren extends ChildFactory.Detachable<FileObject> implements Runnable {
   24.15 +
   24.16      private FileObject[] roots;
   24.17      volatile int keyCount = 0;
   24.18      private int nodeCount = 0;
   24.19      private volatile boolean cancelled = false;
   24.20  
   24.21 -    public FolderChildren (FileObject[] roots) {
   24.22 +    public FolderChildren(FileObject[] roots) {
   24.23          this.roots = roots;
   24.24      }
   24.25  
   24.26 @@ -94,12 +94,12 @@
   24.27          cancelled = true;
   24.28      }
   24.29  
   24.30 -    private boolean shouldSkipFolder (FileObject folder) {
   24.31 +    private boolean shouldSkipFolder(FileObject folder) {
   24.32          // XXX use VisibilityQuery instead
   24.33          String path = folder.getPath();
   24.34 -        return path.contains(".svn") || path.contains(".cvs") || path.contains(".hg") ||
   24.35 -                path.endsWith(".svn") || path.endsWith(".cvs") || path.endsWith(".hg") ||
   24.36 -                path.contains("target") || path.endsWith("target") || path.contains("build") || path.endsWith("build");
   24.37 +        return path.contains(".svn") || path.contains(".cvs") || path.contains(".hg")
   24.38 +                || path.endsWith(".svn") || path.endsWith(".cvs") || path.endsWith(".hg")
   24.39 +                || path.contains("target") || path.endsWith("target") || path.contains("build") || path.endsWith("build");
   24.40      }
   24.41  
   24.42      @Override
   24.43 @@ -149,9 +149,10 @@
   24.44      }
   24.45  
   24.46      private static final class FN extends FilterNode {
   24.47 +
   24.48          FN(Node orig, FileObject f) {
   24.49 -            super (orig, Children.LEAF, new ProxyLookup(
   24.50 -                    Lookups.fixed(f,new CheckableNodeCapability()),
   24.51 +            super(orig, Children.LEAF, new ProxyLookup(
   24.52 +                    Lookups.fixed(f, new CheckableNodeCapability()),
   24.53                      orig.getLookup()));
   24.54              disableDelegation(DELEGATE_GET_ACTIONS);
   24.55              disableDelegation(DELEGATE_GET_CONTEXT_ACTIONS);
   24.56 @@ -163,13 +164,12 @@
   24.57              disableDelegation(DELEGATE_GET_NAME);
   24.58              String p = f.getPath();
   24.59              // XXX this is a pretty arbitrary list... maybe check SharabilityQuery?
   24.60 -            if (!p.endsWith("nbproject") &&
   24.61 -                !p.endsWith("nbproject/private")) { //NOI18N
   24.62 +            if (!p.endsWith("nbproject")
   24.63 +                    && !p.endsWith("nbproject/private")) { //NOI18N
   24.64  //                setValue (CheckboxListView.SELECTED, Boolean.TRUE);
   24.65 -                    
   24.66 -            }else{
   24.67 +            } else {
   24.68                  CheckableNode cn = getLookup().lookup(CheckableNode.class);
   24.69 -                if(cn!=null) {
   24.70 +                if (cn != null) {
   24.71                      cn.setSelected(false);
   24.72                  }
   24.73              }
    25.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/LicenseChangerRunnable.java	Sun Dec 30 21:11:51 2012 +0100
    25.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/LicenseChangerRunnable.java	Wed Jan 02 13:38:30 2013 +0100
    25.3 @@ -53,7 +53,6 @@
    25.4  import org.netbeans.modules.maven.model.pom.Properties;
    25.5  import org.openide.WizardDescriptor;
    25.6  import org.openide.filesystems.*;
    25.7 -import org.openide.filesystems.FileUtil;
    25.8  import org.openide.util.EditableProperties;
    25.9  import org.openide.util.Exceptions;
   25.10  
   25.11 @@ -92,7 +91,7 @@
   25.12                                      Exceptions.printStackTrace(ex);
   25.13                                      throw new RuntimeException(ex);
   25.14                                  } finally {
   25.15 -                                    if(in!=null) {
   25.16 +                                    if (in != null) {
   25.17                                          in.close();
   25.18                                      }
   25.19                                  }
   25.20 @@ -105,7 +104,7 @@
   25.21                                      Exceptions.printStackTrace(ex);
   25.22                                      throw new RuntimeException(ex);
   25.23                                  } finally {
   25.24 -                                    if(out!=null) {
   25.25 +                                    if (out != null) {
   25.26                                          out.close();
   25.27                                      }
   25.28                                  }
   25.29 @@ -155,7 +154,7 @@
   25.30              }
   25.31              Boolean updateProjectLicense = (Boolean) wizard.getProperty(WizardProperties.KEY_UPDATE_DEFAULT_PROJECT_LICENSE);
   25.32              if (updateProjectLicense) {
   25.33 -                System.out.println("Updating default license header!");
   25.34 +//                System.out.println("Updating default license header!");
   25.35                  Project project = (Project) wizard.getProperty(WizardProperties.KEY_PROJECT);
   25.36                  Sources source = ProjectUtils.getSources(project);
   25.37                  for (SourceGroup group : source.getSourceGroups(Sources.TYPE_GENERIC)) {
   25.38 @@ -165,7 +164,7 @@
   25.39                              final FileObject projectProps = FileUtil.createData(nbprojectDir, "project.properties");
   25.40                              boolean hasProjectProperties = group.contains(projectProps);
   25.41                              if (hasProjectProperties) {
   25.42 -                                System.out.println("Found project.properties at " + projectProps.getPath());
   25.43 +//                                System.out.println("Found project.properties at " + projectProps.getPath());
   25.44                                  ProjectManager.mutex().writeAccess(new Runnable() {
   25.45                                      @Override
   25.46                                      public void run() {
   25.47 @@ -195,7 +194,7 @@
   25.48                              //check for pom.xml
   25.49                              FileObject pom = group.getRootFolder().getFileObject("pom.xml");
   25.50                              if (pom != null) {
   25.51 -                                System.out.println("Found maven pom.xml at " + pom.getPath());
   25.52 +//                                System.out.println("Found maven pom.xml at " + pom.getPath());
   25.53                                  //found pom-based maven project
   25.54  //                                String netbeansHintLicense = "<netbeans.hint.license>" + licenseName + "</netbeans.hint.license>";
   25.55  //                                System.out.println("Please add " + netbeansHintLicense + " within your pom.xml <properties> section!");
    26.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/LineEndingPreference.java	Sun Dec 30 21:11:51 2012 +0100
    26.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/LineEndingPreference.java	Wed Jan 02 13:38:30 2013 +0100
    26.3 @@ -36,7 +36,6 @@
    26.4   *
    26.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    26.6   */
    26.7 -
    26.8  package org.netbeans.modules.licensechanger.spi.wizard.utils;
    26.9  
   26.10  /**
   26.11 @@ -45,30 +44,31 @@
   26.12   * @author Tim Boudreau
   26.13   */
   26.14  public enum LineEndingPreference {
   26.15 +
   26.16      FORCE_CRLF,
   26.17      NO_CHANGE,
   26.18      FORCE_NEWLINE,
   26.19      SYSTEM_DEFAULT;
   26.20 -    
   26.21 -    public static String convertLineEndings (LineEndingPreference pref, String old, String nue) {
   26.22 +
   26.23 +    public static String convertLineEndings(LineEndingPreference pref, String old, String nue) {
   26.24          boolean oldHasCrlf = old.contains("\r\n"); //NOI18N
   26.25          switch (pref) {
   26.26 -            case FORCE_CRLF :
   26.27 +            case FORCE_CRLF:
   26.28                  return nue.replaceAll("\n", "\r\n"); //NOI18N
   26.29 -            case FORCE_NEWLINE :
   26.30 +            case FORCE_NEWLINE:
   26.31                  //We already converted everything to newline only on load
   26.32                  return nue;
   26.33 -            case NO_CHANGE :
   26.34 +            case NO_CHANGE:
   26.35                  return oldHasCrlf ? nue.replaceAll("\n", "\r\n") : //NOI18N
   26.36 -                    nue;
   26.37 -            case SYSTEM_DEFAULT :
   26.38 -                String sep = System.getProperty( "line.separator" ); //NOI18N
   26.39 +                        nue;
   26.40 +            case SYSTEM_DEFAULT:
   26.41 +                String sep = System.getProperty("line.separator"); //NOI18N
   26.42                  if ("\n".equals(sep)) {
   26.43                      return nue;
   26.44                  } else {
   26.45 -                      return nue.replaceAll("\n", sep);//NOI18N
   26.46 +                    return nue.replaceAll("\n", sep);//NOI18N
   26.47                  }
   26.48 -            default :
   26.49 +            default:
   26.50                  throw new AssertionError();
   26.51          }
   26.52      }
    27.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/Offsets.java	Sun Dec 30 21:11:51 2012 +0100
    27.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/Offsets.java	Wed Jan 02 13:38:30 2013 +0100
    27.3 @@ -36,7 +36,6 @@
    27.4   *
    27.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    27.6   */
    27.7 -
    27.8  package org.netbeans.modules.licensechanger.spi.wizard.utils;
    27.9  
   27.10  /**
   27.11 @@ -44,6 +43,7 @@
   27.12   * @author Tim Boudreau
   27.13   */
   27.14  public final class Offsets {
   27.15 +
   27.16      private final int start;
   27.17      private final int end;
   27.18  
    28.1 --- a/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/WizardProperties.java	Sun Dec 30 21:11:51 2012 +0100
    28.2 +++ b/licensechanger/src/org/netbeans/modules/licensechanger/spi/wizard/utils/WizardProperties.java	Wed Jan 02 13:38:30 2013 +0100
    28.3 @@ -36,12 +36,11 @@
    28.4   *
    28.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    28.6   */
    28.7 -
    28.8  package org.netbeans.modules.licensechanger.spi.wizard.utils;
    28.9  
   28.10  /**
   28.11   * Central class for Wizard-related property keys.
   28.12 - * 
   28.13 + *
   28.14   * @author Nils Hoffmann
   28.15   */
   28.16  public final class WizardProperties {
   28.17 @@ -59,5 +58,7 @@
   28.18      public static final String KEY_PROJECT = "project";
   28.19      public static final String KEY_COPYRIGHT_HOLDER = "project.organization";
   28.20      public static final String KEY_STORE_IN_USER_PROPERTIES = "storeInUserProperties";
   28.21 -    private WizardProperties(){}
   28.22 +
   28.23 +    private WizardProperties() {
   28.24 +    }
   28.25  }
    29.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/GroovyFileHandlerTest.java	Sun Dec 30 21:11:51 2012 +0100
    29.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/GroovyFileHandlerTest.java	Wed Jan 02 13:38:30 2013 +0100
    29.3 @@ -36,7 +36,6 @@
    29.4   *
    29.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    29.6   */
    29.7 -
    29.8  package org.netbeans.modules.licensechanger.spi.handlers;
    29.9  
   29.10  import java.io.ByteArrayOutputStream;
   29.11 @@ -54,39 +53,39 @@
   29.12   * @author Nils Hoffmann
   29.13   */
   29.14  public class GroovyFileHandlerTest {
   29.15 -    
   29.16 -    private final Map<String,Object> props = Collections.emptyMap();
   29.17 +
   29.18 +    private final Map<String, Object> props = Collections.emptyMap();
   29.19  
   29.20      void runTest(String infix) throws Exception {
   29.21          String golden = getGolden(infix);
   29.22          String license = getLicense();
   29.23 -        for (int i=1; i <= 12; i++) {
   29.24 -            String header = "resources/groovy/header_"+i+".txt";
   29.25 -            String template = "resources/groovy/groovy_"+infix+"_template.txt";
   29.26 -            System.out.println("Test "+" header_" + i+".txt with groovy_"+infix+"_template.txt");
   29.27 -            testOneVersion(golden, license, merge(header,template));
   29.28 +        for (int i = 1; i <= 12; i++) {
   29.29 +            String header = "resources/groovy/header_" + i + ".txt";
   29.30 +            String template = "resources/groovy/groovy_" + infix + "_template.txt";
   29.31 +            System.out.println("Test " + " header_" + i + ".txt with groovy_" + infix + "_template.txt");
   29.32 +            testOneVersion(golden, license, merge(header, template));
   29.33          }
   29.34      }
   29.35 -    
   29.36 +
   29.37      @Test
   29.38      public void testGroovyClass() throws Exception {
   29.39          System.out.println("testGroovyClass");
   29.40          runTest("class");
   29.41      }
   29.42 -    
   29.43 +
   29.44      /**
   29.45       * FIXME This test currently fails due to the removal of the author comment.
   29.46       * This is probably intended, but might prove to be a bug for groovy files,
   29.47       * as it would unexpectedly remove comments.
   29.48 -     * 
   29.49 -     * @throws Exception 
   29.50 +     *
   29.51 +     * @throws Exception
   29.52       */
   29.53 -    @Test(expected=AssertionError.class)
   29.54 +    @Test(expected = AssertionError.class)
   29.55      public void testGroovyClassNoPackage() throws Exception {
   29.56          System.out.println("testGroovyClassNoPackage");
   29.57          runTest("class_nopackage");
   29.58      }
   29.59 -    
   29.60 +
   29.61      @Test
   29.62      public void testGroovyScript() throws Exception {
   29.63          System.out.println("testGroovyScript");
   29.64 @@ -96,15 +95,15 @@
   29.65      private void testOneVersion(String golden, String license, String original) throws Exception {
   29.66          GroovyFileHandler instance = new GroovyFileHandler();
   29.67          String processed = instance.transform(original, license, props);
   29.68 -        assertEqualsLineByLine (golden, processed);
   29.69 +        assertEqualsLineByLine(golden, processed);
   29.70      }
   29.71  
   29.72 -    static void assertEqualsLineByLine (String golden, String processed) {
   29.73 +    static void assertEqualsLineByLine(String golden, String processed) {
   29.74          String[] g = FileHandler.splitIntoLines(golden);
   29.75          String[] p = FileHandler.splitIntoLines(processed);
   29.76 -        for (int i=0; i < Math.min (g.length, p.length); i++) {
   29.77 -            if(!g[i].equals(p[i])) {
   29.78 -                assertEquals ("Difference between files at line " + i + "\n", g[i], p[i]);
   29.79 +        for (int i = 0; i < Math.min(g.length, p.length); i++) {
   29.80 +            if (!g[i].equals(p[i])) {
   29.81 +                assertEquals("Difference between files at line " + i + "\n", g[i], p[i]);
   29.82              }
   29.83          }
   29.84      }
   29.85 @@ -115,29 +114,28 @@
   29.86          sb.append(readFile(template));
   29.87          return sb.toString();
   29.88      }
   29.89 -    
   29.90 +
   29.91      private static String getGolden(String infix) throws Exception {
   29.92 -        return readFile ("resources/groovy/groovy_"+infix+"_golden.txt");
   29.93 +        return readFile("resources/groovy/groovy_" + infix + "_golden.txt");
   29.94      }
   29.95  
   29.96      static String getLicense() throws Exception {
   29.97 -        return readFile ("fake_license.txt");
   29.98 +        return readFile("fake_license.txt");
   29.99      }
  29.100  
  29.101 -    static String readFile (String name) throws Exception {
  29.102 +    static String readFile(String name) throws Exception {
  29.103          InputStream in = GroovyFileHandlerTest.class.getResourceAsStream(name);
  29.104          if (in == null) {
  29.105 -            fail ("No input stream for " + name);
  29.106 +            fail("No input stream for " + name);
  29.107          }
  29.108          ByteArrayOutputStream out = new ByteArrayOutputStream();
  29.109          try {
  29.110 -            FileUtil.copy (in, out);
  29.111 +            FileUtil.copy(in, out);
  29.112          } finally {
  29.113              in.close();
  29.114              out.close();
  29.115          }
  29.116 -        String result = new String (out.toByteArray(), "UTF-8");
  29.117 +        String result = new String(out.toByteArray(), "UTF-8");
  29.118          return result.replace("\r\n", "\n");
  29.119      }
  29.120 - 
  29.121  }
    30.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFileHandlerTest.java	Sun Dec 30 21:11:51 2012 +0100
    30.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/JavaFileHandlerTest.java	Wed Jan 02 13:38:30 2013 +0100
    30.3 @@ -36,7 +36,6 @@
    30.4   *
    30.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    30.6   */
    30.7 -
    30.8  package org.netbeans.modules.licensechanger.spi.handlers;
    30.9  
   30.10  import java.io.ByteArrayOutputStream;
   30.11 @@ -53,15 +52,15 @@
   30.12   * @author Tim Boudreau
   30.13   */
   30.14  public class JavaFileHandlerTest {
   30.15 -    
   30.16 -    private final Map<String,Object> props = Collections.emptyMap();
   30.17 +
   30.18 +    private final Map<String, Object> props = Collections.emptyMap();
   30.19  
   30.20      @Test
   30.21      public void testStuff() throws Exception {
   30.22          System.out.println("testStuff");
   30.23          String golden = getGolden();
   30.24          String license = getLicense();
   30.25 -        for (int i=1; i <= 12; i++) {
   30.26 +        for (int i = 1; i <= 12; i++) {
   30.27              String filename = "java_" + i + ".txt";
   30.28              testOneVersion(golden, license, filename);
   30.29          }
   30.30 @@ -70,20 +69,19 @@
   30.31      private void testOneVersion(String golden, String license, String filename) throws Exception {
   30.32          System.out.println("Test " + filename);
   30.33          JavaFileHandler instance = new JavaFileHandler();
   30.34 -        String original = readFile (filename);
   30.35 +        String original = readFile(filename);
   30.36          String processed = instance.transform(original, license, props);
   30.37 -        assertEqualsLineByLine (golden, processed, filename);
   30.38 +        assertEqualsLineByLine(golden, processed, filename);
   30.39      }
   30.40  
   30.41 -    static void assertEqualsLineByLine (String golden, String processed, String filename) {
   30.42 +    static void assertEqualsLineByLine(String golden, String processed, String filename) {
   30.43          String[] g = FileHandler.splitIntoLines(golden);
   30.44          String[] p = FileHandler.splitIntoLines(processed);
   30.45 -        for (int i=0; i < Math.min (g.length, p.length); i++) {
   30.46 -            assertEquals ("Difference in " + filename + " at line " + i + "\n", g[i], p[i]);
   30.47 +        for (int i = 0; i < Math.min(g.length, p.length); i++) {
   30.48 +            assertEquals("Difference in " + filename + " at line " + i + "\n", g[i], p[i]);
   30.49          }
   30.50      }
   30.51  
   30.52 -
   30.53  //    static void assertEqualsLineByLine (String golden, String processed, String filename) {
   30.54  //        StringTokenizer a = new StringTokenizer (golden, "\n");
   30.55  //        StringTokenizer b = new StringTokenizer (processed, "\n");
   30.56 @@ -99,29 +97,27 @@
   30.57  //        }
   30.58  //
   30.59  //    }
   30.60 -
   30.61      private static String getGolden() throws Exception {
   30.62 -        return readFile ("java_golden.txt");
   30.63 +        return readFile("java_golden.txt");
   30.64      }
   30.65  
   30.66      static String getLicense() throws Exception {
   30.67 -        return readFile ("fake_license.txt");
   30.68 +        return readFile("fake_license.txt");
   30.69      }
   30.70  
   30.71 -    static String readFile (String name) throws Exception {
   30.72 +    static String readFile(String name) throws Exception {
   30.73          InputStream in = JavaFileHandlerTest.class.getResourceAsStream(name);
   30.74          if (in == null) {
   30.75 -            fail ("No input stream for " + name);
   30.76 +            fail("No input stream for " + name);
   30.77          }
   30.78          ByteArrayOutputStream out = new ByteArrayOutputStream();
   30.79          try {
   30.80 -            FileUtil.copy (in, out);
   30.81 +            FileUtil.copy(in, out);
   30.82          } finally {
   30.83              in.close();
   30.84              out.close();
   30.85          }
   30.86 -        String result = new String (out.toByteArray(), "UTF-8");
   30.87 +        String result = new String(out.toByteArray(), "UTF-8");
   30.88          return result.replace("\r\n", "\n");
   30.89      }
   30.90 - 
   30.91  }
    31.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/PropertiesFileHandlerTest.java	Sun Dec 30 21:11:51 2012 +0100
    31.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/PropertiesFileHandlerTest.java	Wed Jan 02 13:38:30 2013 +0100
    31.3 @@ -36,46 +36,46 @@
    31.4   *
    31.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    31.6   */
    31.7 -
    31.8  package org.netbeans.modules.licensechanger.spi.handlers;
    31.9  
   31.10  import java.util.Collections;
   31.11  import java.util.Map;
   31.12 +import static org.junit.Assert.*;
   31.13  import org.junit.Test;
   31.14 -import static org.junit.Assert.*;
   31.15  
   31.16  /**
   31.17   *
   31.18   * @author Tim Boudreau
   31.19   */
   31.20  public class PropertiesFileHandlerTest {
   31.21 -    private final Map<String,Object> props = Collections.emptyMap();
   31.22 +
   31.23 +    private final Map<String, Object> props = Collections.emptyMap();
   31.24  
   31.25      @Test
   31.26      public void testStuff() throws Exception {
   31.27          System.out.println("testStuff");
   31.28          String golden = getGolden();
   31.29          String license = JavaFileHandlerTest.getLicense();
   31.30 -        for (int i=1; i <= 4; i++) {
   31.31 -            testOneVersion (golden, license, "props_" + i + ".txt");
   31.32 +        for (int i = 1; i <= 4; i++) {
   31.33 +            testOneVersion(golden, license, "props_" + i + ".txt");
   31.34          }
   31.35 -        assertEquals (0, 0);
   31.36 +        assertEquals(0, 0);
   31.37      }
   31.38  
   31.39      private void testOneVersion(String golden, String license, String filename) throws Exception {
   31.40          System.out.println("Test " + filename);
   31.41          PropertiesFileHandler instance = new PropertiesFileHandler();
   31.42 -        String original = JavaFileHandlerTest.readFile (filename);
   31.43 +        String original = JavaFileHandlerTest.readFile(filename);
   31.44          String processed = instance.transform(original, license, props);
   31.45  //        if (!original.equals(processed)) {
   31.46  //            System.out.println("************************************");
   31.47  //            System.out.println(processed);
   31.48  //            System.out.println("************************************");
   31.49  //        }
   31.50 -        JavaFileHandlerTest.assertEqualsLineByLine (golden, processed, filename);
   31.51 +        JavaFileHandlerTest.assertEqualsLineByLine(golden, processed, filename);
   31.52      }
   31.53  
   31.54      private static String getGolden() throws Exception {
   31.55 -        return JavaFileHandlerTest.readFile ("props_golden.txt");
   31.56 +        return JavaFileHandlerTest.readFile("props_golden.txt");
   31.57      }
   31.58  }
    32.1 --- a/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/XmlFileHandlerTest.java	Sun Dec 30 21:11:51 2012 +0100
    32.2 +++ b/licensechanger/test/unit/src/org/netbeans/modules/licensechanger/spi/handlers/XmlFileHandlerTest.java	Wed Jan 02 13:38:30 2013 +0100
    32.3 @@ -36,36 +36,36 @@
    32.4   *
    32.5   * Portions Copyrighted 2009 Sun Microsystems, Inc.
    32.6   */
    32.7 -
    32.8  package org.netbeans.modules.licensechanger.spi.handlers;
    32.9  
   32.10  import java.util.Collections;
   32.11  import java.util.Map;
   32.12  import java.util.StringTokenizer;
   32.13  import java.util.regex.Matcher;
   32.14 +import static org.junit.Assert.*;
   32.15  import org.junit.Test;
   32.16  import org.netbeans.modules.licensechanger.api.FileHandler;
   32.17 -import static org.junit.Assert.*;
   32.18  
   32.19  /**
   32.20   *
   32.21   * @author Tim Boudreau
   32.22   */
   32.23  public class XmlFileHandlerTest {
   32.24 -    private final Map<String,Object> props = Collections.emptyMap();
   32.25 -    
   32.26 +
   32.27 +    private final Map<String, Object> props = Collections.emptyMap();
   32.28 +
   32.29      @Test
   32.30      public void testDeclarationFinder() throws Exception {
   32.31          String xml = getGolden();
   32.32 -        assertDeclarationFound (xml, "xml_golden.txt");
   32.33 -        for (int i=1; i <= 8; i++) {
   32.34 +        assertDeclarationFound(xml, "xml_golden.txt");
   32.35 +        for (int i = 1; i <= 8; i++) {
   32.36              String filename = "xml_" + i + ".txt";
   32.37              String content = JavaFileHandlerTest.readFile(filename);
   32.38              assertDeclarationFound(content, filename);
   32.39          }
   32.40      }
   32.41  
   32.42 -    private void assertDeclarationFound (String content, String filename) {
   32.43 +    private void assertDeclarationFound(String content, String filename) {
   32.44          String[] lines = FileHandler.splitIntoLines(content);
   32.45          boolean found = false;
   32.46          for (int i = 0; i < lines.length; i++) {
   32.47 @@ -78,7 +78,7 @@
   32.48                  break;
   32.49              }
   32.50          }
   32.51 -        assertTrue ("Did not find xml declaration in " + filename, found);
   32.52 +        assertTrue("Did not find xml declaration in " + filename, found);
   32.53      }
   32.54  
   32.55      @Test
   32.56 @@ -86,7 +86,7 @@
   32.57          System.out.println("testStuff");
   32.58          String golden = getGolden();
   32.59          String license = JavaFileHandlerTest.getLicense();
   32.60 -        for (int i=1; i <= 8; i++) {
   32.61 +        for (int i = 1; i <= 8; i++) {
   32.62              String filename = "xml_" + i + ".txt";
   32.63              testOneVersion(golden, license, filename);
   32.64          }
   32.65 @@ -95,14 +95,14 @@
   32.66      private void testOneVersion(String golden, String license, String filename) throws Exception {
   32.67          System.out.println("Test " + filename);
   32.68          XmlFileHandler instance = new XmlFileHandler();
   32.69 -        String original = JavaFileHandlerTest.readFile (filename);
   32.70 +        String original = JavaFileHandlerTest.readFile(filename);
   32.71          String processed = instance.transform(original, license, props);
   32.72 -        assertEqualsLineByLine (golden, processed, filename);
   32.73 +        assertEqualsLineByLine(golden, processed, filename);
   32.74      }
   32.75  
   32.76 -    static void assertEqualsLineByLine (String golden, String processed, String filename) {
   32.77 -        StringTokenizer a = new StringTokenizer (golden, "\n");
   32.78 -        StringTokenizer b = new StringTokenizer (processed, "\n");
   32.79 +    static void assertEqualsLineByLine(String golden, String processed, String filename) {
   32.80 +        StringTokenizer a = new StringTokenizer(golden, "\n");
   32.81 +        StringTokenizer b = new StringTokenizer(processed, "\n");
   32.82          int ix = 0;
   32.83          while (a.hasMoreTokens() && b.hasMoreTokens()) {
   32.84              String as = a.nextToken();
   32.85 @@ -110,13 +110,13 @@
   32.86              if (!as.equals(bs)) {
   32.87                  System.err.println("PROCESSED OUTPUT ");
   32.88              }
   32.89 -            assertEquals ("Difference in " + filename + " at line " + ix + "\n", as, bs);
   32.90 +            assertEquals("Difference in " + filename + " at line " + ix + "\n", as, bs);
   32.91              ix++;
   32.92          }
   32.93  
   32.94      }
   32.95  
   32.96      private static String getGolden() throws Exception {
   32.97 -        return JavaFileHandlerTest.readFile ("xml_golden.txt");
   32.98 +        return JavaFileHandlerTest.readFile("xml_golden.txt");
   32.99      }
  32.100  }