diff --git a/.hgtags b/.hgtags index 85783d82daebd9442a1c15034c8088b16da63740..1a27baa7cacebee57bcf880d40956730cf3894b2 100644 --- a/.hgtags +++ b/.hgtags @@ -45,3 +45,5 @@ a952aafd5181af953b0ef3010dbd2fcc28460e8a jdk7-b67 b23d905cb5d3b382295240d28ab0bfb266b4503c jdk7-b68 226b20019b1f020c09ea97d137d98e011ce65d76 jdk7-b69 893bcca951b747ddcf6986362b877f0e1dbb835b jdk7-b70 +b3f3240135f0c10b9f2481c174b81b7fcf0daa60 jdk7-b71 +460639b036f327282832a4fe52b7aa45688afd50 jdk7-b72 diff --git a/README b/README index e3cc63ec993be85b2eb12e21d38d3e1a16f007f4..d774ab80b70466958efc3ae02347b54eb84fc1b5 100644 --- a/README +++ b/README @@ -9,35 +9,25 @@ Simple Build Instructions: http://java.sun.com/javase/downloads/index.jsp Set the environment variable ALT_BOOTDIR to the location of this JDK 6. - 2. Download and install the JIBX libraries, version 1.1.5 from - http://sourceforge.net/project/showfiles.php?group_id=69358&package_id=68290 - You'll need the following four JAR files: - bcel.jar - jibx-bind.jar - jibx-run.jar - xpp3.jar - Set the environment variable ALT_JIBX_LIBS_PATH to the location of - these JAR files. - - 3. Download and install the Binary Plugs for the most recent JDK7 from + 2. Download and install the Binary Plugs for the most recent JDK7 from http://download.java.net/openjdk/jdk7/ Set the environment variable ALT_BINARY_PLUGS_PATH to the location of these binary plugs. - 4. Either download and install the latest JDK7 from + 3. Either download and install the latest JDK7 from http://download.java.net/openjdk/jdk7/, or build your own complete OpenJDK7 by using the top level Makefile in the OpenJDK Mercurial forest. Set the environment variable ALT_JDK_IMPORT_PATH to the location of this latest JDK7 or OpenJDK7 build. - 5. Check the sanity of doing a build with the current machine: + 4. Check the sanity of doing a build with the current machine: cd make && gnumake sanity See README-builds.html if you run into problems. - 6. Do a partial build of the jdk: + 5. Do a partial build of the jdk: cd make && gnumake all - 7. Construct the images: + 6. Construct the images: cd make && gnumake images The resulting JDK image should be found in build/*/j2sdk-image diff --git a/make/common/Sanity.gmk b/make/common/Sanity.gmk index aa15361ff71990adcbb278c448d27b517856a5d1..a136e6d8d34f314fe30f622b9d6492961e774e73 100644 --- a/make/common/Sanity.gmk +++ b/make/common/Sanity.gmk @@ -93,8 +93,7 @@ sanity-all:: sanity-base \ sane-alt_bootdir \ sane-bootdir \ sane-local-bootdir \ - sane-alsa-headers \ - sane-jibx + sane-alsa-headers ifdef OPENJDK sanity-all:: sane-freetype diff --git a/make/common/shared/Defs-java.gmk b/make/common/shared/Defs-java.gmk index 9d918af877dfe6b2c80a932544d01eba86b29abf..f9ed635313135f7d95d0102244c53c1724389337 100644 --- a/make/common/shared/Defs-java.gmk +++ b/make/common/shared/Defs-java.gmk @@ -201,7 +201,10 @@ endif ifeq ($(JAVAC_WARNINGS_FATAL), true) BOOT_JAVACFLAGS += -Werror endif -BOOT_JAVACFLAGS += -encoding ascii + +BOOT_SOURCE_LANGUAGE_VERSION = 6 +BOOT_TARGET_CLASS_VERSION = 6 +BOOT_JAVACFLAGS += -encoding ascii -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION) BOOT_JAR_JFLAGS += $(JAR_JFLAGS) BOOT_JAVACFLAGS += $(NO_PROPRIETARY_API_WARNINGS) diff --git a/make/common/shared/Defs.gmk b/make/common/shared/Defs.gmk index 199d07668218a995c27281934b00f2470e9c229e..2ad6fd4a19f497f2469f7b80efb9b24ae2797d2f 100644 --- a/make/common/shared/Defs.gmk +++ b/make/common/shared/Defs.gmk @@ -536,15 +536,6 @@ endif # NOTE: ISA_DIR is usually empty, on Solaris it might be /sparcv9 or /amd64 BINDIR = $(OUTPUTDIR)/bin$(ISA_DIR) -# JIBX_LIBS_PATH: path to JIBX libraries, needed for NimbusLookAndFeel -ifdef ALT_JIBX_LIBS_PATH - JIBX_LIBS_PATH:=$(call FullPath,$(ALT_JIBX_LIBS_PATH)) - JIBX_LIBS_PATH:=$(call AltCheckSpaces,JIBX_LIBS_PATH) - JIBX_LIBS_PATH:=$(call AltCheckValue,JIBX_LIBS_PATH) -else - JIBX_LIBS_PATH=$(JDK_DEVTOOLS_DIR)/share/jibx/lib -endif - # MOZILLA_HEADERS_PATH: path to mozilla header files for plugin ifdef ALT_MOZILLA_HEADERS_PATH MOZILLA_HEADERS_PATH :=$(call FullPath,$(ALT_MOZILLA_HEADERS_PATH)) diff --git a/make/common/shared/Sanity-Settings.gmk b/make/common/shared/Sanity-Settings.gmk index 283598e394db424f6cac63f832dddac05129209e..b64e3b52a136a931d3230425feebadcd5fad802b 100644 --- a/make/common/shared/Sanity-Settings.gmk +++ b/make/common/shared/Sanity-Settings.gmk @@ -233,7 +233,6 @@ ifeq ($(PLATFORM),windows) endif endif ALL_SETTINGS+=$(call addAltSetting,CACERTS_FILE) -ALL_SETTINGS+=$(call addAltSetting,JIBX_LIBS_PATH) ifndef OPENJDK ALL_SETTINGS+=$(call addAltSetting,MOZILLA_HEADERS_PATH) endif diff --git a/make/common/shared/Sanity.gmk b/make/common/shared/Sanity.gmk index 87d9120b1a4cc6b57130ad301ef25f49a8ea44f0..e8b19c942ebf03e2ec14a73070787f0152b03415 100644 --- a/make/common/shared/Sanity.gmk +++ b/make/common/shared/Sanity.gmk @@ -214,7 +214,6 @@ include $(JDK_MAKE_SHARED_DIR)/Sanity-Settings.gmk sane-link \ sane-cacerts \ sane-alsa-headers \ - sane-jibx \ sane-ant_version \ sane-zip_version \ sane-unzip_version \ @@ -1516,22 +1515,6 @@ ifeq ($(PLATFORM), solaris) endif -###################################################### -# JIBX_LIBS_PATH must be valid -###################################################### -sane-jibx: -ifdef DISABLE_NIMBUS - $(call SanityWarning,Disabling Nimbus will remove public API in javax.swing.plaf.nimbus.) -else - @if [ ! -r $(subst \,/,$(JIBX_LIBS_PATH))/jibx-run.jar ]; then \ - $(ECHO) "ERROR: You do not have access to valid JIBX library files. \n" \ - " Please check your access to \n" \ - " $(subst \,/,$(JIBX_LIBS_PATH))/jibx-run.jar \n" \ - " and/or check your value of ALT_JDK_DEVTOOLS_DIR, ALT_JIBX_LIBS_PATH \n" \ - "" >> $(ERROR_FILE) ; \ - fi -endif - ###################################################### # MOZILLA_HEADERS_PATH must be valid ###################################################### diff --git a/make/java/java/FILES_java.gmk b/make/java/java/FILES_java.gmk index e8a2223f67a53e64f6f21a5fdc2fec1dc84639ba..2ad599cbe235749e97c5128835fc249191bce42c 100644 --- a/make/java/java/FILES_java.gmk +++ b/make/java/java/FILES_java.gmk @@ -454,6 +454,8 @@ JAVA_JAVA_java = \ sun/misc/JavaLangAccess.java \ sun/misc/JavaIOAccess.java \ sun/misc/JavaIOFileDescriptorAccess.java \ - sun/misc/JavaNioAccess.java + sun/misc/JavaNioAccess.java \ + sun/misc/Perf.java \ + sun/misc/PerfCounter.java FILES_java = $(JAVA_JAVA_java) diff --git a/make/java/logging/Makefile b/make/java/logging/Makefile index c6ed1879fecd64bf9d36d4fe0f2dc8061e5bef7e..444c1c63b5a76d35c182dd7667240ada67a58b8d 100644 --- a/make/java/logging/Makefile +++ b/make/java/logging/Makefile @@ -31,7 +31,7 @@ include $(BUILDDIR)/common/Defs.gmk # # Files to compile. # -AUTO_FILES_JAVA_DIRS = java/util/logging +AUTO_FILES_JAVA_DIRS = java/util/logging sun/util/logging # # Resources @@ -46,7 +46,6 @@ RESOURCE_BUNDLES_COMPILED_PROPERTIES = \ include $(BUILDDIR)/common/Classes.gmk properties: $(LIBDIR)/logging.properties - $(LIBDIR)/logging.properties: $(SHARE_SRC)/lib/logging.properties $(install-file) diff --git a/make/javax/swing/plaf/Makefile b/make/javax/swing/plaf/Makefile index cf3bf0aa2745470ee0a647f95759237a961381d5..c0c5ebecc70a0bf4e65b7a25688a1f2c84633298 100644 --- a/make/javax/swing/plaf/Makefile +++ b/make/javax/swing/plaf/Makefile @@ -34,16 +34,14 @@ include $(BUILDDIR)/common/Defs.gmk # include FILES.gmk AUTO_FILES_JAVA_DIRS = javax/swing/plaf sun/swing com/sun/java/swing/plaf -ifndef DISABLE_NIMBUS - SUBDIRS = nimbus -endif - -# Nimbus is handled in its own directory -AUTO_JAVA_PRUNE = nimbus ifeq ($(PLATFORM), windows) # Don't build GTK L&F on Windows - AUTO_JAVA_PRUNE += gtk + AUTO_JAVA_PRUNE = gtk +endif + +ifdef DISABLE_NIMBUS + AUTO_JAVA_PRUNE += nimbus endif MISC_FILES = $(MISC_SWING_FILES) @@ -52,6 +50,10 @@ ifneq ($(PLATFORM), windows) MISC_FILES += $(MISC_SWING_FILES_UNIX) endif +NIMBUS_GENSRC_DIR = $(GENSRCDIR)/javax/swing/plaf/nimbus +NIMBUS_SKIN_FILE = $(SWING_SRC)/plaf/nimbus/skin.laf +NIMBUS_GENERATOR_JAR = $(BUILDTOOLJARDIR)/generatenimbus.jar + FILES_java = $(FILES_SWING_java) # @@ -75,14 +77,25 @@ endif # Process LOGO_ICONS and Motif Icons first. # build: $(LOGO_ICONS) $(MISC_SWING_FILES_MOTIF_GIF) $(MISC_SWING_FILES_MOTIF_PNG) other_files - $(SUBDIRS-loop) -clean clobber:: - $(SUBDIRS-loop) +$(NIMBUS_GENSRC_DIR): $(NIMBUS_SKIN_FILE) $(NIMBUS_GENERATOR_JAR) + @$(ECHO) "Generating Nimbus source files:" + $(RM) -r $(NIMBUS_GENSRC_DIR) + $(BOOT_JAVA_CMD) -jar $(NIMBUS_GENERATOR_JAR) \ + -skinFile $(NIMBUS_SKIN_FILE) -buildDir $(GENSRCDIR) \ + -packagePrefix $(PACKAGE).nimbus -lafName Nimbus + @$(ECHO) "Finished generating Nimbus source files" + +clean:: classes.clean + $(RM) -r $(NIMBUS_GENSRC_DIR) # # Include # +ifndef DISABLE_NIMBUS + CLASSES_INIT = $(NIMBUS_GENSRC_DIR) +endif + include $(BUILDDIR)/common/Classes.gmk ifndef OPENJDK diff --git a/make/sun/javazic/tzdata/VERSION b/make/sun/javazic/tzdata/VERSION index 373805077ff36156afb1c90fd918f36552785e9f..17a8a1b2984e5d062beb86036f1de34d2133961f 100644 --- a/make/sun/javazic/tzdata/VERSION +++ b/make/sun/javazic/tzdata/VERSION @@ -21,4 +21,4 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # -tzdata2009g +tzdata2009l diff --git a/make/sun/javazic/tzdata/africa b/make/sun/javazic/tzdata/africa index 072bc251c1d04de0f515c79c88719b7884ff736d..2032f3862d74a4a443501361a7b7aabd7ea1ce12 100644 --- a/make/sun/javazic/tzdata/africa +++ b/make/sun/javazic/tzdata/africa @@ -22,6 +22,8 @@ # have any questions. # #
+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to @@ -263,18 +265,18 @@ Rule Egypt 2007 only - Sep Thu>=1 23:00s 0 - # The following appeared in Red Hat bugzilla[1] (edited): # # > $ zdump -v /usr/share/zoneinfo/Africa/Cairo | grep 2009 -# > /usr/share/zoneinfo/Africa/Cairo Thu Apr 23 21:59:59 2009 UTC =3D Thu = +# > /usr/share/zoneinfo/Africa/Cairo Thu Apr 23 21:59:59 2009 UTC = Thu = # Apr 23 -# > 23:59:59 2009 EET isdst=3D0 gmtoff=3D7200 -# > /usr/share/zoneinfo/Africa/Cairo Thu Apr 23 22:00:00 2009 UTC =3D Fri = +# > 23:59:59 2009 EET isdst=0 gmtoff=7200 +# > /usr/share/zoneinfo/Africa/Cairo Thu Apr 23 22:00:00 2009 UTC = Fri = # Apr 24 -# > 01:00:00 2009 EEST isdst=3D1 gmtoff=3D10800 -# > /usr/share/zoneinfo/Africa/Cairo Thu Aug 27 20:59:59 2009 UTC =3D Thu = +# > 01:00:00 2009 EEST isdst=1 gmtoff=10800 +# > /usr/share/zoneinfo/Africa/Cairo Thu Aug 27 20:59:59 2009 UTC = Thu = # Aug 27 -# > 23:59:59 2009 EEST isdst=3D1 gmtoff=3D10800 -# > /usr/share/zoneinfo/Africa/Cairo Thu Aug 27 21:00:00 2009 UTC =3D Thu = +# > 23:59:59 2009 EEST isdst=1 gmtoff=10800 +# > /usr/share/zoneinfo/Africa/Cairo Thu Aug 27 21:00:00 2009 UTC = Thu = # Aug 27 -# > 23:00:00 2009 EET isdst=3D0 gmtoff=3D7200 +# > 23:00:00 2009 EET isdst=0 gmtoff=7200 # # > end date should be Thu Sep 24 2009 (Last Thursday in September at 23:59= # :59) @@ -282,11 +284,11 @@ Rule Egypt 2007 only - Sep Thu>=1 23:00s 0 - # # timeanddate[2] and another site I've found[3] also support that. # -# [1] -# https://bugzilla.redhat.com/show_bug.cgi?id=3D492263 +# [1] +# https://bugzilla.redhat.com/show_bug.cgi?id=492263 # -# [2] -# http://www.timeanddate.com/worldclock/clockchange.html?n=3D53 +# [2] +# http://www.timeanddate.com/worldclock/clockchange.html?n=53 # # [3] # http://wwp.greenwichmeantime.com/time-zone/africa/egypt/ @@ -296,8 +298,27 @@ Rule Egypt 2007 only - Sep Thu>=1 23:00s 0 - # In 2009 (and for the next several years), Ramadan ends before the fourth # Thursday in September; Egypt is expected to revert to the last Thursday # in September. + +# From Steffen Thorsen (2009-08-11): +# We have been able to confirm the August change with the Egyptian Cabinet +# Information and Decision Support Center: +# +# http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html +# +# +# The Middle East News Agency +# +# http://www.mena.org.eg/index.aspx +# +# also reports "Egypt starts winter time on August 21" +# today in article numbered "71, 11/08/2009 12:25 GMT." +# Only the title above is available without a subscription to their service, +# and can be found by searching for "winter" in their search engine +# (at least today). + Rule Egypt 2008 only - Aug lastThu 23:00s 0 - -Rule Egypt 2009 max - Sep lastThu 23:00s 0 - +Rule Egypt 2009 only - Aug 20 23:00s 0 - +Rule Egypt 2010 max - Sep lastThu 23:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Cairo 2:05:00 - LMT 1900 Oct @@ -499,8 +520,8 @@ Zone Africa/Nouakchott -1:03:48 - LMT 1912 # From Riad M. Hossen Ally (2008-08-03): # The Government of Mauritius weblink -# -# http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=3D4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD +# +# http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD # # Cabinet Decision of July 18th, 2008 states as follows: # @@ -522,11 +543,33 @@ Zone Africa/Nouakchott -1:03:48 - LMT 1912 # http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf # +# From Steffen Thorsen (2009-06-05): +# According to several sources, Mauritius will not continue to observe +# DST the coming summer... +# +# Some sources, in French: +# +# http://www.defimedia.info/news/946/Rashid-Beebeejaun-:-%C2%AB-L%E2%80%99heure-d%E2%80%99%C3%A9t%C3%A9-ne-sera-pas-appliqu%C3%A9e-cette-ann%C3%A9e-%C2%BB +# +# +# http://lexpress.mu/Story/3398~Beebeejaun---Les-objectifs-d-%C3%A9conomie-d-%C3%A9nergie-de-l-heure-d-%C3%A9t%C3%A9-ont-%C3%A9t%C3%A9-atteints- +# +# +# Our wrap-up: +# +# http://www.timeanddate.com/news/time/mauritius-dst-will-not-repeat.html +# + +# From Arthur David Olson (2009-07-11): +# The "mauritius-dst-will-not-repeat" wrapup includes this: +# "The trial ended on March 29, 2009, when the clocks moved back by one hour +# at 2am (or 02:00) local time..." + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Mauritius 1982 only - Oct 10 0:00 1:00 S Rule Mauritius 1983 only - Mar 21 0:00 0 - -Rule Mauritius 2008 max - Oct lastSun 2:00s 1:00 S -Rule Mauritius 2009 max - Mar lastSun 2:00s 0 - +Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 S +Rule Mauritius 2009 only - Mar lastSun 2:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis 4:00 Mauritius MU%sT # Mauritius Time diff --git a/make/sun/javazic/tzdata/antarctica b/make/sun/javazic/tzdata/antarctica index bed6d441938c56e1976ed39e947c3a21e4042247..31a624b0e101448d33b7c21b2b31d7ab3a78fd42 100644 --- a/make/sun/javazic/tzdata/antarctica +++ b/make/sun/javazic/tzdata/antarctica @@ -22,6 +22,8 @@ # have any questions. # #+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # From Paul Eggert (1999-11-15): # To keep things manageable, we list only locations occupied year-round; see diff --git a/make/sun/javazic/tzdata/asia b/make/sun/javazic/tzdata/asia index 64e6b0504a0a00e08760301c9cac520b862943a0..81534b919a44d20827ead361026d86bb7570ba96 100644 --- a/make/sun/javazic/tzdata/asia +++ b/make/sun/javazic/tzdata/asia @@ -22,6 +22,8 @@ # have any questions. # #+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to @@ -147,6 +149,57 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # Al Manamah 3:00 - AST # Bangladesh +# From Alexander Krivenyshev (2009-05-13): +# According to newspaper Asian Tribune (May 6, 2009) Bangladesh may introduce +# Daylight Saving Time from June 16 to Sept 30 +# +# Bangladesh to introduce daylight saving time likely from June 16 +# +# http://www.asiantribune.com/?q=node/17288 +# +# or +# +# http://www.worldtimezone.com/dst_news/dst_news_bangladesh02.html +# +# +# "... Bangladesh government has decided to switch daylight saving time from +# June +# 16 till September 30 in a bid to ensure maximum use of daylight to cope with +# crippling power crisis. " +# +# The switch will remain in effect from June 16 to Sept 30 (2009) but if +# implemented the next year, it will come in force from April 1, 2010 + +# From Steffen Thorsen (2009-06-02): +# They have finally decided now, but changed the start date to midnight between +# the 19th and 20th, and they have not set the end date yet. +# +# Some sources: +# +# http://in.reuters.com/article/southAsiaNews/idINIndia-40017620090601 +# +# +# http://bdnews24.com/details.php?id=85889&cid=2 +# +# +# Our wrap-up: +# +# http://www.timeanddate.com/news/time/bangladesh-daylight-saving-2009.html +# + +# From A. N. M. Kamrus Saadat (2009-06-15): +# Finally we've got the official mail regarding DST start time where DST start +# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh +# Telecommunication Regulatory Commission). +# +# No DST end date has been announced yet. + +# From Arthur David Olson (2009-07-11): +# Arbitrarily end DST at the end of 2009 so that a POSIX-sytle time zone string +# can appear in the Dhaka binary file and for the benefit of old glibc +# reimplementations of the time zone software that mishandle permanent DST. +# A change will be required once the end date is known. + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dhaka 6:01:40 - LMT 1890 5:53:20 - HMT 1941 Oct # Howrah Mean Time? @@ -154,7 +207,9 @@ Zone Asia/Dhaka 6:01:40 - LMT 1890 5:30 - IST 1942 Sep 6:30 - BURT 1951 Sep 30 6:00 - DACT 1971 Mar 26 # Dacca Time - 6:00 - BDT # Bangladesh Time + 6:00 - BDT 2009 Jun 19 23:00 # Bangladesh Time + 6:00 1:00 BDST 2010 + 6:00 - BDT # Bhutan # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -1129,7 +1184,7 @@ Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 - Rule Jordan 1999 only - Jul 1 0:00s 1:00 S Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 - Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S -Rule Jordan 2002 max - Mar lastFri 0:00s 1:00 S +Rule Jordan 2002 max - Mar lastThu 24:00 1:00 S Rule Jordan 2003 only - Oct 24 0:00s 0 - Rule Jordan 2004 only - Oct 15 0:00s 0 - Rule Jordan 2005 only - Sep lastFri 0:00s 0 - diff --git a/make/sun/javazic/tzdata/australasia b/make/sun/javazic/tzdata/australasia index 823550415e0a765bb202def9001b532cccb395a1..8e336dcea30fe15c7209d1a076a10041d489134d 100644 --- a/make/sun/javazic/tzdata/australasia +++ b/make/sun/javazic/tzdata/australasia @@ -22,6 +22,8 @@ # have any questions. # #+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # This file also includes Pacific islands. @@ -447,6 +449,22 @@ Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5 -11:00 - SST # S=Samoa # Samoa + +# From Alexander Krivenyshev (2008-12-06): +# The Samoa government (Western Samoa) may implement DST on the first Sunday of +# October 2009 (October 4, 2009) until the last Sunday of March 2010 (March 28, +# 2010). +# +# "Selected Committee reports to Cabinet on Daylight Saving Time", +# Government of Samoa: +# +# http://www.govt.ws/pr_article.cfm?pr_id=560 +# +# or +# +# http://www.worldtimezone.com/dst_news/dst_news_samoa01.html +# + Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5 -11:26:56 - LMT 1911 -11:30 - SAMT 1950 # Samoa Time @@ -1141,6 +1159,27 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # From Paul Eggert (2007-07-23): # See "southeast Australia" above for 2008 and later. +# From Steffen Thorsen (2009-04-28): +# According to the official press release, South Australia's extended daylight +# saving period will continue with the same rules as used during the 2008-2009 +# summer (southern hemisphere). +# +# From +# +# http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf +# +# The extended daylight saving period that South Australia has been trialling +# for over the last year is now set to be ongoing. +# Daylight saving will continue to start on the first Sunday in October each +# year and finish on the first Sunday in April the following year. +# Industrial Relations Minister, Paul Caica, says this provides South Australia +# with a consistent half hour time difference with NSW, Victoria, Tasmania and +# the ACT for all 52 weeks of the year... +# +# We have a wrap-up here: +# +# http://www.timeanddate.com/news/time/south-australia-extends-dst.html +# ############################################################################### # New Zealand diff --git a/make/sun/javazic/tzdata/backward b/make/sun/javazic/tzdata/backward index 57bb988bc9942ffa307a7132942a4e1e5fcecb90..8a53120f78bccfefc5cc9c65f54142c8ca423010 100644 --- a/make/sun/javazic/tzdata/backward +++ b/make/sun/javazic/tzdata/backward @@ -21,6 +21,9 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # +#+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # This file provides links between current names for time zones # and their old names. Many names changed in late 1993. diff --git a/make/sun/javazic/tzdata/etcetera b/make/sun/javazic/tzdata/etcetera index 28ae4445ef03824aeb8bbbb7b6ee11e69fb29574..9583d16428d35ee6d68dbdcc911d32fbbe235dca 100644 --- a/make/sun/javazic/tzdata/etcetera +++ b/make/sun/javazic/tzdata/etcetera @@ -21,6 +21,9 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # +#+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # These entries are mostly present for historical reasons, so that # people in areas not otherwise covered by the tz files could "zic -l" diff --git a/make/sun/javazic/tzdata/europe b/make/sun/javazic/tzdata/europe index a80f1bc9cffe3608f556fcb701615ce54b37d3f2..16dbe0ee500e089a17b578f83fd38d3710946cba 100644 --- a/make/sun/javazic/tzdata/europe +++ b/make/sun/javazic/tzdata/europe @@ -22,6 +22,8 @@ # have any questions. # #+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to @@ -479,7 +481,7 @@ Rule EU 1979 1995 - Sep lastSun 1:00u 0 - Rule EU 1981 max - Mar lastSun 1:00u 1:00 S Rule EU 1996 max - Oct lastSun 1:00u 0 - # The most recent directive covers the years starting in 2002. See: -# +# # Directive 2000/84/EC of the European Parliament and of the Council # of 19 January 2001 on summer-time arrangements. # diff --git a/make/sun/javazic/tzdata/factory b/make/sun/javazic/tzdata/factory index 3842b9b08d7c4a22853a76a2987266f8c6e14409..244234f23eab39270db052bfded023084b21f2f4 100644 --- a/make/sun/javazic/tzdata/factory +++ b/make/sun/javazic/tzdata/factory @@ -21,6 +21,9 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # +#+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # For companies who don't want to put time zone specification in # their installation procedures. When users run date, they'll get the message. diff --git a/make/sun/javazic/tzdata/iso3166.tab b/make/sun/javazic/tzdata/iso3166.tab index 6931ee04a716aeb588b6aba9749ae220d904f9f1..01de3059ed387ca78fb1cbd4340c71444d96f88b 100644 --- a/make/sun/javazic/tzdata/iso3166.tab +++ b/make/sun/javazic/tzdata/iso3166.tab @@ -21,9 +21,11 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # +#+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # ISO 3166 alpha-2 country codes # -# # From Paul Eggert (2006-09-27): # # This file contains a table with the following columns: diff --git a/make/sun/javazic/tzdata/leapseconds b/make/sun/javazic/tzdata/leapseconds index ab4f97377fd123661fd89dad39443f267cc34ac2..6a84f2db12f942b9464ec8fb18c41ea88ccc8ffe 100644 --- a/make/sun/javazic/tzdata/leapseconds +++ b/make/sun/javazic/tzdata/leapseconds @@ -21,6 +21,9 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # +#+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # Allowance for leapseconds added to each timezone file. @@ -75,13 +78,13 @@ Leap 2008 Dec 31 23:59:60 + S # SERVICE DE LA ROTATION TERRESTRE # OBSERVATOIRE DE PARIS # 61, Av. de l'Observatoire 75014 PARIS (France) -# Tel. : 33 (0) 1 40 51 22 29 +# Tel. : 33 (0) 1 40 51 22 26 # FAX : 33 (0) 1 40 51 22 91 # Internet : services.iers@obspm.fr # -# Paris, 15 January 2009 +# Paris, 4 July 2009 # -# Bulletin C 37 +# Bulletin C 38 # # To authorities responsible # for the measurement and @@ -89,7 +92,7 @@ Leap 2008 Dec 31 23:59:60 + S # # INFORMATION ON UTC - TAI # -# NO positive leap second will be introduced at the end of June 2009. +# NO positive leap second will be introduced at the end of December 2009. # The difference between Coordinated Universal Time UTC and the # International Atomic Time TAI is : # @@ -101,6 +104,6 @@ Leap 2008 Dec 31 23:59:60 + S # will be no time step at the next possible date. # # Daniel GAMBIS -# Head -# Earth Orientation Center of the IERS +# Director +# Earth Orientation Center of IERS # Observatoire de Paris, France diff --git a/make/sun/javazic/tzdata/northamerica b/make/sun/javazic/tzdata/northamerica index a4dd95217b583b36a607e512e2b090bf793f644e..1b8cb7a27edbbfbd611205e85cc1c3cc15049518 100644 --- a/make/sun/javazic/tzdata/northamerica +++ b/make/sun/javazic/tzdata/northamerica @@ -22,6 +22,8 @@ # have any questions. # #+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # also includes Central America and the Caribbean diff --git a/make/sun/javazic/tzdata/pacificnew b/make/sun/javazic/tzdata/pacificnew index 5cc43873d3cb49e2557d5bbe29f26e3a4173bc17..7ad10d9b8bb03a781686fdfeb8dde94caa28c855 100644 --- a/make/sun/javazic/tzdata/pacificnew +++ b/make/sun/javazic/tzdata/pacificnew @@ -21,6 +21,9 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # +#+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # From Arthur David Olson (1989-04-05): # On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill diff --git a/make/sun/javazic/tzdata/solar87 b/make/sun/javazic/tzdata/solar87 index 6e3bfe5027dde1b5573c733cb4f98e936227b363..ca1be9c4f40d5ee040ed30b9a162149603ab4596 100644 --- a/make/sun/javazic/tzdata/solar87 +++ b/make/sun/javazic/tzdata/solar87 @@ -21,6 +21,9 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # +#+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # So much for footnotes about Saudi Arabia. # Apparent noon times below are for Riyadh; your mileage will vary. diff --git a/make/sun/javazic/tzdata/solar88 b/make/sun/javazic/tzdata/solar88 index e5d3265c5802a5c35b43390d3b578f6a214cdb0a..f1d018c4545c70fc30a3a96a37753fb47f404d19 100644 --- a/make/sun/javazic/tzdata/solar88 +++ b/make/sun/javazic/tzdata/solar88 @@ -21,6 +21,9 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # +#+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # Apparent noon times below are for Riyadh; they're a bit off for other places. # Times were computed using formulas in the U.S. Naval Observatory's diff --git a/make/sun/javazic/tzdata/solar89 b/make/sun/javazic/tzdata/solar89 index 4805c9e98886aec0ba72241c4c9e28adb18e0d40..c76873fec10fee1c22f68ce077e034164b2d6b8d 100644 --- a/make/sun/javazic/tzdata/solar89 +++ b/make/sun/javazic/tzdata/solar89 @@ -21,6 +21,9 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # +#+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # Apparent noon times below are for Riyadh; they're a bit off for other places. # Times were computed using a formula provided by the U. S. Naval Observatory: diff --git a/make/sun/javazic/tzdata/southamerica b/make/sun/javazic/tzdata/southamerica index 7da29e0925de5b48c52e25d7d4e09d01869d3923..c886a28b1263de0629c63c3b6674f5c044ed54ee 100644 --- a/make/sun/javazic/tzdata/southamerica +++ b/make/sun/javazic/tzdata/southamerica @@ -22,6 +22,8 @@ # have any questions. # #+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to @@ -696,8 +698,8 @@ Zone America/La_Paz -4:32:36 - LMT 1890 # From Rodrigo Severo (2008-06-24): # Just correcting the URL: -# -# https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=3Ddo&secao=3D1&pagina=3D1&data=3D25/04/2008 +# +# https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=do&secao=1&pagina=1&data=25/04/2008 # # # As a result of the above Decree I believe the America/Rio_Branco diff --git a/make/sun/javazic/tzdata/systemv b/make/sun/javazic/tzdata/systemv index e0604dc3f9d6dc97059d20d3bec43f6541aaae6e..152734e30299172dc2803867304e797bbf1d8df0 100644 --- a/make/sun/javazic/tzdata/systemv +++ b/make/sun/javazic/tzdata/systemv @@ -21,6 +21,9 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # +#+ * + * @param x the first {@code long} to compare + * @param y the second {@code long} to compare + * @return the value {@code 0} if {@code x == y}; + * a value less than {@code 0} if {@code x < y}; and + * a value greater than {@code 0} if {@code x > y} + * @since 1.7 + */ + public static int compare(long x, long y) { + return (x < y) ? -1 : ((x == y) ? 0 : 1); } diff --git a/src/share/classes/java/lang/SecurityManager.java b/src/share/classes/java/lang/SecurityManager.java index ea0dd5ea998228da1ebef49e3cb90ac2ba8d35ad..9006588fa085bbbea2cf3bd80f5b670fa0f22298 100644 --- a/src/share/classes/java/lang/SecurityManager.java +++ b/src/share/classes/java/lang/SecurityManager.java @@ -1341,7 +1341,7 @@ class SecurityManager { throw new NullPointerException("window can't be null"); } try { - checkPermission(SecurityConstants.TOPLEVEL_WINDOW_PERMISSION); + checkPermission(SecurityConstants.AWT.TOPLEVEL_WINDOW_PERMISSION); return true; } catch (SecurityException se) { // just return false @@ -1391,7 +1391,7 @@ class SecurityManager { * @see #checkPermission(java.security.Permission) checkPermission */ public void checkSystemClipboardAccess() { - checkPermission(SecurityConstants.ACCESS_CLIPBOARD_PERMISSION); + checkPermission(SecurityConstants.AWT.ACCESS_CLIPBOARD_PERMISSION); } /** @@ -1412,7 +1412,7 @@ class SecurityManager { * @see #checkPermission(java.security.Permission) checkPermission */ public void checkAwtEventQueueAccess() { - checkPermission(SecurityConstants.CHECK_AWT_EVENTQUEUE_PERMISSION); + checkPermission(SecurityConstants.AWT.CHECK_AWT_EVENTQUEUE_PERMISSION); } /* diff --git a/src/share/classes/java/lang/Short.java b/src/share/classes/java/lang/Short.java index a2d98b277ee2357b47360444953d4a7fc417d1f5..cf1551da8e5d46a6128b4c6f82b77799254753e3 100644 --- a/src/share/classes/java/lang/Short.java +++ b/src/share/classes/java/lang/Short.java @@ -383,7 +383,10 @@ public final class Short extends Number implements Comparable+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # Old rules, should the need arise. # No attempt is made to handle Newfoundland, since it cannot be expressed diff --git a/make/sun/javazic/tzdata/zone.tab b/make/sun/javazic/tzdata/zone.tab index 467367e2d72eea7c50cdcfdee0f522528f345496..2a323ebb90ef172802ae7845d2333b90b55edebe 100644 --- a/make/sun/javazic/tzdata/zone.tab +++ b/make/sun/javazic/tzdata/zone.tab @@ -21,6 +21,9 @@ # CA 95054 USA or visit www.sun.com if you need additional information or # have any questions. # +#+ * + * @param x the first {@code int} to compare + * @param y the second {@code int} to compare + * @return the value {@code 0} if {@code x == y}; + * a value less than {@code 0} if {@code x < y}; and + * a value greater than {@code 0} if {@code x > y} + * @since 1.7 + */ + public static int compare(int x, int y) { + return (x < y) ? -1 : ((x == y) ? 0 : 1); } diff --git a/src/share/classes/java/lang/Long.java b/src/share/classes/java/lang/Long.java index 58014997f35862cf6c189a0afba3faa8d8131300..c5fd7ee5e298a7de9e9fc8040c95353aba7dc17e 100644 --- a/src/share/classes/java/lang/Long.java +++ b/src/share/classes/java/lang/Long.java @@ -950,9 +950,25 @@ public final class Long extends Number implements Comparable+# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. # # TZ zone descriptions # @@ -123,7 +126,7 @@ BR -0640-06952 America/Eirunepe W Amazonas BR -0958-06748 America/Rio_Branco Acre BS +2505-07721 America/Nassau BT +2728+08939 Asia/Thimphu -BW -2545+02555 Africa/Gaborone +BW -2439+02555 Africa/Gaborone BY +5354+02734 Europe/Minsk BZ +1730-08812 America/Belize CA +4734-05243 America/St_Johns Newfoundland Time, including SE Labrador @@ -307,7 +310,7 @@ MY +0310+10142 Asia/Kuala_Lumpur peninsular Malaysia MY +0133+11020 Asia/Kuching Sabah & Sarawak MZ -2558+03235 Africa/Maputo NA -2234+01706 Africa/Windhoek -NC -2216+16530 Pacific/Noumea +NC -2216+16627 Pacific/Noumea NE +1331+00207 Africa/Niamey NF -2903+16758 Pacific/Norfolk NG +0627+00324 Africa/Lagos @@ -387,7 +390,7 @@ TK -0922-17114 Pacific/Fakaofo TL -0833+12535 Asia/Dili TM +3757+05823 Asia/Ashgabat TN +3648+01011 Africa/Tunis -TO -2110+17510 Pacific/Tongatapu +TO -2110-17510 Pacific/Tongatapu TR +4101+02858 Europe/Istanbul TT +1039-06131 America/Port_of_Spain TV -0831+17913 Pacific/Funafuti @@ -431,7 +434,7 @@ US +211825-1575130 Pacific/Honolulu Hawaii UY -3453-05611 America/Montevideo UZ +3940+06648 Asia/Samarkand west Uzbekistan UZ +4120+06918 Asia/Tashkent east Uzbekistan -VA +4154+01227 Europe/Vatican +VA +415408+0122711 Europe/Vatican VC +1309-06114 America/St_Vincent VE +1030-06656 America/Caracas VG +1827-06437 America/Tortola diff --git a/make/sun/jkernel/Makefile b/make/sun/jkernel/Makefile index 047efeae5aa3a7dc671b71bf53247ba46dc1b45c..97f2f38aca5e1080b8ee744d47bd6582c03bc9ed 100644 --- a/make/sun/jkernel/Makefile +++ b/make/sun/jkernel/Makefile @@ -35,10 +35,6 @@ include $(BUILDDIR)/common/Defs.gmk # _OPT = $(CC_HIGHEST_OPT) -# This re-directs all the class files to a separate location -CLASSDESTDIR = $(TEMPDIR)/classes - - # # Java source files # diff --git a/make/sun/net/FILES_java.gmk b/make/sun/net/FILES_java.gmk index 5082c3d370f152b5dca162ab8e1c724152a57ab6..19dd2d6d7f57330b1415b68dc8ff7160267ed218 100644 --- a/make/sun/net/FILES_java.gmk +++ b/make/sun/net/FILES_java.gmk @@ -86,9 +86,11 @@ FILES_java = \ sun/net/www/protocol/http/AuthCache.java \ sun/net/www/protocol/http/AuthCacheImpl.java \ sun/net/www/protocol/http/AuthCacheValue.java \ + sun/net/www/protocol/http/AuthScheme.java \ sun/net/www/protocol/http/BasicAuthentication.java \ sun/net/www/protocol/http/DigestAuthentication.java \ sun/net/www/protocol/http/NTLMAuthentication.java \ + sun/net/www/protocol/http/NTLMAuthenticationProxy.java \ sun/net/www/protocol/http/NegotiateAuthentication.java \ sun/net/www/protocol/http/NegotiatorImpl.java \ sun/net/www/protocol/http/NegotiateCallbackHandler.java \ @@ -123,8 +125,7 @@ FILES_java = \ sun/net/idn/UCharacterEnums.java \ sun/net/idn/UCharacterDirection.java \ sun/net/idn/StringPrepDataReader.java \ - sun/net/idn/StringPrep.java \ - sun/net/www/protocol/http/InMemoryCookieStore.java + sun/net/idn/StringPrep.java ifeq ($(PLATFORM), windows) FILES_java += sun/net/www/protocol/http/NTLMAuthSequence.java diff --git a/make/sun/security/Makefile b/make/sun/security/Makefile index 2b7cc6b2ab342719694df42a2015780f5c07fad8..92371cc60cbf5681f4434dbcb355ac8cafcc7117 100644 --- a/make/sun/security/Makefile +++ b/make/sun/security/Makefile @@ -60,8 +60,15 @@ ifeq ($(PLATFORM), windows) endif endif -SUBDIRS = ec other action util tools jgss krb5 smartcardio $(PKCS11) \ - $(JGSS_WRAPPER) $(MSCAPI) +# Build in-tree elliptic curve crypto provider only when +# DISABLE_INTREE_EC is not set +INTREE_EC = ec +ifdef DISABLE_INTREE_EC + INTREE_EC = +endif + +SUBDIRS = $(INTREE_EC) other action util tools jgss krb5 smartcardio \ + $(PKCS11) $(JGSS_WRAPPER) $(MSCAPI) all build clean clobber:: $(SUBDIRS-loop) diff --git a/make/sun/security/ec/Makefile b/make/sun/security/ec/Makefile index 297a2deab084778eb9f71507ecf69296fe50c012..53a3e3e9e51a16cd311deae0768090187ecb0219 100644 --- a/make/sun/security/ec/Makefile +++ b/make/sun/security/ec/Makefile @@ -24,7 +24,7 @@ # # -# Makefile for building sunec.jar and sunecc native library. +# Makefile for building sunec.jar and sunec native library. # # This file was derived from make/com/sun/crypto/provider/Makefile. # @@ -121,7 +121,15 @@ CLASSDESTDIR = $(TEMPDIR)/classes # AUTO_FILES_JAVA_DIRS = $(PKGDIR) -include $(BUILDDIR)/common/Classes.gmk +# +# Exclude the sources that get built by ../other/Makefile +# +AUTO_JAVA_PRUNE = \ + ECKeyFactory.java \ + ECParameters.java \ + ECPrivateKeyImpl.java \ + ECPublicKeyImpl.java \ + NamedCurve.java # # Some licensees do not get the native ECC sources, but we still need to @@ -130,7 +138,7 @@ include $(BUILDDIR)/common/Classes.gmk # NATIVE_ECC_AVAILABLE := $(shell \ - if [ -d $(SHARE_SRC)/native/$(PKGDIR) ] ; then \ + if [ -d $(SHARE_SRC)/native/$(PKGDIR)/impl ] ; then \ $(ECHO) true; \ else \ $(ECHO) false; \ @@ -138,7 +146,7 @@ NATIVE_ECC_AVAILABLE := $(shell \ ifeq ($(NATIVE_ECC_AVAILABLE), true) - LIBRARY = sunecc + LIBRARY = sunec # # Java files that define native methods @@ -166,12 +174,12 @@ ifeq ($(NATIVE_ECC_AVAILABLE), true) # vpath %.cpp $(SHARE_SRC)/native/$(PKGDIR) - vpath %.c $(SHARE_SRC)/native/$(PKGDIR) + vpath %.c $(SHARE_SRC)/native/$(PKGDIR)/impl # # Find include files # - OTHER_INCLUDES += -I$(SHARE_SRC)/native/$(PKGDIR) + OTHER_INCLUDES += -I$(SHARE_SRC)/native/$(PKGDIR)/impl # # Compiler flags @@ -191,6 +199,10 @@ ifeq ($(NATIVE_ECC_AVAILABLE), true) include $(BUILDDIR)/common/Library.gmk +else # NATIVE_ECC_AVAILABLE + + include $(BUILDDIR)/common/Classes.gmk + endif # NATIVE_ECC_AVAILABLE # diff --git a/make/sun/security/other/Makefile b/make/sun/security/other/Makefile index 3f120fa473f18e04df7adabf9d2771dcffcd9384..2722fbc32cd643a2aa2fc67bbca8319da84fc6a6 100644 --- a/make/sun/security/other/Makefile +++ b/make/sun/security/other/Makefile @@ -44,6 +44,16 @@ AUTO_FILES_JAVA_DIRS = \ sun/security/x509 \ com/sun/net/ssl/internal/ssl +# +# EC classes used by the packages above +# +FILES_java += \ + sun/security/ec/ECKeyFactory.java \ + sun/security/ec/ECParameters.java \ + sun/security/ec/ECPrivateKeyImpl.java \ + sun/security/ec/ECPublicKeyImpl.java \ + sun/security/ec/NamedCurve.java + # # Rules # diff --git a/make/tools/Makefile b/make/tools/Makefile index badfa687a31bf5d44ab515ce7cd4badb73e68c82..1fffa1bcaebc72f995b8867d2e9bb23b1cfbecdd 100644 --- a/make/tools/Makefile +++ b/make/tools/Makefile @@ -54,7 +54,7 @@ SUBDIRS = \ CharsetMapping ifndef DISABLE_NIMBUS - SUBDIRS += swing-nimbus + SUBDIRS += generate_nimbus endif all build clean clobber:: diff --git a/make/tools/freetypecheck/Makefile b/make/tools/freetypecheck/Makefile index 94c983565aceff1f91dbd4b96834ba0cb0c651c3..23161969558c231326346e20d5a57cbf98820c75 100644 --- a/make/tools/freetypecheck/Makefile +++ b/make/tools/freetypecheck/Makefile @@ -28,16 +28,21 @@ BUILDDIR = ../.. include $(BUILDDIR)/common/Defs.gmk # Default name -FT_TEST = $(BUILDTOOLBINDIR)/freetype_versioncheck$(EXE_SUFFIX) +PROGRAM = freetype_versioncheck +FT_OBJ = $(BUILDTOOLBINDIR)/$(PROGRAM).$(OBJECT_SUFFIX) +FT_TEST = $(BUILDTOOLBINDIR)/$(PROGRAM)$(EXE_SUFFIX) # Used on openjdk only ifeq ($(OPENJDK),true) # Start with CFLAGS (which gets us the required -xarch setting on solaris) ifeq ($(PLATFORM), windows) - FT_OPTIONS = /nologo $(CC_OBJECT_OUTPUT_FLAG)$(TEMPDIR) + FT_OPTIONS = /nologo /c FREETYPE_DLL = $(FREETYPE_LIB_PATH)/freetype.dll FT_LD_OPTIONS = $(FREETYPE_LIB_PATH)/freetype.lib +ifdef MT + FT_LD_OPTIONS += /manifest +endif else FT_OPTIONS = $(CFLAGS) FT_LD_OPTIONS = -L$(FREETYPE_LIB_PATH) @@ -55,15 +60,22 @@ FT_LD_OPTIONS += $(LFLAGS_$(COMPILER_VERSION)) # Create test program all: $(FT_TEST) - @$(FT_TEST) + $(FT_TEST) # On windows we need to copy dll to test dir to ensure it will be found # at runtime $(FT_TEST): freetypecheck.c - @$(prep-target) - @$(CC) $(FT_OPTIONS) $(CC_PROGRAM_OUTPUT_FLAG)$@ $< $(FT_LD_OPTIONS) + $(prep-target) ifeq ($(PLATFORM), windows) - @$(CP) $(FREETYPE_DLL) `dirname $@` + $(CC) $(FT_OPTIONS) $(CC_OBJECT_OUTPUT_FLAG)$(FT_OBJ) $< + $(LINK) $(FT_LD_OPTIONS) /OUT:$(FT_TEST) $(FT_OBJ) + $(CP) $(FREETYPE_DLL) $(@D)/ +ifdef MT + $(CP) $(MSVCRNN_DLL_PATH)/$(MSVCRNN_DLL) $(@D)/ + $(MT) /manifest $(FT_TEST).manifest /outputresource:$(FT_TEST);#1 +endif +else + @$(CC) $(FT_OPTIONS) $(CC_PROGRAM_OUTPUT_FLAG)$@ $< $(FT_LD_OPTIONS) endif else diff --git a/make/tools/freetypecheck/freetypecheck.c b/make/tools/freetypecheck/freetypecheck.c index 3f900a840a9afcebd62ab2c8cb271e87eaabdf30..71d32022beecdc2211bc0522980a48e8541216a5 100644 --- a/make/tools/freetypecheck/freetypecheck.c +++ b/make/tools/freetypecheck/freetypecheck.c @@ -32,6 +32,45 @@ #include "ft2build.h" #include FT_FREETYPE_H +#ifdef _MSC_VER +#if _MSC_VER > 1400 + +/* + * When building for Microsoft Windows, your program has a dependency + * on msvcr??.dll. + * + * When using Visual Studio 2005 or later, that must be recorded in + * the+ * + * @param x the first {@code char} to compare + * @param y the second {@code char} to compare + * @return the value {@code 0} if {@code x == y}; + * a value less than {@code 0} if {@code x < y}; and + * a value greater than {@code 0} if {@code x > y} + * @since 1.7 + */ + public static int compare(char x, char y) { + return x - y; } /** diff --git a/src/share/classes/java/lang/Class.java b/src/share/classes/java/lang/Class.java index ddf5763179019e8e521c68bb76252f55a3328730..46414ad849164d034cbebf9d8de9a8cc64bbd090 100644 --- a/src/share/classes/java/lang/Class.java +++ b/src/share/classes/java/lang/Class.java @@ -565,8 +565,9 @@ public final * represented by this object. */ public String getName() { + String name = this.name; if (name == null) - name = getName0(); + this.name = name = getName0(); return name; } diff --git a/src/share/classes/java/lang/ClassLoader.java b/src/share/classes/java/lang/ClassLoader.java index 33236c00ff6c4e826650dfe11e66203ede8bb32c..323240b395c0f491ba40359ca3f729bd87892f5a 100644 --- a/src/share/classes/java/lang/ClassLoader.java +++ b/src/share/classes/java/lang/ClassLoader.java @@ -51,6 +51,7 @@ import java.util.Vector; import java.util.Hashtable; import java.util.WeakHashMap; import java.util.concurrent.ConcurrentHashMap; +import sun.misc.BootClassLoaderHook; import sun.misc.ClassFileTransformer; import sun.misc.CompoundEnumeration; import sun.misc.Resource; @@ -58,7 +59,6 @@ import sun.misc.URLClassPath; import sun.misc.VM; import sun.reflect.Reflection; import sun.security.util.SecurityConstants; -import sun.jkernel.DownloadManager; /** * A class loader is an object that is responsible for loading classes. The @@ -364,16 +364,28 @@ public abstract class ClassLoader { // First, check if the class has already been loaded Class c = findLoadedClass(name); if (c == null) { + long t0 = System.nanoTime(); try { if (parent != null) { c = parent.loadClass(name, false); } else { - c = findBootstrapClass0(name); + c = findBootstrapClassOrNull(name); } } catch (ClassNotFoundException e) { + // ClassNotFoundException thrown if class not found + // from the non-null parent class loader + } + + if (c == null) { // If still not found, then invoke findClass in order // to find the class. + long t1 = System.nanoTime(); c = findClass(name); + + // this is the defining class loader; record the stats + sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0); + sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1); + sun.misc.PerfCounter.getFindClasses().increment(); } } if (resolve) { @@ -987,21 +999,28 @@ public abstract class ClassLoader { if (system == null) { if (!checkName(name)) throw new ClassNotFoundException(name); - return findBootstrapClass(name); + Class cls = findBootstrapClass(name); + if (cls == null) { + throw new ClassNotFoundException(name); + } + return cls; } return system.loadClass(name); } - private Class findBootstrapClass0(String name) - throws ClassNotFoundException + /** + * Returns a class loaded by the bootstrap class loader; + * or return null if not found. + */ + private Class findBootstrapClassOrNull(String name) { - if (!checkName(name)) - throw new ClassNotFoundException(name); + if (!checkName(name)) return null; + return findBootstrapClass(name); } - private native Class findBootstrapClass(String name) - throws ClassNotFoundException; + // return null if not found + private native Class findBootstrapClass(String name); /** * Returns the class with the given binary name if this @@ -1250,21 +1269,7 @@ public abstract class ClassLoader { * Find resources from the VM's built-in classloader. */ private static URL getBootstrapResource(String name) { - try { - // If this is a known JRE resource, ensure that its bundle is - // downloaded. If it isn't known, we just ignore the download - // failure and check to see if we can find the resource anyway - // (which is possible if the boot class path has been modified). - if (sun.misc.VM.isBootedKernelVM()) { - sun.jkernel.DownloadManager.getBootClassPathEntryForResource( - name); - } - } catch (NoClassDefFoundError e) { - // This happens while Java itself is being compiled; DownloadManager - // isn't accessible when this code is first invoked. It isn't an - // issue, as if we can't find DownloadManager, we can safely assume - // that additional code is not available for download. - } + BootClassLoaderHook.preLoadResource(name); URLClassPath ucp = getBootstrapClassPath(); Resource res = ucp.getResource(name); return res != null ? res.getURL() : null; @@ -1781,24 +1786,7 @@ public abstract class ClassLoader { // Invoked in the java.lang.Runtime class to implement load and loadLibrary. static void loadLibrary(Class fromClass, String name, boolean isAbsolute) { - try { - if (VM.isBootedKernelVM() && !DownloadManager.isJREComplete() && - !DownloadManager.isCurrentThreadDownloading()) { - DownloadManager.downloadFile("bin/" + - System.mapLibraryName(name)); - // it doesn't matter if the downloadFile call returns false -- - // it probably just means that this is a user library, as - // opposed to a JRE library - } - } catch (IOException e) { - throw new UnsatisfiedLinkError("Error downloading library " + - name + ": " + e); - } catch (NoClassDefFoundError e) { - // This happens while Java itself is being compiled; DownloadManager - // isn't accessible when this code is first invoked. It isn't an - // issue, as if we can't find DownloadManager, we can safely assume - // that additional code is not available for download. - } + BootClassLoaderHook.preLoadLibrary(name); ClassLoader loader = (fromClass == null) ? null : fromClass.getClassLoader(); if (sys_paths == null) { @@ -2186,3 +2174,4 @@ class SystemClassLoaderAction return sys; } } + diff --git a/src/share/classes/java/lang/Integer.java b/src/share/classes/java/lang/Integer.java index a66a8fae792c27abc67035f81c4db4c56f4339c5..1c457c548e71f721ccbaa811c768819ee396c67f 100644 --- a/src/share/classes/java/lang/Integer.java +++ b/src/share/classes/java/lang/Integer.java @@ -1010,9 +1010,25 @@ public final class Integer extends Number implements Comparable.exe.manifest file. + * + * Reference: + * C:/Program Files/Microsoft SDKs/Windows/v6.1/include/crtdefs.h + */ +#include +#ifdef _M_IX86 + +#pragma comment(linker,"/manifestdependency:\"type='win32' " \ + "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' " \ + "version='" _CRT_ASSEMBLY_VERSION "' " \ + "processorArchitecture='x86' " \ + "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") + +#endif /* _M_IX86 */ + +//This may not be necessary yet for the Windows 64-bit build, but it +//will be when that build environment is updated. Need to test to see +//if it is harmless: +#ifdef _M_AMD64 + +#pragma comment(linker,"/manifestdependency:\"type='win32' " \ + "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' " \ + "version='" _CRT_ASSEMBLY_VERSION "' " \ + "processorArchitecture='amd64' " \ + "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") + +#endif /* _M_AMD64 */ +#endif /* _MSC_VER > 1400 */ +#endif /* _MSC_VER */ + #define QUOTEMACRO(x) QUOTEME(x) #define QUOTEME(x) #x diff --git a/make/javax/swing/plaf/nimbus/Makefile b/make/tools/generate_nimbus/Makefile similarity index 53% rename from make/javax/swing/plaf/nimbus/Makefile rename to make/tools/generate_nimbus/Makefile index ed59f137e5379b64d7e73d3a8a5c1ff271fa086d..ed531e5c84172ad11a288eb06571c95351d96afd 100644 --- a/make/javax/swing/plaf/nimbus/Makefile +++ b/make/tools/generate_nimbus/Makefile @@ -1,5 +1,5 @@ # -# Copyright 1998-2007 Sun Microsystems, Inc. All Rights Reserved. +# 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 @@ -23,38 +23,50 @@ # have any questions. # -BUILDDIR = ../../../.. -PACKAGE = javax.swing.plaf.nimbus -PRODUCT = com -SWING_SRC = $(SHARE_SRC)/classes/javax/swing +# +# Makefile for building the Nimbus generator +# + +BUILDDIR = ../.. +PACKAGE = build.tools.generatenimbus +PRODUCT = tools +PROGRAM = generatenimbus include $(BUILDDIR)/common/Defs.gmk +BUILDTOOL_SOURCE_ROOT = $(BUILDDIR)/tools/src +BUILDTOOL_MAIN = $(PKGDIR)/Generator.java + + # # Files # -NIMBUS_PKG = javax/swing/plaf/nimbus -NIMBUS_COMPAT_PKG = com/sun/java/swing/plaf/nimbus -NIMBUS_GENSRC_DIR = $(GENSRCDIR)/$(NIMBUS_PKG) -NIMBUS_SKIN_FILE = $(SHARE_SRC)/classes/$(NIMBUS_PKG)/skin.laf -NIMBUS_GENERATOR_JAR = $(BUILDTOOLJARDIR)/nimbus_generator.jar -AUTO_FILES_JAVA_DIRS = $(NIMBUS_PKG) $(NIMBUS_COMPAT_PKG) +SOURCE_FILES = Generator.java \ + ObjectFactory.java \ + Paint.java \ + SynthModel.java \ + UIDefault.java \ + UIStyle.java +TEMPLATE_FILES = Defaults.template \ + PainterImpl.template \ + StateImpl.template +TEMPLATE_DEST = $(BUILDTOOLCLASSDIR)/$(PKGDIR)/resources # # Rules # -CLASSES_INIT = $(NIMBUS_GENSRC_DIR) -include $(BUILDDIR)/common/Classes.gmk +all: $(TEMPLATE_DEST) $(BUILDTOOL_JAR_FILE) + +include $(BUILDDIR)/common/BuildToolJar.gmk + +$(TEMPLATE_DEST): $(TEMPLATE_FILES:%=$(SHARE_SRC)/classes/javax/swing/plaf/nimbus/%) + $(MKDIR) -p $@ + $(RM) $(TEMPLATE_FILES:%=$@/%) + $(CP) $^ $@ -$(NIMBUS_GENSRC_DIR): $(NIMBUS_SKIN_FILE) $(NIMBUS_GENERATOR_JAR) - @$(ECHO) "Generating Nimbus source files:" - $(BOOT_JAVA_CMD) -jar $(NIMBUS_GENERATOR_JAR) \ - -skinFile $(NIMBUS_SKIN_FILE) \ - -buildDir $(GENSRCDIR) -srcDir $(GENSRCDIR) \ - -packagePrefix $(PACKAGE) -lafName Nimbus - @$(ECHO) "Finished generating Nimbus source files" +BUILDTOOL_MAIN_SOURCE_FILE = $(SOURCE_FILES:%=$(BUILDTOOL_SOURCE_ROOT)/$(PKGDIR)/%) clean clobber:: - $(RM) -r $(NIMBUS_GENSRC_DIR) + $(RM) -r $(TEMPLATE_DEST) diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/Generator.java b/make/tools/src/build/tools/generatenimbus/Generator.java similarity index 53% rename from make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/Generator.java rename to make/tools/src/build/tools/generatenimbus/Generator.java index 6ab4b87d18ad38d9f28eb5895ed16b9be4478094..a345305a88d7c7bd9ecb38f4e1db3b9567c5472c 100644 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/Generator.java +++ b/make/tools/src/build/tools/generatenimbus/Generator.java @@ -22,20 +22,13 @@ * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ -package org.jdesktop.synthdesigner.generator; +package build.tools.generatenimbus; -import static org.jdesktop.synthdesigner.generator.TemplateWriter.read; -import static org.jdesktop.synthdesigner.generator.TemplateWriter.writeSrcFile; -import org.jdesktop.synthdesigner.synthmodel.SynthModel; -import org.jibx.runtime.BindingDirectory; -import org.jibx.runtime.IBindingFactory; -import org.jibx.runtime.IUnmarshallingContext; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; +import java.io.*; import java.util.HashMap; import java.util.Map; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.Unmarshaller; /** * Generates the various Java artifacts based on a SynthModel. @@ -51,12 +44,12 @@ import java.util.Map; * @author Jasper Potts */ public class Generator { + private static Generator instance; + /** A map of variables that are used for variable substitution in the template files. */ private Map variables; - private boolean full = false; private File buildPackageRoot; - private File srcPackageRoot; private String packageNamePrefix; private String lafName; private SynthModel model; @@ -68,7 +61,7 @@ public class Generator { * * @param args The commandline arguments */ - public static void main(String[] args) { + public static void main(String[] args) throws Exception { if (args.length == 0 || (args.length % 2) != 0) { System.out.println("Usage: generator [-options]\n" + " -full True if we should build the whole LAF or false for building just states and painters.\n" + @@ -76,9 +69,6 @@ public class Generator { " -buildDir The directory beneath which the build-controlled artifacts (such as the Painters) should\n" + " be placed. This is the root directory beneath which the necessary packages and source\n" + " files will be created.\n" + - " -srcDir The directory beneath which the normal user-controlled artifacts (such as the core\n" + - " LookAndFeel file) should be placed. These are one-time generated files. This is the root\n" + - " directory beneath which the necessary packages and source files will be created.\n" + " -resourcesDir The resources directory containing templates and images.\n" + " -packagePrefix The package name associated with this synth look and feel. For example,\n" + " \"org.mypackage.mylaf\"\n" + @@ -87,7 +77,6 @@ public class Generator { boolean full = false; File skinFile = new File(System.getProperty("user.dir")); File buildDir = new File(System.getProperty("user.dir")); - File srcDir = new File(System.getProperty("user.dir")); File resourcesDir = new File(System.getProperty("user.dir")); String packagePrefix = "org.mypackage.mylaf"; String lafName = "MyLAF"; @@ -100,8 +89,6 @@ public class Generator { skinFile = new File(value); } else if ("-builddir".equals(key)) { buildDir = new File(value); - } else if ("-srcdir".equals(key)) { - srcDir = new File(value); } else if ("-resourcesdir".equals(key)) { resourcesDir = new File(value); } else if ("-packageprefix".equals(key)) { @@ -114,25 +101,15 @@ public class Generator { System.out.println(" full :" + full); System.out.println(" skinFile :" + skinFile.getAbsolutePath()); System.out.println(" buildDir :" + buildDir.getAbsolutePath()); - System.out.println(" srcDir :" + srcDir.getAbsolutePath()); System.out.println(" resourcesDir :" + resourcesDir.getAbsolutePath()); System.out.println(" packagePrefix :" +packagePrefix); System.out.println(" lafName :" +lafName); - try { - // LOAD SKIN MODEL - IBindingFactory bindingFactory = BindingDirectory.getFactory(SynthModel.class); - IUnmarshallingContext mctx = bindingFactory.createUnmarshallingContext(); - mctx.setDocument(new FileInputStream(skinFile), "UTF-8"); - // pass resources directory in as user context so it can be used in SynthModel preSet - mctx.setUserContext(resourcesDir); - SynthModel model = (SynthModel) mctx.unmarshalElement(); - // create and run generator - Generator generator = new Generator(full, buildDir, srcDir, packagePrefix, lafName, model); - generator.generate(); - } catch (Exception e) { - System.err.println("Error loading skin and generating java src:"); - e.printStackTrace(); - } + + JAXBContext ctx = JAXBContext.newInstance("build.tools.generatenimbus"); + Unmarshaller u = ctx.createUnmarshaller(); + SynthModel model = (SynthModel) u.unmarshal(skinFile); + Generator.init(full, buildDir, packagePrefix, lafName, model); + Generator.getInstance().generate(); } } @@ -152,8 +129,8 @@ public class Generator { * @param lafName The name of the laf, such as MyLAF. * @param model The actual SynthModel to base these generated files on. */ - public Generator(boolean full, File buildDir, File srcDir, String packageNamePrefix, String lafName, - SynthModel model) { + private Generator(boolean full, File buildDir, + String packageNamePrefix, String lafName, SynthModel model) { this.full = full; //validate the input variables if (packageNamePrefix == null) { @@ -162,9 +139,6 @@ public class Generator { if (buildDir == null) { throw new IllegalArgumentException("You must specify the build directory"); } - if (srcDir == null) { - throw new IllegalArgumentException("You must specify the source directory"); - } if (model == null) { throw new IllegalArgumentException("You must specify the SynthModel"); } @@ -183,8 +157,6 @@ public class Generator { //org.mypackage.mylaf subdirectories) buildPackageRoot = new File(buildDir, packageNamePrefix.replaceAll("\\.", "\\/")); buildPackageRoot.mkdirs(); - srcPackageRoot = new File(srcDir, packageNamePrefix.replaceAll("\\.", "\\/")); - srcPackageRoot.mkdirs(); //save the variables this.packageNamePrefix = packageNamePrefix; @@ -192,98 +164,104 @@ public class Generator { this.model = model; } - public void generate() { - //Generate the one-time files. If these files already exist, skip the - //ones that exist and create the missing ones. Register warnings for the - //already existing files. - - //TODO Skip existing files, send warnings, etc. - if (full) { - try { - //create the LookAndFeel file - String template = read("resources/LookAndFeel.template"); - writeSrcFile(template, variables, new File(srcPackageRoot, lafName + "LookAndFeel.java")); - } catch (IOException e) { - e.printStackTrace(); - } - } - //create the painters and such. - regenerate(); + public static void init(boolean full, File buildDir, + String packageNamePrefix, String lafName, SynthModel model) { + instance = new Generator(full, buildDir, packageNamePrefix, lafName, model); + model.initStyles(); } - public void regenerate() { - try { - if (full) { - //first, create the AbstractRegionPainter.java file. - String template = read("resources/AbstractRegionPainter.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "AbstractRegionPainter.java")); - - //write out BlendingMode.java - template = read("resources/BlendingMode.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "BlendingMode.java")); - - //create the SynthPainterImpl class - template = read("resources/SynthPainterImpl.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "SynthPainterImpl.java")); + public static Generator getInstance() { + return instance; + } - //create the IconImpl class - template = read("resources/IconImpl.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, lafName + "Icon.java")); + public static Map getVariables() { + return new HashMap (instance.variables); + } - //create the StyleImpl class - template = read("resources/StyleImpl.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, lafName + "Style.java")); + public void generate() { + if (full) { + //create the LookAndFeel file + writeSrcFileImpl("LookAndFeel", variables, lafName + "LookAndFeel"); - //write out Effect.java - template = read("resources/Effect.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "Effect.java")); + writeSrcFileImpl("AbstractRegionPainter", variables); + writeSrcFileImpl("BlendingMode", variables); + writeSrcFileImpl("SynthPainterImpl", variables); + writeSrcFileImpl("IconImpl", variables, lafName + "Icon.java"); + writeSrcFileImpl("StyleImpl", variables, lafName + "Style.java"); + writeSrcFileImpl("Effect", variables); + writeSrcFileImpl("EffectUtils", variables); + writeSrcFileImpl("ShadowEffect", variables); + writeSrcFileImpl("DropShadowEffect", variables); + writeSrcFileImpl("InnerShadowEffect", variables); + writeSrcFileImpl("InnerGlowEffect", variables); + writeSrcFileImpl("OuterGlowEffect", variables); + writeSrcFileImpl("State", variables); + writeSrcFileImpl("ImageCache", variables); + writeSrcFileImpl("ImageScalingHelper", variables); + } + //next, populate the first set of ui defaults based on what is in the + //various palettes of the synth model + StringBuilder defBuffer = new StringBuilder(); + StringBuilder styleBuffer = new StringBuilder(); + model.write(defBuffer, styleBuffer, packageNamePrefix); - //write out EffectUtils.java - template = read("resources/EffectUtils.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "EffectUtils.java")); + Map vars = getVariables(); + vars.put("UI_DEFAULT_INIT", defBuffer.toString()); + vars.put("STYLE_INIT", styleBuffer.toString()); + writeSrcFile("Defaults", vars, lafName + "Defaults"); + } - //write out ShadowEffect.java - template = read("resources/ShadowEffect.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "ShadowEffect.java")); + private void writeSrcFileImpl(String name, Map variables) { + writeSrcFileImpl(name, variables, name); + } - //write out DropShadowEffect.java - template = read("resources/DropShadowEffect.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "DropShadowEffect.java")); + private void writeSrcFileImpl(String templateName, + Map variables, String outputName) { + PrintWriter out = null; + try { + InputStream stream = getClass().getResourceAsStream( + "resources/" + templateName + ".template"); + TemplateReader in = new TemplateReader(variables, stream); - //write out InnerShadowEffect.java - template = read("resources/InnerShadowEffect.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "InnerShadowEffect.java")); + out = new PrintWriter(new File(buildPackageRoot, outputName + ".java")); + String line = in.readLine(); + while (line != null) { + out.println(line); + line = in.readLine(); + } + } catch (IOException e) { + throw new RuntimeException("IOException in writer", e); + } finally { + if (out != null) out.close(); + } + } - //write out InnerGlowEffect.java - template = read("resources/InnerGlowEffect.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "InnerGlowEffect.java")); + public static void writeSrcFile(String templateName, + Map variables, String outputName) { + instance.writeSrcFileImpl(templateName, variables, outputName); + } - //write out OuterGlowEffect.java - template = read("resources/OuterGlowEffect.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "OuterGlowEffect.java")); + /** A BufferedReader implementation that automatically performs + * string replacements as needed. + */ + private static final class TemplateReader extends BufferedReader { + private Map variables; - //write out State.java - template = read("resources/State.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "State.java")); + TemplateReader(Map variables, InputStream template) { + super(new InputStreamReader(template)); + this.variables = variables; + } - template = read("resources/ImageCache.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "ImageCache.java")); + @Override public String readLine() throws IOException { + return substituteVariables(super.readLine()); + } - template = read("resources/ImageScalingHelper.template"); - writeSrcFile(template, variables, new File(buildPackageRoot, "ImageScalingHelper.java")); + private String substituteVariables(String input) { + if (input == null) return null; + for (Map.Entry variable : variables.entrySet()) { + input = input.replace("${" + variable.getKey() + "}", variable.getValue()); } - //next, populate the first set of ui defaults based on what is in the - //various palettes of the synth model - StringBuilder uiDefaultInit = new StringBuilder(); - StringBuilder styleInit = new StringBuilder(); - DefaultsGenerator.generateDefaults(uiDefaultInit, styleInit, model, variables, packageNamePrefix, - buildPackageRoot); - variables.put("UI_DEFAULT_INIT", uiDefaultInit.toString()); - variables.put("STYLE_INIT", styleInit.toString()); - writeSrcFile(read("resources/Defaults.template"), variables, - new File(buildPackageRoot, lafName + "Defaults.java")); - } catch (IOException e) { - e.printStackTrace(); + return input; } } } diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/InnerGlowEffect.java b/make/tools/src/build/tools/generatenimbus/ObjectFactory.java similarity index 57% rename from make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/InnerGlowEffect.java rename to make/tools/src/build/tools/generatenimbus/ObjectFactory.java index ea0b2d153597e873477b1975fd383b2a6d0d8a19..1fdd7cd972c406fa34eab85e1654c290f6428785 100644 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/InnerGlowEffect.java +++ b/make/tools/src/build/tools/generatenimbus/ObjectFactory.java @@ -22,34 +22,41 @@ * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ -package org.jdesktop.swingx.designer.effects; -import org.jdesktop.swingx.designer.paint.Matte; +package build.tools.generatenimbus; + +import javax.xml.bind.annotation.XmlRegistry; -import javax.swing.UIDefaults; -import java.awt.Color; /** - * InnerGlowEffect + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the test package. + * An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. * - * @author Created by Jasper Potts (Jun 21, 2007) */ -public class InnerGlowEffect extends InnerShadowEffect { - - protected InnerGlowEffect() { - distance = 0; - } +@XmlRegistry +public class ObjectFactory { - public InnerGlowEffect(UIDefaults uiDefaults) { - color = new Matte(new Color(255, 255, 211), uiDefaults); + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: test + * + */ + public ObjectFactory() { } /** - * Get the display name for this effect + * Create an instance of {@link SynthModel } * - * @return The user displayable name */ - public String getDisplayName() { - return "Inner Glow"; + public SynthModel createSynthModel() { + return new SynthModel(); } } diff --git a/make/tools/src/build/tools/generatenimbus/Paint.java b/make/tools/src/build/tools/generatenimbus/Paint.java new file mode 100644 index 0000000000000000000000000000000000000000..85678410affb35e2a3780b42e4ac6991a086d813 --- /dev/null +++ b/make/tools/src/build/tools/generatenimbus/Paint.java @@ -0,0 +1,181 @@ +/* + * Copyright 2002-2007 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.generatenimbus; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; + +public abstract class Paint { +} + +class Matte extends Paint { + @XmlAttribute private int red; + @XmlAttribute private int green; + @XmlAttribute private int blue; + @XmlAttribute private int alpha; + + @XmlAttribute private String uiDefaultParentName = null; + @XmlAttribute private float hueOffset = 0; + @XmlAttribute private float saturationOffset = 0; + @XmlAttribute private float brightnessOffset = 0; + @XmlAttribute private int alphaOffset = 0; + + @XmlAttribute private String componentPropertyName = null; + public String getComponentPropertyName() { return componentPropertyName; } + + @XmlAttribute private boolean uiResource = true; + + public boolean isAbsolute() { + return uiDefaultParentName == null; + } + + public String getDeclaration() { + if (isAbsolute()) { + return String.format("new Color(%d, %d, %d, %d)", + red, green, blue, alpha); + } else { + return String.format("decodeColor(\"%s\", %sf, %sf, %sf, %d)", + uiDefaultParentName, String.valueOf(hueOffset), + String.valueOf(saturationOffset), + String.valueOf(brightnessOffset), alphaOffset); + } + } + + public String write() { + if (isAbsolute()) { + return String.format("%s, %s, %s, %s", red, green, blue, alpha); + } else { + String s = String.format("\"%s\", %sf, %sf, %sf, %d", + uiDefaultParentName, String.valueOf(hueOffset), + String.valueOf(saturationOffset), + String.valueOf(brightnessOffset), alphaOffset); + if (! uiResource) { + s += ", false"; + } + return s; + } + } + + public ComponentColor createComponentColor(String variableName) { + return new ComponentColor(componentPropertyName, variableName, + saturationOffset, brightnessOffset, alphaOffset); + } +} + +class ComponentColor { + private String propertyName; + private String defaultColorVariableName; + private float saturationOffset = 0, brightnessOffset = 0; + private int alphaOffset = 0; + + ComponentColor(String propertyName, + String defaultColorVariableName, + float saturationOffset, + float brightnessOffset, + int alphaOffset) { + this.propertyName = propertyName; + this.defaultColorVariableName = defaultColorVariableName; + this.saturationOffset = saturationOffset; + this.brightnessOffset = brightnessOffset; + this.alphaOffset = alphaOffset; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + ComponentColor c = (ComponentColor) o; + if (alphaOffset != c.alphaOffset) { + return false; + } + if (Float.compare(saturationOffset, c.saturationOffset) != 0) { + return false; + } + if (Float.compare(brightnessOffset, c.brightnessOffset) != 0) { + return false; + } + if (defaultColorVariableName != null ? !defaultColorVariableName.equals(c.defaultColorVariableName) : c.defaultColorVariableName != null) { + return false; + } + if (propertyName != null ? !propertyName.equals(c.propertyName) : c.propertyName != null) { + return false; + } + return true; + } + + @Override + public int hashCode() { + int hash = 5; + hash = 61 * hash + (this.propertyName != null ? this.propertyName.hashCode() : 0); + hash = 61 * hash + (this.defaultColorVariableName != null ? this.defaultColorVariableName.hashCode() : 0); + hash = 61 * hash + Float.floatToIntBits(this.saturationOffset); + hash = 61 * hash + Float.floatToIntBits(this.brightnessOffset); + hash = 61 * hash + this.alphaOffset; + return hash; + } + + public void write(StringBuilder sb) { + sb.append(" getComponentColor(c, \""). + append(propertyName).append("\", "). + append(defaultColorVariableName).append(", "). + append(saturationOffset).append("f, "). + append(brightnessOffset).append("f, "). + append(alphaOffset); + } +} + +class GradientStop { + @XmlAttribute private float position; + public float getPosition() { return position; } + + @XmlAttribute private float midpoint; + public float getMidpoint() { return midpoint; } + + @XmlElement private Matte matte; + public Matte getColor() { return matte; } +} + +class AbstractGradient extends Paint { + public static enum CycleMethod { + NO_CYCLE, REFLECT, REPEAT + } + + @XmlElement(name="stop") private ArrayList
- * - *stops; + public List getStops() { return stops; } +} + +class Gradient extends AbstractGradient { +} + +class RadialGradient extends AbstractGradient { +} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/PainterGenerator.java b/make/tools/src/build/tools/generatenimbus/PainterGenerator.java similarity index 52% rename from make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/PainterGenerator.java rename to make/tools/src/build/tools/generatenimbus/PainterGenerator.java index 781fb21ba933ecee9628d75b6210a27147def150..69821862e96930b7bcf74c6ebd22e9dc8971f90d 100644 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/PainterGenerator.java +++ b/make/tools/src/build/tools/generatenimbus/PainterGenerator.java @@ -22,49 +22,15 @@ * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ -package org.jdesktop.synthdesigner.generator; - -import org.jdesktop.swingx.designer.BezierControlPoint; -import org.jdesktop.swingx.designer.Canvas; -import org.jdesktop.swingx.designer.EllipseShape; -import org.jdesktop.swingx.designer.Layer; -import org.jdesktop.swingx.designer.PaintedShape; -import org.jdesktop.swingx.designer.PathShape; -import org.jdesktop.swingx.designer.RectangleShape; -import org.jdesktop.swingx.designer.SimpleShape; -import org.jdesktop.swingx.designer.TemplateLayer; -import org.jdesktop.swingx.designer.paint.Gradient; -import org.jdesktop.swingx.designer.paint.Matte; -import org.jdesktop.swingx.designer.paint.PaintModel; -import org.jdesktop.swingx.designer.paint.RadialGradient; -import org.jdesktop.swingx.designer.paint.GradientStop; -import org.jdesktop.swingx.designer.paint.AbstractGradient; -import static org.jdesktop.synthdesigner.generator.GeneratorUtils.makePretty; -import static org.jdesktop.synthdesigner.generator.GeneratorUtils.toClassName; -import static org.jdesktop.synthdesigner.generator.GeneratorUtils.toConstantName; -import static org.jdesktop.synthdesigner.generator.TemplateWriter.read; -import static org.jdesktop.synthdesigner.generator.TemplateWriter.writeSrcFile; -import org.jdesktop.synthdesigner.synthmodel.UIIconRegion; -import org.jdesktop.synthdesigner.synthmodel.UIRegion; -import org.jdesktop.synthdesigner.synthmodel.UIState; - -import java.awt.*; +package build.tools.generatenimbus; + import java.awt.geom.Point2D; -import java.beans.Beans; -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Method; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import javax.swing.JComponent; -import javax.swing.SwingUtilities; -import javax.swing.JList; -import javax.swing.JTable; -import javax.swing.text.JTextComponent; + /** * PainterGenerator - Class for generating Painter class java source from a Canvas @@ -91,22 +57,6 @@ import javax.swing.text.JTextComponent; * @author Jasper Potts */ public class PainterGenerator { - private static String painterImplTemplate; - private static String getPainterImplTemplate() { - if (painterImplTemplate == null) { - //load the painter template file into an in-memory string to improve performance - //when generating a lot of classes - try { - painterImplTemplate = read("resources/PainterImpl.template"); - } catch (IOException e) { - System.err.println("Failed to read template files."); - throw new RuntimeException(e); - } - } - return painterImplTemplate; - } - - //a handful of counters, incremented whenever the associated object type is encounted. //These counters form the basis of the field and method suffixes. //These are all 1 based, because I felt like it :-) @@ -170,10 +120,8 @@ public class PainterGenerator { private void generate(UIRegion r) { for (UIState state : r.getBackgroundStates()) { - System.out.println("------>" + state.getName()); - Canvas canvas = state.getCanvas(); - String type = r instanceof UIIconRegion ? ((UIIconRegion)r).getKey() : "Background"; + String type = (r instanceof UIIconRegion ? r.getKey() : "Background"); generate(state, canvas, type); } for (UIState state : r.getForegroundStates()) { @@ -203,13 +151,7 @@ public class PainterGenerator { .append(" extendedCacheKeys = new Object[] {\n"); for (int i=0; i (); @@ -257,171 +199,166 @@ public class PainterGenerator { Layer[] layers = canvas.getLayers().toArray(new Layer[0]); for (int index=layers.length-1; index >= 0; index--) { Layer layer = layers[index]; - if (layer instanceof TemplateLayer) { - continue; - } + //shapes must be painted in reverse order - List shapes = layer.getShapes(); + List shapes = layer.getShapes(); for (int i=shapes.size()-1; i>=0; i--) { - SimpleShape s = shapes.get(i); - if (s instanceof PaintedShape) { - PaintedShape shape = (PaintedShape)s; - PaintModel paint = shape.getPaintModel(); - - /* - We attempt to write the minimal number of bytecodes as possible when - generating code. Due to the inherit complexities in determining what - is extraneous, we use the following system: - - We first generate the code for the shape. Then, we check to see if - this shape has already been generated. If so, then we defer to an - existing method. If not, then we will create a new methods, stick - the code in it, and refer to that method. - */ - - String shapeMethodName = null; // will contain the name of the method which creates the shape - String shapeVariable = null; // will be one of rect, roundRect, ellipse, or path. - String shapeMethodBody = null; - - if (shape instanceof RectangleShape) { - RectangleShape rshape = (RectangleShape) shape; - float x1 = encode((float)rshape.getX1(), a, b, width); - float y1 = encode((float)rshape.getY1(), c, d, height); - float x2 = encode((float)rshape.getX2(), a, b, width); - float y2 = encode((float)rshape.getY2(), c, d, height); - if (rshape.isRounded()) { - //it is a rounded rectangle - float rounding = (float)rshape.getRounding(); - - shapeMethodBody = - " roundRect.setRoundRect(" + - writeDecodeX(x1) + ", //x\n" + - " " + writeDecodeY(y1) + ", //y\n" + - " " + writeDecodeX(x2) + " - " + writeDecodeX(x1) + ", //width\n" + - " " + writeDecodeY(y2) + " - " + writeDecodeY(y1) + ", //height\n" + - " " + rounding + "f, " + rounding + "f); //rounding"; - shapeVariable = "roundRect"; - } else { - shapeMethodBody = - " rect.setRect(" + - writeDecodeX(x1) + ", //x\n" + - " " + writeDecodeY(y1) + ", //y\n" + - " " + writeDecodeX(x2) + " - " + writeDecodeX(x1) + ", //width\n" + - " " + writeDecodeY(y2) + " - " + writeDecodeY(y1) + "); //height"; - shapeVariable = "rect"; - } - } else if (shape instanceof EllipseShape) { - EllipseShape eshape = (EllipseShape) shape; - float x1 = encode((float)eshape.getX1(), a, b, width); - float y1 = encode((float)eshape.getY1(), c, d, height); - float x2 = encode((float)eshape.getX2(), a, b, width); - float y2 = encode((float)eshape.getY2(), c, d, height); + Shape shape = shapes.get(i); + Paint paint = shape.getPaint(); + + /* + We attempt to write the minimal number of bytecodes as possible when + generating code. Due to the inherit complexities in determining what + is extraneous, we use the following system: + + We first generate the code for the shape. Then, we check to see if + this shape has already been generated. If so, then we defer to an + existing method. If not, then we will create a new methods, stick + the code in it, and refer to that method. + */ + + String shapeMethodName = null; // will contain the name of the method which creates the shape + String shapeVariable = null; // will be one of rect, roundRect, ellipse, or path. + String shapeMethodBody = null; + + if (shape instanceof Rectangle) { + Rectangle rshape = (Rectangle) shape; + float x1 = encode((float)rshape.getX1(), a, b, width); + float y1 = encode((float)rshape.getY1(), c, d, height); + float x2 = encode((float)rshape.getX2(), a, b, width); + float y2 = encode((float)rshape.getY2(), c, d, height); + if (rshape.isRounded()) { + //it is a rounded rectangle + float rounding = (float)rshape.getRounding(); + shapeMethodBody = - " ellipse.setFrame(" + + " roundRect.setRoundRect(" + + writeDecodeX(x1) + ", //x\n" + + " " + writeDecodeY(y1) + ", //y\n" + + " " + writeDecodeX(x2) + " - " + writeDecodeX(x1) + ", //width\n" + + " " + writeDecodeY(y2) + " - " + writeDecodeY(y1) + ", //height\n" + + " " + rounding + "f, " + rounding + "f); //rounding"; + shapeVariable = "roundRect"; + } else { + shapeMethodBody = + " rect.setRect(" + writeDecodeX(x1) + ", //x\n" + " " + writeDecodeY(y1) + ", //y\n" + " " + writeDecodeX(x2) + " - " + writeDecodeX(x1) + ", //width\n" + " " + writeDecodeY(y2) + " - " + writeDecodeY(y1) + "); //height"; - shapeVariable = "ellipse"; - } else if (shape instanceof PathShape) { - PathShape pshape = (PathShape) shape; - List controlPoints = pshape.getBezierControlPoints(); - BezierControlPoint first, last; - first = last = controlPoints.get(0); - StringBuilder buffer = new StringBuilder(); - buffer.append(" path.reset();\n"); - buffer.append(" path.moveTo(" + writeDecodeX(encode((float)first.getX(), a, b, width)) + ", " + writeDecodeY(encode((float)first.getY(), c, d, height)) + ");\n"); - for (int j=1; j controlPoints = pshape.getControlPoints(); + Point first, last; + first = last = controlPoints.get(0); + StringBuilder buffer = new StringBuilder(); + buffer.append(" path.reset();\n"); + buffer.append(" path.moveTo(" + writeDecodeX(encode((float)first.getX(), a, b, width)) + ", " + writeDecodeY(encode((float)first.getY(), c, d, height)) + ");\n"); + for (int j=1; j b) { + r = 2 + ((x - b) / (w - b)); + } else if (x == a && x == b) { + return 1.5f; + } else { + r = 1 + ((x - a) / (b - a)); + } + + if (Float.isNaN(r)) { + System.err.println("[Error] Encountered NaN: encode(" + x + ", " + a + ", " + b + ", " + w + ")"); + return 0; + } else if (Float.isInfinite(r)) { + System.err.println("[Error] Encountered Infinity: encode(" + x + ", " + a + ", " + b + ", " + w + ")"); + return 0; + } else if (r < 0) { + System.err.println("[Error] encoded value was less than 0: encode(" + x + ", " + a + ", " + b + ", " + w + ")"); + return 0; + } else if (r > 3) { + System.err.println("[Error] encoded value was greater than 3: encode(" + x + ", " + a + ", " + b + ", " + w + ")"); + return 3; + } else { + return r; + } } private String writeDecodeX(float encodedX) { @@ -469,30 +431,17 @@ public class PainterGenerator { } private String encodeMatte(Matte m) { - String declaration = null; - if (m.isAbsolute()) { - Color c = m.getColor(); - declaration = ObjectCodeConvertors.convert(c); - } else { - declaration = "decodeColor(\"" + m.getUiDefaultParentName() + - "\", " + m.getHueOffset() + "f, " + - m.getSaturationOffset() + "f, " + - m.getBrightnessOffset() + "f, " + - m.getAlphaOffset() + ")"; - } - + String declaration = m.getDeclaration(); String variableName = colors.get(declaration); if (variableName == null) { variableName = "color" + colorCounter++; colors.put(declaration, variableName); - colorCode.append(" private Color ").append(variableName).append(" = "); - colorCode.append(declaration).append(";\n"); + colorCode.append(String.format(" private Color %s = %s;\n", + variableName, declaration)); } // handle component colors if (m.getComponentPropertyName() != null) { - ComponentColor cc = new ComponentColor(m.getComponentPropertyName(), - variableName, m.getSaturationOffset(), - m.getBrightnessOffset(), m.getAlphaOffset()); + ComponentColor cc = m.createComponentColor(variableName); int index = componentColors.indexOf(cc); if (index == -1) { index = componentColors.size(); @@ -504,20 +453,7 @@ public class PainterGenerator { } } - private String encodeColor(Color c) { - String declaration = ObjectCodeConvertors.convert(c); - String variableName = colors.get(declaration); - if (variableName == null) { - variableName = "color" + colorCounter++; - colors.put(declaration, variableName); - colorCode.append(" private Color ").append(variableName).append(" = "); - colorCode.append(declaration).append(";\n"); - } - - return variableName; - } - - private String encodeGradient(PaintedShape ps, Gradient g) { + private String encodeGradient(Shape ps, Gradient g) { StringBuilder b = new StringBuilder(); float x1 = (float)ps.getPaintX1(); float y1 = (float)ps.getPaintY1(); @@ -633,7 +569,7 @@ public class PainterGenerator { b.append("}"); } - private String encodeRadial(PaintedShape ps, RadialGradient g) { + private String encodeRadial(Shape ps, RadialGradient g) { float centerX1 = (float)ps.getPaintX1(); float centerY1 = (float)ps.getPaintY1(); float x2 = (float)ps.getPaintX2(); @@ -669,15 +605,14 @@ public class PainterGenerator { } //note that this method is not thread-safe. In fact, none of this class is. - static void writePainter(UIRegion r, Map variables, File painterPackageRoot, String prefix) throws IOException { + public static void writePainter(UIRegion r, String painterName) { //Need only write out the stuff for this region, don't need to worry about subregions //since this method will be called for each of those (and they go in their own file, anyway). //The only subregion that we compound into this is the one for icons. - - String painterName = makePretty(prefix) + "Painter"; PainterGenerator gen = new PainterGenerator(r); System.out.println("Generating source file: " + painterName + ".java"); - System.out.println(gen.stateTypeCode.toString()); + + Map variables = Generator.getVariables(); variables.put("PAINTER_NAME", painterName); variables.put("STATIC_DECL", gen.stateTypeCode.toString()); variables.put("COLORS_DECL", gen.colorCode.toString()); @@ -687,72 +622,6 @@ public class PainterGenerator { variables.put("SHAPES_DECL", gen.shapesCode.toString()); variables.put("GRADIENTS_DECL", gen.gradientsCode.toString()); - writeSrcFile(getPainterImplTemplate(), variables, new File(painterPackageRoot, painterName + ".java")); - - variables.remove("PAINTER_NAME"); - variables.remove("STATIC_DECL"); - variables.remove("COLORS_DECL"); - variables.remove("DO_PAINT_SWITCH_BODY"); - variables.remove("PAINTING_DECL"); - variables.remove("SHAPES_DECL"); - variables.remove("GRADIENTS_DECL"); - } - - /** - * Represents the usage of a color from a component within a painter. That - * is, a painter can use colors from the component when it paints. This - * class represents the usage of such a color, containing a reference to - * the name of the property that contains the color, and the various - * derivation offsets to apply to that color. - */ - private static class ComponentColor { - public String propertyName; - public String defaultColorVariableName; - private float saturationOffset = 0, brightnessOffset = 0; - private int alphaOffset = 0; - - private ComponentColor(String propertyName, - String defaultColorVariableName, - float saturationOffset, - float brightnessOffset, - int alphaOffset) { - this.propertyName = propertyName; - this.defaultColorVariableName = defaultColorVariableName; - this.saturationOffset = saturationOffset; - this.brightnessOffset = brightnessOffset; - this.alphaOffset = alphaOffset; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - ComponentColor c = (ComponentColor)o; - if (alphaOffset != c.alphaOffset) return false; - if (Float.compare(saturationOffset, c.saturationOffset) != 0) - return false; - if (Float.compare(brightnessOffset, c.brightnessOffset) != 0) - return false; - if (defaultColorVariableName != null ? - !defaultColorVariableName.equals(c.defaultColorVariableName) : - c.defaultColorVariableName != null) return false; - if (propertyName != null ? !propertyName.equals(c.propertyName) : - c.propertyName != null) return false; - return true; - } - - @Override - public int hashCode() { - int hash = 5; - hash = 61 * hash + (this.propertyName != null ? - this.propertyName.hashCode() : 0); - hash = 61 * hash + (this.defaultColorVariableName != null ? - this.defaultColorVariableName.hashCode() : 0); - hash = 61 * hash + Float.floatToIntBits(this.saturationOffset); - hash = 61 * hash + Float.floatToIntBits(this.brightnessOffset); - hash = 61 * hash + this.alphaOffset; - return hash; - } + Generator.writeSrcFile("PainterImpl", variables, painterName); } } diff --git a/make/tools/src/build/tools/generatenimbus/Shape.java b/make/tools/src/build/tools/generatenimbus/Shape.java new file mode 100644 index 0000000000000000000000000000000000000000..46e1a08bd68bf6d169263d05232f7861e59dd6cb --- /dev/null +++ b/make/tools/src/build/tools/generatenimbus/Shape.java @@ -0,0 +1,140 @@ +/* + * Copyright 2002-2007 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.generatenimbus; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlElements; + + +public abstract class Shape { + @XmlElement + private PaintPoints paintPoints; + public double getPaintX1() { return paintPoints.x1; } + public double getPaintX2() { return paintPoints.x2; } + public double getPaintY1() { return paintPoints.y1; } + public double getPaintY2() { return paintPoints.y2; } + + @XmlElements({ + @XmlElement(name = "matte", type = Matte.class), + @XmlElement(name = "gradient", type = Gradient.class), + @XmlElement(name = "radialGradient", type = RadialGradient.class) + }) + private Paint paint; + public Paint getPaint() { return paint; } + + static class PaintPoints { + @XmlAttribute double x1; + @XmlAttribute double y1; + @XmlAttribute double x2; + @XmlAttribute double y2; + } +} + +class Point { + @XmlAttribute private double x; + public double getX() { return x; } + + @XmlAttribute private double y; + public double getY() { return y; } + + @XmlAttribute(name="cp1x") private double cp1x; + public double getCp1X() { return cp1x; } + + @XmlAttribute(name="cp1y") private double cp1y; + public double getCp1Y() { return cp1y; } + + @XmlAttribute(name="cp2x") private double cp2x; + public double getCp2X() { return cp2x; } + + @XmlAttribute(name="cp2y") private double cp2y; + public double getCp2Y() { return cp2y; } + + public boolean isP1Sharp() { + return cp1x == x && cp1y == y; + } + + public boolean isP2Sharp() { + return cp2x == x && cp2y == y; + } +} + +class Path extends Shape { + @XmlElement(name="point") + @XmlElementWrapper(name="points") + private List controlPoints = new ArrayList (); + public List getControlPoints() { return controlPoints; } +} + +class Rectangle extends Shape { + @XmlAttribute private double x1; + public double getX1() { return x1; } + + @XmlAttribute private double x2; + public double getX2() { return x2; } + + @XmlAttribute private double y1; + public double getY1() { return y1; } + + @XmlAttribute private double y2; + public double getY2() { return y2; } + + @XmlAttribute + public double getRounding() { + double rounding = Math.abs(roundingX - x1) * 2; + return rounding > 2 ? rounding : 0; + } + + public void setRounding(double rounding) { + if (rounding > 0 && rounding < 2) { + rounding = 0; + } + roundingX = rounding / 2d + x1; + } + private double roundingX; + + public boolean isRounded() { + return getRounding() > 0; + } + +} + +class Ellipse extends Shape { + @XmlAttribute private double x1; + public double getX1() { return x1; } + + @XmlAttribute private double x2; + public double getX2() { return x2; } + + @XmlAttribute private double y1; + public double getY1() { return y1; } + + @XmlAttribute private double y2; + public double getY2() { return y2; } +} diff --git a/make/tools/src/build/tools/generatenimbus/SynthModel.java b/make/tools/src/build/tools/generatenimbus/SynthModel.java new file mode 100644 index 0000000000000000000000000000000000000000..6fbaa01f14ce37429fbd886d653ff95ee12153f4 --- /dev/null +++ b/make/tools/src/build/tools/generatenimbus/SynthModel.java @@ -0,0 +1,216 @@ +/* + * Copyright 2002-2007 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.generatenimbus; + +import java.awt.Font; +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.*; + + +@XmlRootElement(name="synthModel") +public class SynthModel { + @XmlElement private UIStyle style; + + @XmlElement(name="uiColor") + @XmlElementWrapper(name="colors") + private ArrayList colors; + + @XmlElement(name="uiFont") + @XmlElementWrapper(name="fonts") + private ArrayList fonts; + + @XmlElement(name="uiComponent") + @XmlElementWrapper(name="components") + private ArrayList components; + + public void initStyles() { + for (UIComponent c: components) { + c.initStyles(this.style); + } + } + + public void write(StringBuilder defBuffer, StringBuilder styleBuffer, String packageName) { + defBuffer.append(" //Color palette\n"); + for (UIColor c: colors) defBuffer.append(c.write()); + defBuffer.append('\n'); + + defBuffer.append(" //Font palette\n"); + defBuffer.append(" d.put(\"defaultFont\", new FontUIResource(defaultFont));\n"); + for (UIFont f: fonts) defBuffer.append(f.write()); + defBuffer.append('\n'); + + defBuffer.append(" //Border palette\n"); + defBuffer.append('\n'); + + defBuffer.append(" //The global style definition\n"); + defBuffer.append(style.write("")); + defBuffer.append('\n'); + + for (UIComponent c: components) { + String prefix = Utils.escape(c.getKey()); + defBuffer.append(" //Initialize ").append(prefix).append("\n"); + c.write(defBuffer, styleBuffer, c, prefix, packageName); + defBuffer.append('\n'); + } + } +} + +class Typeface { + public enum DeriveStyle { + Default, Off, On; + + @Override public String toString() { + switch (this) { + default: return "null"; + case On: return "true"; + case Off: return "false"; + } + } + } + + @XmlAttribute private String uiDefaultParentName; + @XmlAttribute(name="family") private String name; + @XmlAttribute private int size; + @XmlAttribute private DeriveStyle bold = DeriveStyle.Default; + @XmlAttribute private DeriveStyle italic = DeriveStyle.Default; + @XmlAttribute private float sizeOffset = 1f; + + public boolean isAbsolute() { + return uiDefaultParentName == null; + } + + public String write() { + if (isAbsolute()) { + int style = Font.PLAIN; + if (bold == DeriveStyle.On) { + style = style | Font.BOLD; + } + if (italic == DeriveStyle.On) { + style = style | Font.ITALIC; + } + + return String.format( + "new javax.swing.plaf.FontUIResource(\"%s\", %d, %d)", + name, style, size); + } else { + return String.format( + "new DerivedFont(\"%s\", %sf, %s, %s)", + uiDefaultParentName, String.valueOf(sizeOffset), bold, italic); + } + } +} + +class Border { + enum BorderType { + @XmlEnumValue("empty") EMPTY, + @XmlEnumValue("painter") PAINTER + } + @XmlAttribute private BorderType type; + @XmlAttribute private String painter; + @XmlAttribute private int top; + @XmlAttribute private int left; + @XmlAttribute private int bottom; + @XmlAttribute private int right; + + public String write() { + switch (type) { + case PAINTER: + return String.format("new PainterBorder(\"%s\", new Insets(%d, %d, %d, %d))", + painter, top, left, bottom, right); + case EMPTY: + return String.format("BorderFactory.createEmptyBorder(%d, %d, %d, %d)", + top, left, bottom, right); + default: + return "### Look, here's an unknown border! $$$"; + } + } +} + +class Insets { + @XmlAttribute int top; + @XmlAttribute int left; + @XmlAttribute int bottom; + @XmlAttribute int right; + + public Insets() { + this(0, 0, 0, 0); + } + + public Insets(int top, int left, int bottom, int right) { + this.top = top; + this.left = left; + this.bottom = bottom; + this.right = right; + } + + public String write(boolean uiResource) { + String uiSuffix = (uiResource ? "UIResource" : ""); + return String.format("new Insets%s(%d, %d, %d, %d)", + uiSuffix, top, left, bottom, right); + } +} + +class Dimension { + @XmlAttribute int width; + @XmlAttribute int height; + + public String write(boolean uiResource) { + String uiSuffix = (uiResource ? "UIResource" : ""); + return String.format("new Dimension%s(%d, %d)", uiSuffix, width, height); + } +} + +class Canvas { + @XmlElement private Dimension size; + public Dimension getSize() { return size; } + + @XmlElement(name="layer") private List layers; + public List getLayers() { return layers; } + + @XmlElement private Insets stretchingInsets = null; + public Insets getStretchingInsets() { return stretchingInsets; } + + public boolean isBlank() { + return layers.size() == 0 || (layers.size() == 1 && layers.get(0).isEmpty()); + } +} + +class Layer { + /** List of shapes in this layer, first shape is painted on top */ + @XmlElements({ + @XmlElement(name = "ellipse", type = Ellipse.class), + @XmlElement(name = "path", type = Path.class), + @XmlElement(name = "rectangle", type = Rectangle.class) + }) + @XmlElementWrapper(name="shapes") + private List shapes = new ArrayList (); + public List getShapes() { return shapes; } + + public boolean isEmpty() { + return shapes.isEmpty(); + } +} diff --git a/make/tools/src/build/tools/generatenimbus/UIDefault.java b/make/tools/src/build/tools/generatenimbus/UIDefault.java new file mode 100644 index 0000000000000000000000000000000000000000..10560a011dc3a33e6d42b6a2eeec6b8caa37910a --- /dev/null +++ b/make/tools/src/build/tools/generatenimbus/UIDefault.java @@ -0,0 +1,126 @@ +/* + * Copyright 2002-2007 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.generatenimbus; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; + +public class UIDefault { + @XmlAttribute private String name; + private T value; + + public String getName() { + return name; + } + + public T getValue() { + return value; + } + + public void setValue(T value) { + this.value = value; + } +} + +class UIColor extends UIDefault { + + @XmlElement + public void setMatte(Matte m) { + setValue(m); + } + + public String write() { + return String.format(" addColor(d, \"%s\", %s);\n", + getName(), getValue().write()); + } +} + +class UIFont extends UIDefault { + @XmlElement + public void setTypeface(Typeface t) { + setValue(t); + } + + public String write() { + return String.format(" d.put(\"%s\", %s);\n", + getName(), getValue().write()); + } +} + +class UIProperty extends UIDefault { + public static enum PropertyType { + BOOLEAN, INT, FLOAT, DOUBLE, STRING, FONT, COLOR, INSETS, DIMENSION, BORDER + } + @XmlAttribute private PropertyType type; + + @XmlElement private Border border; + @XmlElement private Dimension dimension; + @XmlElement private Insets insets; + @XmlElement private Matte matte; + @XmlElement private Typeface typeface; + + @XmlAttribute + @Override public void setValue(String value) { + super.setValue(value); + } + + public String write(String prefix) { + switch (type) { + case BOOLEAN: + return String.format(" d.put(\"%s%s\", Boolean.%s);\n", + prefix, getName(), getValue().toUpperCase()); ///autobox + case STRING: + return String.format(" d.put(\"%s%s\", \"%s\");\n", + prefix, getName(), getValue()); + case INT: + return String.format(" d.put(\"%s%s\", new Integer(%s));\n", + prefix, getName(), getValue()); + case FLOAT: + return String.format(" d.put(\"%s%s\", new Float(%sf));\n", + prefix, getName(), getValue()); + case DOUBLE: + return String.format(" d.put(\"%s%s\", new Double(%s));\n", + prefix, getName(), getValue()); + case COLOR: + return String.format(" addColor(d, \"%s%s\", %s);\n", + prefix, getName(), matte.write()); + case FONT: + return String.format(" d.put(\"%s%s\", %s);\n", + prefix, getName(), typeface.write()); + case INSETS: + return String.format(" d.put(\"%s%s\", %s);\n", + prefix, getName(), insets.write(true)); + case DIMENSION: + return String.format(" d.put(\"%s%s\", new DimensionUIResource(%d, %d));\n", + prefix, getName(), dimension.width, dimension.height); + case BORDER: + return String.format(" d.put(\"%s%s\", new BorderUIResource(%s));\n", + prefix, getName(), border.write()); + default: + return "### Look, something's wrong with UIProperty.write() $$$"; + } + } +} diff --git a/make/tools/src/build/tools/generatenimbus/UIStyle.java b/make/tools/src/build/tools/generatenimbus/UIStyle.java new file mode 100644 index 0000000000000000000000000000000000000000..1e5c5043f6c8b1fb51cd92fefed5c56aa529dd60 --- /dev/null +++ b/make/tools/src/build/tools/generatenimbus/UIStyle.java @@ -0,0 +1,399 @@ +/* + * Copyright 2002-2007 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.generatenimbus; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlElements; + + +class UIStyle { + public static enum CacheMode { + NO_CACHING, FIXED_SIZES, NINE_SQUARE_SCALE + } + + @XmlElement private UIColor textForeground = null; + @XmlElement(name="inherit-textForeground") + private boolean textForegroundInherited = true; + + @XmlElement private UIColor textBackground = null; + @XmlElement(name="inherit-textBackground") + private boolean textBackgroundInherited = true; + + @XmlElement private UIColor background = null; + @XmlElement(name="inherit-background") + private boolean backgroundInherited = true; + + @XmlElement private boolean cacheSettingsInherited = true; + @XmlElement CacheMode cacheMode = CacheMode.FIXED_SIZES; + @XmlElement String maxHozCachedImgScaling = "1.0"; + @XmlElement String maxVertCachedImgScaling = "1.0"; + + @XmlElement(name="uiProperty") + @XmlElementWrapper(name="uiproperties") + private List uiProperties = new ArrayList (); + + private UIStyle parentStyle = null; + public void setParentStyle(UIStyle parentStyle) { + this.parentStyle = parentStyle; + } + + public CacheMode getCacheMode() { + if (cacheSettingsInherited) { + return (parentStyle == null ? + CacheMode.FIXED_SIZES : parentStyle.getCacheMode()); + } else { + return cacheMode; + } + } + + public String getMaxHozCachedImgScaling() { + if (cacheSettingsInherited) { + return (parentStyle == null ? + "1.0" : parentStyle.getMaxHozCachedImgScaling()); + } else { + return maxHozCachedImgScaling; + } + } + + public String getMaxVertCachedImgScaling() { + if (cacheSettingsInherited) { + return (parentStyle == null ? + "1.0" : parentStyle.getMaxVertCachedImgScaling()); + } else { + return maxVertCachedImgScaling; + } + } + + public String write(String prefix) { + StringBuilder sb = new StringBuilder(); + if (! textForegroundInherited) { + sb.append(String.format(" addColor(d, \"%s%s\", %s);\n", + prefix, "textForeground", textForeground.getValue().write())); + } + if (! textBackgroundInherited) { + sb.append(String.format(" addColor(d, \"%s%s\", %s);\n", + prefix, "textBackground", textBackground.getValue().write())); + } + if (! backgroundInherited) { + sb.append(String.format(" addColor(d, \"%s%s\", %s);\n", + prefix, "background", background.getValue().write())); + } + for (UIProperty property : uiProperties) { + sb.append(property.write(prefix)); + } + return sb.toString(); + } +} + +class UIRegion { + @XmlAttribute protected String name; + @XmlAttribute protected String key; + @XmlAttribute private boolean opaque = false; + + @XmlElement private Insets contentMargins = new Insets(0, 0, 0, 0); + + @XmlElement(name="state") + @XmlElementWrapper(name="backgroundStates") + protected List backgroundStates = new ArrayList (); + public List getBackgroundStates() { return backgroundStates; } + + @XmlElement(name="state") + @XmlElementWrapper(name="foregroundStates") + protected List foregroundStates = new ArrayList (); + public List getForegroundStates() { return foregroundStates; } + + @XmlElement(name="state") + @XmlElementWrapper(name="borderStates") + protected List borderStates = new ArrayList (); + public List getBorderStates() { return borderStates; } + + @XmlElement private UIStyle style = new UIStyle(); + + @XmlElements({ + @XmlElement(name = "region", type = UIRegion.class), + @XmlElement(name = "uiComponent", type = UIComponent.class), + @XmlElement(name = "uiIconRegion", type = UIIconRegion.class) + }) + @XmlElementWrapper(name="regions") + private List subRegions = new ArrayList (); + public List getSubRegions() { return subRegions; } + + protected void initStyles(UIStyle parentStyle) { + style.setParentStyle(parentStyle); + for (UIState state: backgroundStates) { + state.getStyle().setParentStyle(this.style); + } + for (UIState state: foregroundStates) { + state.getStyle().setParentStyle(this.style); + } + for (UIState state: borderStates) { + state.getStyle().setParentStyle(this.style); + } + for (UIRegion region: subRegions) { + region.initStyles(this.style); + } + } + + public String getKey() { + return key == null || "".equals(key) ? name : key; + } + + private boolean hasCanvas() { + for (UIState s : backgroundStates) { + if (s.hasCanvas()) return true; + } + for (UIState s : borderStates) { + if (s.hasCanvas()) return true; + } + for (UIState s : foregroundStates) { + if (s.hasCanvas()) return true; + } + for (UIRegion r: subRegions) { + if (r.hasCanvas()) return true; + } + return false; + } + + public void write(StringBuilder sb, StringBuilder styleBuffer, + UIComponent comp, String prefix, String pkg) { + // write content margins + sb.append(String.format(" d.put(\"%s.contentMargins\", %s);\n", + prefix, contentMargins.write(true))); + // write opaque if true + if (opaque) { + sb.append(String.format(" d.put(\"%s.opaque\", Boolean.TRUE);\n", prefix)); + } + + // register component with LAF + String regionCode = "Region." + Utils.regionNameToCaps(name); + styleBuffer.append(String.format(" register(%s, \"%s\");\n", + regionCode, prefix)); + + //write the State, if necessary + StringBuffer regString = new StringBuffer(); + List types = comp.getStateTypes(); + if (types != null && types.size() > 0) { + for (UIStateType type : types) { + regString.append(type.getKey()); + regString.append(","); + } + //remove the last "," + regString.deleteCharAt(regString.length() - 1); + } + + if (! regString.equals("Enabled,MouseOver,Pressed,Disabled,Focused,Selected,Default") && types.size() > 0) { + //there were either custom states, or the normal states were in a custom order + //so go ahead and write out prefix.State + sb.append(String.format(" d.put(\"%s.States\", \"%s\");\n", + prefix, regString)); + } + + // write out any custom states, if necessary + for (UIStateType type : types) { + String synthState = type.getKey(); + if (! "Enabled".equals(synthState) && + ! "MouseOver".equals(synthState) && + ! "Pressed".equals(synthState) && + ! "Disabled".equals(synthState) && + ! "Focused".equals(synthState) && + ! "Selected".equals(synthState) && + ! "Default".equals(synthState)) { + + //what we have here, gentlemen, is a bona-fide custom state. + //if the type is not one of the standard types, then construct a name for + //the new type, and write out a new subclass of State. + String className = Utils.normalize(prefix) + synthState + "State"; + sb.append(String.format(" d.put(\"%s.%s\", new %s());\n", + prefix, synthState, className)); + + String body = type.getCodeSnippet(); + Map variables = Generator.getVariables(); + variables.put("STATE_NAME", className); + variables.put("STATE_KEY", synthState); + variables.put("BODY", body); + + Generator.writeSrcFile("StateImpl", variables, className); + } + } + + // write style + sb.append(style.write(prefix + '.')); + + String fileName = Utils.normalize(prefix) + "Painter"; + boolean hasCanvas = hasCanvas(); + if (hasCanvas) { + PainterGenerator.writePainter(this, fileName); + } + // write states ui defaults + for (UIState state : backgroundStates) { + state.write(sb, prefix, pkg, fileName, "background"); + } + for (UIState state : foregroundStates) { + state.write(sb, prefix, pkg, fileName, "foreground"); + } + for (UIState state : borderStates) { + state.write(sb, prefix, pkg, fileName, "border"); + } + + // handle sub regions + for (UIRegion subreg : subRegions) { + String p = prefix; + if (! (subreg instanceof UIIconRegion)) { + p = prefix + ":" + Utils.escape(subreg.getKey()); + } + UIComponent c = comp; + if (subreg instanceof UIComponent) { + c = (UIComponent) subreg; + } + subreg.write(sb, styleBuffer, c, p, pkg); + } + } +} + +class UIIconRegion extends UIRegion { + @XmlAttribute private String basicKey; + + @Override public void write(StringBuilder sb, StringBuilder styleBuffer, UIComponent comp, String prefix, String pkg) { + Dimension size = null; + String fileNamePrefix = Utils.normalize(prefix) + "Painter"; + // write states ui defaults + for (UIState state : backgroundStates) { + Canvas canvas = state.getCanvas(); + if (!canvas.isBlank()) { + state.write(sb, prefix, pkg, fileNamePrefix, getKey()); + size = canvas.getSize(); + } + } + + if (size != null) { + // Put SynthIconImpl wrapper in UiDefaults + String k = (basicKey == null ? prefix + "." + getKey() : basicKey); + sb.append(String.format( + " d.put(\"%s\", new NimbusIcon(\"%s\", \"%sPainter\", %d, %d));\n", + k, prefix, getKey(), size.width, size.height)); + } + } +} + +class UIComponent extends UIRegion { + @XmlAttribute private String componentName; + + @XmlElement(name="stateType") + @XmlElementWrapper(name="stateTypes") + private List stateTypes = new ArrayList (); + public List getStateTypes() { return stateTypes; } + + @Override public String getKey() { + if (key == null || "".equals(key)) { + if (componentName == null || "".equals(componentName)) { + return name; + } else { + return "\"" + componentName + "\""; + } + } else { + return key; + } + } +} + +class UIState { + @XmlAttribute private String stateKeys; + public String getStateKeys() { return stateKeys; } + + /** Indicates whether to invert the meaning of the 9-square stretching insets */ + @XmlAttribute private boolean inverted; + + /** A cached string representing the list of stateKeys deliminated with "+" */ + private String cachedName = null; + + @XmlElement private Canvas canvas; + public Canvas getCanvas() { return canvas; } + + @XmlElement private UIStyle style; + public UIStyle getStyle() { return style; } + + public boolean hasCanvas() { + return ! canvas.isBlank(); + } + + public static List stringToKeys(String keysString) { + return Arrays.asList(keysString.split("\\+")); + } + + public String getName() { + if (cachedName == null) { + StringBuilder buf = new StringBuilder(); + List keys = stringToKeys(stateKeys); + Collections.sort(keys); + for (Iterator iter = keys.iterator(); iter.hasNext();) { + buf.append(iter.next()); + if (iter.hasNext()) { + buf.append('+'); + } + } + cachedName = buf.toString(); + } + return cachedName; + } + + public void write(StringBuilder sb, String prefix, String pkg, String fileNamePrefix, String painterPrefix) { + String statePrefix = prefix + "[" + getName() + "]"; + // write state style + sb.append(style.write(statePrefix + '.')); + // write painter + if (hasCanvas()) { + writeLazyPainter(sb, statePrefix, pkg, fileNamePrefix, painterPrefix); + } + } + + private void writeLazyPainter(StringBuilder sb, String statePrefix, String packageNamePrefix, String fileNamePrefix, String painterPrefix) { + String cacheModeString = "AbstractRegionPainter.PaintContext.CacheMode." + style.getCacheMode(); + String stateConstant = Utils.statesToConstantName(painterPrefix + "_" + stateKeys); + sb.append(String.format( + " d.put(\"%s.%sPainter\", new LazyPainter(\"%s.%s\", %s.%s, %s, %s, %b, %s, %s, %s));\n", + statePrefix, painterPrefix, packageNamePrefix, fileNamePrefix, + fileNamePrefix, stateConstant, canvas.getStretchingInsets().write(false), + canvas.getSize().write(false), inverted, cacheModeString, + Utils.formatDouble(style.getMaxHozCachedImgScaling()), + Utils.formatDouble(style.getMaxVertCachedImgScaling()))); + } +} + +class UIStateType { + @XmlAttribute private String key; + public String getKey() { return key; } + + @XmlElement private String codeSnippet; + public String getCodeSnippet() { return codeSnippet; } +} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/GeneratorUtils.java b/make/tools/src/build/tools/generatenimbus/Utils.java similarity index 59% rename from make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/GeneratorUtils.java rename to make/tools/src/build/tools/generatenimbus/Utils.java index 0d0fb75f52aa01891b417bd11178f37b05a510f1..09599303cae361087976954e2705d7ecb8aaa9b3 100644 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/GeneratorUtils.java +++ b/make/tools/src/build/tools/generatenimbus/Utils.java @@ -22,158 +22,61 @@ * CA 95054 USA or visit www.sun.com if you need additional information or * have any questions. */ -package org.jdesktop.synthdesigner.generator; -import javax.swing.plaf.synth.Region; -import javax.swing.plaf.synth.SynthConstants; - -/** - * GeneratorUtils - * - * @author Richard Bair - * @author Jasper Potts - */ -class GeneratorUtils { - private GeneratorUtils() {} +package build.tools.generatenimbus; - /** - * Given a synth state, create the appropriate name as it would be used for a ui default key. - * - * For example: - * - * enabled enabled+over enabled+over+selected - */ - static String toUIDefaultKey(int state) { - StringBuffer buffer = new StringBuffer(); - if ((state & SynthConstants.DEFAULT) == SynthConstants.DEFAULT) { - buffer.append("default"); - } - if ((state & SynthConstants.DISABLED) == SynthConstants.DISABLED) { - if (buffer.length() > 0) buffer.append("+"); - buffer.append("disabled"); - } - if ((state & SynthConstants.ENABLED) == SynthConstants.ENABLED) { - if (buffer.length() > 0) buffer.append("+"); - buffer.append("enabled"); - } - if ((state & SynthConstants.FOCUSED) == SynthConstants.FOCUSED) { - if (buffer.length() > 0) buffer.append("+"); - buffer.append("focused"); - } - if ((state & SynthConstants.MOUSE_OVER) == SynthConstants.MOUSE_OVER) { - if (buffer.length() > 0) buffer.append("+"); - buffer.append("over"); - } - if ((state & SynthConstants.PRESSED) == SynthConstants.PRESSED) { - if (buffer.length() > 0) buffer.append("+"); - buffer.append("down"); - } - if ((state & SynthConstants.SELECTED) == SynthConstants.SELECTED) { - if (buffer.length() > 0) buffer.append("+"); - buffer.append("selected"); - } - return buffer.toString(); - } +import java.util.ArrayList; +import java.util.List; +import javax.swing.plaf.synth.Region; - //takes a states string of the form Enabled+Foo+Bar. - //removes any whitespace. Replaces the + signs with And. - static String toClassName(String states) { - String s = states.replace(" ", ""); - s = states.replace("+", "And"); - return s; - } +public class Utils { - //takes a states string of the form Enabled+Foo+Bar. - //removes any whitespace. Replaces the + signs with _. - //capitalizes the whole lot - static String toConstantName(String states) { - String s = states.replace(" ", ""); - s = states.replace("+", "_"); - return s.toUpperCase(); + public static String escape(String s) { + return s.replace("\"", "\\\""); } - /** - * Given a string "s" of the form: - * - * A.\"A.a\".B - * - * Make it such that: - * - * AAAB - * - * For example, ComboBox.\"ComboBox.arrowButton\" would become - * ComboBoxComboBoxArrowButton - * - * @param s - * @return - */ - static String makePretty(String s) { + public static String normalize(String s) { char[] src = s.toCharArray(); - char[] dst = new char[src.length]; - int dstIndex = 0; - for (int i=0; i parts = new ArrayList (); + boolean capitalize = false; + + for (int i = 0; i < src.length; i++) { + switch (src[i]) { + case '\\': + case '"': + break; + case '.': + capitalize = true; + break; + case ':': + parts.add(buf.toString()); + buf.delete(0, buf.length()); + capitalize = true; + break; + default: + buf.append(capitalize ? Character.toUpperCase(src[i]) : src[i]); + capitalize = false; + break; } - //copy over the current char. - dst[dstIndex++] = src[i]; } - //at this point, dstIndex is 1 greater than the last valid index position in dst - //or in other words it represents the count. - return new String(dst, 0, dstIndex); - } + parts.add(buf.toString()); - /** - * Encodes the given synth state as if it were specified in java code, such as - * - * SynthConstants.ENABLED | SynthConstants.MOUSE_OVER - */ - static String toJavaList(int state) { - StringBuffer buffer = new StringBuffer(); - if ((state & SynthConstants.DEFAULT) == SynthConstants.DEFAULT) { - buffer.append("SynthConstants.DEFAULT"); - } - if ((state & SynthConstants.DISABLED) == SynthConstants.DISABLED) { - if (buffer.length() > 0) buffer.append(" | "); - buffer.append("SynthConstants.DISABLED"); - } - if ((state & SynthConstants.ENABLED) == SynthConstants.ENABLED) { - if (buffer.length() > 0) buffer.append(" | "); - buffer.append("SynthConstants.ENABLED"); - } - if ((state & SynthConstants.FOCUSED) == SynthConstants.FOCUSED) { - if (buffer.length() > 0) buffer.append(" | "); - buffer.append("SynthConstants.FOCUSED"); - } - if ((state & SynthConstants.MOUSE_OVER) == SynthConstants.MOUSE_OVER) { - if (buffer.length() > 0) buffer.append(" | "); - buffer.append("SynthConstants.MOUSE_OVER"); - } - if ((state & SynthConstants.PRESSED) == SynthConstants.PRESSED) { - if (buffer.length() > 0) buffer.append(" | "); - buffer.append("SynthConstants.PRESSED"); - } - if ((state & SynthConstants.SELECTED) == SynthConstants.SELECTED) { - if (buffer.length() > 0) buffer.append(" | "); - buffer.append("SynthConstants.SELECTED"); + // Try to optimize long class names by omitting repeating prefixes, e.g. + // SliderTrackPainter.java instead of SliderSliderTrackPainter.java + String result = parts.get(0); + for (int i = 1; i < parts.size(); i++) { + String part = parts.get(i); + if (part.startsWith(result)) { + result = part; + } else { + result += part; + } } - return buffer.toString(); + return result; } - /** - * Checks the given region name to discover if it is one of the standard synth regions. If so, return the name in - * caps and such. Otherwise, return a big fat null. - * - * I have to do this because, unfortunately, synth's Region doesn't implement equals. - */ - static String getRegionNameCaps(String regionName) { + public static String regionNameToCaps(String regionName) { if (Region.ARROW_BUTTON.getName().equals(regionName)) { return "ARROW_BUTTON"; } else if (Region.BUTTON.getName().equals(regionName)) { @@ -289,7 +192,24 @@ class GeneratorUtils { } else if (Region.VIEWPORT.getName().equals(regionName)) { return "VIEWPORT"; } - System.err.println("[Info] Couldn't find a Region for " + regionName); - return null; + throw new RuntimeException("Bad Region name " + regionName); + } + + public static String statesToConstantName(String states) { + String s = states.replace(" ", ""); + s = states.replace("+", "_"); + return s.toUpperCase(); + } + + //takes a states string of the form Enabled+Foo+Bar. + //removes any whitespace. Replaces the + signs with And. + public static String statesToClassName(String states) { + String s = states.replace(" ", ""); + s = states.replace("+", "And"); + return s; + } + + public static String formatDouble(String doubleValue) { + return doubleValue.replace("INF", "Double.POSITIVE_INFINITY"); } } diff --git a/make/tools/swing-nimbus/Makefile b/make/tools/swing-nimbus/Makefile deleted file mode 100644 index 36df571c5f5be4c8f7a283ecdc8af1d905dee0fa..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/Makefile +++ /dev/null @@ -1,91 +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 Nimbus generator -# - -BUILDDIR = ../.. -PACKAGE = org.jdesktop.synthdesigner.generator -PRODUCT = tools -PROGRAM = nimbus_generator -include $(BUILDDIR)/common/Defs.gmk - -BUILDTOOL_SOURCE_ROOT = classes -BUILDTOOL_MAIN = $(PKGDIR)/Generator.java - -# -# Files -# - -MAIN_CLASS_FILE = $(BUILDTOOLCLASSDIR)/$(BUILDTOOL_MAIN:%.java=%.class) -SOURCE_FILES = $(shell $(FIND) $(BUILDTOOL_SOURCE_ROOT) -name '*.java' -print) - -TEMPLATE_FILES = $(SHARE_SRC)/classes/javax/swing/plaf/nimbus/Defaults.template \ - $(SHARE_SRC)/classes/javax/swing/plaf/nimbus/PainterImpl.template \ - $(SHARE_SRC)/classes/javax/swing/plaf/nimbus/StateImpl.template -TEMPLATE_DEST = $(BUILDTOOLCLASSDIR)/org/jdesktop/synthdesigner/generator/resources - -JIBX_FILES = $(BUILDTOOL_SOURCE_ROOT)/org/jdesktop/swingx/designer/Designer.jibx.xml \ - $(BUILDTOOL_SOURCE_ROOT)/org/jdesktop/synthdesigner/synthmodel/SynthModel.jibx.xml -JIBX_LIBS_CP = $(JIBX_LIBS_PATH)/bcel.jar$(CLASSPATH_SEPARATOR)$(JIBX_LIBS_PATH)/xpp3.jar$(CLASSPATH_SEPARATOR)$(JIBX_LIBS_PATH)/jibx-bind.jar$(CLASSPATH_SEPARATOR)$(JIBX_LIBS_PATH)/jibx-run.jar -JIBX_LIBS_LIST = $(subst $(CLASSPATH_SEPARATOR), ,$(JIBX_LIBS_CP)) - - -# -# Rules -# - -include $(BUILDDIR)/common/BuildToolJar.gmk - -$(MAIN_CLASS_FILE): $(SOURCE_FILES) $(JIBX_LIBS_LIST) - @$(MKDIR) -p $(BUILDTOOLCLASSDIR) - $(BOOT_JAVAC_CMD) -classpath "$(JIBX_LIBS_CP)" \ - -d $(BUILDTOOLCLASSDIR) -sourcepath $(BUILDTOOL_SOURCE_ROOT) \ - $(SOURCE_FILES) - -$(TEMPLATE_DEST): $(TEMPLATE_FILES) - $(MKDIR) -p $(TEMPLATE_DEST) - $(RM) $(TEMPLATE_DEST)/*.template - $(CP) $(TEMPLATE_FILES) $(TEMPLATE_DEST) - -$(BUILDTOOL_MANIFEST_FILE): $(MAIN_CLASS_FILE) - $(ECHO) "Main-Class: $(BUILTTOOL_MAINCLASS)" > $@ - $(ECHO) "Class-Path: $(JIBX_LIBS_LIST:$(JIBX_LIBS_PATH)/%=%)" >> $@ - $(CP) $(JIBX_LIBS_LIST) $(BUILDTOOLJARDIR) - -$(BUILDTOOL_JAR_FILE): $(MAIN_CLASS_FILE) $(TEMPLATE_DEST) \ - $(JIBX_FILES) $(BUILDTOOL_MANIFEST_FILE) - @$(prep-target) - $(BOOT_JAVA_CMD) \ - -classpath "$(JIBX_LIBS_CP)$(CLASSPATH_SEPARATOR)$(BUILDTOOLCLASSDIR)" \ - org.jibx.binding.Compile $(JIBX_FILES) - $(BOOT_JAR_CMD) cfm $@ $(BUILDTOOL_MANIFEST_FILE) \ - -C $(BUILDTOOLCLASSDIR) org \ - $(BOOT_JAR_JFLAGS) || $(RM) $@ - @$(java-vm-cleanup) - -clean clobber:: - $(RM) -r $(TEMPLATE_DEST) diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/beans/AbstractBean.java b/make/tools/swing-nimbus/classes/org/jdesktop/beans/AbstractBean.java deleted file mode 100644 index 91325319b1ac01edaa86954e5f4cb56e92e1ee23..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/beans/AbstractBean.java +++ /dev/null @@ -1,475 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.beans; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; -import java.beans.PropertyVetoException; -import java.beans.VetoableChangeListener; -import java.beans.VetoableChangeSupport; - -/** - * A convenience class from which to extend all non-visual AbstractBeans. It - * manages the PropertyChange notification system, making it relatively trivial - * to add support for property change events in getters/setters.
- * - *A non-visual java bean is a Java class that conforms to the AbstractBean - * patterns to allow visual manipulation of the bean's properties and event - * handlers at design-time.
- * - *Here is a simple example bean that contains one property, foo, and the - * proper pattern for implementing property change notification: - *
- * public class ABean extends AbstractBean { - * private String foo; - * - * public void setFoo(String newFoo) { - * String old = getFoo(); - * this.foo = newFoo; - * firePropertyChange("foo", old, getFoo()); - * } - * - * public String getFoo() { - * return foo; - * } - * } - *You will notice that "getFoo()" is used in the setFoo method rather than - * accessing "foo" directly for the gets. This is done intentionally so that if - * a subclass overrides getFoo() to return, for instance, a constant value the - * property change notification system will continue to work properly.
- * - *The firePropertyChange method takes into account the old value and the new - * value. Only if the two differ will it fire a property change event. So you can - * be assured from the above code fragment that a property change event will only - * occur if old is indeed different from getFoo()
- * - *
AbstractBeanalso supports {@link VetoablePropertyChange} events. - * These events are similar toPropertyChangeevents, except a special - * exception can be used to veto changing the property. For example, perhaps the - * property is changing from "fred" to "red", but a listener deems that "red" is - * unexceptable. In this case, the listener can fire a veto exception and the property must - * remain "fred". For example: - *- * - * @status REVIEWED - * @author rbair - */ -public abstract class AbstractBean { - /** - * Helper class that manages all the property change notification machinery. - * PropertyChangeSupport cannot be extended directly because it requires - * a bean in the constructor, and the "this" argument is not valid until - * after super construction. Hence, delegation instead of extension - */ - private transient PropertyChangeSupport pcs; - - /** - * Helper class that manages all the veto property change notification machinery. - */ - private transient VetoableChangeSupport vcs; - - /** Creates a new instance of AbstractBean */ - protected AbstractBean() { - pcs = new PropertyChangeSupport(this); - vcs = new VetoableChangeSupport(this); - } - - /** - * Creates a new instance of AbstractBean, using the supplied PropertyChangeSupport and - * VetoableChangeSupport delegates. Neither of these may be null. - */ - protected AbstractBean(PropertyChangeSupport pcs, VetoableChangeSupport vcs) { - if (pcs == null) { - throw new NullPointerException("PropertyChangeSupport must not be null"); - } - if (vcs == null) { - throw new NullPointerException("VetoableChangeSupport must not be null"); - } - - this.pcs = pcs; - this.vcs = vcs; - } - - /** - * Add a PropertyChangeListener to the listener list. - * The listener is registered for all properties. - * The same listener object may be added more than once, and will be called - * as many times as it is added. - * If- * public class ABean extends AbstractBean { - * private String foo; - * - * public void setFoo(String newFoo) throws PropertyVetoException { - * String old = getFoo(); - * this.foo = newFoo; - * fireVetoableChange("foo", old, getFoo()); - * } - * - * public String getFoo() { - * return foo; - * } - * } - * - * public class Tester { - * public static void main(String... args) { - * try { - * ABean a = new ABean(); - * a.setFoo("fred"); - * a.addVetoableChangeListener(new VetoableChangeListener() { - * public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException { - * if ("red".equals(evt.getNewValue()) { - * throw new PropertyVetoException("Cannot be red!", evt); - * } - * } - * } - * a.setFoo("red"); - * } catch (Exception e) { - * e.printStackTrace(); // this will be executed - * } - * } - * } - *listeneris null, no exception is thrown and no action - * is taken. - * - * @param listener The PropertyChangeListener to be added - */ - public final void addPropertyChangeListener(PropertyChangeListener listener) { - pcs.addPropertyChangeListener(listener); - } - - /** - * Remove a PropertyChangeListener from the listener list. - * This removes a PropertyChangeListener that was registered - * for all properties. - * Iflistenerwas added more than once to the same event - * source, it will be notified one less time after being removed. - * Iflisteneris null, or was never added, no exception is - * thrown and no action is taken. - * - * @param listener The PropertyChangeListener to be removed - */ - public final void removePropertyChangeListener(PropertyChangeListener listener) { - pcs.removePropertyChangeListener(listener); - } - - /** - * Returns an array of all the listeners that were added to the - * PropertyChangeSupport object with addPropertyChangeListener(). - *- * If some listeners have been added with a named property, then - * the returned array will be a mixture of PropertyChangeListeners - * and
PropertyChangeListenerProxys. If the calling - * method is interested in distinguishing the listeners then it must - * test each element to see if it's a - *PropertyChangeListenerProxy, perform the cast, and examine - * the parameter. - * - *- * PropertyChangeListener[] listeners = bean.getPropertyChangeListeners(); - * for (int i = 0; i < listeners.length; i++) { - * if (listeners[i] instanceof PropertyChangeListenerProxy) { - * PropertyChangeListenerProxy proxy = - * (PropertyChangeListenerProxy)listeners[i]; - * if (proxy.getPropertyName().equals("foo")) { - * // proxy is a PropertyChangeListener which was associated - * // with the property named "foo" - * } - * } - * } - *- * - * @see java.beans.PropertyChangeListenerProxy - * @return all of thePropertyChangeListenersadded or an - * empty array if no listeners have been added - */ - public final PropertyChangeListener[] getPropertyChangeListeners() { - return pcs.getPropertyChangeListeners(); - } - - /** - * Add a PropertyChangeListener for a specific property. The listener - * will be invoked only when a call on firePropertyChange names that - * specific property. - * The same listener object may be added more than once. For each - * property, the listener will be invoked the number of times it was added - * for that property. - * IfpropertyNameorlisteneris null, no - * exception is thrown and no action is taken. - * - * @param propertyName The name of the property to listen on. - * @param listener The PropertyChangeListener to be added - */ - public final void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { - pcs.addPropertyChangeListener(propertyName, listener); - } - - /** - * Remove a PropertyChangeListener for a specific property. - * Iflistenerwas added more than once to the same event - * source for the specified property, it will be notified one less time - * after being removed. - * IfpropertyNameis null, no exception is thrown and no - * action is taken. - * Iflisteneris null, or was never added for the specified - * property, no exception is thrown and no action is taken. - * - * @param propertyName The name of the property that was listened on. - * @param listener The PropertyChangeListener to be removed - */ - public final void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { - pcs.removePropertyChangeListener(propertyName, listener); - } - - /** - * Returns an array of all the listeners which have been associated - * with the named property. - * - * @param propertyName The name of the property being listened to - * @return all of thePropertyChangeListenersassociated with - * the named property. If no such listeners have been added, - * or ifpropertyNameis null, an empty array is - * returned. - */ - public final PropertyChangeListener[] getPropertyChangeListeners(String propertyName) { - return pcs.getPropertyChangeListeners(propertyName); - } - - /** - * Report a bound property update to any registered listeners. - * No event is fired if old and new are equal and non-null. - * - *- * This is merely a convenience wrapper around the more general - * firePropertyChange method that takes {@code - * PropertyChangeEvent} value. - * - * @param propertyName The programmatic name of the property - * that was changed. - * @param oldValue The old value of the property. - * @param newValue The new value of the property. - */ - protected final void firePropertyChange(String propertyName, Object oldValue, Object newValue) { - pcs.firePropertyChange(propertyName, oldValue, newValue); - } - - /** - * Fire an existing PropertyChangeEvent to any registered listeners. - * No event is fired if the given event's old and new values are - * equal and non-null. - * @param evt The PropertyChangeEvent object. - */ - protected final void firePropertyChange(PropertyChangeEvent evt) { - pcs.firePropertyChange(evt); - } - - - /** - * Report a bound indexed property update to any registered - * listeners. - *
- * No event is fired if old and new values are equal - * and non-null. - * - *
- * This is merely a convenience wrapper around the more general - * firePropertyChange method that takes {@code PropertyChangeEvent} value. - * - * @param propertyName The programmatic name of the property that - * was changed. - * @param index index of the property element that was changed. - * @param oldValue The old value of the property. - * @param newValue The new value of the property. - */ - protected final void fireIndexedPropertyChange(String propertyName, - int index, Object oldValue, Object newValue) { - pcs.fireIndexedPropertyChange(propertyName, index, oldValue, newValue); - } - - /** - * Check if there are any listeners for a specific property, including - * those registered on all properties. If
propertyName- * is null, only check for listeners registered on all properties. - * - * @param propertyName the property name. - * @return true if there are one or more listeners for the given property - */ - protected final boolean hasPropertyChangeListeners(String propertyName) { - return pcs.hasListeners(propertyName); - } - - /** - * Check if there are any listeners for a specific property, including - * those registered on all properties. IfpropertyName- * is null, only check for listeners registered on all properties. - * - * @param propertyName the property name. - * @return true if there are one or more listeners for the given property - */ - protected final boolean hasVetoableChangeListeners(String propertyName) { - return vcs.hasListeners(propertyName); - } - - /** - * Add a VetoableListener to the listener list. - * The listener is registered for all properties. - * The same listener object may be added more than once, and will be called - * as many times as it is added. - * Iflisteneris null, no exception is thrown and no action - * is taken. - * - * @param listener The VetoableChangeListener to be added - */ - - public final void addVetoableChangeListener(VetoableChangeListener listener) { - vcs.addVetoableChangeListener(listener); - } - - /** - * Remove a VetoableChangeListener from the listener list. - * This removes a VetoableChangeListener that was registered - * for all properties. - * Iflistenerwas added more than once to the same event - * source, it will be notified one less time after being removed. - * Iflisteneris null, or was never added, no exception is - * thrown and no action is taken. - * - * @param listener The VetoableChangeListener to be removed - */ - public final void removeVetoableChangeListener(VetoableChangeListener listener) { - vcs.removeVetoableChangeListener(listener); - } - - /** - * Returns the list of VetoableChangeListeners. If named vetoable change listeners - * were added, then VetoableChangeListenerProxy wrappers will returned - *- * @return List of VetoableChangeListeners and VetoableChangeListenerProxys - * if named property change listeners were added. - */ - public final VetoableChangeListener[] getVetoableChangeListeners(){ - return vcs.getVetoableChangeListeners(); - } - - /** - * Add a VetoableChangeListener for a specific property. The listener - * will be invoked only when a call on fireVetoableChange names that - * specific property. - * The same listener object may be added more than once. For each - * property, the listener will be invoked the number of times it was added - * for that property. - * If
propertyNameorlisteneris null, no - * exception is thrown and no action is taken. - * - * @param propertyName The name of the property to listen on. - * @param listener The VetoableChangeListener to be added - */ - - public final void addVetoableChangeListener(String propertyName, - VetoableChangeListener listener) { - vcs.addVetoableChangeListener(propertyName, listener); - } - - /** - * Remove a VetoableChangeListener for a specific property. - * Iflistenerwas added more than once to the same event - * source for the specified property, it will be notified one less time - * after being removed. - * IfpropertyNameis null, no exception is thrown and no - * action is taken. - * Iflisteneris null, or was never added for the specified - * property, no exception is thrown and no action is taken. - * - * @param propertyName The name of the property that was listened on. - * @param listener The VetoableChangeListener to be removed - */ - - public final void removeVetoableChangeListener(String propertyName, - VetoableChangeListener listener) { - vcs.removeVetoableChangeListener(propertyName, listener); - } - - /** - * Returns an array of all the listeners which have been associated - * with the named property. - * - * @param propertyName The name of the property being listened to - * @return all theVetoableChangeListenersassociated with - * the named property. If no such listeners have been added, - * or ifpropertyNameis null, an empty array is - * returned. - */ - public final VetoableChangeListener[] getVetoableChangeListeners(String propertyName) { - return vcs.getVetoableChangeListeners(propertyName); - } - - /** - * Report a vetoable property update to any registered listeners. If - * anyone vetos the change, then fire a new event reverting everyone to - * the old value and then rethrow the PropertyVetoException. - *- * No event is fired if old and new are equal and non-null. - * - * @param propertyName The programmatic name of the property - * that is about to change.. - * @param oldValue The old value of the property. - * @param newValue The new value of the property. - * @exception PropertyVetoException if the recipient wishes the property - * change to be rolled back. - */ - protected final void fireVetoableChange(String propertyName, - Object oldValue, Object newValue) - throws PropertyVetoException { - vcs.fireVetoableChange(propertyName, oldValue, newValue); - } - - /** - * Fire a vetoable property update to any registered listeners. If - * anyone vetos the change, then fire a new event reverting everyone to - * the old value and then rethrow the PropertyVetoException. - *
- * No event is fired if old and new are equal and non-null. - * - * @param evt The PropertyChangeEvent to be fired. - * @exception PropertyVetoException if the recipient wishes the property - * change to be rolled back. - */ - protected final void fireVetoableChange(PropertyChangeEvent evt) - throws PropertyVetoException { - vcs.fireVetoableChange(evt); - } - - /** - * @inheritDoc - */ - public Object clone() throws CloneNotSupportedException { - AbstractBean result = (AbstractBean) super.clone(); - result.pcs = new PropertyChangeSupport(result); - result.vcs = new VetoableChangeSupport(result); - return result; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/BezierControlPoint.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/BezierControlPoint.java deleted file mode 100644 index be2bc4efbd9ca675436b1a3d1313ff24a665ecfb..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/BezierControlPoint.java +++ /dev/null @@ -1,265 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import java.awt.BasicStroke; -import java.awt.Graphics2D; -import java.awt.Shape; -import java.awt.geom.Ellipse2D; -import java.awt.geom.GeneralPath; -import java.awt.geom.Line2D; -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * BezierControlPoint - * - * @author Created by Jasper Potts (May 29, 2007) - */ -public class BezierControlPoint extends ControlPoint { - private HandleControlPoint cp1 = new HandleControlPoint(); - private HandleControlPoint cp2 = new HandleControlPoint(); - private transient boolean makingChange = false; - private transient PropertyChangeListener cpListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { -// if (!makingChange) { -// makingChange = true; -// if (evt.getSource() == cp1) { -// double angle = Math.tan((cp1.getY() - getY())/(cp1.getX() - getX())); -// double cp2len = Math.sqrt( -// Math.pow(cp2.getX() - getX(),2) + -// Math.pow(cp2.getY() - getY(),2) -// ); -// double offsetX = cp2len * Math.sin(angle); -// double offsetY = cp2len * Math.cos(angle); -// cp2.setPosition(getX() - offsetX, getY() - offsetY); -// } else { -// double angle = Math.tan((cp2.getY() - getY())/(cp2.getX() - getX())); -// double cp1len = Math.sqrt( -// Math.pow(cp1.getX() - getX(),2) + -// Math.pow(cp1.getY() - getY(),2) -// ); -// double offsetX = cp1len * Math.sin(angle); -// double offsetY = cp1len * Math.cos(angle); -// cp1.setPosition(getX() - offsetX, getY() - offsetY); -// } -//// if (evt.getSource() == cp1) { -//// double offsetX = cp1.getX() - getX(); -//// double offsetY = cp1.getY() - getY(); -//// cp2.setPosition(getX() - offsetX, getY() - offsetY); -//// } else { -//// double offsetX = cp2.getX() - getX(); -//// double offsetY = cp2.getY() - getY(); -//// cp1.setPosition(getX() - offsetX, getY() - offsetY); -//// } -// makingChange = false; -// firePropertyChange("cp1", null, cp1); -// firePropertyChange("cp2", null, cp1); -// } - firePropertyChange("shape",null,getShape()); - } - }; - - public BezierControlPoint() { - cp1.addPropertyChangeListener(cpListener); - cp2.addPropertyChangeListener(cpListener); - } - - public BezierControlPoint(double x, double y) { - super(x, y); - cp1.addPropertyChangeListener(cpListener); - cp2.addPropertyChangeListener(cpListener); - cp1.setPosition(x, y); - cp2.setPosition(x, y); - } - - public boolean isSharpCorner() { - return - (cp1.getX() == x.getValue()) && - (cp1.getY() == y.getValue()) && - (cp2.getX() == x.getValue()) && - (cp2.getY() == y.getValue()); - } - - public void flip(int width, int height){ - makingChange = true; - if (width > 0){ - x.setValue(width - x.getValue()); - cp1.x.setValue(width - cp1.x.getValue()); - cp2.x.setValue(width - cp2.x.getValue()); - } - if (height > 0){ - y.setValue(height - y.getValue()); - cp1.y.setValue(height - cp1.y.getValue()); - cp2.y.setValue(height - cp2.y.getValue()); - } - makingChange = false; - } - - public void convertToSharpCorner() { - cp1.setPosition(x.getValue(), y.getValue()); - cp2.setPosition(x.getValue(), y.getValue()); - } - - public List
getControlPoints() { - if (isSharpCorner()) { - return Collections.emptyList(); - } else { - List points = new ArrayList (); - points.add(cp1); - points.add(cp2); - return points; - } - } - - public HandleControlPoint getCp1() { - return cp1; - } - - public HandleControlPoint getCp2() { - return cp2; - } - - public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) { - g2.setStroke(new BasicStroke((float) pixelSize)); - // paint control line - g2.setColor(GraphicsHelper.BEZIER_CONTROL_LINE); - g2.draw(new Line2D.Double(cp1.getX(), cp1.getY(), getX(), getY())); - g2.draw(new Line2D.Double(getX(), getY(), cp2.getX(), cp2.getY())); - // paint this control point - Shape s; - if (isSharpCorner()) { - double size = pixelSize * 4d; - GeneralPath path = new GeneralPath(); - path.moveTo(getX() - size, getY()); - path.lineTo(getX(), getY() + size); - path.lineTo(getX() + size, getY()); - path.lineTo(getX(), getY() - size); - path.closePath(); - s = path; - } else { - double size = pixelSize * 3d; - s = new Ellipse2D.Double(getX() - size, getY() - size, - size * 2, size * 2); - } - g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_FILL); - g2.fill(s); - g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_LINE); - g2.draw(s); - // paint child control points - if (!isSharpCorner()) { - cp1.paintControls(g2, pixelSize, true); - cp2.paintControls(g2, pixelSize, true); - } - } - - - public void move(double moveX, double moveY, boolean snapPixels) { - makingChange = true; - super.move(moveX, moveY, snapPixels); - cp1.move(moveX, moveY, snapPixels); - cp2.move(moveX, moveY, snapPixels); - makingChange = false; - } - - public double getCp1X() { - return cp1.getX(); - } - - public void setCp1X(double v) { - cp1.setX(v); - } - - public double getCp1Y() { - return cp1.getY(); - } - - public void setCp1Y(double v) { - cp1.setY(v); - } - - public double getCp2X() { - return cp2.getX(); - } - - public void setCp2X(double v) { - cp2.setX(v); - } - - public double getCp2Y() { - return cp2.getY(); - } - - public void setCp2Y(double v) { - cp2.setY(v); - } - - // ================================================================================================================= - // Bezier handle control point - - public class HandleControlPoint extends ControlPoint { - - public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) { - if (!isSharp()){ - double size = pixelSize * 3d; - Shape s = new Ellipse2D.Double(getX() - size, getY() - size, - size * 2, size * 2); - g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_FILL); - g2.fill(s); - g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_LINE); - g2.draw(s); - g2.draw(new Rectangle2D.Double(getX() - (pixelSize / 2), getY() - (pixelSize / 2), pixelSize, pixelSize)); - } - } - - public boolean isHit(Point2D p, double pixelSize) { - return !isSharp() && super.isHit(p, pixelSize); - } - - /** - * Is the line controled by this handle in or out of the parent BezierControlPoint sharp. - * - * @return trueIf this is the exact same point as the parent BezierControlPoint. - */ - public boolean isSharp(){ - return x.getValue() == BezierControlPoint.this.x.getValue() && - y.getValue() == BezierControlPoint.this.y.getValue(); - } - - public void convertToSharp(){ - setPosition(BezierControlPoint.this.x.getValue(),BezierControlPoint.this.y.getValue()); - } - - public BezierControlPoint getParentControlPoint(){ - return BezierControlPoint.this; - } - } - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/BlendingMode.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/BlendingMode.java deleted file mode 100644 index ade7d08c39e652bad7d238e2b1cf6a4554b0fea9..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/BlendingMode.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - - -/** - * BlendingMode - Enum of composite blending modes, setup to match photoshop as closely as possible - * - * @author Created by Jasper Potts (May 31, 2007) - */ -public enum BlendingMode { - NORMAL, - // DISSOLVE, missing - // ----------------------------- - DARKEN, - MULTIPLY, - COLOR_BURN, - LINEAR_BURN, // (SUBTRACT) - // ----------------------------- - LIGHTEN, - SCREEN, - COLOR_DODGE, - LINEAR_DODGE, // (ADD) - // ----------------------------- - OVERLAY, - SOFT_LIGHT, - HARD_LIGHT, - VIVID_LIGHT, // (HEAT) is close - LINEAR_LIGHT, // (GLOW) is close - //PIN_LIGHT, missing - //HARD_MIX, missing - // ----------------------------- - DIFFERENCE, - EXCLUSION, - // ----------------------------- - HUE, // nowhere close - SATURATION, - COLOR, - LUMINOSITY, // close but not exact - //LIGHTER_COLOR, missing - //DARKER_COLOR, missing - ; - - - // ================================================================================================================= - // Helper methods for creating Blending Mode Combo Box - - public static final Object[] BLENDING_MODES = new Object[]{ - BlendingMode.NORMAL, - // DISSOLVE, missing - "-", - BlendingMode.DARKEN, - BlendingMode.MULTIPLY, - BlendingMode.COLOR_BURN, - BlendingMode.LINEAR_BURN, // (SUBTRACT) - "-", - BlendingMode.LIGHTEN, - BlendingMode.SCREEN, - BlendingMode.COLOR_DODGE, - BlendingMode.LINEAR_DODGE, // (ADD) - "-", - BlendingMode.OVERLAY, - BlendingMode.SOFT_LIGHT, - BlendingMode.HARD_LIGHT, - BlendingMode.VIVID_LIGHT, // (HEAT) is close - BlendingMode.LINEAR_LIGHT, // (GLOW) is close - //PIN_LIGHT, missing - //HARD_MIX, missing - "-", - BlendingMode.DIFFERENCE, - BlendingMode.EXCLUSION, - "-", - BlendingMode.HUE, // nowhere close - BlendingMode.SATURATION, - BlendingMode.COLOR, - BlendingMode.LUMINOSITY, // close but not exact - }; -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Canvas.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Canvas.java deleted file mode 100644 index 43f9cc621792a025eab9be8e31714bb2ce18b011..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Canvas.java +++ /dev/null @@ -1,308 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import org.jdesktop.beans.AbstractBean; -import org.jdesktop.swingx.designer.utils.HasResources; -import org.jdesktop.swingx.designer.utils.HasUIDefaults; -import org.jibx.runtime.IUnmarshallingContext; - -import javax.swing.UIDefaults; -import java.awt.AlphaComposite; -import java.awt.Dimension; -import java.awt.Graphics2D; -import java.awt.Insets; -import java.awt.RenderingHints; -import java.awt.image.BufferedImage; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.io.File; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -/** - * ComponentRegion - * - * @author Created by Jasper Potts (May 22, 2007) - */ -public class Canvas extends AbstractBean implements LayerContainer, HasUIDefaults, HasResources { - private Dimension size; - /** list of all layers in the canvas, the first layer is painted on top */ - private Listlayers; - private int nextLayerNameIndex = 1; - private BufferedImage buffer; - private boolean isValid = false; - private Insets stretchingInsets = null; - private Layer workingLayer = null; - private PropertyChangeListener layersPropertyChangeListener; - private UIDefaults canvasUIDefaults = null; - private transient File resourcesDir; - private transient File imagesDir; - private transient File templatesDir; - - // ================================================================================================================= - // Constructor - - /** Private constructor for JIBX */ - protected Canvas() { - layersPropertyChangeListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - isValid = false; - // pass on layer change - int index = layers.indexOf((Layer) evt.getSource()); - if (index != -1) { - firePropertyChange("layers[" + index + "]." + evt.getPropertyName(), evt.getOldValue(), - evt.getNewValue()); - } - } - }; - } - - public Canvas(int width, int height) { - this(); - stretchingInsets = new Insets(1, 1, 1, 1); - layers = new ArrayList (); - setSize(new Dimension(width, height)); - addLayer(new Layer()); - } - - // ================================================================================================================= - // JIBX Methods - - /** - * Called by JIBX before all fields have been set - * - * @param context The JIBX Unmarshalling Context - */ - private void preSet(IUnmarshallingContext context) { - canvasUIDefaults = (UIDefaults) context.getUserContext(); - } - - // ================================================================================================================= - // Bean Methods - - /** - * Get the UIDefaults for this canvas. The UIDefaults is used to store default pallet of colors, fonts etc. - * - * @return Canvas UIDefaults - */ - public UIDefaults getUiDefaults() { - return canvasUIDefaults; - } - - /** - * Set the UIDefaults for this canvas. The UIDefaults is used to store default pallet of colors, fonts etc. - * - * @param canvasUIDefaults Canvas UIDefaults - */ - public void setUiDefaults(UIDefaults canvasUIDefaults) { - this.canvasUIDefaults = canvasUIDefaults; - } - - /** - * Get the current working layer, is is the layer that new shapes will be drawn into - * - * @return The current working layer, may be null if there is no working layer - */ - public Layer getWorkingLayer() { - return workingLayer; - } - - /** - * Set the current working layer, is is the layer that new shapes will be drawn into - * - * @param workingLayer the new working layer, must be a child of this canvas - */ - public void setWorkingLayer(Layer workingLayer) { - Layer old = getWorkingLayer(); - this.workingLayer = workingLayer; - firePropertyChange("workingLayer", old, getWorkingLayer()); - } - - public int getNextLayerNameIndex() { - return nextLayerNameIndex++; - } - - public Dimension getSize() { - return size; - } - - public void setSize(Dimension size) { - Dimension old = getSize(); - this.size = size; - buffer = new BufferedImage(this.size.width, this.size.height, BufferedImage.TYPE_INT_ARGB); - isValid = false; - firePropertyChange("size", old, getSize()); - } - - - public Insets getStretchingInsets() { - return stretchingInsets; - } - - public void setStretchingInsets(Insets stretchingInsets) { - Insets old = getStretchingInsets(); - this.stretchingInsets = stretchingInsets; - firePropertyChange("stretchingInsets", old, getStretchingInsets()); - } - - public BufferedImage getRenderedImage() { - if (!isValid) { - Graphics2D g2 = buffer.createGraphics(); - // clear - g2.setComposite(AlphaComposite.Clear); - g2.fillRect(0, 0, buffer.getWidth(), buffer.getHeight()); - // paint - g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - g2.setComposite(AlphaComposite.SrcOver); - for (int i = layers.size() - 1; i >= 0; i--) { - layers.get(i).paint(g2, 1); - } - g2.dispose(); - } - return buffer; - } - - /** - * @return true if this Canvas has not been edited. - * - * TODO Currently this is not a bound property, but should be. That is, when the Canvas becomes edited - * (usually due to the Layer having a shape added to it), then a property change event should be fired. - */ - public boolean isBlank() { - return layers.size() == 0 || (layers.size() == 1 && layers.get(0).isEmpty()); - } - - public File getResourcesDir() { - return resourcesDir; - } - - public void setResourcesDir(File resourcesDir) { - File old = getResourcesDir(); - this.resourcesDir = resourcesDir; - firePropertyChange("resourcesDir", old, getResourcesDir()); - } - - public File getImagesDir() { - return imagesDir; - } - - public void setImagesDir(File imagesDir) { - File old = getImagesDir(); - this.imagesDir = imagesDir; - firePropertyChange("imagesDir", old, getImagesDir()); - } - - public File getTemplatesDir() { - return templatesDir; - } - - public void setTemplatesDir(File templatesDir) { - File old = getTemplatesDir(); - this.templatesDir = templatesDir; - firePropertyChange("templatesDir", old, getTemplatesDir()); - } - - // ================================================================================================================= - // LayerContainer Methods - - public LayerContainer getParent() { - // we are root so null - return null; - } - - public void addLayerToBottom(Layer layer) { - layers.add(layer); - layer.setParent(this); - layer.addPropertyChangeListener(layersPropertyChangeListener); - // no single layer changes so fire all changed event - firePropertyChange("layers", null, layers); - } - - public void addLayer(int i, Layer layer) { - layers.add(i, layer); - layer.setParent(this); - layer.addPropertyChangeListener(layersPropertyChangeListener); - // no single layer changes so fire all changed event - firePropertyChange("layers", null, layers); - } - - public void addLayer(Layer layer) { - layers.add(0, layer); - layer.setParent(this); - layer.addPropertyChangeListener(layersPropertyChangeListener); - // no single layer changes so fire all changed event - firePropertyChange("layers", null, layers); - } - - public Layer getLayer(int index) { - return layers.get(index); - } - - public int getLayerCount() { - return layers.size(); - } - - public Iterator getLayerIterator() { - return Collections.unmodifiableList(layers).iterator(); - } - - public Collection getLayers() { - return Collections.unmodifiableList(layers); - } - - public int indexOfLayer(Layer layer) { - return layers.indexOf(layer); - } - - public void removeLayer(Layer layer) { - int index = layers.indexOf(layer); - if (index != -1) { - layers.remove(layer); - layer.removePropertyChangeListener(layersPropertyChangeListener); - fireIndexedPropertyChange("layers", index, layer, null); - } - } - - public Dimension getRootSize() { - return getSize(); - } - - // ================================================================================================================= - // JIBX Helper Methods - - /** Called by JIBX after "layers" has been filled so we can set parents and listeners */ - private void setupLayers() { - for (Layer layer : layers) { - layer.setParent(this); - layer.addPropertyChangeListener(layersPropertyChangeListener); - } - // no single layer changes so fire all changed event - firePropertyChange("layers", null, layers); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/ControlPoint.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/ControlPoint.java deleted file mode 100644 index b4d231c5ca9cd3275658b6488c1785036b239ceb..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/ControlPoint.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.Shape; -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.Collections; -import java.util.List; - -/** - * ControlPoint - * - * @author Created by Jasper Potts (May 24, 2007) - */ -public class ControlPoint extends SimpleShape { - protected Color fillColor; - protected Color lineColor; - protected DoubleBean x, y; - - public ControlPoint() { - this(new DoubleBean(), new DoubleBean()); - } - - public ControlPoint(Color fillColor, Color lineColor) { - this(new DoubleBean(), new DoubleBean(), fillColor, lineColor); - } - - public ControlPoint(double x, double y) { - this(new DoubleBean(x), new DoubleBean(y)); - } - - public ControlPoint(DoubleBean x, DoubleBean y) { - this(x, y, GraphicsHelper.CONTROL_POINT_FILL, GraphicsHelper.CONTROL_POINT_LINE); - } - - public ControlPoint(DoubleBean x, DoubleBean y, Color fillColor, Color lineColor) { - this.x = x; - this.y = y; - this.fillColor = fillColor; - this.lineColor = lineColor; - x.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("position", - new Point2D.Double((Double) evt.getOldValue(), getY()), - getPosition()); - } - }); - y.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("position", - new Point2D.Double(getX(), (Double) evt.getOldValue()), - getPosition()); - } - }); - } - - public double getX() { - return x.getValue(); - } - - public double getY() { - return y.getValue(); - } - - public void setX(double x) { - this.x.setValue(x); - } - - public void setY(double y) { - this.y.setValue(y); - } - - public void setPosition(Point2D position) { - x.setValue(position.getX()); - y.setValue(position.getY()); - } - - public void setPosition(double x, double y) { - setPosition(new Point2D.Double(x, y)); - } - - public Point2D getPosition() { - return new Point2D.Double(getX(), getY()); - } - - public Rectangle2D getBounds(double pixelSize) { - double size = pixelSize * 4d; - return new Rectangle2D.Double(getX() - size, getY() - size, - size * 2, size * 2); - } - - public boolean isHit(Point2D p, double pixelSize) { - return getBounds(pixelSize).contains(p); - } - - - public Shape getShape() { - return getBounds(0); - } - - public void paint(Graphics2D g2, double pixelSize) { - } - - public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) { - g2.setStroke(new BasicStroke((float) pixelSize)); - Shape s = getBounds(pixelSize); - g2.setColor(fillColor); - g2.fill(s); - g2.setColor(lineColor); - g2.draw(s); - } - - public List getControlPoints() { - return Collections.emptyList(); - } - - - public void move(double moveX, double moveY, boolean snapPixels) { - if (snapPixels) { - setPosition( - Math.round(x.getValue() + moveX), - Math.round(y.getValue() + moveY)); - } else { - setPosition(x.getValue() + moveX, y.getValue() + moveY); - } - } - - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Designer.jibx.xml b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Designer.jibx.xml deleted file mode 100644 index 0f80bcf40989481b45ac56a9a1289f7523d45f8f..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Designer.jibx.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/DoubleBean.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/DoubleBean.java deleted file mode 100644 index 7297b809bfeb30e4c37c9b55d88df451bef806c5..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/DoubleBean.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import org.jdesktop.beans.AbstractBean; - -/** - * DoubleBean - Simple bean for a observable double value - * - * @author Created by Jasper Potts (May 25, 2007) - */ -public class DoubleBean extends AbstractBean { - private double value = 0; - - public DoubleBean() {} - - public DoubleBean(double value) { - this.value = value; - } - - public double getValue() { - return value; - } - - public void setValue(double value) { - double old = this.value; - this.value = value; - firePropertyChange("value", old, this.value); - } - - - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DoubleBean that = (DoubleBean) o; - - if (Double.compare(that.value, value) != 0) return false; - - return true; - } - - public int hashCode() { - long temp = value != +0.0d ? Double.doubleToLongBits(value) : 0L; - return (int) (temp ^ (temp >>> 32)); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/EllipseShape.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/EllipseShape.java deleted file mode 100644 index e0d12371697166ee8a45fa4cb362dd70a4da69f3..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/EllipseShape.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import javax.swing.*; -import java.awt.*; -import java.awt.geom.Ellipse2D; -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.List; - -/** - * EllipseShape - * - * @author Created by Jasper Potts (May 22, 2007) - */ -public class EllipseShape extends PaintedShape { - - private DoubleBean x1 = new DoubleBean(); - private DoubleBean x2 = new DoubleBean(); - private DoubleBean y1 = new DoubleBean(); - private DoubleBean y2 = new DoubleBean(); - private ControlPoint tl = new ControlPoint(x1, y1); - private ControlPoint tr = new ControlPoint(x2, y1); - private ControlPoint bl = new ControlPoint(x1, y2); - private ControlPoint br = new ControlPoint(x2, y2); - - // ================================================================================================================= - // Constructors - - /** private noargs constructor for JIBX */ - private EllipseShape() { - this(null); - } - - public EllipseShape(UIDefaults canvasUiDefaults) { - super(canvasUiDefaults); - PropertyChangeListener listener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("bounds", null, getBounds(0)); - } - }; - x1.addPropertyChangeListener(listener); - y1.addPropertyChangeListener(listener); - x2.addPropertyChangeListener(listener); - y2.addPropertyChangeListener(listener); - } - - public EllipseShape(double x, double y, double w, double h) { - this(); - x1.setValue(x); - y1.setValue(y); - x2.setValue(x + w); - y2.setValue(y + h); - } - - public Rectangle2D getBounds(double pixelSize) { - double left = Math.min(x1.getValue(), x2.getValue()); - double right = Math.max(x1.getValue(), x2.getValue()); - double top = Math.min(y1.getValue(), y2.getValue()); - double bottom = Math.max(y1.getValue(), y2.getValue()); - return new Rectangle2D.Double(left, top, right - left, bottom - top); - } - - public Ellipse2D getShape() { - double left = Math.min(x1.getValue(), x2.getValue()); - double right = Math.max(x1.getValue(), x2.getValue()); - double top = Math.min(y1.getValue(), y2.getValue()); - double bottom = Math.max(y1.getValue(), y2.getValue()); - return new Ellipse2D.Double(left, top, right - left, bottom - top); - } - - public boolean isHit(Point2D p, double pixelSize) { - return getBounds(pixelSize).contains(p); - } - - public void paint(Graphics2D g2, double pixelSize) { - g2.setPaint(getPaint()); - g2.fill(getShape()); - } - - public void setFrame(double x1, double y1, double x2, double y2) { - this.x1.setValue(x1); - this.y1.setValue(y1); - this.x2.setValue(x2); - this.y2.setValue(y2); - } - - @Override - public String toString() { - Rectangle2D bounds = getBounds(0); - return "ELLIPSE { x=" + bounds.getX() + ", y=" + bounds.getY() + ", w=" + bounds.getWidth() + ", h=" + bounds.getHeight() + " }"; - } - - public List- - -- - - - - - - - - - - - -- - -- -- - - - -- - - -- - - -- -- - - -- - - - - -- - - - - - - -- - - - - - - -- - -- -- - - - - - - -- - - - - - - - -- - -- - -- - - -- - - -- - - - -- - - - - - - - - -- - -- - -- - - - getControlPoints() { - List points = new ArrayList (); - points.addAll(super.getControlPoints()); - points.add(tl); - points.add(tr); - points.add(bl); - points.add(br); - return points; - } - - public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) { - if (paintControlLines) { - g2.setStroke(new BasicStroke((float) pixelSize)); - g2.setColor(GraphicsHelper.CONTROL_LINE); - g2.draw(getShape()); - } - tl.paintControls(g2, pixelSize, true); - tr.paintControls(g2, pixelSize, true); - bl.paintControls(g2, pixelSize, true); - br.paintControls(g2, pixelSize, true); -// super.paintControls(g2, pixelSize, paintControlLines); - } - - public void move(double moveX, double moveY, boolean snapPixels) { - if (snapPixels) { - x1.setValue(Math.round(x1.getValue() + moveX)); - x2.setValue(Math.round(x2.getValue() + moveX)); - y1.setValue(Math.round(y1.getValue() + moveY)); - y2.setValue(Math.round(y2.getValue() + moveY)); - } else { - x1.setValue(x1.getValue() + moveX); - x2.setValue(x2.getValue() + moveX); - y1.setValue(y1.getValue() + moveY); - y2.setValue(y2.getValue() + moveY); - } - } - - public double getX1() { - return x1.getValue(); - } - - public void setX1(double x1) { - this.x1.setValue(x1); - } - - public double getX2() { - return x2.getValue(); - } - - public void setX2(double x2) { - this.x2.setValue(x2); - } - - public double getY1() { - return y1.getValue(); - } - - public void setY1(double y1) { - this.y1.setValue(y1); - } - - public double getY2() { - return y2.getValue(); - } - - public void setY2(double y2) { - this.y2.setValue(y2); - } - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/GraphicsHelper.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/GraphicsHelper.java deleted file mode 100644 index 519c42e94e50052a060ed205cb5112f993890d3f..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/GraphicsHelper.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import java.awt.Color; - -/** - * GraphicsHelper - * - * @author Created by Jasper Potts (May 29, 2007) - */ -public class GraphicsHelper { - public static final Color FILL_LINE = Color.BLUE; - public static final Color FILL_CP_LINE = Color.BLUE; - public static final Color FILL_CP_FILL = Color.WHITE; - public static final Color CONTROL_LINE = Color.RED; - public static final Color CONTROL_POINT_LINE = Color.RED; - public static final Color CONTROL_POINT_FILL = Color.WHITE; - public static final Color BEZIER_CONTROL_POINT_LINE = CONTROL_POINT_LINE; - public static final Color BEZIER_CONTROL_POINT_FILL = CONTROL_POINT_FILL; - public static final Color BEZIER_CONTROL_LINE = Color.DARK_GRAY; - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Layer.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Layer.java deleted file mode 100644 index 3b112ae93fb1302a96149dddd1fd6659f36115bc..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/Layer.java +++ /dev/null @@ -1,443 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import org.jdesktop.swingx.designer.effects.Effect; - -import java.awt.Dimension; -import java.awt.Graphics2D; -import java.awt.Shape; -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; -import java.awt.image.BufferedImage; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -/** - * Layer - * - * @author Created by Jasper Potts (May 22, 2007) - */ -public class Layer extends SimpleShape implements Iterable , LayerContainer { - public static enum LayerType { - standard, template - } - - private String name; - protected LayerType type = LayerType.standard; - /** List of shapes in this layer, first shape is painted on top */ - private List shapes = new ArrayList (); - private List effects = new ArrayList (); - private double opacity = 1; - private double fillOpacity = 1; - private BlendingMode blendingMode = BlendingMode.NORMAL; - private boolean locked = false; - private boolean visible = true; - private PropertyChangeListener shapeChangeListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - int index = shapes.indexOf((SimpleShape) evt.getSource()); - firePropertyChange("shapes[" + index + "]." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - }; - private PropertyChangeListener effectChangeListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - int index = effects.indexOf((Effect) evt.getSource()); - System.out.println( - "Layer.propertyChange EFFECT PROPERTY CHANGED " + evt.getSource() + " -- " + evt.getPropertyName()); - firePropertyChange("effects[" + index + "]." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - }; - private BufferedImage buffer = null; - // ================================================================================================================= - // Constructors - - public Layer() { - } - - public Layer(String name) { - this(); - this.name = name; - } - - /** Called by JIBX after populating this layer so we can add listeners to children */ - protected void postInit() { - for (SimpleShape shape : shapes) { - shape.addPropertyChangeListener(shapeChangeListener); - shape.setParent(this); - } - for (Effect effect : effects) { - effect.addPropertyChangeListener(effectChangeListener); - } - } - - // ================================================================================================================= - // Bean Methods - - public LayerType getType() { - return type; - } - - public boolean isLocked() { - return locked; - } - - public void setLocked(boolean locked) { - boolean old = isLocked(); - this.locked = locked; - firePropertyChange("locked", old, isLocked()); - } - - public boolean isVisible() { - return visible; - } - - public void setVisible(boolean visible) { - boolean old = isVisible(); - this.visible = visible; - firePropertyChange("visible", old, isVisible()); - } - - public String getName() { - return name; - } - - public void setName(String name) { - String old = getName(); - this.name = name; - firePropertyChange("name", old, getName()); - } - - public void setParent(LayerContainer parent) { - super.setParent(parent); - // generate a name if null - if (name == null) { - Canvas c = null; - LayerContainer p = parent; - while (true) { - if (p instanceof Canvas) { - c = (Canvas) p; - break; - } else if (p == null) { - break; - } - p = p.getParent(); - } - if (c != null) { - setName("Layer " + c.getNextLayerNameIndex()); - } - } - } - - /** - * Add shape to top of layer so it paints above all other shapes - * - * @param shape The shape to add - */ - public void add(SimpleShape shape) { - shapes.add(0, shape); - shape.setParent(this); - shape.addPropertyChangeListener(shapeChangeListener); - fireIndexedPropertyChange("shapes", 0, null, shape); - } - - public void remove(SimpleShape shape) { - int index = shapes.indexOf(shape); - if (index != -1) { - shapes.remove(shape); - shape.setParent(null); - fireIndexedPropertyChange("shapes", index, shape, null); - } - } - - /** - * Returns an unmodifianle iterator over a set of elements of type SimpleShape. - * - * @return an Iterator. - */ - public Iterator iterator() { - return Collections.unmodifiableList(shapes).iterator(); - } - - - public List getEffects() { - return Collections.unmodifiableList(effects); - } - - public void addEffect(Effect effect) { - int index = effects.size(); - effects.add(effect); - effect.addPropertyChangeListener(effectChangeListener); - fireIndexedPropertyChange("effects", index, null, effects); - } - - public void removeEffect(Effect effect) { - int index = effects.indexOf(effect); - if (index != -1) { - effects.remove(effect); - effect.removePropertyChangeListener(effectChangeListener); - fireIndexedPropertyChange("effects", index, effect, null); - } - } - - public double getOpacity() { - return opacity; - } - - public void setOpacity(double opacity) { - if (opacity < 0 || opacity > 1) return; - double old = getOpacity(); - this.opacity = opacity; - firePropertyChange("opacity", old, getOpacity()); - } - - public double getFillOpacity() { - return fillOpacity; - } - - public void setFillOpacity(double fillOpacity) { - if (fillOpacity < 0 || fillOpacity > 1) return; - double old = getFillOpacity(); - this.fillOpacity = fillOpacity; - firePropertyChange("fillOpacity", old, getFillOpacity()); - } - - public BlendingMode getBlendingMode() { - return blendingMode; - } - - public void setBlendingMode(BlendingMode blendingMode) { - BlendingMode old = getBlendingMode(); - this.blendingMode = blendingMode; - firePropertyChange("blendingMode", old, getBlendingMode()); - } - - // ================================================================================================================= - // Layer Methods - - /** - * Get the parent canvas that contains this layer - * - * @return Parant canvas, or null if the layer is not in a canvas - */ - public Canvas getCanvas() { - LayerContainer lc = this; - while (lc != null) { - if (lc instanceof Canvas) return (Canvas) lc; - lc = lc.getParent(); - } - return null; - } - - public List getShapes() { - return new ArrayList (shapes); - } - - public List getIntersectingShapes(Point2D p, double pixelSize) { - if (isLocked() || !isVisible()) return Collections.emptyList(); - List intersectingShapes = new ArrayList (); - for (SimpleShape shape : shapes) { - if (shape instanceof Layer) { - intersectingShapes.addAll(((Layer) shape).getIntersectingShapes(p, pixelSize)); - } else { - if (shape.isHit(p, pixelSize)) intersectingShapes.add(shape); - } - } - return intersectingShapes; - } - - public List getIntersectingShapes(Rectangle2D rect, double pixelSize) { - if (isLocked() || !isVisible()) return Collections.emptyList(); - List intersectingShapes = new ArrayList (); - for (SimpleShape shape : shapes) { - if (shape instanceof Layer) { - intersectingShapes.addAll(((Layer) shape).getIntersectingShapes(rect, pixelSize)); - } else { - if (shape.intersects(rect, pixelSize)) intersectingShapes.add(shape); - } - } - return intersectingShapes; - - } - - public boolean isEmpty() { - return shapes.isEmpty(); - } - - // ================================================================================================================= - // SimpleShape Methods - - public Rectangle2D getBounds(double pixelSize) { - Rectangle2D.Double rect = new Rectangle2D.Double(); - for (SimpleShape shape : shapes) { - rect.add(shape.getBounds(pixelSize)); - } - return rect; - } - - - public Shape getShape() { - return getBounds(0); - } - - public boolean isHit(Point2D p, double pixelSize) { - if (isLocked() || !isVisible()) return false; - for (SimpleShape shape : shapes) { - if (shape.isHit(p, pixelSize)) return true; - } - return false; - } - - public boolean intersects(Rectangle2D rect, double pixelSize) { - if (isLocked() || !isVisible()) return false; - for (SimpleShape shape : shapes) { - if (shape.intersects(rect, pixelSize)) return true; - } - return false; - } - - public List getControlPoints() { - return Collections.emptyList(); - } - - public void paint(Graphics2D g2, double pixelSize) { - } - - public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) { - - } - - public String toString() { - return getName(); - } - - // ================================================================================================================= - // LayerContainer Methods - - public void addLayer(int i, Layer layer) { - // get existing layer at index i - Layer existingLayer = getLayer(i); - if (existingLayer == null) { - addLayer(layer); - } else { - int index = indexOfLayer(existingLayer); - shapes.add(index, layer); - layer.setParent(this); - layer.addPropertyChangeListener(shapeChangeListener); - fireIndexedPropertyChange("layers", index, null, layer); - } - } - - public void addLayer(Layer layer) { - shapes.add(layer); - layer.setParent(this); - layer.addPropertyChangeListener(shapeChangeListener); - int index = indexOfLayer(layer); - fireIndexedPropertyChange("layers", index, null, layer); - } - - public Layer getLayer(int index) { - int i = -1; - for (SimpleShape shape : shapes) { - if (shape instanceof Layer) i++; - if (i == index) return (Layer) shape; - } - return null; - } - - public int getLayerCount() { - int count = 0; - for (SimpleShape shape : shapes) { - if (shape instanceof Layer) count++; - } - return count; - } - - - public Collection getLayers() { - List layers = new ArrayList (); - for (SimpleShape shape : shapes) { - if (shape instanceof Layer) layers.add((Layer) shape); - } - return Collections.unmodifiableList(layers); - } - - public Iterator getLayerIterator() { - return new Iterator () { - private int index = 0; - - public boolean hasNext() { - for (int i = index; i < shapes.size(); i++) { - if (shapes.get(i) instanceof Layer) { - return true; - } - } - return false; - } - - public Layer next() { - for (; index < shapes.size(); index++) { - if (shapes.get(index) instanceof Layer) { - Layer nextLayer = (Layer) shapes.get(index); - index++; // increment index so we don't find the same one again - return nextLayer; - } - } - return null; - } - - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - - public int indexOfLayer(Layer layer) { - int i = -1; - for (SimpleShape s : shapes) { - if (s instanceof Layer) i++; - if (s == layer) return i; - } - return -1; - } - - public void removeLayer(Layer layer) { - int index = indexOfLayer(layer); - if (index != -1) { - shapes.remove(layer); - layer.removePropertyChangeListener(shapeChangeListener); - fireIndexedPropertyChange("layers", index, layer, null); - } - } - - - public Dimension getRootSize() { - return getParent().getRootSize(); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/LayerContainer.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/LayerContainer.java deleted file mode 100644 index b5af519cc39da8a9b9549699e977192f7038c089..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/LayerContainer.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import java.awt.Dimension; -import java.beans.PropertyChangeListener; -import java.util.Collection; -import java.util.Iterator; - -/** - * LayerContainer - * - * @author Created by Jasper Potts (May 31, 2007) - */ -public interface LayerContainer { - public void addPropertyChangeListener(PropertyChangeListener listener); - - public void removePropertyChangeListener(PropertyChangeListener listener); - - public LayerContainer getParent(); - - public void addLayer(Layer layer); - - public void addLayer(int i, Layer layer); - - public void removeLayer(Layer layer); - - public int getLayerCount(); - - public Layer getLayer(int index); - - public int indexOfLayer(Layer layer); - - public Iterator getLayerIterator(); - - public Collection getLayers(); - - /** - * Get the size in pixels of the root of the layer tree, this is usualy a canvas - * - * @return The size of the whole layer tree - */ - public Dimension getRootSize(); - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/PaintedShape.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/PaintedShape.java deleted file mode 100644 index 2d6d3cbf5996dd085674588da8784cf5b0cd8965..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/PaintedShape.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import org.jdesktop.swingx.designer.paint.Matte; -import org.jdesktop.swingx.designer.paint.PaintModel; - -import javax.swing.UIDefaults; -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.GradientPaint; -import java.awt.Graphics2D; -import java.awt.LinearGradientPaint; -import java.awt.Paint; -import java.awt.RadialGradientPaint; -import java.awt.Shape; -import java.awt.geom.Ellipse2D; -import java.awt.geom.Line2D; -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -/** - * PaintedShape - * - * @author Created by Jasper Potts (May 22, 2007) - */ -public abstract class PaintedShape extends SimpleShape { - - private PaintModel paint; - // control points for paint control types - private DoubleBean px1 = new DoubleBean(0.25); - private DoubleBean px2 = new DoubleBean(0.75); - private DoubleBean py1 = new DoubleBean(0); - private DoubleBean py2 = new DoubleBean(1); - private ControlPoint ptl = new PaintControlPoint(px1, py1); - private ControlPoint ptr = new PaintControlPoint(px2, py1); - private ControlPoint pbl = new PaintControlPoint(px1, py2); - private ControlPoint pbr = new PaintControlPoint(px2, py2); - private PropertyChangeListener paintListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("paint." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - }; - - protected PaintedShape() { - px1.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("x1", evt.getOldValue(), evt.getNewValue()); - } - }); - py1.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("y1", evt.getOldValue(), evt.getNewValue()); - } - }); - px2.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("x2", evt.getOldValue(), evt.getNewValue()); - } - }); - py2.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("y2", evt.getOldValue(), evt.getNewValue()); - } - }); - } - - protected PaintedShape(UIDefaults canvasUiDefaults) { - this(); - setPaintModel(new Matte(Color.ORANGE, canvasUiDefaults)); - } - - public PaintModel getPaintModel() { - return paint; - } - - public void setPaintModel(PaintModel paint) { - PaintModel old = getPaintModel(); - if (old != null) old.removePropertyChangeListener(paintListener); - this.paint = paint; - this.paint.addPropertyChangeListener(paintListener); - firePropertyChange("paintModel", old, getPaintModel()); - } - - public Paint getPaint() { - Paint p = getPaintModel().getPaint(); - if (p instanceof Color) { - return p; - } - //resize p as necessary to fit the bounds of this PaintedShape - Rectangle2D bounds = getBounds(0); - if (p instanceof LinearGradientPaint) { - LinearGradientPaint lgp = (LinearGradientPaint) p; - return new LinearGradientPaint( - convertLocalPoint(ptl.getPosition(), bounds), - convertLocalPoint(pbr.getPosition(), bounds), - lgp.getFractions(), - lgp.getColors()); - } else if (p instanceof RadialGradientPaint) { - RadialGradientPaint rgp = (RadialGradientPaint) p; - Point2D outer = convertLocalPoint(ptl.getPosition(), bounds); - Point2D center = convertLocalPoint(pbr.getPosition(), bounds); - double deltaX = Math.abs(center.getX() - outer.getX()); - double deltaY = Math.abs(center.getY() - outer.getY()); - float radius = (float) Math.sqrt((deltaX * deltaX) + (deltaY * deltaY)); - return new RadialGradientPaint( - center, - radius, - rgp.getFractions(), - rgp.getColors()); - } else { - return p; - } - } - - public List extends ControlPoint> getControlPoints() { - switch (paint.getPaintControlType()) { - case control_line: - return Arrays.asList(ptl, pbr); - case control_rect: - return Arrays.asList(ptl, ptr, pbl, pbr); - default: - return Collections.emptyList(); - } - } - - public void paintFillControls(Graphics2D g2, double pixelSize, boolean paintControlLines) { - switch (paint.getPaintControlType()) { - case control_line: - Point2D p1 = convertLocalPoint(ptl.getPosition(), PaintedShape.this.getBounds(0)); - Point2D p2 = convertLocalPoint(pbr.getPosition(), PaintedShape.this.getBounds(0)); - g2.setStroke(new BasicStroke((float) pixelSize)); - g2.setColor(GraphicsHelper.FILL_LINE); - g2.draw(new Line2D.Double(p1.getX(), p1.getY(), p2.getX(), p2.getY())); - ptl.paintControls(g2, pixelSize, true); - pbr.paintControls(g2, pixelSize, true); - break; - case control_rect: - g2.setStroke(new BasicStroke((float) pixelSize)); - g2.setColor(GraphicsHelper.FILL_LINE); - g2.draw(new Rectangle2D.Double( - px1.getValue(), - py1.getValue(), - px2.getValue() - px1.getValue(), - py2.getValue() - py1.getValue())); - ptl.paintControls(g2, pixelSize, true); - ptr.paintControls(g2, pixelSize, true); - pbl.paintControls(g2, pixelSize, true); - pbr.paintControls(g2, pixelSize, true); - break; - } - } - - public void move(double moveX, double moveY, boolean snapPixels) { - for (ControlPoint controlPoint : getControlPoints()) { - if (!(controlPoint instanceof PaintControlPoint)) controlPoint.move(moveX, moveY, snapPixels); - } - } - - public double getPaintX1() { - return px1.getValue(); - } - - public void setPaintX1(double x1) { - this.px1.setValue(x1); - } - - public double getPaintX2() { - return px2.getValue(); - } - - public void setPaintX2(double x2) { - this.px2.setValue(x2); - } - - public double getPaintY1() { - return py1.getValue(); - } - - public void setPaintY1(double y1) { - this.py1.setValue(y1); - } - - public double getPaintY2() { - return py2.getValue(); - } - - public void setPaintY2(double y2) { - this.py2.setValue(y2); - } - - // ================================================================================================================= - // Private helper methods - - private Point2D convertLocalPoint(Point2D point, Rectangle2D bounds) { - point.setLocation( - bounds.getX() + (point.getX() * bounds.getWidth()), - bounds.getY() + (point.getY() * bounds.getHeight()) - ); - return point; - } - - private Point2D convertScreenPoint(Point2D point, Rectangle2D bounds) { - return new Point2D.Double( - (point.getX() - bounds.getX()) / bounds.getWidth(), - (point.getY() - bounds.getY()) / bounds.getHeight() - ); - } - - // ================================================================================================================= - // Gradient ControlPoint - - /** - * A Special ControlPoint thats internal values are in coordinates relative to the shapes bounds. With 0,0 being the - * top left of the shape and 1.0X == shape width and 1.0Y == shapes height. - */ - public class PaintControlPoint extends ControlPoint { - public PaintControlPoint() { - super(GraphicsHelper.FILL_CP_FILL, GraphicsHelper.FILL_CP_LINE); - } - - public PaintControlPoint(DoubleBean x, DoubleBean y) { - super(x, y, GraphicsHelper.FILL_CP_FILL, GraphicsHelper.FILL_CP_LINE); - } - - public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) { - Point2D p = convertLocalPoint(getPosition(), PaintedShape.this.getBounds(0)); - g2.setStroke(new BasicStroke((float) pixelSize)); - double size = pixelSize * 4d; - Shape s = new Ellipse2D.Double(p.getX() - size, p.getY() - size, - size * 2, size * 2); - g2.setPaint(new GradientPaint( - (float) p.getX(), (float) (p.getY() - size), Color.CYAN, - (float) p.getX(), (float) (p.getY() + size), Color.WHITE - )); - g2.fill(s); - g2.setColor(GraphicsHelper.FILL_CP_LINE); - g2.draw(s); - } - - public void move(double moveX, double moveY, boolean snapPixels) { - Rectangle2D bounds = PaintedShape.this.getBounds(0); - moveX = moveX / bounds.getWidth(); - moveY = moveY / bounds.getHeight(); - if (snapPixels) { - // snap to neareast 0.5 - double newX = Math.round((x.getValue() + moveX) * 2d) / 2d; - double newY = Math.round((y.getValue() + moveY) * 2d) / 2d; - setPosition(newX, newY); - } else { - setPosition(x.getValue() + moveX, y.getValue() + moveY); - } - } - - public Rectangle2D getBounds(double pixelSize) { - Point2D p = convertLocalPoint(getPosition(), PaintedShape.this.getBounds(0)); - double size = pixelSize * 4d; - return new Rectangle2D.Double(p.getX() - size, p.getY() - size, - size * 2, size * 2); - } - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/PathShape.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/PathShape.java deleted file mode 100644 index 969972643636b4e4f41301b1692a89cd8c82056c..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/PathShape.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import javax.swing.*; -import java.awt.*; -import java.awt.geom.GeneralPath; -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.List; - -/** - * PathShape - * - * @author Created by Jasper Potts (May 29, 2007) - */ -public class PathShape extends PaintedShape { - - private Shape cachedShape = null; - private List controlPoints = new ArrayList (); - private PropertyChangeListener cpListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - rebuildShape(); - } - }; - - // ================================================================================================================= - // Constructors - - /** private noargs constructor for JIBX */ - private PathShape() { - this(null); - } - - public PathShape(UIDefaults canvasUiDefaults) { - super(canvasUiDefaults); - } - - public BezierControlPoint addPoint(double x, double y) { - BezierControlPoint cp = new BezierControlPoint(x, y); - controlPoints.add(cp); - cp.addPropertyChangeListener(cpListener); - // update shape - rebuildShape(); - // return new control point - return cp; - } - - public Shape getShape() { - if (cachedShape == null) { - rebuildShape(); - } - return cachedShape; - } - - private void rebuildShape() { - GeneralPath path = new GeneralPath(); - BezierControlPoint first, last; - first = last = controlPoints.get(0); - path.moveTo((float) first.getX(), (float) first.getY()); - for (int i = 0; i < controlPoints.size(); i++) { - BezierControlPoint controlPoint = controlPoints.get(i); - if (last.getCp2().isSharp() && controlPoint.getCp1().isSharp()) { - path.lineTo(controlPoint.getX(), controlPoint.getY()); - } else { - path.curveTo( - (float) last.getCp2().getX(), (float) last.getCp2().getY(), - (float) controlPoint.getCp1().getX(), (float) controlPoint.getCp1().getY(), - (float) controlPoint.getX(), (float) controlPoint.getY() - ); - } - last = controlPoint; - } - // close path - if (last.getCp2().isSharp() && first.getCp1().isSharp()) { - path.lineTo(first.getX(), first.getY()); - } else { - path.curveTo( - (float) last.getCp2().getX(), (float) last.getCp2().getY(), - (float) first.getCp1().getX(), (float) first.getCp1().getY(), - (float) first.getX(), (float) first.getY() - ); - } - path.closePath(); - // fire change - cachedShape = path; - firePropertyChange("shape", null, cachedShape); - } - - @Override - public String toString() { - String p = "PATH {\n"; - BezierControlPoint first, last; - first = last = controlPoints.get(0); - p += " path.moveTo(" + first.getX() + "," + first.getY() + ");"; - for (int i = 0; i < controlPoints.size(); i++) { - BezierControlPoint controlPoint = controlPoints.get(i); - p += " path.curveTo(" + - (float) last.getCp2().getX() + "," + (float) last.getCp2().getY() + "," + - (float) controlPoint.getCp1().getX() + "," + (float) controlPoint.getCp1().getY() + "," + - (float) controlPoint.getX() + "," + (float) controlPoint.getY() + - ");\n"; - last = controlPoint; - } - // close path - p += " path.curveTo(" + - (float) last.getCp2().getX() + "," + (float) last.getCp2().getY() + "," + - (float) first.getCp1().getX() + "," + (float) first.getCp1().getY() + "," + - (float) first.getX() + "," + (float) first.getY() + - ");\n"; - p += "}\n"; - return p; - } - - // ================================================================================================================= - // Shape Methods - - public Rectangle2D getBounds(double pixelSize) { - return getShape().getBounds2D(); - } - - public List extends ControlPoint> getControlPoints() { - List pts = new ArrayList (); - for (BezierControlPoint controlPoint : controlPoints) { - pts.add(controlPoint); - } - for (ControlPoint controlPoint : super.getControlPoints()) { - pts.add(controlPoint); - } - return pts; - } - - public void setControlPoints(List controlPoints) { - List old = this.controlPoints; - for (BezierControlPoint cp : old) { - cp.removePropertyChangeListener(cpListener); - } - this.controlPoints = controlPoints; - for (BezierControlPoint cp : this.controlPoints) { - cp.addPropertyChangeListener(cpListener); - } - // update shape - rebuildShape(); - } - - public boolean isHit(Point2D p, double pixelSize) { - return getShape().contains(p); - } - - public void paint(Graphics2D g2, double pixelSize) { - g2.setPaint(getPaint()); - g2.fill(getShape()); - } - - public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) { - if (paintControlLines) { - g2.setStroke(new BasicStroke((float) pixelSize)); - g2.setColor(GraphicsHelper.CONTROL_LINE); - g2.draw(getShape()); - } - for (BezierControlPoint controlPoint : controlPoints) { - if (!controlPoint.isSharpCorner()) controlPoint.paintControls(g2, pixelSize, true); - } - } - - public List getBezierControlPoints() { - return controlPoints; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/RectangleShape.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/RectangleShape.java deleted file mode 100644 index d93ef3f1ef5849749c9b816a98179dc5a0cf78d6..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/RectangleShape.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import javax.swing.*; -import java.awt.*; -import java.awt.geom.Ellipse2D; -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; -import java.awt.geom.RoundRectangle2D; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.List; - -/** - * RectangleShape - * - * @author Created by Jasper Potts (May 22, 2007) - */ -public class RectangleShape extends PaintedShape { - - private DoubleBean x1 = new DoubleBean(); - private DoubleBean x2 = new DoubleBean(); - private DoubleBean y1 = new DoubleBean(); - private DoubleBean y2 = new DoubleBean(); - private ControlPoint tl = new ControlPoint(x1, y1); - private ControlPoint tr = new ControlPoint(x2, y1); - private ControlPoint bl = new ControlPoint(x1, y2); - private ControlPoint br = new ControlPoint(x2, y2); - private DoubleBean roundingX = new DoubleBean() { - public void setValue(double value) { - // contrain y = y1 and x is between x1+1 and (x2-x1)/2 - boolean x1isLess = x1.getValue() < x2.getValue(); - double min = x1isLess ? x1.getValue() + 1 : x1.getValue() - 1; - double max = x1isLess ? x1.getValue() + ((x2.getValue() - x1.getValue()) / 2) : - x2.getValue() + ((x1.getValue() - x2.getValue()) / 2); - double newX = value; - if (newX < min) newX = min; - if (newX > max) newX = max; - super.setValue(newX); - } - }; - private ControlPoint rounding = new ControlPoint(roundingX, y1) { - public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) { - double size = pixelSize * 3d; - Shape s = new Ellipse2D.Double(getX() - size, getY() - size, - size * 2, size * 2); - g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_FILL); - g2.fill(s); - g2.setColor(GraphicsHelper.BEZIER_CONTROL_POINT_LINE); - g2.draw(s); - } - - public void setPosition(Point2D position) { - // only alow X to change - x.setValue(position.getX()); - } - - }; - - // ================================================================================================================= - // Constructors - - /** private noargs constructor for JIBX */ - private RectangleShape() { - this(null); - } - - public RectangleShape(UIDefaults canvasUiDefaults) { - super(canvasUiDefaults); - x1.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - // keep rounding point in sync - roundingX.setValue(roundingX.getValue() + - ((Double) evt.getNewValue() - (Double) evt.getOldValue())); - firePropertyChange("bounds", null, getBounds(0)); - } - }); - x2.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - // keep rounding point in sync - double distanceFromX1 = Math.abs(roundingX.getValue() - x1.getValue()); - roundingX.setValue( - (x1.getValue() < x2.getValue()) ? x1.getValue() + distanceFromX1 : - x1.getValue() - distanceFromX1 - ); - firePropertyChange("bounds", null, getBounds(0)); - } - }); - PropertyChangeListener listener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("bounds", null, getBounds(0)); - } - }; - y1.addPropertyChangeListener(listener); - y2.addPropertyChangeListener(listener); - rounding.addPropertyChangeListener(listener); - } - - public RectangleShape(double x, double y, double w, double h) { - this(); - x1.setValue(x); - y1.setValue(y); - x2.setValue(x + w); - y2.setValue(y + h); - } - - public Shape getShape() { - double rounding = getRounding(); - double left = Math.min(x1.getValue(), x2.getValue()); - double right = Math.max(x1.getValue(), x2.getValue()); - double top = Math.min(y1.getValue(), y2.getValue()); - double bottom = Math.max(y1.getValue(), y2.getValue()); - if (rounding > 0) { - return new RoundRectangle2D.Double( - left, top, right - left, bottom - top, rounding, rounding - ); - } else { - return new Rectangle2D.Double(left, top, right - left, bottom - top); - } - } - - public double getRounding() { - double rounding = Math.abs(roundingX.getValue() - x1.getValue()) * 2; - return rounding > 2 ? rounding : 0; - } - - public void setRounding(double rounding) { - if (rounding > 0 && rounding < 2) rounding = 0; - roundingX.setValue((rounding / 2d) + x1.getValue()); - } - - public boolean isRounded() { - return getRounding() > 0; - } - - public double getX1() { - return x1.getValue(); - } - - public void setX1(double x1) { - this.x1.setValue(x1); - } - - public double getX2() { - return x2.getValue(); - } - - public void setX2(double x2) { - this.x2.setValue(x2); - } - - public double getY1() { - return y1.getValue(); - } - - public void setY1(double y1) { - this.y1.setValue(y1); - } - - public double getY2() { - return y2.getValue(); - } - - public void setY2(double y2) { - this.y2.setValue(y2); - } - - // ================================================================================================================= - // SimpleShape Methods - - public Rectangle2D getBounds(double pixelSize) { - double left = Math.min(x1.getValue(), x2.getValue()); - double right = Math.max(x1.getValue(), x2.getValue()); - double top = Math.min(y1.getValue(), y2.getValue()); - double bottom = Math.max(y1.getValue(), y2.getValue()); - return new Rectangle2D.Double(left, top, right - left, bottom - top); - } - - public boolean isHit(Point2D p, double pixelSize) { - return getShape().contains(p); - } - - public void paint(Graphics2D g2, double pixelSize) { - g2.setPaint(getPaint()); - g2.fill(getShape()); - } - - public void setFrame(double x1, double y1, double x2, double y2) { - this.x1.setValue(x1); - this.y1.setValue(y1); - this.x2.setValue(x2); - this.y2.setValue(y2); - } - - @Override - public String toString() { - Rectangle2D bounds = getBounds(0); - if (isRounded()) { - return "ROUND RECT { x=" + bounds.getX() + ", y=" + bounds.getY() + ", w=" + bounds.getWidth() + ", h=" + bounds.getHeight() + ", rounding=" + getRounding() + " }"; - } else { - return "ROUND RECT { x=" + bounds.getX() + ", y=" + bounds.getY() + ", w=" + bounds.getWidth() + ", h=" + bounds.getHeight() + " }"; - } - } - - public List getControlPoints() { - List points = new ArrayList (); - points.addAll(super.getControlPoints()); - points.add(tl); - points.add(tr); - points.add(bl); - points.add(br); - points.add(rounding); - return points; - } - - public void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines) { - if (paintControlLines) { - g2.setStroke(new BasicStroke((float) pixelSize)); - g2.setColor(GraphicsHelper.CONTROL_LINE); - g2.draw(getShape()); - } - tl.paintControls(g2, pixelSize, true); - tr.paintControls(g2, pixelSize, true); - bl.paintControls(g2, pixelSize, true); - br.paintControls(g2, pixelSize, true); - rounding.paintControls(g2, pixelSize, true); - } - - public void move(double moveX, double moveY, boolean snapPixels) { - if (snapPixels) { - x1.setValue(Math.round(x1.getValue() + moveX)); - x2.setValue(Math.round(x2.getValue() + moveX)); - y1.setValue(Math.round(y1.getValue() + moveY)); - y2.setValue(Math.round(y2.getValue() + moveY)); - } else { - x1.setValue(x1.getValue() + moveX); - x2.setValue(x2.getValue() + moveX); - y1.setValue(y1.getValue() + moveY); - y2.setValue(y2.getValue() + moveY); - } - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/SimpleShape.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/SimpleShape.java deleted file mode 100644 index c001c0f42b1f3649e8c7a263b2669d952b61095a..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/SimpleShape.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import org.jdesktop.beans.AbstractBean; - -import java.awt.Graphics2D; -import java.awt.Shape; -import java.awt.geom.AffineTransform; -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; -import java.util.List; - -/** - * SimpleShape - * - * @author Created by Jasper Potts (May 22, 2007) - */ -public abstract class SimpleShape extends AbstractBean { - - protected AffineTransform transform = new AffineTransform(); - protected LayerContainer parent = null; - - public void applyTransform(AffineTransform t) { - transform.concatenate(t); - } - - public abstract Rectangle2D getBounds(double pixelSize); - - public abstract void paint(Graphics2D g2, double pixelSize); - - public abstract boolean isHit(Point2D p, double pixelSize); - - public boolean intersects(Rectangle2D rect, double pixelSize) { - return getBounds(pixelSize).intersects(rect); - } - - public abstract List extends ControlPoint> getControlPoints(); - - public abstract void paintControls(Graphics2D g2, double pixelSize, boolean paintControlLines); - - public void move(double moveX, double moveY, boolean snapPixels) { - for (ControlPoint controlPoint : getControlPoints()) { - controlPoint.move(moveX, moveY, snapPixels); - } - } - - public LayerContainer getParent() { - return parent; - } - - public void setParent(LayerContainer parent) { - LayerContainer old = getParent(); - this.parent = parent; - firePropertyChange("parent", old, getParent()); - } - - public abstract Shape getShape(); -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/TemplateLayer.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/TemplateLayer.java deleted file mode 100644 index d0e51c29ed9433c4a1776734cf542d36cf77c221..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/TemplateLayer.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer; - -import org.jdesktop.swingx.designer.effects.Effect; - -import javax.imageio.ImageIO; -import javax.swing.JOptionPane; -import javax.swing.SwingUtilities; -import java.awt.Color; -import java.awt.FontMetrics; -import java.awt.Graphics2D; -import java.awt.GraphicsConfiguration; -import java.awt.Image; -import java.awt.geom.Rectangle2D; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; -import java.lang.ref.SoftReference; - -/** - * TemplateLayer - * - * @author Created by Jasper Potts (Jul 2, 2007) - */ -public class TemplateLayer extends Layer { - - private String fileName; - private transient SoftReference imgRef = null; - - public TemplateLayer() { - type = LayerType.template; - } - - public TemplateLayer(String fileName, BufferedImage templateImage) { - super("Template"); - this.fileName = fileName; - type = LayerType.template; - if (templateImage != null) { - imgRef = new SoftReference (templateImage); - } - } - - // ================================================================================================================= - // Methods - - public String getName() { - return super.getName(); - } - - /** - * template layers are always locked - * - * @return true- */ - public boolean isLocked() { - return true; - } - - public void add(SimpleShape shape) { - throw new IllegalStateException("Template layers can't contain shapes"); - } - - public void addEffect(Effect effect) { - throw new IllegalStateException("Template layers can't contain effects"); - } - - public void addLayer(int i, Layer layer) { - throw new IllegalStateException("Template layers can't contain sub layers"); - } - - public void addLayer(Layer layer) { - throw new IllegalStateException("Template layers can't contain sub layers"); - } - - public void paint(Graphics2D g2, double pixelSize) { - if (isVisible()) { - BufferedImage img = getTemplateImage(); - if (img != null) g2.drawImage(img, 0, 0, null); - } - } - - - public Image getBuffer(GraphicsConfiguration graphicsConfiguration) { - return getTemplateImage(); - } - - public BufferedImage getTemplateImage() { - BufferedImage img = null; - if (imgRef == null || (img = imgRef.get()) == null) { - - // can not access canvas - final File templateImgFile = new File(getCanvas().getTemplatesDir(), fileName); - System.out.println("templateImgFile = " + templateImgFile.getAbsolutePath()); - System.out.println("templateImgFile.exists = " + templateImgFile.exists()); - try { - img = ImageIO.read(templateImgFile); - imgRef = new SoftReference(img); - } catch (IOException e) { - e.printStackTrace(); - // create error image - img = new BufferedImage(getCanvas().getSize().width, getCanvas().getSize().height, - BufferedImage.TYPE_INT_RGB); - Graphics2D g2 = img.createGraphics(); - g2.setColor(Color.RED); - g2.fillRect(0, 0, img.getWidth(), img.getHeight()); - g2.setColor(Color.WHITE); - g2.setFont(g2.getFont().deriveFont(8f)); - FontMetrics fontMetrics = g2.getFontMetrics(); - Rectangle2D stringBounds = fontMetrics.getStringBounds("Missing Image", g2); - int offsetX = (int) ((img.getWidth() - stringBounds.getWidth()) / 2d); - int offsetY = (int) (((img.getHeight() - stringBounds.getHeight()) / 2d) - stringBounds.getY()); - g2.drawString("Missing Image", offsetX, offsetY); - g2.dispose(); - imgRef = new SoftReference (img); - } - } - return img; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/DropShadowEffect.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/DropShadowEffect.java deleted file mode 100644 index ae95ea50ce367d879b83191c21760502ab8674d1..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/DropShadowEffect.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.effects; - -import org.jdesktop.swingx.designer.paint.Matte; - -import javax.swing.UIDefaults; -import java.awt.Color; -import java.awt.image.BufferedImage; -import java.awt.image.Raster; -import java.awt.image.WritableRaster; -import java.util.Arrays; - -/** - * DropShadowEffect - * - * @author Created by Jasper Potts (Jun 18, 2007) - */ -public class DropShadowEffect extends ShadowEffect { - - protected DropShadowEffect() {} - - ; - - public DropShadowEffect(UIDefaults uiDefaults) { - color = new Matte(Color.BLACK, uiDefaults); - } - - // ================================================================================================================= - // Effect Methods - - /** - * Get the display name for this effect - * - * @return The user displayable name - */ - public String getDisplayName() { - return "Drop Shadow"; - } - - /** - * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted - * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be - * painted. OVER means the result of apply effect should be painted over the src image. - * - * @return The effect type - */ - public EffectType getEffectType() { - return EffectType.UNDER; - } - - /** - * Apply the effect to the src image generating the result . The result image may or may not contain the source - * image depending on what the effect type is. - * - * @param src The source image for applying the effect to - * @param dst The dstination image to paint effect result into. If this is null then a new image will be created - * @param w The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than - * the area the need effect applied to it - * @param h The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than - * the area the need effect applied to it - * @return The result of appl - */ - public BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h) { - // calculate offset - double trangleAngle = Math.toRadians(angle - 90); - int offsetX = (int) (Math.sin(trangleAngle) * distance); - int offsetY = (int) (Math.cos(trangleAngle) * distance); - // clac expanded size - int tmpOffX = offsetX + size; - int tmpOffY = offsetY + size; - int tmpW = w + offsetX + size + size; - int tmpH = h + offsetY + size + size; - // create tmp buffers - int[] lineBuf = getTmpIntArray(w); - byte[] tmpBuf1 = getTmpByteArray1(tmpW * tmpH); - Arrays.fill(tmpBuf1, (byte) 0x00); - byte[] tmpBuf2 = getTmpByteArray2(tmpW * tmpH); - // extract src image alpha channel and inverse and offset - Raster srcRaster = src.getRaster(); - for (int y = 0; y < h; y++) { - int dy = (y + tmpOffY); - int offset = dy * tmpW; - srcRaster.getDataElements(0, y, w, 1, lineBuf); - for (int x = 0; x < w; x++) { - int dx = x + tmpOffX; - tmpBuf1[offset + dx] = (byte) ((lineBuf[x] & 0xFF000000) >>> 24); - } - } - // blur - float[] kernel = EffectUtils.createGaussianKernel(size); - EffectUtils.blur(tmpBuf1, tmpBuf2, tmpW, tmpH, kernel, size); // horizontal pass - EffectUtils.blur(tmpBuf2, tmpBuf1, tmpH, tmpW, kernel, size);// vertical pass - //rescale - float spread = Math.min(1 / (1 - (0.01f * this.spread)), 255); - for (int i = 0; i < tmpBuf1.length; i++) { - int val = (int) (((int) tmpBuf1[i] & 0xFF) * spread); - tmpBuf1[i] = (val > 255) ? (byte) 0xFF : (byte) val; - } - // create color image with shadow color and greyscale image as alpha - if (dst == null) dst = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); - WritableRaster shadowRaster = dst.getRaster(); - int red = color.getRed(), green = color.getGreen(), blue = color.getBlue(); - for (int y = 0; y < h; y++) { - int srcY = y + tmpOffY; - int shadowOffset = (srcY - offsetY) * tmpW; - for (int x = 0; x < w; x++) { - int srcX = x + tmpOffX; - lineBuf[x] = tmpBuf1[shadowOffset + (srcX - offsetX)] << 24 | red << 16 | green << 8 | blue; - } - shadowRaster.setDataElements(0, y, w, 1, lineBuf); - } - return dst; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/Effect.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/Effect.java deleted file mode 100644 index 7b8b697caaf5393968f2bd886683d9826864eef1..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/Effect.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.effects; - -import org.jdesktop.beans.AbstractBean; -import org.jdesktop.swingx.designer.BlendingMode; - -import java.awt.image.BufferedImage; -import java.lang.ref.SoftReference; - -/** - * Effect - * - * @author Created by Jasper Potts (Jun 18, 2007) - */ -public abstract class Effect extends AbstractBean { - protected boolean visible = true; - - public enum EffectType { - UNDER, BLENDED, OVER - } - - public boolean isVisible() { - return visible; - } - - public void setVisible(boolean visible) { - boolean old = isVisible(); - this.visible = visible; - firePropertyChange("visible", old, isVisible()); - } - - public String toString() { - return getDisplayName(); - } - - // ================================================================================================================= - // Abstract Methods - - /** - * Get the display name for this effect - * - * @return The user displayable name - */ - public abstract String getDisplayName(); - - /** - * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted - * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be - * painted. OVER means the result of apply effect should be painted over the src image. - * - * @return The effect type - */ - public abstract EffectType getEffectType(); - - /** - * Get the blending mode to use to paint the result effected image if the EffectType is UNDER or OVER. - * - * @return The blending mode for the effect - */ - public abstract BlendingMode getBlendingMode(); - - /** - * Get the opacity to use to paint the result effected image if the EffectType is UNDER or OVER. - * - * @return The opactity for the effect, 0.0f -> 1.0f - */ - public abstract float getOpacity(); - - /** - * Apply the effect to the src image generating the result . The result image may or may not contain the source - * image depending on what the effect type is. - * - * @param src The source image for applying the effect to - * @param dst The dstination image to paint effect result into. If this is null then a new image will be created - * @param w The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than - * the area the need effect applied to it - * @param h The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than - * the area the need effect applied to it - * @return The result of appl - */ - public abstract BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h); - - // ================================================================================================================= - // Static data cache - - private static SoftReference tmpIntArray = null; - private static SoftReference tmpByteArray1 = null; - private static SoftReference tmpByteArray2 = null; - private static SoftReference tmpByteArray3 = null; - - protected static int[] getTmpIntArray(int size) { - int[] tmp; - if (tmpIntArray == null || (tmp = tmpIntArray.get()) == null || tmp.length < size) { - // create new array - tmp = new int[size]; - tmpIntArray = new SoftReference (tmp); - } - return tmp; - } - - protected static byte[] getTmpByteArray1(int size) { - byte[] tmp; - if (tmpByteArray1 == null || (tmp = tmpByteArray1.get()) == null || tmp.length < size) { - // create new array - tmp = new byte[size]; - tmpByteArray1 = new SoftReference (tmp); - } - return tmp; - } - - protected static byte[] getTmpByteArray2(int size) { - byte[] tmp; - if (tmpByteArray2 == null || (tmp = tmpByteArray2.get()) == null || tmp.length < size) { - // create new array - tmp = new byte[size]; - tmpByteArray2 = new SoftReference (tmp); - } - return tmp; - } - - protected static byte[] getTmpByteArray3(int size) { - byte[] tmp; - if (tmpByteArray3 == null || (tmp = tmpByteArray3.get()) == null || tmp.length < size) { - // create new array - tmp = new byte[size]; - tmpByteArray3 = new SoftReference (tmp); - } - return tmp; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/EffectUtils.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/EffectUtils.java deleted file mode 100644 index 9a6876b5a5a041b9a7804ef2421c2c6978961f5a..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/EffectUtils.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.effects; - - -/** - * EffectUtils - * - * @author Created by Jasper Potts (Jun 18, 2007) - */ -public class EffectUtils { - - /** - * Blurs the source pixels into the destination pixels. The force of the blur is specified by the radius which - * must be greater than 0.
The source and destination pixels arrays are expected to be in the BYTE_GREY - * format.
After this method is executed, dstPixels contains a transposed and filtered copy of - * srcPixels.
- * - * @param srcPixels the source pixels - * @param dstPixels the destination pixels - * @param width the width of the source picture - * @param height the height of the source picture - * @param kernel the kernel of the blur effect - * @param radius the radius of the blur effect - */ - public static void blur(byte[] srcPixels, byte[] dstPixels, - int width, int height, - float[] kernel, int radius) { - float p; - int cp; - for (int y = 0; y < height; y++) { - int index = y; - int offset = y * width; - for (int x = 0; x < width; x++) { - p = 0.0f; - for (int i = -radius; i <= radius; i++) { - int subOffset = x + i; - if (subOffset < 0 || subOffset >= width) { - subOffset = (x + width) % width; - } - int pixel = srcPixels[offset + subOffset] & 0xFF; - float blurFactor = kernel[radius + i]; - p += blurFactor * pixel; - } - cp = (int) (p + 0.5f); - dstPixels[index] = (byte) (cp > 255 ? 255 : cp); - index += height; - } - } - } - - public static float[] createGaussianKernel(int radius) { - if (radius < 1) { - throw new IllegalArgumentException("Radius must be >= 1"); - } - - float[] data = new float[radius * 2 + 1]; - - float sigma = radius / 3.0f; - float twoSigmaSquare = 2.0f * sigma * sigma; - float sigmaRoot = (float) Math.sqrt(twoSigmaSquare * Math.PI); - float total = 0.0f; - - for (int i = -radius; i <= radius; i++) { - float distance = i * i; - int index = i + radius; - data[index] = (float) Math.exp(-distance / twoSigmaSquare) / sigmaRoot; - total += data[index]; - } - - for (int i = 0; i < data.length; i++) { - data[i] /= total; - } - - return data; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/EffectUtilsTemp.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/EffectUtilsTemp.java deleted file mode 100644 index 17bfd333f9bcd56dff8485aa6a69f31ede44442f..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/EffectUtilsTemp.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.effects; - -import java.awt.Composite; -import java.awt.CompositeContext; -import java.awt.Graphics2D; -import java.awt.RenderingHints; -import java.awt.image.BufferedImage; -import java.awt.image.ColorModel; -import java.awt.image.Raster; -import java.awt.image.WritableRaster; - -/** - * EffectUtilsTemp - effect utils methods that are not being used for now but we might want later - * - * @author Created by Jasper Potts (Jun 18, 2007) - */ -public class EffectUtilsTemp { - - /** - * Extract the alpha channel of a image into new greyscale buffered image - * - * @param src Must but INT_ARGB buffered image - * @return new TYPE_BYTE_GRAY image of just the alpha channel - */ - public static BufferedImage extractAlpha(BufferedImage src) { - int w = src.getWidth(); - int h = src.getHeight(); - // extract image alpha channel as greyscale image - final BufferedImage greyImg = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_GRAY); - Graphics2D g2 = greyImg.createGraphics(); - g2.setComposite(new Composite() { - public CompositeContext createContext(ColorModel srcColorModel, ColorModel dstColorModel, - RenderingHints hints) { - return new CompositeContext() { - public void dispose() {} - - public void compose(Raster src, Raster dstIn, WritableRaster dstOut) { - int width = Math.min(src.getWidth(), dstIn.getWidth()); - int height = Math.min(src.getHeight(), dstIn.getHeight()); - int[] srcPixels = new int[width]; - byte[] dstPixels = new byte[width]; - for (int y = 0; y < height; y++) { - src.getDataElements(0, y, width, 1, srcPixels); - for (int x = 0; x < width; x++) { - dstPixels[x] = (byte) ((srcPixels[x] & 0xFF000000) >>> 24); - } - dstOut.setDataElements(0, y, width, 1, dstPixels); - } - } - }; - } - }); - g2.drawImage(src, 0, 0, null); - g2.dispose(); - return greyImg; - } - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/InnerShadowEffect.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/InnerShadowEffect.java deleted file mode 100644 index 502c4a0537ef80e2b5b0a21f287ff3fb0c9c77e3..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/InnerShadowEffect.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.effects; - -import org.jdesktop.swingx.designer.paint.Matte; - -import javax.swing.UIDefaults; -import java.awt.Color; -import java.awt.image.BufferedImage; -import java.awt.image.Raster; -import java.awt.image.WritableRaster; -import java.util.Arrays; - -/** - * InnerShadowEffect - * - * @author Created by Jasper Potts (Jun 18, 2007) - */ -public class InnerShadowEffect extends ShadowEffect { - - protected InnerShadowEffect() {} - - ; - - public InnerShadowEffect(UIDefaults uiDefaults) { - color = new Matte(Color.BLACK, uiDefaults); - } - - // ================================================================================================================= - // Effect Methods - - /** - * Get the display name for this effect - * - * @return The user displayable name - */ - public String getDisplayName() { - return "Inner Shadow"; - } - - /** - * Get the type of this effect, one of UNDER,BLENDED,OVER. UNDER means the result of apply effect should be painted - * under the src image. BLENDED means the result of apply sffect contains a modified src image so just it should be - * painted. OVER means the result of apply effect should be painted over the src image. - * - * @return The effect type - */ - public Effect.EffectType getEffectType() { - return Effect.EffectType.OVER; - } - - /** - * Apply the effect to the src image generating the result . The result image may or may not contain the source - * image depending on what the effect type is. - * - * @param src The source image for applying the effect to - * @param dst The dstination image to paint effect result into. If this is null then a new image will be created - * @param w The width of the src image to apply effect to, this allow the src and dst buffers to be bigger than - * the area the need effect applied to it - * @param h The height of the src image to apply effect to, this allow the src and dst buffers to be bigger than - * the area the need effect applied to it - * @return The result of appl - */ - public BufferedImage applyEffect(BufferedImage src, BufferedImage dst, int w, int h) { - // calculate offset - double trangleAngle = Math.toRadians(angle - 90); - int offsetX = (int) (Math.sin(trangleAngle) * distance); - int offsetY = (int) (Math.cos(trangleAngle) * distance); - // clac expanded size - int tmpOffX = offsetX + size; - int tmpOffY = offsetY + size; - int tmpW = w + offsetX + size + size; - int tmpH = h + offsetY + size + size; - // create tmp buffers - int[] lineBuf = getTmpIntArray(w); - byte[] srcAlphaBuf = getTmpByteArray1(tmpW * tmpH); - Arrays.fill(srcAlphaBuf, (byte) 0xFF); - byte[] tmpBuf1 = getTmpByteArray2(tmpW * tmpH); - byte[] tmpBuf2 = getTmpByteArray3(tmpW * tmpH); - // extract src image alpha channel and inverse and offset - Raster srcRaster = src.getRaster(); - for (int y = 0; y < h; y++) { - int dy = (y + tmpOffY); - int offset = dy * tmpW; - srcRaster.getDataElements(0, y, w, 1, lineBuf); - for (int x = 0; x < w; x++) { - int dx = x + tmpOffX; - srcAlphaBuf[offset + dx] = (byte) ((255 - ((lineBuf[x] & 0xFF000000) >>> 24)) & 0xFF); - } - } - // blur - float[] kernel = EffectUtils.createGaussianKernel(size * 2); - EffectUtils.blur(srcAlphaBuf, tmpBuf2, tmpW, tmpH, kernel, size * 2); // horizontal pass - EffectUtils.blur(tmpBuf2, tmpBuf1, tmpH, tmpW, kernel, size * 2);// vertical pass - //rescale - float spread = Math.min(1 / (1 - (0.01f * this.spread)), 255); - for (int i = 0; i < tmpBuf1.length; i++) { - int val = (int) (((int) tmpBuf1[i] & 0xFF) * spread); - tmpBuf1[i] = (val > 255) ? (byte) 0xFF : (byte) val; - } - // create color image with shadow color and greyscale image as alpha - if (dst == null) dst = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); - WritableRaster shadowRaster = dst.getRaster(); - int red = color.getRed(), green = color.getGreen(), blue = color.getBlue(); - for (int y = 0; y < h; y++) { - int srcY = y + tmpOffY; - int offset = srcY * tmpW; - int shadowOffset = (srcY - offsetY) * tmpW; - for (int x = 0; x < w; x++) { - int srcX = x + tmpOffX; - int origianlAlphaVal = 255 - ((int) srcAlphaBuf[offset + srcX] & 0xFF); - int shadowVal = (int) tmpBuf1[shadowOffset + (srcX - offsetX)] & 0xFF; - int alphaVal = Math.min(origianlAlphaVal, shadowVal); - lineBuf[x] = ((byte) alphaVal & 0xFF) << 24 | red << 16 | green << 8 | blue; - } - shadowRaster.setDataElements(0, y, w, 1, lineBuf); - } - return dst; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/OuterGlowEffect.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/OuterGlowEffect.java deleted file mode 100644 index c431ed747eaa3eac19e86c9490fc7f245d0d59ed..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/OuterGlowEffect.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.effects; - -import org.jdesktop.swingx.designer.paint.Matte; - -import javax.swing.UIDefaults; -import java.awt.Color; - -/** - * OuterGlowEffect - * - * @author Created by Jasper Potts (Jun 21, 2007) - */ -public class OuterGlowEffect extends DropShadowEffect { - - protected OuterGlowEffect() { - distance = 0; - } - - public OuterGlowEffect(UIDefaults uiDefaults) { - color = new Matte(new Color(255, 255, 211), uiDefaults); - } - - /** - * Get the display name for this effect - * - * @return The user displayable name - */ - public String getDisplayName() { - return "Outer Glow"; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/ShadowEffect.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/ShadowEffect.java deleted file mode 100644 index 39620d5491191f354271195ccd30a306c3766fd1..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/effects/ShadowEffect.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.effects; - -import org.jdesktop.swingx.designer.BlendingMode; -import org.jdesktop.swingx.designer.paint.Matte; - -import javax.swing.UIDefaults; -import java.awt.Color; - -/** - * ShadowEffect - base class with all the standard properties for shadow effects - * - * @author Created by Jasper Potts (Jun 18, 2007) - */ -public abstract class ShadowEffect extends Effect { - protected Matte color; - protected BlendingMode blendingMode = BlendingMode.NORMAL; - /** Opacity a float 0-1 for percentage */ - protected float opacity = 0.75f; - /** Angle in degrees between 0-360 */ - protected int angle = 135; - /** Distance in pixels */ - protected int distance = 5; - /** The shadow spread between 0-100 % */ - protected int spread = 0; - /** Size in pixels */ - protected int size = 5; - - protected ShadowEffect() {} - - ; - - public ShadowEffect(UIDefaults uiDefaults) { - color = new Matte(Color.BLACK, uiDefaults); - } - - // ================================================================================================================= - // Bean methods - - public Matte getColor() { - return color; - } - - public void setColor(Matte color) { - Matte old = getColor(); - this.color = color; - firePropertyChange("color", old, getColor()); - } - - public BlendingMode getBlendingMode() { - return blendingMode; - } - - public void setBlendingMode(BlendingMode blendingMode) { - BlendingMode old = getBlendingMode(); - this.blendingMode = blendingMode; - firePropertyChange("blendingMode", old, getBlendingMode()); - } - - public float getOpacity() { - return opacity; - } - - public void setOpacity(float opacity) { - float old = getOpacity(); - this.opacity = opacity; - firePropertyChange("opacity", old, getOpacity()); - } - - public int getAngle() { - return angle; - } - - public void setAngle(int angle) { - int old = getAngle(); - this.angle = angle; - firePropertyChange("angle", old, getAngle()); - } - - public int getDistance() { - return distance; - } - - public void setDistance(int distance) { - int old = getDistance(); - this.distance = distance; - firePropertyChange("distance", old, getDistance()); - } - - public int getSpread() { - return spread; - } - - public void setSpread(int spread) { - int old = getSpread(); - this.spread = spread; - firePropertyChange("spread", old, getSpread()); - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - int old = getSize(); - this.size = size; - firePropertyChange("size", old, getSize()); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/font/Typeface.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/font/Typeface.java deleted file mode 100644 index 89d4675f3745e60652584943731abdaafff54b8c..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/font/Typeface.java +++ /dev/null @@ -1,484 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.font; - -import java.awt.Font; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import javax.swing.UIDefaults; -import org.jdesktop.beans.AbstractBean; -import org.jdesktop.swingx.designer.utils.HasUIDefaults; -import org.jibx.runtime.IUnmarshallingContext; - -/** - * I don't think the name is technically correct (ie: a typeface is not a font), - * but I wanted something besides "font" so, here it is. - * - * This is a mutable font, much like Matte is a mutable color. Also like Matte, - * Typeface can be derived. - * - * @author rbair - */ -public class Typeface extends AbstractBean { - //specifies whether to derive bold, or italic. - //Default means, get my value from my parent. - //Off means, leave bold/italic off. - //On means, make bold/italic on. - public enum DeriveStyle { Default, Off, On } - - private String uiDefaultParentName; - /** This is a local UIDefaults that contains all the UIDefaults in the Model. */ - private transient UIDefaults uiDefaults = new UIDefaults(); - private PropertyChangeListener uiDefaultsChangeListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - if (uiDefaultParentName != null && uiDefaultParentName.equals(evt.getPropertyName())) { - updateFontFromOffsets(); - } - } - }; - - /** - * The name of the font. If uiDefaultParentName is specified, then this name - * will be set to be equal to the name of the parent font. - */ - private String name; - /** - * The size of the font. If uiDefaultParentName is set, then this value is - * updated to reflect the size of the parent font * the sizeOffset. - */ - private int size; - - //this field is not publically accessible. Rather, it is updated based on - //"bold" and "italic" as necessary. - private int style = Font.PLAIN; - private DeriveStyle bold = DeriveStyle.Default; - private DeriveStyle italic = DeriveStyle.Default; - - /** - * The size offset. Only used if uiDefaultParentName is specified. This offset - * will be multiplied with the parent font's size to determine the size of this - * typeface. The offset is specified as a percentage, either positive or negative. - * - * The reason a percentage was used, was so that things would look correctly - * when scaled, such as with high DPI situations. - */ - private float sizeOffset; - - /** - * Create a new Typeface. Note that, without specifying the uiDefaults, - * you cannot have font derivation. Thus, this constructor should never - * be called, except for the XML binding stuff. - */ - public Typeface() { } - - /** - * Creates a new Typeface. - * - * @param f The font from which to get the font name, size, and style to use - * to initialize this typeface. Note that this font is not used as a parent - * font for derivation purposes. Rather, it is used as a source from which to - * copy initial settings. - * - * @param uiDefaults The uiDefaults to use for font derivation purposes. - * When the uiDefaultParentName is specified, then this Typeface will inspect - * the given UIDefaults for that parent font. Note that the UIDefaults - * should be populated with a font, and not with a typeface. - */ - public Typeface(Font f, UIDefaults uiDefaults) { - if (f != null) { - this.name = f.getName(); - this.size = f.getSize(); - this.style = f.getStyle(); - } - setUiDefaults(uiDefaults); - } - - // ================================================================================================================= - // JIBX Methods - - /** - * Called by JIBX after all fields have been set - * - * @param context The JIBX Unmarshalling Context - */ - protected void postSet(IUnmarshallingContext context) { - // walk up till we get synth model - for (int i = 0; i < context.getStackDepth(); i++) { - if (context.getStackObject(i) instanceof HasUIDefaults) { - UIDefaults uiDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults(); - if (uiDefaults != null) { - setUiDefaults(uiDefaults); - break; - } - } - } - } - - // ================================================================================================================= - // Typeface methods - - /** - * Is the Typeface an absolute Font not derived from a parent ui default - * - * @returntrueif this is a absolute not uidefault derived font - */ - public boolean isAbsolute() { - return uiDefaultParentName == null; - } - - /** - * Set all properties of this Typeface to be the same assrcand fire all the change events - * - * @param src the Typeface to copy properties from - */ - public void copy(Typeface src) { - // keep old values - Font oldFont = getFont(); - String oldParentName = uiDefaultParentName; - String oldName = name; - int oldSize = size; - float oldSizeOffset = sizeOffset; - DeriveStyle oldBold = bold, oldItalic = italic; - - style = src.style; - - //Note, I don't just call the setters here, because I want to make - //sure the "font" PCE is only fired once, at the end. - name = src.name; - firePropertyChange("name", oldName, name); - size = src.size; - firePropertyChange("size", oldSize, size); - bold = src.bold; - firePropertyChange("bold", oldBold, bold); - italic = src.italic; - firePropertyChange("italic", oldItalic, italic); - sizeOffset = src.sizeOffset; - firePropertyChange("sizeOffset", oldSizeOffset, sizeOffset); - uiDefaultParentName = src.uiDefaultParentName; - firePropertyChange("uiDefaultParentName", oldParentName, uiDefaultParentName); - setUiDefaults(src.uiDefaults); - firePropertyChange("font", oldFont, getFont()); - } - - // ================================================================================================================= - // Bean Methods - - /** - * Get the local UIDefaults that contains all the UIDefaults in the Model. - * - * @return The UIDefaults for the model that contains this Typeface, can be null if this Typeface is not part of a bigger - * model - */ - public UIDefaults getUiDefaults() { - return uiDefaults; - } - - /** - * Set the local UIDefaults that contains all the UIDefaults in the Model. - * - * @param uiDefaults The UIDefaults for the model that contains this Typeface, can be null if this Typeface is not part of - * a bigger model - */ - public void setUiDefaults(UIDefaults uiDefaults) { - if (uiDefaults != this.uiDefaults) { - UIDefaults old = getUiDefaults(); - if (old != null) old.removePropertyChangeListener(uiDefaultsChangeListener); - this.uiDefaults = uiDefaults; - if (uiDefaults != null) this.uiDefaults.addPropertyChangeListener(uiDefaultsChangeListener); - firePropertyChange("uiDefaults", old, getUiDefaults()); - } - } - - /** - * Get the name if the uidefault font that is the parent that this Typeface is derived from. If null then this is a - * absolute font. - * - * @return Parent font ui default name - */ - public String getUiDefaultParentName() { - return uiDefaultParentName; - } - - /** - * Set the name if the uidefault font that is the parent that this Typeface is derived from. If null then this is a - * absolute font. - * - * @param uiDefaultParentName Parent font ui default name - */ - public void setUiDefaultParentName(String uiDefaultParentName) { - String old = getUiDefaultParentName(); - this.uiDefaultParentName = uiDefaultParentName; - firePropertyChange("uiDefaultParentName", old, getUiDefaultParentName()); - if (isAbsolute()) { - // reset offsets - float oldSizeOffset = sizeOffset; - sizeOffset = 0; - firePropertyChange("sizeOffset", oldSizeOffset, sizeOffset); - } else { - updateFontFromOffsets(); - } - } - - /** - * @return Gets the name of the font - */ - public final String getName() { - return name; - } - - /** - * Sets the name of the font. This method call only works if - *isAbsolutereturns true. Otherwise, it is ignored. - * @param name the name of the font - */ - public void setName(String name) { - if (isAbsolute()) { - String old = this.name; - Font oldF = getFont(); - this.name = name; - firePropertyChange("name", old, this.name); - firePropertyChange("font", oldF, getFont()); - } - } - - /** - * @return gets the size of the font. - */ - public final int getSize() { - return size; - } - - /** - *Sets the size of the font. THis method call will work whether - *
- * - *isAbsolutereturns true or false. If this is an absolute - * typeface, then the size is set directly. Otherwise, if this is a - * derived typeface, then the sizeOffset will be updated to reflect the - * proper offset based on this size, and the size of the parent font.For example, if the parent font's size was 12, and the sizeOffset was - * -2 (thus yielding as size on this typeface of 10), and you call setSize - * passing in "14" as the size, then the sizeOffset will be updated to be - * equal to "2".
- * - * @param size the new size for this typeface. - */ - public void setSize(int size) { - int old = this.size; - Font oldF = getFont(); - this.size = size; - firePropertyChange("size", old, this.size); - firePropertyChange("font", oldF, getFont()); - updateOffsetsFromFont(); - } - - /** - * @return the size offset - */ - public final float getSizeOffset() { - return sizeOffset; - } - - /** - * Sets the percentage by which the size of this font should be different - * from its parent font. This property is kept in synch with the size property. - * - * @param sizeOffset the size offset. May be any float. The value "1" means, - * 100%. -1 means "-100%". 2 means "200%", and so on. - */ - public void setSizeOffset(float sizeOffset) { - float old = this.sizeOffset; - Font oldF = getFont(); - this.sizeOffset = sizeOffset; - firePropertyChange("sizeOffset", old, this.sizeOffset); - firePropertyChange("font", oldF, getFont()); - updateFontFromOffsets(); - } - - public DeriveStyle getBold() { - return bold; - } - - public void setBold(DeriveStyle bold) { - DeriveStyle old = this.bold; - this.bold = bold == null ? DeriveStyle.Default : bold; - firePropertyChange("bold", old, this.bold); - updateFontFromOffsets(); - } - - public DeriveStyle getItalic() { - return italic; - } - - public void setItalic(DeriveStyle italic) { - DeriveStyle old = this.italic; - this.italic = italic == null ? DeriveStyle.Default : italic; - firePropertyChange("italic", old, this.italic); - updateFontFromOffsets(); - } - - /** - * @return whether or not the font represented by this typeface is supported - * on this operating system platform. - */ - public boolean isFontSupported() { - return true;//Font.getFont(name) != null; - } - - /** - * @return Gets the font associated with this Typeface. If font derivation is - * being used, then the Font returned is the result of that derivation. - */ - public Font getFont() { - return new Font(name, style, size); - } - - /** - * Sets the font from which this Typeface should extract the font name, style, - * and size. If font derivation is being used, then the font name will be ignored, - * the style will be used (and always override the parent font), and the size - * will be set and the sizeOffset updated appropriately. - * - * @param f the Font - */ - public void setFont(Font f) { - Font oldFont = getFont(); - String oldName = name; - int oldSize = size; - DeriveStyle oldBold = bold, oldItalic = italic; - name = f.getName(); - size = f.getSize(); - style = f.getStyle(); - updateOffsetsFromFont(); - firePropertyChange("name", oldName, name); - firePropertyChange("size", oldSize, size); - firePropertyChange("bold", oldBold, bold); - firePropertyChange("italic", oldItalic, italic); - firePropertyChange("font", oldFont, getFont()); - } - - /** - * @inheritDoc - * - * @return A formatted string representing this Typeface. This String should - * not be considered public API, as it may change in a future release. - */ - @Override public String toString() { - Font f = getFont(); - String strStyle; - if (f.isBold()) { - strStyle = f.isItalic() ? "bolditalic" : "bold"; - } else { - strStyle = f.isItalic() ? "italic" : "plain"; - } - - if (isAbsolute()) { - return Typeface.class.getName() + "[name=" + name + ", size=" + size + ", style=" + strStyle + "]"; - } else { - return Typeface.class.getName() + "[base=" + uiDefaultParentName + - ", name=" + name + ", size=" + size + "(offset " + sizeOffset + ")" + - ", style=" + strStyle + "]"; - } - } - - @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Typeface typeface = (Typeface) o; - if (!typeface.name.equals(name)) return false; - if (size != typeface.size) return false; - if (bold != typeface.bold) return false; - if (italic != typeface.italic) return false; - if (sizeOffset != typeface.sizeOffset) return false; - if (uiDefaultParentName != null ? !uiDefaultParentName.equals(typeface.uiDefaultParentName) : - typeface.uiDefaultParentName != null) return false; - return true; - } - - @Override public int hashCode() { - int result; - result = name.hashCode(); - result = 31 * result + size; - result = 31 * result + bold.ordinal(); - result = 31 * result + italic.ordinal(); - result = 31 * result + (int)(sizeOffset*100); - result = 31 * result + (uiDefaultParentName != null ? uiDefaultParentName.hashCode() : 0); - return result; - } - - @Override public Typeface clone() { - Typeface clone = new Typeface(); - clone.name = name; - clone.size = size; - clone.style = style; - clone.bold = bold; - clone.italic = italic; - clone.sizeOffset = sizeOffset; - clone.uiDefaultParentName = uiDefaultParentName; - clone.setUiDefaults(uiDefaults); - return clone; - } - - // ================================================================================================================= - // Private Helper Methods - - private void updateOffsetsFromFont() { - if (!isAbsolute()) { - float oldSizeOffset = sizeOffset; - Font parentFont = uiDefaults.getFont(uiDefaultParentName); - if (parentFont != null) { - float s = size; - float p = parentFont.getSize(); - sizeOffset = (s/p) - 1f; - firePropertyChange("sizeOffset", oldSizeOffset, sizeOffset); - } - } - } - - private void updateFontFromOffsets() { - if (!isAbsolute()) { - Font oldFont = getFont(); - // get parent font data - Font parentFont = uiDefaults.getFont(uiDefaultParentName); - if (parentFont != null) { - String oldName = name; - int oldSize = size; - - name = parentFont.getName(); - size = Math.round(parentFont.getSize() * (1f + sizeOffset)); - - boolean isBold = (bold == DeriveStyle.Default && parentFont.isBold()) || bold == DeriveStyle.On; - boolean isItalic = (italic == DeriveStyle.Default && parentFont.isItalic()) || italic == DeriveStyle.On; - style = Font.PLAIN; - if (isBold) style = style | Font.BOLD; - if (isItalic) style = style | Font.ITALIC; - - // update fire events - firePropertyChange("name", oldName, name); - firePropertyChange("size", oldSize, size); - firePropertyChange("font", oldFont, getFont()); - } - } - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/CanvasMapper.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/CanvasMapper.java deleted file mode 100644 index 6c201fd0feece936056c5b4f90294dcb957f408c..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/CanvasMapper.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.jibxhelpers; - -import org.jdesktop.swingx.designer.Canvas; -import org.jdesktop.swingx.designer.utils.HasPath; -import org.jdesktop.swingx.designer.utils.HasResources; -import org.jdesktop.swingx.designer.utils.HasUIDefaults; -import org.jibx.runtime.BindingDirectory; -import org.jibx.runtime.IBindingFactory; -import org.jibx.runtime.IMarshallable; -import org.jibx.runtime.IMarshaller; -import org.jibx.runtime.IMarshallingContext; -import org.jibx.runtime.IUnmarshaller; -import org.jibx.runtime.IUnmarshallingContext; -import org.jibx.runtime.JiBXException; -import org.jibx.runtime.impl.MarshallingContext; -import org.jibx.runtime.impl.UnmarshallingContext; - -import javax.swing.UIDefaults; -import java.io.File; - -/** - * CanvasMapper - * - * @author Created by Jasper Potts (Jun 12, 2007) - */ -public class CanvasMapper implements IMarshaller, IUnmarshaller { - private static final String ELEMENT_NAME = "canvas"; - private IBindingFactory bindingFactory; - - - public CanvasMapper() { - try { - bindingFactory = BindingDirectory.getFactory(Canvas.class); - } catch (JiBXException e) { - e.printStackTrace(); - } - } - - public boolean isExtension(int i) { - return false; - } - - public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - return iUnmarshallingContext.isAt(null, ELEMENT_NAME); - } - - public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException { - if (!(object instanceof Canvas)) { - throw new JiBXException("Invalid object type for marshaller"); - } else if (!(iMarshallingContext instanceof MarshallingContext)) { - throw new JiBXException("Invalid object type for marshaller"); - } else { - // version found, create marshaller for the associated binding -// IBindingFactory bindingFactory = BindingDirectory.getFactory(object.getClass()); - MarshallingContext context = (MarshallingContext) bindingFactory.createMarshallingContext(); - // configure marshaller for writing document - context.setXmlWriter(iMarshallingContext.getXmlWriter()); - // output object as document - ((IMarshallable) object).marshal(context); - } - } - - public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - // make sure we're at the appropriate start tag - UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext; - if (!ctx.isAt(null, ELEMENT_NAME)) { - ctx.throwStartTagNameError(null, ELEMENT_NAME); - } - -// IBindingFactory bindingFactory = BindingDirectory.getFactory(Canvas.class); - UnmarshallingContext uctx = (UnmarshallingContext) bindingFactory.createUnmarshallingContext(); - uctx.setFromContext(ctx); - // get the uiDefaults from SynthModel and set them as user context - UIDefaults uiDefaults = ((HasUIDefaults) ctx.getStackObject(ctx.getStackDepth() - 1)).getUiDefaults(); - uctx.setUserContext(uiDefaults); - // get has resources - HasResources hasResources = (HasResources) ctx.getStackObject(ctx.getStackDepth() - 1); - // get path - HasPath hasPath = null; - for (int i = 0; i < ctx.getStackDepth(); i++) { - if (ctx.getStackObject(i) instanceof HasPath) { - hasPath = (HasPath) ctx.getStackObject(i); - break; - } - } - // Unmarshal the Canvas - Canvas canvas = (Canvas) uctx.unmarshalElement(); - // set canvas's ui defaults - canvas.setUiDefaults(uiDefaults); - // get canvas path - String canvasPath = hasPath.getPath(); - // calc and set resources - canvas.setResourcesDir(new File(hasResources.getResourcesDir(), canvasPath)); - canvas.setTemplatesDir(new File(hasResources.getTemplatesDir(), canvasPath)); - canvas.setImagesDir(new File(hasResources.getImagesDir(), canvasPath)); - // return canvas - return canvas; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/ColorMapper.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/ColorMapper.java deleted file mode 100644 index 81cc738506f1adc481adc7e8dd65ce0302162a29..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/ColorMapper.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.jibxhelpers; - -import org.jibx.runtime.IMarshaller; -import org.jibx.runtime.IMarshallingContext; -import org.jibx.runtime.IUnmarshaller; -import org.jibx.runtime.IUnmarshallingContext; -import org.jibx.runtime.JiBXException; -import org.jibx.runtime.impl.MarshallingContext; -import org.jibx.runtime.impl.UnmarshallingContext; - -import java.awt.Color; - -/** - * ColorMapper - * - * @author Created by Jasper Potts (Jun 8, 2007) - */ -public class ColorMapper implements IMarshaller, IUnmarshaller { - private static final String ELEMENT_NAME = "color"; - private static final String RED_NAME = "red"; - private static final String GREEN_NAME = "green"; - private static final String BLUE_NAME = "blue"; - private static final String ALPHA_NAME = "alpha"; - - public boolean isExtension(int i) { - return false; - } - - public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - return iUnmarshallingContext.isAt(null, ELEMENT_NAME); - } - - public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException { - if (!(object instanceof Color)) { - throw new JiBXException("Invalid object type for marshaller"); - } else if (!(iMarshallingContext instanceof MarshallingContext)) { - throw new JiBXException("Invalid object type for marshaller"); - } else { - MarshallingContext ctx = (MarshallingContext) iMarshallingContext; - Color color = (Color) object; - ctx.startTagAttributes(0, ELEMENT_NAME). - attribute(0, RED_NAME, color.getRed()). - attribute(0, GREEN_NAME, color.getGreen()). - attribute(0, BLUE_NAME, color.getBlue()). - attribute(0, ALPHA_NAME, color.getAlpha()). - closeStartEmpty(); - } - } - - public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - // make sure we're at the appropriate start tag - UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext; - if (!ctx.isAt(null, ELEMENT_NAME)) { - ctx.throwStartTagNameError(null, ELEMENT_NAME); - } - // get values - int red = ctx.attributeInt(null, RED_NAME, 0); - int green = ctx.attributeInt(null, GREEN_NAME, 0); - int blue = ctx.attributeInt(null, BLUE_NAME, 0); - int alpha = ctx.attributeInt(null, ALPHA_NAME, 0); - ctx.parsePastEndTag(null, ELEMENT_NAME); - // create - return new Color(red, green, blue, alpha); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/DimensionMapper.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/DimensionMapper.java deleted file mode 100644 index 44a0f264bf020637c2243ad1219d351776dd8ff3..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/DimensionMapper.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.jibxhelpers; - -import org.jibx.runtime.IAliasable; -import org.jibx.runtime.IMarshaller; -import org.jibx.runtime.IMarshallingContext; -import org.jibx.runtime.IUnmarshaller; -import org.jibx.runtime.IUnmarshallingContext; -import org.jibx.runtime.JiBXException; -import org.jibx.runtime.impl.MarshallingContext; -import org.jibx.runtime.impl.UnmarshallingContext; - -import java.awt.Dimension; - -/** - * DimensionMapper - * - * @author Created by Jasper Potts (Jun 12, 2007) - */ -public class DimensionMapper implements IMarshaller, IUnmarshaller, IAliasable { - private static final String ELEMENT_NAME = "dimension"; - private static final String WIDTH_NAME = "width"; - private static final String HEIGHT_NAME = "height"; - - private String uri; - private int index; - private String name; - - public DimensionMapper() { - uri = null; - index = 0; - name = ELEMENT_NAME; - } - - public DimensionMapper(String uri, int index, String name) { - this.uri = uri; - this.index = index; - this.name = name; - } - - public boolean isExtension(int i) { - return false; - } - - public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - return iUnmarshallingContext.isAt(uri, ELEMENT_NAME); - } - - public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException { - if (!(object instanceof Dimension)) { - throw new JiBXException("Invalid object type for marshaller"); - } else if (!(iMarshallingContext instanceof MarshallingContext)) { - throw new JiBXException("Invalid object type for marshaller"); - } else { - MarshallingContext ctx = (MarshallingContext) iMarshallingContext; - Dimension dimension = (Dimension) object; - ctx.startTagAttributes(index, name). - attribute(index, WIDTH_NAME, dimension.width). - attribute(index, HEIGHT_NAME, dimension.height). - closeStartEmpty(); - } - } - - public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - // make sure we're at the appropriate start tag - UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext; - if (!ctx.isAt(uri, name)) { - ctx.throwStartTagNameError(uri, name); - } - // get values - int width = ctx.attributeInt(uri, WIDTH_NAME, index); - int height = ctx.attributeInt(uri, HEIGHT_NAME, index); - // state finished parsing - ctx.parsePastEndTag(uri, name); - // create - return new Dimension(width, height); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/InsetsMapper.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/InsetsMapper.java deleted file mode 100644 index e50cb1495518a1b572d6380177309ef516f4d0a7..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/jibxhelpers/InsetsMapper.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.jibxhelpers; - -import org.jibx.runtime.IAliasable; -import org.jibx.runtime.IMarshaller; -import org.jibx.runtime.IMarshallingContext; -import org.jibx.runtime.IUnmarshaller; -import org.jibx.runtime.IUnmarshallingContext; -import org.jibx.runtime.JiBXException; -import org.jibx.runtime.impl.MarshallingContext; -import org.jibx.runtime.impl.UnmarshallingContext; - -import java.awt.Insets; - -/** - * InsetsMapper - * - * @author Created by Jasper Potts (Jun 8, 2007) - */ -public class InsetsMapper implements IMarshaller, IUnmarshaller, IAliasable { - private static final String ELEMENT_NAME = "insets"; - private static final String TOP_NAME = "top"; - private static final String BOTTOM_NAME = "bottom"; - private static final String LEFT_NAME = "left"; - private static final String RIGHT_NAME = "right"; - - private String uri; - private int index; - private String name; - - public InsetsMapper() { - uri = null; - index = 0; - name = ELEMENT_NAME; - } - - public InsetsMapper(String uri, int index, String name) { - this.uri = uri; - this.index = index; - this.name = name; -// System.out.println("InsetsMapper.CONSTRCUTED with uri="+uri+" index="+index+" name="+name); - } - - public boolean isExtension(int i) { - return false; - } - - public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - return iUnmarshallingContext.isAt(uri, ELEMENT_NAME); - } - - public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException { - if (!(object instanceof Insets)) { - throw new JiBXException("Invalid object type for marshaller"); - } else if (!(iMarshallingContext instanceof MarshallingContext)) { - throw new JiBXException("Invalid object type for marshaller"); - } else { -// System.out.println("InsetsMapper.marshal name="+name); - MarshallingContext ctx = (MarshallingContext) iMarshallingContext; - Insets insets = (Insets) object; - ctx.startTagAttributes(index, name). - attribute(index, TOP_NAME, insets.top). - attribute(index, BOTTOM_NAME, insets.bottom). - attribute(index, LEFT_NAME, insets.left). - attribute(index, RIGHT_NAME, insets.right). - closeStartEmpty(); - } - } - - public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - // make sure we're at the appropriate start tag - UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext; - if (!ctx.isAt(uri, name)) { -// System.out.println("InsetsMapper.unmarshal name="+name+" uri="+uri+" currentNode="+ctx.getName()); - ctx.throwStartTagNameError(uri, name); - } else { -// System.out.println("InsetsMapper.unmarshal name="+name+" uri="+uri+" currentNode="+ctx.getName()); - } - // get values - int top = ctx.attributeInt(uri, TOP_NAME, index); - int bottom = ctx.attributeInt(uri, BOTTOM_NAME, index); - int left = ctx.attributeInt(uri, LEFT_NAME, index); - int right = ctx.attributeInt(uri, RIGHT_NAME, index); - // create new hashmap if needed - Insets insets = (Insets) object; - if (insets == null) { - insets = new Insets(top, left, bottom, right); - } else { - insets.set(top, left, bottom, right); - } - ctx.parsePastEndTag(uri, name); - return insets; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/AbstractGradient.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/AbstractGradient.java deleted file mode 100644 index 5a94abc2cb4e42846ee0cb8886c528cf6420084a..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/AbstractGradient.java +++ /dev/null @@ -1,280 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.paint; - -import java.awt.Color; -import java.awt.MultipleGradientPaint.CycleMethod; -import java.awt.Paint; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -/** @author rbair */ -public abstract class AbstractGradient extends PaintModel { - private final Comparatorsorter = new Comparator () { - public int compare(GradientStop s1, GradientStop s2) { - //since a float value may be -.001 or .001, and since casting - //this to an int will round off to 0, I have to do a more direct - //comparison - float v = s1.getPosition() - s2.getPosition(); - - if (v < 0) return -1; - else if (v == 0) return 0; - else return 1; - } - }; - private PropertyChangeListener stopListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - if (evt.getPropertyName().equals("position")) { - if (stops.contains((GradientStop) evt.getSource())) { - resortModel(true); - } else { - System.err.println("[WARNING] The position of an orphaned stop was changed."); - } - } else { - firePropertyChange("paint", null, getPaint()); - } - } - }; - - private List stops = new ArrayList (); - private List unmodifiable; - private CycleMethod cycleMethod; - - protected AbstractGradient() { - unmodifiable = Collections.unmodifiableList(stops); - cycleMethod = CycleMethod.NO_CYCLE; - setStops(new GradientStop(0, new Matte(Color.BLUE, null)), - new GradientStop(1, new Matte(Color.WHITE, null))); - } - - /** - * Copy stops and cycleMethod from src to dst - * - * @param dst The gradient to update to same stops and cycle method as this gradient - */ - protected void copyTo(AbstractGradient dst) { - dst.stops.clear(); - List stops = new ArrayList (); - for (GradientStop stop : this.stops) { - stops.add(stop.clone()); - } - dst.setStops(stops); - dst.cycleMethod = this.cycleMethod; - } - - - public PaintControlType getPaintControlType() { - return PaintControlType.control_line; - } - - public void setCycleMethod(CycleMethod method) { - CycleMethod old = cycleMethod; - Paint oldp = getPaint(); - cycleMethod = method == null ? CycleMethod.NO_CYCLE : method; - firePropertyChange("cycleMethod", old, cycleMethod); - firePropertyChange("paint", oldp, getPaint()); - } - - public final CycleMethod getCycleMethod() { - return cycleMethod; - } - - public void setStops(GradientStop... stops) { - if (stops == null || stops.length < 1) { - throw new IllegalArgumentException("Must have more than one stop"); - } - List old = new ArrayList (this.stops); - for (GradientStop stop : old) { - stop.removePropertyChangeListener(stopListener); - } - Paint oldp = getPaint(); - this.stops.clear(); - Collections.addAll(this.stops, stops); - for (GradientStop stop : this.stops) { - stop.addPropertyChangeListener(stopListener); - } - resortModel(false); - firePropertyChange("stops", old, getStops()); - firePropertyChange("paint", oldp, getPaint()); - } - - public final void setStops(List stops) { - setStops(stops == null ? null : stops.toArray(new GradientStop[0])); - } - - public final List getStops() { - return unmodifiable; - } - - private void resortModel(boolean fireEvent) { - Collections.sort(this.stops, sorter); - if (fireEvent) { - Paint oldp = getPaint(); - firePropertyChange("stops", null, getStops()); - firePropertyChange("paint", oldp, getPaint()); - } - } - - //adds a new stop, and interoplates the proper color to use based on - //its position - public GradientStop addStop(float position) { - GradientStop prevStop = null; - GradientStop nextStop = null; - for (GradientStop stop : stops) { - if (stop.getPosition() <= position) { - prevStop = stop; - } else if (stop.getPosition() >= position) { - nextStop = stop; - } - } - - Matte c = null; - if (prevStop != null && nextStop != null) { - //interpolate the value of c - c = interpolate(prevStop.getColor(), nextStop.getColor(), - position / (nextStop.getPosition() - prevStop.getPosition())); - } else if (prevStop != null) { - c = prevStop.getColor().clone(); - } else if (nextStop != null) { - c = nextStop.getColor().clone(); - } - - return addStop(position, c); - } - - public GradientStop addStop(float position, Matte color) { - GradientStop s = new GradientStop(position, color); - s.addPropertyChangeListener(stopListener); - List old = new ArrayList (stops); - Paint oldp = getPaint(); - stops.add(s); - resortModel(false); - firePropertyChange("stops", old, getStops()); - firePropertyChange("paint", oldp, getPaint()); - - return s; - } - - public GradientStop removeStop(GradientStop s) { - List old = new ArrayList (stops); - Paint oldp = getPaint(); - stops.remove(s); - s.removePropertyChangeListener(stopListener); - resortModel(false); - firePropertyChange("stops", old, getStops()); - firePropertyChange("paint", oldp, getPaint()); - return s; - } - - @Override public Paint getPaint() { - if (stops.size() == 0) { - return null; - } - - //there are stops.size() number of main stops. Between each is - //a fractional stop. Thus, there are: - //stops.size() + stops.size() - 1 - //number of fractions and colors. - - float[] fractions = new float[stops.size() + stops.size() - 1]; - Matte[] colors = new Matte[fractions.length]; - - //for each stop, create the stop and it's associated fraction - int index = 0; // the index into fractions and colors - for (int i = 0; i < stops.size(); i++) { - GradientStop s = stops.get(i); - //copy over the stop's data - colors[index] = s.getColor(); - fractions[index] = s.getPosition(); - - //If this isn't the last stop, then add in the fraction - if (index < fractions.length - 1) { - float f1 = s.getPosition(); - float f2 = stops.get(i + 1).getPosition(); - - index++; - fractions[index] = f1 + (f2 - f1) * s.getMidpoint(); - colors[index] = interpolate(colors[index - 1], stops.get(i + 1).getColor(), .5f); - } - - index++; - } - - for (int i = 1; i < fractions.length; i++) { - //to avoid an error with LinearGradientPaint where two fractions - //are identical, bump up the fraction value by a miniscule amount - //if it is identical to the previous one - //NOTE: The <= is critical because the previous value may already - //have been bumped up - if (fractions[i] <= fractions[i - 1]) { - fractions[i] = fractions[i - 1] + .000001f; - } - } - - //another boundary condition where multiple stops are all at the end. The - //previous loop bumped all but one of these past 1.0, which is bad. - //so remove any fractions (and their colors!) that are beyond 1.0 - int outOfBoundsIndex = -1; - for (int i = 0; i < fractions.length; i++) { - if (fractions[i] > 1) { - outOfBoundsIndex = i; - break; - } - } - - if (outOfBoundsIndex >= 0) { - float[] f = fractions; - Matte[] c = colors; - fractions = new float[outOfBoundsIndex]; - colors = new Matte[outOfBoundsIndex]; - System.arraycopy(f, 0, fractions, 0, outOfBoundsIndex); - System.arraycopy(c, 0, colors, 0, outOfBoundsIndex); - } - - return createPaint(fractions, colors, cycleMethod); - } - - protected abstract Paint createPaint(float[] fractions, Matte[] colors, CycleMethod method); - - protected static Matte interpolate(Matte v0, Matte v1, float fraction) { - return new Matte(interpolate(v0.getColor(), v1.getColor(), fraction), v0.getUiDefaults()); - } - - protected static Color interpolate(Color v0, Color v1, float fraction) { - int r = v0.getRed() + - (int) ((v1.getRed() - v0.getRed()) * fraction + 0.5f); - int g = v0.getGreen() + - (int) ((v1.getGreen() - v0.getGreen()) * fraction + 0.5f); - int b = v0.getBlue() + - (int) ((v1.getBlue() - v0.getBlue()) * fraction + 0.5f); - int a = v0.getAlpha() + - (int) ((v1.getAlpha() - v0.getAlpha()) * fraction + 0.5f); - return new Color(r, g, b, a); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Gradient.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Gradient.java deleted file mode 100644 index ed239ed370bf326d7e8e6c397b752cb11ffe1730..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Gradient.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.paint; - -import java.awt.Color; -import java.awt.LinearGradientPaint; -import java.awt.MultipleGradientPaint.CycleMethod; -import java.awt.Paint; - -/** - * Represents a GradientPaint or LinearGradientPaint. - * - * @author rbair - */ -public class Gradient extends AbstractGradient implements Cloneable { - protected Paint createPaint(float[] fractions, Matte[] mattes, CycleMethod method) { - Color[] colors = new Color[mattes.length]; - for (int i = 0; i < colors.length; i++) { - colors[i] = mattes[i].getColor(); - } - return new LinearGradientPaint(0, 0, 1, 0, fractions, colors, method); - } - - @Override public Gradient clone() { - Gradient gradient = new Gradient(); - copyTo(gradient); - return gradient; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/GradientStop.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/GradientStop.java deleted file mode 100644 index f462fedde7d9f28a9f7cd0fad9c107cacc50a589..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/GradientStop.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.paint; - -import org.jdesktop.beans.AbstractBean; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -/** Each stop is defined linearly, at positions between 0 and 1. */ -public final class GradientStop extends AbstractBean implements Cloneable { - private float position; - private Matte color; - private PropertyChangeListener matteListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("color", null, color); - } - }; - - /** - * The midpoint to the right of the stop. Must be 0 <= midpoint <= 1. The midpoint value of the last Stop is - * ignored. - */ - private float midpoint; - - public GradientStop() {} - - public GradientStop(float position, Matte color) { - if (color == null) { - throw new IllegalArgumentException("Color must not be null"); - } - - this.position = clamp(0, 1, position); - this.color = color; - this.midpoint = .5f; - - if (this.color != null) { - this.color.addPropertyChangeListener("color", matteListener); - } - } - - - public GradientStop clone() { - GradientStop clone = new GradientStop(this.position, this.color.clone()); - clone.midpoint = midpoint; - return clone; - } - - public final float getPosition() { - return position; - } - - public final void setPosition(float position) { - float old = this.position; - this.position = clamp(0, 1, position); - firePropertyChange("position", old, this.position); - } - - public final Matte getColor() { - return color; - } - - public final void setColor(Matte c) { - if (c == null) throw new IllegalArgumentException("Color must not be null"); - Matte old = this.color; - if (old != null) old.removePropertyChangeListener(matteListener); - this.color = c; - if (this.color != null) this.color.addPropertyChangeListener(matteListener); - firePropertyChange("color", old, c); - } - - public final void setOpacity(int opacity) { - int old = getOpacity(); - color.setAlpha(opacity); - firePropertyChange("opacity", old, getOpacity()); - } - - public final int getOpacity() { - return color.getAlpha(); - } - - public final float getMidpoint() { - return midpoint; - } - - public final void setMidpoint(float midpoint) { - float old = this.midpoint; - this.midpoint = clamp(0, 1, midpoint); - firePropertyChange("midpoint", old, this.midpoint); - } - - private float clamp(float lo, float hi, float value) { - if (value < lo) { - return lo; - } else if (value > hi) { - return hi; - } else { - return value; - } - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Matte.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Matte.java deleted file mode 100644 index 634909f30a14beeb478bc349bd22b92f927a4426..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Matte.java +++ /dev/null @@ -1,610 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.paint; - -import org.jdesktop.swingx.designer.utils.HasUIDefaults; -import org.jibx.runtime.IUnmarshallingContext; - -import javax.swing.UIDefaults; -import java.awt.Color; -import java.awt.Paint; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -/** - * Representing a single uniform color. Basically, it represents the java.awt.Color. It can either be absolute or - * derived from a UIDefault color. - * - * @author rbair & jasper potts - */ -public class Matte extends PaintModel implements HasUIDefaults { - private float[] tmpf1 = new float[3]; - private float[] tmpf2 = new float[3]; - - private int red; - private int green; - private int blue; - private int alpha; - private Color cached = null; - - /** - * The name of the ui default key to derive this color from. - */ - private String uiDefaultParentName = null; - /** - * The name of the bean property, or client property, on this component - * from which to extract a color used for painting. So for example the color - * used in a painter could be the background of the component. - */ - private String componentPropertyName = null; - private float hueOffset = 0, saturationOffset = 0, brightnessOffset = 0; - private int alphaOffset = 0; - /** - * When true this color will become a UIResource in the UIManager defaults - * table. If false, then it will not be a UIResource. This is sometimes - * required, such as with colors installed on renderers. - */ - private boolean uiResource = true; - - /** This is a local UIDefaults that contains all the UIDefaults in the Model. */ - private transient UIDefaults uiDefaults = new UIDefaults(); - private PropertyChangeListener uiDefaultsChangeListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - if (uiDefaultParentName != null && uiDefaultParentName.equals(evt.getPropertyName())) { - updateARGBFromOffsets(); - } - } - }; - - // ================================================================================================================= - // Constructors - - /** propected constructor for JIBX */ - protected Matte() {} - - public Matte(Color c, UIDefaults uiDefaults) { - if (c != null) { - this.red = c.getRed(); - this.green = c.getGreen(); - this.blue = c.getBlue(); - this.alpha = c.getAlpha(); - } - setUiDefaults(uiDefaults); - } - - // ================================================================================================================= - // JIBX Methods - - /** - * Called by JIBX after all fields have been set - * - * @param context The JIBX Unmarshalling Context - */ - protected void postSet(IUnmarshallingContext context) { - // walk up till we get synth model - for (int i = 0; i < context.getStackDepth(); i++) { - if (context.getStackObject(i) instanceof HasUIDefaults) { - UIDefaults uiDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults(); - if (uiDefaults != null) { - setUiDefaults(uiDefaults); - break; - } - } - } - } - - // ================================================================================================================= - // Matte methods - - /** - * Is the matte an absolute color ot derived from a parent ui default - * - * @return trueif this is a absolute not uidefault derived color - */ - public boolean isAbsolute() { - return uiDefaultParentName == null; - } - - /** - * Set all properties of this matte to be the same assrcMatteand fire all the change events - * - * @param srcMatte the matte to copy properties from - */ - public void copy(Matte srcMatte) { - // keep old values - Color oldColor = getColor(); - String oldParentName = uiDefaultParentName; - String oldComponentPropertyName = componentPropertyName; - boolean oldUiResource = uiResource; - int oldR = red, oldG = green, oldB = blue, oldA = alpha; - float oldH = hueOffset, oldS = saturationOffset, oldBr = brightnessOffset; - // set properties - if (uiResource != srcMatte.uiResource) { - uiResource = srcMatte.uiResource; - firePropertyChange("uiResource", oldUiResource, isUiResource()); - } - if (red != srcMatte.red) { - red = srcMatte.red; - firePropertyChange("red", oldR, getRed()); - } - if (green != srcMatte.green) { - green = srcMatte.green; - firePropertyChange("green", oldG, getGreen()); - } - if (blue != srcMatte.blue) { - blue = srcMatte.blue; - firePropertyChange("blue", oldB, getBlue()); - } - if (alpha != srcMatte.alpha) { - alpha = srcMatte.alpha; - firePropertyChange("alpha", oldA, getAlpha()); - } - if (hueOffset != srcMatte.hueOffset) { - hueOffset = srcMatte.hueOffset; - firePropertyChange("hueOffset", oldH, getHueOffset()); - } - if (saturationOffset != srcMatte.saturationOffset) { - saturationOffset = srcMatte.saturationOffset; - firePropertyChange("saturationOffset", oldS, getSaturationOffset()); - } - if (brightnessOffset != srcMatte.brightnessOffset) { - brightnessOffset = srcMatte.brightnessOffset; - firePropertyChange("brightnessOffset", oldBr, getBrightnessOffset()); - } - if (alphaOffset != srcMatte.alphaOffset) { - alphaOffset = srcMatte.alphaOffset; - firePropertyChange("alphaOffset", oldA, getAlphaOffset()); - } - if (uiDefaultParentName != srcMatte.uiDefaultParentName) { - uiDefaultParentName = srcMatte.uiDefaultParentName; - firePropertyChange("uiDefaultParentName", oldParentName, getUiDefaultParentName()); - } - if (componentPropertyName != srcMatte.componentPropertyName) { - componentPropertyName = srcMatte.componentPropertyName; - firePropertyChange("componentPropertyName", oldComponentPropertyName, getComponentPropertyName()); - } - if (uiDefaults != srcMatte.uiDefaults) { - setUiDefaults(srcMatte.uiDefaults); - } - if (!oldColor.equals(srcMatte.getColor())) { - firePropertyChange("paint", oldColor, getColor()); - firePropertyChange("color", oldColor, getColor()); - fireHSBChange(oldR, oldG, oldB); - } - } - - // ================================================================================================================= - // PaintModel methods - - public PaintControlType getPaintControlType() { - return PaintControlType.none; - } - - // ================================================================================================================= - // Bean Methods - - /** - * Get the local UIDefaults that contains all the UIDefaults in the Model. - * - * @return The UIDefaults for the model that contains this Matte, can be null if this Matte is not part of a bigger - * model - */ - public UIDefaults getUiDefaults() { - return uiDefaults; - } - - /** - * Set the local UIDefaults that contains all the UIDefaults in the Model. - * - * @param uiDefaults The UIDefaults for the model that contains this Matte, can be null if this Matte is not part of - * a bigger model - */ - public void setUiDefaults(UIDefaults uiDefaults) { - if (uiDefaults != this.uiDefaults) { - UIDefaults old = getUiDefaults(); - if (old != null) old.removePropertyChangeListener(uiDefaultsChangeListener); - this.uiDefaults = uiDefaults; - if (uiDefaults != null) this.uiDefaults.addPropertyChangeListener(uiDefaultsChangeListener); - firePropertyChange("uiDefaults", old, getUiDefaults()); - } - } - - /** - * Get the name if the uidefault color that is the parent that this matte is derived from. If null then this is a - * absolute color. - * - * @return Parent color ui default name - */ - public String getUiDefaultParentName() { - return uiDefaultParentName; - } - - /** - * Set the name if the uidefault color that is the parent that this matte is derived from. If null then this is a - * absolute color. - * - * @param uiDefaultParentName Parent color ui default name - */ - public void setUiDefaultParentName(String uiDefaultParentName) { - String old = getUiDefaultParentName(); - this.uiDefaultParentName = uiDefaultParentName; - firePropertyChange("uiDefaultParentName", old, getUiDefaultParentName()); - if (isAbsolute()) { - // reset offsets - float oldH = hueOffset, oldS = saturationOffset, oldB = brightnessOffset; - int oldA = alphaOffset; - hueOffset = 0; - saturationOffset = 0; - brightnessOffset = 0; - alphaOffset = 0; - firePropertyChange("hueOffset", oldH, getHueOffset()); - firePropertyChange("saturationOffset", oldS, getSaturationOffset()); - firePropertyChange("brightnessOffset", oldB, getBrightnessOffset()); - firePropertyChange("alphaOffset", oldA, getAlphaOffset()); - } - updateARGBFromOffsets(); - } - - /** - * Sets the property to use for extracting the color for whatever component - * is passed to the painter. Can be a key in client properties. Can be null. - * @param name - */ - public void setComponentPropertyName(String name) { - String old = componentPropertyName; - firePropertyChange("componentPropertyName", old, componentPropertyName = name); - } - - /** - * Gets the name of the bean property, or client property, on this component - * from which to extract a color used for painting. So for example the color - * used in a painter could be the background of the component. - * - * @return - */ - public String getComponentPropertyName() { - return componentPropertyName; - } - - /** - * Sets whether this color should be represented as a UIResource in UIDefaults - * @param b true if the color should be a ui resource - */ - public void setUiResource(boolean b) { - boolean old = uiResource; - firePropertyChange("uiResource", old, uiResource = b); - } - - /** - * When false this color will become a non-UIResource in the UIManager defaults - * table. This is sometimes required to force swing to use the given color, - * such as with renderers. - * @return false if the color should not be a uiresource - */ - public boolean isUiResource() { - return uiResource; - } - - public float getHueOffset() { - return hueOffset; - } - - public void setHueOffset(float hueOffset) { - float old = getHueOffset(); - this.hueOffset = hueOffset; - firePropertyChange("hueOffset", old, getHueOffset()); - updateARGBFromOffsets(); - } - - public float getSaturationOffset() { - return saturationOffset; - } - - public void setSaturationOffset(float satOffset) { - float old = getSaturationOffset(); - this.saturationOffset = satOffset; - firePropertyChange("saturationOffset", old, getSaturationOffset()); - updateARGBFromOffsets(); - } - - public float getBrightnessOffset() { - return brightnessOffset; - } - - public void setBrightnessOffset(float brightOffset) { - float old = getBrightnessOffset(); - this.brightnessOffset = brightOffset; - firePropertyChange("brightnessOffset", old, getBrightnessOffset()); - updateARGBFromOffsets(); - } - - public int getAlphaOffset() { - return alphaOffset; - } - - public void setAlphaOffset(int alphaOffset) { - int old = getAlphaOffset(); - this.alphaOffset = alphaOffset; - firePropertyChange("alphaOffset", old, alphaOffset); - updateARGBFromOffsets(); - } - - - public void setRed(int red) { - red = clamp(red); - if (this.red != red) { - Color old = getColor(); - int oldr = this.red; - this.red = red; - firePropertyChange("paint", old, getColor()); - firePropertyChange("color", old, getColor()); - firePropertyChange("red", oldr, red); - fireHSBChange(oldr, green, blue); - updateOffsetsFromARGB(); - } - } - - public final int getRed() { - return red; - } - - public void setGreen(int green) { - green = clamp(green); - if (this.green != green) { - Color old = getColor(); - int oldg = this.green; - this.green = green; - firePropertyChange("paint", old, getColor()); - firePropertyChange("color", old, getColor()); - firePropertyChange("green", oldg, green); - fireHSBChange(red, oldg, blue); - updateOffsetsFromARGB(); - } - } - - public final int getGreen() { - return green; - } - - public void setBlue(int blue) { - blue = clamp(blue); - if (this.blue != blue) { - Color old = getColor(); - int oldb = this.blue; - this.blue = blue; - firePropertyChange("paint", old, getColor()); - firePropertyChange("color", old, getColor()); - firePropertyChange("blue", oldb, blue); - fireHSBChange(red, green, oldb); - updateOffsetsFromARGB(); - } - } - - public final int getBlue() { - return blue; - } - - public void setAlpha(int alpha) { - alpha = clamp(alpha); - if (this.alpha != alpha) { - int old = getAlpha(); - this.alpha = alpha; - firePropertyChange("alpha", old, alpha); - firePropertyChange("paint", old, getColor()); - firePropertyChange("color", old, getColor()); - updateOffsetsFromARGB(); - } - } - - public final int getAlpha() { - return alpha; - } - - public Color getColor() { - if (cached == null || red != cached.getRed() || green != cached.getGreen() || - blue != cached.getBlue() || alpha != cached.getAlpha()) { - cached = new Color(red, green, blue, alpha); - } - return cached; - } - - public void setColor(Color c) { - setColor(c, false); - } - - public void setColor(Color c, boolean dontSetAlpha) { - Color oldColor = getColor(); - int oldR = red, oldG = green, oldB = blue, oldA = alpha; - cached = c; - red = c.getRed(); - green = c.getGreen(); - blue = c.getBlue(); - if (!dontSetAlpha) alpha = c.getAlpha(); - updateOffsetsFromARGB(); - firePropertyChange("red", oldR, getRed()); - firePropertyChange("green", oldG, getGreen()); - firePropertyChange("blue", oldB, getBlue()); - fireHSBChange(oldR, oldG, oldB); - if (!dontSetAlpha) firePropertyChange("alpha", oldA, getAlpha()); - firePropertyChange("paint", oldColor, getColor()); - firePropertyChange("color", oldColor, getColor()); - } - - @Override public Paint getPaint() { - return getColor(); - } - - - @Override public String toString() { - if (isAbsolute()) { - return Matte.class.getName() + "[r=" + red + ", g=" + green + ", b=" + blue + ", a=" + alpha + "]"; - } else { - return Matte.class.getName() + "[base=" + uiDefaultParentName + ", H+" + hueOffset + - ", S+" + saturationOffset + ", B+" + brightnessOffset + ", A+" + alphaOffset + "]"; - } - } - - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Matte matte = (Matte) o; - if (alpha != matte.alpha) return false; - if (alphaOffset != matte.alphaOffset) return false; - if (Float.compare(matte.alpha, alpha) != 0) return false; - if (blue != matte.blue) return false; - if (Float.compare(matte.brightnessOffset, brightnessOffset) != 0) - return false; - if (green != matte.green) return false; - if (Float.compare(matte.hueOffset, hueOffset) != 0) return false; - if (red != matte.red) return false; - if (uiResource != matte.uiResource) return false; - if (Float.compare(matte.saturationOffset, saturationOffset) != 0) - return false; - if (componentPropertyName != null ? - !componentPropertyName.equals(componentPropertyName) : - matte.componentPropertyName != null) return false; - - if (uiDefaultParentName != null ? - !uiDefaultParentName.equals(matte.uiDefaultParentName) : - matte.uiDefaultParentName != null) return false; - return true; - } - - public int hashCode() { - int result; - result = red; - result = 31 * result + green; - result = 31 * result + blue; - result = 31 * result + alpha; - result = 31 * result + (uiDefaultParentName != null ? - uiDefaultParentName.hashCode() : 0); - result = 31 * result + (componentPropertyName != null ? - componentPropertyName.hashCode() : 0); - result = 31 * result + hueOffset != +0.0f ? - Float.floatToIntBits(hueOffset) : 0; - result = 31 * result + saturationOffset != +0.0f ? - Float.floatToIntBits(saturationOffset) : 0; - result = 31 * result + brightnessOffset != +0.0f ? - Float.floatToIntBits(brightnessOffset) : 0; - result = 31 * result + (uiResource ? 1 : 0); - return result; - } - - @Override public Matte clone() { - Matte m = new Matte(); - m.red = red; - m.green = green; - m.blue = blue; - m.alpha = alpha; - m.brightnessOffset = brightnessOffset; - m.hueOffset = hueOffset; - m.saturationOffset = saturationOffset; - m.alphaOffset = alphaOffset; - m.uiDefaultParentName = uiDefaultParentName; - m.componentPropertyName = componentPropertyName; - m.uiResource = uiResource; - m.setUiDefaults(uiDefaults); - return m; - } - - // ================================================================================================================= - // Private Helper Methods - - private void updateOffsetsFromARGB() { - if (!isAbsolute()) { - tmpf1 = Color.RGBtoHSB(red, green, blue, tmpf1); - Color parentColor = uiDefaults.getColor(uiDefaultParentName); - tmpf2 = Color.RGBtoHSB(parentColor.getRed(), parentColor.getGreen(), parentColor.getBlue(), tmpf2); - // update offset properties and fire events - float oldH = hueOffset, oldS = saturationOffset, oldB = brightnessOffset; - int oldA = alphaOffset; - hueOffset = tmpf1[0] - tmpf2[0]; - saturationOffset = tmpf1[1] - tmpf2[1]; - brightnessOffset = tmpf1[2] - tmpf2[2]; - alphaOffset = alpha - parentColor.getAlpha(); - firePropertyChange("hueOffset", oldH, getHueOffset()); - firePropertyChange("saturationOffset", oldS, getSaturationOffset()); - firePropertyChange("brightnessOffset", oldB, getBrightnessOffset()); - firePropertyChange("alphaOffset", oldA, getAlphaOffset()); - } - } - - private void updateARGBFromOffsets() { - if (!isAbsolute()) { - Color oldColor = getColor(); - // get parent color HSB - Color parentColor = uiDefaults.getColor(uiDefaultParentName); - tmpf1 = Color.RGBtoHSB(parentColor.getRed(), parentColor.getGreen(), parentColor.getBlue(), tmpf1); - // apply offsets - tmpf1[0] = clamp(tmpf1[0] + hueOffset); - tmpf1[1] = clamp(tmpf1[1] + saturationOffset); - tmpf1[2] = clamp(tmpf1[2] + brightnessOffset); - int oldA = getAlpha(); - alpha = clamp(parentColor.getAlpha() + alphaOffset); - updateRGB(tmpf1); - // update fire events - firePropertyChange("alpha", oldA, getAlpha()); - firePropertyChange("paint", oldColor, getColor()); - firePropertyChange("color", oldColor, getColor()); - } - } - - private void updateRGB(float[] hsb) { - int oldR = red, oldG = green, oldB = blue; - int rgb = Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]); - red = (rgb >> 16) & 0xFF; - green = (rgb >> 8) & 0xFF; - blue = rgb & 0xFF; - firePropertyChange("red", oldR, getRed()); - firePropertyChange("green", oldG, getGreen()); - firePropertyChange("blue", oldB, getBlue()); - } - - private void fireHSBChange(int oldR, int oldG, int oldB) { - tmpf1 = Color.RGBtoHSB(oldR, oldG, oldB, tmpf1); - tmpf2 = Color.RGBtoHSB(red, green, blue, tmpf2); - firePropertyChange("hue", tmpf1[0], tmpf2[0]); - firePropertyChange("saturation", tmpf1[1], tmpf2[1]); - firePropertyChange("brightness", tmpf1[2], tmpf2[2]); - } - - private float clamp(float value) { - if (value < 0) { - value = 0; - } else if (value > 1) { - value = 1; - } - return value; - } - - private int clamp(int value) { - if (value < 0) { - value = 0; - } else if (value > 255) { - value = 255; - } - return value; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/PaintModel.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/PaintModel.java deleted file mode 100644 index 15b67f55a2eefab37c30d6fa87797822c482e859..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/PaintModel.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.paint; - -import org.jdesktop.beans.AbstractBean; - -import java.awt.Paint; - -/** - * I'd have just called it Paint, but sadly, that name was already taken, and would have been too confusing. - * - * Whenever size or position values are required (for example with Texture or Gradient), they are specified in the unit - * square: that is, between 0 and 1 inclusive. They can then later be scaled as necessary by any painting code. - * - * @author rbair - */ -public abstract class PaintModel extends AbstractBean implements Cloneable { - public static enum PaintControlType { - none, control_line, control_rect - } - - protected PaintModel() { } - - /** - * @return an instance of Paint that is represented by this PaintModel. This is often not a reversable operation, - * and hence there is no "setPaint" method. Rather, tweaking the exposed properties of the PaintModel fires, - * when necessary, property change events for the "paint" property, and results in different values returned - * from this method. - */ - public abstract Paint getPaint(); - - /** - * Get the type of controls for this paint model - * - * @return The type of paint controls, one of PaintControlType.none, PaintControlType.control_line or - * PaintControlType.control_rect - */ - public abstract PaintControlType getPaintControlType(); - - - public abstract PaintModel clone(); -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/RadialGradient.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/RadialGradient.java deleted file mode 100644 index 3e66092320b60d7d99af08ca81b96ee88bcebc58..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/RadialGradient.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.paint; - -import java.awt.Color; -import java.awt.MultipleGradientPaint.CycleMethod; -import java.awt.Paint; -import java.awt.RadialGradientPaint; - -/** - * Represents a RadialGradientPaint. - * - * @author rbair - */ -public class RadialGradient extends AbstractGradient { - protected Paint createPaint(float[] fractions, Matte[] mattes, CycleMethod method) { - Color[] colors = new Color[mattes.length]; - for (int i = 0; i < colors.length; i++) { - colors[i] = mattes[i].getColor(); - } - return new RadialGradientPaint(.5f, .5f, 1, fractions, colors, method); - } - - @Override public RadialGradient clone() { - RadialGradient gradient = new RadialGradient(); - copyTo(gradient); - return gradient; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Texture.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Texture.java deleted file mode 100644 index 8fd4b2a7b3935830588923f02e9f7a80700f6a2a..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/paint/Texture.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.paint; - -import java.awt.Paint; -import java.awt.TexturePaint; -import java.awt.geom.Rectangle2D; -import java.awt.image.BufferedImage; - -/** - * Represents a TexturePaint. - * - * @author rbair - */ -public class Texture extends PaintModel { - private static final Rectangle2D RECT = new Rectangle2D.Double(0, 0, 1, 1); - private BufferedImage img; - - public Texture() { - } - - public PaintControlType getPaintControlType() { - return PaintControlType.control_rect; - } - - public void setImage(BufferedImage img) { - BufferedImage old = this.img; - this.img = img; - firePropertyChange("paint", old, this.img); - firePropertyChange("image", old, this.img); - } - - public final BufferedImage getImage() { - return img; - } - - public Paint getPaint() { - return new TexturePaint(img, RECT); - } - - - public Texture clone() { - Texture newTexture = new Texture(); - newTexture.img = this.img; - return newTexture; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/utils/HasUIDefaults.java b/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/utils/HasUIDefaults.java deleted file mode 100644 index c774d796c1c1008094e457c5866ef43970e00db2..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/swingx/designer/utils/HasUIDefaults.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.swingx.designer.utils; - -import javax.swing.UIDefaults; - -/** - * HasUIDefaults - A tagging interface for any class that has UIDefaults - * - * @author Created by Jasper Potts (Jun 22, 2007) - */ -public interface HasUIDefaults { - public UIDefaults getUiDefaults(); -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/DefaultsGenerator.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/DefaultsGenerator.java deleted file mode 100644 index 948686cb0244dd465ebb895a0aaaf617545ac212..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/DefaultsGenerator.java +++ /dev/null @@ -1,726 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.synthdesigner.generator; - -import org.jdesktop.swingx.designer.Canvas; -import org.jdesktop.swingx.designer.font.Typeface; -import org.jdesktop.swingx.designer.paint.Matte; -import org.jdesktop.swingx.designer.paint.PaintModel; -import static org.jdesktop.synthdesigner.generator.GeneratorUtils.makePretty; -import static org.jdesktop.synthdesigner.generator.GeneratorUtils.toConstantName; -import static org.jdesktop.synthdesigner.generator.ObjectCodeConvertors.convert; -import static org.jdesktop.synthdesigner.generator.TemplateWriter.read; -import static org.jdesktop.synthdesigner.generator.TemplateWriter.writeSrcFile; -import org.jdesktop.synthdesigner.synthmodel.SynthModel; -import org.jdesktop.synthdesigner.synthmodel.UIComponent; -import org.jdesktop.synthdesigner.synthmodel.UIFont; -import org.jdesktop.synthdesigner.synthmodel.UIIconRegion; -import org.jdesktop.synthdesigner.synthmodel.UIPaint; -import org.jdesktop.synthdesigner.synthmodel.UIProperty; -import org.jdesktop.synthdesigner.synthmodel.UIRegion; -import org.jdesktop.synthdesigner.synthmodel.UIState; -import org.jdesktop.synthdesigner.synthmodel.UIStateType; -import org.jdesktop.synthdesigner.synthmodel.UIStyle; - -import javax.swing.border.BevelBorder; -import javax.swing.border.Border; -import javax.swing.border.CompoundBorder; -import javax.swing.border.EmptyBorder; -import javax.swing.border.EtchedBorder; -import javax.swing.border.LineBorder; -import javax.swing.border.MatteBorder; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.Insets; -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import org.jdesktop.synthdesigner.synthmodel.PainterBorder; - -/** - * DefaultsGenerator - * - * There are two main sets of defaults that must be configured. The first is - * the actual UI defaults tree. The second is a map of components + regions, which - * are used to decide what SynthStyle to use. - * - * @author Jasper Potts - * @author Richard Bair - */ -public class DefaultsGenerator { - private static String stateTypeImplTemplate; - - private static String getStateTypeTemplate() { - if (stateTypeImplTemplate == null) { - //load the painter template file into an in-memory string to improve performance - //when generating a lot of classes - try { - stateTypeImplTemplate = read("resources/StateImpl.template"); - } catch (IOException e) { - System.err.println("Failed to read template files."); - throw new RuntimeException(e); - } - } - return stateTypeImplTemplate; - } - - /** - * Generate the defaults file and all painter files for a SynthModel. This method - * is the main entry point, called by the Generator class. - * - * @param uiDefaultInit The buffer to write ui default put methods of the formd.put("activeCaption", new - * ColorUIResource(123, 45, 200));- * @param styleInit The buffer to write out code to generate Synth Style populating the styles mapm - * = new HashMap- * @param model The Synth Model we are writing out defaults class for - * @param variables The variables map pre populated with "PACKAGE" and "LAF_NAME" - * @param packageNamePrefix The package name associated with this synth look and feel. For example, - * org.mypackage.mylaf - * @param painterPackageRoot The directory to write painters out to - */ - public static void generateDefaults(StringBuilder uiDefaultInit, StringBuilder styleInit, SynthModel model, - Map() variables, String packageNamePrefix, - File painterPackageRoot) { - // write color palette - uiDefaultInit.append(" //Color palette\n"); - writeColorPalette(uiDefaultInit, model.getColorPalette()); - uiDefaultInit.append("\n"); - // write fonts palette - uiDefaultInit.append(" //Font palette\n"); - uiDefaultInit.append(" d.put(\"defaultFont\", new FontUIResource(defaultFont));\n"); - writeFontPalette(uiDefaultInit, model.getFontPalette()); - uiDefaultInit.append("\n"); - // TODO: Other palettes - uiDefaultInit.append(" //Border palette\n"); - uiDefaultInit.append("\n"); - // write global style - uiDefaultInit.append(" //The global style definition\n"); - writeStyle(model.getStyle(), uiDefaultInit, ""); - uiDefaultInit.append("\n"); - // write components - for (UIComponent c : model.getComponents()) { - String prefix = escape(c.getKey()); - uiDefaultInit.append(" //Initialize ").append(prefix) - .append("\n"); - writeRegion(c, c, prefix, uiDefaultInit, - styleInit, variables, packageNamePrefix, painterPackageRoot); - uiDefaultInit.append("\n"); - } - } - - private static void writeColorPalette(StringBuilder uiDefaultInit, List colors) { - for (UIPaint color : colors) { - uiDefaultInit.append(" d.put(\"") - .append(color.getName()) - .append("\",") - .append(convertPaint(color.getValue())) - .append(");\n"); - } - } - - private static void writeFontPalette(StringBuilder uiDefaultInit, List fonts) { - for (UIFont font : fonts) { - // We have no way of doing CSS style font lists yet so will just - // just the first font - if (!font.getFonts().isEmpty()){ - Typeface t = font.getFonts().get(0); - if (t.isAbsolute()){ - Font f = t.getFont(); - uiDefaultInit.append(" d.put(\"") - .append(font.getName()) - .append("\", new javax.swing.plaf.FontUIResource(\"") - .append(f.getName()) - .append("\", ") - .append(f.getStyle()) - .append(", ") - .append(f.getSize()) - .append("));\n"); - } else { - uiDefaultInit.append(" d.put(\"") - .append(font.getName()) - .append("\", new DerivedFont(\"") - .append(t.getUiDefaultParentName()) - .append("\", ") - .append(t.getSizeOffset()) - .append("f, "); - switch (t.getBold()){ - case Default: - uiDefaultInit.append("null"); - break; - case On: - uiDefaultInit.append("true"); - break; - case Off: - uiDefaultInit.append("false"); - break; - } - uiDefaultInit.append(", "); - switch (t.getItalic()){ - case Default: - uiDefaultInit.append("null"); - break; - case On: - uiDefaultInit.append("true"); - break; - case Off: - uiDefaultInit.append("false"); - break; - } - uiDefaultInit.append("));\n"); - } - } - } - } - - /** - * Write out the UIDefaults entries for a style - * - * @param style The style to write defaults entries for - * @param uiDefaultInit The buffer to write ui default put methods of the form d.put("activeCaption", new - * ColorUIResource(123, 45, 200));- * @param prefix The prefix for the style property names, for the model path where the style is from, should - * end with a "." - */ - private static void writeStyle(UIStyle style, StringBuilder uiDefaultInit, String prefix) { - if (!style.isTextForegroundInherited()) writeMatte(prefix + "textForeground", style.getTextForeground(), uiDefaultInit); - if (!style.isTextBackgroundInherited()) writeMatte(prefix + "textBackground", style.getTextBackground(), uiDefaultInit); - if (!style.isBackgroundInherited()) writeMatte(prefix + "background", style.getBackground(), uiDefaultInit); - if (!style.isFontInherited()) writeTypeFace(prefix + "font", style.getFont(), uiDefaultInit); - for (UIProperty property : style.getUiProperties()) { - switch (property.getType()) { - case BOOLEAN: - Boolean b = ((Boolean)property.getValue()); - if (b != null) { - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(property.getName()) - .append("\", ") - .append(b ? "Boolean.TRUE" : "Boolean.FALSE") - .append(");\n"); - } - break; - case STRING: - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(property.getName()) - .append("\", \"") - .append(property.getValue().toString()) - .append("\");\n"); - break; - case INT: - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(property.getName()) - .append("\", new Integer(") - .append(((Integer) property.getValue()).intValue()) - .append("));\n"); - break; - case FLOAT: - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(property.getName()) - .append("\", new Float(") - .append(((Float) property.getValue()).floatValue()) - .append("f));\n"); - break; - case DOUBLE: - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(property.getName()) - .append("\", new Double(") - .append(((Double) property.getValue()).doubleValue()) - .append("));\n"); - break; - case COLOR: - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(property.getName()) - .append("\", ") - .append(convertPaint((Matte)property.getValue())) - .append(");\n"); - break; - case FONT: - writeTypeFace(prefix.replace("\"", "\\\"") + property.getName(), - (Typeface) property.getValue(), uiDefaultInit); - break; - case INSETS: - Insets i = (Insets) property.getValue(); - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(property.getName()) - .append("\", new InsetsUIResource(") - .append(i.top).append(", ").append(i.left).append(", ").append(i.bottom).append(", ") - .append(i.right) - .append("));\n"); - break; - case DIMENSION: - Dimension d = (Dimension) property.getValue(); - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(property.getName()) - .append("\", new DimensionUIResource(") - .append(d.width).append(", ").append(d.height) - .append("));\n"); - break; - case BORDER: - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(property.getName()) - .append("\", new BorderUIResource("); - uiDefaultInit.append(convertBorder( - (Border)property.getValue())); - uiDefaultInit.append("));\n"); - break; - } - } - } - - private static void writeMatte(String propertyName, Matte matte, StringBuilder uiDefaultInit) { - if (matte==null) System.err.println("Error matte is NULL for ["+propertyName+"]"); - uiDefaultInit.append(" d.put(\"") - .append(propertyName) - .append("\", ") - .append(convertPaint(matte)) - .append(");\n"); - } - - private static void writeTypeFace(String propertyName, Typeface typeface, StringBuilder uiDefaultInit) { - uiDefaultInit.append(" d.put(\"") - .append(propertyName) - .append("\", new DerivedFont(\"") - .append(typeface.getUiDefaultParentName()) - .append("\", ") - .append(typeface.getSizeOffset()) - .append("f, "); - switch (typeface.getBold()) { - case Default: - uiDefaultInit.append("null,"); - break; - case Off: - uiDefaultInit.append("Boolean.FALSE,"); - break; - case On: - uiDefaultInit.append("Boolean.TRUE,"); - break; - } - switch (typeface.getItalic()) { - case Default: - uiDefaultInit.append("null"); - break; - case Off: - uiDefaultInit.append("Boolean.FALSE"); - break; - case On: - uiDefaultInit.append("Boolean.TRUE"); - break; - } - uiDefaultInit.append("));\n"); - } - - - /** - * Write out code for a Component or Region - * - * @param comp This may be the same as the regionregor is the parent component - * containing the region - * @param region The region we are writing out - * @param prefix This is dot sperated path of component and sub regions to and including the region - *regof the form [Comp].[Region]......[Region] path - * @param uiDefaultInit This is for inserting into org.mypackage.mylaf.MyDefaults#getDefaults() method - * @param styleInit This is for inserting into org.mypackage.mylaf.MyDefaults#initialize() method - * @param variables The variables map pre populated with "PACKAGE" and "LAF_NAME" - * @param packageNamePrefix The package name associated with this synth look and feel. For example, - * org.mypackage.mylaf - * @param painterPackageRoot The directory to write painters out to - */ - private static void writeRegion(UIComponent comp, UIRegion region, String prefix, StringBuilder uiDefaultInit, - StringBuilder styleInit, Mapvariables, - String packageNamePrefix, File painterPackageRoot) { - // register component with LAF - String regionCode = GeneratorUtils.getRegionNameCaps(region.getName()); - if (regionCode == null) { - throw new IllegalStateException("We were asked to encode a region we know nothing about: " + region.getName()); - } else { - regionCode = "Region." + regionCode; - } - - //construct the list of States that accompany this registration. - StringBuffer regString = new StringBuffer(); //like: Enabled,Disabled,Foo,Default,Etc - List types = comp.getStateTypes(); //state types are only defined on the UIComponent level - if (types != null && types.size() > 0) { - for (UIStateType type : types) { - regString.append(type.getKey()); - regString.append(","); - } - //remove the last "," - regString.deleteCharAt(regString.length()-1); - } - - styleInit.append(" register(") - .append(regionCode) - .append(", \"") - .append(prefix); - styleInit.append("\""); - styleInit.append(");\n"); - - // write content margins - Insets i = (Insets) region.getContentMargins(); - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(".contentMargins") - .append("\", new InsetsUIResource(") - .append(i.top).append(", ").append(i.left).append(", ").append(i.bottom).append(", ").append(i.right) - .append("));\n"); - // write opaque if true - if (region instanceof UIComponent && ((UIComponent)region).isOpaque()) { - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(".opaque") - .append("\", Boolean.TRUE);\n"); - } - //write the State, if necessary - if (!regString.equals("Enabled,MouseOver,Pressed,Disabled,Focused,Selected,Default") && types.size() > 0) { - //there were either custom states, or the normal states were in a custom order - //so go ahead and write out prefix.State - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(".States") - .append("\", \"") - .append(regString) - .append("\");\n"); - } - //write out any custom states, if necessary - for (UIStateType type : types) { - String synthState = type.getKey(); - if (!"Enabled".equals(synthState) && - !"MouseOver".equals(synthState) && - !"Pressed".equals(synthState) && - !"Disabled".equals(synthState) && - !"Focused".equals(synthState) && - !"Selected".equals(synthState) && - !"Default".equals(synthState)) { - //what we have here, gentlemen, is a bona-fide custom state. - try { - //if the type is not one of the standard types, then construct a name for - //the new type, and write out a new subclass of State. - java.lang.String className = makePretty(prefix) + synthState + "State"; - java.lang.String body = type.getCodeSnippet(); - variables.put("STATE_NAME", className); - variables.put("STATE_KEY", synthState); - variables.put("BODY", body); - - writeSrcFile(getStateTypeTemplate(), variables, new java.io.File(painterPackageRoot, className + ".java")); - - variables.remove("STATE_NAME"); - variables.remove("STATE_KEY"); - variables.remove("BODY"); - - uiDefaultInit.append(" d.put(\"") - .append(prefix) - .append(".") - .append(synthState) - .append("\", new ") - .append(className) - .append("());\n"); - } catch (IOException ex) { - ex.printStackTrace(); - } - } - } - // write region style - writeStyle(region.getStyle(), uiDefaultInit, prefix + "."); - - try { - boolean hasCanvas = hasCanvas(region); - if (hasCanvas) { - PainterGenerator.writePainter(region, variables, painterPackageRoot, prefix); - } - String fileNamePrefix = makePretty(prefix) + "Painter"; - // write states ui defaults - for (UIState state : region.getBackgroundStates()) { - String statePrefix = prefix + "[" + state.getName() + "]"; - // write state style - writeStyle(state.getStyle(), uiDefaultInit, statePrefix + "."); - // write painter - if (hasCanvas) { - writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, "background"); - } - } - for (UIState state : region.getForegroundStates()) { - String statePrefix = prefix + "[" + state.getName() + "]"; - // write state style - writeStyle(state.getStyle(), uiDefaultInit, statePrefix + "."); - // write painter - if (hasCanvas) { - writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, "foreground"); - } - } - for (UIState state : region.getBorderStates()) { - String statePrefix = prefix + "[" + state.getName() + "]"; - // write state style - writeStyle(state.getStyle(), uiDefaultInit, statePrefix + "."); - // write painter - if (hasCanvas) { - writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, "border"); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - - // handle sub regions - for (UIRegion subRegion : region.getSubRegions()) { - String subregionName = prefix + ":" + escape(subRegion.getKey()); - if (subRegion instanceof UIIconRegion) { - writeIconRegion(comp, (UIIconRegion) subRegion, prefix, uiDefaultInit, - variables, packageNamePrefix, painterPackageRoot); - } else if (subRegion instanceof UIComponent) { - // inner named component - UIComponent subComponent = (UIComponent) subRegion; - writeRegion(subComponent, subRegion, subregionName, - uiDefaultInit, styleInit, variables, packageNamePrefix, painterPackageRoot); - } else { - writeRegion(comp, subRegion, subregionName, uiDefaultInit, styleInit, variables, - packageNamePrefix, painterPackageRoot); - } - } - } - - private static void writeLazyPainter(UIState state, StringBuilder uiDefaultInit, String statePrefix, String packageNamePrefix, String fileNamePrefix, String painterSuffix) { - Canvas canvas = state.getCanvas(); - if (!canvas.isBlank()) { - Insets si = canvas.getStretchingInsets(); - boolean inverted = state.isInverted(); - UIStyle.CacheMode cache = state.getStyle().getCacheMode(); - String cacheModeString = null; - switch (cache) { - case NO_CACHING: cacheModeString = "AbstractRegionPainter.PaintContext.CacheMode.NO_CACHING"; break; - case FIXED_SIZES: cacheModeString = "AbstractRegionPainter.PaintContext.CacheMode.FIXED_SIZES"; break; - case NINE_SQUARE_SCALE: cacheModeString = "AbstractRegionPainter.PaintContext.CacheMode.NINE_SQUARE_SCALE"; break; - } - double maxH = state.getStyle().getMaxHozCachedImgScaling(); - double maxV = state.getStyle().getMaxVertCachedImgScaling(); - String stateConstant = toConstantName(painterSuffix + "_" + UIState.keysToString(state.getStateKeys())); - - uiDefaultInit.append(" d.put(\"") - .append(statePrefix) - .append(".").append(painterSuffix).append("Painter\", new LazyPainter(\"") - .append(packageNamePrefix).append(".").append(fileNamePrefix) - .append("\", ") - .append(fileNamePrefix).append(".").append(stateConstant).append(", ") - .append(convert(si)).append(", ") - .append(convert(canvas.getSize())).append(", ") - .append(inverted).append(", ") - .append(cacheModeString).append(", ") - .append(maxH == Double.POSITIVE_INFINITY ? "Double.POSITIVE_INFINITY" : maxH).append(", ") - .append(maxV == Double.POSITIVE_INFINITY ? "Double.POSITIVE_INFINITY" : maxV).append("));\n"); - } - } - - - /** - * Write out code for a IconRegion - * - * @param comp This may be the same as the region regionor is the parent component - * containing the region - * @param region The region we are writing out - * @param prefix This is [Comp][Region]......[Region] path - * @param key The key for this icon. - * @param uiDefaultInit This is for inserting into org.mypackage.mylaf.MyDefaults#getDefaults() method - * @param variables The variables map pre populated with "PACKAGE" and "LAF_NAME" - * @param packageNamePrefix The package name associated with this synth look and feel. For example, - * org.mypackage.mylaf - * @param painterPackageRoot The directory to write painters out to - */ - private static void writeIconRegion(UIComponent comp, UIIconRegion region, String prefix, - StringBuilder uiDefaultInit, Mapvariables, - String packageNamePrefix, File painterPackageRoot) { - - Dimension size = null; - String fileNamePrefix = makePretty(prefix) + "Painter"; - // write states ui defaults - for (UIState state : region.getBackgroundStates()) {// TODO: Handle Background,Foreground and Borders States Lists? Actually not sure that IconRegions need support borders or foregrounds - Canvas canvas = state.getCanvas(); - if (!canvas.isBlank()) { - String statePrefix = prefix + "[" + state.getName() + "]"; - // Put Painter in UiDefaults - writeLazyPainter(state, uiDefaultInit, statePrefix, packageNamePrefix, fileNamePrefix, region.getKey()); - size = canvas.getSize(); - } - } - - if (size != null) { - // Put SynthIconImpl wrapper in UiDefaults - String key = region.getBasicKey() == null ? prefix + "." + region.getKey() : region.getBasicKey(); - uiDefaultInit.append(" d.put(\"") - .append(key) - .append("\", new NimbusIcon(\"") //TODO should this be wrapped in an IconUIResource? - .append(prefix) - .append("\", \"") - .append(region.getKey()) - .append("Painter") - .append("\", ") - .append(size.width) - .append(", ") - .append(size.height) - .append("));\n"); - } - - // handle sub regions - if (region.getSubRegions().length > 0) { - // there is no meaning to a sub region inside a IconRegion - throw new IllegalStateException("You can not have sub regions inside UiIconRegions. \"" + - comp.getSubRegions()[0].getName() + "\" is inside \"" - + prefix.substring(0, prefix.length() - 1) + "\""); - } - } - - /** - * Utility method for escaping all double quotes with backslash double-quote. - */ - private static String escape(String s) { - return s.replace("\"", "\\\""); - } - - private static String convertPaint(PaintModel paint){ - if (paint instanceof Matte){ - Matte matte = (Matte)paint; - if (matte.isAbsolute()){ - String colorParams = convert(matte.getColor()); - if (matte.isUiResource()) { - return "new ColorUIResource(" + colorParams + ")"; - } else { - return colorParams; - } - } else { - String s = "getDerivedColor(\"" + - matte.getUiDefaultParentName()+"\","+ - matte.getHueOffset()+"f,"+matte.getSaturationOffset()+ - "f,"+matte.getBrightnessOffset()+"f,"+ - matte.getAlphaOffset(); - if (matte.isUiResource()) { - return s + ")"; - } else { - return s + ",false)"; - } - } - } else { - //TODO: What about gradients etc here? - System.err.println("Error: Could not write paint in " + - "DefaultsGenerator as it was not a Matte. = "+ - paint.getClass().getName()); - return ""; - } - } - - private static String convertBorder(Border val) { - StringBuilder uiDefaultInit = new StringBuilder(); - Insets i; - if (val instanceof PainterBorder) { - PainterBorder pb = (PainterBorder) val; - i = pb.getBorderInsets(); - uiDefaultInit.append("new PainterBorder(\"") - .append(pb.getPainterName()) - .append("\", new Insets(") - .append(i.top).append(", ") - .append(i.left).append(", ") - .append(i.bottom).append(", ") - .append(i.right) - .append("))"); - } else if (val instanceof EmptyBorder) { - i = ((EmptyBorder) val).getBorderInsets(); - uiDefaultInit.append("BorderFactory.createEmptyBorder(") - .append(i.top).append(", ") - .append(i.left).append(", ") - .append(i.bottom).append(", ") - .append(i.right) - .append(")"); - } else if (val instanceof LineBorder) { - LineBorder border = (LineBorder) val; - uiDefaultInit.append("BorderFactory.createLineBorder(") - .append(convert(border.getLineColor())) - .append(",") - .append(border.getThickness()) - .append(")"); - } else if (val instanceof EtchedBorder) { - EtchedBorder border = (EtchedBorder) val; - uiDefaultInit.append("BorderFactory.createEtchedBorder(") - .append(border.getEtchType()) - .append(",") - .append(convert(border.getHighlightColor())) - .append(",") - .append(convert(border.getShadowColor())) - .append(")"); - } else if (val instanceof BevelBorder) { - BevelBorder border = (BevelBorder) val; - uiDefaultInit.append("BorderFactory.createEtchedBorder(") - .append(border.getBevelType()) - .append(",") - .append(convert(border.getHighlightOuterColor())) - .append(",") - .append(convert(border.getHighlightInnerColor())) - .append(",") - .append(convert(border.getShadowOuterColor())) - .append(",") - .append(convert(border.getShadowInnerColor())) - .append(")"); - } else if (val instanceof MatteBorder) { - MatteBorder border = (MatteBorder) val; - i = border.getBorderInsets(); - uiDefaultInit.append("BorderFactory.createEmptyBorder(") - .append(i.top).append(", ") - .append(i.left).append(", ") - .append(i.bottom).append(", ") - .append(i.right).append(", ") - .append(convert(border.getMatteColor())) - .append(")"); - } else if (val instanceof CompoundBorder) { - CompoundBorder border = (CompoundBorder) val; - uiDefaultInit.append("BorderFactory.createEmptyBorder(") - .append(convertBorder(border.getOutsideBorder())) - .append(",") - .append(convertBorder(border.getInsideBorder())) - .append(")"); - } - return uiDefaultInit.toString(); - } - - private static boolean hasCanvas(UIRegion region) { - for (UIState s : region.getBackgroundStates()) { - if (!s.getCanvas().isBlank()) return true; - } - for (UIState s : region.getBorderStates()) { - if (!s.getCanvas().isBlank()) return true; - } - for (UIState s : region.getForegroundStates()) { - if (!s.getCanvas().isBlank()) return true; - } - for (UIRegion subregion : region.getSubRegions()) { - if (hasCanvas(subregion)) return true; - } - return false; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/ObjectCodeConvertors.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/ObjectCodeConvertors.java deleted file mode 100644 index 88b1e9baff69884e4b3ce25c5712001c6e159671..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/ObjectCodeConvertors.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.synthdesigner.generator; - -import java.awt.*; - -/** - * ObjectCodeConvertors - * - * @author Richard Bair - * @author Jasper Potts - */ -public class ObjectCodeConvertors { - static java.math.MathContext ctx = new java.math.MathContext(3); - - /** - * Given a value (x), encode it such that 0 -> 1 is to the left of a, 1 -> 2 is between a and b, and 2 -> 3 - * is to the right of b. - * - * @param w width in the case of the x axis, height in the case of the y axis. - */ - static float encode(float x, float a, float b, float w) { - float r = 0; - if (x < a) { - r = (x / a); - } else if (x > b) { - r = 2 + ((x - b) / (w - b)); - } else if (x == a && x == b) { - return 1.5f; - } else { - r = 1 + ((x - a) / (b - a)); - } - - if (Float.isNaN(r)) { - System.err.println("[Error] Encountered NaN: encode(" + x + ", " + a + ", " + b + ", " + w + ")"); - return 0; - } else if (Float.isInfinite(r)) { - System.err.println("[Error] Encountered Infinity: encode(" + x + ", " + a + ", " + b + ", " + w + ")"); - return 0; - } else if (r < 0) { - System.err.println("[Error] encoded value was less than 0: encode(" + x + ", " + a + ", " + b + ", " + w + ")"); - return 0; - } else if (r > 3) { - System.err.println("[Error] encoded value was greater than 3: encode(" + x + ", " + a + ", " + b + ", " + w + ")"); - return 3; - } else { - //for prettyness sake (and since we aren't really going to miss - //any accuracy here) I'm rounding this to 3 decimal places -// return java.math.BigDecimal.valueOf(r).round(ctx).doubleValue(); - return r; - } - } - - static String convert(Paint paint) { - //TODO need to support writing out other Paints, such as gradients - if (paint instanceof Color) { - return convert((Color) paint); - } else { - System.err.println("[WARNING] Unable to encode a paint in the encode(Paint) method: " + paint); - return "null"; - } - } - - /** - * Given a Color, write out the java code required to create a new Color. - * - * @param color The color to convert - * @return String of the code for the color - */ - static String convert(Color color) { - return "new Color(" + - color.getRed() + ", " + - color.getGreen() + ", " + - color.getBlue() + ", " + - color.getAlpha() + ")"; - } - - static String convert(Insets i) { - return "new Insets(" + i.top + ", " + i.left + ", " + i.bottom + ", " + i.right + ")"; - } - - static String convert(Dimension d) { - return "new Dimension(" + d.width + ", " + d.height + ")"; - } - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/TemplateWriter.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/TemplateWriter.java deleted file mode 100644 index 9a76c80a7847ec6a9a9a0b0364bb61ed8a390682..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/generator/TemplateWriter.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.synthdesigner.generator; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintWriter; -import java.io.StringReader; -import java.util.Map; - -/** - * TemplateWriter - Class for writing Java Source files using a src template and variable subsitution - * - * @author Richard Bair - * @author Jasper Potts - */ -public class TemplateWriter { - - /** - * Write a Java source file by taking a template file and applying variable substitution and writing to the output - * file. - * - * @param template The template to use - * @param variables Map of the variable names and values to substitute in the template - * @param output The file to write to - * @throws IOException If there was a problem writing the Java source file - */ - static void writeSrcFile(String template, Map variables, File output) throws IOException { - TemplateReader in = new TemplateReader(variables, template); - PrintWriter out = - new PrintWriter(new FileWriter(output)); - - String line = in.readLine(); - while (line != null) { - out.println(line); - line = in.readLine(); - } - - out.close(); - } - - /** - * Read a template file into a string - * - * @param name The template file path relative to Generator class - * @return The contents of the template file as string - * @throws IOException If there was a problem reading the template file - */ - static String read(String name) throws IOException { - InputStream in = Generator.class.getResourceAsStream(name); - if (in==null) throw new IOException("Could not find template ["+name+ - "] relative to class ["+Generator.class.getName()+"]"); - byte[] data = new byte[4096]; - int length = -1; - StringBuilder buffer = new StringBuilder(); - while ((length = in.read(data)) != -1) { - buffer.append(new String(data, 0, length)); - } - return buffer.toString(); - } - - /** A BufferedReader implementation that automatically performs string replacements as needed. */ - private static final class TemplateReader extends BufferedReader { - private Map variables; - - TemplateReader(Map variables, String template) { - super(new StringReader(template)); - this.variables = variables; - } - - /** - * @return a line of text from the template but with variables substituted. Other methods will return the text - * sans substitution. Call this method. - * @throws java.io.IOException - */ - public String readLine() throws IOException { - return substituteVariables(super.readLine()); - } - - private String substituteVariables(String input) { - if (input == null) return null; - for (Map.Entry variable : variables.entrySet()) { - input = input.replace("${" + variable.getKey() + "}", variable.getValue()); - } - return input; - } - } - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/PainterBorder.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/PainterBorder.java deleted file mode 100644 index b3e53db3c948275889933cfdfb4497127c839cf5..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/PainterBorder.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.synthdesigner.synthmodel; - -import javax.swing.border.EmptyBorder; - -/** - * Represents a border that refers to a Painter to do it's work. This border - * doesn't actually render -- it is just used as part of the model. - * - * @author Richard Bair - */ -public class PainterBorder extends EmptyBorder { - private String painterName; - public PainterBorder(String painterName, int top, int left, int bottom, int right) { - super(top, left, bottom, right); - this.painterName = painterName; - } - - public String getPainterName() { return painterName; } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/SynthModel.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/SynthModel.java deleted file mode 100644 index 70a18c50ea505499d6cff16366370a7d317c157f..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/SynthModel.java +++ /dev/null @@ -1,530 +0,0 @@ -/* - * Copyright 2002-2007 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 org.jdesktop.synthdesigner.synthmodel; - -import org.jdesktop.beans.AbstractBean; -import org.jdesktop.swingx.designer.utils.HasResources; -import org.jdesktop.swingx.designer.utils.HasUIDefaults; -import org.jibx.runtime.IUnmarshallingContext; - -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JColorChooser; -import javax.swing.JComboBox; -import javax.swing.JDesktopPane; -import javax.swing.JEditorPane; -import javax.swing.JFileChooser; -import javax.swing.JFormattedTextField; -import javax.swing.JInternalFrame; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPasswordField; -import javax.swing.JPopupMenu; -import javax.swing.JProgressBar; -import javax.swing.JRadioButton; -import javax.swing.JRadioButtonMenuItem; -import javax.swing.JRootPane; -import javax.swing.JScrollBar; -import javax.swing.JScrollPane; -import javax.swing.JSeparator; -import javax.swing.JSlider; -import javax.swing.JSpinner; -import javax.swing.JSplitPane; -import javax.swing.JTabbedPane; -import javax.swing.JTable; -import javax.swing.JTextArea; -import javax.swing.JTextField; -import javax.swing.JTextPane; -import javax.swing.JToggleButton; -import javax.swing.JToolBar; -import javax.swing.JToolTip; -import javax.swing.JTree; -import javax.swing.JViewport; -import javax.swing.UIDefaults; -import javax.swing.plaf.basic.BasicLookAndFeel; -import javax.swing.plaf.metal.MetalLookAndFeel; -import static javax.swing.plaf.synth.SynthConstants.*; -import javax.swing.table.JTableHeader; -import java.awt.Insets; -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -/** - * Models a Synth look and feel. Contains all of the colors, fonts, painters, states, etc that compose a synth look and - * feel. - * - * To model Synth properly, I need to both Model the way Synth works (with styles, and so forth) and the way a look and - * feel works (UIDefaults table, etc) since both of these are supported ways of doing things in Synth. - * - * One important (but non-visual) thing that needs to be configurable is the support for InputMaps per component. In - * Synth, an input map can be associated with the main Synth element, meaning it applies to everything. Or it can be - * associated with a single style. An Inputmap can have an id, and it can contain multiple key/action pairs (where - * actions are denoted by name). - * - * It looks like Regions can have InputMaps? Sounds fishy to me. I think only Components really have input maps. - * - * I would like some way of denoting special keys between mac and other platforms. For example, cut, copy, paste etc - * should be different. In general, the ctrl key and apple (meta) key are reversed from what is typically on windows. - * - * @author Richard Bair - * @author Jasper Potts - */ -public class SynthModel extends AbstractBean implements HasUIDefaults, HasUIStyle, HasResources { - //I'm going to want: - //entries related to the Control color, and other colors of the Basic LAF - //entries related to fonts (standard fonts) used in the Basic LAF - //entries related to standard insets, borders, dimensions, icons - //entries related to component specific entries in the LAF - private List colors; - private List fonts; - private List insets; - private List borders; - private List dimensions; - private List icons; - private List components; - /** - * This is a local UIDefaults that contains all the UIDefaults in this synth model. It is kept uptodate by the - * indervidual UIDefaults nodes - */ - private transient UIDefaults modelDefaults = new UIDefaults(); - private transient UIStyle globalStyle = new UIStyle(); - - private transient File resourcesDir; - private transient File imagesDir; - private transient File templatesDir; - - /** Default constructor used by JIBX to create new empty SynthModel */ - protected SynthModel() { - this(false); - } - - public SynthModel(boolean populateWithDefaults) { - // create observable lists that fire changes on as property changes - colors = new ArrayList (); - fonts = new ArrayList (); - insets = new ArrayList (); - borders = new ArrayList (); - dimensions = new ArrayList (); - icons = new ArrayList (); - components = new ArrayList (); - - if (populateWithDefaults) { - //get the ui defaults from the SynthLookAndFeel. Using the UIDefaults table, - //pre initialize everything. -// SynthLookAndFeel synth = new SynthLookAndFeel(); - BasicLookAndFeel synth = new MetalLookAndFeel(); - UIDefaults defaults = synth.getDefaults(); - - //pre-init the palettes - colors.add(new UIColor("desktop", defaults.getColor("desktop"), modelDefaults)); - colors.add(new UIColor("activeCaption", defaults.getColor("activeCaption"), modelDefaults)); - colors.add(new UIColor("activeCaptionText", defaults.getColor("activeCaptionText"), modelDefaults)); - colors.add(new UIColor("activeCaptionBorder", defaults.getColor("activeCaptionBorder"), modelDefaults)); - colors.add(new UIColor("inactiveCaption", defaults.getColor("inactiveCaption"), modelDefaults)); - colors.add(new UIColor("inactiveCaptionText", defaults.getColor("inactiveCaptionText"), modelDefaults)); - colors.add(new UIColor("inactiveCaptionBorder", defaults.getColor("inactiveCaptionBorder"), modelDefaults)); - colors.add(new UIColor("window", defaults.getColor("window"), modelDefaults)); - colors.add(new UIColor("windowBorder", defaults.getColor("windowBorder"), modelDefaults)); - colors.add(new UIColor("windowText", defaults.getColor("windowText"), modelDefaults)); - colors.add(new UIColor("menu", defaults.getColor("menu"), modelDefaults)); - colors.add(new UIColor("menuText", defaults.getColor("menuText"), modelDefaults)); - colors.add(new UIColor("text", defaults.getColor("text"), modelDefaults)); - colors.add(new UIColor("textText", defaults.getColor("textText"), modelDefaults)); - colors.add(new UIColor("textHighlight", defaults.getColor("textHighlight"), modelDefaults)); - colors.add(new UIColor("textHighlightText", defaults.getColor("textHighlightText"), modelDefaults)); - colors.add(new UIColor("textInactiveText", defaults.getColor("textInactiveText"), modelDefaults)); - colors.add(new UIColor("control", defaults.getColor("control"), modelDefaults)); - colors.add(new UIColor("controlText", defaults.getColor("controlText"), modelDefaults)); - colors.add(new UIColor("controlHighlight", defaults.getColor("controlHighlight"), modelDefaults)); - colors.add(new UIColor("controlLHighlight", defaults.getColor("controlLHighlight"), modelDefaults)); - colors.add(new UIColor("controlShadow", defaults.getColor("controlShadow"), modelDefaults)); - colors.add(new UIColor("controlDkShadow", defaults.getColor("controlDkShadow"), modelDefaults)); - colors.add(new UIColor("scrollbar", defaults.getColor("scrollbar"), modelDefaults)); - colors.add(new UIColor("info", defaults.getColor("info"), modelDefaults)); - colors.add(new UIColor("infoText", defaults.getColor("infoText"), modelDefaults)); - - fonts.add(new UIFont("dialogPlain", defaults.getFont("Button.font"), modelDefaults)); - fonts.add(new UIFont("serifPlain", defaults.getFont("TextPane.font"), modelDefaults)); - fonts.add(new UIFont("sansSerifPlain", defaults.getFont("ToolTip.font"), modelDefaults)); - fonts.add(new UIFont("monospacedPlain", defaults.getFont("TextArea.font"), modelDefaults)); - fonts.add(new UIFont("dialogBold", defaults.getFont("InternalFrame.titleFont"), modelDefaults)); - - insets.add(new UIInsets("zeroInsets", new Insets(0, 0, 0, 0))); - insets.add(new UIInsets("twoInsets", new Insets(2, 2, 2, 2))); - insets.add(new UIInsets("threeInsets", new Insets(3, 3, 3, 3))); - - borders.add(new UIBorder("marginBorder", defaults.getBorder("MenuItem.border"))); - borders.add(new UIBorder("etchedBorder", defaults.getBorder("TitledBorder.border"))); - borders.add(new UIBorder("loweredBevelBorder", defaults.getBorder("Table.scrollPaneBorder"))); - borders.add(new UIBorder("blackLineBorder", defaults.getBorder("ToolTip.border"))); - - //TODO have to deal with the special arrow button region - - //pre-init the list of UI components - UIComponent button = new UIComponent("Button", JButton.class.getName(), "ButtonUI"); - addStates(this, button, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(button); - - UIComponent toggleButton = - new UIComponent("ToggleButton", JToggleButton.class.getName(), "ToggleButtonUI"); - addStates(this, toggleButton, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED, - SELECTED | PRESSED, SELECTED | MOUSE_OVER, DISABLED | SELECTED); - components.add(toggleButton); - - UIComponent radioButton = - new UIComponent("RadioButton", JRadioButton.class.getName(), "RadioButtonUI"); - addStates(this, radioButton, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED, - SELECTED | PRESSED, SELECTED | MOUSE_OVER, DISABLED | SELECTED); - components.add(radioButton); - - UIComponent checkBox = - new UIComponent("CheckBox", JCheckBox.class.getName(), "CheckBoxUI"); - addStates(this, checkBox, DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED, - SELECTED | PRESSED, SELECTED | MOUSE_OVER, DISABLED | SELECTED); - components.add(checkBox); - - UIComponent colorChooser = - new UIComponent("ColorChooser", JColorChooser.class.getName(), "ColorChooserUI"); - addStates(this, colorChooser, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(colorChooser); - - UIComponent comboBox = - new UIComponent("ComboBox", JComboBox.class.getName(), "ComboBoxUI"); - addStates(this, comboBox, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(comboBox); - - UIComponent fileChooser = - new UIComponent("FileChooser", JFileChooser.class.getName(), "FileChooserUI"); - addStates(this, fileChooser, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(fileChooser); - - //not represented in Synth -// UIComponent fileView = new UIComponent ("FileView", -// list(DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - - UIComponent internalFrame = - new UIComponent("InternalFrame", JInternalFrame.class.getName(), "InternalFrameUI"); - addStates(this, internalFrame, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - //has an internal frame title pane region - components.add(internalFrame); - - //TODO DesktopIcon ??? - - UIComponent desktop = - new UIComponent("Desktop", JDesktopPane.class.getName(), "DesktopPaneUI"); - addStates(this, desktop, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(desktop); - - UIComponent label = new UIComponent("Label", JLabel.class.getName(), "LabelUI"); - addStates(this, label, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(label); - - UIComponent list = new UIComponent("List", JList.class.getName(), "ListUI"); - addStates(this, list, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(list); - - UIComponent menuBar = new UIComponent("MenuBar", JMenuBar.class.getName(), "MenuBarUI"); - addStates(this, menuBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(menuBar); - - UIComponent menuItem = - new UIComponent("MenuItem", JMenuItem.class.getName(), "MenuItemUI"); - addStates(this, menuItem, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - //has a menuItemAccelerator region - components.add(menuItem); - - UIComponent radioButtonMenuItem = - new UIComponent("RadioButtonMenuItem", JRadioButtonMenuItem.class.getName(), - "RadioButtonMenuItemUI"); - addStates(this, radioButtonMenuItem, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(radioButtonMenuItem); - - UIComponent checkBoxMenuItem = - new UIComponent("CheckBoxMenuItem", JCheckBoxMenuItem.class.getName(), - "CheckBoxMenuItemUI"); - addStates(this, checkBoxMenuItem, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(checkBoxMenuItem); - - UIComponent menu = new UIComponent("Menu", JMenu.class.getName(), "MenuUI"); - addStates(this, menu, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(menu); - - UIComponent popupMenu = - new UIComponent("PopupMenu", JPopupMenu.class.getName(), "PopupMenuUI"); - addStates(this, popupMenu, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - //has a popupMenuSeparator region - components.add(popupMenu); - - UIComponent optionPane = - new UIComponent("OptionPane", JOptionPane.class.getName(), "OptionPaneUI"); - addStates(this, optionPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(optionPane); - - UIComponent panel = new UIComponent("Panel", JPanel.class.getName(), "PanelUI"); - addStates(this, panel, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(panel); - - UIComponent progressBar = - new UIComponent("ProgressBar", JProgressBar.class.getName(), "ProgressBarUI"); - addStates(this, progressBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(progressBar); - - UIComponent separator = - new UIComponent("Separator", JSeparator.class.getName(), "SeparatorUI"); - addStates(this, separator, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(separator); - - UIRegion scrollBarThumb = new UIRegion("ScrollBar.Thumb"); - addStates(this, scrollBarThumb, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - UIRegion scrollBarTrack = new UIRegion("ScrollBar.Track"); - addStates(this, scrollBarTrack, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - UIComponent scrollBar = - new UIComponent("ScrollBar", JScrollBar.class.getName(), "ScrollBarUI", scrollBarThumb, - scrollBarTrack); - addStates(this, scrollBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(scrollBar); - - UIComponent scrollPane = - new UIComponent("ScrollPane", JScrollPane.class.getName(), "ScrollPaneUI"); - addStates(this, scrollPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(scrollPane); - - UIComponent viewport = - new UIComponent("Viewport", JViewport.class.getName(), "ViewportUI"); - addStates(this, viewport, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(viewport); - - UIComponent slider = new UIComponent("Slider", JSlider.class.getName(), "SliderUI"); - addStates(this, slider, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - //has sliderThumb and sliderTrack sub regions - components.add(slider); - - UIComponent spinner = new UIComponent("Spinner", JSpinner.class.getName(), "SpinnerUI"); - addStates(this, spinner, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(spinner); - - UIComponent splitPane = - new UIComponent("SplitPane", JSplitPane.class.getName(), "SplitPaneUI"); - addStates(this, splitPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - //has splitPaneDivider sub region - components.add(splitPane); - - UIComponent tabbedPane = - new UIComponent("TabbedPane", JTabbedPane.class.getName(), "TabbedPaneUI"); - addStates(this, tabbedPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - //has tabbedPaneContent and tabbedPaneTab and TabbedPaneTabArea sub regions - components.add(tabbedPane); - - UIComponent table = new UIComponent("Table", JTable.class.getName(), "TableUI"); - addStates(this, table, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(table); - - UIComponent tableHeader = - new UIComponent("TableHeader", JTableHeader.class.getName(), "TableHeaderUI"); - addStates(this, tableHeader, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(tableHeader); - - UIComponent textField = - new UIComponent("TextField", JTextField.class.getName(), "TextFieldUI"); - addStates(this, textField, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(textField); - - UIComponent formattedTextField = - new UIComponent("FormattedTextField", JFormattedTextField.class.getName(), - "FormattedTextFieldUI"); - addStates(this, formattedTextField, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(formattedTextField); - - UIComponent passwordField = - new UIComponent("PasswordField", JPasswordField.class.getName(), "PasswordFieldUI"); - addStates(this, passwordField, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(passwordField); - - UIComponent textArea = - new UIComponent("TextArea", JTextArea.class.getName(), "TextAreaUI"); - addStates(this, textArea, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(textArea); - - UIComponent textPane = - new UIComponent("TextPane", JTextPane.class.getName(), "TextPaneUI"); - addStates(this, textPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(textPane); - - UIComponent editorPane = - new UIComponent("EditorPane", JEditorPane.class.getName(), "EditorPaneUI"); - addStates(this, editorPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(editorPane); - - /* - * The only thing not represented in Synth as a region. I suppose we'll have - * to make it a CustomUIComponent - */ -// UIComponent titledBorder = new UIComponent ("TitledBorder", -// list(DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - - UIComponent toolBar = new UIComponent("ToolBar", JToolBar.class.getName(), "ToolBarUI"); - addStates(this, toolBar, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - //toolBarContent, toolBarDragWindow, toolBarSeparator sub regions - components.add(toolBar); - - UIComponent toolTip = new UIComponent("ToolTip", JToolTip.class.getName(), "ToolTipUI"); - addStates(this, toolTip, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(toolTip); - - //tooltip manager - - UIComponent tree = new UIComponent("Tree", JTree.class.getName(), "TreeUI"); - addStates(this, tree, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - //treeCell sub region - components.add(tree); - - UIComponent rootPane = - new UIComponent("RootPane", JRootPane.class.getName(), "RootPaneUI"); - addStates(this, rootPane, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED); - components.add(rootPane); - } - } - - public List getColorPalette() { - return colors; - } - - public List getFontPalette() { - return fonts; - } - - public List getInsetPalette() { - return insets; - } - - public List getBorderPalette() { - return borders; - } - - public List getDimensionPalette() { - return dimensions; - } - - public List getIconPalette() { - return icons; - } - - public List getComponents() { - return components; - } - - /** - * Get the local UIDefaults that contains all the UIDefaults in this synth model. It is kept uptodate by the - * indervidual UIDefaults nodes - * - * @return The UIDefaults for the synth model - */ - public UIDefaults getUiDefaults() { - return modelDefaults; - } - - public UIStyle getStyle() { - return globalStyle; - } - - // by default there are no painters assigned to the various states - private static void addStates(SynthModel model, UIRegion parentRegion, int... states) { - for (int state : states) { - List stateList = new ArrayList (); - if ((state & ENABLED) != 0) { - stateList.add(UIStateType.ENABLED_KEY); - } - if ((state & MOUSE_OVER) != 0) { - stateList.add(UIStateType.MOUSE_OVER_KEY); - } - if ((state & PRESSED) != 0) { - stateList.add(UIStateType.PRESSED_KEY); - } - if ((state & DISABLED) != 0) { - stateList.add(UIStateType.DISABLED_KEY); - } - if ((state & FOCUSED) != 0) { - stateList.add(UIStateType.FOCUSED_KEY); - } - if ((state & SELECTED) != 0) { - stateList.add(UIStateType.SELECTED_KEY); - } - if ((state & DEFAULT) != 0) { - stateList.add(UIStateType.DEFAULT_KEY); - } - parentRegion.addBackgroundState(new UIState(model, parentRegion, stateList.toArray(new String[stateList.size()]))); - } - } - - public File getResourcesDir() { - return resourcesDir; - } - - public void setResourcesDir(File resourcesDir) { - System.out.println("SynthModel.setResourcesDir(" + resourcesDir + ")"); - File old = getResourcesDir(); - this.resourcesDir = resourcesDir; - firePropertyChange("resourcesDir", old, getResourcesDir()); - } - - public File getImagesDir() { - return imagesDir; - } - - public void setImagesDir(File imagesDir) { - System.out.println("SynthModel.setImagesDir(" + imagesDir + ")"); - File old = getImagesDir(); - this.imagesDir = imagesDir; - firePropertyChange("imagesDir", old, getImagesDir()); - } - - public File getTemplatesDir() { - return templatesDir; - } - - public void setTemplatesDir(File templatesDir) { - System.out.println("SynthModel.setTemplatesDir(" + templatesDir + ")"); - File old = getTemplatesDir(); - this.templatesDir = templatesDir; - firePropertyChange("templatesDir", old, getTemplatesDir()); - } - - // ================================================================================================================= - // JIBX Methods - - public void preSet(IUnmarshallingContext context) { - File resourcesDir = (File) context.getUserContext(); - this.resourcesDir = resourcesDir; - this.imagesDir = new File(resourcesDir, "images"); - this.templatesDir = new File(resourcesDir, "templates"); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/SynthModel.jibx.xml b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/SynthModel.jibx.xml deleted file mode 100644 index 981772abc2b0d573210d446763e712a78bc52948..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/SynthModel.jibx.xml +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIBorder.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIBorder.java deleted file mode 100644 index 46c35ed1b082d3cab4386f168f45b7e5ac8063eb..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIBorder.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import javax.swing.border.Border; - -/** - * UIBorder - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIBorder extends UIDefault- - -- - - - - -- - - - - - - - -- - - - -- - - -- - - - - - - - - - - - -- - - -- - - -- - - -- - -- - -- - -- - - - - - - - - - - - - - - - - - - -- - -- - -- - - -- - - - - -- - - - - - - - - - - - -- - -- - - - -- - - - - - -- - - - - { - - public UIBorder() { - } - - public UIBorder(String id, Border b) { - super(id, b); - } - - public Border getBorder() { - return super.getValue(); - } - - public void setBorder(Border b) { - Border old = getBorder(); - super.setValue(b); - firePropertyChange("border", old, b); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIColor.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIColor.java deleted file mode 100644 index 572d346132515b2b60a3a91a524b6ea88ce49f85..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIColor.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import org.jdesktop.swingx.designer.paint.Matte; - -import javax.swing.UIDefaults; -import java.awt.Color; - -/** - * UIColor - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIColor extends UIPaint { - - public UIColor() { - } - - public UIColor(String id, Matte value) { - super(id, value); - } - - public UIColor(String id, Color color, UIDefaults modelDefaults) { - this(id, new Matte(color, modelDefaults)); - } - - public Matte getPaint() { - return (Matte) super.getPaint(); - } - - public void setPaint(Matte c) { - super.setPaint(c); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIComponent.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIComponent.java deleted file mode 100644 index 028124ab36371ec3295b39cf877e07b406aa1585..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIComponent.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import org.jdesktop.swingx.designer.utils.HasUIDefaults; - -import java.util.List; -import java.util.ArrayList; - -/** - * UIComponent - model node that represents the designs for a single swing component - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIComponent extends UIRegion implements HasUIDefaults { - - /** The classname of the swing component that this UIComponent represents */ - private String type; - /** The name of the component if its a named component or null if its a generic component */ - private String componentName = null; - /** If this components is opaque which means that when it is painted all of its bounds are filled */ - private boolean opaque = false; - /** - * A list of state types that are available to this region and sub regions of this component but not subcomponents - * of this component. If this list is empty then the standard synth set of state types are assumed. - */ - private List stateTypes; - - // ================================================================================================================= - // Contructors - - /** no-args contructor for JIBX */ - protected UIComponent() { - super(); - // create new observable list for state types so we get events for when the model changes - stateTypes = new ArrayList (); - } - - public UIComponent(String name, String type, String ui, UIRegion... subRegions) { - super(name, ui, subRegions); - this.type = type; - for (UIRegion r : subRegions) { - r.setRegion(this); - } - // create new observable list for state types so we get events for when the model changes - stateTypes = new ArrayList (); - } - - // ================================================================================================================= - // Bean Methods - - public String getComponentName() { - return componentName; - } - - public void setComponentName(String componentName) { - String old = getComponentName(); - this.componentName = componentName; - firePropertyChange("componentName", old, getComponentName()); - } - - public boolean isOpaque() { - return opaque; - } - - public void setOpaque(boolean opaque) { - boolean old = isOpaque(); - this.opaque = opaque; - firePropertyChange("opaque", old, isOpaque()); - } - - public String getType() { - return type; - } - - public void setType(String type) { - String old = getType(); - this.type = type; - firePropertyChange("type", old, getType()); - } - - /** - * Get the list of state types that are available to this region and sub regions of this component but not - * subcomponents of this component. If this list is empty then the standard synth set of state types are assumed. - * - * @return List of available state types - */ - public List getStateTypes() { - return stateTypes; - } - - @Override public String getKey() { - if (key == null || "".equals(key)) { - if (componentName == null || "".equals(componentName)) { - return getName(); - } else { - return "\"" + componentName + "\""; - } - } else { - return key; - } - } - - @Override public String getTitle() { - if (title == null || "".equals(title)) { - if (componentName == null || "".equals(componentName)) { - return getName(); - } else { - return componentName; - } - } else { - return title; - } - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIDefault.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIDefault.java deleted file mode 100644 index 2f0bf09a8d6584407782641a936ffa6b856cdc93..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIDefault.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import org.jdesktop.beans.AbstractBean; -import org.jdesktop.swingx.designer.utils.HasUIDefaults; -import org.jibx.runtime.IUnmarshallingContext; - -import javax.swing.UIDefaults; - -/** - * Represents an entry in the UI defaults table. - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIDefault extends AbstractBean implements HasUIDefaults { - private String name; - private T value; - /** - * This is a local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the - * indervidual UIDefaults nodes - */ - private transient UIDefaults modelDefaults = null; - - public UIDefault() { - } - - public UIDefault(String name, T value) { - this.name = name; - this.value = value; - } - - public UIDefault(String name, T value, UIDefaults modelDefaults) { - this.name = name; - this.value = value; - this.modelDefaults = modelDefaults; - } - - // ================================================================================================================= - // JIBX Methods - - /** - * Called by JIBX after all fields have been set - * - * @param context The JIBX Unmarshalling Context - */ - private void postSet(IUnmarshallingContext context) { - // walk up till we get synth model - for (int i = 0; i < context.getStackDepth(); i++) { - if (context.getStackObject(i) instanceof HasUIDefaults) { - modelDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults(); - if (modelDefaults != null) break; - } - } - } - - // ================================================================================================================= - // Bean Methods - - /** - * Get the local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the - * indervidual UIDefaults nodes - * - * @return The UIDefaults for the synth model - */ - public UIDefaults getUiDefaults() { - return modelDefaults; - } - - public void setValue(T t) { - T old = this.value; - this.value = t; - firePropertyChange("value", old, getValue()); - } - - public T getValue() { - return value; - } - - public final String getName() { - return name; - } - - public void setName(String name) { - String old = this.name; - firePropertyChange("name", old, name); - this.name = name; - // update model defaults - if (old != null) modelDefaults.remove(old); - modelDefaults.put(getName(), getValue()); - } - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIFont.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIFont.java deleted file mode 100644 index efb6fdba35c5212f2d7359c45ad9c516b4b1a834..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIFont.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import java.awt.Font; -import org.jdesktop.swingx.designer.font.Typeface; -import java.util.Arrays; -import java.util.List; -import java.util.ArrayList; -import javax.swing.UIDefaults; - -/** - * Represents a single font entry in the UIDefaults table. Each UIFont takes a - * list of Typefaces. These typefaces are listed by order of preference. Thus, - * when putting a font into UIDefaults, the code can check whether each font - * exists, and when it finds the first font that does, insert it. - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIFont extends UIDefault > implements Cloneable { - - private void updateUIDefaults() { - if (getUiDefaults() != null) { - for (Typeface t : getFonts()) { - if (t.isFontSupported()) { - getUiDefaults().put(getName(), t.getFont()); - return; - } - } - } - - //TODO must not have found any. Default to the Default platform font - getUiDefaults().put(getName(), new Font("Arial", Font.PLAIN, 12)); - } - - public UIFont() { - setValue(new ArrayList
()); - } - - public UIFont(String id, List values, UIDefaults defaults) { - super(id, values, defaults); - updateUIDefaults(); - } - - public UIFont(String id, Font font, UIDefaults modelDefaults) { - this(id, Arrays.asList(new Typeface(font, modelDefaults)), modelDefaults); - } - - public List getFonts() { - return super.getValue(); - } - - private void setFonts(List values) { - super.setValue(values); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIIcon.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIIcon.java deleted file mode 100644 index d1a25833de121f19701c7d9a7df943a3de39d177..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIIcon.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import javax.swing.Icon; - -/** - * UIIcon - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIIcon extends UIDefault { - - public UIIcon() { - } - - public Icon getIcon() { - return super.getValue(); - } - - public void setIcon(Icon i) { - Icon old = getIcon(); - super.setValue(i); - firePropertyChange("icon", old, i); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIIconRegion.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIIconRegion.java deleted file mode 100644 index 74590ee9789bdbc6d8d464614c13a6b0ac573ffc..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIIconRegion.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -/** - * A UIRegion subclass which is used for generating icons. For example, JRadioButton and JCheckBox represent themselves - * mainly via their icons. However, from the designers perspective, the main design isn't an "icon", but just a region - * on the button. - * - * That type of region is represented by a UIIconRegion. UIIconRegion contains a string which references the UIDefault - * value associated with this icon. For example, RadioButton.icon. - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIIconRegion extends UIRegion { - /** The UiDefaults key which this icon should be stored for basic LaF to find it. This is absolute */ - private String basicKey = null; - - public UIIconRegion() { - super(); - } - - public String getBasicKey() { - return basicKey; - } - - public void setBasicKey(String basicKey) { - String old = getBasicKey(); - this.basicKey = basicKey; - firePropertyChange("basicKey",old,getBasicKey()); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIInsets.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIInsets.java deleted file mode 100644 index 3e320de6682c7bbd0c77dab7f59ee67cca430510..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIInsets.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import java.awt.Insets; - -/** - * UIInsets - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIInsets extends UIDefault { - - public UIInsets() { - } - - public UIInsets(String id, Insets value) { - super(id, value); - } - - public Insets getInsets() { - return super.getValue(); - } - - public void setInsets(Insets i) { - Insets old = getInsets(); - super.setValue(i); - firePropertyChange("insets", old, i); - // update model defaults - getUiDefaults().put(getName(), i); - } - - - public String toString() { - return "UiInset(" + getName() + ")" + - ((getInsets() == null) ? " NONE" : "(" + getInsets().top + "," + getInsets().left + "," + - getInsets().bottom + "," + getInsets().right + ")"); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIPaint.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIPaint.java deleted file mode 100644 index 931b3f41feea7262dbed1a0d2f73366b769e80a8..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIPaint.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import org.jdesktop.swingx.designer.paint.Matte; -import org.jdesktop.swingx.designer.paint.PaintModel; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -/** - * UIPaint - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIPaint extends UIDefault { - - /** Listener to keep model UiDefaults up to date for this UiPaint */ - private PropertyChangeListener matteListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - PaintModel paintModel = getValue(); - if (paintModel instanceof Matte) { - getUiDefaults().put(getName(), ((Matte) paintModel).getColor()); - } - // propogate the paint change up as PaintModel is a mutable object - if (evt.getPropertyName().equals("paint")) { - firePropertyChange("paint", null, getPaint()); - firePropertyChange("value", null, getPaint()); - } - } - }; - - public UIPaint() {} - - public UIPaint(String id, PaintModel value) { - super(id, value, (value instanceof Matte) ? ((Matte) value).getUiDefaults() : null); - // update model defaults - if (value instanceof Matte) { - Matte matte = (Matte) value; - if (getUiDefaults() != null) getUiDefaults().put(getName(), matte.getColor()); - matte.addPropertyChangeListener(matteListener); - } - } - - public PaintModel getPaint() { - return super.getValue(); - } - - public void setPaint(PaintModel c) { - PaintModel old = getPaint(); - if (old instanceof Matte) old.removePropertyChangeListener(matteListener); - super.setValue(c); - firePropertyChange("paint", old, c); - // update model defaults - if (c instanceof Matte) { - Matte matte = (Matte) c; - getUiDefaults().put(getName(), matte.getColor()); - matte.addPropertyChangeListener(matteListener); - } - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIProperty.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIProperty.java deleted file mode 100644 index 1a57a58f816adf9211d4a541ed89f860904adc9c..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIProperty.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import org.jdesktop.beans.AbstractBean; - -/** - * UIProperty - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIProperty extends AbstractBean { - public static enum PropertyType { - BOOLEAN, INT, FLOAT, DOUBLE, STRING, FONT, COLOR, INSETS, DIMENSION, BORDER - } - - private String name; - private PropertyType type; - private Object value; - - protected UIProperty() { - } - - public UIProperty(String name, PropertyType type, Object value) { - this.name = name; - this.type = type; - this.value = value; - } - - // ================================================================================================================= - // Bean Methods - - public String getName() { - return name; - } - - public void setName(String name) { - String old = getName(); - this.name = name; - firePropertyChange("name", old, getName()); - } - - public PropertyType getType() { - return type; - } - - public void setType(PropertyType type) { - PropertyType old = getType(); - this.type = type; - firePropertyChange("type", old, getType()); - } - - public Object getValue() { - return value; - } - - public void setValue(Object value) { - Object old = getValue(); - this.value = value; - firePropertyChange("value", old, getValue()); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIRegion.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIRegion.java deleted file mode 100644 index 1ee4f35653a3af119323ef2dc65f54020cfeb6de..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIRegion.java +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import org.jdesktop.beans.AbstractBean; -import org.jdesktop.swingx.designer.utils.HasUIDefaults; -import org.jibx.runtime.IUnmarshallingContext; - -import javax.swing.UIDefaults; -import java.awt.Insets; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.List; -import java.util.ArrayList; - -/** - * Represents a "Region" in synth, which also includes entire components. - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIRegion extends AbstractBean implements HasUIDefaults, HasUIStyle { - private String name;//the code-wise name of the region - protected String key; //the UIdefaults key for this region - protected String title; //the user friendly name/title of this region - /** List of background states */ - private List backgroundStates; - /** List of foreground states */ - private List foregroundStates; - /** List of border states */ - private List borderStates; - private UIStyle style = new UIStyle(); - protected Insets contentMargins = new Insets(0, 0, 0, 0); - /** Sub regions, if any */ - private List subRegions; - - //together with name, these two fields allow me to reconstruct, in - //code, a synth Region, including a custom Region, if you make one. - private String ui; - private boolean subregion; - /** - * This is a local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the - * indervidual UIDefaults nodes - */ - private transient UIDefaults modelDefaults = null; - - private UIRegion region; //the region that this region belongs to - - // ================================================================================================================= - // Constructors - - /** no-args contructor for JIBX */ - protected UIRegion() { - subRegions = new ArrayList (); - backgroundStates = new ArrayList (); - foregroundStates = new ArrayList (); - borderStates = new ArrayList (); - style.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("style." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - }); - } - - public UIRegion(String name, UIRegion... subRegions) { - this(name, null, true, subRegions); - } - - public UIRegion(String name, String ui, UIRegion... subRegions) { - this(name, ui, false, subRegions); - } - - public UIRegion(String name, String ui, boolean subregion, UIRegion... subRegions) { - this(); - this.name = name; - this.ui = ui; - this.subregion = subregion; - if (subRegions != null) { - for (UIRegion r : subRegions) { - if (r != null) { - this.subRegions.add(r); - r.getStyle().setParentStyle(getStyle()); - } - } - } - } - - // ================================================================================================================= - // JIBX Methods - - /** - * Called by JIBX after all fields have been set - * - * @param context The JIBX Unmarshalling Context - */ - private void preSet(IUnmarshallingContext context) { - // walk up till we get synth model - for (int i = 0; i < context.getStackDepth(); i++) { - if (context.getStackObject(i) instanceof HasUIDefaults) { - modelDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults(); - if (modelDefaults != null) break; - } - } - for (int i = 0; i < context.getStackDepth(); i++) { - if (context.getStackObject(i) instanceof UIRegion && context.getStackObject(i) != this) { - region = (UIRegion) context.getStackObject(i); - break; - } - } - } - - // ================================================================================================================= - // Bean Methods - - public Insets getContentMargins() { - return contentMargins; - } - - public void setContentMargins(Insets contentMargins) { - Insets old = getContentMargins(); - this.contentMargins = contentMargins; - firePropertyChange("contentMargins", old, getContentMargins()); - } - - void setRegion(UIRegion r) { - this.region = r; - } - - public UIRegion getRegion() { - return region; - } - - /** - * Get the local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the - * indervidual UIDefaults nodes - * - * @return The UIDefaults for the synth model - */ - public UIDefaults getUiDefaults() { - return modelDefaults; - } - - public String getName() { - return name; - } - - public final UIRegion[] getSubRegions() { - return subRegions.toArray(new UIRegion[0]); - } - - public final UIState[] getBackgroundStates() { - return backgroundStates.toArray(new UIState[0]); - } - - public final UIState[] getForegroundStates() { - return foregroundStates.toArray(new UIState[0]); - } - - public final UIState[] getBorderStates() { - return borderStates.toArray(new UIState[0]); - } - - public UIStyle getStyle() { - return style; - } - - public final boolean isSubRegion() { - return subregion; - } - - public final String getUi() { - return ui; - } - - public void addBackgroundState(UIState state) { - // check if we already have that state - for (UIState uiState : backgroundStates) { - if (uiState.getName().equals(state.getName())) return; - } - backgroundStates.add(state); - state.setRegion(this); - firePropertyChange("backgroundStates", null, backgroundStates); - } - - public void removeBackgroundState(UIState state) { - if (backgroundStates.remove(state)) { - firePropertyChange("backgroundStates", null, backgroundStates); - } - } - - public void addForegroundState(UIState state) { - // check if we already have that state - for (UIState uiState : foregroundStates) { - if (uiState.getName().equals(state.getName())) return; - } - foregroundStates.add(state); - state.setRegion(this); - firePropertyChange("foregroundStates", null, foregroundStates); - } - - public void removeForegroundState(UIState state) { - if (foregroundStates.remove(state)) { - firePropertyChange("foregroundStates", null, foregroundStates); - } - } - - public void addBorderState(UIState state) { - // check if we already have that state - for (UIState uiState : borderStates) { - if (uiState.getName().equals(state.getName())) return; - } - borderStates.add(state); - state.setRegion(this); - firePropertyChange("borderStates", null, borderStates); - } - - public void removeBorderState(UIState state) { - if (borderStates.remove(state)) { - firePropertyChange("borderStates", null, borderStates); - } - } - - - public String getKey() { - return key == null || "".equals(key) ? name : key; - } - - public String getTitle() { - return title == null || "".equals(title) ? name : title; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIState.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIState.java deleted file mode 100644 index 4d747a4e2d4a0c090d53e5b6a57cd009205a8662..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIState.java +++ /dev/null @@ -1,298 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import org.jdesktop.beans.AbstractBean; -import org.jdesktop.swingx.designer.Canvas; -import org.jdesktop.swingx.designer.utils.HasPath; -import org.jdesktop.swingx.designer.utils.HasUIDefaults; -import org.jibx.runtime.IUnmarshallingContext; - -import javax.swing.UIDefaults; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -/** - * Represents a State in the Synth LAF. - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIState extends AbstractBean implements HasUIStyle, HasPath { - - private List stateKeys; - private boolean inverted; //indicates whether to invert the meaning of the 9-square stretching insets - /** A cached string representing the list of stateKeys deliminated with "+" */ - private String cachedName = null; - private Canvas canvas; - private UIStyle style; - /** the region that this state belongs to */ - private UIRegion region; - /** - * This is a local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the - * indervidual UIDefaults nodes - */ - private transient UIDefaults modelDefaults = null; - - // ================================================================================================================= - // Contructors - - public UIState() { - // Create state keys as event list so model changes are propogated - stateKeys = new ArrayList (); - } - - public UIState(SynthModel model, UIRegion parentRegion, String... stateTypeKeys) { - // Create state keys as event list so model changes are propogated - stateKeys = new ArrayList (); - this.stateKeys.addAll(Arrays.asList(stateTypeKeys)); - // - modelDefaults = model.getUiDefaults(); - region = parentRegion; - // create new canvas - canvas = new Canvas(100, 30); - canvas.setUiDefaults(modelDefaults); - String canvasPath = getPath(); - canvas.setResourcesDir(new File(model.getResourcesDir(), canvasPath)); - canvas.setTemplatesDir(new File(model.getTemplatesDir(), canvasPath)); - canvas.setImagesDir(new File(model.getImagesDir(), canvasPath)); - canvas.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("canvas." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - }); - // create new style - style = new UIStyle(); - style.setParentStyle(region.getStyle()); - style.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("style." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - }); - } - - // ================================================================================================================= - // JIBX Methods - - /** - * JIBX needs this - * - * @param stateKeys The new list of states - */ - private void setStateKeys(List stateKeys) { - if (stateKeys != this.stateKeys) { - this.stateKeys.clear(); - this.stateKeys.addAll(stateKeys); - } - } - - /** - * Called by JIBX after all fields have been set - * - * @param context The JIBX Unmarshalling Context - */ - private void preSet(IUnmarshallingContext context) { - // walk up till we get synth model - for (int i = 0; i < context.getStackDepth(); i++) { - if (context.getStackObject(i) instanceof HasUIDefaults) { - modelDefaults = ((HasUIDefaults) context.getStackObject(i)).getUiDefaults(); - if (modelDefaults != null) break; - } - } - for (int i = 0; i < context.getStackDepth(); i++) { - if (context.getStackObject(i) instanceof UIRegion) { - region = (UIRegion) context.getStackObject(i); - break; - } - } - } - - /** - * Called by JIBX after all fields have been set - * - * @param context The JIBX Unmarshalling Context - */ - private void postSet(IUnmarshallingContext context) { - // add listeners to pass canvas and style events up tree - canvas.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("canvas." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - }); - style.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("style." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - }); - } - - // ================================================================================================================= - // Bean Methods - - /** - * Get path to this UI State of the form /RegionA/RegionB/StateName - * - * @return Path to this state - */ - public String getPath() { - StringBuilder buf = new StringBuilder(getName()); - UIRegion region = getRegion(); - // check if we are foreground background or border - boolean found = false; - for (UIState state : region.getBackgroundStates()) { - if (state == this) { - buf.insert(0, "Background/"); - found = true; - break; - } - } - if (!found) { - for (UIState state : region.getForegroundStates()) { - if (state == this) { - buf.insert(0, "Foreground/"); - found = true; - break; - } - } - } - if (!found) { - for (UIState state : region.getBorderStates()) { - if (state == this) { - buf.insert(0, "Border/"); - found = true; - break; - } - } - } - // add parent regions - while (region != null) { - buf.insert(0, '/'); - if (region instanceof UIComponent && ((UIComponent) region).getComponentName() != null) { - buf.insert(0, ((UIComponent) region).getComponentName()); - } else { - buf.insert(0, region.getName()); - } - region = region.getRegion(); - } - return buf.toString(); - } - - void setRegion(UIRegion r) { - this.region = r; - this.style.setParentStyle(r.getStyle()); - } - - public UIRegion getRegion() { - return region; - } - - /** - * Get the local UIDefaults that contains all the UIDefaults in the synth model. It is kept uptodate by the - * indervidual UIDefaults nodes - * - * @return The UIDefaults for the synth model - */ - public UIDefaults getUIDefaults() { - return modelDefaults; - } - - - /** - * Get the list of state type keys for this state. This state is applied when the current component state matches as - * many as possible of these state types. - * - * @return List of state types that need to be true for this state. This is direct access to the data and changes to - * the returned list will effect this UiState. - */ - public List getStateKeys() { - return stateKeys; - } - - public void setInverted(boolean b) { - boolean old = inverted; - inverted = b; - firePropertyChange("invert", old, b); - } - - public final boolean isInverted() { - return inverted; - } - - /** - * Get the name of this state - * - * @return - */ - public String getName() { - if (cachedName == null) { - StringBuilder buf = new StringBuilder(); - List keys = new ArrayList (stateKeys); - Collections.sort(keys); - for (Iterator iter = keys.iterator(); iter.hasNext();) { - buf.append(iter.next()); - if (iter.hasNext()) buf.append('+'); - } - cachedName = buf.toString(); - } - return cachedName; - } - - public final Canvas getCanvas() { - return canvas; - } - - public void setCanvas(Canvas c) { - Canvas old = canvas; - canvas = c; - firePropertyChange("canvas", old, c); - } - - public UIStyle getStyle() { - return style; - } - - // ================================================================================================================= - // JIBX Helper Methods - - public static String keysToString(List keys) { - StringBuilder buf = new StringBuilder(); - for (Iterator iter = keys.iterator(); iter.hasNext();) { - buf.append(iter.next()); - if (iter.hasNext()) buf.append('+'); - } - return buf.toString(); - } - - public static List stringToKeys(String keysString) { - return Arrays.asList(keysString.split("\\+")); - } - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIStateType.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIStateType.java deleted file mode 100644 index 811ca8fa17c15792ab2bbfe73137ce7b388e1046..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIStateType.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import org.jdesktop.beans.AbstractBean; - -/** - * UIStateType - A UIComponents has a collection of these which constitute the avilables states which can be chosen in - * the components regions. A UIStateType can be either a custom state or one of the predefined standard states. - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIStateType extends AbstractBean { - /* Keys for standard synth states */ - public static final String ENABLED_KEY = "Enabled"; - public static final String MOUSE_OVER_KEY = "MouseOver"; - public static final String PRESSED_KEY = "Pressed"; - public static final String DISABLED_KEY = "Disabled"; - public static final String FOCUSED_KEY = "Focused"; - public static final String SELECTED_KEY = "Selected"; - public static final String DEFAULT_KEY = "Default"; - public static final String[] STANDARD_SYNTH_STATE_KEYS = new String[]{ - ENABLED_KEY, MOUSE_OVER_KEY, PRESSED_KEY, DISABLED_KEY, FOCUSED_KEY, SELECTED_KEY, DEFAULT_KEY - }; - public static final UIStateType[] STANDARD_SYNTH_STATES = new UIStateType[]{ - new UIStateType(ENABLED_KEY), - new UIStateType(MOUSE_OVER_KEY), - new UIStateType(PRESSED_KEY), - new UIStateType(DISABLED_KEY), - new UIStateType(FOCUSED_KEY), - new UIStateType(SELECTED_KEY), - new UIStateType(DEFAULT_KEY) - }; - - /** Unique string for the ui key for this state, must be unique within a components set of UiStateTypes */ - private String key; - /** - * Snippet of java code that defines calculates the value of this state for a particular component. The varaiable - * cis the component. You end with a return statement returning boolean true/false for the current - * value of this state for this component. This can be null if the key is one of that standard synth states defined - * in constants in this class. - */ - private String codeSnippet; - - /** JIBX no-args contructor */ - private UIStateType() {} - - private UIStateType(String key) { - this.key = key; - this.codeSnippet = null; - } - - public UIStateType(String key, String codeSnippet) { - this.key = key; - this.codeSnippet = codeSnippet; - } - - // ================================================================================================================= - // Bean Methods - - /** - * Get the ui defaults key for this state type. Unique string for the ui key for this state, must be unique within a - * components set of UiStateTypes. - * - * @return Unique ui default key - */ - public String getKey() { - return key; - } - - /** - * Get the snippet of java code that defines calculates the value of this state for a particular component. The - * varaiablecis the component. You end with a return statement returning boolean true/false for the - * current value of this state for this component. This can be null if the key is one of that standard synth states - * defined in constants in this class. - * - * @return Snippet of java code or null if this is a synth standard state - */ - public String getCodeSnippet() { - return codeSnippet; - } - - /** - * Set the snippet of java code that defines calculates the value of this state for a particular component. The - * varaiablecis the component. You end with a return statement returning boolean true/false for the - * current value of this state for this component. This can be null if the key is one of that standard synth states - * defined in constants in this class. - * - * @param codeSnippet Snippet of java code or null if this is a synth standard state - */ - public void setCodeSnippet(String codeSnippet) { - this.codeSnippet = codeSnippet; - } - - /** - * Returns if this state type is a standard synth type and has no code snippet or a custom type that has a code - * snippet. It is used by JIBX to determin if the code snippet should be written to XML. - * - * @returntrueif codeSnippet is non null - */ - public boolean hasCodeSnippet() { - return codeSnippet != null; - } - - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIStyle.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIStyle.java deleted file mode 100644 index 3e926bf8e4a077101d93952735e55a2384ceafe0..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/UIStyle.java +++ /dev/null @@ -1,467 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel; - -import org.jdesktop.beans.AbstractBean; -import org.jdesktop.swingx.designer.font.Typeface; -import org.jdesktop.swingx.designer.paint.Matte; -import org.jibx.runtime.IUnmarshallingContext; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.List; -import java.util.ArrayList; - -/** - * UIStyle - * - * @author Richard Bair - * @author Jasper Potts - */ -public class UIStyle extends AbstractBean { - public static enum CacheMode {NO_CACHING,FIXED_SIZES,NINE_SQUARE_SCALE} - public static enum HintAlphaInterpolation { - DEFAULT, QUALITY, SPEED - } - - public static enum HintAntialiasing { - DEFAULT, ON, OFF - } - - public static enum HintColorRendering { - DEFAULT, QUALITY, SPEED - } - - public static enum HintDithering { - DEFAULT, DISABLE, ENABLE - } - - public static enum HintFractionalMetrics { - DEFAULT, ON, OFF - } - - public static enum HintInterpolation { - NEAREST_NEIGHBOR, BILINEAR, BICUBIC - } - - public static enum HintRendering { - DEFAULT, QUALITY, SPEED - } - - public static enum HintStrokeControl { - DEFAULT, NORMALIZE, PURE - } - - public static enum HintTextAntialiasing { - DEFAULT, ON, OFF, GASP, LCD_HBGR, LCD_HRGB, LCD_VBGR, LCD_VRGB - } - - private Typeface font = null; - private boolean fontInherited = true; - private Matte textForeground = null; - private boolean textForegroundInherited = true; - private Matte textBackground = null; - private boolean textBackgroundInherited = true; - private Matte background = null; - private boolean backgroundInherited = true; - - private boolean cacheSettingsInherited = true; - private CacheMode cacheMode = CacheMode.FIXED_SIZES; - private double maxHozCachedImgScaling = 1; - private double maxVertCachedImgScaling = 1; - - private HintAlphaInterpolation hintAlphaInterpolation = null; - private HintAntialiasing hintAntialiasing = null; - private HintColorRendering hintColorRendering = null; - private HintDithering hintDithering = null; - private HintFractionalMetrics hintFractionalMetrics = null; - private HintInterpolation hintInterpolation = null; - private HintRendering hintRendering = null; - private HintStrokeControl hintStrokeControl = null; - private HintTextAntialiasing hintTextAntialiasing = null; - private ListuiProperties; - private UIStyle parentStyle = null; - - private PropertyChangeListener textForegoundListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("textForeground." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - }; - private PropertyChangeListener textBackgroundListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("textBackground." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - }; - private PropertyChangeListener backgroundListener = new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - firePropertyChange("background." + evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - }; - - // ================================================================================================================= - // Constructors - - public UIStyle() { - uiProperties = new ArrayList (); - } - - // ================================================================================================================= - // JIBX Methods - - /** - * Called by JIBX after all fields have been set - * - * @param context The JIBX Unmarshalling Context - */ - private void postSet(IUnmarshallingContext context) { - // walk up till we get a parent style - for (int i = 0; i < context.getStackDepth(); i++) { - if (context.getStackObject(i) instanceof HasUIStyle) { - HasUIStyle hasStyle = (HasUIStyle) context.getStackObject(i); - if (hasStyle.getStyle() != this) { - parentStyle = hasStyle.getStyle(); - if (parentStyle != null) break; - } - } - } - } - - // ================================================================================================================= - // Bean Methods - - public UIStyle getParentStyle() { - return parentStyle; - } - - public void setParentStyle(UIStyle parentStyle) { - UIStyle old = getParentStyle(); - this.parentStyle = parentStyle; - firePropertyChange("parentStyle", old, getParentStyle()); - } - - public List getUiProperties() { - return uiProperties; - } - - public void addUiProperty(UIProperty uiProperty) { - uiProperties.add(uiProperty); - // todo not quite sure what events we want here - fireIndexedPropertyChange("uiProperties", uiProperties.size(), null, uiProperty); -// firePropertyChange("uiProperties", null, uiProperties); - } - - public void removeUiProperty(UIProperty uiProperty) { - int index = uiProperties.indexOf(uiProperty); - if (index != -1) { - uiProperties.remove(uiProperty); - // todo not quite sure what events we want here - fireIndexedPropertyChange("uiProperties", index, null, uiProperty); -// firePropertyChange("uiProperties", null, uiProperties); - } - } - - public Typeface getFont() { - if (isFontInherited()) { - return parentStyle == null ? font : parentStyle.getFont(); - } else { - return font; - } - } - - public void setFont(Typeface font) { - Typeface old = getFont(); - this.font = font; - firePropertyChange("font", old, font); - } - - public boolean isFontInherited() { - return fontInherited; - } - - public void setFontInherited(boolean b) { - boolean old = isFontInherited(); - fontInherited = b; - firePropertyChange("fontInherited", old, b); - - if (!fontInherited && font == null && parentStyle != null && parentStyle.getFont() != null) { - font = parentStyle.getFont().clone(); - firePropertyChange("font", null, font); - } - } - - public Matte getTextForeground() { - if (isTextForegroundInherited()) { - return parentStyle == null ? null : parentStyle.getTextForeground(); - } else { - return textForeground; - } - } - - public boolean isTextForegroundInherited() { - return textForegroundInherited; - } - - public void setTextForegroundInherited(boolean b) { - boolean old = isTextForegroundInherited(); - textForegroundInherited = b; - firePropertyChange("foregroundInherited", old, b); - - if (!textForegroundInherited && textForeground == null && parentStyle != null && - parentStyle.getTextForeground() != null) { - textForeground = parentStyle.getTextForeground().clone(); - firePropertyChange("textForeground", null, textForeground); - } - } - - public void setTextForeground(Matte textForeground) { - Matte old = this.textForeground; - if (old != null) old.removePropertyChangeListener(textForegoundListener); - this.textForeground = textForeground; - if (this.textForeground != null) this.textForeground.addPropertyChangeListener(textForegoundListener); - firePropertyChange("textForeground", old, this.textForeground); - } - - public Matte getTextBackground() { - if (isTextBackgroundInherited()) { - return parentStyle == null ? null : parentStyle.getBackground(); - } else { - return textBackground; - } - } - - public boolean isTextBackgroundInherited() { - return textBackgroundInherited; - } - - public void setTextBackgroundInherited(boolean b) { - boolean old = isBackgroundInherited(); - textBackgroundInherited = b; - firePropertyChange("textBackgroundInherited", old, b); - - if (!textBackgroundInherited && textBackground == null && parentStyle != null && - parentStyle.getTextBackground() != null) { - textBackground = parentStyle.getTextBackground().clone(); - firePropertyChange("textBackground", null, textBackground); - } - } - - public void setTextBackground(Matte textBackground) { - Matte old = this.textBackground; - if (old != null) old.removePropertyChangeListener(textBackgroundListener); - this.textBackground = textBackground; - if (this.textBackground != null) this.textBackground.addPropertyChangeListener(textBackgroundListener); - firePropertyChange("textBackground", old, this.textBackground); - } - - public Matte getBackground() { - if (isBackgroundInherited()) { - return parentStyle == null ? null : parentStyle.getBackground(); - } else { - return background; - } - } - - public boolean isBackgroundInherited() { - return backgroundInherited; - } - - public void setBackgroundInherited(boolean b) { - boolean old = isBackgroundInherited(); - backgroundInherited = b; - firePropertyChange("backgroundInherited", old, b); - - if (!backgroundInherited && background == null && parentStyle != null && parentStyle.getBackground() != null) { - background = parentStyle.getBackground().clone(); - firePropertyChange("background", null, background); - } - } - - public void setBackground(Matte background) { - Matte old = this.background; - if (old != null) old.removePropertyChangeListener(backgroundListener); - this.background = background; - if (this.background != null) this.background.addPropertyChangeListener(backgroundListener); - firePropertyChange("background", old, this.background); - } - - public HintAlphaInterpolation getHintAlphaInterpolation() { - return hintAlphaInterpolation; - } - - public void setHintAlphaInterpolation(HintAlphaInterpolation hintAlphaInterpolation) { - HintAlphaInterpolation old = getHintAlphaInterpolation(); - this.hintAlphaInterpolation = hintAlphaInterpolation; - firePropertyChange("hintAlphaInterpolation", old, getHintAlphaInterpolation()); - } - - public HintAntialiasing getHintAntialiasing() { - return hintAntialiasing; - } - - public void setHintAntialiasing(HintAntialiasing hintAntialiasing) { - HintAntialiasing old = getHintAntialiasing(); - this.hintAntialiasing = hintAntialiasing; - firePropertyChange("hintAntialiasing", old, getHintAntialiasing()); - } - - public HintColorRendering getHintColorRendering() { - return hintColorRendering; - } - - public void setHintColorRendering(HintColorRendering hintColorRendering) { - HintColorRendering old = getHintColorRendering(); - this.hintColorRendering = hintColorRendering; - firePropertyChange("hintColorRendering", old, getHintColorRendering()); - } - - public HintDithering getHintDithering() { - return hintDithering; - } - - public void setHintDithering(HintDithering hintDithering) { - HintDithering old = getHintDithering(); - this.hintDithering = hintDithering; - firePropertyChange("hintDithering", old, getHintDithering()); - } - - public HintFractionalMetrics getHintFractionalMetrics() { - return hintFractionalMetrics; - } - - public void setHintFractionalMetrics(HintFractionalMetrics hintFractionalMetrics) { - HintFractionalMetrics old = getHintFractionalMetrics(); - this.hintFractionalMetrics = hintFractionalMetrics; - firePropertyChange("hintFractionalMetrics", old, getHintFractionalMetrics()); - } - - public HintInterpolation getHintInterpolation() { - return hintInterpolation; - } - - public void setHintInterpolation(HintInterpolation hintInterpolation) { - HintInterpolation old = getHintInterpolation(); - this.hintInterpolation = hintInterpolation; - firePropertyChange("hintInterpolation", old, getHintInterpolation()); - } - - public HintRendering getHintRendering() { - return hintRendering; - } - - public void setHintRendering(HintRendering hintRendering) { - HintRendering old = getHintRendering(); - this.hintRendering = hintRendering; - firePropertyChange("hintRendering", old, getHintRendering()); - } - - public HintStrokeControl getHintStrokeControl() { - return hintStrokeControl; - } - - public void setHintStrokeControl(HintStrokeControl hintStrokeControl) { - HintStrokeControl old = getHintStrokeControl(); - this.hintStrokeControl = hintStrokeControl; - firePropertyChange("hintStrokeControl", old, getHintStrokeControl()); - } - - public HintTextAntialiasing getHintTextAntialiasing() { - return hintTextAntialiasing; - } - - public void setHintTextAntialiasing(HintTextAntialiasing hintTextAntialiasing) { - HintTextAntialiasing old = getHintTextAntialiasing(); - this.hintTextAntialiasing = hintTextAntialiasing; - firePropertyChange("hintTextAntialiasing", old, getHintTextAntialiasing()); - } - - public boolean isCacheSettingsInherited() { - return cacheSettingsInherited; - } - - public void setCacheSettingsInherited(boolean cacheSettingsInherited) { - boolean old = isCacheSettingsInherited(); - this.cacheSettingsInherited = cacheSettingsInherited; - firePropertyChange("cacheSettingsInherited", old, isCacheSettingsInherited()); - } - - public CacheMode getCacheMode() { - if (isCacheSettingsInherited()) { - return (parentStyle == null)?CacheMode.FIXED_SIZES : parentStyle.getCacheMode(); - } else { - return cacheMode; - } - } - - public void setCacheMode(CacheMode cacheMode) { - CacheMode old = this.cacheMode; - this.cacheMode = cacheMode; - if (isCacheSettingsInherited()) { - setCacheSettingsInherited(false); - UIStyle parent = getParentStyle(); - setMaxHozCachedImgScaling(parent == null ? 1 : parent.getMaxHozCachedImgScaling()); - setMaxVertCachedImgScaling(parent == null ? 1 : parent.getMaxVertCachedImgScaling()); - } - firePropertyChange("cacheMode",old,cacheMode); - } - - public double getMaxHozCachedImgScaling() { - if (isCacheSettingsInherited()) { - return parentStyle == null ? 1 : parentStyle.getMaxHozCachedImgScaling(); - } else { - return maxHozCachedImgScaling; - } - } - - public void setMaxHozCachedImgScaling(double maxHozCachedImgScaling) { - double old = getMaxHozCachedImgScaling(); - this.maxHozCachedImgScaling = maxHozCachedImgScaling; - if (isCacheSettingsInherited()) { - setCacheSettingsInherited(false); - setCacheMode((parentStyle == null)?CacheMode.FIXED_SIZES : parentStyle.getCacheMode()); - setMaxVertCachedImgScaling(parentStyle == null ? 1 : parentStyle.getMaxVertCachedImgScaling()); - } - firePropertyChange("maxHozCachedImgScaling", old, getMaxHozCachedImgScaling()); - } - - public double getMaxVertCachedImgScaling() { - if (isCacheSettingsInherited()) { - return parentStyle == null ? 1 : parentStyle.getMaxVertCachedImgScaling(); - } else { - return maxVertCachedImgScaling; - } - } - - public void setMaxVertCachedImgScaling(double maxVertCachedImgScaling) { - double old = getMaxVertCachedImgScaling(); - this.maxVertCachedImgScaling = maxVertCachedImgScaling; - if (isCacheSettingsInherited()) { - setCacheSettingsInherited(false); - setCacheMode((parentStyle == null)?CacheMode.FIXED_SIZES : parentStyle.getCacheMode()); - setMaxHozCachedImgScaling(parentStyle == null ? 1 : parentStyle.getMaxHozCachedImgScaling()); - } - firePropertyChange("maxVertCachedImgScaling", old, getMaxVertCachedImgScaling()); - } -} - diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/BorderMapper.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/BorderMapper.java deleted file mode 100644 index da35f401bc42879c82ed5835e665e297da58ff31..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/BorderMapper.java +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel.jibxhelpers; - -import org.jibx.runtime.IMarshaller; -import org.jibx.runtime.IUnmarshaller; -import org.jibx.runtime.IAliasable; -import org.jibx.runtime.IUnmarshallingContext; -import org.jibx.runtime.JiBXException; -import org.jibx.runtime.IMarshallingContext; -import org.jibx.runtime.impl.MarshallingContext; -import org.jibx.runtime.impl.UnmarshallingContext; -import org.jdesktop.swingx.designer.jibxhelpers.ColorMapper; - -import javax.swing.border.LineBorder; -import javax.swing.border.EmptyBorder; -import javax.swing.border.EtchedBorder; -import javax.swing.border.BevelBorder; -import javax.swing.border.MatteBorder; -import javax.swing.border.CompoundBorder; -import javax.swing.border.Border; -import javax.swing.BorderFactory; -import java.awt.Insets; -import java.awt.Color; -import org.jdesktop.synthdesigner.synthmodel.PainterBorder; - -/** - * BorderMapper - JIBX xml mapper for swing standard borders - * - * @author Jasper Potts - */ -public class BorderMapper implements IMarshaller, IUnmarshaller, IAliasable { - private static enum BorderType { - empty, line, etched, bevel, matte, compound, painter - } - private static enum SubType { - raised(EtchedBorder.RAISED), lowered(EtchedBorder.LOWERED); - private int subtype; - - SubType(int type) { - this.subtype = type; - } - - public int getSubType() { - return subtype; - } - } - private static final String ELEMENT_NAME = "border"; - private static final String TYPE_NAME = "type"; - private static final String SUB_TYPE_NAME = "subtype"; - private static final String TOP_NAME = "top"; - private static final String BOTTOM_NAME = "bottom"; - private static final String LEFT_NAME = "left"; - private static final String RIGHT_NAME = "right"; - private static final String THICKNESS_NAME = "thickness"; - private static final String INSIDE_NAME = "inside"; - private static final String OUTSIDE_NAME = "outside"; - private static final String PAINTER_NAME = "painter"; - - private String uri; - private int index; - private String name; - - public BorderMapper() { - uri = null; - index = 0; - name = ELEMENT_NAME; - } - - public BorderMapper(String uri, int index, String name) { - this.uri = uri; - this.index = index; - this.name = name; - } - - public boolean isExtension(int i) { - return false; - } - - public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws - JiBXException { - return iUnmarshallingContext.isAt(uri, ELEMENT_NAME); - } - - public void marshal(Object object, IMarshallingContext iMarshallingContext) - throws JiBXException { - if (!(iMarshallingContext instanceof MarshallingContext)) { - throw new JiBXException("Invalid object type for marshaller"); - } else { - MarshallingContext ctx = (MarshallingContext) iMarshallingContext; - if (object instanceof PainterBorder) { - PainterBorder border = (PainterBorder) object; - Insets insets = border.getBorderInsets(); - ctx.startTagAttributes(index, name) - .attribute(index, TYPE_NAME, BorderType.painter.toString()) - .attribute(index, PAINTER_NAME, border.getPainterName()) - .attribute(index, TOP_NAME, insets.top) - .attribute(index, BOTTOM_NAME, insets.bottom) - .attribute(index, LEFT_NAME, insets.left) - .attribute(index, RIGHT_NAME, insets.right) - .closeStartContent(); - ctx.endTag(index, name); - } else if (object instanceof EmptyBorder) { - Insets insets = ((EmptyBorder) object).getBorderInsets(); - ctx.startTagAttributes(index, name) - .attribute(index, TYPE_NAME, - BorderType.empty.toString()) - .attribute(index, TOP_NAME, insets.top) - .attribute(index, BOTTOM_NAME, insets.bottom) - .attribute(index, LEFT_NAME, insets.left) - .attribute(index, RIGHT_NAME, insets.right) - .closeStartEmpty(); - } else if (object instanceof LineBorder) { - LineBorder border = (LineBorder) object; - ctx.startTagAttributes(index, name). - attribute(index, TYPE_NAME, BorderType.line.toString()). - attribute(index, THICKNESS_NAME, border.getThickness()). - closeStartContent(); - new ColorMapper().marshal(border.getLineColor(), ctx); - ctx.endTag(index, name); - } else if (object instanceof EtchedBorder) { - EtchedBorder border = (EtchedBorder) object; - ctx.startTagAttributes(index, name). - attribute(index, TYPE_NAME, - BorderType.etched.toString()). - attribute(index, SUB_TYPE_NAME, - border.getEtchType()==EtchedBorder.RAISED? - SubType.raised.toString(): - SubType.lowered.toString()). - closeStartContent(); - new ColorMapper().marshal(border.getHighlightColor(), ctx); - new ColorMapper().marshal(border.getShadowColor(), ctx); - ctx.endTag(index, name); - } else if (object instanceof BevelBorder) { - BevelBorder border = (BevelBorder) object; - ctx.startTagAttributes(index, name). - attribute(index, TYPE_NAME, - BorderType.bevel.toString()). - attribute(index, SUB_TYPE_NAME, - border.getBevelType()==BevelBorder.RAISED? - SubType.raised.toString(): - SubType.lowered.toString()). - closeStartContent(); - new ColorMapper().marshal(border.getHighlightInnerColor(), ctx); - new ColorMapper().marshal(border.getHighlightOuterColor(), ctx); - new ColorMapper().marshal(border.getShadowInnerColor(), ctx); - new ColorMapper().marshal(border.getHighlightOuterColor(), ctx); - ctx.endTag(index, name); - } else if (object instanceof MatteBorder) { - MatteBorder border = (MatteBorder) object; - Insets insets = ((EmptyBorder) object).getBorderInsets(); - ctx.startTagAttributes(index, name) - .attribute(index, TYPE_NAME, - BorderType.matte.toString()) - .attribute(index, TOP_NAME, insets.top) - .attribute(index, BOTTOM_NAME, insets.bottom) - .attribute(index, LEFT_NAME, insets.left) - .attribute(index, RIGHT_NAME, insets.right) - .closeStartContent(); - new ColorMapper().marshal(border.getMatteColor(), ctx); - // todo: we should support tiled icons here to be 100% complete - ctx.endTag(index, name); - } else if (object instanceof CompoundBorder) { - CompoundBorder border = (CompoundBorder) object; - ctx.startTagAttributes(index, name) - .attribute(index, TYPE_NAME, - BorderType.compound.toString()) - .closeStartContent(); - new BorderMapper(null,0, INSIDE_NAME).marshal(border.getInsideBorder(),ctx); - new BorderMapper(null,0, OUTSIDE_NAME).marshal(border.getOutsideBorder(),ctx); - ctx.endTag(index, name); - } else { - throw new JiBXException("Invalid object type for marshaller"); - } - } - } - - public Object unmarshal(Object object, - IUnmarshallingContext iUnmarshallingContext) - throws JiBXException { - Border border = null; - // make sure we're at the appropriate start tag - UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext; - if (!ctx.isAt(uri, name)) { - ctx.throwStartTagNameError(uri, name); - } - // get type - BorderType type = BorderType.valueOf(ctx.attributeText(uri, TYPE_NAME) - .toLowerCase()); - int top,bottom,left,right; - Color color; - switch(type){ - case empty: - top = ctx.attributeInt(uri, TOP_NAME, index); - bottom = ctx.attributeInt(uri, BOTTOM_NAME, index); - left = ctx.attributeInt(uri, LEFT_NAME, index); - right = ctx.attributeInt(uri, RIGHT_NAME, index); - border = BorderFactory.createEmptyBorder(top,left,bottom,right); - break; - case line: - int thickness = ctx.attributeInt(uri, THICKNESS_NAME, index); - ctx.parsePastStartTag(uri,name); - color = (Color)new ColorMapper().unmarshal(null,ctx); - border = BorderFactory.createLineBorder(color,thickness); - break; - case etched: - SubType etchedType = SubType.valueOf( - ctx.attributeText(uri, SUB_TYPE_NAME).toLowerCase()); - ctx.parsePastStartTag(uri,name); - Color highColor = (Color)new ColorMapper() - .unmarshal(null,ctx); - Color shadowColor = (Color)new ColorMapper() - .unmarshal(null,ctx); - border = BorderFactory.createEtchedBorder( - etchedType.getSubType(),highColor,shadowColor); - break; - case bevel: - SubType bevelType = SubType.valueOf( - ctx.attributeText(uri, SUB_TYPE_NAME).toLowerCase()); - ctx.parsePastStartTag(uri,name); - Color innerHighColor = (Color)new ColorMapper() - .unmarshal(null,ctx); - Color outerHighColor = (Color)new ColorMapper() - .unmarshal(null,ctx); - Color innerShadowColor = (Color)new ColorMapper() - .unmarshal(null,ctx); - Color outerShadowColor = (Color)new ColorMapper() - .unmarshal(null,ctx); - border = BorderFactory.createBevelBorder( - bevelType.getSubType(),outerHighColor,innerHighColor, - outerShadowColor,innerShadowColor); - break; - case matte: - top = ctx.attributeInt(uri, TOP_NAME, index); - bottom = ctx.attributeInt(uri, BOTTOM_NAME, index); - left = ctx.attributeInt(uri, LEFT_NAME, index); - right = ctx.attributeInt(uri, RIGHT_NAME, index); - ctx.parsePastStartTag(uri,name); - color = (Color)new ColorMapper().unmarshal(null,ctx); - border = BorderFactory.createMatteBorder(top,left,bottom,right, - color); - break; - case compound: - ctx.parsePastStartTag(uri,name); - Border inside = (Border) new BorderMapper(null,0, INSIDE_NAME) - .unmarshal(null,ctx); - Border outside = (Border) new BorderMapper(null,0, OUTSIDE_NAME) - .unmarshal(null,ctx); - border = BorderFactory.createCompoundBorder(outside, inside); - break; - case painter: - String painterName = ctx.attributeText(uri, PAINTER_NAME); - top = ctx.attributeInt(uri, TOP_NAME, index); - bottom = ctx.attributeInt(uri, BOTTOM_NAME, index); - left = ctx.attributeInt(uri, LEFT_NAME, index); - right = ctx.attributeInt(uri, RIGHT_NAME, index); - border = new PainterBorder(painterName, top, left, bottom, right); - } - ctx.parsePastEndTag(uri, name); - return border; - } -} - diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/ClassConverter.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/ClassConverter.java deleted file mode 100644 index ca59d1aac7f0cedfc280e6daca6a0d8b4c842e03..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/ClassConverter.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel.jibxhelpers; - -/** - * ClassConverter - * - * @author Created by Jasper Potts (Jul 16, 2007) - */ -public class ClassConverter { - - public static String classToString(Class c) { - return c == null ? "" : c.getName(); - } - - public static Class stringToClass(String className) { - if (className == null || className.length() == 0) { - return null; - } - try { - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - if (classLoader == null) classLoader = ClassConverter.class.getClassLoader(); - return classLoader.loadClass(className); - } catch (ClassNotFoundException e) { - System.err.println("Failed to find class with name [" + className + "] in ClassConverter"); - e.printStackTrace(); - return null; - } - } - -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/ClassMapper.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/ClassMapper.java deleted file mode 100644 index 5d3d7650fbc5b2a43feb243946f6fd358b982a4f..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/ClassMapper.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel.jibxhelpers; - -import org.jibx.runtime.IMarshaller; -import org.jibx.runtime.IMarshallingContext; -import org.jibx.runtime.IUnmarshaller; -import org.jibx.runtime.IUnmarshallingContext; -import org.jibx.runtime.JiBXException; -import org.jibx.runtime.impl.MarshallingContext; -import org.jibx.runtime.impl.UnmarshallingContext; - - -public class ClassMapper implements IMarshaller, IUnmarshaller { - private static final String ELEMENT_NAME = "type"; - - public boolean isExtension(int i) { - return false; - } - - public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - return iUnmarshallingContext.isAt(null, ELEMENT_NAME); - } - - public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException { - if (!(object instanceof Class)) { - throw new JiBXException("Invalid object type for marshaller"); - } else if (!(iMarshallingContext instanceof MarshallingContext)) { - throw new JiBXException("Invalid object type for marshaller"); - } else { - MarshallingContext ctx = (MarshallingContext) iMarshallingContext; - Class clazz = (Class) object; - ctx.startTagAttributes(0, ELEMENT_NAME). - attribute(0, "value", clazz.getName()). - closeStartEmpty(); - } - } - - public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - // make sure we're at the appropriate start tag - UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext; - if (!ctx.isAt(null, ELEMENT_NAME)) { - ctx.throwStartTagNameError(null, ELEMENT_NAME); - } - // get values - String value = ctx.attributeText(null, "value", null); - ctx.parsePastEndTag(null, ELEMENT_NAME); - // create - try { - return Class.forName(value); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/FontMapper.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/FontMapper.java deleted file mode 100644 index b815c0c4b97c5425aad8ab5705accf88c00f48f5..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/FontMapper.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel.jibxhelpers; - -import org.jibx.runtime.IMarshaller; -import org.jibx.runtime.IMarshallingContext; -import org.jibx.runtime.IUnmarshaller; -import org.jibx.runtime.IUnmarshallingContext; -import org.jibx.runtime.JiBXException; -import org.jibx.runtime.impl.MarshallingContext; -import org.jibx.runtime.impl.UnmarshallingContext; - -import java.awt.Font; - -/** - * FontMapper - * - * @author Created by Jasper Potts (Jun 8, 2007) - */ -public class FontMapper implements IMarshaller, IUnmarshaller { - private static final String ELEMENT_NAME = "font"; - private static final String FAMILY_NAME = "family"; - private static final String STYLE_NAME = "style"; - private static final String SIZE_NAME = "size"; - - public boolean isExtension(int i) { - return false; - } - - public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - return iUnmarshallingContext.isAt(null, ELEMENT_NAME); - } - - public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException { - if (!(object instanceof Font)) { - throw new JiBXException("Invalid object type for marshaller"); - } else if (!(iMarshallingContext instanceof MarshallingContext)) { - throw new JiBXException("Invalid object type for marshaller"); - } else { - MarshallingContext ctx = (MarshallingContext) iMarshallingContext; - Font font = (Font) object; - ctx.startTagAttributes(0, ELEMENT_NAME). - attribute(0, FAMILY_NAME, font.getFamily()). - attribute(0, STYLE_NAME, font.getStyle()). - attribute(0, SIZE_NAME, font.getSize()). - closeStartEmpty(); - } - } - - public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - // make sure we're at the appropriate start tag - UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext; - if (!ctx.isAt(null, ELEMENT_NAME)) { - ctx.throwStartTagNameError(null, ELEMENT_NAME); - } - // get values - String name = ctx.attributeText(null, FAMILY_NAME, null); - int style = ctx.attributeInt(null, STYLE_NAME, 0); - int size = ctx.attributeInt(null, SIZE_NAME, 0); - ctx.parsePastEndTag(null, ELEMENT_NAME); - // create - return new Font(name, style, size); - } -} diff --git a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/UIPropertyMapper.java b/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/UIPropertyMapper.java deleted file mode 100644 index 002ab6b9defbc5d9186fd21d75a3ea8d24f51651..0000000000000000000000000000000000000000 --- a/make/tools/swing-nimbus/classes/org/jdesktop/synthdesigner/synthmodel/jibxhelpers/UIPropertyMapper.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2005-2006 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 org.jdesktop.synthdesigner.synthmodel.jibxhelpers; - -import org.jdesktop.swingx.designer.jibxhelpers.DimensionMapper; -import org.jdesktop.swingx.designer.jibxhelpers.InsetsMapper; -import org.jdesktop.synthdesigner.synthmodel.UIProperty; -import org.jibx.runtime.IMarshallable; -import org.jibx.runtime.IMarshaller; -import org.jibx.runtime.IMarshallingContext; -import org.jibx.runtime.IUnmarshaller; -import org.jibx.runtime.IUnmarshallingContext; -import org.jibx.runtime.JiBXException; -import org.jibx.runtime.impl.MarshallingContext; -import org.jibx.runtime.impl.UnmarshallingContext; - -/** - * UIPropertyMapper - * - * @author Created by Jasper Potts (Jul 10, 2007) - */ -public class UIPropertyMapper implements IMarshaller, IUnmarshaller { - private static final String ELEMENT_NAME = "uiProperty"; - private static final String NAME_NAME = "name"; - private static final String TYPE_NAME = "type"; - private static final String VALUE_NAME = "value"; - - public boolean isExtension(int i) { - return false; - } - - public boolean isPresent(IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - return iUnmarshallingContext.isAt(null, ELEMENT_NAME); - } - - public void marshal(Object object, IMarshallingContext iMarshallingContext) throws JiBXException { - if (!(object instanceof UIProperty)) { - throw new JiBXException("Invalid object type for marshaller"); - } else if (!(iMarshallingContext instanceof MarshallingContext)) { - throw new JiBXException("Invalid object type for marshaller"); - } else { - MarshallingContext ctx = (MarshallingContext) iMarshallingContext; - UIProperty property = (UIProperty) object; - ctx.startTagAttributes(0, ELEMENT_NAME); - ctx.attribute(0, NAME_NAME, property.getName()); - ctx.attribute(0, TYPE_NAME, property.getType().toString()); - switch (property.getType()) { - case BOOLEAN: - case DOUBLE: - case INT: - case FLOAT: - case STRING: - ctx.attribute(0, VALUE_NAME, property.getValue().toString()); - ctx.closeStartEmpty(); - break; - case INSETS: - ctx.closeStartContent(); - new InsetsMapper().marshal(property.getValue(), ctx); - ctx.endTag(0, ELEMENT_NAME); - break; - case COLOR: - case FONT: - ctx.closeStartContent(); - if (property.getValue() instanceof IMarshallable) { - ((IMarshallable) property.getValue()).marshal(ctx); - } else { - throw new JiBXException("Mapped value is not marshallable"); - } - ctx.endTag(0, ELEMENT_NAME); - break; - case DIMENSION: - ctx.closeStartContent(); - new DimensionMapper().marshal(property.getValue(), ctx); - ctx.endTag(0, ELEMENT_NAME); - break; - case BORDER: - ctx.closeStartContent(); - new BorderMapper().marshal(property.getValue(), ctx); - ctx.endTag(0, ELEMENT_NAME); - break; - } - } - } - - public Object unmarshal(Object object, IUnmarshallingContext iUnmarshallingContext) throws JiBXException { - // make sure we're at the appropriate start tag - UnmarshallingContext ctx = (UnmarshallingContext) iUnmarshallingContext; - if (!ctx.isAt(null, ELEMENT_NAME)) { - ctx.throwStartTagNameError(null, ELEMENT_NAME); - } - // get values - Object value = null; - String name = ctx.attributeText(null, NAME_NAME, null); - UIProperty.PropertyType type = UIProperty.PropertyType.valueOf(ctx.attributeText(null, TYPE_NAME, null)); - switch (type) { - case BOOLEAN: - value = Boolean.parseBoolean(ctx.attributeText(null, VALUE_NAME, null)); - break; - case DOUBLE: - value = Double.parseDouble(ctx.attributeText(null, VALUE_NAME, null)); - break; - case INT: - value = Integer.parseInt(ctx.attributeText(null, VALUE_NAME, null)); - break; - case FLOAT: - value = Float.parseFloat(ctx.attributeText(null, VALUE_NAME, null)); - break; - case STRING: - value = ctx.attributeText(null, VALUE_NAME, null); - break; - case INSETS: - ctx.parsePastStartTag(null, ELEMENT_NAME); - value = new InsetsMapper().unmarshal(value, ctx); - break; - case COLOR: - case FONT: - ctx.parsePastStartTag(null, ELEMENT_NAME); - value = ctx.unmarshalElement(); - break; - case DIMENSION: - ctx.parsePastStartTag(null, ELEMENT_NAME); - value = new DimensionMapper().unmarshal(value, ctx); - break; - case BORDER: - ctx.parsePastStartTag(null, ELEMENT_NAME); - value = new BorderMapper().unmarshal(value, ctx); - break; - } - ctx.parsePastEndTag(null, ELEMENT_NAME); - // create - return new UIProperty(name, type, value); - } -} diff --git a/src/share/bin/java.h b/src/share/bin/java.h index fe039cdcc88452d2562c88e475e3478309432f79..cebdb5fc81afad84d0c6415886636434d03ab0f6 100644 --- a/src/share/bin/java.h +++ b/src/share/bin/java.h @@ -187,9 +187,6 @@ void InitLauncher(jboolean javaw); * */ typedef jclass (JNICALL FindClassFromBootLoader_t(JNIEnv *env, - const char *name, - jboolean init, - jobject loader, - jboolean throwError)); + const char *name)); jclass FindBootStrapClass(JNIEnv *env, const char *classname); #endif /* _JAVA_H_ */ diff --git a/src/share/bin/parse_manifest.c b/src/share/bin/parse_manifest.c index 6dcca091a4bb3c6be3324cda7217ad54f00342fc..a59540213c2dc4ce20585b000b725cbe5cff25c7 100644 --- a/src/share/bin/parse_manifest.c +++ b/src/share/bin/parse_manifest.c @@ -59,7 +59,7 @@ inflate_file(int fd, zentry *entry, int *size_out) char *out; z_stream zs; - if (entry->csize == 0xffffffff || entry->isize == 0xffffffff) + if (entry->csize == (size_t) -1 || entry->isize == (size_t) -1 ) return (NULL); if (lseek(fd, entry->offset, SEEK_SET) < (off_t)0) return (NULL); diff --git a/src/share/classes/com/sun/beans/finder/BeanInfoFinder.java b/src/share/classes/com/sun/beans/finder/BeanInfoFinder.java index faab85cafa99eb84bd8e1f56ae5bd365775f8755..5dda4dfa1a3d982af6e56c5f3c440558c16b8855 100644 --- a/src/share/classes/com/sun/beans/finder/BeanInfoFinder.java +++ b/src/share/classes/com/sun/beans/finder/BeanInfoFinder.java @@ -52,8 +52,14 @@ public final class BeanInfoFinder } @Override - protected BeanInfo instantiate(Class> type, String name) { - BeanInfo info = super.instantiate(type, name); + protected BeanInfo instantiate(Class> type, String prefix, String name) { + // this optimization will only use the BeanInfo search path + // if is has changed from the original + // or trying to get the ComponentBeanInfo + BeanInfo info = !DEFAULT.equals(prefix) || "ComponentBeanInfo".equals(name) + ? super.instantiate(type, prefix, name) + : null; + if (info != null) { // make sure that the returned BeanInfo matches the class BeanDescriptor bd = info.getBeanDescriptor(); @@ -89,14 +95,4 @@ public final class BeanInfoFinder } return null; } - - @Override - protected BeanInfo instantiate(Class> type, String prefix, String name) { - // this optimization will only use the BeanInfo search path - // if is has changed from the original - // or trying to get the ComponentBeanInfo - return !DEFAULT.equals(prefix) || "ComponentBeanInfo".equals(name) - ? super.instantiate(type, prefix, name) - : null; - } } diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java b/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java index 11807239c34286d895921a308feb5d6430b30062..cfcf6194ec35cecfb4ee00c344cb982b9830f382 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2001-2009 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 @@ -49,7 +49,7 @@ public class DesktopProperty implements UIDefaults.ActiveValue { /** * ReferenceQueue of unreferenced WeakPCLs. */ - private static ReferenceQueue queue; + private static final ReferenceQueue queue = new ReferenceQueue (); /** * PropertyChangeListener attached to the Toolkit. @@ -58,7 +58,7 @@ public class DesktopProperty implements UIDefaults.ActiveValue { /** * Key used to lookup value from desktop. */ - private String key; + private final String key; /** * Value to return. */ @@ -66,17 +66,8 @@ public class DesktopProperty implements UIDefaults.ActiveValue { /** * Fallback value in case we get null from desktop. */ - private Object fallback; + private final Object fallback; - /** - * Toolkit. - */ - private Toolkit toolkit; - - - static { - queue = new ReferenceQueue (); - } /** * Cleans up any lingering state held by unrefeernced @@ -138,13 +129,10 @@ public class DesktopProperty implements UIDefaults.ActiveValue { * * @param key Key used in looking up desktop value. * @param fallback Value used if desktop property is null. - * @param toolkit Toolkit used to fetch property from, can be null - * in which default will be used. */ - public DesktopProperty(String key, Object fallback, Toolkit toolkit) { + public DesktopProperty(String key, Object fallback) { this.key = key; this.fallback = fallback; - this.toolkit = toolkit; // The only sure fire way to clear our references is to create a // Thread and wait for a reference to be added to the queue. // Because it is so rare that you will actually change the look @@ -175,13 +163,14 @@ public class DesktopProperty implements UIDefaults.ActiveValue { * Returns the value from the desktop. */ protected Object getValueFromDesktop() { - if (this.toolkit == null) { - this.toolkit = Toolkit.getDefaultToolkit(); + Toolkit toolkit = Toolkit.getDefaultToolkit(); + + if (pcl == null) { + pcl = new WeakPCL(this, getKey(), UIManager.getLookAndFeel()); + toolkit.addPropertyChangeListener(getKey(), pcl); } - Object value = toolkit.getDesktopProperty(getKey()); - pcl = new WeakPCL(this, toolkit, getKey(), UIManager.getLookAndFeel()); - toolkit.addPropertyChangeListener(getKey(), pcl); - return value; + + return toolkit.getDesktopProperty(getKey()); } /** @@ -205,12 +194,7 @@ public class DesktopProperty implements UIDefaults.ActiveValue { * createValuewill ask for the property again. */ public void invalidate() { - if (pcl != null) { - toolkit.removePropertyChangeListener(getKey(), pcl); - toolkit = null; - pcl = null; - value = null; - } + value = null; } /** @@ -271,13 +255,11 @@ public class DesktopProperty implements UIDefaults.ActiveValue { */ private static class WeakPCL extends WeakReferenceimplements PropertyChangeListener { - private Toolkit kit; private String key; private LookAndFeel laf; - WeakPCL(DesktopProperty target, Toolkit kit, String key, LookAndFeel laf) { + WeakPCL(DesktopProperty target, String key, LookAndFeel laf) { super(target, queue); - this.kit = kit; this.key = key; this.laf = laf; } @@ -297,7 +279,7 @@ public class DesktopProperty implements UIDefaults.ActiveValue { } void dispose() { - kit.removePropertyChangeListener(key, this); + Toolkit.getDefaultToolkit().removePropertyChangeListener(key, this); } } } diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java index 79d06782e8b4b3cdabae0464904dedb89915b982..f1657cc27c173c3f4ca1a2552a1f7d8d8cf729b1 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2009 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 @@ -43,7 +43,6 @@ import java.security.AccessController; import java.security.PrivilegedAction; import sun.awt.shell.ShellFolder; -import sun.awt.OSInfo; import sun.swing.*; import javax.accessibility.*; @@ -58,8 +57,6 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { // The following are private because the implementation of the // Windows FileChooser L&F is not complete yet. - private static final OSInfo.WindowsVersion OS_VERSION = OSInfo.getWindowsVersion(); - private JPanel centerPanel; private JLabel lookInLabel; @@ -118,18 +115,9 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { private String upFolderToolTipText = null; private String upFolderAccessibleName = null; - private String homeFolderToolTipText = null; - private String homeFolderAccessibleName = null; - private String newFolderToolTipText = null; private String newFolderAccessibleName = null; - private String listViewButtonToolTipText = null; - private String listViewButtonAccessibleName = null; - - private String detailsViewButtonToolTipText = null; - private String detailsViewButtonAccessibleName = null; - private String viewMenuButtonToolTipText = null; private String viewMenuButtonAccessibleName = null; @@ -231,9 +219,7 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { // Directory manipulation buttons JToolBar topPanel = new JToolBar(); topPanel.setFloatable(false); - if (OS_VERSION.compareTo(OSInfo.WINDOWS_ME) >= 0) { - topPanel.putClientProperty("JToolBar.isRollover", Boolean.TRUE); - } + topPanel.putClientProperty("JToolBar.isRollover", Boolean.TRUE); // Add the top panel to the fileChooser fc.add(topPanel, BorderLayout.NORTH); @@ -287,218 +273,103 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { topPanel.add(Box.createRigidArea(hstrut10)); // Up Button - JButton upFolderButton = new JButton(getChangeToParentDirectoryAction()); - upFolderButton.setText(null); - upFolderButton.setIcon(upFolderIcon); - upFolderButton.setToolTipText(upFolderToolTipText); - upFolderButton.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, - upFolderAccessibleName); - upFolderButton.putClientProperty(WindowsLookAndFeel.HI_RES_DISABLED_ICON_CLIENT_KEY, - Boolean.TRUE); - upFolderButton.setAlignmentX(JComponent.LEFT_ALIGNMENT); - upFolderButton.setAlignmentY(JComponent.CENTER_ALIGNMENT); - upFolderButton.setMargin(shrinkwrap); - upFolderButton.setFocusPainted(false); + JButton upFolderButton = createToolButton(getChangeToParentDirectoryAction(), upFolderIcon, + upFolderToolTipText, upFolderAccessibleName); topPanel.add(upFolderButton); - if (OS_VERSION.compareTo(OSInfo.WINDOWS_ME) < 0) { - topPanel.add(Box.createRigidArea(hstrut10)); - } - - JButton b; - - if (OS_VERSION == OSInfo.WINDOWS_98) { - // Desktop Button - File homeDir = fsv.getHomeDirectory(); - String toolTipText = homeFolderToolTipText; - if (fsv.isRoot(homeDir)) { - toolTipText = getFileView(fc).getName(homeDir); // Probably "Desktop". - } - b = new JButton(getFileView(fc).getIcon(homeDir)); - b.setToolTipText(toolTipText); - b.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, - toolTipText); - b.setAlignmentX(JComponent.LEFT_ALIGNMENT); - b.setAlignmentY(JComponent.CENTER_ALIGNMENT); - b.setMargin(shrinkwrap); - b.setFocusPainted(false); - b.addActionListener(getGoHomeAction()); - topPanel.add(b); - topPanel.add(Box.createRigidArea(hstrut10)); - } // New Directory Button if (!UIManager.getBoolean("FileChooser.readOnly")) { - b = new JButton(filePane.getNewFolderAction()); - b.setText(null); - b.setIcon(newFolderIcon); - b.setToolTipText(newFolderToolTipText); - b.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, - newFolderAccessibleName); - b.putClientProperty(WindowsLookAndFeel.HI_RES_DISABLED_ICON_CLIENT_KEY, - Boolean.TRUE); - b.setAlignmentX(JComponent.LEFT_ALIGNMENT); - b.setAlignmentY(JComponent.CENTER_ALIGNMENT); - b.setMargin(shrinkwrap); - b.setFocusPainted(false); - topPanel.add(b); + JButton newFolderButton = createToolButton(filePane.getNewFolderAction(), newFolderIcon, + newFolderToolTipText, newFolderAccessibleName); + topPanel.add(newFolderButton); } - if (OS_VERSION.compareTo(OSInfo.WINDOWS_ME) < 0) { - topPanel.add(Box.createRigidArea(hstrut10)); - - // View button group - ButtonGroup viewButtonGroup = new ButtonGroup(); - - // List Button - final JToggleButton listViewButton = new JToggleButton(listViewIcon); - listViewButton.setToolTipText(listViewButtonToolTipText); - listViewButton.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, - listViewButtonAccessibleName); - listViewButton.putClientProperty(WindowsLookAndFeel.HI_RES_DISABLED_ICON_CLIENT_KEY, - Boolean.TRUE); - listViewButton.setFocusPainted(false); - listViewButton.setSelected(true); - listViewButton.setAlignmentX(JComponent.LEFT_ALIGNMENT); - listViewButton.setAlignmentY(JComponent.CENTER_ALIGNMENT); - listViewButton.setMargin(shrinkwrap); - listViewButton.addActionListener(filePane.getViewTypeAction(FilePane.VIEWTYPE_LIST)); - topPanel.add(listViewButton); - viewButtonGroup.add(listViewButton); - - // Details Button - final JToggleButton detailsViewButton = new JToggleButton(detailsViewIcon); - detailsViewButton.setToolTipText(detailsViewButtonToolTipText); - detailsViewButton.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, - detailsViewButtonAccessibleName); - detailsViewButton.putClientProperty(WindowsLookAndFeel.HI_RES_DISABLED_ICON_CLIENT_KEY, - Boolean.TRUE); - detailsViewButton.setFocusPainted(false); - detailsViewButton.setAlignmentX(JComponent.LEFT_ALIGNMENT); - detailsViewButton.setAlignmentY(JComponent.CENTER_ALIGNMENT); - detailsViewButton.setMargin(shrinkwrap); - detailsViewButton.addActionListener(filePane.getViewTypeAction(FilePane.VIEWTYPE_DETAILS)); - topPanel.add(detailsViewButton); - viewButtonGroup.add(detailsViewButton); - - topPanel.add(Box.createRigidArea(new Dimension(60, 0))); - - filePane.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent e) { - if ("viewType".equals(e.getPropertyName())) { - int viewType = filePane.getViewType(); - - switch (viewType) { - case FilePane.VIEWTYPE_LIST: - listViewButton.setSelected(true); - break; - - case FilePane.VIEWTYPE_DETAILS: - detailsViewButton.setSelected(true); - break; - } - } + + // View button group + ButtonGroup viewButtonGroup = new ButtonGroup(); + + // Popup Menu + final JPopupMenu viewTypePopupMenu = new JPopupMenu(); + + final JRadioButtonMenuItem listViewMenuItem = new JRadioButtonMenuItem( + filePane.getViewTypeAction(FilePane.VIEWTYPE_LIST)); + listViewMenuItem.setSelected(filePane.getViewType() == FilePane.VIEWTYPE_LIST); + viewTypePopupMenu.add(listViewMenuItem); + viewButtonGroup.add(listViewMenuItem); + + final JRadioButtonMenuItem detailsViewMenuItem = new JRadioButtonMenuItem( + filePane.getViewTypeAction(FilePane.VIEWTYPE_DETAILS)); + detailsViewMenuItem.setSelected(filePane.getViewType() == FilePane.VIEWTYPE_DETAILS); + viewTypePopupMenu.add(detailsViewMenuItem); + viewButtonGroup.add(detailsViewMenuItem); + + // Create icon for viewMenuButton + BufferedImage image = new BufferedImage(viewMenuIcon.getIconWidth() + 7, viewMenuIcon.getIconHeight(), + BufferedImage.TYPE_INT_ARGB); + Graphics graphics = image.getGraphics(); + viewMenuIcon.paintIcon(filePane, graphics, 0, 0); + int x = image.getWidth() - 5; + int y = image.getHeight() / 2 - 1; + graphics.setColor(Color.BLACK); + graphics.fillPolygon(new int[]{x, x + 5, x + 2}, new int[]{y, y, y + 3}, 3); + + // Details Button + final JButton viewMenuButton = createToolButton(null, new ImageIcon(image), viewMenuButtonToolTipText, + viewMenuButtonAccessibleName); + + viewMenuButton.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + if (SwingUtilities.isLeftMouseButton(e) && !viewMenuButton.isSelected()) { + viewMenuButton.setSelected(true); + + viewTypePopupMenu.show(viewMenuButton, 0, viewMenuButton.getHeight()); } - }); - } else { // After Windows Me - // View button group - ButtonGroup viewButtonGroup = new ButtonGroup(); - - // Popup Menu - final JPopupMenu viewTypePopupMenu = new JPopupMenu(); - - final JRadioButtonMenuItem listViewMenuItem = new JRadioButtonMenuItem( - filePane.getViewTypeAction(FilePane.VIEWTYPE_LIST)); - listViewMenuItem.setSelected(filePane.getViewType() == FilePane.VIEWTYPE_LIST); - viewTypePopupMenu.add(listViewMenuItem); - viewButtonGroup.add(listViewMenuItem); - - final JRadioButtonMenuItem detailsViewMenuItem = new JRadioButtonMenuItem( - filePane.getViewTypeAction(FilePane.VIEWTYPE_DETAILS)); - detailsViewMenuItem.setSelected(filePane.getViewType() == FilePane.VIEWTYPE_DETAILS); - viewTypePopupMenu.add(detailsViewMenuItem); - viewButtonGroup.add(detailsViewMenuItem); - - // Create icon for viewMenuButton - BufferedImage image = new BufferedImage(viewMenuIcon.getIconWidth() + 7, viewMenuIcon.getIconHeight(), - BufferedImage.TYPE_INT_ARGB); - Graphics graphics = image.getGraphics(); - viewMenuIcon.paintIcon(filePane, graphics, 0, 0); - int x = image.getWidth() - 5; - int y = image.getHeight() / 2 - 1; - graphics.setColor(Color.BLACK); - graphics.fillPolygon(new int[]{x, x + 5, x + 2}, new int[]{y, y, y + 3}, 3); - - // Details Button - final JButton viewMenuButton = new JButton(new ImageIcon(image)); - viewMenuButton.setToolTipText(viewMenuButtonToolTipText); - viewMenuButton.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, viewMenuButtonAccessibleName); - viewMenuButton.putClientProperty(WindowsLookAndFeel.HI_RES_DISABLED_ICON_CLIENT_KEY, Boolean.TRUE); - viewMenuButton.setFocusable(false); - viewMenuButton.setAlignmentX(JComponent.LEFT_ALIGNMENT); - viewMenuButton.setAlignmentY(JComponent.CENTER_ALIGNMENT); - viewMenuButton.setMargin(shrinkwrap); - viewMenuButton.setModel(new DefaultButtonModel() { - public void setPressed(boolean b) { + } + }); + viewMenuButton.addKeyListener(new KeyAdapter() { + public void keyPressed(KeyEvent e) { + // Forbid keyboard actions if the button is not in rollover state + if (e.getKeyCode() == KeyEvent.VK_SPACE && viewMenuButton.getModel().isRollover()) { + viewMenuButton.setSelected(true); + + viewTypePopupMenu.show(viewMenuButton, 0, viewMenuButton.getHeight()); } + } + }); + viewTypePopupMenu.addPopupMenuListener(new PopupMenuListener() { + public void popupMenuWillBecomeVisible(PopupMenuEvent e) { + } - public void setArmed(boolean b) { - } + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + viewMenuButton.setSelected(false); + } + }); + } - public void setSelected(boolean b) { - super.setSelected(b); + public void popupMenuCanceled(PopupMenuEvent e) { + } + }); - if (b) { - stateMask |= PRESSED | ARMED; - } else { - stateMask &= ~(PRESSED | ARMED); - } - } - }); - viewMenuButton.addMouseListener(new MouseAdapter() { - public void mousePressed(MouseEvent e) { - if (SwingUtilities.isLeftMouseButton(e)) { - viewMenuButton.setSelected(!viewMenuButton.isSelected()); - - if (viewMenuButton.isSelected()) { - viewTypePopupMenu.show(viewMenuButton, 0, viewMenuButton.getHeight()); - } - } - } - }); - viewTypePopupMenu.addPopupMenuListener(new PopupMenuListener() { - public void popupMenuWillBecomeVisible(PopupMenuEvent e) { - } + topPanel.add(viewMenuButton); - public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - viewMenuButton.setSelected(false); - } - }); - } + topPanel.add(Box.createRigidArea(new Dimension(80, 0))); - public void popupMenuCanceled(PopupMenuEvent e) { - } - }); - topPanel.add(viewMenuButton); - - topPanel.add(Box.createRigidArea(new Dimension(80, 0))); - - filePane.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent e) { - if ("viewType".equals(e.getPropertyName())) { - switch (filePane.getViewType()) { - case FilePane.VIEWTYPE_LIST: - listViewMenuItem.setSelected(true); - break; - - case FilePane.VIEWTYPE_DETAILS: - detailsViewMenuItem.setSelected(true); - break; - } + filePane.addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent e) { + if ("viewType".equals(e.getPropertyName())) { + switch (filePane.getViewType()) { + case FilePane.VIEWTYPE_LIST: + listViewMenuItem.setSelected(true); + break; + + case FilePane.VIEWTYPE_DETAILS: + detailsViewMenuItem.setSelected(true); + break; } } - }); - } + } + }); // ************************************** // // ******* Add the directory pane ******* // @@ -622,19 +493,18 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { // Decide whether to use the ShellFolder class to populate shortcut // panel and combobox. JFileChooser fc = getFileChooser(); - if (OS_VERSION.compareTo(OSInfo.WINDOWS_ME) >= 0) { - if (FilePane.usesShellFolder(fc)) { - if (placesBar == null && !UIManager.getBoolean("FileChooser.noPlacesBar")) { - placesBar = new WindowsPlacesBar(fc, XPStyle.getXP() != null); - fc.add(placesBar, BorderLayout.BEFORE_LINE_BEGINS); - fc.addPropertyChangeListener(placesBar); - } - } else { - if (placesBar != null) { - fc.remove(placesBar); - fc.removePropertyChangeListener(placesBar); - placesBar = null; - } + + if (FilePane.usesShellFolder(fc)) { + if (placesBar == null && !UIManager.getBoolean("FileChooser.noPlacesBar")) { + placesBar = new WindowsPlacesBar(fc, XPStyle.getXP() != null); + fc.add(placesBar, BorderLayout.BEFORE_LINE_BEGINS); + fc.addPropertyChangeListener(placesBar); + } + } else { + if (placesBar != null) { + fc.remove(placesBar); + fc.removePropertyChangeListener(placesBar); + placesBar = null; } } } @@ -673,18 +543,9 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { upFolderToolTipText = UIManager.getString("FileChooser.upFolderToolTipText",l); upFolderAccessibleName = UIManager.getString("FileChooser.upFolderAccessibleName",l); - homeFolderToolTipText = UIManager.getString("FileChooser.homeFolderToolTipText",l); - homeFolderAccessibleName = UIManager.getString("FileChooser.homeFolderAccessibleName",l); - newFolderToolTipText = UIManager.getString("FileChooser.newFolderToolTipText",l); newFolderAccessibleName = UIManager.getString("FileChooser.newFolderAccessibleName",l); - listViewButtonToolTipText = UIManager.getString("FileChooser.listViewButtonToolTipText",l); - listViewButtonAccessibleName = UIManager.getString("FileChooser.listViewButtonAccessibleName",l); - - detailsViewButtonToolTipText = UIManager.getString("FileChooser.detailsViewButtonToolTipText",l); - detailsViewButtonAccessibleName = UIManager.getString("FileChooser.detailsViewButtonAccessibleName",l); - viewMenuButtonToolTipText = UIManager.getString("FileChooser.viewMenuButtonToolTipText",l); viewMenuButtonAccessibleName = UIManager.getString("FileChooser.viewMenuButtonAccessibleName",l); } @@ -1052,6 +913,65 @@ public class WindowsFileChooserUI extends BasicFileChooserUI { return new DirectoryComboBoxRenderer(); } + private static JButton createToolButton(Action a, Icon defaultIcon, String toolTipText, String accessibleName) { + final JButton result = new JButton(a); + + result.setText(null); + result.setIcon(defaultIcon); + result.setToolTipText(toolTipText); + result.setRequestFocusEnabled(false); + result.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, accessibleName); + result.putClientProperty(WindowsLookAndFeel.HI_RES_DISABLED_ICON_CLIENT_KEY, Boolean.TRUE); + result.setAlignmentX(JComponent.LEFT_ALIGNMENT); + result.setAlignmentY(JComponent.CENTER_ALIGNMENT); + result.setMargin(shrinkwrap); + result.setFocusPainted(false); + + result.setModel(new DefaultButtonModel() { + public void setPressed(boolean b) { + // Forbid keyboard actions if the button is not in rollover state + if (!b || isRollover()) { + super.setPressed(b); + } + } + + public void setRollover(boolean b) { + if (b && !isRollover()) { + // Reset other buttons + for (Component component : result.getParent().getComponents()) { + if (component instanceof JButton && component != result) { + ((JButton) component).getModel().setRollover(false); + } + } + } + + super.setRollover(b); + } + + public void setSelected(boolean b) { + super.setSelected(b); + + if (b) { + stateMask |= PRESSED | ARMED; + } else { + stateMask &= ~(PRESSED | ARMED); + } + } + }); + + result.addFocusListener(new FocusAdapter() { + public void focusGained(FocusEvent e) { + result.getModel().setRollover(true); + } + + public void focusLost(FocusEvent e) { + result.getModel().setRollover(false); + } + }); + + return result; + } + // // Renderer for DirectoryComboBox // diff --git a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java index e24067efad15f4c3492d5fe5d654ed24bbd46fad..c388f80e6a45cf522ee92db4f7831e9f98f4c4f1 100644 --- a/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java +++ b/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java @@ -1,5 +1,5 @@ /* - * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 1997-2009 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 @@ -104,7 +104,6 @@ public class WindowsLookAndFeel extends BasicLookAndFeel new StringUIClientPropertyKey( "WindowsLookAndFeel.generateHiResDisabledIcon"); - private Toolkit toolkit; private boolean updatePending = false; private boolean useSystemFontSettings = true; @@ -149,7 +148,6 @@ public class WindowsLookAndFeel extends BasicLookAndFeel public void initialize() { super.initialize(); - toolkit = Toolkit.getDefaultToolkit(); // Set the flag which determines which version of Windows should // be rendered. This flag only need to be set once. @@ -470,80 +468,61 @@ public class WindowsLookAndFeel extends BasicLookAndFeel Object ControlBackgroundColor = new DesktopProperty( "win.3d.backgroundColor", - table.get("control"), - toolkit); + table.get("control")); Object ControlLightColor = new DesktopProperty( "win.3d.lightColor", - table.get("controlHighlight"), - toolkit); + table.get("controlHighlight")); Object ControlHighlightColor = new DesktopProperty( "win.3d.highlightColor", - table.get("controlLtHighlight"), - toolkit); + table.get("controlLtHighlight")); Object ControlShadowColor = new DesktopProperty( "win.3d.shadowColor", - table.get("controlShadow"), - toolkit); + table.get("controlShadow")); Object ControlDarkShadowColor = new DesktopProperty( "win.3d.darkShadowColor", - table.get("controlDkShadow"), - toolkit); + table.get("controlDkShadow")); Object ControlTextColor = new DesktopProperty( "win.button.textColor", - table.get("controlText"), - toolkit); + table.get("controlText")); Object MenuBackgroundColor = new DesktopProperty( "win.menu.backgroundColor", - table.get("menu"), - toolkit); + table.get("menu")); Object MenuBarBackgroundColor = new DesktopProperty( "win.menubar.backgroundColor", - table.get("menu"), - toolkit); + table.get("menu")); Object MenuTextColor = new DesktopProperty( "win.menu.textColor", - table.get("menuText"), - toolkit); + table.get("menuText")); Object SelectionBackgroundColor = new DesktopProperty( "win.item.highlightColor", - table.get("textHighlight"), - toolkit); + table.get("textHighlight")); Object SelectionTextColor = new DesktopProperty( "win.item.highlightTextColor", - table.get("textHighlightText"), - toolkit); + table.get("textHighlightText")); Object WindowBackgroundColor = new DesktopProperty( "win.frame.backgroundColor", - table.get("window"), - toolkit); + table.get("window")); Object WindowTextColor = new DesktopProperty( "win.frame.textColor", - table.get("windowText"), - toolkit); + table.get("windowText")); Object WindowBorderWidth = new DesktopProperty( "win.frame.sizingBorderWidth", - Integer.valueOf(1), - toolkit); + Integer.valueOf(1)); Object TitlePaneHeight = new DesktopProperty( "win.frame.captionHeight", - Integer.valueOf(18), - toolkit); + Integer.valueOf(18)); Object TitleButtonWidth = new DesktopProperty( "win.frame.captionButtonWidth", - Integer.valueOf(16), - toolkit); + Integer.valueOf(16)); Object TitleButtonHeight = new DesktopProperty( "win.frame.captionButtonHeight", - Integer.valueOf(16), - toolkit); + Integer.valueOf(16)); Object InactiveTextColor = new DesktopProperty( "win.text.grayedTextColor", - table.get("textInactiveText"), - toolkit); + table.get("textInactiveText")); Object ScrollbarBackgroundColor = new DesktopProperty( "win.scrollbar.backgroundColor", - table.get("scrollbar"), - toolkit); + table.get("scrollbar")); Object TextBackground = new XPColorValue(Part.EP_EDIT, null, Prop.FILLCOLOR, WindowBackgroundColor); @@ -566,32 +545,22 @@ public class WindowsLookAndFeel extends BasicLookAndFeel Object ToolTipFont = sansSerifPlain12; Object IconFont = ControlFont; - Object scrollBarWidth = new DesktopProperty("win.scrollbar.width", - Integer.valueOf(16), toolkit); + Object scrollBarWidth = new DesktopProperty("win.scrollbar.width", Integer.valueOf(16)); - Object menuBarHeight = new DesktopProperty("win.menu.height", - null, toolkit); + Object menuBarHeight = new DesktopProperty("win.menu.height", null); - Object hotTrackingOn = new DesktopProperty("win.item.hotTrackingOn", - true, toolkit); + Object hotTrackingOn = new DesktopProperty("win.item.hotTrackingOn", true); - Object showMnemonics = new DesktopProperty("win.menu.keyboardCuesOn", - Boolean.TRUE, toolkit); + Object showMnemonics = new DesktopProperty("win.menu.keyboardCuesOn", Boolean.TRUE); if (useSystemFontSettings) { - MenuFont = getDesktopFontValue("win.menu.font", MenuFont, toolkit); - FixedControlFont = getDesktopFontValue("win.ansiFixed.font", - FixedControlFont, toolkit); - ControlFont = getDesktopFontValue("win.defaultGUI.font", - ControlFont, toolkit); - MessageFont = getDesktopFontValue("win.messagebox.font", - MessageFont, toolkit); - WindowFont = getDesktopFontValue("win.frame.captionFont", - WindowFont, toolkit); - IconFont = getDesktopFontValue("win.icon.font", - IconFont, toolkit); - ToolTipFont = getDesktopFontValue("win.tooltip.font", ToolTipFont, - toolkit); + MenuFont = getDesktopFontValue("win.menu.font", MenuFont); + FixedControlFont = getDesktopFontValue("win.ansiFixed.font", FixedControlFont); + ControlFont = getDesktopFontValue("win.defaultGUI.font", ControlFont); + MessageFont = getDesktopFontValue("win.messagebox.font", MessageFont); + WindowFont = getDesktopFontValue("win.frame.captionFont", WindowFont); + IconFont = getDesktopFontValue("win.icon.font", IconFont); + ToolTipFont = getDesktopFontValue("win.tooltip.font", ToolTipFont); /* Put the desktop AA settings in the defaults. * JComponent.setUI() retrieves this and makes it available @@ -605,26 +574,14 @@ public class WindowsLookAndFeel extends BasicLookAndFeel new FontDesktopProperty(SunToolkit.DESKTOPFONTHINTS); } if (useSystemFontSizeSettings) { - MenuFont = new WindowsFontSizeProperty("win.menu.font.height", - toolkit, Font.DIALOG, Font.PLAIN, 12); - FixedControlFont = new WindowsFontSizeProperty( - "win.ansiFixed.font.height", toolkit, Font.MONOSPACED, + MenuFont = new WindowsFontSizeProperty("win.menu.font.height", Font.DIALOG, Font.PLAIN, 12); + FixedControlFont = new WindowsFontSizeProperty("win.ansiFixed.font.height", Font.MONOSPACED, Font.PLAIN, 12); - ControlFont = new WindowsFontSizeProperty( - "win.defaultGUI.font.height", toolkit, Font.DIALOG, - Font.PLAIN, 12); - MessageFont = new WindowsFontSizeProperty( - "win.messagebox.font.height", - toolkit, Font.DIALOG, Font.PLAIN, 12); - WindowFont = new WindowsFontSizeProperty( - "win.frame.captionFont.height", toolkit, - Font.DIALOG, Font.BOLD, 12); - ToolTipFont = new WindowsFontSizeProperty( - "win.tooltip.font.height", toolkit, Font.SANS_SERIF, - Font.PLAIN, 12); - IconFont = new WindowsFontSizeProperty( - "win.icon.font.height", toolkit, Font.DIALOG, - Font.PLAIN, 12); + ControlFont = new WindowsFontSizeProperty("win.defaultGUI.font.height", Font.DIALOG, Font.PLAIN, 12); + MessageFont = new WindowsFontSizeProperty("win.messagebox.font.height", Font.DIALOG, Font.PLAIN, 12); + WindowFont = new WindowsFontSizeProperty("win.frame.captionFont.height", Font.DIALOG, Font.BOLD, 12); + ToolTipFont = new WindowsFontSizeProperty("win.tooltip.font.height", Font.SANS_SERIF, Font.PLAIN, 12); + IconFont = new WindowsFontSizeProperty("win.icon.font.height", Font.DIALOG, Font.PLAIN, 12); } @@ -752,8 +709,7 @@ public class WindowsLookAndFeel extends BasicLookAndFeel // DeskTop. "Desktop.background", new DesktopProperty( "win.desktop.backgroundColor", - table.get("desktop"), - toolkit), + table.get("desktop")), "Desktop.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] { "ctrl F5", "restore", @@ -819,7 +775,7 @@ public class WindowsLookAndFeel extends BasicLookAndFeel "FileChooser.filesOfTypeLabelMnemonic", Integer.valueOf(KeyEvent.VK_T), "FileChooser.usesSingleFilePane", Boolean.TRUE, "FileChooser.noPlacesBar", new DesktopProperty("win.comdlg.noPlacesBar", - Boolean.FALSE, toolkit), + Boolean.FALSE), "FileChooser.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] { "ESCAPE", "cancelSelection", @@ -861,36 +817,28 @@ public class WindowsLookAndFeel extends BasicLookAndFeel "InternalFrame.resizeIconShadow", ControlShadowColor, "InternalFrame.activeBorderColor", new DesktopProperty( "win.frame.activeBorderColor", - table.get("windowBorder"), - toolkit), + table.get("windowBorder")), "InternalFrame.inactiveBorderColor", new DesktopProperty( "win.frame.inactiveBorderColor", - table.get("windowBorder"), - toolkit), + table.get("windowBorder")), "InternalFrame.activeTitleBackground", new DesktopProperty( "win.frame.activeCaptionColor", - table.get("activeCaption"), - toolkit), + table.get("activeCaption")), "InternalFrame.activeTitleGradient", new DesktopProperty( "win.frame.activeCaptionGradientColor", - table.get("activeCaption"), - toolkit), + table.get("activeCaption")), "InternalFrame.activeTitleForeground", new DesktopProperty( "win.frame.captionTextColor", - table.get("activeCaptionText"), - toolkit), + table.get("activeCaptionText")), "InternalFrame.inactiveTitleBackground", new DesktopProperty( "win.frame.inactiveCaptionColor", - table.get("inactiveCaption"), - toolkit), + table.get("inactiveCaption")), "InternalFrame.inactiveTitleGradient", new DesktopProperty( "win.frame.inactiveCaptionGradientColor", - table.get("inactiveCaption"), - toolkit), + table.get("inactiveCaption")), "InternalFrame.inactiveTitleForeground", new DesktopProperty( "win.frame.inactiveCaptionTextColor", - table.get("inactiveCaptionText"), - toolkit), + table.get("inactiveCaptionText")), "InternalFrame.maximizeIcon", WindowsIconFactory.createFrameMaximizeIcon(), @@ -1529,12 +1477,8 @@ public class WindowsLookAndFeel extends BasicLookAndFeel // *** ToolTip "ToolTip.font", ToolTipFont, - "ToolTip.background", new DesktopProperty( - "win.tooltip.backgroundColor", - table.get("info"), toolkit), - "ToolTip.foreground", new DesktopProperty( - "win.tooltip.textColor", - table.get("infoText"), toolkit), + "ToolTip.background", new DesktopProperty("win.tooltip.backgroundColor", table.get("info")), + "ToolTip.foreground", new DesktopProperty("win.tooltip.textColor", table.get("infoText")), // *** ToolTipManager "ToolTipManager.enableToolTipMode", "activeApplication", @@ -1798,10 +1742,9 @@ public class WindowsLookAndFeel extends BasicLookAndFeel * represented in the current encoding this will return null and * turn off the use of system fonts. */ - private Object getDesktopFontValue(String fontName, Object backup, - Toolkit kit) { + private Object getDesktopFontValue(String fontName, Object backup) { if (useSystemFontSettings) { - return new WindowsFontProperty(fontName, backup, kit); + return new WindowsFontProperty(fontName, backup); } return null; } @@ -1989,7 +1932,6 @@ public class WindowsLookAndFeel extends BasicLookAndFeel public void uninitialize() { super.uninitialize(); - toolkit = null; if (WindowsPopupMenuUI.mnemonicListener != null) { MenuSelectionManager.defaultManager(). @@ -2309,8 +2251,8 @@ public class WindowsLookAndFeel extends BasicLookAndFeel * is returned, it is mapped to 'Microsoft Sans Serif'. */ private static class WindowsFontProperty extends DesktopProperty { - WindowsFontProperty(String key, Object backup, Toolkit kit) { - super(key, backup, kit); + WindowsFontProperty(String key, Object backup) { + super(key, backup); } public void invalidate(LookAndFeel laf) { @@ -2372,9 +2314,9 @@ public class WindowsLookAndFeel extends BasicLookAndFeel private int fontSize; private int fontStyle; - WindowsFontSizeProperty(String key, Toolkit toolkit, String fontName, + WindowsFontSizeProperty(String key, String fontName, int fontStyle, int fontSize) { - super(key, null, toolkit); + super(key, null); this.fontName = fontName; this.fontSize = fontSize; this.fontStyle = fontStyle; @@ -2508,7 +2450,7 @@ public class WindowsLookAndFeel extends BasicLookAndFeel private class TriggerDesktopProperty extends DesktopProperty { TriggerDesktopProperty(String key) { - super(key, null, toolkit); + super(key, null); // This call adds a property change listener for the property, // which triggers a call to updateUI(). The value returned // is not interesting here. diff --git a/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/DelegateHttpsURLConnection.java b/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/DelegateHttpsURLConnection.java index 7192405745f5261cd7dd4dc80dbccbaa73227e78..e0512a33b875585fa751173dff388e795469bc92 100644 --- a/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/DelegateHttpsURLConnection.java +++ b/src/share/classes/com/sun/net/ssl/internal/www/protocol/https/DelegateHttpsURLConnection.java @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. + * Copyright 2001-2009 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 @@ -116,7 +116,10 @@ class VerifierWrapper implements javax.net.ssl.HostnameVerifier { try { String serverName; Principal principal = getPeerPrincipal(session); - if (principal instanceof KerberosPrincipal) { + // X.500 principal or Kerberos principal. + // (Use ciphersuite check to determine whether Kerberos is present.) + if (session.getCipherSuite().startsWith("TLS_KRB5") && + principal instanceof KerberosPrincipal) { serverName = HostnameChecker.getServerName((KerberosPrincipal)principal); } else { diff --git a/src/share/classes/com/sun/rowset/JdbcRowSetResourceBundle.java b/src/share/classes/com/sun/rowset/JdbcRowSetResourceBundle.java index 002d20785ff45dcc52fff642db6f4e5406d6f0da..1ebeb565ddbc651bb48351df81ec105bd060c799 100644 --- a/src/share/classes/com/sun/rowset/JdbcRowSetResourceBundle.java +++ b/src/share/classes/com/sun/rowset/JdbcRowSetResourceBundle.java @@ -133,7 +133,7 @@ public class JdbcRowSetResourceBundle implements Serializable { * This method returns an enumerated handle of the keys * which correspond to values translated to various locales. * - * @returns an enumerated keys which have messages tranlated to + * @return an enumeration of keys which have messages tranlated to * corresponding locales. */ public Enumeration getKeys() { @@ -146,7 +146,7 @@ public class JdbcRowSetResourceBundle implements Serializable { * returns the corresponding value reading it * from the Resource Bundle loaded earlier. * - * @returns value in locale specific language + * @return value in locale specific language * according to the key passed. */ public Object handleGetObject(String key) { diff --git a/src/share/classes/com/sun/rowset/JoinRowSetImpl.java b/src/share/classes/com/sun/rowset/JoinRowSetImpl.java index 7908848b2974be904947a15f01fc3c05ccc29f7d..d301c605cdb829526a5c902d1e12c374467a5530 100644 --- a/src/share/classes/com/sun/rowset/JoinRowSetImpl.java +++ b/src/share/classes/com/sun/rowset/JoinRowSetImpl.java @@ -3737,7 +3737,6 @@ public class JoinRowSetImpl extends WebRowSetImpl implements JoinRowSet { * Returns a result set containing the original value of the current * row only. * - * @return the original result set of the row * @throws SQLException if there is no current row * @see #setOriginalRow */ diff --git a/src/share/classes/com/sun/rowset/internal/WebRowSetXmlReader.java b/src/share/classes/com/sun/rowset/internal/WebRowSetXmlReader.java index 8db17537187b108c21780b6d9db789a500f6ed51..f25cec7e62e0fae47927ac9c3686e17745b885d7 100644 --- a/src/share/classes/com/sun/rowset/internal/WebRowSetXmlReader.java +++ b/src/share/classes/com/sun/rowset/internal/WebRowSetXmlReader.java @@ -46,6 +46,17 @@ import javax.sql.rowset.spi.*; */ public class WebRowSetXmlReader implements XmlReader, Serializable { + + private JdbcRowSetResourceBundle resBundle; + + public WebRowSetXmlReader(){ + try { + resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle(); + } catch(IOException ioe) { + throw new RuntimeException(ioe); + } + } + /** * Parses the given WebRowSetobject, getting its input from * the givenjava.io.Readerobject. The parser will send @@ -69,17 +80,6 @@ public class WebRowSetXmlReader implements XmlReader, Serializable { * reader for the given rowset * @see XmlReaderContentHandler */ - - private JdbcRowSetResourceBundle resBundle; - - public WebRowSetXmlReader(){ - try { - resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle(); - } catch(IOException ioe) { - throw new RuntimeException(ioe); - } - } - public void readXML(WebRowSet caller, java.io.Reader reader) throws SQLException { try { // Crimson Parser(as in J2SE 1.4.1 is NOT able to handle diff --git a/src/share/classes/java/awt/Component.java b/src/share/classes/java/awt/Component.java index 3ecf30c51d5f01d504fe0cdfefc45bc5a2f5717a..7c73f27ee6108286b89c45a447d59bb1b1727bed 100644 --- a/src/share/classes/java/awt/Component.java +++ b/src/share/classes/java/awt/Component.java @@ -6665,6 +6665,9 @@ public abstract class Component implements ImageObserver, MenuContainer, Container parent = this.parent; if (parent != null && parent.peer instanceof LightweightPeer) { relocateComponent(); + if (!isRecursivelyVisible()) { + peer.setVisible(false); + } } } invalidate(); @@ -9572,6 +9575,13 @@ public abstract class Component implements ImageObserver, MenuContainer, return comp.getPeer(); } } + // traversing the hierarchy up to the closest HW container; + // further traversing may return a component that is not actually + // a native sibling of this component and this kind of z-order + // request may not be allowed by the underlying system (6852051). + if (!cont.isLightweight()) { + break; + } indexAbove = cont.getSiblingIndexAbove(); cont = cont.getContainer(); diff --git a/src/share/classes/java/awt/Dialog.java b/src/share/classes/java/awt/Dialog.java index 4660e6ea07c5b60f6bdbe86a6816ee2729b2ecc5..b897183ca8b4cfaee2b4a13e86cd0f78032b0a14 100644 --- a/src/share/classes/java/awt/Dialog.java +++ b/src/share/classes/java/awt/Dialog.java @@ -856,7 +856,7 @@ public class Dialog extends Window { if (type == ModalityType.TOOLKIT_MODAL) { SecurityManager sm = System.getSecurityManager(); if (sm != null) { - sm.checkPermission(SecurityConstants.TOOLKIT_MODALITY_PERMISSION); + sm.checkPermission(SecurityConstants.AWT.TOOLKIT_MODALITY_PERMISSION); } } modalityType = type; diff --git a/src/share/classes/java/awt/MouseInfo.java b/src/share/classes/java/awt/MouseInfo.java index dce20bc0b84bce09108f7aee96f9a79ab0376b07..8905ecaee9cf959d2b992b2a6d60981b296342e2 100644 --- a/src/share/classes/java/awt/MouseInfo.java +++ b/src/share/classes/java/awt/MouseInfo.java @@ -76,7 +76,7 @@ public class MouseInfo { SecurityManager security = System.getSecurityManager(); if (security != null) { - security.checkPermission(SecurityConstants.WATCH_MOUSE_PERMISSION); + security.checkPermission(SecurityConstants.AWT.WATCH_MOUSE_PERMISSION); } Point point = new Point(0, 0); diff --git a/src/share/classes/java/awt/Robot.java b/src/share/classes/java/awt/Robot.java index c9a32e2d01d542239076df0a2ad0fec063149ccb..d262910a22040fbd00b226fa7a29b831cb5104ca 100644 --- a/src/share/classes/java/awt/Robot.java +++ b/src/share/classes/java/awt/Robot.java @@ -167,7 +167,7 @@ public class Robot { private void checkRobotAllowed() { SecurityManager security = System.getSecurityManager(); if (security != null) { - security.checkPermission(SecurityConstants.CREATE_ROBOT_PERMISSION); + security.checkPermission(SecurityConstants.AWT.CREATE_ROBOT_PERMISSION); } } @@ -466,7 +466,7 @@ public class Robot { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkPermission( - SecurityConstants.READ_DISPLAY_PIXELS_PERMISSION); + SecurityConstants.AWT.READ_DISPLAY_PIXELS_PERMISSION); } } diff --git a/src/share/classes/java/awt/SystemTray.java b/src/share/classes/java/awt/SystemTray.java index 2aa172108b1c71c5940d9369ffa396afe5c2bd1e..91cffdce9f23e3ad85670d0e36ea90bd6ff3d14a 100644 --- a/src/share/classes/java/awt/SystemTray.java +++ b/src/share/classes/java/awt/SystemTray.java @@ -490,7 +490,7 @@ public class SystemTray { static void checkSystemTrayAllowed() { SecurityManager security = System.getSecurityManager(); if (security != null) { - security.checkPermission(SecurityConstants.ACCESS_SYSTEM_TRAY_PERMISSION); + security.checkPermission(SecurityConstants.AWT.ACCESS_SYSTEM_TRAY_PERMISSION); } } diff --git a/src/share/classes/java/awt/Toolkit.java b/src/share/classes/java/awt/Toolkit.java index aaa6afdd5a08993f1956ad5425c4651ea49340ef..129b1f0102da64b902cb04dc3c6309f58e8b5213 100644 --- a/src/share/classes/java/awt/Toolkit.java +++ b/src/share/classes/java/awt/Toolkit.java @@ -2025,7 +2025,7 @@ public abstract class Toolkit { } SecurityManager security = System.getSecurityManager(); if (security != null) { - security.checkPermission(SecurityConstants.ALL_AWT_EVENTS_PERMISSION); + security.checkPermission(SecurityConstants.AWT.ALL_AWT_EVENTS_PERMISSION); } synchronized (this) { SelectiveAWTEventListener selectiveListener = @@ -2094,7 +2094,7 @@ public abstract class Toolkit { } SecurityManager security = System.getSecurityManager(); if (security != null) { - security.checkPermission(SecurityConstants.ALL_AWT_EVENTS_PERMISSION); + security.checkPermission(SecurityConstants.AWT.ALL_AWT_EVENTS_PERMISSION); } synchronized (this) { @@ -2165,7 +2165,7 @@ public abstract class Toolkit { public AWTEventListener[] getAWTEventListeners() { SecurityManager security = System.getSecurityManager(); if (security != null) { - security.checkPermission(SecurityConstants.ALL_AWT_EVENTS_PERMISSION); + security.checkPermission(SecurityConstants.AWT.ALL_AWT_EVENTS_PERMISSION); } synchronized (this) { EventListener[] la = ToolkitEventMulticaster.getListeners(eventListener,AWTEventListener.class); @@ -2217,7 +2217,7 @@ public abstract class Toolkit { public AWTEventListener[] getAWTEventListeners(long eventMask) { SecurityManager security = System.getSecurityManager(); if (security != null) { - security.checkPermission(SecurityConstants.ALL_AWT_EVENTS_PERMISSION); + security.checkPermission(SecurityConstants.AWT.ALL_AWT_EVENTS_PERMISSION); } synchronized (this) { EventListener[] la = ToolkitEventMulticaster.getListeners(eventListener,AWTEventListener.class); diff --git a/src/share/classes/java/awt/Window.java b/src/share/classes/java/awt/Window.java index a342f37879f06ba3196c7bcc003df82227101c2b..c526107f4e80e1388bb3f7ddbf8ab4809d57a606 100644 --- a/src/share/classes/java/awt/Window.java +++ b/src/share/classes/java/awt/Window.java @@ -1581,7 +1581,7 @@ public class Window extends Container implements Accessible { if (exclusionType == Dialog.ModalExclusionType.TOOLKIT_EXCLUDE) { SecurityManager sm = System.getSecurityManager(); if (sm != null) { - sm.checkPermission(SecurityConstants.TOOLKIT_MODALITY_PERMISSION); + sm.checkPermission(SecurityConstants.AWT.TOOLKIT_MODALITY_PERMISSION); } } modalExclusionType = exclusionType; @@ -2129,7 +2129,7 @@ public class Window extends Container implements Accessible { public final void setAlwaysOnTop(boolean alwaysOnTop) throws SecurityException { SecurityManager security = System.getSecurityManager(); if (security != null) { - security.checkPermission(SecurityConstants.SET_WINDOW_ALWAYS_ON_TOP_PERMISSION); + security.checkPermission(SecurityConstants.AWT.SET_WINDOW_ALWAYS_ON_TOP_PERMISSION); } boolean oldAlwaysOnTop; diff --git a/src/share/classes/java/awt/color/ICC_Profile.java b/src/share/classes/java/awt/color/ICC_Profile.java index 84b8a8c63d3150e373bed1bb606ac693bc99d533..488e6f4d29925e7cb737ac3489ad792c472c5597 100644 --- a/src/share/classes/java/awt/color/ICC_Profile.java +++ b/src/share/classes/java/awt/color/ICC_Profile.java @@ -58,6 +58,8 @@ import java.util.StringTokenizer; import java.security.AccessController; import java.security.PrivilegedAction; +import sun.misc.BootClassLoaderHook; + /** * A representation of color profile data for device independent and * device dependent color spaces based on the International Color @@ -1830,8 +1832,19 @@ public class ICC_Profile implements Serializable { dir = st.nextToken(); fullPath = dir + File.separatorChar + fileName; f = new File(fullPath); - if (!isChildOf(f, dir)) { - f = null; + } + } + + if (!f.isFile()) { /* try the directory of built-in profiles */ + dir = System.getProperty("java.home") + + File.separatorChar + "lib" + File.separatorChar + "cmm"; + fullPath = dir + File.separatorChar + fileName; + f = new File(fullPath); + if (!f.isFile()) { + //make sure file was installed in the kernel mode + BootClassLoaderHook hook = BootClassLoaderHook.getHook(); + if (hook.getHook() != null) { + hook.prefetchFile("lib/cmm/"+fileName); } } } diff --git a/src/share/classes/java/lang/Boolean.java b/src/share/classes/java/lang/Boolean.java index b614dafdaae0bac7e9ec5bc86c88bd8f9f096e1d..8a3d6ab996ed3f07eeeec42a5ecc69829e32482f 100644 --- a/src/share/classes/java/lang/Boolean.java +++ b/src/share/classes/java/lang/Boolean.java @@ -255,7 +255,25 @@ public final class Boolean implements java.io.Serializable, * @since 1.5 */ public int compareTo(Boolean b) { - return (b.value == value ? 0 : (value ? 1 : -1)); + return compare(this.value, b.value); + } + + /** + * Compares two {@code boolean} values. + * The value returned is identical to what would be returned by: + *+ * Boolean.valueOf(x).compareTo(Boolean.valueOf(y)) + *+ * + * @param x the first {@code boolean} to compare + * @param y the second {@code boolean} to compare + * @return the value {@code 0} if {@code x == y}; + * a value less than {@code 0} if {@code !x && y}; and + * a value greater than {@code 0} if {@code x && !y} + * @since 1.7 + */ + public static int compare(boolean x, boolean y) { + return (x == y) ? 0 : (x ? 1 : -1); } private static boolean toBoolean(String name) { diff --git a/src/share/classes/java/lang/Byte.java b/src/share/classes/java/lang/Byte.java index 459c2237a18ca7aea65a86421d93207a8e265b3e..4725f3278b79750c31cc8b8f83bf95c8119a51ee 100644 --- a/src/share/classes/java/lang/Byte.java +++ b/src/share/classes/java/lang/Byte.java @@ -378,7 +378,10 @@ public final class Byte extends Number implements Comparable{ } /** - * Returns a hash code for this {@code Byte}. + * Returns a hash code for this {@code Byte}; equal to the result + * of invoking {@code intValue()}. + * + * @return a hash code value for this {@code Byte} */ public int hashCode() { return (int)value; @@ -415,7 +418,25 @@ public final class Byte extends Number implements Comparable { * @since 1.2 */ public int compareTo(Byte anotherByte) { - return this.value - anotherByte.value; + return compare(this.value, anotherByte.value); + } + + /** + * Compares two {@code byte} values numerically. + * The value returned is identical to what would be returned by: + * + * Byte.valueOf(x).compareTo(Byte.valueOf(y)) + *+ * + * @param x the first {@code byte} to compare + * @param y the second {@code byte} to compare + * @return the value {@code 0} if {@code x == y}; + * a value less than {@code 0} if {@code x < y}; and + * a value greater than {@code 0} if {@code x > y} + * @since 1.7 + */ + public static int compare(byte x, byte y) { + return x - y; } /** diff --git a/src/share/classes/java/lang/Character.java b/src/share/classes/java/lang/Character.java index bc4284c20df9695b0a43d8f808b3b60b31a5c593..8f106a473ddce87dc0e620b8e52fc3d687a71f7d 100644 --- a/src/share/classes/java/lang/Character.java +++ b/src/share/classes/java/lang/Character.java @@ -2612,8 +2612,10 @@ class Character extends Object implements java.io.Serializable, ComparableCharacter. - * @return a hash code value for this object. + * Returns a hash code for this {@code Character}; equal to the result + * of invoking {@code charValue()}. + * + * @return a hash code value for this {@code Character} */ public int hashCode() { return (int)value; @@ -4962,7 +4964,25 @@ class Character extends Object implements java.io.Serializable, Comparable + * Character.valueOf(x).compareTo(Character.valueOf(y)) + * { * @since 1.2 */ public int compareTo(Integer anotherInteger) { - int thisVal = this.value; - int anotherVal = anotherInteger.value; - return (thisVal + * Integer.valueOf(x).compareTo(Integer.valueOf(y)) + * { * @since 1.2 */ public int compareTo(Long anotherLong) { - long thisVal = this.value; - long anotherVal = anotherLong.value; - return (thisVal + * Long.valueOf(x).compareTo(Long.valueOf(y)) + * { } /** - * Returns a hash code for this {@code Short}. + * Returns a hash code for this {@code Short}; equal to the result + * of invoking {@code intValue()}. + * + * @return a hash code value for this {@code Short} */ public int hashCode() { return (int)value; @@ -420,7 +423,25 @@ public final class Short extends Number implements Comparable { * @since 1.2 */ public int compareTo(Short anotherShort) { - return this.value - anotherShort.value; + return compare(this.value, anotherShort.value); + } + + /** + * Compares two {@code short} values numerically. + * The value returned is identical to what would be returned by: + * + * Short.valueOf(x).compareTo(Short.valueOf(y)) + *+ * + * @param x the first {@code short} to compare + * @param y the second {@code short} to compare + * @return the value {@code 0} if {@code x == y}; + * a value less than {@code 0} if {@code x < y}; and + * a value greater than {@code 0} if {@code x > y} + * @since 1.7 + */ + public static int compare(short x, short y) { + return x - y; } /** diff --git a/src/share/classes/java/lang/reflect/Constructor.java b/src/share/classes/java/lang/reflect/Constructor.java index bdd158a3eb8b167b2b068afc8ac68fe44b7c3377..ae812ad72f512f566ee4ec6a0f30535562c9e13b 100644 --- a/src/share/classes/java/lang/reflect/Constructor.java +++ b/src/share/classes/java/lang/reflect/Constructor.java @@ -275,10 +275,6 @@ public final * Returns an array of length 0 if the underlying method declares * no exceptions in its {@code throws} clause. * - *If an exception type is a parameterized type, the {@code Type} - * object returned for it must accurately reflect the actual type - * parameters used in the source code. - * *
If an exception type is a type variable or a parameterized * type, it is created. Otherwise, it is resolved. * diff --git a/src/share/classes/java/lang/reflect/Method.java b/src/share/classes/java/lang/reflect/Method.java index 1c660f2dca8bc695fc29eb211faff2f8d5b51388..fc9e467ae48b3ee053046b8669b685075b789a47 100644 --- a/src/share/classes/java/lang/reflect/Method.java +++ b/src/share/classes/java/lang/reflect/Method.java @@ -317,10 +317,6 @@ public final * Returns an array of length 0 if the underlying method declares * no exceptions in its {@code throws} clause. * - *
If an exception type is a parameterized type, the {@code Type} - * object returned for it must accurately reflect the actual type - * parameters used in the source code. - * *
If an exception type is a type variable or a parameterized * type, it is created. Otherwise, it is resolved. * diff --git a/src/share/classes/java/net/CookieManager.java b/src/share/classes/java/net/CookieManager.java index 32790a8f185197b377903cb1c24bc837eb448a88..95de8c0db3bb9a40be2e0354f03c64da27a5a1bc 100644 --- a/src/share/classes/java/net/CookieManager.java +++ b/src/share/classes/java/net/CookieManager.java @@ -157,7 +157,7 @@ public class CookieManager extends CookieHandler // if not specify CookieStore to use, use default one if (store == null) { - cookieJar = new sun.net.www.protocol.http.InMemoryCookieStore(); + cookieJar = new InMemoryCookieStore(); } else { cookieJar = store; } diff --git a/src/share/classes/sun/net/www/protocol/http/InMemoryCookieStore.java b/src/share/classes/java/net/InMemoryCookieStore.java similarity index 99% rename from src/share/classes/sun/net/www/protocol/http/InMemoryCookieStore.java rename to src/share/classes/java/net/InMemoryCookieStore.java index 2e7b54f70c00577e24960d21531bb4a64db1a635..697ca88d7107d1f47efaa0ab51faa18afbbc1487 100644 --- a/src/share/classes/sun/net/www/protocol/http/InMemoryCookieStore.java +++ b/src/share/classes/java/net/InMemoryCookieStore.java @@ -23,7 +23,7 @@ * have any questions. */ -package sun.net.www.protocol.http; +package java.net; import java.net.URI; import java.net.CookieStore; @@ -43,7 +43,7 @@ import java.util.concurrent.locks.ReentrantLock; * @author Edward Wang * @since 1.6 */ -public class InMemoryCookieStore implements CookieStore { +class InMemoryCookieStore implements CookieStore { // the in-memory representation of cookies private List
cookieJar = null; diff --git a/src/share/classes/java/net/URLClassLoader.java b/src/share/classes/java/net/URLClassLoader.java index 22be20b7ecd5fc43cfcc377d0060dc2a13edf661..c4f775db71a18703a81e4f0d6ec482a727bd95e2 100644 --- a/src/share/classes/java/net/URLClassLoader.java +++ b/src/share/classes/java/net/URLClassLoader.java @@ -340,6 +340,7 @@ public class URLClassLoader extends SecureClassLoader implements Closeable { * used. */ private Class defineClass(String name, Resource res) throws IOException { + long t0 = System.nanoTime(); int i = name.lastIndexOf('.'); URL url = res.getCodeSourceURL(); if (i != -1) { @@ -370,12 +371,14 @@ public class URLClassLoader extends SecureClassLoader implements Closeable { // Use (direct) ByteBuffer: CodeSigner[] signers = res.getCodeSigners(); CodeSource cs = new CodeSource(url, signers); + sun.misc.PerfCounter.getReadClassBytesTime().addElapsedTimeFrom(t0); return defineClass(name, bb, cs); } else { byte[] b = res.getBytes(); // must read certificates AFTER reading bytes. CodeSigner[] signers = res.getCodeSigners(); CodeSource cs = new CodeSource(url, signers); + sun.misc.PerfCounter.getReadClassBytesTime().addElapsedTimeFrom(t0); return defineClass(name, b, 0, b.length, cs); } } diff --git a/src/share/classes/java/net/doc-files/net-properties.html b/src/share/classes/java/net/doc-files/net-properties.html index e6b6330ba42aa3e00ae63ca478b1ca523fc809e6..384abd8d93fce0b9a3f1f53f33574c78d0c6706d 100644 --- a/src/share/classes/java/net/doc-files/net-properties.html +++ b/src/share/classes/java/net/doc-files/net-properties.html @@ -71,12 +71,12 @@ of proxies. HTTP
The following proxy settings are used by the HTTP protocol handler.
-
+http.proxyHost (default: <none>)
+http.proxyHost (default: <none>)
The hostname, or address, of the proxy serverhttp.proxyPort (default: 80)
-
The port number of the proxy server.http.nonProxyHosts (default: <none>)
+http.nonProxyHosts (default: localhost|127.*|[::1])
will indicate that every hosts in the foo.com domain and the localhost should be accessed directly even if a proxy server is specified. -
Indicates the hosts that should be accessed without going through the proxy. Typically this defines internal hosts. The value of this property is a list of hosts, @@ -86,7 +86,8 @@ of proxies.The default value excludes all common variations of the loopback address.
+HTTPS
This is HTTP over SSL, a secure version of HTTP mainly used when confidentiality (like on payment sites) is needed.The following proxy settings are used by the HTTPS protocol handler.
@@ -107,7 +108,7 @@ of proxies.ftp.proxyPort (default: 80)
-
The port number of the proxy server.ftp.nonProxyHosts (default: <none>)
+ftp.nonProxyHosts (default: localhost|127.*|[::1])
will indicate that every hosts in the foo.com domain and the localhost should be accessed directly even if a proxy server is specified. +
Indicates the hosts that should be accessed without going through the proxy. Typically this defines internal hosts. The value of this property is a list of hosts, separated by @@ -117,6 +118,7 @@ of proxies.The default value excludes all common variations of the loopback address.
SOCKS
This is another type of proxy. It allows for lower level type of tunneling since it works at the TCP level. In effect, diff --git a/src/share/classes/java/nio/file/FileTreeWalker.java b/src/share/classes/java/nio/file/FileTreeWalker.java index 71cb86eb88a883606900dbb906b9f62086626694..1452bd66b2aa96dc2ad4ba190d947849493e17cf 100644 --- a/src/share/classes/java/nio/file/FileTreeWalker.java +++ b/src/share/classes/java/nio/file/FileTreeWalker.java @@ -41,8 +41,12 @@ class FileTreeWalker { private final boolean detectCycles; private final LinkOption[] linkOptions; private final FileVisitor super Path> visitor; + private final int maxDepth; - FileTreeWalker(Setoptions, FileVisitor super Path> visitor) { + FileTreeWalker(Set options, + FileVisitor super Path> visitor, + int maxDepth) + { boolean fl = false; boolean dc = false; for (FileVisitOption option: options) { @@ -58,18 +62,15 @@ class FileTreeWalker { this.linkOptions = (fl) ? new LinkOption[0] : new LinkOption[] { LinkOption.NOFOLLOW_LINKS }; this.visitor = visitor; + this.maxDepth = maxDepth; } /** * Walk file tree starting at the given file */ - void walk(Path start, int maxDepth) { - // don't use attributes of starting file as they may be stale - if (start instanceof BasicFileAttributesHolder) { - ((BasicFileAttributesHolder)start).invalidate(); - } + void walk(Path start) { FileVisitResult result = walk(start, - maxDepth, + 0, new ArrayList ()); if (result == null) { throw new NullPointerException("Visitor returned 'null'"); @@ -89,12 +90,15 @@ class FileTreeWalker { List ancestors) { // depth check - if (depth-- < 0) + if (depth > maxDepth) return FileVisitResult.CONTINUE; // if attributes are cached then use them if possible BasicFileAttributes attrs = null; - if (file instanceof BasicFileAttributesHolder) { + if ((depth > 0) && + (file instanceof BasicFileAttributesHolder) && + (System.getSecurityManager() == null)) + { BasicFileAttributes cached = ((BasicFileAttributesHolder)file).get(); if (!followLinks || !cached.isSymbolicLink()) attrs = cached; @@ -120,6 +124,10 @@ class FileTreeWalker { } } } catch (SecurityException x) { + // If access to starting file is denied then SecurityException + // is thrown, otherwise the file is ignored. + if (depth == 0) + throw x; return FileVisitResult.CONTINUE; } } @@ -196,7 +204,7 @@ class FileTreeWalker { try { for (Path entry: stream) { inAction = true; - result = walk(entry, depth, ancestors); + result = walk(entry, depth+1, ancestors); inAction = false; // returning null will cause NPE to be thrown diff --git a/src/share/classes/java/nio/file/Files.java b/src/share/classes/java/nio/file/Files.java index 00e1014526c617b4335d2514ccd1d3fb8af35915..ca5bc5698e1db19ea601a3cd6bc6f4ca48c4bdfa 100644 --- a/src/share/classes/java/nio/file/Files.java +++ b/src/share/classes/java/nio/file/Files.java @@ -133,10 +133,11 @@ public final class Files { * This method walks a file tree rooted at a given starting file. The * file tree traversal is depth-first with the given {@link * FileVisitor} invoked for each file encountered. File tree traversal - * completes when all accessible files in the tree have been visited, a - * visitor returns a result of {@link FileVisitResult#TERMINATE TERMINATE}, - * or the visitor terminates due to an uncaught {@code Error} or {@code - * RuntimeException}. + * completes when all accessible files in the tree have been visited, or a + * visit method returns a result of {@link FileVisitResult#TERMINATE + * TERMINATE}. Where a visit method terminates due an uncaught error or + * runtime exception then the traversal is terminated and the error or + * exception is propagated to the caller of this method. * *
For each file encountered this method attempts to gets its {@link * java.nio.file.attribute.BasicFileAttributes}. If the file is not a @@ -222,7 +223,7 @@ public final class Files { { if (maxDepth < 0) throw new IllegalArgumentException("'maxDepth' is negative"); - new FileTreeWalker(options, visitor).walk(start, maxDepth); + new FileTreeWalker(options, visitor, maxDepth).walk(start); } /** diff --git a/src/share/classes/java/nio/file/SimpleFileVisitor.java b/src/share/classes/java/nio/file/SimpleFileVisitor.java index 761773513ede4781cf42f56bb77384543c48383b..f252ef03eea8e7a8d777381bf251be0dbc11f043 100644 --- a/src/share/classes/java/nio/file/SimpleFileVisitor.java +++ b/src/share/classes/java/nio/file/SimpleFileVisitor.java @@ -124,8 +124,8 @@ public class SimpleFileVisitor
implements FileVisitor { * cause. * * @throws IOError - * if iteration of the directory completed prematurely due to an - * I/O error + * with the I/O exception thrown when iteration of the directory + * completed prematurely due to an I/O error */ @Override public FileVisitResult postVisitDirectory(T dir, IOException exc) { diff --git a/src/share/classes/java/util/Currency.java b/src/share/classes/java/util/Currency.java index 5c9124a90c87797e052fe9beb7cf75d64d9c4f2c..714bd3b2363b4eedc156f8c8b445127a511cdc64 100644 --- a/src/share/classes/java/util/Currency.java +++ b/src/share/classes/java/util/Currency.java @@ -35,12 +35,12 @@ import java.io.Serializable; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.logging.Level; -import java.util.logging.Logger; import java.util.regex.Pattern; import java.util.regex.Matcher; import java.util.spi.CurrencyNameProvider; import java.util.spi.LocaleServiceProvider; import sun.util.LocaleServiceProviderPool; +import sun.util.logging.PlatformLogger; import sun.util.resources.LocaleData; import sun.util.resources.OpenListResourceBundle; @@ -244,7 +244,7 @@ public final class Currency implements Serializable { } } } catch (IOException e) { - log(Level.INFO, "currency.properties is ignored because of an IOException", e); + info("currency.properties is ignored because of an IOException", e); } return null; } @@ -686,7 +686,7 @@ public final class Currency implements Serializable { .append("The entry in currency.properties for ") .append(ctry).append(" is ignored because of the invalid country code.") .toString(); - log(Level.INFO, message, null); + info(message, null); return; } @@ -698,7 +698,7 @@ public final class Currency implements Serializable { .append(ctry) .append(" is ignored because the value format is not recognized.") .toString(); - log(Level.INFO, message, null); + info(message, null); return; } @@ -726,13 +726,13 @@ public final class Currency implements Serializable { setMainTableEntry(ctry.charAt(0), ctry.charAt(1), entry); } - private static void log(Level level, String message, Throwable t) { - Logger logger = Logger.getLogger("java.util.Currency"); - if (logger.isLoggable(level)) { + private static void info(String message, Throwable t) { + PlatformLogger logger = PlatformLogger.getLogger("java.util.Currency"); + if (logger.isLoggable(PlatformLogger.INFO)) { if (t != null) { - logger.log(level, message, t); + logger.info(message, t); } else { - logger.log(level, message); + logger.info(message); } } } diff --git a/src/share/classes/java/util/SimpleTimeZone.java b/src/share/classes/java/util/SimpleTimeZone.java index b0fd57de8df8e9b9b5c4dfc131b33fff043e4e31..d97d6f59a03d8bced3dc4f98b215b7982b9ee230 100644 --- a/src/share/classes/java/util/SimpleTimeZone.java +++ b/src/share/classes/java/util/SimpleTimeZone.java @@ -1372,7 +1372,7 @@ public class SimpleTimeZone extends TimeZone { throw new IllegalArgumentException( "Illegal start month " + startMonth); } - if (startTime < 0 || startTime >= millisPerDay) { + if (startTime < 0 || startTime > millisPerDay) { throw new IllegalArgumentException( "Illegal start time " + startTime); } @@ -1419,7 +1419,7 @@ public class SimpleTimeZone extends TimeZone { throw new IllegalArgumentException( "Illegal end month " + endMonth); } - if (endTime < 0 || endTime >= millisPerDay) { + if (endTime < 0 || endTime > millisPerDay) { throw new IllegalArgumentException( "Illegal end time " + endTime); } diff --git a/src/share/classes/java/util/jar/Attributes.java b/src/share/classes/java/util/jar/Attributes.java index 27a2aba8ef98596120d6a1c06e847932b6210ceb..e9a9e6e6f691707680aede942c7bf94a5d6c9941 100644 --- a/src/share/classes/java/util/jar/Attributes.java +++ b/src/share/classes/java/util/jar/Attributes.java @@ -34,7 +34,7 @@ import java.util.Set; import java.util.Collection; import java.util.AbstractSet; import java.util.Iterator; -import java.util.logging.Logger; +import sun.util.logging.PlatformLogger; import java.util.Comparator; import sun.misc.ASCIICaseInsensitiveComparator; @@ -419,7 +419,7 @@ public class Attributes implements Map