version 3.1 checkin
Marc Liyanage [Sun, 20 Feb 2005 23:03:47 +0000 (23:03 +0000)]
git-svn-id: svn+ssh://www.entropy.ch/Users/liyanage/Documents/svnroot/trunk/TestXSLT@140 153f8dbc-cef0-0310-8e0e-ba1d6c9f8c6b

37 files changed:
AppDelegate.h
AppDelegate.m
Distribution/More Examples/XML Prettyprinter/xml-prettyprinter.xslt [new file with mode: 0644]
Distribution/readme.html
Distribution/readme.pdf
Distribution/readme.rtf
Distribution/readme.xml
Distribution/readme2html.xsl
FindPanel~.nib/classes.nib [deleted file]
FindPanel~.nib/info.nib [deleted file]
FindPanel~.nib/objects.nib [deleted file]
JumpToLine~.nib/classes.nib [deleted file]
JumpToLine~.nib/info.nib [deleted file]
JumpToLine~.nib/objects.nib [deleted file]
MyDocument.h
MyDocument.m
Saxon/saxon.jar [deleted file]
Saxon/saxon8-sql.jar [new file with mode: 0755]
Saxon/saxon8.jar [new file with mode: 0755]
TestXSLT.pbproj/liyanage.mode1 [new file with mode: 0644]
TestXSLT.pbproj/liyanage.pbxuser
TestXSLT.pbproj/project.pbxproj
UnsavedChanges~.nib/classes.nib [deleted file]
UnsavedChanges~.nib/info.nib [deleted file]
UnsavedChanges~.nib/objects.nib [deleted file]
Workset.m
XMLTextView.h
XMLTextView.m
XSLTProcessorSaxon.m
Xalan-J/xalan-2.4.1.jar [deleted file]
Xalan-J/xalan.jar [new file with mode: 0755]
Xalan-J/xercesImpl-2.2.1.jar [deleted file]
Xalan-J/xml-apis.jar [deleted file]
libxslt/python/Makefile
libxslt/python/tests/Makefile
template.xml [new file with mode: 0644]
template.xslt [new file with mode: 0644]

index ccefeed..8029d82 100644 (file)
@@ -9,7 +9,10 @@
 #import <Cocoa/Cocoa.h>
 
 @interface AppDelegate : NSObject
+{
+       IBOutlet NSWindow* prefsWindow;
+}
 
-- (void)applicationDidBecomeActive:(NSNotification *)aNotification;
+- (void)applicationWillTerminate:(NSNotification *)aNotification;
 
 @end
index 789a4ac..7ebb67e 100644 (file)
 
 @implementation AppDelegate
 
-- (void)applicationDidBecomeActive:(NSNotification *)aNotification {
 
-       /* no longer active, now using the windowDidBecomeMain method in the window delegate (MyDocument.m)
-        */
+- (id)init {
 
-       //      NSArray *documents = [[NSDocumentController sharedDocumentController] documents];
-//     [documents makeObjectsPerformSelector:@selector(checkForExternalModifications)];
+       self = [super init];
+       if (!self) return nil;
+
+       NSString *templateXML = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"template" ofType:@"xml"]];
+       NSString *templateXSLT = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"template" ofType:@"xslt"]];
+       
+    NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
+               @"YES", @"enableWellformedCheck",
+               @"YES", @"enableSyntaxAnalysis",
+               templateXML, @"templateXML",
+               templateXSLT, @"templateXSLT",
+               nil];
+    [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
+       
+       return self;
        
 }
 
+
+- (void)applicationWillTerminate:(NSNotification *)aNotification {
+       [prefsWindow orderOut:self];
+}
+
+
 @end
diff --git a/Distribution/More Examples/XML Prettyprinter/xml-prettyprinter.xslt b/Distribution/More Examples/XML Prettyprinter/xml-prettyprinter.xslt
new file mode 100644 (file)
index 0000000..1916e00
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='iso-8859-1'?>
+
+<!-- xml pretty printing xslt -->
+
+<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
+
+<xsl:output method='html' version='1.0' encoding='iso-8859-1' indent='no'/>
+
+<xsl:variable name="indent_text" select="'  '"/>
+
+<xsl:template match="*[count(*) = 0]">
+<xsl:param name="indent" select="0"/>
+<xsl:call-template name="indent"><xsl:with-param name="count" select="$indent"/></xsl:call-template>
+<xsl:element name="{name()}"><xsl:copy-of select="@*"/><xsl:value-of select="normalize-space(.)"/></xsl:element><xsl:text>
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="*[count(*) > 0]">
+<xsl:param name="indent" select="0"/>
+<xsl:call-template name="indent"><xsl:with-param name="count" select="$indent"/></xsl:call-template>
+<xsl:element name="{name()}"><xsl:copy-of select="@*"/><xsl:text>
+</xsl:text>
+<xsl:apply-templates><xsl:with-param name="indent" select="$indent + 1"/></xsl:apply-templates>
+<xsl:call-template name="indent"><xsl:with-param name="count" select="$indent"/></xsl:call-template></xsl:element><xsl:text>
+</xsl:text>
+</xsl:template>
+
+<xsl:template name="indent">
+<xsl:param name="count"/>
+
+<xsl:if test="$count > 0">
+<xsl:copy-of select="$indent_text"/>
+<xsl:call-template name="indent">
+<xsl:with-param name="count" select="$count - 1"/>
+</xsl:call-template>
+</xsl:if>
+
+
+</xsl:template>
+
+
+
+<xsl:template match="text()[string-length(normalize-space(.)) &lt; 1]">
+</xsl:template>
+
+<xsl:template match="text()[string-length(normalize-space(.)) > 1]">
+<xsl:param name="indent" select="0"/>
+<xsl:call-template name="indent"><xsl:with-param name="count" select="$indent"/></xsl:call-template>
+<xsl:value-of select="normalize-space(.)"/><xsl:text>
+</xsl:text>
+</xsl:template>
+
+
+
+
+
+</xsl:stylesheet>
+
index ac324e2..bc9cb7d 100644 (file)
@@ -1,16 +1,16 @@
 <html>
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-    <title>Readme for TestXSLT v3.0</title>
+    <title>Readme for TestXSLT v3.1</title>
     <META name="Author" content="Written by Marc Liyanage ">
   </head>
   <body>
-<h1>Readme for TestXSLT v3.0</h1>
+<h1>Readme for TestXSLT v3.1</h1>
 
 <p>
       <b>
         <i>Written by Marc Liyanage 
-&lt;<a href="mailto:liyanage@access.ch">liyanage@access.ch</a>&gt;
+&lt;<a href="mailto:testxslt@entropy.ch">testxslt@entropy.ch</a>&gt;
 </i>
       </b>
     </p>
@@ -42,7 +42,7 @@
 <p> </p>
     <h2>Requirements</h2>
     <p>
-Mac OS X 10.2. and Safari 1.0 must be installed on your system.
+Mac OS X 10.3. and Safari 1.0 must be installed on your system.
 </p>
 
 <p> </p>
@@ -55,7 +55,31 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">17-DEC-2003</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>19-FEB-2005</nobr>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="center">3.1</td>
+        <td bgcolor="#eeeeee" valign="top">
+          <ul>
+            <li>Extra special big thanks to the folks at VitalSource (<a href="http://www.vitalsource.com">http://www.vitalsource.com</a>) for their generous donation in support of this release :-)</li>
+            <li>Fixed the most common cause for a crash when quitting the application or closing a document window. The crash still occurs very rarely though.</li>
+            <li>XSL-FO processing works again after it was broken by the Java 1.4.2 update.</li>
+            <li>There's now a preferences dialog, currently with the following options.</li>
+            <li>1.) It allows to disable the syntax analysis which can take a long time with large documents. Note that disabling it also disables automatic closing tag insertion.</li>
+            <li>2.) It allows to disable the wellformedness check. Disabling this stops the little warning icon from appearing.</li>
+            <li>3.) It allows to edit the default text snippets that are inserted into the XML and XSLT text areas of new documents.</li>
+            <li>Because of the way the preferences dialog is implemented (Cocoa Bindings), the program now requires Mac OS X 10.3.</li>
+            <li>The wellformedness check error message (if any) is now visible in the error message drawer, and not only in the tooltip of the little warning icon. You open the drawer by clicking onto the warning icon.</li>
+            <li>Updated the Xalan-J processor to 2.6.</li>
+            <li>Updated the Saxon processor to 8.3, which means you can now experiment with XSLT 2.0 and XQuery.</li>
+          </ul>
+        </td>
+      </tr>
+
+<tr>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>17-DEC-2003</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">3.0</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -69,7 +93,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
 
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">08-SEP-2003</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>08-SEP-2003</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">2.9</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -88,7 +114,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
 
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">17-AUG-2003</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>17-AUG-2003</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">2.8</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -99,7 +127,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">05-AUG-2003</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>05-AUG-2003</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">2.7</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -111,7 +141,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">01-APR-2003</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>01-APR-2003</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">2.6</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -126,7 +158,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">15-OCT-2002</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>15-OCT-2002</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">2.5</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -138,7 +172,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">26-SEP-2002</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>26-SEP-2002</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">2.4</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -156,7 +192,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">05-AUG-2002</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>05-AUG-2002</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">2.3</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -170,7 +208,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">20-JUL-2002</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>20-JUL-2002</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">2.2</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -183,7 +223,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">06-JUL-2002</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>06-JUL-2002</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">2.1.1</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -193,7 +235,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">06-JUL-2002</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>06-JUL-2002</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">2.1</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -203,7 +247,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">10-MAR-2002</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>10-MAR-2002</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">2.0</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -214,7 +260,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">12-DEC-2001</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>12-DEC-2001</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">1.5</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -224,7 +272,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">11-DEC-2001</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>11-DEC-2001</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">1.4</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -236,7 +286,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">29-APR-2001</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>29-APR-2001</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">1.3</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -246,7 +298,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">13-APR-2001</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>13-APR-2001</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">1.2</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -256,7 +310,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">10-FEB-2001</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>10-FEB-2001</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">1.1</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
@@ -266,7 +322,9 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
       </tr>
 
 <tr>
-        <td bgcolor="#eeeeee" valign="top" align="right">04-FEB-2001</td>
+        <td bgcolor="#eeeeee" valign="top" align="right">
+          <nobr>04-FEB-2001</nobr>
+        </td>
         <td bgcolor="#eeeeee" valign="top" align="center">1.0</td>
         <td bgcolor="#eeeeee" valign="top">
           <ul>
index b66d998..597e1e1 100644 (file)
Binary files a/Distribution/readme.pdf and b/Distribution/readme.pdf differ
index 04786d4..ea600c4 100644 (file)
@@ -13,7 +13,7 @@
 \f1\b0\fs24 \
 \
 \f0\b Written by Marc Liyanage 
-\cf2 <liyanage@access.ch>\cf0 
+\cf2 <testxslt@entropy.ch>\cf0 
 \
 
 
@@ -67,7 +67,7 @@ If you need help or would like to comment on the program, there is an online use
 
 \f0\b \ Requirements\
 \f1\b0 
-Mac OS X 10.2. and Safari 1.0 must be installed on your system.
+Mac OS X 10.3. and Safari 1.0 must be installed on your system.
 \
 \
 
@@ -77,6 +77,35 @@ Mac OS X 10.2. and Safari 1.0 must be installed on your system.
 \f1\b0 \
 
 
+19-FEB-2005 Version 3.1\
+
+- Extra special big thanks to the folks at VitalSource (
+\cf2 http://www.vitalsource.com\cf0 
+) for their generous donation in support of this release :-)\
+
+- Fixed the most common cause for a crash when quitting the application or closing a document window. The crash still occurs very rarely though.\
+
+- XSL-FO processing works again after it was broken by the Java 1.4.2 update.\
+
+- There's now a preferences dialog, currently with the following options.\
+
+- 1.) It allows to disable the syntax analysis which can take a long time with large documents. Note that disabling it also disables automatic closing tag insertion.\
+
+- 2.) It allows to disable the wellformedness check. Disabling this stops the little warning icon from appearing.\
+
+- 3.) It allows to edit the default text snippets that are inserted into the XML and XSLT text areas of new documents.\
+
+- Because of the way the preferences dialog is implemented (Cocoa Bindings), the program now requires Mac OS X 10.3.\
+
+- The wellformedness check error message (if any) is now visible in the error message drawer, and not only in the tooltip of the little warning icon. You open the drawer by clicking onto the warning icon.\
+
+- Updated the Xalan-J processor to 2.6.\
+
+- Updated the Saxon processor to 8.3, which means you can now experiment with XSLT 2.0 and XQuery.\
+
+\
+
+
 17-DEC-2003 Version 3.0\
 
 - Changed keyboard shortcut for "Find Again" from Cmd-D to Cmd-Shift-G as 1.) that seems to be the new convention for Cocoa apps, 2.) it's used in BBEdit, and 3.) I like it better :-)\
index cdac7ef..31df711 100644 (file)
@@ -5,7 +5,7 @@
 <readme>
 <title>Readme for TestXSLT</title>
 
-<author>Written by Marc Liyanage <email>liyanage@access.ch</email></author>
+<author>Written by Marc Liyanage <email>testxslt@entropy.ch</email></author>
 
 <description>
 <para>TestXSLT is a free tool for learning, experimenting with and using the XSL language (both the XSLT and the XSL-FO parts) in a convenient way on Mac OS X. It offers several XSLT processors (Sablotron, Gnome LibXSLT, Saxon and Xalan-J) as well as the Apache FOP XSL-FO rendering engine which produces on-screen previews as well as PDF files. For authors of stylesheets which produce HTML, it makes use of the WebKit HTML rendering engine, allowing previews right in the application.</para>
 </description>
 
 <requirements>
-Mac OS X 10.2. and Safari 1.0 must be installed on your system.
+Mac OS X 10.3. and Safari 1.0 must be installed on your system.
 </requirements>
 
 <history>
 
 <entry>
+       <version>3.1</version>
+       <date>19-FEB-2005</date>
+       <item>Extra special big thanks to the folks at VitalSource (<url>http://www.vitalsource.com</url>) for their generous donation in support of this release :-)</item>
+       <item>Fixed the most common cause for a crash when quitting the application or closing a document window. The crash still occurs very rarely though.</item>
+       <item>XSL-FO processing works again after it was broken by the Java 1.4.2 update.</item>
+       <item>There's now a preferences dialog, currently with the following options.</item>
+       <item>1.) It allows to disable the syntax analysis which can take a long time with large documents. Note that disabling it also disables automatic closing tag insertion.</item>
+       <item>2.) It allows to disable the wellformedness check. Disabling this stops the little warning icon from appearing.</item>
+       <item>3.) It allows to edit the default text snippets that are inserted into the XML and XSLT text areas of new documents.</item>
+       <item>Because of the way the preferences dialog is implemented (Cocoa Bindings), the program now requires Mac OS X 10.3.</item>
+       <item>The wellformedness check error message (if any) is now visible in the error message drawer, and not only in the tooltip of the little warning icon. You open the drawer by clicking onto the warning icon.</item>
+       <item>Updated the Xalan-J processor to 2.6.</item>
+       <item>Updated the Saxon processor to 8.3, which means you can now experiment with XSLT 2.0 and XQuery.</item>
+</entry>
+
+<entry>
        <version>3.0</version>
        <date>17-DEC-2003</date>
        <item>Changed keyboard shortcut for "Find Again" from Cmd-D to Cmd-Shift-G as 1.) that seems to be the new convention for Cocoa apps, 2.) it's used in BBEdit, and 3.) I like it better :-)</item>
index 15be0bd..b10d882 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>\r\r<!-- $Id$ -->\r\r<xsl:stylesheet    version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\r\r<!-- Need to instruct the XSLT processor to use HTML output rules.\r     See http://www.w3.org/TR/xslt#output for more details\r-->\r<xsl:output method="html" encoding="ISO-8859-1"/>\r<xsl:param name="version"/>\r\r\r\r<!-- This first template matches our root element in the input file.\r     This will trigger the generation of the HTML skeleton document.\r     In between we let the processor recursively process any contained\r     elements, which is what the apply-templates instruction does.\r     We also pick some stuff out explicitly in the head section using\r     value-of instructions.\r-->     \r<xsl:template match='readme'>\r\r<html>\r       <head>\r         <title><xsl:value-of select="title"/> v<xsl:value-of select="$version"/></title>\r               <META name="Author" content="{author/text()}"/>\r        </head>\r        \r       <body>\r         <xsl:apply-templates/>\r         \r               <p>&#160;</p>\r          <p>&#160;</p>\r  </body>\r</html>\r\r</xsl:template>\r\r\r\r\r\r\r<!-- Match the readme title. Output as H1 -->\r<xsl:template match="title">\r<h1><xsl:apply-templates/> v<xsl:value-of select="$version"/></h1>\r</xsl:template>\r\r\r\r<!-- Match the author title. Output some code to make it bold.\r     The author element might contain other markup, like the email address.\r     Again, this will be resolved recursively using apply-templates.\r-->\r<xsl:template match="author">\r<p><b><i><xsl:apply-templates/></i></b></p>\r</xsl:template>\r\r\r<!-- Make email an anchor and add angle brackets (lt and gt) -->\r<xsl:template match="email">\r&lt;<a href="mailto:{.}"><xsl:apply-templates/></a>&gt;\r</xsl:template>\r\r\r<!-- Match description. Contains nested para elements -->\r<xsl:template match="description">\r<p>&#160;</p>\r<h2>Description</h2>\r\r<xsl:apply-templates/>\r</xsl:template>\r\r\r\r<!-- paragraphs inside descriptions -->\r<xsl:template match="para">\r<p><xsl:apply-templates/></p>\r</xsl:template>\r\r\r\r<!-- Make URLs into anchors -->\r<xsl:template match="url">\r<a href="{.}"><xsl:apply-templates/></a>\r</xsl:template>\r\r\r\r<!-- Output Requirements title -->\r<xsl:template match="requirements">\r<p>&#160;</p>\r<h2>Requirements</h2>\r<p><xsl:apply-templates/></p>\r</xsl:template>\r\r\r\r<!-- Output version history. Make it a table. Here we have\r     to create the table itself plus the header row. The\r     rest will be handled recursively by the template that\r     matches the entries.\r-->\r<xsl:template match="history">\r<p>&#160;</p>\r<h2>History</h2>\r<table border="0" cellspacing="1" cellpadding="1">\r<tr><th bgcolor="#cccccc">Date</th><th bgcolor="#cccccc">Version</th><th bgcolor="#cccccc">Changes</th></tr>\r\r<xsl:apply-templates/>\r\r</table>\r\r</xsl:template>\r\r\r\r<!-- Inside history, we will find entry elements.\r     For every one of these, we will output a table row.\r     the only special case is the changes column which might\r     contain multiple item values. These are handled in their\r     own template. We'll output them as an unordered list (ul).\r     The ul itself goes into this template, but the individual li\r     items are created in their own template.\r-->\r<xsl:template match="entry">\r\r<tr>\r<td bgcolor="#eeeeee" valign="top" align="right"><xsl:value-of select="date"/></td>\r<td bgcolor="#eeeeee" valign="top" align="center"><xsl:value-of select="version"/></td>\r<td bgcolor="#eeeeee" valign="top">\r<ul>\r  <xsl:apply-templates select="item"/>\r</ul>\r</td>\r</tr>\r</xsl:template>\r\r\r\r<!-- One item element, multiple are possible in an entry.\r     Output a <li> tag, then the item text\r-->\r<xsl:template match="item">\r<li><xsl:apply-templates/></li>\r</xsl:template>\r\r\r\r\r\r</xsl:stylesheet>\r
\ No newline at end of file
+<?xml version="1.0" encoding="ISO-8859-1"?>\r\r<!-- $Id$ -->\r\r<xsl:stylesheet    version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\r\r<!-- Need to instruct the XSLT processor to use HTML output rules.\r     See http://www.w3.org/TR/xslt#output for more details\r-->\r<xsl:output method="html" encoding="ISO-8859-1"/>\r<xsl:param name="version"/>\r\r\r\r<!-- This first template matches our root element in the input file.\r     This will trigger the generation of the HTML skeleton document.\r     In between we let the processor recursively process any contained\r     elements, which is what the apply-templates instruction does.\r     We also pick some stuff out explicitly in the head section using\r     value-of instructions.\r-->     \r<xsl:template match='readme'>\r\r<html>\r       <head>\r         <title><xsl:value-of select="title"/> v<xsl:value-of select="$version"/></title>\r               <META name="Author" content="{author/text()}"/>\r        </head>\r        \r       <body>\r         <xsl:apply-templates/>\r         \r               <p>&#160;</p>\r          <p>&#160;</p>\r  </body>\r</html>\r\r</xsl:template>\r\r\r\r\r\r\r<!-- Match the readme title. Output as H1 -->\r<xsl:template match="title">\r<h1><xsl:apply-templates/> v<xsl:value-of select="$version"/></h1>\r</xsl:template>\r\r\r\r<!-- Match the author title. Output some code to make it bold.\r     The author element might contain other markup, like the email address.\r     Again, this will be resolved recursively using apply-templates.\r-->\r<xsl:template match="author">\r<p><b><i><xsl:apply-templates/></i></b></p>\r</xsl:template>\r\r\r<!-- Make email an anchor and add angle brackets (lt and gt) -->\r<xsl:template match="email">\r&lt;<a href="mailto:{.}"><xsl:apply-templates/></a>&gt;\r</xsl:template>\r\r\r<!-- Match description. Contains nested para elements -->\r<xsl:template match="description">\r<p>&#160;</p>\r<h2>Description</h2>\r\r<xsl:apply-templates/>\r</xsl:template>\r\r\r\r<!-- paragraphs inside descriptions -->\r<xsl:template match="para">\r<p><xsl:apply-templates/></p>\r</xsl:template>\r\r\r\r<!-- Make URLs into anchors -->\r<xsl:template match="url">\r<a href="{.}"><xsl:apply-templates/></a>\r</xsl:template>\r\r\r\r<!-- Output Requirements title -->\r<xsl:template match="requirements">\r<p>&#160;</p>\r<h2>Requirements</h2>\r<p><xsl:apply-templates/></p>\r</xsl:template>\r\r\r\r<!-- Output version history. Make it a table. Here we have\r     to create the table itself plus the header row. The\r     rest will be handled recursively by the template that\r     matches the entries.\r-->\r<xsl:template match="history">\r<p>&#160;</p>\r<h2>History</h2>\r<table border="0" cellspacing="1" cellpadding="1">\r<tr><th bgcolor="#cccccc">Date</th><th bgcolor="#cccccc">Version</th><th bgcolor="#cccccc">Changes</th></tr>\r\r<xsl:apply-templates/>\r\r</table>\r\r</xsl:template>\r\r\r\r<!-- Inside history, we will find entry elements.\r     For every one of these, we will output a table row.\r     the only special case is the changes column which might\r     contain multiple item values. These are handled in their\r     own template. We'll output them as an unordered list (ul).\r     The ul itself goes into this template, but the individual li\r     items are created in their own template.\r-->\r<xsl:template match="entry">\r\r<tr>\r<td bgcolor="#eeeeee" valign="top" align="right"><nobr><xsl:value-of select="date"/></nobr></td>\r<td bgcolor="#eeeeee" valign="top" align="center"><xsl:value-of select="version"/></td>\r<td bgcolor="#eeeeee" valign="top">\r<ul>\r     <xsl:apply-templates select="item"/>\r</ul>\r</td>\r</tr>\r</xsl:template>\r\r\r\r<!-- One item element, multiple are possible in an entry.\r     Output a <li> tag, then the item text\r-->\r<xsl:template match="item">\r<li><xsl:apply-templates/></li>\r</xsl:template>\r\r\r\r\r\r</xsl:stylesheet>\r
\ No newline at end of file
diff --git a/FindPanel~.nib/classes.nib b/FindPanel~.nib/classes.nib
deleted file mode 100644 (file)
index b9b4b09..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }); 
-    IBVersion = 1; 
-}
\ No newline at end of file
diff --git a/FindPanel~.nib/info.nib b/FindPanel~.nib/info.nib
deleted file mode 100644 (file)
index 1cf9c77..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>IBDocumentLocation</key>
-       <string>70 93 356 240 0 0 1280 832 </string>
-       <key>IBFramework Version</key>
-       <string>283.0</string>
-       <key>IBSystem Version</key>
-       <string>6C115</string>
-</dict>
-</plist>
diff --git a/FindPanel~.nib/objects.nib b/FindPanel~.nib/objects.nib
deleted file mode 100644 (file)
index b8d62ba..0000000
Binary files a/FindPanel~.nib/objects.nib and /dev/null differ
diff --git a/JumpToLine~.nib/classes.nib b/JumpToLine~.nib/classes.nib
deleted file mode 100644 (file)
index 615e02a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {showJumpToLinePanel = id; }; 
-            CLASS = FirstResponder; 
-            LANGUAGE = ObjC; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {
-            ACTIONS = {abortJumpToLine = id; jumpToLine = id; }; 
-            CLASS = JumpToLinePanelController; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {lineNumberField = NSTextField; }; 
-            SUPERCLASS = NSWindowController; 
-        }
-    ); 
-    IBVersion = 1; 
-}
\ No newline at end of file
diff --git a/JumpToLine~.nib/info.nib b/JumpToLine~.nib/info.nib
deleted file mode 100644 (file)
index dc73b3e..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>IBDocumentLocation</key>
-       <string>211 128 434 307 0 0 1280 832 </string>
-       <key>IBFramework Version</key>
-       <string>286.0</string>
-       <key>IBOpenObjects</key>
-       <array>
-               <integer>5</integer>
-       </array>
-       <key>IBSystem Version</key>
-       <string>6C115</string>
-</dict>
-</plist>
diff --git a/JumpToLine~.nib/objects.nib b/JumpToLine~.nib/objects.nib
deleted file mode 100644 (file)
index 3840bda..0000000
Binary files a/JumpToLine~.nib/objects.nib and /dev/null differ
index 2cbe069..e7f3cf0 100644 (file)
@@ -87,15 +87,18 @@ enum {
        IBOutlet NSTextField *xmlTagStackField;
        IBOutlet NSTextField *xsltTagStackField;
 
-       IBOutlet NSTextField *drawerMessageField;
-       NSData *pdfData;
+       NSData *pdfData, *xslfoRendererResultData;
+       NSConditionLock *xslfoRendererLock;
 
+       NSString *drawerMessage;
+       
        IBOutlet NSTextField *webViewBaseURL;
 
        FindPanelController *findPanelController;
        JumpToLinePanelController *jumpToLinePanelController;
        UnsavedChangesPanelController *unsavedChangesPanelController;
-       
+
+       NSUserDefaults *defaults;
 }
 
 - (BOOL)canUseSelectionForFindNow;
index 89c6611..8dd8eaa 100644 (file)
@@ -9,7 +9,7 @@
 
 #import "MyDocument.h"
 #import "Workset.h"
-
+#import <Foundation/NSDebug.h>
 
 
 
@@ -17,6 +17,8 @@
 
 - (id)init {
 
+//     NSZombieEnabled = YES;
+       
        if (self = [super init]) {
                workset = [[Workset alloc] init];
                processor = [XSLTProcessorFactory makeProcessorOfType:PROCESSORTYPE_SABLOTRON];
                xsltDirty = NO;
        }
 
-       NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
-    NSDictionary *appDefaults = [NSDictionary
-        dictionaryWithObject:@"YES" forKey:@"AnalyzeCode"];
-       
-    [defaults registerDefaults:appDefaults];
-       
+       defaults = [NSUserDefaults standardUserDefaults];
        
        return self;
 }
 
 - (void)dealloc {
 
+       [uiUpdateTimer release];
        [workset release];
        [processor release];
        [wellFormedParser release];
                [saveXmlButton setEnabled:[self canSaveXmlNow]];
                [saveXmlAsButton setEnabled:[self canSaveXmlAsNow]];
                [xmlTagStackField setStringValue:[xmlView calculateTagStack]];
-       
-               [xmlView checkWellFormed];
-               if ([workset hasXmlCode] && [xmlView hasError]) {
-                       [xmlWellFormedIcon setImage:warningIcon];
-                       [xmlWellFormedIcon setToolTip:[xmlView valueForKey:@"errorString"]];
-               } else {
-                       [xmlWellFormedIcon setImage:nil];
-                       [xmlWellFormedIcon setToolTip:nil];
+
+               if ([defaults boolForKey:@"enableWellformedCheck"]) {
+                       [xmlView checkWellFormed];
+                       if ([workset hasXmlCode] && [xmlView hasError]) {
+                               [xmlWellFormedIcon setImage:warningIcon];
+                               [xmlWellFormedIcon setToolTip:[xmlView valueForKey:@"errorString"]];
+                               [self setValue:[xmlView valueForKey:@"errorString"] forKey:@"drawerMessage"];
+                       } else {
+                               [xmlWellFormedIcon setImage:nil];
+                               [xmlWellFormedIcon setToolTip:nil];
+                               [self setValue:nil forKey:@"drawerMessage"];
+                       }
                }
-       
+
        } else if (xsltTabIsVisible) {
                [saveXsltFilenameField setObjectValue:[workset xsltFilename]];
                [saveXsltFilenameField setToolTip:[workset xsltFilename]];
                [saveXsltAsButton setEnabled:[self canSaveXsltAsNow]];
                [xsltTagStackField setStringValue:[xsltView calculateTagStack]];
 
-               [xsltView checkWellFormed];
-               if ([workset hasXsltCode] && [xsltView hasError]) {
-                       [xsltWellFormedIcon setImage:warningIcon];
-                       [xsltWellFormedIcon setToolTip:[xsltView valueForKey:@"errorString"]];
-               } else {
-                       [xsltWellFormedIcon setImage:nil];
-                       [xsltWellFormedIcon setToolTip:nil];
+               if ([defaults boolForKey:@"enableWellformedCheck"]) {
+                       [xsltView checkWellFormed];
+                       if ([workset hasXsltCode] && [xsltView hasError]) {
+                               [xsltWellFormedIcon setImage:warningIcon];
+                               [xsltWellFormedIcon setToolTip:[xsltView valueForKey:@"errorString"]];
+                               [self setValue:[xsltView valueForKey:@"errorString"] forKey:@"drawerMessage"];
+                       } else {
+                               [xsltWellFormedIcon setImage:nil];
+                               [xsltWellFormedIcon setToolTip:nil];
+                               [self setValue:nil forKey:@"drawerMessage"];
+                       }
                }
-
+               
        } else if (paramTabIsVisible) {
                [paramRemoveButton setEnabled:[parameterTable selectedRow] != -1];
                [parameterTable reloadData];
 
        if (![processor processStrings:[XMLUtils getDataWithEncodingFromString:[workset xmlCode]] withXslt:[XMLUtils getDataWithEncodingFromString:[workset xsltCode]] andParameters:params]) {
 
-               [drawerMessageField setStringValue:[NSString stringWithFormat:@"Error on line %d of your %@ code:\n%@", [processor errorLine], ([processor errorSource] == XSLT_ERROR_SOURCE_XML ? @"XML" : @"XSLT"), [processor errorMessage]]];
+               [self setValue:[NSString stringWithFormat:@"Error on line %d of your %@ code:\n%@", [processor errorLine], ([processor errorSource] == XSLT_ERROR_SOURCE_XML ? @"XML" : @"XSLT"), [processor errorMessage]] forKey:@"drawerMessage"];
 
                NSBeep();
                [errorDrawer openOnEdge:NSMinYEdge];
                [workset setResultEncoding:[processor resultEncoding]];
                resultDirty = YES;
                [self autoSave];
-               [errorDrawer close];
+//             [errorDrawer close];
                [self selectTabById:RESULT];
                [processingTimeField setStringValue:[NSString stringWithFormat:@"Time: %ldms", processingTime]];
        }
@@ -1083,24 +1089,36 @@ objectValueForTableColumn:(NSTableColumn *)aTableColumn
 
 }
 
-- (IBAction)renderFo:(id)sender {
+- (void)xslfoRenderThread {
+
+       NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+       
+       XSL_FO_Renderer *xfr = [[[XSL_FO_Renderer alloc] init] autorelease];
+       xslfoRendererResultData = [xfr render:[workset result]];
 
-       XSL_FO_Renderer *xfr = [[XSL_FO_Renderer alloc] init];
+       [pool release];
+       [xslfoRendererLock unlockWithCondition:2];
+       
+}
 
-       NSData *resultData = [xfr render:[workset result]];
 
-       [xfr release];
+- (IBAction)renderFo:(id)sender {
 
-       if (!resultData) {
+       xslfoRendererLock = [[[NSConditionLock alloc] initWithCondition:1] autorelease];
+       [NSThread detachNewThreadSelector:@selector(xslfoRenderThread) toTarget:self withObject:nil];
+       [xslfoRendererLock lockWhenCondition:2];
+       [xslfoRendererLock unlock];
+       
+       if (!xslfoRendererResultData) {
                NSLog(@"Unable to render, NULL result");
                return;
        }
        
-       [resultData retain];
+       [xslfoRendererResultData retain];
        [pdfData release];
-       pdfData = resultData;
+       pdfData = xslfoRendererResultData;
        
-       NSImage *pdfImage = [[[NSImage alloc] initWithData:resultData] autorelease];
+       NSImage *pdfImage = [[[NSImage alloc] initWithData:xslfoRendererResultData] autorelease];
        [pdfImage setBackgroundColor:[NSColor whiteColor]];
        [pdfImage recache];
        [pdfImage setCacheMode:NSImageCacheNever];
@@ -1234,13 +1252,23 @@ objectValueForTableColumn:(NSTableColumn *)aTableColumn
                unsavedChangesPanelController = [[UnsavedChangesPanelController alloc] initWithWindowNibName:@"UnsavedChanges"];
 //             NSLog(@"init unsaved changes panel controller: %@", unsavedChangesPanelController);
        }
-
        
+}
 
-       
+
+- (void)canCloseDocumentWithDelegate:(id)delegate shouldCloseSelector:(SEL)shouldCloseSelector contextInfo:(void *)contextInfo {
+
+       [uiUpdateTimer invalidate];
+       [super canCloseDocumentWithDelegate:delegate shouldCloseSelector:shouldCloseSelector contextInfo:contextInfo];
 }
 
 
+
+
+
+
+
+
 - (IBAction)showErrorLocation:(id)sender {
 
        XMLTextView *textView;
diff --git a/Saxon/saxon.jar b/Saxon/saxon.jar
deleted file mode 100755 (executable)
index 1840546..0000000
Binary files a/Saxon/saxon.jar and /dev/null differ
diff --git a/Saxon/saxon8-sql.jar b/Saxon/saxon8-sql.jar
new file mode 100755 (executable)
index 0000000..c1cda88
Binary files /dev/null and b/Saxon/saxon8-sql.jar differ
diff --git a/Saxon/saxon8.jar b/Saxon/saxon8.jar
new file mode 100755 (executable)
index 0000000..1d7b3d0
Binary files /dev/null and b/Saxon/saxon8.jar differ
diff --git a/TestXSLT.pbproj/liyanage.mode1 b/TestXSLT.pbproj/liyanage.mode1
new file mode 100644 (file)
index 0000000..11ab046
--- /dev/null
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>ActivePerspectiveName</key>
+       <string>Project</string>
+       <key>AllowedModules</key>
+       <array>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>n</string>
+                       <key>Module</key>
+                       <string>PBXSmartGroupTreeModule</string>
+                       <key>Name</key>
+                       <string>Groups and Files Outline View</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>n</string>
+                       <key>Module</key>
+                       <string>PBXNavigatorGroup</string>
+                       <key>Name</key>
+                       <string>Editor</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>n</string>
+                       <key>Module</key>
+                       <string>XCTaskListModule</string>
+                       <key>Name</key>
+                       <string>Task List</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>n</string>
+                       <key>Module</key>
+                       <string>XCDetailModule</string>
+                       <key>Name</key>
+                       <string>File and Smart Group Detail Viewer</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>1</string>
+                       <key>Module</key>
+                       <string>PBXBuildResultsModule</string>
+                       <key>Name</key>
+                       <string>Detailed Build Results Viewer</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>1</string>
+                       <key>Module</key>
+                       <string>PBXProjectFindModule</string>
+                       <key>Name</key>
+                       <string>Project Batch Find Tool</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>n</string>
+                       <key>Module</key>
+                       <string>PBXRunSessionModule</string>
+                       <key>Name</key>
+                       <string>Run Log</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>n</string>
+                       <key>Module</key>
+                       <string>PBXBookmarksModule</string>
+                       <key>Name</key>
+                       <string>Bookmarks Tool</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>n</string>
+                       <key>Module</key>
+                       <string>PBXClassBrowserModule</string>
+                       <key>Name</key>
+                       <string>Class Browser</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>n</string>
+                       <key>Module</key>
+                       <string>PBXCVSModule</string>
+                       <key>Name</key>
+                       <string>Source Code Control Tool</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>n</string>
+                       <key>Module</key>
+                       <string>PBXDebugBreakpointsModule</string>
+                       <key>Name</key>
+                       <string>Debug Breakpoints Tool</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>n</string>
+                       <key>Module</key>
+                       <string>XCDockableInspector</string>
+                       <key>Name</key>
+                       <string>Inspector</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>n</string>
+                       <key>Module</key>
+                       <string>PBXOpenQuicklyModule</string>
+                       <key>Name</key>
+                       <string>Open Quickly Tool</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>1</string>
+                       <key>Module</key>
+                       <string>PBXDebugSessionModule</string>
+                       <key>Name</key>
+                       <string>Debugger</string>
+               </dict>
+               <dict>
+                       <key>BundleLoadPath</key>
+                       <string></string>
+                       <key>MaxInstances</key>
+                       <string>1</string>
+                       <key>Module</key>
+                       <string>PBXDebugCLIModule</string>
+                       <key>Name</key>
+                       <string>Debug Console</string>
+               </dict>
+       </array>
+       <key>Description</key>
+       <string>This workspace mimics that found in Xcode 1.2, with various minor improvements such as including attached editors to the build results window and the project find window.</string>
+       <key>DockingSystemVisible</key>
+       <false/>
+       <key>Extension</key>
+       <string>mode1</string>
+       <key>FirstTimeWindowDisplayed</key>
+       <false/>
+       <key>Identifier</key>
+       <string>com.apple.perspectives.project.mode1</string>
+       <key>MajorVersion</key>
+       <integer>31</integer>
+       <key>MinorVersion</key>
+       <integer>0</integer>
+       <key>Name</key>
+       <string>Default Workspace</string>
+       <key>Notifications</key>
+       <array>
+               <dict>
+                       <key>XCObserverAutoDisconnectKey</key>
+                       <true/>
+                       <key>XCObserverDefintionKey</key>
+                       <dict/>
+                       <key>XCObserverFactoryKey</key>
+                       <string>XCPerspectivesSpecificationIdentifier</string>
+                       <key>XCObserverGUIDKey</key>
+                       <string>XCObserverProjectIdentifier</string>
+                       <key>XCObserverNotificationKey</key>
+                       <string>PBXStatusBuildStateMessageNotification</string>
+                       <key>XCObserverTargetKey</key>
+                       <string>XCMainBuildResultsModuleGUID</string>
+                       <key>XCObserverTriggerKey</key>
+                       <string>awakenModuleWithObserver:</string>
+                       <key>XCObserverValidationKey</key>
+                       <dict/>
+               </dict>
+       </array>
+       <key>OpenEditors</key>
+       <array/>
+       <key>Perspectives</key>
+       <array>
+               <dict>
+                       <key>ChosenToolbarItems</key>
+                       <array>
+                               <string>active-target-popup</string>
+                               <string>action</string>
+                               <string>NSToolbarFlexibleSpaceItem</string>
+                               <string>buildOrClean</string>
+                               <string>build-and-runOrDebug</string>
+                               <string>build-and-debug</string>
+                               <string>com.apple.ide.PBXToolbarStopButton</string>
+                               <string>get-info</string>
+                               <string>toggle-editor</string>
+                               <string>NSToolbarFlexibleSpaceItem</string>
+                               <string>com.apple.pbx.toolbar.searchfield</string>
+                       </array>
+                       <key>ControllerClassBaseName</key>
+                       <string></string>
+                       <key>IconName</key>
+                       <string>WindowOfProject</string>
+                       <key>Identifier</key>
+                       <string>perspective.project</string>
+                       <key>IsVertical</key>
+                       <false/>
+                       <key>Layout</key>
+                       <array>
+                               <dict>
+                                       <key>BecomeActive</key>
+                                       <true/>
+                                       <key>ContentConfiguration</key>
+                                       <dict>
+                                               <key>PBXBottomSmartGroupGIDs</key>
+                                               <array>
+                                                       <string>1C37FBAC04509CD000000102</string>
+                                                       <string>1C37FAAC04509CD000000102</string>
+                                                       <string>1C08E77C0454961000C914BD</string>
+                                                       <string>1C37FABC05509CD000000102</string>
+                                                       <string>1C37FABC05539CD112110102</string>
+                                                       <string>E2644B35053B69B200211256</string>
+                                                       <string>1C37FABC04509CD000100104</string>
+                                                       <string>1CC0EA4004350EF90044410B</string>
+                                                       <string>1CC0EA4004350EF90041110B</string>
+                                               </array>
+                                               <key>PBXProjectModuleGUID</key>
+                                               <string>1CE0B1FE06471DED0097A5F4</string>
+                                               <key>PBXProjectModuleLabel</key>
+                                               <string>Files</string>
+                                               <key>PBXProjectStructureProvided</key>
+                                               <string>yes</string>
+                                               <key>PBXSmartGroupTreeModuleColumnData</key>
+                                               <dict>
+                                                       <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+                                                       <array>
+                                                               <real>220</real>
+                                                       </array>
+                                                       <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+                                                       <array>
+                                                               <string>MainColumn</string>
+                                                       </array>
+                                               </dict>
+                                               <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+                                               <dict>
+                                                       <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+                                                       <array>
+                                                               <string>2A37F4AAFDCFA73011CA2CEA</string>
+                                                               <string>2A37F4ABFDCFA73011CA2CEA</string>
+                                                               <string>F7641DA602FFB2FA01A8A905</string>
+                                                               <string>2A37F4B8FDCFA73011CA2CEA</string>
+                                                               <string>1C37FBAC04509CD000000102</string>
+                                                               <string>1C37FABC05509CD000000102</string>
+                                                       </array>
+                                                       <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+                                                       <array>
+                                                               <array>
+                                                                       <integer>44</integer>
+                                                                       <integer>37</integer>
+                                                                       <integer>0</integer>
+                                                               </array>
+                                                       </array>
+                                                       <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+                                                       <string>{{0, 496}, {220, 562}}</string>
+                                               </dict>
+                                               <key>PBXTopSmartGroupGIDs</key>
+                                               <array/>
+                                       </dict>
+                                       <key>GeometryConfiguration</key>
+                                       <dict>
+                                               <key>Frame</key>
+                                               <string>{{0, 0}, {237, 580}}</string>
+                                               <key>GroupTreeTableConfiguration</key>
+                                               <array>
+                                                       <string>MainColumn</string>
+                                                       <real>220</real>
+                                               </array>
+                                               <key>RubberWindowFrame</key>
+                                               <string>97 202 1221 622 0 0 1440 878 </string>
+                                       </dict>
+                                       <key>Module</key>
+                                       <string>PBXSmartGroupTreeModule</string>
+                                       <key>Proportion</key>
+                                       <string>237pt</string>
+                               </dict>
+                               <dict>
+                                       <key>Dock</key>
+                                       <array>
+                                               <dict>
+                                                       <key>ContentConfiguration</key>
+                                                       <dict>
+                                                               <key>PBXProjectModuleGUID</key>
+                                                               <string>1CE0B20306471E060097A5F4</string>
+                                                               <key>PBXProjectModuleLabel</key>
+                                                               <string>MyDocument.m</string>
+                                                               <key>PBXSplitModuleInNavigatorKey</key>
+                                                               <dict>
+                                                                       <key>Split0</key>
+                                                                       <dict>
+                                                                               <key>PBXProjectModuleGUID</key>
+                                                                               <string>1CE0B20406471E060097A5F4</string>
+                                                                               <key>PBXProjectModuleLabel</key>
+                                                                               <string>MyDocument.m</string>
+                                                                               <key>bookmark</key>
+                                                                               <string>1B5790F907C94E4F00CDF2BB</string>
+                                                                               <key>history</key>
+                                                                               <array>
+                                                                                       <string>1B896C1507B17E7A00ECFC52</string>
+                                                                                       <string>1B896C7307B18B5000ECFC52</string>
+                                                                                       <string>1B7EA28C07B2D82300B881B7</string>
+                                                                                       <string>1B7EA28D07B2D82300B881B7</string>
+                                                                                       <string>1B7EA28E07B2D82300B881B7</string>
+                                                                                       <string>1B7EA28F07B2D82300B881B7</string>
+                                                                                       <string>1B64BBA707C5E1EC0014535B</string>
+                                                                                       <string>1B64BBA807C5E1EC0014535B</string>
+                                                                                       <string>1B64BC4B07C6A3070014535B</string>
+                                                                                       <string>1B64BC8707C6AB200014535B</string>
+                                                                                       <string>1B64BC8807C6AB200014535B</string>
+                                                                                       <string>1BF5369007C6AFFD00D6EBDB</string>
+                                                                                       <string>1BF536C707C7479E00D6EBDB</string>
+                                                                                       <string>1BF536CD07C747ED00D6EBDB</string>
+                                                                                       <string>1BF5370207C74C8200D6EBDB</string>
+                                                                                       <string>1BF5370307C74C8200D6EBDB</string>
+                                                                                       <string>1BF5370B07C74CDD00D6EBDB</string>
+                                                                                       <string>1BF5371B07C74F6000D6EBDB</string>
+                                                                                       <string>1BF5372507C7508600D6EBDB</string>
+                                                                                       <string>1BF5372607C7508600D6EBDB</string>
+                                                                                       <string>1BF5372E07C750B100D6EBDB</string>
+                                                                                       <string>1BF5374907C753E100D6EBDB</string>
+                                                                                       <string>1BF5374A07C753E100D6EBDB</string>
+                                                                                       <string>1BF5374B07C753E100D6EBDB</string>
+                                                                                       <string>1BF5374C07C753E100D6EBDB</string>
+                                                                                       <string>1BF5374D07C753E100D6EBDB</string>
+                                                                                       <string>1BF5374E07C753E100D6EBDB</string>
+                                                                                       <string>1BF5376007C7590200D6EBDB</string>
+                                                                                       <string>1B5790B107C949F100CDF2BB</string>
+                                                                               </array>
+                                                                               <key>prevStack</key>
+                                                                               <array>
+                                                                                       <string>1B896BFE07B17C8300ECFC52</string>
+                                                                                       <string>1B896BFF07B17C8300ECFC52</string>
+                                                                                       <string>1B896C1607B17E7A00ECFC52</string>
+                                                                                       <string>1B896C3707B1829F00ECFC52</string>
+                                                                                       <string>1B896C3C07B1835000ECFC52</string>
+                                                                                       <string>1B896C3E07B1835000ECFC52</string>
+                                                                                       <string>1B896C6D07B1899100ECFC52</string>
+                                                                                       <string>1B896C7507B18B5000ECFC52</string>
+                                                                                       <string>1B7EA29207B2D82300B881B7</string>
+                                                                                       <string>1B7EA29307B2D82300B881B7</string>
+                                                                                       <string>1B7EA29507B2D82300B881B7</string>
+                                                                                       <string>1B7EA29607B2D82300B881B7</string>
+                                                                                       <string>1B7EA29707B2D82300B881B7</string>
+                                                                                       <string>1BE3507607C5D1FF00D05BE4</string>
+                                                                                       <string>1B64BBAA07C5E1EC0014535B</string>
+                                                                                       <string>1B64BBC107C5E67B0014535B</string>
+                                                                                       <string>1B64BBD807C5ED600014535B</string>
+                                                                                       <string>1B64BC1107C686420014535B</string>
+                                                                                       <string>1B64BC2607C688D70014535B</string>
+                                                                                       <string>1B64BC5407C6A3070014535B</string>
+                                                                                       <string>1B64BC8207C6A8DC0014535B</string>
+                                                                                       <string>1B64BC8B07C6AB200014535B</string>
+                                                                                       <string>1B64BC9807C6AC590014535B</string>
+                                                                                       <string>1B64BC9A07C6AC590014535B</string>
+                                                                                       <string>1BF536FC07C74BC400D6EBDB</string>
+                                                                                       <string>1BF5375107C753E100D6EBDB</string>
+                                                                                       <string>1BF5375207C753E100D6EBDB</string>
+                                                                                       <string>1BF5375707C753E100D6EBDB</string>
+                                                                                       <string>1BF5375807C753E100D6EBDB</string>
+                                                                               </array>
+                                                                       </dict>
+                                                                       <key>SplitCount</key>
+                                                                       <string>1</string>
+                                                               </dict>
+                                                               <key>StatusBarVisibility</key>
+                                                               <true/>
+                                                       </dict>
+                                                       <key>GeometryConfiguration</key>
+                                                       <dict>
+                                                               <key>Frame</key>
+                                                               <string>{{0, 0}, {978, 438}}</string>
+                                                               <key>RubberWindowFrame</key>
+                                                               <string>97 202 1221 622 0 0 1440 878 </string>
+                                                       </dict>
+                                                       <key>Module</key>
+                                                       <string>PBXNavigatorGroup</string>
+                                                       <key>Proportion</key>
+                                                       <string>438pt</string>
+                                               </dict>
+                                               <dict>
+                                                       <key>ContentConfiguration</key>
+                                                       <dict>
+                                                               <key>PBXProjectModuleGUID</key>
+                                                               <string>1CE0B20506471E060097A5F4</string>
+                                                               <key>PBXProjectModuleLabel</key>
+                                                               <string>Detail</string>
+                                                       </dict>
+                                                       <key>GeometryConfiguration</key>
+                                                       <dict>
+                                                               <key>Frame</key>
+                                                               <string>{{0, 445}, {978, 135}}</string>
+                                                               <key>RubberWindowFrame</key>
+                                                               <string>97 202 1221 622 0 0 1440 878 </string>
+                                                       </dict>
+                                                       <key>Module</key>
+                                                       <string>XCDetailModule</string>
+                                                       <key>Proportion</key>
+                                                       <string>135pt</string>
+                                               </dict>
+                                       </array>
+                                       <key>Proportion</key>
+                                       <string>978pt</string>
+                               </dict>
+                       </array>
+                       <key>Name</key>
+                       <string>Project</string>
+                       <key>ServiceClasses</key>
+                       <array>
+                               <string>XCModuleDock</string>
+                               <string>PBXSmartGroupTreeModule</string>
+                               <string>XCModuleDock</string>
+                               <string>PBXNavigatorGroup</string>
+                               <string>XCDetailModule</string>
+                       </array>
+                       <key>TableOfContents</key>
+                       <array>
+                               <string>1B5790DF07C94A8E00CDF2BB</string>
+                               <string>1CE0B1FE06471DED0097A5F4</string>
+                               <string>1B5790E007C94A8E00CDF2BB</string>
+                               <string>1CE0B20306471E060097A5F4</string>
+                               <string>1CE0B20506471E060097A5F4</string>
+                       </array>
+                       <key>ToolbarConfiguration</key>
+                       <string>xcode.toolbar.config.default</string>
+               </dict>
+       </array>
+       <key>PerspectivesBarVisible</key>
+       <false/>
+       <key>StatusbarIsVisible</key>
+       <true/>
+       <key>TimeStamp</key>
+       <real>130633295.14923693</real>
+       <key>ToolbarDisplayMode</key>
+       <integer>1</integer>
+       <key>ToolbarIsVisible</key>
+       <true/>
+       <key>ToolbarSizeMode</key>
+       <integer>1</integer>
+       <key>Type</key>
+       <string>Perspectives</string>
+       <key>UpdateMessage</key>
+       <string></string>
+       <key>WindowJustification</key>
+       <integer>5</integer>
+       <key>WindowOrderList</key>
+       <array>
+               <string>/Users/liyanage/cvs/entropy/TestXSLT/TestXSLT.pbproj</string>
+               <string>1C0AD2B3069F1EA900FABCE6</string>
+               <string>1B5790E707C94AAF00CDF2BB</string>
+       </array>
+       <key>WindowString</key>
+       <string>97 202 1221 622 0 0 1440 878 </string>
+       <key>WindowTools</key>
+       <array>
+               <dict>
+                       <key>FirstTimeWindowDisplayed</key>
+                       <false/>
+                       <key>Identifier</key>
+                       <string>windowTool.build</string>
+                       <key>Layout</key>
+                       <array>
+                               <dict>
+                                       <key>Dock</key>
+                                       <array>
+                                               <dict>
+                                                       <key>ContentConfiguration</key>
+                                                       <dict>
+                                                               <key>PBXProjectModuleGUID</key>
+                                                               <string>1CD0528F0623707200166675</string>
+                                                               <key>PBXProjectModuleLabel</key>
+                                                               <string>MyDocument.m</string>
+                                                               <key>PBXSplitModuleInNavigatorKey</key>
+                                                               <dict>
+                                                                       <key>Split0</key>
+                                                                       <dict>
+                                                                               <key>PBXProjectModuleGUID</key>
+                                                                               <string>1CD052900623707200166675</string>
+                                                                               <key>PBXProjectModuleLabel</key>
+                                                                               <string>MyDocument.m</string>
+                                                                               <key>bookmark</key>
+                                                                               <string>1B5790FA07C94E4F00CDF2BB</string>
+                                                                               <key>history</key>
+                                                                               <array>
+                                                                                       <string>1B5790B207C949F100CDF2BB</string>
+                                                                               </array>
+                                                                       </dict>
+                                                                       <key>SplitCount</key>
+                                                                       <string>1</string>
+                                                               </dict>
+                                                               <key>StatusBarVisibility</key>
+                                                               <true/>
+                                                       </dict>
+                                                       <key>GeometryConfiguration</key>
+                                                       <dict>
+                                                               <key>Frame</key>
+                                                               <string>{{0, 0}, {748, 0}}</string>
+                                                               <key>RubberWindowFrame</key>
+                                                               <string>520 369 748 487 0 0 1440 878 </string>
+                                                       </dict>
+                                                       <key>Module</key>
+                                                       <string>PBXNavigatorGroup</string>
+                                                       <key>Proportion</key>
+                                                       <string>0pt</string>
+                                               </dict>
+                                               <dict>
+                                                       <key>BecomeActive</key>
+                                                       <true/>
+                                                       <key>ContentConfiguration</key>
+                                                       <dict>
+                                                               <key>PBXProjectModuleGUID</key>
+                                                               <string>XCMainBuildResultsModuleGUID</string>
+                                                               <key>PBXProjectModuleLabel</key>
+                                                               <string>Build</string>
+                                                               <key>XCBuildResultsTrigger_Collapse</key>
+                                                               <integer>1021</integer>
+                                                               <key>XCBuildResultsTrigger_Open</key>
+                                                               <integer>1010</integer>
+                                                       </dict>
+                                                       <key>GeometryConfiguration</key>
+                                                       <dict>
+                                                               <key>Frame</key>
+                                                               <string>{{0, 7}, {748, 438}}</string>
+                                                               <key>RubberWindowFrame</key>
+                                                               <string>520 369 748 487 0 0 1440 878 </string>
+                                                       </dict>
+                                                       <key>Module</key>
+                                                       <string>PBXBuildResultsModule</string>
+                                                       <key>Proportion</key>
+                                                       <string>438pt</string>
+                                               </dict>
+                                       </array>
+                                       <key>Proportion</key>
+                                       <string>445pt</string>
+                               </dict>
+                       </array>
+                       <key>Name</key>
+                       <string>Build Results</string>
+                       <key>ServiceClasses</key>
+                       <array>
+                               <string>PBXBuildResultsModule</string>
+                       </array>
+                       <key>StatusbarIsVisible</key>
+                       <true/>
+                       <key>TableOfContents</key>
+                       <array>
+                               <string>1B5790E707C94AAF00CDF2BB</string>
+                               <string>1B5790E807C94AAF00CDF2BB</string>
+                               <string>1CD0528F0623707200166675</string>
+                               <string>XCMainBuildResultsModuleGUID</string>
+                       </array>
+                       <key>ToolbarConfiguration</key>
+                       <string>xcode.toolbar.config.build</string>
+                       <key>WindowString</key>
+                       <string>520 369 748 487 0 0 1440 878 </string>
+                       <key>WindowToolGUID</key>
+                       <string>1B5790E707C94AAF00CDF2BB</string>
+                       <key>WindowToolIsVisible</key>
+                       <true/>
+               </dict>
+               <dict>
+                       <key>FirstTimeWindowDisplayed</key>
+                       <false/>
+                       <key>Identifier</key>
+                       <string>windowTool.debugger</string>
+                       <key>Layout</key>
+                       <array>
+                               <dict>
+                                       <key>Dock</key>
+                                       <array>
+                                               <dict>
+                                                       <key>ContentConfiguration</key>
+                                                       <dict>
+                                                               <key>Debugger</key>
+                                                               <dict>
+                                                                       <key>HorizontalSplitView</key>
+                                                                       <dict>
+                                                                               <key>_collapsingFrameDimension</key>
+                                                                               <real>0.0</real>
+                                                                               <key>_indexOfCollapsedView</key>
+                                                                               <integer>0</integer>
+                                                                               <key>_percentageOfCollapsedView</key>
+                                                                               <real>0.0</real>
+                                                                               <key>isCollapsed</key>
+                                                                               <string>yes</string>
+                                                                               <key>sizes</key>
+                                                                               <array>
+                                                                                       <string>{{0, 0}, {284, 164}}</string>
+                                                                                       <string>{{284, 0}, {410, 164}}</string>
+                                                                               </array>
+                                                                       </dict>
+                                                                       <key>VerticalSplitView</key>
+                                                                       <dict>
+                                                                               <key>_collapsingFrameDimension</key>
+                                                                               <real>0.0</real>
+                                                                               <key>_indexOfCollapsedView</key>
+                                                                               <integer>0</integer>
+                                                                               <key>_percentageOfCollapsedView</key>
+                                                                               <real>0.0</real>
+                                                                               <key>isCollapsed</key>
+                                                                               <string>yes</string>
+                                                                               <key>sizes</key>
+                                                                               <array>
+                                                                                       <string>{{0, 0}, {694, 164}}</string>
+                                                                                       <string>{{0, 164}, {694, 216}}</string>
+                                                                               </array>
+                                                                       </dict>
+                                                               </dict>
+                                                               <key>LauncherConfigVersion</key>
+                                                               <string>8</string>
+                                                               <key>PBXProjectModuleGUID</key>
+                                                               <string>1C162984064C10D400B95A72</string>
+                                                               <key>PBXProjectModuleLabel</key>
+                                                               <string>Debug - GLUTExamples (Underwater)</string>
+                                                       </dict>
+                                                       <key>GeometryConfiguration</key>
+                                                       <dict>
+                                                               <key>DebugConsoleDrawerSize</key>
+                                                               <string>{100, 120}</string>
+                                                               <key>DebugConsoleVisible</key>
+                                                               <string>None</string>
+                                                               <key>DebugConsoleWindowFrame</key>
+                                                               <string>{{200, 200}, {500, 300}}</string>
+                                                               <key>DebugSTDIOWindowFrame</key>
+                                                               <string>{{200, 200}, {500, 300}}</string>
+                                                               <key>Frame</key>
+                                                               <string>{{0, 0}, {694, 380}}</string>
+                                                               <key>RubberWindowFrame</key>
+                                                               <string>586 388 694 422 0 0 1440 878 </string>
+                                                       </dict>
+                                                       <key>Module</key>
+                                                       <string>PBXDebugSessionModule</string>
+                                                       <key>Proportion</key>
+                                                       <string>380pt</string>
+                                               </dict>
+                                       </array>
+                                       <key>Proportion</key>
+                                       <string>380pt</string>
+                               </dict>
+                       </array>
+                       <key>Name</key>
+                       <string>Debugger</string>
+                       <key>ServiceClasses</key>
+                       <array>
+                               <string>PBXDebugSessionModule</string>
+                       </array>
+                       <key>StatusbarIsVisible</key>
+                       <true/>
+                       <key>TableOfContents</key>
+                       <array>
+                               <string>1CD10A99069EF8BA00B06720</string>
+                               <string>1BF5366507C6ACEA00D6EBDB</string>
+                               <string>1C162984064C10D400B95A72</string>
+                               <string>1BF5366607C6ACEA00D6EBDB</string>
+                       </array>
+                       <key>ToolbarConfiguration</key>
+                       <string>xcode.toolbar.config.debug</string>
+                       <key>WindowString</key>
+                       <string>586 388 694 422 0 0 1440 878 </string>
+                       <key>WindowToolGUID</key>
+                       <string>1CD10A99069EF8BA00B06720</string>
+                       <key>WindowToolIsVisible</key>
+                       <false/>
+               </dict>
+               <dict>
+                       <key>Identifier</key>
+                       <string>windowTool.find</string>
+                       <key>Layout</key>
+                       <array>
+                               <dict>
+                                       <key>Dock</key>
+                                       <array>
+                                               <dict>
+                                                       <key>Dock</key>
+                                                       <array>
+                                                               <dict>
+                                                                       <key>ContentConfiguration</key>
+                                                                       <dict>
+                                                                               <key>PBXProjectModuleGUID</key>
+                                                                               <string>1CDD528C0622207200134675</string>
+                                                                               <key>PBXProjectModuleLabel</key>
+                                                                               <string>&lt;No Editor&gt;</string>
+                                                                               <key>PBXSplitModuleInNavigatorKey</key>
+                                                                               <dict>
+                                                                                       <key>Split0</key>
+                                                                                       <dict>
+                                                                                               <key>PBXProjectModuleGUID</key>
+                                                                                               <string>1CD0528D0623707200166675</string>
+                                                                                       </dict>
+                                                                                       <key>SplitCount</key>
+                                                                                       <string>1</string>
+                                                                               </dict>
+                                                                               <key>StatusBarVisibility</key>
+                                                                               <true/>
+                                                                       </dict>
+                                                                       <key>GeometryConfiguration</key>
+                                                                       <dict>
+                                                                               <key>Frame</key>
+                                                                               <string>{{0, 0}, {781, 167}}</string>
+                                                                               <key>RubberWindowFrame</key>
+                                                                               <string>62 385 781 470 0 0 1440 878 </string>
+                                                                       </dict>
+                                                                       <key>Module</key>
+                                                                       <string>PBXNavigatorGroup</string>
+                                                                       <key>Proportion</key>
+                                                                       <string>781pt</string>
+                                                               </dict>
+                                                       </array>
+                                                       <key>Proportion</key>
+                                                       <string>50%</string>
+                                               </dict>
+                                               <dict>
+                                                       <key>BecomeActive</key>
+                                                       <true/>
+                                                       <key>ContentConfiguration</key>
+                                                       <dict>
+                                                               <key>PBXProjectModuleGUID</key>
+                                                               <string>1CD0528E0623707200166675</string>
+                                                               <key>PBXProjectModuleLabel</key>
+                                                               <string>Project Find</string>
+                                                       </dict>
+                                                       <key>GeometryConfiguration</key>
+                                                       <dict>
+                                                               <key>Frame</key>
+                                                               <string>{{8, 0}, {773, 254}}</string>
+                                                               <key>RubberWindowFrame</key>
+                                                               <string>62 385 781 470 0 0 1440 878 </string>
+                                                       </dict>
+                                                       <key>Module</key>
+                                                       <string>PBXProjectFindModule</string>
+                                                       <key>Proportion</key>
+                                                       <string>50%</string>
+                                               </dict>
+                                       </array>
+                                       <key>Proportion</key>
+                                       <string>428pt</string>
+                               </dict>
+                       </array>
+                       <key>Name</key>
+                       <string>Project Find</string>
+                       <key>ServiceClasses</key>
+                       <array>
+                               <string>PBXProjectFindModule</string>
+                       </array>
+                       <key>StatusbarIsVisible</key>
+                       <true/>
+                       <key>TableOfContents</key>
+                       <array>
+                               <string>1C530D57069F1CE1000CFCEE</string>
+                               <string>1C530D58069F1CE1000CFCEE</string>
+                               <string>1C530D59069F1CE1000CFCEE</string>
+                               <string>1CDD528C0622207200134675</string>
+                               <string>1C530D5A069F1CE1000CFCEE</string>
+                               <string>1CE0B1FE06471DED0097A5F4</string>
+                               <string>1CD0528E0623707200166675</string>
+                       </array>
+                       <key>WindowString</key>
+                       <string>62 385 781 470 0 0 1440 878 </string>
+                       <key>WindowToolGUID</key>
+                       <string>1C530D57069F1CE1000CFCEE</string>
+                       <key>WindowToolIsVisible</key>
+                       <false/>
+               </dict>
+               <dict>
+                       <key>Identifier</key>
+                       <string>MENUSEPARATOR</string>
+               </dict>
+               <dict>
+                       <key>FirstTimeWindowDisplayed</key>
+                       <false/>
+                       <key>Identifier</key>
+                       <string>windowTool.debuggerConsole</string>
+                       <key>Layout</key>
+                       <array>
+                               <dict>
+                                       <key>Dock</key>
+                                       <array>
+                                               <dict>
+                                                       <key>BecomeActive</key>
+                                                       <true/>
+                                                       <key>ContentConfiguration</key>
+                                                       <dict>
+                                                               <key>PBXProjectModuleGUID</key>
+                                                               <string>1C78EAAC065D492600B07095</string>
+                                                               <key>PBXProjectModuleLabel</key>
+                                                               <string>Debugger Console</string>
+                                                       </dict>
+                                                       <key>GeometryConfiguration</key>
+                                                       <dict>
+                                                               <key>Frame</key>
+                                                               <string>{{0, 0}, {653, 354}}</string>
+                                                               <key>RubberWindowFrame</key>
+                                                               <string>548 37 653 396 0 0 1440 878 </string>
+                                                       </dict>
+                                                       <key>Module</key>
+                                                       <string>PBXDebugCLIModule</string>
+                                                       <key>Proportion</key>
+                                                       <string>354pt</string>
+                                               </dict>
+                                       </array>
+                                       <key>Proportion</key>
+                                       <string>354pt</string>
+                               </dict>
+                       </array>
+                       <key>Name</key>
+                       <string>Debugger Console</string>
+                       <key>ServiceClasses</key>
+                       <array>
+                               <string>PBXDebugCLIModule</string>
+                       </array>
+                       <key>StatusbarIsVisible</key>
+                       <true/>
+                       <key>TableOfContents</key>
+                       <array>
+                               <string>1B896CAF07B1908200ECFC52</string>
+                               <string>1B7EA2A507B2D8DE00B881B7</string>
+                               <string>1C78EAAC065D492600B07095</string>
+                       </array>
+                       <key>WindowString</key>
+                       <string>548 37 653 396 0 0 1440 878 </string>
+                       <key>WindowToolGUID</key>
+                       <string>1B896CAF07B1908200ECFC52</string>
+                       <key>WindowToolIsVisible</key>
+                       <true/>
+               </dict>
+               <dict>
+                       <key>FirstTimeWindowDisplayed</key>
+                       <false/>
+                       <key>Identifier</key>
+                       <string>windowTool.run</string>
+                       <key>Layout</key>
+                       <array>
+                               <dict>
+                                       <key>Dock</key>
+                                       <array>
+                                               <dict>
+                                                       <key>ContentConfiguration</key>
+                                                       <dict>
+                                                               <key>LauncherConfigVersion</key>
+                                                               <string>3</string>
+                                                               <key>PBXProjectModuleGUID</key>
+                                                               <string>1CD0528B0623707200166675</string>
+                                                               <key>PBXProjectModuleLabel</key>
+                                                               <string>Run</string>
+                                                               <key>Runner</key>
+                                                               <dict>
+                                                                       <key>HorizontalSplitView</key>
+                                                                       <dict>
+                                                                               <key>_collapsingFrameDimension</key>
+                                                                               <real>0.0</real>
+                                                                               <key>_indexOfCollapsedView</key>
+                                                                               <integer>0</integer>
+                                                                               <key>_percentageOfCollapsedView</key>
+                                                                               <real>0.0</real>
+                                                                               <key>isCollapsed</key>
+                                                                               <string>yes</string>
+                                                                               <key>sizes</key>
+                                                                               <array>
+                                                                                       <string>{{0, 0}, {493, 167}}</string>
+                                                                                       <string>{{0, 176}, {493, 267}}</string>
+                                                                               </array>
+                                                                       </dict>
+                                                                       <key>VerticalSplitView</key>
+                                                                       <dict>
+                                                                               <key>_collapsingFrameDimension</key>
+                                                                               <real>0.0</real>
+                                                                               <key>_indexOfCollapsedView</key>
+                                                                               <integer>0</integer>
+                                                                               <key>_percentageOfCollapsedView</key>
+                                                                               <real>0.0</real>
+                                                                               <key>isCollapsed</key>
+                                                                               <string>yes</string>
+                                                                               <key>sizes</key>
+                                                                               <array>
+                                                                                       <string>{{0, 0}, {405, 443}}</string>
+                                                                                       <string>{{414, 0}, {514, 443}}</string>
+                                                                               </array>
+                                                                       </dict>
+                                                               </dict>
+                                                       </dict>
+                                                       <key>GeometryConfiguration</key>
+                                                       <dict>
+                                                               <key>Frame</key>
+                                                               <string>{{0, 0}, {793, 214}}</string>
+                                                               <key>RubberWindowFrame</key>
+                                                               <string>576 622 793 256 0 0 1440 878 </string>
+                                                       </dict>
+                                                       <key>Module</key>
+                                                       <string>PBXRunSessionModule</string>
+                                                       <key>Proportion</key>
+                                                       <string>214pt</string>
+                                               </dict>
+                                       </array>
+                                       <key>Proportion</key>
+                                       <string>214pt</string>
+                               </dict>
+                       </array>
+                       <key>Name</key>
+                       <string>Run Log</string>
+                       <key>ServiceClasses</key>
+                       <array>
+                               <string>PBXRunSessionModule</string>
+                       </array>
+                       <key>StatusbarIsVisible</key>
+                       <true/>
+                       <key>TableOfContents</key>
+                       <array>
+                               <string>1C0AD2B3069F1EA900FABCE6</string>
+                               <string>1B5790E107C94A8E00CDF2BB</string>
+                               <string>1CD0528B0623707200166675</string>
+                               <string>1B5790E207C94A8E00CDF2BB</string>
+                       </array>
+                       <key>ToolbarConfiguration</key>
+                       <string>xcode.toolbar.config.run</string>
+                       <key>WindowString</key>
+                       <string>576 622 793 256 0 0 1440 878 </string>
+                       <key>WindowToolGUID</key>
+                       <string>1C0AD2B3069F1EA900FABCE6</string>
+                       <key>WindowToolIsVisible</key>
+                       <true/>
+               </dict>
+               <dict>
+                       <key>Identifier</key>
+                       <string>windowTool.scm</string>
+                       <key>Layout</key>
+                       <array>
+                               <dict>
+                                       <key>Dock</key>
+                                       <array>
+                                               <dict>
+                                                       <key>ContentConfiguration</key>
+                                                       <dict>
+                                                               <key>PBXProjectModuleGUID</key>
+                                                               <string>1C78EAB2065D492600B07095</string>
+                                                               <key>PBXProjectModuleLabel</key>
+                                                               <string>&lt;No Editor&gt;</string>
+                                                               <key>PBXSplitModuleInNavigatorKey</key>
+                                                               <dict>
+                                                                       <key>Split0</key>
+                                                                       <dict>
+                                                                               <key>PBXProjectModuleGUID</key>
+                                                                               <string>1C78EAB3065D492600B07095</string>
+                                                                       </dict>
+                                                                       <key>SplitCount</key>
+                                                                       <string>1</string>
+                                                               </dict>
+                                                               <key>StatusBarVisibility</key>
+                                                               <true/>
+                                                       </dict>
+                                                       <key>GeometryConfiguration</key>
+                                                       <dict>
+                                                               <key>Frame</key>
+                                                               <string>{{0, 0}, {452, 0}}</string>
+                                                               <key>RubberWindowFrame</key>
+                                                               <string>743 379 452 308 0 0 1280 1002 </string>
+                                                       </dict>
+                                                       <key>Module</key>
+                                                       <string>PBXNavigatorGroup</string>
+                                                       <key>Proportion</key>
+                                                       <string>0pt</string>
+                                               </dict>
+                                               <dict>
+                                                       <key>BecomeActive</key>
+                                                       <true/>
+                                                       <key>ContentConfiguration</key>
+                                                       <dict>
+                                                               <key>PBXProjectModuleGUID</key>
+                                                               <string>1CD052920623707200166675</string>
+                                                               <key>PBXProjectModuleLabel</key>
+                                                               <string>SCM</string>
+                                                       </dict>
+                                                       <key>GeometryConfiguration</key>
+                                                       <dict>
+                                                               <key>ConsoleFrame</key>
+                                                               <string>{{0, 259}, {452, 0}}</string>
+                                                               <key>Frame</key>
+                                                               <string>{{0, 7}, {452, 259}}</string>
+                                                               <key>RubberWindowFrame</key>
+                                                               <string>743 379 452 308 0 0 1280 1002 </string>
+                                                               <key>TableConfiguration</key>
+                                                               <array>
+                                                                       <string>Status</string>
+                                                                       <real>30</real>
+                                                                       <string>FileName</string>
+                                                                       <real>199</real>
+                                                                       <string>Path</string>
+                                                                       <real>197.09500122070312</real>
+                                                               </array>
+                                                               <key>TableFrame</key>
+                                                               <string>{{0, 0}, {452, 250}}</string>
+                                                       </dict>
+                                                       <key>Module</key>
+                                                       <string>PBXCVSModule</string>
+                                                       <key>Proportion</key>
+                                                       <string>259pt</string>
+                                               </dict>
+                                       </array>
+                                       <key>Proportion</key>
+                                       <string>266pt</string>
+                               </dict>
+                       </array>
+                       <key>Name</key>
+                       <string>SCM</string>
+                       <key>ServiceClasses</key>
+                       <array>
+                               <string>PBXCVSModule</string>
+                       </array>
+                       <key>StatusbarIsVisible</key>
+                       <true/>
+                       <key>TableOfContents</key>
+                       <array>
+                               <string>1C78EAB4065D492600B07095</string>
+                               <string>1C78EAB5065D492600B07095</string>
+                               <string>1C78EAB2065D492600B07095</string>
+                               <string>1CD052920623707200166675</string>
+                       </array>
+                       <key>WindowString</key>
+                       <string>743 379 452 308 0 0 1280 1002 </string>
+               </dict>
+               <dict>
+                       <key>Identifier</key>
+                       <string>windowTool.breakpoints</string>
+                       <key>Layout</key>
+                       <array>
+                               <dict>
+                                       <key>Dock</key>
+                                       <array>
+                                               <dict>
+                                                       <key>BecomeActive</key>
+                                                       <true/>
+                                                       <key>ContentConfiguration</key>
+                                                       <dict>
+                                                               <key>PBXProjectModuleGUID</key>
+                                                               <string>1CD052930623707200166675</string>
+                                                               <key>PBXProjectModuleLabel</key>
+                                                               <string>Breakpoints</string>
+                                                       </dict>
+                                                       <key>GeometryConfiguration</key>
+                                                       <dict>
+                                                               <key>BreakpointsTreeTableConfiguration</key>
+                                                               <array>
+                                                                       <string>enabledColumn</string>
+                                                                       <real>16</real>
+                                                                       <string>breakpointColumn</string>
+                                                                       <real>201.5830078125</real>
+                                                               </array>
+                                                               <key>Frame</key>
+                                                               <string>{{0, 0}, {240, 195}}</string>
+                                                               <key>RubberWindowFrame</key>
+                                                               <string>342 421 240 216 0 0 1440 878 </string>
+                                                       </dict>
+                                                       <key>Module</key>
+                                                       <string>PBXDebugBreakpointsModule</string>
+                                                       <key>Proportion</key>
+                                                       <string>195pt</string>
+                                               </dict>
+                                       </array>
+                                       <key>Proportion</key>
+                                       <string>195pt</string>
+                               </dict>
+                       </array>
+                       <key>Name</key>
+                       <string>Breakpoints</string>
+                       <key>ServiceClasses</key>
+                       <array>
+                               <string>PBXDebugBreakpointsModule</string>
+                       </array>
+                       <key>StatusbarIsVisible</key>
+                       <false/>
+                       <key>TableOfContents</key>
+                       <array>
+                               <string>1C0AD2AD069F1E9B00FABCE6</string>
+                               <string>1C0AD2AE069F1E9B00FABCE6</string>
+                               <string>1CD052930623707200166675</string>
+                       </array>
+                       <key>WindowString</key>
+                       <string>342 421 240 216 0 0 1440 878 </string>
+                       <key>WindowToolGUID</key>
+                       <string>1C0AD2AD069F1E9B00FABCE6</string>
+                       <key>WindowToolIsVisible</key>
+                       <false/>
+               </dict>
+               <dict>
+                       <key>Identifier</key>
+                       <string>windowTool.bookmarks</string>
+                       <key>Layout</key>
+      &nbs