[jsword-devel] BibleDesktop and Persistent window positioning

DM Smith dmsmith555 at yahoo.com
Sat Jul 26 09:29:47 MST 2008

On Jul 26, 2008, at 11:50 AM, Neil Short wrote:

> My question of the day is this:
> Where is this file LayoutPersistence.properties ?
> If you simply specify a location thin your code will not be cross- 
> platform. If you  use the function System.getProperty("user.home")  
> then your code WILL be cross-platform.

The location is cross-platform but acknowledges that Windows and Mac  
like to do it differently.

JSword starts out with System.getProperty("jsword.home"). If this is  
defined then we are done.

Likewise, if System.getProperty("sword.home") is defined, it will use  
that as the default module home.

On all other platforms, the location starts with  
System.getProperty("user.home"), or what I'll shorthand, *nix style,  
to be ~.

Then jsword.home is determined to be on non-mac/non-windows to be  
~/.jsword and sword.home will be ~/.sword.

On the Mac jsword.home is set to ~/Library/Application Support/JSword  
and sword.home to ~/Library/Application Support/Sword.

On Windows, we use:
jsword.home => ~/Application Data/JSword
sword.home => ~/Application Data/Sword

We use a custom classloader that prepends jsword.home to the  
classpath. That way any resource that is embedded in the jars can be  
found in jsword.home. The resource can be pathed, prefixed or simply  
named, that is:
Pathed	=> org/crosswire/common/util/LayoutPersistence.properties
Prefixed => org.crosswire.common.util.LayoutPersistence.properties
Simple	=> LayoutPersistence.properties

Hope that helps,

More information about the jsword-devel mailing list