langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/Configuration.java
changeset 41252 058d83c9b1c7
parent 40587 1c355ea550ed
child 41451 a847c7aa25a7
equal deleted inserted replaced
41251:6112540cd0c1 41252:058d83c9b1c7
   402             packages.add(utils.containingPackage(aClass));
   402             packages.add(utils.containingPackage(aClass));
   403         }
   403         }
   404     }
   404     }
   405 
   405 
   406     public Set<Doclet.Option> getSupportedOptions() {
   406     public Set<Doclet.Option> getSupportedOptions() {
       
   407         Resources resources = getResources();
   407         Doclet.Option[] options = {
   408         Doclet.Option[] options = {
   408             new Option(this, "-author") {
   409             new Option(resources, "-author") {
   409                 @Override
   410                 @Override
   410                 public boolean process(String opt, ListIterator<String> args) {
   411                 public boolean process(String opt, ListIterator<String> args) {
   411                     optionsProcessed.add(this);
   412                     optionsProcessed.add(this);
   412                     showauthor = true;
   413                     showauthor = true;
   413                     return true;
   414                     return true;
   414                 }
   415                 }
   415             },
   416             },
   416             new Option(this, "-d", 1) {
   417             new Option(resources, "-d", 1) {
   417                 @Override
   418                 @Override
   418                 public boolean process(String opt, ListIterator<String> args) {
   419                 public boolean process(String opt, ListIterator<String> args) {
   419                     optionsProcessed.add(this);
   420                     optionsProcessed.add(this);
   420                     destDirName = addTrailingFileSep(args.next());
   421                     destDirName = addTrailingFileSep(args.next());
   421                     return true;
   422                     return true;
   422                 }
   423                 }
   423             },
   424             },
   424             new Option(this, "-docencoding", 1) {
   425             new Option(resources, "-docencoding", 1) {
   425                 @Override
   426                 @Override
   426                 public boolean process(String opt, ListIterator<String> args) {
   427                 public boolean process(String opt, ListIterator<String> args) {
   427                     optionsProcessed.add(this);
   428                     optionsProcessed.add(this);
   428                     docencoding = args.next();
   429                     docencoding = args.next();
   429                     return true;
   430                     return true;
   430                 }
   431                 }
   431             },
   432             },
   432             new Option(this, "-docfilessubdirs") {
   433             new Option(resources, "-docfilessubdirs") {
   433                 @Override
   434                 @Override
   434                 public boolean process(String opt, ListIterator<String> args) {
   435                 public boolean process(String opt, ListIterator<String> args) {
   435                     optionsProcessed.add(this);
   436                     optionsProcessed.add(this);
   436                     copydocfilesubdirs = true;
   437                     copydocfilesubdirs = true;
   437                     return true;
   438                     return true;
   438                 }
   439                 }
   439             },
   440             },
   440             new Hidden(this, "-encoding", 1) {
   441             new Hidden(resources, "-encoding", 1) {
   441                 @Override
   442                 @Override
   442                 public boolean process(String opt, ListIterator<String> args) {
   443                 public boolean process(String opt, ListIterator<String> args) {
   443                     optionsProcessed.add(this);
   444                     optionsProcessed.add(this);
   444                     encoding = args.next();
   445                     encoding = args.next();
   445                     return true;
   446                     return true;
   446                 }
   447                 }
   447             },
   448             },
   448             new Option(this, "-excludedocfilessubdir", 1) {
   449             new Option(resources, "-excludedocfilessubdir", 1) {
   449                 @Override
   450                 @Override
   450                 public boolean process(String opt, ListIterator<String> args) {
   451                 public boolean process(String opt, ListIterator<String> args) {
   451                     optionsProcessed.add(this);
   452                     optionsProcessed.add(this);
   452                     addToSet(excludedDocFileDirs, args.next());
   453                     addToSet(excludedDocFileDirs, args.next());
   453                     return true;
   454                     return true;
   454                 }
   455                 }
   455             },
   456             },
   456             new Option(this, "-group", 2) {
   457             new Option(resources, "-group", 2) {
   457                 @Override
   458                 @Override
   458                 public boolean process(String opt, ListIterator<String> args) {
   459                 public boolean process(String opt, ListIterator<String> args) {
   459                     optionsProcessed.add(this);
   460                     optionsProcessed.add(this);
   460                     groups.add(new GroupContainer(args.next(), args.next()));
   461                     groups.add(new GroupContainer(args.next(), args.next()));
   461                     return true;
   462                     return true;
   462                 }
   463                 }
   463             },
   464             },
   464             new Hidden(this, "-javafx") {
   465             new Hidden(resources, "-javafx") {
   465                 @Override
   466                 @Override
   466                 public boolean process(String opt, ListIterator<String> args) {
   467                 public boolean process(String opt, ListIterator<String> args) {
   467                     optionsProcessed.add(this);
   468                     optionsProcessed.add(this);
   468                     javafx = true;
   469                     javafx = true;
   469                     return true;
   470                     return true;
   470                 }
   471                 }
   471             },
   472             },
   472             new Option(this, "-keywords") {
   473             new Option(resources, "-keywords") {
   473                 @Override
   474                 @Override
   474                 public boolean process(String opt, ListIterator<String> args) {
   475                 public boolean process(String opt, ListIterator<String> args) {
   475                     optionsProcessed.add(this);
   476                     optionsProcessed.add(this);
   476                     keywords = true;
   477                     keywords = true;
   477                     return true;
   478                     return true;
   478                 }
   479                 }
   479             },
   480             },
   480             new Option(this, "-link", 1) {
   481             new Option(resources, "-link", 1) {
   481                 @Override
   482                 @Override
   482                 public boolean process(String opt, ListIterator<String> args) {
   483                 public boolean process(String opt, ListIterator<String> args) {
   483                     optionsProcessed.add(this);
   484                     optionsProcessed.add(this);
   484                     urlForLink = args.next();
   485                     urlForLink = args.next();
   485                     pkglistUrlForLink = urlForLink;
   486                     pkglistUrlForLink = urlForLink;
   486                     return true;
   487                     return true;
   487                 }
   488                 }
   488             },
   489             },
   489             new Option(this, "-linksource") {
   490             new Option(resources, "-linksource") {
   490                 @Override
   491                 @Override
   491                 public boolean process(String opt, ListIterator<String> args) {
   492                 public boolean process(String opt, ListIterator<String> args) {
   492                     optionsProcessed.add(this);
   493                     optionsProcessed.add(this);
   493                     linksource = true;
   494                     linksource = true;
   494                     return true;
   495                     return true;
   495                 }
   496                 }
   496             },
   497             },
   497             new Option(this, "-linkoffline", 2) {
   498             new Option(resources, "-linkoffline", 2) {
   498                 @Override
   499                 @Override
   499                 public boolean process(String opt, ListIterator<String> args) {
   500                 public boolean process(String opt, ListIterator<String> args) {
   500                     optionsProcessed.add(this);
   501                     optionsProcessed.add(this);
   501                     urlForLinkOffline = args.next();
   502                     urlForLinkOffline = args.next();
   502                     pkglistUrlForLinkOffline = args.next();
   503                     pkglistUrlForLinkOffline = args.next();
   503                     return true;
   504                     return true;
   504                 }
   505                 }
   505             },
   506             },
   506             new Option(this, "-nocomment") {
   507             new Option(resources, "-nocomment") {
   507                 @Override
   508                 @Override
   508                 public boolean process(String opt, ListIterator<String> args) {
   509                 public boolean process(String opt, ListIterator<String> args) {
   509                     optionsProcessed.add(this);
   510                     optionsProcessed.add(this);
   510                     nocomment = true;
   511                     nocomment = true;
   511                     return true;
   512                     return true;
   512                 }
   513                 }
   513             },
   514             },
   514             new Option(this, "-nodeprecated") {
   515             new Option(resources, "-nodeprecated") {
   515                 @Override
   516                 @Override
   516                 public boolean process(String opt, ListIterator<String> args) {
   517                 public boolean process(String opt, ListIterator<String> args) {
   517                     optionsProcessed.add(this);
   518                     optionsProcessed.add(this);
   518                     nodeprecated = true;
   519                     nodeprecated = true;
   519                     return true;
   520                     return true;
   520                 }
   521                 }
   521             },
   522             },
   522             new Option(this, "-nosince") {
   523             new Option(resources, "-nosince") {
   523                 @Override
   524                 @Override
   524                 public boolean process(String opt, ListIterator<String> args) {
   525                 public boolean process(String opt, ListIterator<String> args) {
   525                     optionsProcessed.add(this);
   526                     optionsProcessed.add(this);
   526                     nosince = true;
   527                     nosince = true;
   527                     return true;
   528                     return true;
   528                 }
   529                 }
   529             },
   530             },
   530             new Option(this, "-notimestamp") {
   531             new Option(resources, "-notimestamp") {
   531                 @Override
   532                 @Override
   532                 public boolean process(String opt, ListIterator<String> args) {
   533                 public boolean process(String opt, ListIterator<String> args) {
   533                     optionsProcessed.add(this);
   534                     optionsProcessed.add(this);
   534                     notimestamp = true;
   535                     notimestamp = true;
   535                     return true;
   536                     return true;
   536                 }
   537                 }
   537             },
   538             },
   538             new Option(this, "-noqualifier", 1) {
   539             new Option(resources, "-noqualifier", 1) {
   539                 @Override
   540                 @Override
   540                 public boolean process(String opt, ListIterator<String> args) {
   541                 public boolean process(String opt, ListIterator<String> args) {
   541                     optionsProcessed.add(this);
   542                     optionsProcessed.add(this);
   542                     addToSet(excludedQualifiers, args.next());
   543                     addToSet(excludedQualifiers, args.next());
   543                     return true;
   544                     return true;
   544                 }
   545                 }
   545             },
   546             },
   546             new Hidden(this, "-quiet") {
   547             new Hidden(resources, "-quiet") {
   547                 @Override
   548                 @Override
   548                 public boolean process(String opt, ListIterator<String> args) {
   549                 public boolean process(String opt, ListIterator<String> args) {
   549                     optionsProcessed.add(this);
   550                     optionsProcessed.add(this);
   550                     quiet = true;
   551                     quiet = true;
   551                     return true;
   552                     return true;
   552                 }
   553                 }
   553             },
   554             },
   554             new Option(this, "-serialwarn") {
   555             new Option(resources, "-serialwarn") {
   555                 @Override
   556                 @Override
   556                 public boolean process(String opt, ListIterator<String> args) {
   557                 public boolean process(String opt, ListIterator<String> args) {
   557                     optionsProcessed.add(this);
   558                     optionsProcessed.add(this);
   558                     serialwarn = true;
   559                     serialwarn = true;
   559                     return true;
   560                     return true;
   560                 }
   561                 }
   561             },
   562             },
   562             new Option(this, "-sourcetab", 1) {
   563             new Option(resources, "-sourcetab", 1) {
   563                 @Override
   564                 @Override
   564                 public boolean process(String opt, ListIterator<String> args) {
   565                 public boolean process(String opt, ListIterator<String> args) {
   565                     optionsProcessed.add(this);
   566                     optionsProcessed.add(this);
   566                     linksource = true;
   567                     linksource = true;
   567                     try {
   568                     try {
   576                         setTabWidth(DocletConstants.DEFAULT_TAB_STOP_LENGTH);
   577                         setTabWidth(DocletConstants.DEFAULT_TAB_STOP_LENGTH);
   577                     }
   578                     }
   578                     return true;
   579                     return true;
   579                 }
   580                 }
   580             },
   581             },
   581             new Option(this, "-tag", 1) {
   582             new Option(resources, "-tag", 1) {
   582                 @Override
   583                 @Override
   583                 public boolean process(String opt, ListIterator<String> args) {
   584                 public boolean process(String opt, ListIterator<String> args) {
   584                     optionsProcessed.add(this);
   585                     optionsProcessed.add(this);
   585                     ArrayList<String> list = new ArrayList<>();
   586                     ArrayList<String> list = new ArrayList<>();
   586                     list.add(opt);
   587                     list.add(opt);
   587                     list.add(args.next());
   588                     list.add(args.next());
   588                     customTagStrs.add(list);
   589                     customTagStrs.add(list);
   589                     return true;
   590                     return true;
   590                 }
   591                 }
   591             },
   592             },
   592              new Option(this, "-taglet", 1) {
   593              new Option(resources, "-taglet", 1) {
   593                 @Override
   594                 @Override
   594                 public boolean process(String opt, ListIterator<String> args) {
   595                 public boolean process(String opt, ListIterator<String> args) {
   595                     optionsProcessed.add(this);
   596                     optionsProcessed.add(this);
   596                     ArrayList<String> list = new ArrayList<>();
   597                     ArrayList<String> list = new ArrayList<>();
   597                     list.add(opt);
   598                     list.add(opt);
   598                     list.add(args.next());
   599                     list.add(args.next());
   599                     customTagStrs.add(list);
   600                     customTagStrs.add(list);
   600                     return true;
   601                     return true;
   601                 }
   602                 }
   602             },
   603             },
   603             new Option(this, "-tagletpath", 1) {
   604             new Option(resources, "-tagletpath", 1) {
   604                 @Override
   605                 @Override
   605                 public boolean process(String opt, ListIterator<String> args) {
   606                 public boolean process(String opt, ListIterator<String> args) {
   606                     optionsProcessed.add(this);
   607                     optionsProcessed.add(this);
   607                     tagletpath = args.next();
   608                     tagletpath = args.next();
   608                     return true;
   609                     return true;
   609                 }
   610                 }
   610             },
   611             },
   611             new Option(this, "-version") {
   612             new Option(resources, "-version") {
   612                 @Override
   613                 @Override
   613                 public boolean process(String opt, ListIterator<String> args) {
   614                 public boolean process(String opt, ListIterator<String> args) {
   614                     optionsProcessed.add(this);
   615                     optionsProcessed.add(this);
   615                     showversion = true;
   616                     showversion = true;
   616                     return true;
   617                     return true;
  1055         private final String name;
  1056         private final String name;
  1056         private final String parameters;
  1057         private final String parameters;
  1057         private final String description;
  1058         private final String description;
  1058         private final int argCount;
  1059         private final int argCount;
  1059 
  1060 
  1060         protected final Configuration c;
  1061         protected Option(Resources resources, String name, int argCount) {
  1061 
  1062             this(resources, "doclet.usage." + name.toLowerCase().replaceAll("^-*", ""), name, argCount);
  1062         protected Option(Configuration config, String keyName, String name, int argCount) {
  1063         }
  1063             c = config;
  1064 
       
  1065         protected Option(Resources resources, String keyBase, String name, int argCount) {
  1064             this.name = name;
  1066             this.name = name;
  1065             String desc = getOptionsMessage(keyName + "description");
  1067             String desc = getOptionsMessage(resources, keyBase + ".description");
  1066             if (desc.isEmpty()) {
  1068             if (desc.isEmpty()) {
  1067                 this.description = "<MISSING KEY>";
  1069                 this.description = "<MISSING KEY>";
  1068                 this.parameters = "<MISSING KEY>";
  1070                 this.parameters = "<MISSING KEY>";
  1069             } else {
  1071             } else {
  1070                 this.description = desc;
  1072                 this.description = desc;
  1071                 this.parameters = getOptionsMessage(keyName + "parameters");
  1073                 this.parameters = getOptionsMessage(resources, keyBase + ".parameters");
  1072             }
  1074             }
  1073             this.argCount = argCount;
  1075             this.argCount = argCount;
  1074         }
  1076         }
  1075 
  1077 
  1076         protected Option(String prefix, Configuration config, String name, int argCount) {
  1078         protected Option(Resources resources, String name) {
  1077             this(config, prefix + name.toLowerCase().replaceAll("^-*", "") + ".", name, argCount);
  1079             this(resources, name, 0);
  1078         }
  1080         }
  1079 
  1081 
  1080         protected Option(Configuration config, String name, int argCount) {
  1082         private String getOptionsMessage(Resources resources, String key) {
  1081             this("doclet.usage.", config,  name, argCount);
       
  1082         }
       
  1083 
       
  1084         protected Option(Configuration config, String name) {
       
  1085             this(config, name, 0);
       
  1086         }
       
  1087 
       
  1088         private String getOptionsMessage(String key) {
       
  1089             try {
  1083             try {
  1090                 return c.getResources().getText(key);
  1084                 return resources.getText(key);
  1091             } catch (MissingResourceException ignore) {
  1085             } catch (MissingResourceException ignore) {
  1092                 return "";
  1086                 return "";
  1093             }
  1087             }
  1094         }
  1088         }
  1095 
  1089 
  1111         @Override
  1105         @Override
  1112         public String getParameters() {
  1106         public String getParameters() {
  1113             return parameters;
  1107             return parameters;
  1114         }
  1108         }
  1115 
  1109 
  1116         /**
       
  1117          * Maintains the formatting for javadoc -help. Note the space
       
  1118          * alignment.
       
  1119          */
       
  1120         @Override
  1110         @Override
  1121         public String toString() {
  1111         public String toString() {
  1122             String opt = name + (name.endsWith(":") ? "" : " ") + parameters;
  1112             return name;
  1123             StringBuffer sb = new StringBuffer("  ").append(opt).append(" ");
       
  1124             for (int i = opt.length(); i < 32; i++) {
       
  1125                 sb.append(" ");
       
  1126             }
       
  1127             sb.append(description);
       
  1128             return sb.toString();
       
  1129         }
  1113         }
  1130 
  1114 
  1131         @Override
  1115         @Override
  1132         public int getArgumentCount() {
  1116         public int getArgumentCount() {
  1133             return argCount;
  1117             return argCount;
  1134         }
  1118         }
  1135 
  1119 
  1136         @Override
  1120         @Override
  1137         public boolean matches(String option) {
  1121         public boolean matches(String option) {
  1138             return name.toLowerCase().equals(option.toLowerCase());
  1122             boolean matchCase = name.startsWith("--");
       
  1123             if (option.startsWith("--") && option.contains("=")) {
       
  1124                 return name.equals(option.substring(option.indexOf("=") + 1));
       
  1125             } else if (matchCase) {
       
  1126                 return name.equals(option);
       
  1127             } else {
       
  1128                 return name.toLowerCase().equals(option.toLowerCase());
       
  1129             }
  1139         }
  1130         }
  1140 
  1131 
  1141         @Override
  1132         @Override
  1142         public int compareTo(Option that) {
  1133         public int compareTo(Option that) {
  1143             return this.getName().compareTo(that.getName());
  1134             return this.getName().compareTo(that.getName());
  1144         }
  1135         }
  1145     }
  1136     }
  1146 
  1137 
  1147     public abstract class XOption extends Option {
  1138     public abstract class XOption extends Option {
  1148 
  1139 
  1149         public XOption(Configuration config, String keyname, String name, int argCount) {
  1140         public XOption(Resources resources, String prefix, String name, int argCount) {
  1150             super(config, keyname, name, argCount);
  1141             super(resources, prefix, name, argCount);
  1151         }
  1142         }
  1152 
  1143 
  1153         public XOption(Configuration config, String name, int argCount) {
  1144         public XOption(Resources resources, String name, int argCount) {
  1154             super("doclet.xusage.", config, name, argCount);
  1145             super(resources, name, argCount);
  1155         }
  1146         }
  1156 
  1147 
  1157         public XOption(Configuration config, String name) {
  1148         public XOption(Resources resources, String name) {
  1158             this(config, name, 0);
  1149             this(resources, name, 0);
  1159         }
  1150         }
  1160 
  1151 
  1161         @Override
  1152         @Override
  1162         public Option.Kind getKind() {
  1153         public Option.Kind getKind() {
  1163             return Doclet.Option.Kind.EXTENDED;
  1154             return Doclet.Option.Kind.EXTENDED;
  1164         }
  1155         }
  1165     }
  1156     }
  1166 
  1157 
  1167     public abstract class Hidden extends Option {
  1158     public abstract class Hidden extends Option {
  1168 
  1159 
  1169         public Hidden(Configuration config, String name, int argCount) {
  1160         public Hidden(Resources resources, String name, int argCount) {
  1170             super("doclet.xusage.", config, name, argCount);
  1161             super(resources, name, argCount);
  1171         }
  1162         }
  1172 
  1163 
  1173         public Hidden(Configuration config, String name) {
  1164         public Hidden(Resources resources, String name) {
  1174             this(config, name, 0);
  1165             this(resources, name, 0);
  1175         }
  1166         }
  1176 
  1167 
  1177         @Override
  1168         @Override
  1178         public Option.Kind getKind() {
  1169         public Option.Kind getKind() {
  1179             return Doclet.Option.Kind.OTHER;
  1170             return Doclet.Option.Kind.OTHER;