Main Page
    Cookbook/Overview     ImageMeister     the jcprops file     Licensing
    Binary Installation & Configuration [ Win · Mac · Nix ]     Changes
    Public API
    Source Code Main Page
        Java [ Common · Win · Mac · Nix ]     Native Code [ Common · Win · Mac · Nix ]     Manifest
        Native Code Overviews [ Common · Win · Mac · Nix · Strings ]     Macros [ General · Native Macros ]
        Walkthroughs [ Java only · Java and native ]     Building [ Win · Mac · Nix ]     Distribution Issues

Changes from v2.0.0 to v2.1.0

API Changes

  1. Added new file attribute constants (FILE_READONLY, etc.) to DiskFile.java
  2. Added the setFlags() and getSetFlagsMask() methods to DiskObject. However, these methods are currently only implemented in the Win and Mac versions.

    For linux/nix, getSetFlagsMask() always returns 0, and setFlags() throws an UnimplementedException

    For more information on these flags on Mac, see:

    http://developer.apple.com/technotes/tb/tb_09.html
    http://developer.apple.com/techpubs/mac/Toolbox/Toolbox-455.html#MARKER-9-356
  3. Added the com.tolstoy.testjc.FileAttributesTest class

Source Code/Build Changes

  1. Removed an illegal character which had snuck into MyFindIconMacros.h

Implementation Changes

  1. Changed setFlags() and getSetFlagsMask() in mac.DiskVolumeMRJ and mac.DiskFileMRJ to throw an OSException instead of returning an error code. These methods had not previously been part of the DiskObject interface, so this shouldn't cause client code to be changed.
  2. Changed getFlags() and getGetFlagsMask() in win.DiskFileMSVM to throw an OSException if an error occurs.
  3. Changed the implementation of the getDiskFileFlags() and setDiskFileFlags() methods in mac/sfiles/SFlags.cpp, and added the isShared() method.
  4. Added file attribute constants (kFileAttributes_FILE_READONLY, etc.) to mac/sfiles/SFlags.h and win/SFileInfo.h to match the new constants in DiskFile.java
  5. Now using WinAPI GetDiskFreeSpaceEx() to get the free space/capacity of a volume. If that's not available, calls WinAPI GetDiskFreeSpace(). This was done by adding XGetDiskFreeSpace2() to XToolkit.cpp. XToolkit::XGetDiskFreeSpace() is still there but no longer used.
  6. Added XGetFileAttributes2(), isGetFileAttributesExAvailable(), and XSetFileAttributes() to XToolkit
  7. The AppUtilsMSVM.getVolumeCapInfo() method now takes a long array with four elements. The additonal two elements have the user-specific free space and capacity. The AppUtilsMSVM.kVolumeCapInfoLen constant was changed from 2 to 4, and AppUtilsMSVM.kVolumeCapInfoCapacityToUserOffset and AppUtilsMSVM.kVolumeCapInfoFreeSpaceToUserOffset were added.
  8. SVolumes::iGetVolumeCapInfo() was changed to reflect the previous two changes.
  9. Changed MonitorPlain.getDepth() to just return 0. In the last version, it had thrown an UnimplementedException
  10. Removed the getCreationDate, getLastAccessDate, and getModificationDate methods from various implementations of DiskObject

Configuration Changes

Changes from v1.2.5 to v2.0.0

API Changes

  1. The main JConfig classes are now in the package com.jconfig... instead of the previous com.tolstoy.jconfig...
  2. There is no longer a separate upper-case version (COM.tolstoy.jconfig...)
    There is only one JConfig version, which uses lower-case 'com' as the first part of the package name.
  3. replaced return kParamErr with throw new IllegalArgumentException()
  4. replaced return kUninitializedErr with throw new com.jconfig.UnitializedException()
  5. replaced return kUnimplementedErr with throw new com.jconfig.UnimplementedException()
  6. FinderInfo: now implements Cloneable; added setter methods for all fields; added 2 new int fields: attributes and flags; removed array constants from DiskFile, put into this class; added array constructor and toArray() method
  7. DiskFile.getFinderInfo/setFinderInfo: instead of arrays, these now take and return FinderInfo objects
  8. FileExtension: now implements Cloneable
  9. MIMEType: now implements Cloneable
  10. There is now just one test class, Tester.java; TesterW has been removed
  11. Created package com.tolstoy.testjc to hold testing classes
  12. Removed the following methods from com.jconfig.DiskObject: getCreationDate, getLastAccessDate, and getModificationDate. These had previously been deprecated. Use getDateBundle instead.
  13. Added the setDateBundle method to com.jconfig.DiskObject.
  14. Added toArray() and createFromArray() to DateBundle
  15. Added the new class OSException.
  16. Added the PlatformInfoI interface and the PlatformInfoPlain, PlatformInfoMSVM, PlatformInfoNix, and PlatformInfoMRJ classes. Added the FileRegistry.getPlatformInfo() method, and changed FileRegistryI, etc. accordingly.
  17. jcprops.txt: property names were changed:
    old values:
      com.tolstoy.jconfig.FileRegistryFactoryMac.findExtensions
      com.tolstoy.jconfig.FileRegistryFactoryMac.findFinderInfo
      com.tolstoy.jconfig.FileRegistryFactoryMac.getApps
      com.tolstoy.jconfig.FileRegistryFactoryMac.iterate
      com.tolstoy.jconfig.FileRegistryFactoryMac.launchURL
      com.tolstoy.jconfig.mac.FileUtilsClassName
    new values:
      com.jconfig.mac.FileRegistryFactoryMac.findExtensions
      com.jconfig.mac.FileRegistryFactoryMac.findFinderInfo
      com.jconfig.mac.FileRegistryFactoryMac.getApps
      com.jconfig.mac.FileRegistryFactoryMac.iterate
      com.jconfig.mac.FileRegistryFactoryMac.launchURL
      com.jconfig.mac.FileRegistryMRJ.FileUtilsClassName
  18. The following constant's names were changed. None of their functionality or values were changed, they were just converted to uppercase to make this more palatable to a certain corp. ;) For instance, AppFile.kDontSwitchLayer was changed to AppFile.AF_NO_LAYER_SWITCH
    private static final String changes[][] = {
    
    			//	AppFile
    	{ "kDontSwitchLayer", "AF_NO_LAYER_SWITCH" },
    	{ "kDisplayManagerAware", "AF_DISPLAYMANAGER" },
    	{ "kUseTextEditServices", "AF_USE_TES" },
    	{ "kStationeryAware", "AF_STAT_AWARE" },
    	{ "kLocalAndRemoteHLEvents", "AF_LOCAL_REMOTE_EVENTS" },
    	{ "kHighLevelEventAware", "AF_HLE_AWARE" },
    	{ "k32BitCompatible", "AF_32" },
    	{ "kGetAppDiedMsg", "AF_APP_DIED_MSG" },
    	{ "kGetFrontClicks", "AF_FRONT_CLICKS" },
    	{ "kOnlyBackground", "AF_APPE" },
    	{ "kDoesActivateOnFGSwitch", "AF_ACTIVATE_FG" },
    	{ "kCanBackground", "AF_CAN_BG" },
    	{ "kNeedSuspendResume", "AF_SUSPEND_RESUME" },
    	{ "kMultiLaunch", "AF_MULTILAUNCH" },
    	{ "kDeskAccessory", "AF_DESKACC" },
    	{ "kWin32Exe", "AF_W32" },
    	{ "kDOSExe", "AF_DOS" },
    	{ "kWOWExe", "AF_WOW" },
    	{ "kPIFExe", "AF_PIF" },
    	{ "kPOSIXExe", "AF_POSIX" },
    	{ "kOS216Exe", "AF_OS216" },
    	{ "kPEFExe", "AF_PEF" },
    	{ "kCFM68Exe", "AF_CFM68" },
    	{ "k68kExe", "AF_68K" },
    	{ "kUnknownExe", "AF_UNKNOWN" },
    
    			//	AppProcess
    	{ "kMoveToFront", "APP_MOVE_TOFRONT" },
    	{ "kMoveToBack", "APP_MOVE_TOBACK" },
    	{ "kMinimize", "APP_MOVE_MINIMIZE" },
    	{ "kMaximize", "APP_MOVE_MAXIMIZE" },
    
    			//	DateBundle
    	{ "kModificationDate", "DATE_MOD" },
    	{ "kCreationDate", "DATE_CRE" },
    	{ "kBackupDate", "DATE_BKUP" },
    	{ "kAccessDate", "DATE_ACC" },
    
    			//	DiskAlias
    	{ "kToVolume", "ALIAS_VOL" },
    	{ "kToDirectory", "ALIAS_DIR" },
    	{ "kToFile", "ALIAS_FILE" },
    	{ "kToOther", "ALIAS_OTHER" },
    	{ "kNoLongerAlias", "ALIAS_NOLONGER" },
    
    			//	DiskFile
    	{ "kIsExecutable", "FILE_EXECUTABLE" },
    	{ "kIsDirectory", "FILE_DIR" },
    	{ "kIsHidden", "FILE_HIDDEN" },
    	{ "kIsStationery", "FILE_STAT" },
    	{ "kIsNameLocked", "FILE_NAME_LOCKED" },
    	{ "kHasCustomIcon", "FILE_CUSTOM_ICON" },
    
    			//	DiskFilter
    	{ "kIgnoreHidden", "IGNORE_HIDDEN" },
    	{ "kIgnoreFolders", "IGNORE_FOLDERS" },
    	{ "kIgnoreFiles", "IGNORE_FILES" },
    	{ "kIgnoreAliases", "IGNORE_ALIASES" },
    	{ "kIgnoreNameLocked", "IGNORE_NAME_LOCKED" },
    
    			//	FinderInfo
    	{ "kFInfoLen", "FI_ARRAYLEN" },
    	{ "kFInfoCreatorOffset", "FI_OFFS_CRE" },
    	{ "kFInfoTypeOffset", "FI_OFFS_TYPE" },
    	{ "kFInfoFlagsOffset", "FI_OFFS_FLAGS" },
    	{ "kFInfoAttribOffset", "FI_OFFS_ATTRIBUTES" },
    
    			//	DiskObject
    	{ "kCreateFile", "DO_CREATEFILE" },
    	{ "kCreateFolder", "DO_CREATEDIR" },
    
    			//	ErrCodes
    	{ "kNoErr", "ERROR_NONE" },
    	{ "kParamErr", "ERROR_PARAM" },
    	{ "kUnimplementedErr", "ERROR_UNIMPLEMENTED" },
    	{ "kUninitializedErr", "ERROR_UNINITIALIZED" },
    
    			//	FileRegistry
    	{ "kGetProcessesIgnoreSystem", "GETPROCESSES_IGNORE_SYSTEM" },
    	{ "kGetProcessesIgnoreHidden", "GETPROCESSES_IGNORE_HIDDEN" },
    
    			//	FileRegistry/FileRegistryI
    	{ "kInOnly", "IN_ONLY" },
    	{ "kOutOnly", "OUT_ONLY" },
    	{ "kInAndOutOnly", "INANDOUT_ONLY" },
    	{ "kResolveAliasNoUI", "ALIAS_NOUI" },
    	{ "kResolveAliasUI", "ALIAS_UI" },
    	{ "kGetAppsSearchLevel1", "GETAPPS_SEARCH1" },
    	{ "kGetAppsSearchLevel2", "GETAPPS_SEARCH2" },
    	{ "kGetAppsSearchLevel3", "GETAPPS_SEARCH3" },
    
    			//	DiskVolume
    	{ "kCaseIsPreserved", "VOL_CASE_PRESERVED" },
    	{ "kCaseSensitive", "VOL_CASE_SENSITIVE" },
    	{ "kUnicodeSupported", "VOL_UNICODE" },
    	{ "kFilesCompressed", "VOL_FILES_COMPRESSED" },
    	{ "kVolumeCompressed", "VOL_VOL_COMPRESSED" },
    	{ "kRemovable", "VOL_REMOVABLE" },
    	{ "kFixed", "VOL_FIXED" },
    	{ "kRemote", "VOL_REMOTE" },
    	{ "kCDROM", "VOL_CDROM" },
    	{ "kRAM", "VOL_RAM" },
    	{ "kSystem", "VOL_SYSTEM" },
    
    			//	FileSystem
    	{ "kGetCapLength", "FS_GETCAP_LENGTH" },
    	{ "kGetCapCapacityOffset", "FS_GETCAP_CAP_OFFSET" },
    	{ "kGetCapFreeSpaceOffset", "FS_GETCAP_FREESPACE_OFFSET" },
    
    			//	FileType
    	{ "kCreatedFromExt", "CREATED_FROM_EXT" },
    	{ "kCreatedFromFTAC", "CREATED_FROM_FTAC" },
    	{ "kCreatedFromMIME", "CREATED_FROM_MIME" },
    
    			//	FinderInfo
    	{ "kAPPLType", "APPLICATION_TYPE" },
    
    			//	IconBundle
    	{ "kLargeIcon", "ICON_LARGE" },
    	{ "kSmallIcon", "ICON_SMALL" },
    	{ "kAlignNone", "ICON_ALIGN_NONE" },
    	{ "kAlignVerticalCenter", "ICON_ALIGN_VCENTER" },
    	{ "kAlignTop", "ICON_ALIGN_TOP" },
    	{ "kAlignBottom", "ICON_ALIGN_BOTTOM" },
    	{ "kAlignHorizontalCenter", "ICON_ALIGN_HCENTER" },
    	{ "kAlignLeft", "ICON_ALIGN_LEFT" },
    	{ "kAlignRight", "ICON_ALIGN_RIGHT" },
    	{ "kXformNone", "ICON_CHANGE_NONE" },
    	{ "kXformDisabled", "ICON_CHANGE_DISABLED" },
    	{ "kXformOffline", "ICON_CHANGE_OFFLINE" },
    	{ "kXformOpen", "ICON_CHANGE_OPEN" },
    	{ "kXformLabel1", "ICON_CHANGE_LABEL1" },
    	{ "kXformLabel2", "ICON_CHANGE_LABEL2" },
    	{ "kXformLabel3", "ICON_CHANGE_LABEL3" },
    	{ "kXformLabel4", "ICON_CHANGE_LABEL4" },
    	{ "kXformLabel5", "ICON_CHANGE_LABEL5" },
    	{ "kXformLabel6", "ICON_CHANGE_LABEL6" },
    	{ "kXformLabel7", "ICON_CHANGE_LABEL7" },
    	{ "kXformSelected", "ICON_CHANGE_SELECTED" },
    
    			//	Monitor
    	{ "kTestOnlyMask", "TEST_ONLY_MASK" },
    
    			//	ResourceFork
    	{ "kOpenExisting", "RESFORK_OPENEXISTING" },
    	{ "kReadOnly", "RESFORK_READONLY" },
    
    			//	Tester/TesterW/TestResFork
    	{ "kMySignature", "MY_SIGNATURE" },
    
    			//	Trace
    	{ "kSystemOut", "TRACE_SYSOUT" },
    	{ "kFile", "TRACE_FILE" },
    	{ "kNull", "TRACE_NULL" }
    };
    

Source Code/Build Changes

  1. removed the file iscomlowercase.h which was used to switch between the upper and lower-case versions.
  2. removed references to the USING_LOWER_CASE_com constant which had been defined in iscomlowercase.h
  3. removed the native header files which ended in _lower and _upper, and are now just using the lower one For instance, the new file 'JNI_AppUtilsMSVM.h' is just the previous 'JNI_AppUtilsMSVM_lower.h' The file 'JNI_AppUtilsMSVM.h' was removed, and 'AppUtilsMSVM.h' was changed to include the correct header based only on the native architecture being compiled (JNI,etc.), rather than the previous functionality which also took the USING_LOWER_CASE_com constant into account as well.

Implementation Changes

  1. The getDateBundle methods now throw an OSException instead of returning null if an error occurs.

Configuration Changes

  1. Changed the various batch files and shell scripts to reflect the inclusion of the 'source' directory inside the main folder.

Changes from v1.2.2 to v1.2.3

API Changes

Added the Trace class, used to output tracing and debugging messages.

Implementation Changes

Updated to use the latest version of Find_icon (Mac)
Fixed some WinNT problems

Changes from v1.2.1 to v1.2.2

Implementation Changes

Changed the implementation of the launchURL method.

Changes from v1.2 to v1.2.1

Implementation Changes

See the 'WINDOWS NOTE' section in the first part of the documentation of the AppCommand interface.



Changes from v1.1 to v1.2

API Changes

1. The following methods are deprecated:

    DiskObject.getCreationDate()
    DiskObject.getLastAccessDate()
    DiskObject.getModificationDate()

These methods still work, however, they will be removed in a future version. These have been replaced with the following method:

    DiskObject.getDateBundle()

This method returns a 'DateBundle' object, which is used to hold zero or more 'RawDate' objects. Both of these classes are new in this version. The RawDate class holds the year, month, day, hour, minute, and second, but has no conversion or other routines. You can use the JUtils.rawDateToJDate() method to convert a RawDate into a java.util.Date object, however, if you're running on a 1.1.x system, you might want to write a method to convert a RawDate into a Calendar or other class.

2. A new interface has been added, named 'FileSystem'. See the overview.html 'Working with Files' section for more information.

Configuration Changes

With JConfig v1.1 and before, the directory passed to the FileRegistry.initialize() method was required to contain a file named 'jconfig.cfg'.

This is still true, however, with this version this directory must contain an additional file named 'jcfactrz.txt'.

Both of these files are included with this distribution, and you can provide your own versions of either file in order to customize JConfig. This is described in the overview.html 'Customizing JConfig' section,

If JConfig cannot find either of these files, it will output warning messages, and will use default values stored internally. See the first section of 'overview.html' for more information.


Main Page · JConfig · ImageMeister · System Properties Repository · Native Macros · Free Samples · WordMeister · Java Freeware · Links · Contact Us
Copyright (c) 1997,1998,1999,2000 Samizdat Productions. All Rights Reserved.
JConfig and ImageMeister are trademarks of Samizdat Productions. Other trademarks are the property of their respective owners.
samizdat@tolstoy.com