6635663: make/tools/AutoMulti/{AutoMulti,TestALFGenerator}.java still generate files with wrong legal notices
Summary: Removed unused files
Reviewed-by: ohair
--- a/jdk/make/tools/Makefile Mon Jul 07 16:56:23 2008 +0400
+++ b/jdk/make/tools/Makefile Tue Jul 08 11:36:19 2008 +0400
@@ -32,7 +32,6 @@
SUBDIRS = \
addjsum \
- auto_multi \
buildmetaindex \
commentchecker \
compile_font_config \
--- a/jdk/make/tools/auto_multi/Makefile Mon Jul 07 16:56:23 2008 +0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-#
-# Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation. Sun designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Sun in the LICENSE file that accompanied this code.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-# CA 95054 USA or visit www.sun.com if you need additional information or
-# have any questions.
-#
-
-#
-# Makefile for building the automulti tool
-#
-
-BUILDDIR = ../..
-PACKAGE = build.tools.automulti
-PRODUCT = tools
-PROGRAM = automulti
-include $(BUILDDIR)/common/Defs.gmk
-
-BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src
-BUILDTOOL_MAIN = $(PKGDIR)/AutoMulti.java
-
-#
-# Build tool jar rules.
-#
-include $(BUILDDIR)/common/BuildToolJar.gmk
-
--- a/jdk/make/tools/src/build/tools/automulti/AutoMulti.java Mon Jul 07 16:56:23 2008 +0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,458 +0,0 @@
-/*
- * Copyright 1998-2001 Sun Microsystems, Inc. All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package build.tools.automulti;
-
-import java.lang.reflect.*;
-import java.util.*;
-import java.io.*;
-
-/**
- * Automatically generates the Multiplexing UI classes
- * for Swing.
- * <p>
- * To use, type 'java AutoMulti <plafdir> <prefix>' where <plafdir>
- * is the directory containing the source for Swing's UI classes and
- * <prefix> is the package prefix to use before ".swing.plaf.multi".
- * For example:
- *
- * <pre>
- * cd TEST
- * ../../../../build/solaris-sparc/bin/java AutoMulti ../../../../src/share/classes/javax/swing/plaf javax
- * </pre>
- *
- * AutoMulti will scour the plaf directory for *UI.java files and
- * generate Multi*UI.java files that do the multiplexing thing.
- * <p>
- * NOTE: This tool depends upon the existence of <plafdir> and on the
- * compiled classes from <plafdir> being somewhere in the class path.
- *
- * @author Willie Walker
- */
-public class AutoMulti {
- static String importLines;
-
- /**
- * A silly list of parameter names to use. Skips "i" because we use
- * it as a 'for' loop counter. If you want to get fancy, please feel
- * to change how parameter names are obtained. This will break if
- * someone decides to create a UI method that takes more than 8
- * parameters. Which one is a bug (this breaking or having a method
- * with more than eight parameters) is a subjective thing.
- */
- public static String[] paramNames = {"a","b","c","d","e","f","g","h"};
-
- /**
- * Removes the package names (e.g., javax.swing) from the name.
- */
- public static String unqualifyName(String name) {
- StringTokenizer parser = new StringTokenizer(name,".");
- String unqualifiedName = null;
- while (parser.hasMoreTokens()) {
- unqualifiedName = parser.nextToken();
- }
- return removeDollars(unqualifiedName);
- }
-
- /**
- * Strips the extension from the filename.
- */
- public static String stripExtension(String name) {
- StringTokenizer parser = new StringTokenizer(name,".");
- return parser.nextToken();
- }
-
- /**
- * Adds some spaces.
- */
- public static void indent(StringBuffer s, int i) {
- while (i > 0) {
- s.append(" ");
- i--;
- }
- }
-
- /**
- * Spits out all the beginning stuff.
- */
- public static StringBuffer createPreamble(String prefixName) {
- StringBuffer s = new StringBuffer();
- s.append("/*\n");
- s.append(" *\n");
- s.append(" * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.\n");
- s.append(" * \n");
- s.append(" * This software is the proprietary information of Sun Microsystems, Inc. \n");
- s.append(" * Use is subject to license terms.\n");
- s.append(" * \n");
- s.append(" */\n");
- s.append("package " + prefixName + ".swing.plaf.multi;\n");
- s.append("\n");
- return s;
- }
-
- /**
- * Replaces 'Xxx$Yyy' with "Xxx'. Used by addImport because you
- * can't import nested classes directly.
- */
- public static String removeNestedClassName(String s) {
- int dollarPosition = s.indexOf('$');
-
- if (dollarPosition >= 0) { // s contains '$'
- StringBuffer sb = new StringBuffer(s);
- sb.setLength(dollarPosition);
- return sb.toString();
- } else { // no '$'
- return s;
- }
- }
-
- /**
- * Replaces '$' with ".'. Needed for printing inner class names
- * for argument and return types.
- */
- public static String removeDollars(String s) {
- int dollarPosition = s.indexOf('$');
-
- if (dollarPosition >= 0) { // s contains '$'
- StringBuffer sb = new StringBuffer(s);
- while (dollarPosition >= 0) {
- //XXX: will there ever be more than one '$'?
- sb.replace(dollarPosition, dollarPosition+1, ".");
- dollarPosition = sb.indexOf("$", dollarPosition);
- }
- return sb.toString();
- } else { // no $
- return s;
- }
- }
-
- /**
- * Adds an import line to the String.
- */
- public static void addImport(String s, Class theClass) {
- if (!theClass.isPrimitive() && (theClass != Object.class)) {
- String className = removeNestedClassName(theClass.getName());
- String importLine = new String("import " + className + ";\n");
- if (importLines.indexOf(importLine) == -1) {
- importLines += importLine;
- }
- }
- }
-
- /**
- * Spits out the class header information.
- */
- public static void addHeader(StringBuffer s, String className) {
- s.append("/**\n");
- s.append(" * A multiplexing UI used to combine <code>" + className + "</code>s.\n");
- s.append(" * \n");
- s.append(" * <p>This file was automatically generated by AutoMulti.\n");
- s.append(" *\n");
- s.append(" * @author Otto Multey\n"); // Get it? I crack myself up.
- s.append(" */\n");
- s.append("public class Multi" + className + " extends " + className + " {\n");
- s.append("\n");
- s.append(" /**\n");
- s.append(" * The vector containing the real UIs. This is populated \n");
- s.append(" * in the call to <code>createUI</code>, and can be obtained by calling\n");
- s.append(" * the <code>getUIs</code> method. The first element is guaranteed to be the real UI \n");
- s.append(" * obtained from the default look and feel.\n");
- s.append(" */\n");
- s.append(" protected Vector uis = new Vector();\n");
- s.append("\n");
- s.append("////////////////////\n");
- s.append("// Common UI methods\n");
- s.append("////////////////////\n");
- s.append("\n");
- s.append(" /**\n");
- s.append(" * Returns the list of UIs associated with this multiplexing UI. This \n");
- s.append(" * allows processing of the UIs by an application aware of multiplexing \n");
- s.append(" * UIs on components.\n");
- s.append(" */\n");
- s.append(" public ComponentUI[] getUIs() {\n");
- s.append(" return MultiLookAndFeel.uisToArray(uis);\n");
- s.append(" }\n");
- }
-
- /**
- * Prints out the code for a method. This is pretty specific to the
- * Multiplexing UI code, so don't get any fancy ideas.
- */
- public static void addMethod(StringBuffer s, Method m, String origName, String className) {
-
- // Get the method name and the return type. Be a little careful about arrays.
- //
- String methodName = unqualifyName(m.getName());
- String returnType;
- if (!m.getReturnType().isArray()) {
- returnType = unqualifyName(m.getReturnType().toString());
- addImport(importLines,m.getReturnType());
- } else {
- returnType = unqualifyName(m.getReturnType().getComponentType().toString())
- + "[]";
- addImport(importLines,m.getReturnType().getComponentType());
- }
-
- // Print the javadoc
- //
- s.append("\n");
- if (methodName.equals("createUI")) {
- s.append(" /**\n");
- s.append(" * Returns a multiplexing UI instance if any of the auxiliary\n");
- s.append(" * <code>LookAndFeel</code>s supports this UI. Otherwise, just returns the \n");
- s.append(" * UI object obtained from the default <code>LookAndFeel</code>.\n");
- s.append(" */\n");
- } else if (!returnType.equals("void")) {
- s.append(" /**\n");
- s.append(" * Invokes the <code>" + methodName + "</code> method on each UI handled by this object.\n");
- s.append(" * \n");
- s.append(" * @return the value obtained from the first UI, which is\n");
- s.append(" * the UI obtained from the default <code>LookAndFeel</code>\n");
- s.append(" */\n");
- } else {
- s.append(" /**\n");
- s.append(" * Invokes the <code>" + methodName
- + "</code> method on each UI handled by this object.\n");
- s.append(" */\n");
- }
-
- // Print the method signature
- //
- s.append(" public");
- if (Modifier.isStatic(m.getModifiers())) {
- s.append(" static");
- }
- s.append(" " + returnType);
- s.append(" " + methodName);
- s.append("(");
-
- Class[] params = m.getParameterTypes();
- Class temp;
- String braces;
- for (int i = 0; i < params.length; i++) {
- if (i > 0) {
- s.append(", ");
- }
- temp = params[i];
- braces = new String("");
- while (temp.isArray()) {
- braces += "[]";
- temp = temp.getComponentType();
- }
- s.append(unqualifyName(temp.getName()) + braces + " " + paramNames[i]);
- addImport(importLines,temp);
- }
- s.append(")");
-
- // Don't forget about exceptions
- //
- Class exceptions[] = m.getExceptionTypes();
- String throwsString = new String("");
-
- if (exceptions.length > 0) {
- s.append("\n");
- indent(s,12);
- s.append("throws ");
- for (int i = 0; i < exceptions.length; i++) {
- if (i > 0) {
- s.append(", ");
- }
- s.append(unqualifyName(exceptions[i].getName()));
- addImport(importLines,exceptions[i]);
- }
- }
- s.append(throwsString + " {\n");
-
- // Now print out the contents of the method. We do a special thing
- // for the createUI method, another thing if the method returns 'void'
- // and a third thing if we don't do either of the first two. If
- // you want to squash this down, feel free.
- //
- if (methodName.equals("createUI")) {
- indent(s,8);
- s.append("ComponentUI mui = new Multi" + origName + "();\n");
- indent(s,8);
- s.append("return MultiLookAndFeel.createUIs(mui,\n");
- indent(s,42);
- s.append("((Multi" + origName +") mui).uis,\n");
- indent(s,42);
- for (int i = 0; i < params.length; i++) {
- if (i > 0) {
- s.append(",");
- }
- s.append(paramNames[i]);
- }
- s.append(");\n");
- } else if (!returnType.equals("void")) {
- indent(s,8);
- s.append(returnType + " returnValue = \n");
- indent(s,12);
- s.append("((" + className + ") (uis.elementAt(0)))."
- + methodName + "(");
- for (int i = 0; i < params.length; i++) {
- if (i > 0) {
- s.append(",");
- }
- s.append(paramNames[i]);
- }
- s.append(");\n");
- indent(s,8);
- s.append("for (int i = 1; i < uis.size(); i++) {\n");
- indent(s,12);
- s.append("((" + className + ") (uis.elementAt(i)))."
- + methodName + "(");
- for (int i = 0; i < params.length; i++) {
- if (i > 0) {
- s.append(",");
- }
- s.append(paramNames[i]);
- }
- s.append(");\n");
- indent(s,8);
- s.append("}\n");
- indent(s,8);
- s.append("return returnValue;\n");
- } else {
- indent(s,8);
- s.append("for (int i = 0; i < uis.size(); i++) {\n");
- indent(s,12);
- s.append("((" + className + ") (uis.elementAt(i)))."
- + methodName + "(");
- for (int i = 0; i < params.length; i++) {
- if (i > 0) {
- s.append(",");
- }
- s.append(paramNames[i]);
- }
- s.append(");\n");
- indent(s,8);
- s.append("}\n");
- }
- indent(s,4);
- s.append("}\n");
- }
-
- /**
- * Takes a plaf class name (e.g., "MenuUI") and generates the corresponding
- * Multiplexing UI Java source code (e.g., "MultiMenuUI.java").
- */
- public static void generateFile(String prefixName, String className) {
- try {
- FileOutputStream fos;
- PrintWriter outFile;
-
- importLines = new String();
- importLines += new String("import java.util.Vector;\n");
-
- StringBuffer body = new StringBuffer();
- Class wee = Class.forName(prefixName + ".swing.plaf." + className);
- String weeName = unqualifyName(wee.getName());
- addImport(importLines,wee);
- while (!weeName.equals("Object")) {
- body.append("\n");
- body.append("////////////////////\n");
- body.append("// " + weeName + " methods\n");
- body.append("////////////////////\n");
- Method[] methods = wee.getDeclaredMethods();
- for (int i=0; i < methods.length; i++) {
- if (Modifier.isPublic(methods[i].getModifiers())) {
- addMethod(body,methods[i],className,weeName);
- }
- }
- wee = wee.getSuperclass();
- weeName = unqualifyName(wee.getName());
- addImport(importLines,wee);
- }
-
- fos = new FileOutputStream("Multi" + className + ".java");
- outFile = new PrintWriter(fos);
- StringBuffer outText = createPreamble(prefixName);
- outText.append(importLines.toString() + "\n");
- addHeader(outText,className);
- outText.append(body.toString());
- outText.append("}\n");
- outFile.write(outText.toString());
- outFile.flush();
- outFile.close();
- } catch (Exception e) {
- System.err.println(e);
- }
- }
-
- /**
- * D'Oh! Something bad happened.
- */
- public static void usage(String s) throws IOException {
- System.err.println("Usage: AutoMulti <plafdir> [com.sun]");
- throw new IllegalArgumentException(s);
- }
-
- /**
- * Takes the plaf directory name and generates the multiplexing UI
- * source code.
- */
- public static void main(String[] args) throws IOException {
-
- if (args.length < 1) {
- usage("");
- }
-
- String dirName = args[0];
- File dir = new File(dirName);
- if (!dir.isDirectory()) {
- System.err.println("No such directory: " + dirName);
- usage("");
- }
-
- String prefixName;
- if (args.length > 1) {
- prefixName = args[1];
- } else {
- prefixName = "com.sun.java";
- }
-
- String plafUIs[] = dir.list(new UIJavaFilter());
- for (int i = 0; i < plafUIs.length; i++) {
- generateFile(prefixName,stripExtension(plafUIs[i]));
- }
- }
-}
-
-/**
- * Only accepts file names of the form *UI.java. The one exception
- * is not accepting ComponentUI.java because we don't need to generate
- * a multiplexing class for it.
- */
-class UIJavaFilter implements FilenameFilter {
- public boolean accept(File dir, String name) {
- if (name.equals("ComponentUI.java")) {
- return false;
- } else if (name.endsWith("UI.java")) {
- return true;
- } else {
- return false;
- }
- }
-}
--- a/jdk/make/tools/src/build/tools/automulti/README.txt Mon Jul 07 16:56:23 2008 +0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-AutoMulti is the tool that automatically generates the
-Multi*UI classes for the Multiplexing look and feel.
-Instructions for using it are in AutoMulti.java.
-
-TestALFGenerator is a tool (a variation of AutoMulti)
-that automatically generates an auxiliary look and
-feel that you can use to test the Multiplexing look
-and feel. The TestALF look and feel implements every
-method by printing the message "In the xxx method of
-the TextALFYyyUI class." and, except in the case of
-createUI, returning something meaningless (since,
-except in the case of createUI, the return value is
-ignored).
-
-TestALFLookAndFeel.java is the only non-auto-generated
-file for the TestALF L&F. If you specify a package
-argument to TestALFGenerator, you'll have to change
-the code in TestALFLookAndFeel.java to reflect the
-package name.
-
-To test any application with the TestALF, make sure the
-compiled TestALF classes are in the class path. Then add
-this to the <JDK_HOME>/lib/swing.properties file (which
-you'll probably have to create):
-
-swing.auxiliarylaf=TestALFLookAndFeel
-
-E.g., if you're running SwingSet2 against your solaris
-build, then you'd create/edit the swing.properties file
-in <wsdir>/build/solaris-sparc/lib.
-
-Then run any app. You'll see lots of thrilling "In the
-Xxxx method of the Yyy class" messages. If you get anything
-else (especially an exception), then you've found a bug.
-Probably in the default look and feel.
-
--- a/jdk/make/tools/src/build/tools/automulti/TestALFGenerator.java Mon Jul 07 16:56:23 2008 +0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,401 +0,0 @@
-/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-package build.tools.automulti;
-
-import java.lang.reflect.*;
-import java.util.*;
-import java.io.*;
-
-/**
- * Automatically generates an auxiliary look and feel to be
- * used for testing the Multiplexing look and feel.
- * <p>
- * To use, type 'java TestALFGenerator <plafdir> [<package>]' where <plafdir>
- * is the directory containing the source for Swing's UI classes.
- * <package> is an optional argument that specifies the package
- * of the TestALF classes. If it's omitted, the classes are in
- * the default package.
- * For example:
- *
- * <pre>
- * ../../../../build/solaris-sparc/bin/java TestALFGenerator ../../../../src/share/classes/javax/swing/plaf com.myco.myalaf
- * </pre>
- *
- * TestALFGenerator will scour the plaf directory for *UI.java files and
- * generate TestALF*UI.java files.
- * <p>
- * NOTE: This tool depends upon the existence of <plafdir> and on the
- * compiled classes from <plafdir> being somewhere in the class path.
- *
- * @author Willie Walker
- */
-public class TestALFGenerator {
- static String importLines;
- static String packageName;
- static String classPrefix = "TestALF";
-
- /**
- * A silly list of parameter names to use. Skips "i" because we use
- * it as a 'for' loop counter. If you want to get fancy, please feel
- * to change how parameter names are obtained. This will break if
- * someone decides to create a UI method that takes more than 8
- * parameters. Which one is a bug (this breaking or having a method
- * with more than eight parameters) is a subjective thing.
- */
- public static String[] paramNames = {"a","b","c","d","e","f","g","h"};
-
- /**
- * Removes the package names (e.g., javax.swing) from the name.
- */
- public static String unqualifyName(String name) {
- StringTokenizer parser = new StringTokenizer(name,".");
- String unqualifiedName = null;
- while (parser.hasMoreTokens()) {
- unqualifiedName = parser.nextToken();
- }
- return removeDollars(unqualifiedName);
- }
-
- /**
- * Strips the extension from the filename.
- */
- public static String stripExtension(String name) {
- StringTokenizer parser = new StringTokenizer(name,".");
- return parser.nextToken();
- }
-
- /**
- * Adds some spaces.
- */
- public static void indent(StringBuffer s, int i) {
- while (i > 0) {
- s.append(" ");
- i--;
- }
- }
-
- /**
- * Spits out all the beginning stuff.
- */
- public static StringBuffer createPreamble(String prefixName) {
- StringBuffer s = new StringBuffer();
- s.append("/*\n");
- s.append(" *\n");
- s.append(" * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.\n");
- s.append(" * \n");
- s.append(" * This software is the proprietary information of Sun Microsystems, Inc. \n");
- s.append(" * Use is subject to license terms.\n");
- s.append(" * \n");
- s.append(" */\n");
- if (packageName != null) {
- s.append("package " + packageName + ";\n");
- s.append("\n");
- }
- return s;
- }
-
- /**
- * Replaces 'Xxx$Yyy' with "Xxx'. Used by addImport because you
- * can't import nested classes directly.
- */
- public static String removeNestedClassName(String s) {
- int dollarPosition = s.indexOf('$');
-
- if (dollarPosition >= 0) { // s contains '$'
- StringBuffer sb = new StringBuffer(s);
- sb.setLength(dollarPosition);
- return sb.toString();
- } else { // no '$'
- return s;
- }
- }
-
- /**
- * Replaces '$' with ".'. Needed for printing inner class names
- * for argument and return types.
- */
- public static String removeDollars(String s) {
- int dollarPosition = s.indexOf('$');
-
- if (dollarPosition >= 0) { // s contains '$'
- StringBuffer sb = new StringBuffer(s);
- while (dollarPosition >= 0) {
- //XXX: will there ever be more than one '$'?
- sb.replace(dollarPosition, dollarPosition+1, ".");
- dollarPosition = sb.indexOf("$", dollarPosition);
- }
- return sb.toString();
- } else { // no $
- return s;
- }
- }
-
- /**
- * Adds an import line to the String.
- */
- public static void addImport(String s, Class theClass) {
- if (!theClass.isPrimitive() && (theClass != Object.class)) {
- String className = removeNestedClassName(theClass.getName());
- String importLine = new String("import " + className + ";\n");
- if (importLines.indexOf(importLine) == -1) {
- importLines += importLine;
- }
- }
- }
-
- /**
- * Spits out the class header information.
- */
- public static void addHeader(StringBuffer s, String className) {
- s.append("/**\n");
- s.append(" * An auxiliary UI for <code>" + className + "</code>s.\n");
- s.append(" * \n");
- s.append(" * <p>This file was automatically generated by TestALFGenerator.\n");
- s.append(" *\n");
- s.append(" * @author Otto Multey\n"); // Get it? I crack myself up.
- s.append(" */\n");
- s.append("public class " + classPrefix + className + " extends " + className + " {\n");
- s.append("\n");
- }
-
- /**
- * Prints out the code for a method.
- */
- public static void addMethod(StringBuffer s, Method m, String origName, String className) {
-
- // Get the method name and the return type. Be a little careful about arrays.
- //
- String methodName = unqualifyName(m.getName());
- String returnType;
-
- if (!m.getReturnType().isArray()) {
- returnType = unqualifyName(m.getReturnType().toString());
- addImport(importLines,m.getReturnType());
- } else {
- returnType = unqualifyName(m.getReturnType().getComponentType().toString())
- + "[]";
- addImport(importLines,m.getReturnType().getComponentType());
- }
-
- // Print the javadoc
- //
- s.append("\n");
-
- if (methodName.equals("createUI")) {
- s.append(" /**\n");
- s.append(" * Returns a UI object for this component.\n");
- s.append(" */\n");
- } else {
- s.append(" /**\n");
- s.append(" * Prints a message saying this method has been invoked.\n");
- s.append(" */\n");
- }
-
- // Print the method signature
- //
- s.append(" public");
- if (Modifier.isStatic(m.getModifiers())) {
- s.append(" static");
- }
- s.append(" " + returnType);
- s.append(" " + methodName);
- s.append("(");
-
- Class[] params = m.getParameterTypes();
- Class temp;
- String braces;
- for (int i = 0; i < params.length; i++) {
- if (i > 0) {
- s.append(", ");
- }
- temp = params[i];
- braces = new String("");
- while (temp.isArray()) {
- braces += "[]";
- temp = temp.getComponentType();
- }
- s.append(unqualifyName(temp.getName()) + braces + " " + paramNames[i]);
- addImport(importLines,temp);
- }
- s.append(")");
-
- // Don't forget about exceptions
- //
- Class exceptions[] = m.getExceptionTypes();
- String throwsString = new String("");
-
- if (exceptions.length > 0) {
- s.append("\n");
- indent(s,12);
- s.append("throws ");
- for (int i = 0; i < exceptions.length; i++) {
- if (i > 0) {
- s.append(", ");
- }
- s.append(unqualifyName(exceptions[i].getName()));
- addImport(importLines,exceptions[i]);
- }
- }
- s.append(throwsString + " {\n");
-
- // Now print out the contents of the method.
- indent(s,8);
- s.append("System.out.println(\"In the " + methodName
- + " method of the "
- + classPrefix + origName + " class.\");\n");
- if (methodName.equals("createUI")) {
- indent(s,8);
- s.append("return ui;\n");
- } else {
- // If we have to return something, do so.
- if (!returnType.equals("void")) {
- Class rType = m.getReturnType();
- indent(s,8);
- if (!rType.isPrimitive()) {
- s.append("return null;\n");
- } else if (rType == Boolean.TYPE) {
- s.append("return false;\n");
- } else if (rType == Character.TYPE) {
- s.append("return '0';\n");
- } else { // byte, short, int, long, float, or double
- s.append("return 0;\n");
- }
- }
- }
-
- indent(s,4);
- s.append("}\n");
- }
-
- /**
- * Takes a plaf class name (e.g., "MenuUI") and generates the corresponding
- * TestALF UI Java source code (e.g., "TestALFMenuUI.java").
- */
- public static void generateFile(String prefixName, String className) {
- try {
- FileOutputStream fos;
- PrintWriter outFile;
-
- importLines = new String();
- importLines += new String("import java.util.Vector;\n");
-
- StringBuffer body = new StringBuffer();
- Class wee = Class.forName(prefixName + ".swing.plaf." + className);
- String weeName = unqualifyName(wee.getName());
- String thisClassName = classPrefix + className;
- addImport(importLines,wee);
-
- // Declare and initialize the shared UI object.
- body.append("\n");
- body.append("////////////////////\n");
- body.append("// Shared UI object\n");
- body.append("////////////////////\n");
- body.append("private final static " + thisClassName
- + " ui = new " + thisClassName + "();\n");
-
- while (!weeName.equals("Object")) {
- body.append("\n");
- body.append("////////////////////\n");
- body.append("// " + weeName + " methods\n");
- body.append("////////////////////\n");
- Method[] methods = wee.getDeclaredMethods();
- for (int i=0; i < methods.length; i++) {
- if (Modifier.isPublic(methods[i].getModifiers())) {
- addMethod(body,methods[i],className,weeName);
- }
- }
- wee = wee.getSuperclass();
- weeName = unqualifyName(wee.getName());
- addImport(importLines,wee);
- }
-
- fos = new FileOutputStream(classPrefix + className + ".java");
- outFile = new PrintWriter(fos);
- StringBuffer outText = createPreamble(prefixName);
- outText.append(importLines.toString() + "\n");
- addHeader(outText,className);
- outText.append(body.toString());
- outText.append("}\n");
- outFile.write(outText.toString());
- outFile.flush();
- outFile.close();
- } catch (Exception e) {
- System.err.println(e);
- }
- }
-
- /**
- * D'Oh! Something bad happened.
- */
- public static void usage(String s) throws IOException {
- System.err.println("Usage: java TestALFGenerator <plafdir> [<packageName>]");
- throw new IllegalArgumentException(s);
- }
-
- /**
- * Takes the plaf directory name and generates the TestALF UI
- * source code.
- */
- public static void main(String[] args) throws IOException {
-
- if (args.length < 1) {
- usage("");
- }
-
- String dirName = args[0];
- File dir = new File(dirName);
- if (!dir.isDirectory()) {
- System.err.println("No such directory: " + dirName);
- usage("");
- }
-
- if (args.length > 1) {
- packageName = args[1];
- }
-
- String plafUIs[] = dir.list(new UIJavaFilter());
- for (int i = 0; i < plafUIs.length; i++) {
- generateFile("javax",stripExtension(plafUIs[i]));
- }
- }
-}
-
-/**
- * Only accepts file names of the form *UI.java. The one exception
- * is not accepting ComponentUI.java because we don't need to generate
- * a TestALF class for it.
- */
-class UIJavaFilter implements FilenameFilter {
- public boolean accept(File dir, String name) {
- if (name.equals("ComponentUI.java")) {
- return false;
- } else if (name.endsWith("UI.java")) {
- return true;
- } else {
- return false;
- }
- }
-}
--- a/jdk/make/tools/src/build/tools/automulti/TestALFLookAndFeel.java Mon Jul 07 16:56:23 2008 +0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-/*
- * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-//package com.myco.myalaf; //search for myalaf for other refs to package name
-
-
-package build.tools.automulti;
-
-import java.util.Vector;
-import java.lang.reflect.Method;
-import javax.swing.*;
-import javax.swing.plaf.*;
-
-/**
- * <p>An auxiliary look and feel used for testing the Multiplexing
- * look and feel.
- * <p>
- *
- * @see UIManager#addAuxiliaryLookAndFeel
- * @see javax.swing.plaf.multi
- *
- * @author Kathy Walrath
- * @author Will Walker
- */
-public class TestALFLookAndFeel extends LookAndFeel {
-
-//////////////////////////////
-// LookAndFeel methods
-//////////////////////////////
-
- /**
- * Returns a string, suitable for use in menus,
- * that identifies this look and feel.
- *
- * @return a string such as "Test Auxiliary Look and Feel"
- */
- public String getName() {
- return "Test Auxiliary Look and Feel";
- }
-
- /**
- * Returns a string, suitable for use by applications/services,
- * that identifies this look and feel.
- *
- * @return "TestALF"
- */
- public String getID() {
- return "TestALF";
- }
-
- /**
- * Returns a one-line description of this look and feel.
- *
- * @return a descriptive string such as "Allows multiple UI instances per component instance"
- */
- public String getDescription() {
- return "Allows multiple UI instances per component instance";
- }
-
- /**
- * Returns <code>false</code>;
- * this look and feel is not native to any platform.
- *
- * @return <code>false</code>
- */
- public boolean isNativeLookAndFeel() {
- return false;
- }
-
- /**
- * Returns <code>true</code>;
- * every platform permits this look and feel.
- *
- * @return <code>true</code>
- */
- public boolean isSupportedLookAndFeel() {
- return true;
- }
-
- /**
- * Creates, initializes, and returns
- * the look and feel specific defaults.
- * For this look and feel,
- * the defaults consist solely of
- * mappings of UI class IDs
- * (such as "ButtonUI")
- * to <code>ComponentUI</code> class names
- * (such as "com.myco.myalaf.MultiButtonUI").
- *
- * @return an initialized <code>UIDefaults</code> object
- * @see javax.swing.JComponent#getUIClassID
- */
- public UIDefaults getDefaults() {
- System.out.println("In the TestALFLookAndFeel getDefaults method.");
- UIDefaults table = new TestALFUIDefaults();
- //String prefix = "com.myco.myalaf.TestALF";
- String prefix = "TestALF";
- Object[] uiDefaults = {
- "ButtonUI", prefix + "ButtonUI",
- "CheckBoxMenuItemUI", prefix + "MenuItemUI",
- "CheckBoxUI", prefix + "ButtonUI",
- "ColorChooserUI", prefix + "ColorChooserUI",
- "ComboBoxUI", prefix + "ComboBoxUI",
- "DesktopIconUI", prefix + "DesktopIconUI",
- "DesktopPaneUI", prefix + "DesktopPaneUI",
- "EditorPaneUI", prefix + "TextUI",
- "FileChooserUI", prefix + "FileChooserUI",
- "FormattedTextFieldUI", prefix + "TextUI",
- "InternalFrameUI", prefix + "InternalFrameUI",
- "LabelUI", prefix + "LabelUI",
- "ListUI", prefix + "ListUI",
- "MenuBarUI", prefix + "MenuBarUI",
- "MenuItemUI", prefix + "MenuItemUI",
- "MenuUI", prefix + "MenuItemUI",
- "OptionPaneUI", prefix + "OptionPaneUI",
- "PanelUI", prefix + "PanelUI",
- "PasswordFieldUI", prefix + "TextUI",
- "PopupMenuSeparatorUI", prefix + "SeparatorUI",
- "PopupMenuUI", prefix + "PopupMenuUI",
- "ProgressBarUI", prefix + "ProgressBarUI",
- "RadioButtonMenuItemUI", prefix + "MenuItemUI",
- "RadioButtonUI", prefix + "ButtonUI",
- "RootPaneUI", prefix + "RootPaneUI",
- "ScrollBarUI", prefix + "ScrollBarUI",
- "ScrollPaneUI", prefix + "ScrollPaneUI",
- "SeparatorUI", prefix + "SeparatorUI",
- "SliderUI", prefix + "SliderUI",
- "SpinnerUI", prefix + "SpinnerUI",
- "SplitPaneUI", prefix + "SplitPaneUI",
- "TabbedPaneUI", prefix + "TabbedPaneUI",
- "TableHeaderUI", prefix + "TableHeaderUI",
- "TableUI", prefix + "TableUI",
- "TextAreaUI", prefix + "TextUI",
- "TextFieldUI", prefix + "TextUI",
- "TextPaneUI", prefix + "TextUI",
- "ToggleButtonUI", prefix + "ButtonUI",
- "ToolBarSeparatorUI", prefix + "SeparatorUI",
- "ToolBarUI", prefix + "ToolBarUI",
- "ToolTipUI", prefix + "ToolTipUI",
- "TreeUI", prefix + "TreeUI",
- "ViewportUI", prefix + "ViewportUI",
- };
-
- table.putDefaults(uiDefaults);
- return table;
- }
-
-}
-
-/**
- * We want the Test auxiliary look and feel to be quiet and fallback
- * gracefully if it cannot find a UI. This class overrides the
- * getUIError method of UIDefaults, which is the method that
- * emits error messages when it cannot find a UI class in the
- * LAF.
- */
-class TestALFUIDefaults extends UIDefaults {
- protected void getUIError(String msg) {
- System.err.println("Test auxiliary L&F: " + msg);
- }
-}