Thread: [Jsxe-cvs] SF.net SVN: jsxe: [1054] trunk/jsxe (Page 2)
Status: Inactive
Brought to you by:
ian_lewis
From: <ian...@us...> - 2006-07-21 20:50:59
|
Revision: 1054 Author: ian_lewis Date: 2006-07-21 13:50:44 -0700 (Fri, 21 Jul 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1054&view=rev Log Message: ----------- Added support for building an executable using jSmooth Modified Paths: -------------- trunk/jsxe/build.xml Added Paths: ----------- trunk/jsxe/buildlib/ trunk/jsxe/buildlib/jsmoothgen-ant.jar trunk/jsxe/buildlib/skeletons/ trunk/jsxe/buildlib/skeletons/windowed-wrapper/ trunk/jsxe/buildlib/skeletons/windowed-wrapper/description.skel trunk/jsxe/buildlib/skeletons/windowed-wrapper/jwrap.exe trunk/jsxe/jsXe.jsmooth Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-07-21 19:40:51 UTC (rev 1053) +++ trunk/jsxe/build.xml 2006-07-21 20:50:44 UTC (rev 1054) @@ -9,10 +9,12 @@ You should check out jsxe to make a structure like this. This ensures that when compiling jsXe the other views will be compiled as well. - jsxe module => jsxe/ - treeview module => jsxe/jars/treeview - sourceview module => jsxe/jars/sourceview - jsxe web module => web/ + jsxe module => jsxe/ + treeview module (optional) => jsxe/jars/treeview + sourceview module (optional) => jsxe/jars/sourceview + jsxe web module (optional) => web/ + jsmooth ant task (optional) => buildlib/ + --> <project basedir="." default="usage" name="jsXe"> @@ -52,6 +54,11 @@ <property name="minor.version" value="5"/> <property name="beta.version" value="1"/> <property name="bugfix.version" value="0"/> + + <property name="buildlib.dir" value="${root.dir}/buildlib"/> + <property name="jsmooth.project" value="${root.dir}/jsXe.jsmooth"/> + <property name="jsmooth.jar" value="${buildlib.dir}/jsmoothgen-ant.jar"/> + <!-- Human Readable --> <property name="app.version" value="0.5 pre1"/> <!-- Used in filenames --> @@ -82,6 +89,7 @@ <available file="${plugin.dir}/sourceview/build.xml" property="sourceview.avail"/> <available file="${root.dir}/../web" property="web.avail"/> <available file="${plugin.dir}" property="plugin.avail"/> + <available file="${jsmooth.jar}" property="jsmooth.avail"/> <echo message="${app.name} ${app.version}"/> <echo message="----------------------------------------------------------"/> @@ -307,8 +315,20 @@ <include name="**/*"/> </fileset> </copy> + + <!-- build the windows executable --> + <antcall target="build-exe"/> + <zip basedir="${build.dir}" excludes="*.class" includes="${app.name}-${app_version}-bin/**" zipfile="${build.dir}/${app.name}-${app_version}-bin.zip"/> </target> + <target name="build-exe" if="jsmooth.avail"> + <taskdef name="jsmoothgen" + classname="net.charabia.jsmoothgen.ant.JSmoothGen" + classpath="${jsmooth.jar}"/> + + <jsmoothgen project="${jsmooth.project}" skeletonroot="${buildlib.dir}/skeletons"/> + <copy todir="${distbin.dir}" file="${build.dir}/jsXe.exe"/> + </target> <!-- }}} --> <!-- {{{ ============ Generates the source distribution ================ --> <target depends="prepare-build, prepare-src, doc" name="src" description="Build source distribution"> Added: trunk/jsxe/buildlib/jsmoothgen-ant.jar =================================================================== (Binary files differ) Property changes on: trunk/jsxe/buildlib/jsmoothgen-ant.jar ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Added: trunk/jsxe/buildlib/skeletons/windowed-wrapper/description.skel =================================================================== --- trunk/jsxe/buildlib/skeletons/windowed-wrapper/description.skel (rev 0) +++ trunk/jsxe/buildlib/skeletons/windowed-wrapper/description.skel 2006-07-21 20:50:44 UTC (rev 1054) @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<jsmoothskeleton> +<debug>false</debug> +<description><![CDATA[ +This skeleton wraps <b>GUI applications</b>.<ul> +<li>No console I/O is displayed +<li>If no Java VM is found, it is able to display a configurable URL (typically to a java download page). +</ul> +Arguments can be passed to the application (either use the JSmooth default argument mechanism, or create a shortcut with arguments).]]> +</description> +<executableName>jwrap.exe</executableName> +<resourceCategory>JAVA</resourceCategory> +<resourceJarId>102</resourceJarId> +<resourcePropsId>103</resourcePropsId> +<shortName>Windowed Wrapper</shortName> +<skeletonProperties> +<description>When no JVM is found in the target computer, the user is prompted with the message defined below. Then, the default browser is launched with the URL defined here.</description> +<idName>Message</idName> +<label>Message</label> +<type>textarea</type> +<value>Java has not been found on your computer. Do you want to download it?</value> +</skeletonProperties> +<skeletonProperties> +<description>If the user selects YES to the message prompted above, the default web browser is launched with this URL.</description> +<idName>URL</idName> +<label>URL</label> +<type>string</type> +<value>http://www.java.com</value> +</skeletonProperties> +<skeletonProperties> +<description>The default behaviour is to launch the java application in a different (detached) process. If you want to force the wrapper to launch the Java application in the same process than the exe, than select this option.</description> +<idName>SingleProcess</idName> +<label>Launch java app in the exe process</label> +<type>boolean</type> +<value>0</value> +</skeletonProperties> +<skeletonProperties> +<description>Enable the jsmooth debug console.</description> +<idName>Debug</idName> +<label>Debug console</label> +<type>boolean</type> +<value>0</value> +</skeletonProperties> +</jsmoothskeleton> Property changes on: trunk/jsxe/buildlib/skeletons/windowed-wrapper/description.skel ___________________________________________________________________ Name: svn:executable + * Added: trunk/jsxe/buildlib/skeletons/windowed-wrapper/jwrap.exe =================================================================== (Binary files differ) Property changes on: trunk/jsxe/buildlib/skeletons/windowed-wrapper/jwrap.exe ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Added: trunk/jsxe/jsXe.jsmooth =================================================================== --- trunk/jsxe/jsXe.jsmooth (rev 0) +++ trunk/jsxe/jsXe.jsmooth 2006-07-21 20:50:44 UTC (rev 1054) @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<jsmoothproject> +<JVMSearchPath>registry</JVMSearchPath> +<JVMSearchPath>javahome</JVMSearchPath> +<JVMSearchPath>jrepath</JVMSearchPath> +<JVMSearchPath>jdkpath</JVMSearchPath> +<JVMSearchPath>exepath</JVMSearchPath> +<JVMSearchPath>jview</JVMSearchPath> +<classPath>build\jsXe.jar</classPath> +<embeddedJar>false</embeddedJar> +<executableName>build\jsXe.exe</executableName> +<iconLocation>src\net\sourceforge\jsxe\icons\jsxe.jpg</iconLocation> +<initialMemoryHeap>16777216</initialMemoryHeap> +<mainClassName>net.sourceforge.jsxe.jsXe</mainClassName> +<maximumMemoryHeap>67108864</maximumMemoryHeap> +<maximumVersion></maximumVersion> +<minimumVersion>1.4.2</minimumVersion> +<skeletonName>Windowed Wrapper</skeletonName> +<skeletonProperties> +<key>Message</key> +<value>Java has not been found on your computer. Do you want to download it?</value> +</skeletonProperties> +<skeletonProperties> +<key>URL</key> +<value>http://www.java.com</value> +</skeletonProperties> +<skeletonProperties> +<key>SingleProcess</key> +<value>0</value> +</skeletonProperties> +<skeletonProperties> +<key>Debug</key> +<value>0</value> +</skeletonProperties> +</jsmoothproject> Property changes on: trunk/jsxe/jsXe.jsmooth ___________________________________________________________________ Name: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-07-21 21:01:27
|
Revision: 1055 Author: ian_lewis Date: 2006-07-21 14:01:15 -0700 (Fri, 21 Jul 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1055&view=rev Log Message: ----------- updating SVN to allow building without having to download jars Modified Paths: -------------- trunk/jsxe/jsXe.jsmooth Added Paths: ----------- trunk/jsxe/lib/resolver.jar trunk/jsxe/lib/xercesImpl.jar trunk/jsxe/lib/xml-apis.jar Modified: trunk/jsxe/jsXe.jsmooth =================================================================== --- trunk/jsxe/jsXe.jsmooth 2006-07-21 20:50:44 UTC (rev 1054) +++ trunk/jsxe/jsXe.jsmooth 2006-07-21 21:01:15 UTC (rev 1055) @@ -11,6 +11,10 @@ <executableName>build\jsXe.exe</executableName> <iconLocation>src\net\sourceforge\jsxe\icons\jsxe.jpg</iconLocation> <initialMemoryHeap>16777216</initialMemoryHeap> +<javaProperties> +<name>java.endorsed.dirs</name> +<value>lib</value> +</javaProperties> <mainClassName>net.sourceforge.jsxe.jsXe</mainClassName> <maximumMemoryHeap>67108864</maximumMemoryHeap> <maximumVersion></maximumVersion> Added: trunk/jsxe/lib/resolver.jar =================================================================== (Binary files differ) Property changes on: trunk/jsxe/lib/resolver.jar ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Added: trunk/jsxe/lib/xercesImpl.jar =================================================================== (Binary files differ) Property changes on: trunk/jsxe/lib/xercesImpl.jar ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Added: trunk/jsxe/lib/xml-apis.jar =================================================================== (Binary files differ) Property changes on: trunk/jsxe/lib/xml-apis.jar ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-07-26 20:50:51
|
Revision: 1065 Author: ian_lewis Date: 2006-07-26 08:29:40 -0700 (Wed, 26 Jul 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1065&view=rev Log Message: ----------- updated the find and findnext actions to use the right messages Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/INSTALL trunk/jsxe/messages/messages trunk/jsxe/src/net/sourceforge/jsxe/action/FindAction.java trunk/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-07-25 20:06:34 UTC (rev 1064) +++ trunk/jsxe/Changelog 2006-07-26 15:29:40 UTC (rev 1065) @@ -1,3 +1,8 @@ +07/26/2006 Ian Lewis <Ian...@me...> + + * Updated the find and findnext actions to use proper messages + labels. + 07/24/2006 Ian Lewis <Ian...@me...> * Fixed a bug with the source view for new users that caused a Modified: trunk/jsxe/INSTALL =================================================================== --- trunk/jsxe/INSTALL 2006-07-25 20:06:34 UTC (rev 1064) +++ trunk/jsxe/INSTALL 2006-07-26 15:29:40 UTC (rev 1065) @@ -25,10 +25,12 @@ BUILDING jsXe FROM SOURCE This is pretty simple. You will need jakarta ANT and a Sun's javac compiler -(others might work, I just haven't tested them). Also, in order for jsXe to -compile properly you will need Apache Xerces installed. +(others might work, I just haven't tested them). You will need the optional +ant tasks installed as well. On some Linux distributions this may be a separate +package. Also, in order for jsXe to compile properly you will need Apache +Xerces installed. -You should have 1.4.2 or better of java and you will need version 2.8.0 of +You will need version 1.4.2 or better of java and you will need version 2.8.0 of Xerces (A Xerces 2.8.0 binary distribution is not included in the CVS source tree. You can aquire it at at http://xml.apache.org/) The jar files xercesImpl.jar, xml-apis.jar, and resolver.jar from the 2.8.0 distribution are @@ -36,7 +38,7 @@ (where you installed jsXe's source) or in the jre/lib/ext or lib/ext in your JVM. These jar files will be included with jsXe distributions for convenience. -Simply typing 'ant' or 'ant -p' in jsXe's root directory will give you the +Simply typing 'ant' in jsXe's root directory will give you the available targets to use with ant. To just simply compile jsXe and the default views to a jar file you can type 'ant compile'. To build a binary distribution you will need to run the 'bin' target in the build.xml file. I do this by simply Modified: trunk/jsxe/messages/messages =================================================================== --- trunk/jsxe/messages/messages 2006-07-25 20:06:34 UTC (rev 1064) +++ trunk/jsxe/messages/messages 2006-07-26 15:29:40 UTC (rev 1065) @@ -23,7 +23,7 @@ common.cut=Cut common.copy=Copy common.paste=Paste -common.find=Find... +common.find=Find common.findnext=Find Next common.ctrl=Ctrl @@ -140,7 +140,10 @@ Tools.Menu=Tools Help.Menu=Help -#{{{ File Menu Items + +#}}} + +#{{{ Action Labels new-file.label=New open-file.label=Open... File.Recent=Recent Files @@ -152,13 +155,16 @@ close-file.label=Close close-all.label=Close All exit.label=Exit -#}}} +find.label=Find... +findnext.label=Find Next + general-options.label=Global Options... document-options.label=Document Options... plugin-manager.label=Plugin Manager... validation-errors.label=Validation Errors... about-jsxe.label=About jsXe... + #}}} #{{{ Messages Modified: trunk/jsxe/src/net/sourceforge/jsxe/action/FindAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/FindAction.java 2006-07-25 20:06:34 UTC (rev 1064) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/FindAction.java 2006-07-26 15:29:40 UTC (rev 1065) @@ -60,11 +60,6 @@ super("find"); }//}}} - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.find"); - }//}}} - //{{{ invoke() public void invoke(TabbedView view, ActionEvent evt) { /* Modified: trunk/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java 2006-07-25 20:06:34 UTC (rev 1064) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java 2006-07-26 15:29:40 UTC (rev 1065) @@ -60,11 +60,6 @@ super("findnext"); }//}}} - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.find"); - }//}}} - //{{{ invoke() public void invoke(TabbedView view, ActionEvent evt) { /* Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-07-25 20:06:34 UTC (rev 1064) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-07-26 15:29:40 UTC (rev 1065) @@ -511,6 +511,7 @@ set.addAction(new CopyAction()); set.addAction(new PasteAction()); set.addAction(new FindAction()); + set.addAction(new FindNextAction()); ActionManager.addActionSet(set); //}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-07-28 21:56:06
|
Revision: 1064 Author: ian_lewis Date: 2006-07-25 13:06:34 -0700 (Tue, 25 Jul 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1064&view=rev Log Message: ----------- added support for the read only attribute Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/INSTALL trunk/jsxe/NEWS trunk/jsxe/build.xml Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-07-24 21:24:27 UTC (rev 1063) +++ trunk/jsxe/Changelog 2006-07-25 20:06:34 UTC (rev 1064) @@ -1,3 +1,9 @@ +07/24/2006 Ian Lewis <Ian...@me...> + + * Fixed a bug with the source view for new users that caused a + NullPointerException to be thrown when opening the source view. + * Added a wrapper exe for windows users using jSmooth + 07/21/2006 Ian Lewis <Ian...@me...> * Fixed bug 1509575. Files that are reloaded should always be loaded in a Modified: trunk/jsxe/INSTALL =================================================================== --- trunk/jsxe/INSTALL 2006-07-24 21:24:27 UTC (rev 1063) +++ trunk/jsxe/INSTALL 2006-07-25 20:06:34 UTC (rev 1064) @@ -51,23 +51,19 @@ RUNNING jsXe You should have 1.4.2 or better of java and you need 2.6.2 of Xerces. -To run jsXe you should just run the java interpreter on the jsXe.jar file. There -is a shell script or batch file included in the source tree for this purpose. - ./bin/jsXe.sh +*Windows* -or +Just run jsXe using the jsXe.exe in the install directory. The exe will +detect your version of Java and run jsXe using that version. - ./bin/jsXe.bat +*Unix* -The batch program should be run in with the jsXe root directory of as the -working directory. So you can create a shortcut to run jsXe by specifying the -batch file as the program to run and jsXe's root directory as the working -directory. +To run jsXe you should just run the java interpreter on the jsXe.jar file. There +is a shell script or batch file included in the source tree for this purpose. -Ex. -Target: "C:\Program Files\jsXe\bin\jsXe.bat" -Start in: "C:\Program Files\jsXe\" +./bin/jsXe.sh -You can also edit the JSXEDIR variable in the batch program to be the directory -where you installed jsXe and then the 'Start in' directory can be anywhere. +The shell script should be run in with the jsXe root directory of as the +working directory. You can also edit the JSXEDIR variable in the shell script +to be the directory where you installed jsXe. Modified: trunk/jsxe/NEWS =================================================================== --- trunk/jsxe/NEWS 2006-07-24 21:24:27 UTC (rev 1063) +++ trunk/jsxe/NEWS 2006-07-25 20:06:34 UTC (rev 1064) @@ -1,5 +1,13 @@ -07/25/2006 version 0.5 pre1 +07/24/2006 version 0.5 pre2 + * Fixed a bug with the source view for new users that caused a + NullPointerException to be thrown when opening the source view. + * Added a wrapper exe for windows users using jSmooth + * Fixed bug 1509575. Files that are reloaded should always be loaded in a + view that can accep the reloaded file. + +07/20/2006 version 0.5 pre1 + * Added support for keyboard shortcuts that can be set by the user via the Global Options Dialog. * Split the options into two dialogs. The Global Options, which are Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-07-24 21:24:27 UTC (rev 1063) +++ trunk/jsxe/build.xml 2006-07-25 20:06:34 UTC (rev 1064) @@ -52,7 +52,7 @@ <property name="main.class" value="net.sourceforge.jsxe.jsXe"/> <property name="major.version" value="0"/> <property name="minor.version" value="5"/> - <property name="beta.version" value="1"/> + <property name="beta.version" value="2"/> <property name="bugfix.version" value="0"/> <property name="buildlib.dir" value="${root.dir}/buildlib"/> @@ -67,9 +67,9 @@ </condition> <!-- Human Readable --> - <property name="app.version" value="0.5 pre1"/> + <property name="app.version" value="0.5 pre2"/> <!-- Used in filenames --> - <property name="app_version" value="05_pre1"/> + <property name="app_version" value="05_pre2"/> <!--<property name="app.version" value="${major.version}.${minor.version} beta"/>--> <!--<property name="app_version" value="${major.version}_${minor.version}beta"/>--> <property name="distbin.dir" value="${build.dir}/${app.name}-${app_version}-bin"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-05 20:24:20
|
Revision: 1105 Author: ian_lewis Date: 2006-08-05 13:24:09 -0700 (Sat, 05 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1105&view=rev Log Message: ----------- Added core support for Undo/Redo Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/build.xml trunk/jsxe/messages/messages trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java trunk/jsxe/src/net/sourceforge/jsxe/properties Added Paths: ----------- trunk/jsxe/src/net/sourceforge/jsxe/action/RedoAction.java trunk/jsxe/src/net/sourceforge/jsxe/action/UndoAction.java Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-04 19:17:41 UTC (rev 1104) +++ trunk/jsxe/Changelog 2006-08-05 20:24:09 UTC (rev 1105) @@ -1,3 +1,9 @@ +08/05/2006 Ian Lewis <Ian...@me...> + + * Added core support for Undo/Redo. Undo/Redo will temporarily be view + specific. Eventually it will be entirely part of core after the + new data model is complete. + 08/03/2006 Ian Lewis <Ian...@me...> * Added Russian translation thanks to Segrer. Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-08-04 19:17:41 UTC (rev 1104) +++ trunk/jsxe/build.xml 2006-08-05 20:24:09 UTC (rev 1105) @@ -459,4 +459,4 @@ <ant inheritAll="false" dir="${plugin.dir}/sourceview/" target="clean"/> </target>--> <!-- }}} --> -</project> +</project> \ No newline at end of file Modified: trunk/jsxe/messages/messages =================================================================== --- trunk/jsxe/messages/messages 2006-08-04 19:17:41 UTC (rev 1104) +++ trunk/jsxe/messages/messages 2006-08-05 20:24:09 UTC (rev 1105) @@ -25,6 +25,8 @@ common.paste=Paste common.find=Find common.findnext=Find Next +common.undo=Undo +common.redo=Redo common.ctrl=Ctrl common.alt=Alt Modified: trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java 2006-08-04 19:17:41 UTC (rev 1104) +++ trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java 2006-08-05 20:24:09 UTC (rev 1105) @@ -79,6 +79,8 @@ public static final String PASTE_SUFFIX = ".paste"; public static final String FIND_SUFFIX = ".find"; public static final String FIND_NEXT_SUFFIX = ".findnext"; + public static final String UNDO_SUFFIX = ".undo"; + public static final String REDO_SUFFIX = ".redo"; //}}} @@ -272,7 +274,9 @@ actionName.endsWith(COPY_SUFFIX) || actionName.endsWith(PASTE_SUFFIX) || actionName.endsWith(FIND_SUFFIX) || - actionName.endsWith(FIND_NEXT_SUFFIX)); + actionName.endsWith(FIND_NEXT_SUFFIX) || + actionName.endsWith(UNDO_SUFFIX) || + actionName.endsWith(REDO_SUFFIX)); }//}}} //{{{ Wrapper class Added: trunk/jsxe/src/net/sourceforge/jsxe/action/RedoAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/RedoAction.java (rev 0) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/RedoAction.java 2006-08-05 20:24:09 UTC (rev 1105) @@ -0,0 +1,77 @@ +/* +RedoAction.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2006 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.action; + +//{{{ imports + +//{{{ jsXe classes +import net.sourceforge.jsxe.jsXe; +import net.sourceforge.jsxe.JARClassLoader; +import net.sourceforge.jsxe.ActionManager; +import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.gui.TabbedView; +import net.sourceforge.jsxe.gui.Messages; +//}}} + +//{{{ Java classes +import java.io.IOException; +//}}} + +//{{{ AWT components +import java.awt.event.ActionEvent; +//}}} + +//}}} + +/** + * The redo action invokes a DocumentView specific action defined for redo. + * The action should be defined by the view as <i>viewname</i>.redo + * + * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) + * @version $Id$ + * @since jsXe 0.5 pre3 + */ +public class RedoAction extends LocalizedAction { + + //{{{ RedoAction constructor + public RedoAction() { + super("redo"); + }//}}} + + //{{{ getLabel() + public String getLabel() { + return Messages.getMessage("common.redo"); + }//}}} + + //{{{ invoke() + public void invoke(TabbedView view, ActionEvent evt) { + /* + invoke the action registered for the current DocumentView named + viewname.redo if there is one. + */ + ActionManager.invokeAction(jsXe.getPluginLoader().getPluginProperty(view.getDocumentView().getViewPlugin(), JARClassLoader.PLUGIN_NAME)+ActionManager.REDO_SUFFIX, evt); + }//}}} + +} Added: trunk/jsxe/src/net/sourceforge/jsxe/action/UndoAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/UndoAction.java (rev 0) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/UndoAction.java 2006-08-05 20:24:09 UTC (rev 1105) @@ -0,0 +1,77 @@ +/* +UndoAction.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2006 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.action; + +//{{{ imports + +//{{{ jsXe classes +import net.sourceforge.jsxe.jsXe; +import net.sourceforge.jsxe.JARClassLoader; +import net.sourceforge.jsxe.ActionManager; +import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.gui.TabbedView; +import net.sourceforge.jsxe.gui.Messages; +//}}} + +//{{{ Java classes +import java.io.IOException; +//}}} + +//{{{ AWT components +import java.awt.event.ActionEvent; +//}}} + +//}}} + +/** + * The undo action invokes a DocumentView specific action defined for undo. + * The action should be defined by the view as <i>viewname</i>.undo + * + * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) + * @version $Id$ + * @since jsXe 0.5 pre3 + */ +public class UndoAction extends LocalizedAction { + + //{{{ UndoAction constructor + public UndoAction() { + super("undo"); + }//}}} + + //{{{ getLabel() + public String getLabel() { + return Messages.getMessage("common.undo"); + }//}}} + + //{{{ invoke() + public void invoke(TabbedView view, ActionEvent evt) { + /* + invoke the action registered for the current DocumentView named + viewname.undo if there is one. + */ + ActionManager.invokeAction(jsXe.getPluginLoader().getPluginProperty(view.getDocumentView().getViewPlugin(), JARClassLoader.PLUGIN_NAME)+ActionManager.UNDO_SUFFIX, evt); + }//}}} + +} Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-04 19:17:41 UTC (rev 1104) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-05 20:24:09 UTC (rev 1105) @@ -512,6 +512,8 @@ set.addAction(new PasteAction()); set.addAction(new FindAction()); set.addAction(new FindNextAction()); + set.addAction(new UndoAction()); + set.addAction(new RedoAction()); ActionManager.addActionSet(set); //}}} Modified: trunk/jsxe/src/net/sourceforge/jsxe/properties =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-04 19:17:41 UTC (rev 1104) +++ trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-05 20:24:09 UTC (rev 1105) @@ -62,4 +62,6 @@ paste.shortcut=C+v find.shortcut=C+v findnext.shortcut=C+g +undo.shortcut=C+z +redo.shortcut=C+y #}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-08 00:07:54
|
Revision: 1110 Author: ian_lewis Date: 2006-08-07 17:07:37 -0700 (Mon, 07 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1110&view=rev Log Message: ----------- Added some Undo support Modified Paths: -------------- trunk/jsxe/AUTHORS trunk/jsxe/Changelog trunk/jsxe/messages/messages trunk/jsxe/src/net/sourceforge/jsxe/BufferHistory.java trunk/jsxe/src/net/sourceforge/jsxe/DocumentBuffer.java trunk/jsxe/src/net/sourceforge/jsxe/action/RedoAction.java trunk/jsxe/src/net/sourceforge/jsxe/action/UndoAction.java trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java trunk/jsxe/src/net/sourceforge/jsxe/msg/PropertyChanged.java trunk/jsxe/src/net/sourceforge/jsxe/properties Added Paths: ----------- trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/ trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/InsertEdit.java trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/RemoveEdit.java Modified: trunk/jsxe/AUTHORS =================================================================== --- trunk/jsxe/AUTHORS 2006-08-07 22:38:19 UTC (rev 1109) +++ trunk/jsxe/AUTHORS 2006-08-08 00:07:37 UTC (rev 1110) @@ -4,7 +4,7 @@ Translators: German (de) - Bianca Schoen Swedish (sv) - Patrik Johansson <pa...@it...> + Russian (ru) - Alexandr Gridnev <ale...@ya...> Past Contributers:\n\ Aaron Flatten <afl...@us...> - Bilel Remmache <rb...@us...> - SVM <svm...@us...> + Bilel Remmache <rb...@us...> \ No newline at end of file Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-07 22:38:19 UTC (rev 1109) +++ trunk/jsxe/Changelog 2006-08-08 00:07:37 UTC (rev 1110) @@ -1,3 +1,7 @@ +08/07/2006 Ian Lewis <Ian...@me...> + + * Added temporary support for undo to jsXe. + 08/05/2006 Ian Lewis <Ian...@me...> * Added core support for Undo/Redo. Undo/Redo will temporarily be view @@ -6,7 +10,7 @@ 08/03/2006 Ian Lewis <Ian...@me...> - * Added Russian translation thanks to Segrer. + * Added Russian translation thanks to Alexandr Gridnev. 07/26/2006 Ian Lewis <Ian...@me...> Modified: trunk/jsxe/messages/messages =================================================================== --- trunk/jsxe/messages/messages 2006-08-07 22:38:19 UTC (rev 1109) +++ trunk/jsxe/messages/messages 2006-08-08 00:07:37 UTC (rev 1110) @@ -283,8 +283,7 @@ \ \ \ \ Swedish (sv) - Patrik Johansson <pa...@it...>\n\n\ Past Contributers:\n\ \ \ \ \ Aaron Flatten <afl...@us...>\n\ - \ \ \ \ Bilel Remmache <rb...@us...>\n\ - \ \ \ \ SVM <svm...@us...>\n\n\ + \ \ \ \ Bilel Remmache <rb...@us...>\n\n\ Homepage: http://jsxe.sourceforge.net/ #}}} Modified: trunk/jsxe/src/net/sourceforge/jsxe/BufferHistory.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/BufferHistory.java 2006-08-07 22:38:19 UTC (rev 1109) +++ trunk/jsxe/src/net/sourceforge/jsxe/BufferHistory.java 2006-08-08 00:07:37 UTC (rev 1110) @@ -239,7 +239,7 @@ // Enumeration propertyItr = props.keys(); // while (propertyItr.hasMoreElements()) { // String key = propertyItr.nextElement().toString(); - // if (!m_excludeKeys.contains(key)) { + // if (m_includeKeys.contains(key)) { // String value = props.getProperty(key); // out.write("<property name=\""); // out.write(key); @@ -304,7 +304,7 @@ Enumeration propertyItr = props.keys(); while (propertyItr.hasMoreElements()) { String key = propertyItr.nextElement().toString(); - if (!m_excludeKeys.contains(key)) { + if (m_includeKeys.contains(key)) { try { String value = props.getProperty(key); Element property = (Element)entryNode.appendChild(document.createElement("property")); @@ -453,7 +453,7 @@ propValue = attributes.getValue(i); } } - if (!m_excludeKeys.contains(propName) && propName != null && propValue != null) { + if (m_includeKeys.contains(propName) && propName != null && propValue != null) { m_m_properties.setProperty(propName, propValue); } } @@ -469,11 +469,16 @@ }//}}} private ArrayList m_history = new ArrayList(); - private static ArrayList m_excludeKeys; + private static ArrayList m_includeKeys; static { - m_excludeKeys = new ArrayList(); - m_excludeKeys.add(DocumentBuffer.LINE_SEPARATOR); + m_includeKeys = new ArrayList(); + m_includeKeys.add(DocumentBuffer.ENCODING); + m_includeKeys.add(DocumentBuffer.FORMAT_XML); + m_includeKeys.add(DocumentBuffer.WS_IN_ELEMENT_CONTENT); + m_includeKeys.add(DocumentBuffer.INDENT); + m_includeKeys.add(DocumentBuffer.IS_USING_SOFT_TABS); + m_includeKeys.add(DocumentBuffer.IS_VALIDATING); } //}}} Modified: trunk/jsxe/src/net/sourceforge/jsxe/DocumentBuffer.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/DocumentBuffer.java 2006-08-07 22:38:19 UTC (rev 1109) +++ trunk/jsxe/src/net/sourceforge/jsxe/DocumentBuffer.java 2006-08-08 00:07:37 UTC (rev 1110) @@ -803,5 +803,6 @@ private ArrayList m_listeners = new ArrayList(); private boolean m_dirty=false; private OptionPane m_optionPane; + //}}} } Modified: trunk/jsxe/src/net/sourceforge/jsxe/action/RedoAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/RedoAction.java 2006-08-07 22:38:19 UTC (rev 1109) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/RedoAction.java 2006-08-08 00:07:37 UTC (rev 1110) @@ -67,11 +67,7 @@ //{{{ invoke() public void invoke(TabbedView view, ActionEvent evt) { - /* - invoke the action registered for the current DocumentView named - viewname.redo if there is one. - */ - ActionManager.invokeAction(jsXe.getPluginLoader().getPluginProperty(view.getDocumentView().getViewPlugin(), JARClassLoader.PLUGIN_NAME)+ActionManager.REDO_SUFFIX, evt); + view.getDocumentBuffer().redo(); }//}}} } Modified: trunk/jsxe/src/net/sourceforge/jsxe/action/UndoAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/UndoAction.java 2006-08-07 22:38:19 UTC (rev 1109) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/UndoAction.java 2006-08-08 00:07:37 UTC (rev 1110) @@ -46,8 +46,7 @@ //}}} /** - * The undo action invokes a DocumentView specific action defined for undo. - * The action should be defined by the view as <i>viewname</i>.undo + * The undo action invokes a undo on the current XMLDocument. * * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ @@ -67,11 +66,7 @@ //{{{ invoke() public void invoke(TabbedView view, ActionEvent evt) { - /* - invoke the action registered for the current DocumentView named - viewname.undo if there is one. - */ - ActionManager.invokeAction(jsXe.getPluginLoader().getPluginProperty(view.getDocumentView().getViewPlugin(), JARClassLoader.PLUGIN_NAME)+ActionManager.UNDO_SUFFIX, evt); + view.getDocumentBuffer().undo(); }//}}} } Modified: trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-08-07 22:38:19 UTC (rev 1109) +++ trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-08-08 00:07:37 UTC (rev 1110) @@ -25,17 +25,16 @@ package net.sourceforge.jsxe.dom; //{{{ imports -/* -All classes are listed explicitly so -it is easy to see which package it -belongs to. -*/ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; +import net.sourceforge.jsxe.EditBus; +import net.sourceforge.jsxe.msg.RedoEvent; +import net.sourceforge.jsxe.msg.UndoEvent; import net.sourceforge.jsxe.util.Log; import net.sourceforge.jsxe.util.MiscUtilities; import net.sourceforge.jsxe.dom.completion.*; +import net.sourceforge.jsxe.dom.undo.*; //}}} //{{{ DOM classes @@ -69,6 +68,8 @@ import java.net.URI; //}}} +import javax.swing.undo.*; + //}}} /** @@ -164,6 +165,7 @@ setURI(uri); setModel(reader); reader.close(); + m_undoManager.setLimit(jsXe.getIntegerProperty("undo.limit", 100)); }//}}} //{{{ XMLDocument constructor @@ -189,29 +191,135 @@ setModel(reader); reader.close(); + m_undoManager.setLimit(jsXe.getIntegerProperty("undo.limit", 100)); }//}}} - //{{{ checkWellFormedness() + //{{{ undo methods + + //{{{ addUndoableEdit() /** - * Checks the wellformedness of the document and throws appropriate - * exceptions based on the errors encountered during parsing. - * @return true if the document is well formed. - * @throws SAXParseException if there was a SAX error when parsing. - * @throws SAXException if there was a problem with the SAX parser. - * @throws ParserConfigurationException if the parser is not configured properly - * @throws IOException if there was a problem reading the document + * Allows views and editors to add additional undoable events. Generally + * the edits added by classes that are not this class, classes in this + * package, or a subclass will not be significant. + * + * @return true if the edit was added successfully */ - public boolean checkWellFormedness() throws SAXParseException, SAXException, ParserConfigurationException, IOException { - if (!m_parsedMode) { - parseDocument(); - m_adapterNode = new AdapterNode(this, m_document); - // m_adapterNode.addAdapterNodeListener(docAdapterListener); - // m_syncedWithContent = true; - m_parsedMode=true; + public boolean addUndoableEdit(UndoableEdit edit) { + if (insideCompoundEdit()) { + m_addedToCompoundEdits = true; + return ((CompoundEdit)m_compoundEdits.peek()).addEdit(edit); + } else { + return m_undoManager.addEdit(edit); } - return m_parsedMode; }//}}} + //{{{ beginCompoundEdit() + /** + * Begins a compound edit. A compound edit is an edit that will be + * undone/redone all at once. + */ + public void beginCompoundEdit() { + Log.log(Log.DEBUG, this, "begin compound edit"); + m_addedToCompoundEdits = false; + m_compoundEdits.push(new CompoundEdit()); + }//}}} + + //{{{ endCompoundEdit() + /** + * Ends a compound edit. A compound edit is an edit that will be + * undone/redone all at once. + */ + public void endCompoundEdit() { + if (!insideCompoundEdit()) { + Log.log(Log.WARNING, this, new Exception("Unbalanced begin/endCompoundEdit()")); + return; + } + Log.log(Log.DEBUG, this, "end compound edit"); + if (m_addedToCompoundEdits) { + CompoundEdit edit = (CompoundEdit)m_compoundEdits.pop(); + edit.end(); + m_undoManager.addEdit(edit); + } + }//}}} + + //{{{ insideCompoundEdit() + /** + * Gets whether the document is in a compound edit. A compound edit is an + * edit that will be undone/redone all at once. + */ + public boolean insideCompoundEdit() { + return m_compoundEdits.size() != 0; + }//}}} + + //{{{ undo() + + public void undo() { + if (insideCompoundEdit()) { + throw new InternalError("Unbalanced begin/endCompoundEdit()"); + } + try { + setFlag(UNDO_IN_PROGRESS, true); + m_undoManager.undo(); + EditBus.send(new UndoEvent(this)); + } catch (CannotUndoException e) { + Log.log(Log.WARNING, this, e); + } finally { + setFlag(UNDO_IN_PROGRESS, false); + } + }//}}} + + //{{{ redo() + + public void redo() { + if (insideCompoundEdit()) { + throw new InternalError("Unbalanced begin/endCompoundEdit()"); + } + try { + setFlag(UNDO_IN_PROGRESS, true); + m_undoManager.redo(); + EditBus.send(new RedoEvent(this)); + } catch (CannotRedoException e) { + Log.log(Log.WARNING, this, e); + } finally { + setFlag(UNDO_IN_PROGRESS, false); + } + }//}}} + + //}}} + + //{{{ Property methods + + //{{{ getProperties() + /** + * Gets all properties associated with this document. + * @return the document's properties + */ + public Properties getProperties() { + return props; + }//}}} + + //{{{ getProperty() + /** + * Gets a property for the key given. + * @param key the key to the properties list + * @return the value of the property for the given key. + */ + public String getProperty(String key) { + return props.getProperty(key); + }//}}} + + //{{{ getProperty() + /** + * Gets a property for the key given or returns the default value + * if there is no property for the given key. + * @param key the key to the properties list + * @param defaultValue the default value for the property requested + * @return the value of the property for the given key. + */ + public String getProperty(String key, String defaultValue) { + return props.getProperty(key, defaultValue); + }//}}} + //{{{ setProperty() /** * Sets a property of the XMLDocument @@ -270,6 +378,84 @@ return oldValue; }//}}} + //{{{ getBooleanProperty() method + /** + * Returns the value of a boolean property. This method is thread-safe. + * @param name The property name + */ + public boolean getBooleanProperty(String name) { + String obj = getProperty(name); + if (obj == null) { + return false; + } + + return Boolean.valueOf(obj).booleanValue(); + } //}}} + + //{{{ setBooleanProperty() method + /** + * Sets a boolean property. + * @param name The property name + * @param value The value + */ + public void setBooleanProperty(String name, boolean value) { + setProperty(name, Boolean.toString(value)); + } //}}} + + //{{{ getIntegerProperty() method + /** + * Returns the value of an integer property. This method is thread-safe. + * @param name The property name + */ + public int getIntegerProperty(String name, int defaultValue) { + + boolean defaultValueFlag; + String obj = getProperty(name); + + if (obj == null) { + return defaultValue; + } else { + try { + return Integer.parseInt(obj); + } catch (NumberFormatException e) { + return defaultValue; + } + } + } //}}} + + //{{{ setIntegerProperty() method + /** + * Sets an integer property. + * @param name The property name + * @param value The value + */ + public void setIntegerProperty(String name, int value) { + setProperty(name, Integer.toString(value)); + } //}}} + + //}}} + + //{{{ checkWellFormedness() + /** + * Checks the wellformedness of the document and throws appropriate + * exceptions based on the errors encountered during parsing. + * @return true if the document is well formed. + * @throws SAXParseException if there was a SAX error when parsing. + * @throws SAXException if there was a problem with the SAX parser. + * @throws ParserConfigurationException if the parser is not configured properly + * @throws IOException if there was a problem reading the document + */ + public boolean checkWellFormedness() throws SAXParseException, SAXException, ParserConfigurationException, IOException { + if (!m_parsedMode) { + parseDocument(); + m_adapterNode = new AdapterNode(this, m_document); + // m_adapterNode.addAdapterNodeListener(docAdapterListener); + // m_syncedWithContent = true; + m_parsedMode=true; + } + return m_parsedMode; + }//}}} + //{{{ getDocumentCopy() /** * Gets a copy of the underlying Document object. @@ -312,37 +498,6 @@ return docType; }//}}} - //{{{ getProperties() - /** - * Gets all properties associated with this document. - * @return the document's properties - */ - public Properties getProperties() { - return props; - }//}}} - - //{{{ getProperty() - /** - * Gets a property for the key given. - * @param key the key to the properties list - * @return the value of the property for the given key. - */ - public String getProperty(String key) { - return props.getProperty(key); - }//}}} - - //{{{ getProperty() - /** - * Gets a property for the key given or returns the default value - * if there is no property for the given key. - * @param key the key to the properties list - * @param defaultValue the default value for the property requested - * @return the value of the property for the given key. - */ - public String getProperty(String key, String defaultValue) { - return props.getProperty(key, defaultValue); - }//}}} - //{{{ getRootElementNode() /** * A convenience method that returns the root element node of the document. @@ -765,12 +920,14 @@ */ public void insertText(int offset, String text) throws IOException { if (text.length() > 0) { + Log.log(Log.DEBUG, this, "insertText: "+offset+": "+text); syncContentWithDOM(); m_content.insert(offset, text); m_parsedMode = false; m_adapterNode = null; - //may have some algorithm to determine the modified node(s) in the - //future + if (!getFlag(UNDO_IN_PROGRESS)) { + addUndoableEdit(new InsertEdit(this, offset, text)); + } fireStructureChanged(null); } }//}}} @@ -784,12 +941,14 @@ */ public void removeText(int offset, int length) throws IOException { if (length > 0) { - syncContentWithDOM(); + String text = getText(offset,length); + Log.log(Log.DEBUG, this, "removeText: "+offset+": "+text); m_content.remove(offset, length); m_parsedMode = false; m_adapterNode = null; - //may have some algorithm to determine the modified node(s) in the - //future + if (!getFlag(UNDO_IN_PROGRESS)) { + addUndoableEdit(new RemoveEdit(this, offset, text)); + } fireStructureChanged(null); } }//}}} @@ -1021,6 +1180,31 @@ //{{{ Private members + //{{{ Flags + + //{{{ setFlag() method + private void setFlag(int flag, boolean value) { + if(value) { + flags |= (1 << flag); + } else { + flags &= ~(1 << flag); + } + } //}}} + + //{{{ getFlag() method + private boolean getFlag(int flag) { + int mask = (1 << flag); + return (flags & mask) == mask; + } //}}} + + //{{{ Flag values + private static final int UNDO_IN_PROGRESS = 9; + //}}} + + private int flags; + + //}}} + //{{{ setDefaultProperties() private void setDefaultProperties() { @@ -2073,6 +2257,10 @@ */ private HashMap m_mappings; + private UndoManager m_undoManager = new UndoManager(); + private Stack m_compoundEdits = new Stack(); + private boolean m_addedToCompoundEdits = false; + // private XMLDocAdapterListener docAdapterListener = new XMLDocAdapterListener(); //}}} Added: trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/InsertEdit.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/InsertEdit.java (rev 0) +++ trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/InsertEdit.java 2006-08-08 00:07:37 UTC (rev 1110) @@ -0,0 +1,84 @@ +/* +InsertEdit.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2006 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.dom.undo; + +//{{{ imports + +//{{{ jsXe classes +import net.sourceforge.jsxe.dom.XMLDocument; +//}}} + +//{{{ Swing classes +import javax.swing.undo.*; +//}}} + +import java.io.IOException; + +//}}} + +/** + * An undoable edit sigifying an insert into an XMLDocument. + * + * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) + * @version $Id$ + * @see net.sourceforge.jsxe.dom.XMLDocument + */ +public class InsertEdit extends AbstractUndoableEdit { + + private XMLDocument m_document; + private String m_text; + private int m_offset; + + //{{{ InsertEdit constructor + + public InsertEdit(XMLDocument document, int offset, String text) { + m_document = document; + m_offset = offset; + m_text = text; + }//}}} + + //{{{ undo() + + public void undo() throws CannotUndoException { + super.undo(); + try { + m_document.removeText(m_offset, m_text.length()); + } catch (IOException ioe) { + throw new CannotUndoException(); + } + }//}}} + + //{{{ redo() + + public void redo() throws CannotRedoException { + super.redo(); + try { + m_document.insertText(m_offset, m_text); + } catch (IOException ioe) { + throw new CannotRedoException(); + } + }//}}} + +} \ No newline at end of file Property changes on: trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/InsertEdit.java ___________________________________________________________________ Name: svn:executable + * Added: trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/RemoveEdit.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/RemoveEdit.java (rev 0) +++ trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/RemoveEdit.java 2006-08-08 00:07:37 UTC (rev 1110) @@ -0,0 +1,84 @@ +/* +RemoveEdit.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2006 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.dom.undo; + +//{{{ imports + +//{{{ jsXe classes +import net.sourceforge.jsxe.dom.XMLDocument; +//}}} + +//{{{ Swing classes +import javax.swing.undo.*; +//}}} + +import java.io.IOException; + +//}}} + +/** + * An undoable edit sigifying a removal from an XMLDocument. + * + * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) + * @version $Id$ + * @see net.sourceforge.jsxe.dom.XMLDocument + */ +public class RemoveEdit extends AbstractUndoableEdit { + + private XMLDocument m_document; + private String m_text; + private int m_offset; + + //{{{ RemoveEdit constructor + + public RemoveEdit(XMLDocument document, int offset, String text) { + m_document = document; + m_offset = offset; + m_text = text; + }//}}} + + //{{{ undo() + + public void undo() throws CannotUndoException { + super.undo(); + try { + m_document.insertText(m_offset, m_text); + } catch (IOException ioe) { + throw new CannotUndoException(); + } + }//}}} + + //{{{ redo() + + public void redo() throws CannotRedoException { + super.redo(); + try { + m_document.removeText(m_offset, m_text.length()); + } catch (IOException ioe) { + throw new CannotUndoException(); + } + }//}}} + +} \ No newline at end of file Property changes on: trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/RemoveEdit.java ___________________________________________________________________ Name: svn:executable + * Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-07 22:38:19 UTC (rev 1109) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-08 00:07:37 UTC (rev 1110) @@ -427,7 +427,9 @@ updateRecentFilesMenu(); menubar.add(m_fileMenu); - + + menubar.add(m_editMenu); + //Add View Specific Menus JMenu[] menus = currentDocView.getMenus(); if (menus != null) { @@ -603,6 +605,27 @@ m_fileMenu.add( menuItem ); //}}} + //{{{ Create Edit Menu + m_editMenu = new JMenu(Messages.getMessage("Edit.Menu")); + m_editMenu.setMnemonic('E'); + menuItem = new JMenuItem(ActionManager.getAction("undo")); + m_editMenu.add(menuItem); + menuItem = new JMenuItem(ActionManager.getAction("redo")); + m_editMenu.add(menuItem); + m_editMenu.addSeparator(); + menuItem = new JMenuItem(ActionManager.getAction("cut")); + m_editMenu.add(menuItem); + menuItem = new JMenuItem(ActionManager.getAction("copy")); + m_editMenu.add(menuItem); + menuItem = new JMenuItem(ActionManager.getAction("paste")); + m_editMenu.add(menuItem); + m_editMenu.addSeparator(); + menuItem = new JMenuItem(ActionManager.getAction("find")); + m_editMenu.add(menuItem); + menuItem = new JMenuItem(ActionManager.getAction("findnext")); + m_editMenu.add(menuItem); + //}}} + //{{{ Create View Menu m_viewMenu = new JMenu(Messages.getMessage("View.Menu")); m_viewMenu.setMnemonic('V'); @@ -797,6 +820,7 @@ }//}}} private JMenu m_fileMenu; + private JMenu m_editMenu; private JMenu m_viewMenu; private JMenu m_toolsMenu; private JMenu m_helpMenu; Modified: trunk/jsxe/src/net/sourceforge/jsxe/msg/PropertyChanged.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/msg/PropertyChanged.java 2006-08-07 22:38:19 UTC (rev 1109) +++ trunk/jsxe/src/net/sourceforge/jsxe/msg/PropertyChanged.java 2006-08-08 00:07:37 UTC (rev 1110) @@ -39,7 +39,6 @@ //{{{ PropertyChanged constructor /** * Creates a new PropertyChanged message. - * @param source the object that changed the properties * @param */ public PropertyChanged(String key, String oldValue) { Modified: trunk/jsxe/src/net/sourceforge/jsxe/properties =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-07 22:38:19 UTC (rev 1109) +++ trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-08 00:07:37 UTC (rev 1110) @@ -13,6 +13,8 @@ # Resource Cache xml.cache=true +undo.limit=100 + #{{{ Plugin Manager Default Dimensions #pluginmgr.x=100 #pluginmgr.y=100 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-08 04:59:42
|
Revision: 1119 Author: ian_lewis Date: 2006-08-07 21:59:34 -0700 (Mon, 07 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1119&view=rev Log Message: ----------- Fixed bugs in undo Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/src/net/sourceforge/jsxe/dom/AdapterNode.java trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodeNameChange.java trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodePrefixChange.java trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodeValueChange.java Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-08 04:20:55 UTC (rev 1118) +++ trunk/jsxe/Changelog 2006-08-08 04:59:34 UTC (rev 1119) @@ -1,6 +1,8 @@ 08/07/2006 Ian Lewis <Ian...@me...> * Added temporary support for undo to jsXe. + * Added support for undo of text insert and delete. + * Added support for undo of changes to a node's name, value, and prefix. 08/05/2006 Ian Lewis <Ian...@me...> Modified: trunk/jsxe/src/net/sourceforge/jsxe/dom/AdapterNode.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/dom/AdapterNode.java 2006-08-08 04:20:55 UTC (rev 1118) +++ trunk/jsxe/src/net/sourceforge/jsxe/dom/AdapterNode.java 2006-08-08 04:59:34 UTC (rev 1119) @@ -277,9 +277,24 @@ * NAMESPACE_ERR: Raised if the specified prefix is malformed per the Namespaces in XML specification, if the namespaceURI of this node is null, if the specified prefix is "xml" and the namespaceURI of this node is different from "http://www.w3.org/XML/1998/namespace", if this node is an attribute and the specified prefix is "xmlns" and the namespaceURI of this node is different from " http://www.w3.org/2000/xmlns/", or if this node is an attribute and the qualifiedName of this node is "xmlns" . */ public void setNSPrefix(String prefix) throws DOMException { - String oldPrefix = getNSPrefix(); - m_domNode.setPrefix(prefix); - fireNamespaceChanged(this, oldPrefix, prefix); + XMLDocument doc = getOwnerDocument(); + try { + doc.beginCompoundEdit(); + String oldPrefix = getNSPrefix(); + /* + for whatever reason if I set a prefix on an node with no prefix + you get DOMException.NAMESPACE_ERRs. If we are adding a NS then + just rename the node. + */ + if (oldPrefix != null && !oldPrefix.equals("")) { + m_domNode.setPrefix(prefix); + } else { + renameElementNode(prefix, getLocalName()); + } + fireNamespaceChanged(this, oldPrefix, prefix); + } finally { + doc.endCompoundEdit(); + } }//}}} //{{{ getNodeName() @@ -312,14 +327,15 @@ throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "An attempt was made to rename a node that is not supported."); } } - + XMLDocument doc = getOwnerDocument(); + doc.beginCompoundEdit(); if (!MiscUtilities.equals(oldPrefix, prefix)) { fireNamespaceChanged(this, oldPrefix, prefix); } if (!MiscUtilities.equals(oldLocalName, localName)) { fireLocalNameChanged(this, oldLocalName, localName); } - + doc.endCompoundEdit(); }//}}} //{{{ getLocalName() Modified: trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-08-08 04:20:55 UTC (rev 1118) +++ trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-08-08 04:59:34 UTC (rev 1119) @@ -203,9 +203,10 @@ */ protected boolean addUndoableEdit(UndoableEdit edit) { if (!getFlag(UNDO_IN_PROGRESS)) { + Log.log(Log.DEBUG, this, edit); if (insideCompoundEdit()) { m_addedToCompoundEdits = true; - return ((CompoundEdit)m_compoundEdits.peek()).addEdit(edit); + return m_compoundEdit.addEdit(edit); } else { return m_undoManager.addEdit(edit); } @@ -219,9 +220,11 @@ * undone/redone all at once. */ public void beginCompoundEdit() { - Log.log(Log.DEBUG, this, "begin compound edit"); - m_addedToCompoundEdits = false; - m_compoundEdits.push(new CompoundEdit()); + if (m_compoundEditCount == 0) { + m_compoundEdit = new CompoundEdit(); + m_addedToCompoundEdits = false; + } + ++m_compoundEditCount; }//}}} //{{{ endCompoundEdit() @@ -234,13 +237,13 @@ Log.log(Log.WARNING, this, new Exception("Unbalanced begin/endCompoundEdit()")); return; } - Log.log(Log.DEBUG, this, "end compound edit"); - CompoundEdit edit = (CompoundEdit)m_compoundEdits.pop(); - edit.end(); - if (m_addedToCompoundEdits) { - m_undoManager.addEdit(edit); - m_addedToCompoundEdits = false; + m_compoundEdit.end(); + if (m_compoundEditCount == 1) { + if (m_addedToCompoundEdits) { + m_undoManager.addEdit(m_compoundEdit); + } } + --m_compoundEditCount; }//}}} //{{{ insideCompoundEdit() @@ -249,7 +252,7 @@ * edit that will be undone/redone all at once. */ public boolean insideCompoundEdit() { - return m_compoundEdits.size() != 0; + return (m_compoundEditCount != 0); }//}}} //{{{ undo() @@ -263,7 +266,7 @@ m_undoManager.undo(); EditBus.send(new UndoEvent(this)); } catch (CannotUndoException e) { - Log.log(Log.WARNING, this, e); + Log.log(Log.WARNING, this, "Could not undo"); } finally { setFlag(UNDO_IN_PROGRESS, false); } @@ -280,7 +283,7 @@ m_undoManager.redo(); EditBus.send(new RedoEvent(this)); } catch (CannotRedoException e) { - Log.log(Log.WARNING, this, e); + Log.log(Log.WARNING, this, "Could not redo"); } finally { setFlag(UNDO_IN_PROGRESS, false); } @@ -2267,8 +2270,9 @@ private HashMap m_mappings; private UndoManager m_undoManager = new UndoManager(); - private Stack m_compoundEdits = new Stack(); + private CompoundEdit m_compoundEdit = null; private boolean m_addedToCompoundEdits = false; + private int m_compoundEditCount = 0; // private XMLDocAdapterListener docAdapterListener = new XMLDocAdapterListener(); Modified: trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodeNameChange.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodeNameChange.java 2006-08-08 04:20:55 UTC (rev 1118) +++ trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodeNameChange.java 2006-08-08 04:59:34 UTC (rev 1119) @@ -66,8 +66,9 @@ public void undo() throws CannotUndoException { super.undo(); try { - m_node.setNodeName(m_oldValue); - } catch (DOMException ioe) { + m_node.setLocalName(m_oldValue); + } catch (DOMException e) { + Log.log(Log.ERROR, this, e); throw new CannotUndoException(); } }//}}} @@ -77,8 +78,9 @@ public void redo() throws CannotRedoException { super.redo(); try { - m_node.setNodeName(m_newValue); - } catch (DOMException ioe) { + m_node.setLocalName(m_newValue); + } catch (DOMException e) { + Log.log(Log.ERROR, this, e); throw new CannotRedoException(); } }//}}} Modified: trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodePrefixChange.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodePrefixChange.java 2006-08-08 04:20:55 UTC (rev 1118) +++ trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodePrefixChange.java 2006-08-08 04:59:34 UTC (rev 1119) @@ -67,7 +67,8 @@ super.undo(); try { m_node.setNSPrefix(m_oldValue); - } catch (DOMException ioe) { + } catch (DOMException e) { + Log.log(Log.ERROR, this, e); throw new CannotUndoException(); } }//}}} @@ -78,7 +79,8 @@ super.redo(); try { m_node.setNSPrefix(m_newValue); - } catch (DOMException ioe) { + } catch (DOMException e) { + Log.log(Log.ERROR, this, e); throw new CannotRedoException(); } }//}}} Modified: trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodeValueChange.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodeValueChange.java 2006-08-08 04:20:55 UTC (rev 1118) +++ trunk/jsxe/src/net/sourceforge/jsxe/dom/undo/NodeValueChange.java 2006-08-08 04:59:34 UTC (rev 1119) @@ -67,7 +67,8 @@ super.undo(); try { m_node.setNodeValue(m_oldValue); - } catch (DOMException ioe) { + } catch (DOMException e) { + Log.log(Log.ERROR, this, e); throw new CannotUndoException(); } }//}}} @@ -78,7 +79,8 @@ super.redo(); try { m_node.setNodeValue(m_newValue); - } catch (DOMException ioe) { + } catch (DOMException e) { + Log.log(Log.ERROR, this, e); throw new CannotRedoException(); } }//}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-08 20:15:03
|
Revision: 1122 Author: ian_lewis Date: 2006-08-08 13:14:54 -0700 (Tue, 08 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1122&view=rev Log Message: ----------- Added undo/redo support for attributes Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/src/net/sourceforge/jsxe/dom/AdapterNode.java trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-08 05:55:21 UTC (rev 1121) +++ trunk/jsxe/Changelog 2006-08-08 20:14:54 UTC (rev 1122) @@ -1,3 +1,7 @@ +08/08/2006 Ian Lewis <Ian...@me...> + + * Addded undo/redo support for attributes. + 08/07/2006 Ian Lewis <Ian...@me...> * Added temporary support for undo to jsXe. Modified: trunk/jsxe/src/net/sourceforge/jsxe/dom/AdapterNode.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/dom/AdapterNode.java 2006-08-08 05:55:21 UTC (rev 1121) +++ trunk/jsxe/src/net/sourceforge/jsxe/dom/AdapterNode.java 2006-08-08 20:14:54 UTC (rev 1122) @@ -411,7 +411,7 @@ */ public void setNodeValue(String str) throws DOMException { // Make sure there is a change. - if (str != null && !str.equals(m_domNode.getNodeValue())) { + if (!MiscUtilities.equals(str, m_domNode.getNodeValue())) { String oldValue = getNodeValue(); m_domNode.setNodeValue(str); fireNodeValueChanged(this, oldValue, str); @@ -540,7 +540,7 @@ } int index = index(node); m_children.remove(node); - getOwnerDocument().addUndoableEdit(new RemoveNodeChange(this, node, index)); + // getOwnerDocument().addUndoableEdit(new RemoveNodeChange(this, node, index)); } else { //Remove from previous parent AdapterNode previousParent = node.getParentNode(); @@ -617,35 +617,36 @@ Element element = (Element)m_domNode; String prefix = MiscUtilities.getNSPrefixFromQualifiedName(name); - //check if we are setting a namespace declaration - if ("xmlns".equals(prefix)) { - //if so then make sure the value is valid - if (value != null && value.equals("")) { - throw new DOMException(DOMException.NAMESPACE_ERR, "An attempt was made to create an empty namespace declaration"); + String oldValue = getAttribute(name); + + if (!MiscUtilities.equals(oldValue, value)) { + //check if we are setting a namespace declaration + if ("xmlns".equals(prefix)) { + //if so then make sure the value is valid + if (value != null && value.equals("")) { + throw new DOMException(DOMException.NAMESPACE_ERR, "An attempt was made to create an empty namespace declaration"); + } } - } - - /* - If the attribute did not have a prefix to begin with then - using setAttributeNS may add a new attribute node to the element - even though the attribute already exists. - - Also, if adding or removing a prefix we need to remove the attribute - first so that namespace errors are thrown - */ - if (prefix != null && !prefix.equals("")) { - element.setAttributeNS(lookupNamespaceURI(prefix),name,value); - } else { + /* - setAttribute doesn't throw an error if the first character is - a ":" + If the attribute did not have a prefix to begin with then + using setAttributeNS may add a new attribute node to the element + even though the attribute already exists. */ - if (name != null && !name.equals("") && name.charAt(0)==':') { - throw new DOMException(DOMException.NAMESPACE_ERR, "An attribute name cannot have a ':' as the first character"); + if (prefix != null && !prefix.equals("")) { + element.setAttributeNS(lookupNamespaceURI(prefix),name,value); + } else { + /* + setAttribute doesn't throw an error if the first character + is a ":" + */ + if (name != null && !name.equals("") && name.charAt(0)==':') { + throw new DOMException(DOMException.NAMESPACE_ERR, "An attribute name cannot have a ':' as the first character"); + } + element.setAttribute(name, value); } - element.setAttribute(name, value); + fireAttributeChanged(this, name, oldValue, value); } - fireAttributeChanged(this, name); } else { throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Only Element Nodes can have attributes"); } @@ -664,8 +665,18 @@ Element element = (Element)m_domNode; if (prefix != null && !prefix.equals("")) { + //getAttributeNS returns "" even if the attribute isn't in the + //element. + if (element.getAttributeNodeNS(lookupNamespaceURI(prefix),localName) == null) { + return null; + } return element.getAttributeNS(lookupNamespaceURI(prefix),localName); } else { + //getAttribute returns "" even if the attribute isn't in the + //element. + if (element.getAttributeNode(name) == null) { + return null; + } return element.getAttribute(name); } } else { @@ -707,43 +718,46 @@ Element element = (Element)m_domNode; String prefix = MiscUtilities.getNSPrefixFromQualifiedName(attr); String localName = MiscUtilities.getLocalNameFromQualifiedName(attr); + String oldValue = getAttribute(attr); - //Check if we are removing a namespace declaration - //This is a somewhat expensive operation, may need to - //optimize in the future - if ("xmlns".equals(prefix)) { - //check if there are nodes using the namespace - String uri = lookupNamespaceURI(localName); - //check this element's namespace - if (!uri.equals(element.getNamespaceURI())) { - //check for decendent elements with this namespace - NodeList list = element.getElementsByTagName("*"); - //check if an attribute with this NS is used - for (int i=0; i<list.getLength(); i++) { - Node ele = list.item(i); - if (uri.equals(ele.getNamespaceURI())) { - throw new DOMException(DOMException.NAMESPACE_ERR, "An attempt was made to remove a namespace declaration when nodes exist that use it"); - } - //now check the attributes - NamedNodeMap attrs = ele.getAttributes(); - for (int j=0; j<attrs.getLength(); j++) { - Node foundAttr = attrs.item(i); - if (uri.equals(foundAttr.getNamespaceURI())) { + //make sure we are actually removing an attribute. + if (oldValue != null) { + //Check if we are removing a namespace declaration + //This is a somewhat expensive operation, may need to + //optimize in the future + if ("xmlns".equals(prefix)) { + //check if there are nodes using the namespace + String uri = lookupNamespaceURI(localName); + //check this element's namespace + if (!uri.equals(element.getNamespaceURI())) { + //check for decendent elements with this namespace + NodeList list = element.getElementsByTagName("*"); + //check if an attribute with this NS is used + for (int i=0; i<list.getLength(); i++) { + Node ele = list.item(i); + if (uri.equals(ele.getNamespaceURI())) { throw new DOMException(DOMException.NAMESPACE_ERR, "An attempt was made to remove a namespace declaration when nodes exist that use it"); } + //now check the attributes + NamedNodeMap attrs = ele.getAttributes(); + for (int j=0; j<attrs.getLength(); j++) { + Node foundAttr = attrs.item(i); + if (uri.equals(foundAttr.getNamespaceURI())) { + throw new DOMException(DOMException.NAMESPACE_ERR, "An attempt was made to remove a namespace declaration when nodes exist that use it"); + } + } } + } else { + throw new DOMException(DOMException.NAMESPACE_ERR, "An attempt was made to remove a namespace declaration when nodes exist that use it"); } + } + if (prefix != null && !prefix.equals("")) { + element.removeAttributeNS(lookupNamespaceURI(prefix),localName); } else { - throw new DOMException(DOMException.NAMESPACE_ERR, "An attempt was made to remove a namespace declaration when nodes exist that use it"); + element.removeAttribute(localName); } + fireAttributeChanged(this, attr, oldValue, null); } - - if (prefix != null && !prefix.equals("")) { - element.removeAttributeNS(lookupNamespaceURI(prefix),localName); - } else { - element.removeAttribute(localName); - } - fireAttributeChanged(this, attr); } else { throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Only Element Nodes can have attributes"); } @@ -927,11 +941,9 @@ if (node != null) { int index = index(node); m_children.remove(node); - if (index != -1) { - getOwnerDocument().addUndoableEdit(new RemoveNodeChange(this, node, index)); - } else { - Log.log(Log.DEBUG, this, "node not found"); - } + // if (index != -1) { + // getOwnerDocument().addUndoableEdit(new RemoveNodeChange(this, node, index)); + // } } }//}}} @@ -981,7 +993,7 @@ //{{{ fireNodeAdded() private void fireNodeAdded(AdapterNode source, AdapterNode child, int index) { - getOwnerDocument().addUndoableEdit(new AddNodeChange(source, child, index)); + // getOwnerDocument().addUndoableEdit(new AddNodeChange(source, child, index)); ListIterator iterator = m_listeners.listIterator(); while (iterator.hasNext()) { @@ -993,7 +1005,7 @@ //{{{ fireNodeRemoved() private void fireNodeRemoved(AdapterNode source, AdapterNode child, int index) { - getOwnerDocument().addUndoableEdit(new RemoveNodeChange(source, child, index)); + // getOwnerDocument().addUndoableEdit(new RemoveNodeChange(source, child, index)); ListIterator iterator = m_listeners.listIterator(); while (iterator.hasNext()) { @@ -1041,7 +1053,9 @@ }//}}} //{{{ fireAttributeChanged() - private void fireAttributeChanged(AdapterNode source, String attr) { + private void fireAttributeChanged(AdapterNode source, String attr, String oldValue, String newValue) { + getOwnerDocument().addUndoableEdit(new AttributeChange(this, attr, oldValue, newValue)); + ListIterator iterator = m_listeners.listIterator(); while (iterator.hasNext()) { AdapterNodeListener listener = (AdapterNodeListener)iterator.next(); Modified: trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-08-08 05:55:21 UTC (rev 1121) +++ trunk/jsxe/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-08-08 20:14:54 UTC (rev 1122) @@ -203,7 +203,6 @@ */ protected boolean addUndoableEdit(UndoableEdit edit) { if (!getFlag(UNDO_IN_PROGRESS)) { - Log.log(Log.DEBUG, this, edit); if (insideCompoundEdit()) { m_addedToCompoundEdits = true; return m_compoundEdit.addEdit(edit); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-09 18:35:50
|
Revision: 1127 Author: ian_lewis Date: 2006-08-09 11:35:36 -0700 (Wed, 09 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1127&view=rev Log Message: ----------- Added a new option to the global options dialog for the number of undo operations to remember Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/messages/messages trunk/jsxe/src/net/sourceforge/jsxe/options/GeneralOptionPane.java Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-08 20:40:44 UTC (rev 1126) +++ trunk/jsxe/Changelog 2006-08-09 18:35:36 UTC (rev 1127) @@ -1,6 +1,11 @@ +08/09/2006 Ian Lewis <Ian...@me...> + + * Added a new option to the Global Options dialog for the number of undo + operations to remember. + 08/08/2006 Ian Lewis <Ian...@me...> - * Addded undo/redo support for attributes. + * Added undo/redo support for attributes. 08/07/2006 Ian Lewis <Ian...@me...> Modified: trunk/jsxe/messages/messages =================================================================== --- trunk/jsxe/messages/messages 2006-08-08 20:40:44 UTC (rev 1126) +++ trunk/jsxe/messages/messages 2006-08-09 18:35:36 UTC (rev 1127) @@ -67,7 +67,9 @@ Global.Options.network-cache=Ask first, then cache remote files Global.Options.network-always=Always download without asking Global.Options.network=DTD and schema downloading: -Global.Options.Menu.Spill.Over=Number of items before menus spill over +Global.Options.Menu.Spill.Over=Number of items before menus spill over: +Global.Options.Undos.To.Remember=Number of undos to remember: +Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXe will remember this number of undo operations in memory.<BR> However, it cannot remember undo operations after switching views</HTML> Shortcuts.Options.Title=Shortcuts Shortcuts.Options.Select.Label=Edit Shortcuts: Modified: trunk/jsxe/src/net/sourceforge/jsxe/options/GeneralOptionPane.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/options/GeneralOptionPane.java 2006-08-08 20:40:44 UTC (rev 1126) +++ trunk/jsxe/src/net/sourceforge/jsxe/options/GeneralOptionPane.java 2006-08-09 18:35:36 UTC (rev 1127) @@ -29,6 +29,7 @@ import net.sourceforge.jsxe.CatalogManager; import net.sourceforge.jsxe.gui.Messages; import javax.swing.JComboBox; +import javax.swing.JTextField; import java.util.Vector; //}}} @@ -92,6 +93,18 @@ Messages.getMessage("Global.Options.Menu.Spill.Over.ToolTip")); //}}} + //{{{ undos to remember + + int undo = jsXe.getIntegerProperty("undo.limit", 100); + + m_undosToRemember = new JTextField(Integer.toString(undo)); + + addComponent(Messages.getMessage("Global.Options.Undos.To.Remember"), + m_undosToRemember, + Messages.getMessage("Global.Options.Undos.To.Remember.ToolTip")); + + //}}} + //{{{ network String[] networkValues = { @@ -124,6 +137,11 @@ } catch (NumberFormatException nfe) { //Bad input, don't save. } + try { + jsXe.setIntegerProperty("undo.limit", Integer.parseInt(m_undosToRemember.getText())); + } catch (NumberFormatException nfe) { + //Bad input, don't save. + } jsXe.setIntegerProperty("xml.cache",network.getSelectedIndex()); CatalogManager.propertiesChanged(); }//}}} @@ -136,6 +154,7 @@ //{{{ Private Members private JComboBox menuSpillOverComboBox; private JComboBox maxRecentFilesComboBox; + private JTextField m_undosToRemember; private JComboBox network; //}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-10 20:11:20
|
Revision: 1130 Author: ian_lewis Date: 2006-08-10 13:10:50 -0700 (Thu, 10 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1130&view=rev Log Message: ----------- Added the jsXe installer Modified Paths: -------------- trunk/jsxe/INSTALL trunk/jsxe/README trunk/jsxe/build.xml Added Paths: ----------- trunk/jsxe/buildlib/bsf.jar trunk/jsxe/buildlib/js.jar trunk/jsxe/installer/ trunk/jsxe/installer/done-HalfAnOS.html trunk/jsxe/installer/done-MacOS.html trunk/jsxe/installer/done-Unix.html trunk/jsxe/installer/done-VMS.html trunk/jsxe/installer/done-Windows.html trunk/jsxe/installer/gpl.html trunk/jsxe/installer/readme.html trunk/jsxe/installer/src/ trunk/jsxe/installer/src/installer/ trunk/jsxe/installer/src/installer/BZip2Constants.java trunk/jsxe/installer/src/installer/CBZip2InputStream.java trunk/jsxe/installer/src/installer/CBZip2OutputStream.java trunk/jsxe/installer/src/installer/CRC.java trunk/jsxe/installer/src/installer/ConsoleInstall.java trunk/jsxe/installer/src/installer/ConsoleProgress.java trunk/jsxe/installer/src/installer/Install.java trunk/jsxe/installer/src/installer/InstallThread.java trunk/jsxe/installer/src/installer/InvalidHeaderException.java trunk/jsxe/installer/src/installer/NonInteractiveInstall.java trunk/jsxe/installer/src/installer/OperatingSystem.java trunk/jsxe/installer/src/installer/Progress.java trunk/jsxe/installer/src/installer/SwingInstall.java trunk/jsxe/installer/src/installer/TarBuffer.java trunk/jsxe/installer/src/installer/TarEntry.java trunk/jsxe/installer/src/installer/TarHeader.java trunk/jsxe/installer/src/installer/TarInputStream.java trunk/jsxe/installer/src/installer/TarOutputStream.java trunk/jsxe/installer/src/installer/VariableGridLayout.java Modified: trunk/jsxe/INSTALL =================================================================== --- trunk/jsxe/INSTALL 2006-08-09 21:53:09 UTC (rev 1129) +++ trunk/jsxe/INSTALL 2006-08-10 20:10:50 UTC (rev 1130) @@ -1,7 +1,7 @@ REQUIREMENTS Java 1.4.2 -Xerces 2.6.2 +Xerces 2.8.0 GETTING jsXe Modified: trunk/jsxe/README =================================================================== --- trunk/jsxe/README 2006-08-09 21:53:09 UTC (rev 1129) +++ trunk/jsxe/README 2006-08-10 20:10:50 UTC (rev 1130) @@ -7,3 +7,22 @@ way of creating XML documents. It is geared towards simpler XML documents but will (eventually) be able to handle any XML document. Visit http://jsxe.sourceforge.net/ to learn more about this project. + +jsXe bundles the following libraries: + +- Xerces Java 2.8.0 is a XML parsing library released by the Apache foundation. + This library is released under the Apache license, which can be found at + http://www.apache.org/licenses/LICENSE-2.0 + +The jsXe installer bundles the following libraries: + +- org.apache.excalibur.bzip2 compression library. This library is + released under the Apache license, which can be found at + http://www.apache.org/licenses/LICENSE-2.0 + + The org.apache.excalibur.bzip2 web site is + <http://jakarta.apache.org/avalon/excalibur/bzip2/>. + +- com.ice.tar, by Tim Endres. This code is in the public domain. + + The com.ice.tar web site is <http://www.trustice.com/java/tar/>. \ No newline at end of file Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-08-09 21:53:09 UTC (rev 1129) +++ trunk/jsxe/build.xml 2006-08-10 20:10:50 UTC (rev 1130) @@ -7,11 +7,13 @@ Version: $Id$ You should check out jsxe to make a structure like this. This ensures that - when compiling jsXe the other views will be compiled as well. + when compiling jsXe the other views and will be compiled as well. It also + ensures that you can build jsxe's installer in binary release distributions. jsxe module => jsxe/ treeview module (optional) => jsxe/jars/treeview sourceview module (optional) => jsxe/jars/sourceview + jsxe installer (optional) => jsxe/installer jsxe web module (optional) => web/ jsmooth ant task (optional) => buildlib/ @@ -23,7 +25,20 @@ <!-- {{{ ============ Initializes properties and variables ============= --> <target name="init"> <tstamp/> + <!-- {{{ app/build properties --> <property name="app.name" value="jsXe"/> + <property name="main.class" value="net.sourceforge.jsxe.jsXe"/> + <property name="major.version" value="0"/> + <property name="minor.version" value="5"/> + <property name="beta.version" value="3"/> + <property name="bugfix.version" value="0"/> + <property name="date.format" value="MM.dd.yyyy HH:mm:ss z"/> + <!-- Human Readable --> + <property name="app.version" value="0.5 pre3"/> + <!-- Used in filenames --> + <property name="app_version" value="05_pre3"/> + <!-- }}} --> + <!-- {{{ build directories --> <property name="root.dir" value="."/> <property name="build.dir" value="${root.dir}/build"/> <property name="src.dir" value="${root.dir}/src"/> @@ -39,41 +54,85 @@ <property name="build.docs" value="${build.dir}/doc"/> <property name="build.lib" value="${build.dir}/lib"/> <property name="build.bin" value="${build.dir}/bin"/> - <property name="date.format" value="MM.dd.yyyy HH:mm:ss z"/> - <property name="build.javadocs" value="${build.docs}/api"/> + <property name="build.javadocs" value="${build.dir}/api"/> <property name="build.help" value="${build.docs}/help"/> + <property name="buildlib.dir" value="${root.dir}/buildlib"/> + <!--<property name="app.version" value="${major.version}.${minor.version} beta"/>--> + <!--<property name="app_version" value="${major.version}_${minor.version}beta"/>--> + <property name="distbin.dir" value="${build.dir}/${app.name}-${app_version}-bin"/> + <property name="distsrc.dir" value="${build.dir}/${app.name}-${app_version}-src"/> + <property name="jsmooth.project" value="${root.dir}/jsXe.jsmooth"/> + <property name="jsmooth.jar" value="${buildlib.dir}/jsmoothgen-ant.jar"/> + <!-- }}} --> + <!-- {{{ installer directories --> + <property name="installer.build.dir" value="${build.dir}/installer"/> + <property name="installer.program.dir" value="${installer.build.dir}/program"/> + <property name="installer.api.dir" value="${installer.build.dir}/api"/> + <property name="installer.treeview.dir" value="${installer.build.dir}/treeview"/> + <property name="installer.sourceview.dir" value="${installer.build.dir}/sourceview"/> + <property name="installer.build.src" value="${installer.build.dir}/src"/> + <property name="installer.build.dest" value="${installer.build.dir}/build"/> + <property name="install.props" value="${installer.build.dest}/installer/install.props"/> + <property name="installer.dir" value="${root.dir}/installer"/> + <!-- }}} --> + <!-- {{{ installer props --> + <property name="installer.main.class" value="installer.Install"/> + + <!-- files listed here are in the ${installer.dir} directory --> + <!-- TODO: labels should be put into a locale specific messages file --> + <property name="app.readme" value="readme.html"/> + <property name="app.license.title" value="GNU General Public License"/> + <property name="app.license" value="gpl.html"/> + <property name="ostask.unix-script.label" value="Install shortcut in:"/> + <property name="ostask.unix-man.label" value="Install manual page in:"/> + <!--<property name="ostask.unix-man.manpage" value="jsxe.1"/>--> + <property name="comp.count" value="4"/> + + <property name="comp.0.name" value="jsXe XML Editor"/> + <!-- size values are set by the filesize task in the + build-installer task --> + <!--<property name="comp.0.disk-size" value="7084"/> + <property name="comp.0.real-size" value="6073"/>--> + <property name="comp.0.fileset" value="jsxe-program"/> + <property name="installer.build.program.tar" value="${installer.build.dest}/installer/${comp.0.fileset}.tar.bz2"/> + + <property name="comp.1.name" value="Tree view (highly recommended)"/> + <!-- size values are set by the filesize task in the + build-installer task --> + <!--<property name="comp.1.disk-size" value="7084"/> + <property name="comp.1.real-size" value="6073"/>--> + <property name="comp.1.fileset" value="jsxe-treeview"/> + <property name="installer.build.treeview.tar" value="${installer.build.dest}/installer/${comp.1.fileset}.tar.bz2"/> + + <property name="comp.2.name" value="Source view (highly recommended)"/> + <!-- size values are set by the filesize task in the + build-installer task --> + <!--<property name="comp.2.disk-size" value="7084"/> + <property name="comp.2.real-size" value="6073"/>--> + <property name="comp.2.fileset" value="jsxe-sourceview"/> + <property name="installer.build.sourceview.tar" value="${installer.build.dest}/installer/${comp.2.fileset}.tar.bz2"/> + + <property name="comp.3.name" value="API documentation (for plugin development)"/> + <!-- size values are set by the filesize task in the + build-installer task --> + <!--<property name="comp.3.disk-size" value="7084"/> + <property name="comp.3.real-size" value="6073"/>--> + <property name="comp.3.fileset" value="jsxe-api"/> + <property name="installer.build.api.tar" value="${installer.build.dest}/installer/${comp.3.fileset}.tar.bz2"/> + <!-- }}} --> + <!-- {{{ java build properties --> <property name="javac.debug" value="on"/> <property name="javac.optimize" value="off"/> <property name="javac.deprecation" value="on"/> <property name="javac.include.runtime" value="no"/> <property name="javac.source" value="1.3"/> + <!-- }}} --> + <!-- {{{ doc properties --> <property name="java.javadoc.link" value="http://java.sun.com/j2se/1.3/docs/api/"/> <property name="xerces.javadoc.link" value="http://xerces.apache.org/xerces2-j/javadocs/api/"/> - <property name="main.class" value="net.sourceforge.jsxe.jsXe"/> - <property name="major.version" value="0"/> - <property name="minor.version" value="5"/> - <property name="beta.version" value="3"/> - <property name="bugfix.version" value="0"/> - <!-- Human Readable --> - <property name="app.version" value="0.5 pre3"/> - <!-- Used in filenames --> - <property name="app_version" value="05_pre3"/> + <!-- }}} --> - <property name="buildlib.dir" value="${root.dir}/buildlib"/> - <property name="jsmooth.project" value="${root.dir}/jsXe.jsmooth"/> - <property name="jsmooth.jar" value="${buildlib.dir}/jsmoothgen-ant.jar"/> - - <condition property="windows.build"> - <and> - <os family="windows"/> - <available file="${jsmooth.jar}" property="jsmooth.avail"/> - </and> - </condition> - - <!--<property name="app.version" value="${major.version}.${minor.version} beta"/>--> - <!--<property name="app_version" value="${major.version}_${minor.version}beta"/>--> - <property name="distbin.dir" value="${build.dir}/${app.name}-${app_version}-bin"/> - <property name="distsrc.dir" value="${build.dir}/${app.name}-${app_version}-src"/> + <!-- {{{ classpaths --> <path id="classpath"> <pathelement location="."/> <pathelement location="${build.dest}"/> @@ -90,14 +149,30 @@ <include name="**/*.jar"/> </fileset> </path> + <!-- }}} --> + <!-- {{{ conditionals --> + <available file="${jsmooth.jar}" property="jsmooth.avail"/> + <condition property="windows.build"> + <and> + <os family="windows"/> + <istrue value="${jsmooth.avail}"/> + </and> + </condition> + <!-- set whether we have the source for the default views --> + + <available file="${root.dir}/../web" property="web.avail"/> + <available file="${plugin.dir}" property="plugin.avail"/> <available file="${plugin.dir}/treeview/build.xml" property="treeview.avail"/> <available file="${plugin.dir}/sourceview/build.xml" property="sourceview.avail"/> - <available file="${root.dir}/../web" property="web.avail"/> - <available file="${plugin.dir}" property="plugin.avail"/> + <available classname="org.apache.bsf.BSFException" property="bsf.avail"/> + <available classname="org.mozilla.javascript.JavaScriptException" property="js.avail"/> + <available file="${installer.dir}" property="installer.avail"/> + <!-- }}} --> + <echo message="${app.name} ${app.version}"/> <echo message="----------------------------------------------------------"/> </target> @@ -279,12 +354,271 @@ <link href="${xerces.javadoc.link}"/> </javadoc> - <zip basedir="${build.docs}" includes="api/**" zipfile="${build.dir}/${app.name}-${app_version}-api.zip"/> + <zip basedir="${build.javadocs}" includes="**/*" zipfile="${build.dir}/${app.name}-${app_version}-api.zip"/> </target> <!-- }}} --> + <!-- {{{ ============ Builds the installer ============================= --> + <target depends="compile, prepare-build, doc" name="build-installer" description="Builds the installer"> + + <fail unless="js.avail" message="You must have the ${buildlib.dir}/js.jar in your classpath to build the installer. See http://ant.apache.org/manual/install.html#librarydependencies"/> + <fail unless="bsf.avail" message="You must have the ${buildlib.dir}/bsf.jar in your classpath to build the installer. See http://ant.apache.org/manual/install.html#librarydependencies"/> + <fail unless="treeview.avail" message="You must have the treeview source available to build the installer."/> + <fail unless="sourceview.avail" message="You must have the sourceview source available to build the installer."/> + + <!-- {{{ filesize script definition --> + <!-- taken from the ant manual + modified to get the total size of a directory structure + and set it to a property in Kb --> + <scriptdef name="filesize" language="javascript"> + <element name="fileset" type="fileset"/> + <attribute name="property"/> + <![CDATA[ + // import statements + // importPackage(java.io); + importClass(java.io.File); + + // Create a <fileset dir="" includes=""/> + filesets = elements.get("fileset"); + + for (i = 0; i < filesets.size(); i++) { + fs = filesets.get(i); + + // Get the files (array) of that fileset + ds = fs.getDirectoryScanner(project); + srcFiles = ds.getIncludedFiles(); + + size = 0; + // iterate over that array + for (i=0; i<srcFiles.length; i++) { + + // get the values via Java API + var basedir = fs.getDir(project); + var filename = srcFiles[i]; + var file = new File(basedir, filename); + + size += file.length(); + } + project.setNewProperty(attributes.get("property"), Math.round(size/1024)); + } + ]]> + </scriptdef> + <!-- }}} --> + + <!-- copy the installer source --> + <mkdir dir="${installer.build.dir}"/> + <copy todir="${installer.build.dir}"> + <fileset dir="${installer.dir}"> + <include name="**/*.java"/> + </fileset> + </copy> + + <!-- build the installer --> + <mkdir dir="${installer.build.dest}"/> + <javac debug="${javac.debug}" deprecation="${javac.deprecation}" includeJavaRuntime="${javac.include.runtime}" optimize="${javac.optimize}" source="${javac.source}" destdir="${installer.build.dest}" srcdir="${installer.build.src}"> + <include name="**/*.java"/> + </javac> + + <!-- copy html files --> + <copy todir="${installer.build.dest}/installer"> + <fileset dir="${installer.dir}"> + <include name="**/*.html"/> + </fileset> + </copy> + + <!-- {{{ create the program tar.bz2 file --> + + <mkdir dir="${installer.program.dir}"/> + + <mkdir dir="${installer.program.dir}/jars"/> + + <!-- doc --> + <mkdir dir="${installer.program.dir}/doc"/> + <copy todir="${installer.program.dir}/doc"> + <fileset dir="${build.docs}"> + <include name="**/*"/> + </fileset> + </copy> + + <!-- messages --> + <mkdir dir="${installer.program.dir}/messages"/> + <copy todir="${installer.program.dir}/messages"> + <fileset dir="${build.messages}"> + <include name="**/messages*"/> + </fileset> + </copy> + + <copy file="${build.dir}/${app.name}.jar" tofile="${installer.program.dir}/${app.name}.jar"/> + <!-- lib --> + <mkdir dir="${installer.program.dir}/lib"/> + <copy todir="${installer.program.dir}/lib"> + <fileset dir="${build.lib}"> + <include name="**/*"/> + </fileset> + </copy> + + <!-- create the windows exe --> + <antcall target="build-exe"/> + + <!-- create the tar.bz2 for the installer --> + <tar basedir="${installer.program.dir}" includes="**/*" tarfile="${installer.build.dir}/${app.name}-${app_version}-program.tar"/> + <bzip2 src="${installer.build.dir}/${app.name}-${app_version}-program.tar" destfile="${installer.build.program.tar}"/> + <delete file="${installer.build.dir}/${app.name}-${app_version}-program.tar"/> + + <!-- find the file size of the files on disk and compressed files --> + <filesize property="comp.0.disk-size"> + <fileset dir="${installer.program.dir}"> + <include name="**/*"/> + </fileset> + </filesize> + + <filesize property="comp.0.real-size"> + <fileset file="${installer.build.program.tar}"/> + </filesize> + + <!-- }}} --> + + <!-- {{{ create the treeview tar.bz2 file --> + + <mkdir dir="${installer.treeview.dir}"/> + <mkdir dir="${installer.treeview.dir}/jars"/> + <copy todir="${installer.treeview.dir}/jars" file="${build.plugin}/treeview.jar"/> + + <tar basedir="${installer.treeview.dir}" includes="**/*" tarfile="${installer.build.dir}/${app.name}-${app_version}-treeview.tar"/> + <bzip2 src="${installer.build.dir}/${app.name}-${app_version}-treeview.tar" destfile="${installer.build.treeview.tar}"/> + <delete file="${installer.build.dir}/${app.name}-${app_version}-treeview.tar"/> + + <!-- find the file size of the files on disk and compressed files --> + <filesize property="comp.1.disk-size"> + <fileset dir="${installer.treeview.dir}"> + <include name="**/*"/> + </fileset> + </filesize> + + <filesize property="comp.1.real-size"> + <fileset file="${installer.build.treeview.tar}"/> + </filesize> + + <!-- }}} --> + + <!-- {{{ create the sourceview tar.bz2 file --> + + <mkdir dir="${installer.sourceview.dir}"/> + <mkdir dir="${installer.sourceview.dir}/jars"/> + <copy todir="${installer.sourceview.dir}/jars" file="${build.plugin}/sourceview.jar"/> + + <tar basedir="${installer.sourceview.dir}" includes="**/*" tarfile="${installer.build.dir}/${app.name}-${app_version}-sourceview.tar"/> + <bzip2 src="${installer.build.dir}/${app.name}-${app_version}-sourceview.tar" destfile="${installer.build.sourceview.tar}"/> + <delete file="${installer.build.dir}/${app.name}-${app_version}-sourceview.tar"/> + + <!-- find the file size of the files on disk and compressed files --> + <filesize property="comp.2.disk-size"> + <fileset dir="${installer.sourceview.dir}"> + <include name="**/*"/> + </fileset> + </filesize> + + <filesize property="comp.2.real-size"> + <fileset file="${installer.build.sourceview.tar}"/> + </filesize> + + <!-- }}} --> + + <!-- {{{ create the api tar.bz2 file --> + + <mkdir dir="${installer.api.dir}"/> + <mkdir dir="${installer.api.dir}/api"/> + <copy todir="${installer.api.dir}/api"> + <fileset dir="${build.javadocs}"> + <include name="**/*"/> + </fileset> + </copy> + + <tar basedir="${installer.api.dir}" excludes="*.class" includes="api/**" tarfile="${installer.build.dir}/${app.name}-${app_version}-api.tar"/> + <bzip2 src="${installer.build.dir}/${app.name}-${app_version}-api.tar" destfile="${installer.build.api.tar}"/> + <delete file="${installer.build.dir}/${app.name}-${app_version}-api.tar"/> + + <!-- find the file size of the files on disk and compressed files --> + <filesize property="comp.3.disk-size"> + <fileset dir="${installer.api.dir}"> + <include name="**/*"/> + </fileset> + </filesize> + + <filesize property="comp.3.real-size"> + <fileset file="${installer.build.api.tar}"/> + </filesize> + + <!-- }}} --> + + <!-- {{{ create the install.props file --> + <propertyfile comment="${app.name}'s installer properties" file="${install.props}"> + <entry key="app.name" value="${app.name}"/> + <entry key="app.version" value="${app.version}"/> + <entry key="app.readme" value="${app.readme}"/> + <entry key="app.license.title" value="${app.license.title}"/> + <entry key="app.license" value="${app.license}"/> + <entry key="ostask.unix-script.label" value="${ostask.unix-script.label}"/> + <!--<entry key="ostask.unix-man.label" value="${ostask.unix-man.label}"/>--> + <entry key="comp.count" value="${comp.count}"/> + <entry key="comp.0.name" value="${comp.0.name}"/> + <entry key="comp.0.disk-size" value="${comp.0.disk-size}"/> + <entry key="comp.0.real-size" value="${comp.0.real-size}"/> + <entry key="comp.0.fileset" value="${comp.0.fileset}"/> + + <entry key="comp.1.name" value="${comp.1.name}"/> + <entry key="comp.1.disk-size" value="${comp.1.disk-size}"/> + <entry key="comp.1.real-size" value="${comp.1.real-size}"/> + <entry key="comp.1.fileset" value="${comp.1.fileset}"/> + + <entry key="comp.2.name" value="${comp.2.name}"/> + <entry key="comp.2.disk-size" value="${comp.2.disk-size}"/> + <entry key="comp.2.real-size" value="${comp.2.real-size}"/> + <entry key="comp.2.fileset" value="${comp.2.fileset}"/> + + <entry key="comp.3.name" value="${comp.3.name}"/> + <entry key="comp.3.disk-size" value="${comp.3.disk-size}"/> + <entry key="comp.3.real-size" value="${comp.3.real-size}"/> + <entry key="comp.3.fileset" value="${comp.3.fileset}"/> + </propertyfile> + <!-- }}} --> + + <!-- {{{ create the manifest --> + <manifest file="${installer.build.dir}/installer.manifest"> + <attribute name="Built-By" value="${user.name}"/> + <attribute name="Main-Class" value="${installer.main.class}"/> + <section name="common"> + <attribute name="Implementation-Title" value="${app.name}"/> + <attribute name="Implementation-Version" value="${app.version} ${TODAY}"/> + </section> + </manifest> + <!-- }}} --> + + <!-- {{{ create the install jar --> + <jar jarfile="${build.dir}/${app.name}-${app_version}-install.jar" manifest="${installer.build.dir}/installer.manifest"> + <fileset dir="${installer.build.dest}"> + <include name="**/*"/> + </fileset> + </jar> + <!-- }}} --> + + </target> + <target name="build-exe" if="windows.build"> + <taskdef name="jsmoothgen" + classname="net.charabia.jsmoothgen.ant.JSmoothGen" + classpath="${jsmooth.jar}"/> + + <jsmoothgen project="${jsmooth.project}" skeletonroot="${buildlib.dir}/skeletons"/> + <copy todir="${installer.program.dir}" file="${build.dir}/jsXe.exe"/> + </target> + <!-- }}} --> + <!-- {{{ ============ Generates a windows distribution ================= --> + <target depends="build-installer" name="win" if="windows.build" description="Build a windows distribution"> + + </target> + <!-- }}} --> <!-- {{{ ============ Generates the binary distribution ================ --> - <target depends="compile, prepare-build, doc" name="bin" description="Build binary distribution"> + <target depends="compile, prepare-build, doc" name="bin" description="Build binary distributions"> <!-- plugins --> <mkdir dir="${distbin.dir}/jars"/> @@ -301,6 +635,16 @@ <include name="**/*"/> </fileset> </copy> + + + <!-- api --> + <mkdir dir="${distbin.dir}/doc/api"/> + <copy todir="${distbin.dir}/doc/api"> + <fileset dir="${build.javadocs}"> + <include name="**/*"/> + </fileset> + </copy> + <!-- bin --> <mkdir dir="${distbin.dir}/bin"/> <copy todir="${distbin.dir}/bin"> @@ -326,18 +670,14 @@ </fileset> </copy> - <!-- build the windows executable --> - <antcall target="build-exe"/> - + <!-- create the zip distr --> <zip basedir="${build.dir}" excludes="*.class" includes="${app.name}-${app_version}-bin/**" zipfile="${build.dir}/${app.name}-${app_version}-bin.zip"/> - </target> - <target name="build-exe" if="windows.build"> - <taskdef name="jsmoothgen" - classname="net.charabia.jsmoothgen.ant.JSmoothGen" - classpath="${jsmooth.jar}"/> - <jsmoothgen project="${jsmooth.project}" skeletonroot="${buildlib.dir}/skeletons"/> - <copy todir="${distbin.dir}" file="${build.dir}/jsXe.exe"/> + <!-- create the tar.bz2 distr --> + <tar basedir="${build.dir}" excludes="*.class" includes="${app.name}-${app_version}-bin/**" tarfile="${build.dir}/${app.name}-${app_version}-bin.tar"/> + <bzip2 src="${build.dir}/${app.name}-${app_version}-bin.tar" destfile="${build.dir}/${app.name}-${app_version}-bin.tar.bz2"/> + <delete file="${build.dir}/${app.name}-${app_version}-bin.tar"/> + </target> <!-- }}} --> <!-- {{{ ============ Generates the source distribution ================ --> @@ -345,6 +685,7 @@ <antcall target="copy-treeview-source"/> <antcall target="copy-sourceview-source"/> + <antcall target="copy-installer-source"/> <!-- doc --> <mkdir dir="${distsrc.dir}/doc"/> @@ -354,6 +695,14 @@ </fileset> </copy> + <!-- api --> + <mkdir dir="${distsrc.dir}/doc/api"/> + <copy todir="${distsrc.dir}/doc/api"> + <fileset dir="${build.javadocs}"> + <include name="**/*"/> + </fileset> + </copy> + <!-- move these files to the root dir of the src distribution --> <move file="${distsrc.dir}/doc/COPYING" tofile="${distsrc.dir}/COPYING"/> <move file="${distsrc.dir}/doc/README" tofile="${distsrc.dir}/README"/> @@ -408,7 +757,14 @@ </fileset> </copy> + <!-- create the zip --> <zip basedir="${build.dir}" excludes="*.class" includes="${app.name}-${app_version}-src/**" zipfile="${build.dir}/${app.name}-${app_version}-src.zip"/> + + <!-- create the tar.bz2 distr --> + <tar basedir="${build.dir}" excludes="*.class" includes="${app.name}-${app_version}-src/**" tarfile="${build.dir}/${app.name}-${app_version}-src.tar"/> + <bzip2 src="${build.dir}/${app.name}-${app_version}-src.tar" destfile="${build.dir}/${app.name}-${app_version}-src.tar.bz2"/> + <delete file="${build.dir}/${app.name}-${app_version}-src.tar"/> + </target> <target name="copy-treeview-source" if="treeview.avail"> <copy todir="${distsrc.dir}/jars"> @@ -430,6 +786,13 @@ </fileset> </copy> </target> + <target name="copy-installer-source" if="installer.avail"> + <copy todir="${distsrc.dir}/installer"> + <fileset dir="${installer.dir}"> + <include name="**/*"/> + </fileset> + </copy> + </target> <!-- }}} --> <!-- {{{ ============ Deploys documentation to the web module ========== --> <target depends="doc" name="deploy-web-doc" if="web.avail" description="Deploy documentation to the web module"> Added: trunk/jsxe/buildlib/bsf.jar =================================================================== (Binary files differ) Property changes on: trunk/jsxe/buildlib/bsf.jar ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Added: trunk/jsxe/buildlib/js.jar =================================================================== (Binary files differ) Property changes on: trunk/jsxe/buildlib/js.jar ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Added: trunk/jsxe/installer/done-HalfAnOS.html =================================================================== --- trunk/jsxe/installer/done-HalfAnOS.html (rev 0) +++ trunk/jsxe/installer/done-HalfAnOS.html 2006-08-10 20:10:50 UTC (rev 1130) @@ -0,0 +1,8 @@ +<html><body> + +jsXe has been installed successfully.<p> + +To start jEdit, run the <tt>jsxe.cmd</tt> script located in the +installation directory. + +</body></html> Property changes on: trunk/jsxe/installer/done-HalfAnOS.html ___________________________________________________________________ Name: svn:executable + * Added: trunk/jsxe/installer/done-MacOS.html =================================================================== --- trunk/jsxe/installer/done-MacOS.html (rev 0) +++ trunk/jsxe/installer/done-MacOS.html 2006-08-10 20:10:50 UTC (rev 1130) @@ -0,0 +1,12 @@ +<html><body> + +jsXe has been installed successfully.<p> + +To start jsXe, run the <tt>jsxe</tt> command in a terminal window: + +<table><tr><td bgcolor="#e0e0e0"><tt><b>$</b> jsxe <i>filename</i> ...</td></tt></tr></table> + +To find out about supported command-line options, run: + +<table><tr><td bgcolor="#e0e0e0"><tt><b>$</b> jsxe --help</tt></td></tr></table> +</body></html> Property changes on: trunk/jsxe/installer/done-MacOS.html ___________________________________________________________________ Name: svn:executable + * Added: trunk/jsxe/installer/done-Unix.html =================================================================== --- trunk/jsxe/installer/done-Unix.html (rev 0) +++ trunk/jsxe/installer/done-Unix.html 2006-08-10 20:10:50 UTC (rev 1130) @@ -0,0 +1,12 @@ +<html><body> + +jsXe has been installed successfully.<p> + +To start jsXe, run the <tt>jedit</tt> command in a terminal window: + +<table><tr><td bgcolor="#e0e0e0"><tt><b>$</b> jsxe <i>filename</i> ...</td></tt></tr></table> + +To find out about supported command-line options, run: + +<table><tr><td bgcolor="#e0e0e0"><tt><b>$</b> jsxe --help</tt></td></tr></table> +</body></html> Property changes on: trunk/jsxe/installer/done-Unix.html ___________________________________________________________________ Name: svn:executable + * Added: trunk/jsxe/installer/done-VMS.html =================================================================== --- trunk/jsxe/installer/done-VMS.html (rev 0) +++ trunk/jsxe/installer/done-VMS.html 2006-08-10 20:10:50 UTC (rev 1130) @@ -0,0 +1,13 @@ +<html><body> + +jsXe has been installed successfully.<p> + +To start jsXe, run the following command in a terminal window: + +<table><tr><td bgcolor="#e0e0e0"><tt><b>$</b> java -jar <i>disk</i>:[<i>dir</i>]jsXe.jar <i>filename</i> ...</td></tt></tr></table> + +To find out about supported command-line options, run: + +<table><tr><td bgcolor="#e0e0e0"><tt><b>$</b> java -jar <i>disk</i>:[<i>dir</i>]jsXe.jar --help</td></tt></tr></table> + +</body></html> Property changes on: trunk/jsxe/installer/done-VMS.html ___________________________________________________________________ Name: svn:executable + * Added: trunk/jsxe/installer/done-Windows.html =================================================================== --- trunk/jsxe/installer/done-Windows.html (rev 0) +++ trunk/jsxe/installer/done-Windows.html 2006-08-10 20:10:50 UTC (rev 1130) @@ -0,0 +1,7 @@ +<html><body> + +jsXe has been installed successfully.<p> + +To start jsXe, double-click on <code>jsXe.exe</code> in the jsXe installation directory. + +</body></html> Property changes on: trunk/jsxe/installer/done-Windows.html ___________________________________________________________________ Name: svn:executable + * Added: trunk/jsxe/installer/gpl.html =================================================================== --- trunk/jsxe/installer/gpl.html (rev 0) +++ trunk/jsxe/installer/gpl.html 2006-08-10 20:10:50 UTC (rev 1130) @@ -0,0 +1,471 @@ +<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"> +<HTML> +<HEAD> +<TITLE>GNU General Public License - GNU Project - Free Software Foundation (FSF)</TITLE> +</HEAD> +<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" VLINK="#9900DD"> + +Version 2, June 1991<p> + +<code> +Copyright (C) 1989, 1991 Free Software Foundation, Inc.<br> +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA<p> + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +</code> + + + +<H2>Preamble</H2> + +<P> + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + +</P> +<P> + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + +</P> +<P> + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + +</P> +<P> + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + +</P> +<P> + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + +</P> +<P> + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + +</P> +<P> + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + +</P> +<P> + The precise terms and conditions for copying, distribution and +modification follow. + +</P> + + +<H2>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</H2> + + +<P> + +<STRONG>0.</STRONG> + This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". +<P> + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + +<P> + +<STRONG>1.</STRONG> + You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. +<P> + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. +<P> + +<STRONG>2.</STRONG> + You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: +<P> + +<UL> + +<LI><STRONG>a)</STRONG> + You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + +<P> +<LI><STRONG>b)</STRONG> + You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + +<P> +<LI><STRONG>c)</STRONG> + If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) +</UL> + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +<P> + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. +<P> + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +<P> + +<STRONG>3.</STRONG> + You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + +<!-- we use this doubled UL to get the sub-sections indented, --> +<!-- while making the bullets as unobvious as possible. --> +<UL> + +<LI><STRONG>a)</STRONG> + Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + +<P> +<LI><STRONG>b)</STRONG> + Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + +<P> +<LI><STRONG>c)</STRONG> + Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) +</UL> + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. +<P> + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. +<P> + +<STRONG>4.</STRONG> + You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +<P> + +<STRONG>5.</STRONG> + You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +<P> + +<STRONG>6.</STRONG> + Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + +<P> + +<STRONG>7.</STRONG> + If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. +<P> + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. +<P> + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. +<P> + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +<P> + +<STRONG>8.</STRONG> + If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +<P> + +<STRONG>9.</STRONG> + The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +<P> + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + +<P> + + +<STRONG>10.</STRONG> + If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + + +<P><STRONG>NO WARRANTY</STRONG></P> + +<P> + +<STRONG>11.</STRONG> + BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + +<P> + +<STRONG>12.</STRONG> + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +<P> + +<!-- +<H2>END OF TERMS AND CONDITIONS</H2> + + + +<H2>How to Apply These Terms to Your New Programs</H2> + +<P> + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +</P> +<P> + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + +</P> + +<code> +<VAR>one line to give the program's name and an idea of what it does.</VAR> +Copyright (C) <VAR>yyyy</VAR> <VAR>name of author</VAR> + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +</code> + +<P> +Also add information on how to contact you by electronic and paper mail. + +</P> +<P> +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + +</P> + +<code> +Gnomovision version 69, Copyright (C) <VAR>year</VAR> <VAR>name of author</VAR><p> +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +type `show w'. This is free software, and you are welcome +to redistribute it under certain conditions; type `show c' +for details. +</code> + +<P> +The hypothetical commands <SAMP>`show w'</SAMP> and <SAMP>`show c'</SAMP> should show +the appropriate parts of the General Public License. Of course, the +commands you use may be called something other than <SAMP>`show w'</SAMP> and +<SAMP>`show c'</SAMP>; they could even be mouse-clicks or menu items--whatever +suits your program. + +</P> +<P> +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + +</P> + +<code> +Yoyodyne, Inc., hereby disclaims all copyright +interest in the program `Gnomovision' +(which makes passes at compilers) written +by James Hacker.<p> + +<VAR>signature of Ty Coon</VAR>, 1 April 1989 +Ty Coon, President of Vice +</code> + +<P> +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. +--> +</BODY> +</HTML> Property changes on: trunk/jsxe/installer/gpl.html ___________________________________________________________________ Name: svn:executable + * Added: trunk/jsxe/installer/readme.html =================================================================== --- trunk/jsxe/installer/readme.html (rev 0) +++ trunk/jsxe/installer/readme.html 2006-08-10 20:10:50 UTC (rev 1130) @@ -0,0 +1,25 @@ +<html> +<body> + +Simply fill out the required +information at each screen and click <b>Next</b>. Once all installation +parameters have been specified, the <b>Next</b> button changes to +read <b>Install</b>. Clicking it will then begin the installation +process.<p> + +The <b>Cancel</b> button will quit the installer without installing +anything; <b>Previous</b> will take you to the previous screen +(use it if you change your mind about a setting). + +<hr> + +jsXe is free software, released under the terms of the GNU General +Public License. The full text of the license is shown in the next page +of the installer.<p> + +Several class libraries bundled with jsXe are have other +licenses; once jsXe is installed, see the <code>README</code> +file for details. + +</body> +</html> Property changes on: trunk/jsxe/installer/readme.html ___________________________________________________________________ Name: svn:executable + * Added: trunk/jsxe/installer/src/installer/BZip2Constants.java =================================================================== --- trunk/jsxe/installer/src/installer/BZip2Constants.java (rev 0) +++ trunk/jsxe/installer/src/installer/BZip2Constants.java 2006-08-10 20:10:50 UTC (rev 1130) @@ -0,0 +1,84 @@ +/* + * Copyright (C) The Apache Software Foundation. All rights reserved. + * + * This software is published under the terms of the Apache Software License + * version 1.1, a copy of which has been included with this distribution in + * the LICENSE.txt file. + */ +package installer; + +/** + * Base class for both the compress and decompress classes. Holds common arrays, + * and static data. + * + * @author <a href="mailto:ke...@af...">Keiron Liddle</a> + */ +interface BZip2Constants +{ + int BASE_BLOCK_SIZE = 100000; + int MAX_ALPHA_SIZE = 258; + int MAX_CODE_LEN = 23; + int RUNA = 0; + int RUNB = 1; + int N_GROUPS = 6; + int G_SIZE = 50; + int N_ITERS = 4; + int MAX_SELECTORS = ( 2 + ( 900000 / G_SIZE ) ); + int NUM_OVERSHOOT_BYTES = 20; + + int[] RAND_NUMS = new int[] + { + 619, 720, 127, 481, 931, 816, 813, 233, 566, 247, + 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, + 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, + 419, 436, 278, 496, 867, 210, 399, 680, 480, 51, + 878, 465, 811, 169, 869, 675, 611, 697, 867, 561, + 862, 687, 507, 283, 482, 129, 807, 591, 733, 623, + 150, 238, 59, 379, 684, 877, 625, 169, 643, 105, + 170, 607, 520, 932, 727, 476, 693, 425, 174, 647, + 73, 122, 335, 530, 442, 853, 695, 249, 445, 515, + 909, 545, 703, 919, 874, 474, 882, 500, 594, 612, + 641, 801, 220, 162, 819, 984, 589, 513, 495, 799, + 161, 604, 958, 533, 221, 400, 386, 867, 600, 782, + 382, 596, 414, 171, 516, 375, 682, 485, 911, 276, + 98, 553, 163, 354, 666, 933, 424, 341, 533, 870, + 227, 730, 475, 186, 263, 647, 537, 686, 600, 224, + 469, 68, 770, 919, 190, 373, 294, 822, 808, 206, + 184, 943, 795, 384, 383, 461, 404, 758, 839, 887, + 715, 67, 618, 276, 204, 918, 873, 777, 604, 560, + 951, 160, 578, 722, 79, 804, 96, 409, 713, 940, + 652, 934, 970, 447, 318, 353, 859, 672, 112, 785, + 645, 863, 803, 350, 139, 93, 354, 99, 820, 908, + 609, 772, 154, 274, 580, 184, 79, 626, 630, 742, + 653, 282, 762, 623, 680, 81, 927, 626, 789, 125, + 411, 521, 938, 300, 821, 78, 343, 175, 128, 250, + 170, 774, 972, 275, 999, 639, 495, 78, 352, 126, + 857, 956, 358, 619, 580, 124, 737, 594, 701, 612, + 669, 112, 134, 694, 363, 992, 809, 743, 168, 974, + 944, 375, 748, 52, 600, 747, 642, 182, 862, 81, + 344, 805, 988, 739, 511, 655, 814, 334, 249, 515, + 897, 955, 664, 981, 649, 113, 974, 459, 893, 228, + 433, 837, 553, 268, 926, 240, 102, 654, 459, 51, + 686, 754, 806, 760, 493, 403, 415, 394, 687, 700, + 946, 670, 656, 610, 738, 392, 760, 799, 887, 653, + 978, 321, 576, 617, 626, 502, 894, 679, 243, 440, + 680, 879, 194, 572, 640, 724, 926, 56, 204, 700, + 707, 151, 457, 449, 797, 195, 791, 558, 945, 679, + 297, 59, 87, 824, 713, 663, 412, 693, 342, 606, + 134, 108, 571, 364, 631, 212, 174, 643, 304, 329, + 343, 97, 430, 751, 497, 314, 983, 374, 822, 928, + 140, 206, 73, 263, 980, 736, 876, 478, 430, 305, + 170, 514, 364, 692, 829, 82, 855, 953, 676, 246, + 369, 970, 294, 750, 807, 827, 150, 790, 288, 923, + 804, 378, 215, 828, 592, 281, 565, 555, 710, 82, + 896, 831, 547, 261, 524, 462, 293, 465, 502, 56, + 661, 821, 976, 991, 658, 869, 905, 758, 745, 193, + 768, 550, 608, 933, 378, 286, 215, 979, 792, 961, + 61, 688, 793, 644, 986, 403, 106, 366, 905, 644, + 372, 567, 466, 434, 645, 210, 389, 550, 919, 135, + 780, 773, 635, 389, 707, 100, 626, 958, 165, 504, + 920, 176, 193, 713, 857, 265, 203, 50, 668, 108, + 645, 990, 626, 197, 510, 357, 358, 850, 858, 364, + 936, 638 + }; +} Property changes on: trunk/jsxe/installer/src/installer/BZip2Constants.java ___________________________________________________________________ Name: svn:executable + * Added: trunk/jsxe/installer/src/installer/CBZip2InputStream.java =================================================================== --- trunk/jsxe/installer/src/installer/CBZip2InputStream.java (rev 0) +++ trunk/jsxe/installer/src/installer/CBZip2InputStream.java 2006-08-10 20:10:50 UTC (rev 1130) @@ -0,0 +1,953 @@ +/* + * Copyright (C) The Apache Software Foundation. All rights reserved. + * + * This software is published under the terms of the Apache Software License + * version 1.1, a copy of which has been included with this distribution in + * the LICENSE.txt file. + */ +package installer; + +import java.io.IOException; +import java.io.InputStream; + +/** + * An input stream that decompresses from the BZip2 format (without the file + * header chars) to be read as any other stream. + * + * @author <a href="mailto:ke...@af...">Keiron Liddle</a> + */ +public class CBZip2InputStream + extends InputStream + implements BZip2Constants +{ + private static final int START_BLOCK_STATE = 1; + private static final int RAND_PART_A_STATE = 2; + private static final int RAND_PART_B_STATE = 3; + private static final int RAND_PART_C_STATE = 4; + private static final int NO_RAND_PART_A_STATE = 5; + private static final int NO_RAND_PART_B_STATE = 6; + private static final int NO_RAND_PART_C_STATE = 7; + + private CRC m_crc = new CRC(); + private boolean[] m_inUse = new boolean[ 256 ]; + private char[] m_seqToUnseq = new char[ 256 ]; + private char[] m_unseqToSeq = new char[ 256 ]; + private char[] m_selector = new char[ MAX_SELECTORS ]; + private char[] m_selectorMtf = new char[ MAX_SELECTORS ]; + + /* + * freq table collected to save a pass over the data + * during decompression. + */ + private int[] m_unzftab = new int[ 256 ]; + + private int[][] m_limit = new int[ N_GROUPS ][ MAX_ALPHA_SIZE ]; + private int[][] m_base = new int[ N_GROUPS ][ MAX_ALPHA_SIZE ]; + private int[][] m_perm = new int[ N_GROUPS ][ MAX_ALPHA_SIZE ]; + private int[] m_minLens = new int[ N_GROUPS ]; + + private boolean m_streamEnd; + private int m_currentChar = -1; + + private int m_currentState = START_BLOCK_STATE; + private int m_rNToGo; + private int m_rTPos; + private int m_tPos; + + private int i2; + private int count; + private int chPrev; + private int ch2; + private int j2; + private char z; + + private boolean m_blockRandomised; + + /* + * always: in the range 0 .. 9. + * The current block size is 100000 * this number. + */ + private int m_blockSize100k; + private int m_bsBuff; + private int m_bsLive; + + private InputStream m_inp... [truncated message content] |
From: <ian...@us...> - 2006-08-13 04:07:28
|
Revision: 1146 Author: ian_lewis Date: 2006-08-12 21:07:13 -0700 (Sat, 12 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1146&view=rev Log Message: ----------- merge from the 05pre3 branch Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/INSTALL trunk/jsxe/build.xml trunk/jsxe/installer/src/installer/OperatingSystem.java trunk/jsxe/messages/messages.ja Added Paths: ----------- trunk/jsxe/installer/jsxe-installer.ico trunk/jsxe/installer/jsxe.desktop trunk/jsxe/installer/jsxe.png trunk/jsxe/installer/launch4j.xml trunk/jsxe/jsxe.ico trunk/jsxe/launch4j.xml Removed Paths: ------------- trunk/jsxe/buildlib/jsmoothgen-ant.jar trunk/jsxe/buildlib/skeletons/ trunk/jsxe/jsXe.jsmooth Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-13 04:04:39 UTC (rev 1145) +++ trunk/jsxe/Changelog 2006-08-13 04:07:13 UTC (rev 1146) @@ -1,3 +1,11 @@ +08/12/2006 Ian Lewis <Ian...@me...> + + * Added support for running jsXe in a wrapped exe using launch4j. + * Added an installer for jsXe. The installer can be packaged in an exe for + easy use by windows users. + * Moved the windows integration into it's own component in the installer so + that it won't be installed on systems other than Windows. + 08/09/2006 Ian Lewis <Ian...@me...> * Added a new option to the Global Options dialog for the number of undo Modified: trunk/jsxe/INSTALL =================================================================== --- trunk/jsxe/INSTALL 2006-08-13 04:04:39 UTC (rev 1145) +++ trunk/jsxe/INSTALL 2006-08-13 04:07:13 UTC (rev 1146) @@ -2,6 +2,7 @@ Java 1.4.2 Xerces 2.8.0 +launch4j (for building the installer from source) GETTING jsXe @@ -13,17 +14,32 @@ Once you have the source trees for both of these you should put them in a directory called 'jars' in your jsXe root folder. Once they are in that folder, the ant targets (compile, bin, src, etc.) will recognise those plugins and build -them if necessary. So something like this should do it: +them if necessary. -cvs checkout jsxe +You should check out jsxe to make a structure like this. This ensures that +when compiling jsXe the other views and will be compiled as well. It also +ensures that you can build jsxe's installer in binary release distributions. + +jsxe module => jsxe/ +treeview module (optional) => jsxe/jars/treeview +sourceview module (optional) => jsxe/jars/sourceview +jsxe installer (optional) => jsxe/installer +jsxe web module (optional) => web/ +launch4j (needed for win builds) => buildlib/launch4j + +So something like this should do it: + +svn checkout https://svn.sourceforge.net/svnroot/jsxe/trunk/jsxe cd jsxe mkdir jars cd jars -cvs checkout treeview -cvs checkout sourceview +svn checkout https://svn.sourceforge.net/svnroot/jsxe/trunk/treeview +svn checkout https://svn.sourceforge.net/svnroot/jsxe/trunk/sourceview BUILDING jsXe FROM SOURCE +** Requirements ** + This is pretty simple. You will need jakarta ANT and a Sun's javac compiler (others might work, I just haven't tested them). You will need the optional ant tasks installed as well. On some Linux distributions this may be a separate @@ -38,13 +54,30 @@ (where you installed jsXe's source) or in the jre/lib/ext or lib/ext in your JVM. These jar files will be included with jsXe distributions for convenience. -Simply typing 'ant' in jsXe's root directory will give you the +In order to build jsXe's installer or a windows distribution of jsXe you will +need to install launch4j (http://launch4j.sourceforge.net/). You can install it +in the buildlib directory or change the launch4j.dir property in the build.xml +file. You will also need to put the js.jar and bsf.jar in your classpath. These +files are found in the 'buildlib' directory. They are used in scripts for +calculating file sizes. + +** Building ** + +Simply typing 'ant -p' in jsXe's root directory will give you the available targets to use with ant. To just simply compile jsXe and the default views to a jar file you can type 'ant compile'. To build a binary distribution you will need to run the 'bin' target in the build.xml file. I do this by simply typing 'ant bin'. Source distributions can be built using the 'src' target by typing 'ant src'. +You can build jsXe's installer by running 'ant build-installer' which will +build jsXe's installer. The installer will be packaged in a jar file to be run +by java. + +You can build a windows distribution of jsXe by running the 'ant win'. This will +compile jsXe's installer and wrap it in an exe wrapper. The wrapper will search +for the appropriate java runtime with which to run jsXe. + INSTALLING jsXe Unpack the distribution file wherever you like. Normally you would install it @@ -52,14 +85,14 @@ RUNNING jsXe -You should have 1.4.2 or better of java and you need 2.6.2 of Xerces. +You should have 1.4.2 or better of java and you need 2.8.0 of Xerces. *Windows* Just run jsXe using the jsXe.exe in the install directory. The exe will detect your version of Java and run jsXe using that version. -*Unix* +*Unix/Linux* To run jsXe you should just run the java interpreter on the jsXe.jar file. There is a shell script or batch file included in the source tree for this purpose. Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-08-13 04:04:39 UTC (rev 1145) +++ trunk/jsxe/build.xml 2006-08-13 04:07:13 UTC (rev 1146) @@ -15,10 +15,10 @@ sourceview module (optional) => jsxe/jars/sourceview jsxe installer (optional) => jsxe/installer jsxe web module (optional) => web/ - jsmooth ant task (optional) => buildlib/ + launch4j (needed for win builds) => buildlib/launch4j --> -<project basedir="." default="usage" name="jsXe"> +<project basedir="." default="compile" name="jsXe"> <description>jsXe - Java Simple XML Editor</description> @@ -48,6 +48,12 @@ <property name="build.messages" value="${build.dir}/messages"/> <property name="docs.dir" value="${src.dir}/doc"/> <property name="plugin.dir" value="${root.dir}/jars"/> + <property name="jsxe.jar" value="${build.dir}/${app.name}.jar"/> + <!-- jar file needs to be relative to the exe --> + <property name="launch4j.jsxe.jar" value="${app.name}.jar"/> + <property name="jsxe.exe" value="${build.dir}/${app.name}.exe"/> + <!-- launch4j doesn't like the ./ in the front of the path --> + <property name="launch4j.jsxe.exe" value="build/${app.name}.exe"/> <property name="build.plugin" value="${build.dir}/jars"/> <property name="build.src" value="${build.dir}/src"/> <property name="build.dest" value="${build.dir}/classes"/> @@ -61,8 +67,9 @@ <!--<property name="app_version" value="${major.version}_${minor.version}beta"/>--> <property name="distbin.dir" value="${build.dir}/${app.name}-${app_version}-bin"/> <property name="distsrc.dir" value="${build.dir}/${app.name}-${app_version}-src"/> - <property name="jsmooth.project" value="${root.dir}/jsXe.jsmooth"/> - <property name="jsmooth.jar" value="${buildlib.dir}/jsmoothgen-ant.jar"/> + <property name="launch4j.dir" value="${buildlib.dir}/launch4j"/> + <property name="launch4j.config" value="${root.dir}/launch4j.xml"/> + <property name="launch4j.classpath" value="${launch4j.dir}/launch4j.jar:${launch4j.dir}/lib/xstream.jar"/> <!-- }}} --> <!-- {{{ installer directories --> <property name="installer.build.dir" value="${build.dir}/installer"/> @@ -70,10 +77,16 @@ <property name="installer.api.dir" value="${installer.build.dir}/api"/> <property name="installer.treeview.dir" value="${installer.build.dir}/treeview"/> <property name="installer.sourceview.dir" value="${installer.build.dir}/sourceview"/> + <property name="installer.win.dir" value="${installer.build.dir}/win"/> + <property name="installer.gnome.dir" value="${installer.build.dir}/gnome"/> <property name="installer.build.src" value="${installer.build.dir}/src"/> <property name="installer.build.dest" value="${installer.build.dir}/build"/> <property name="install.props" value="${installer.build.dest}/installer/install.props"/> <property name="installer.dir" value="${root.dir}/installer"/> + <property name="installer.launch4j.config" value="${installer.dir}/launch4j.xml"/> + <!-- launch4j doesn't like the ./ in the front of the path --> + <property name="installer.jar" value="build/${app.name}-${app_version}-install.jar"/> + <property name="installer.exe" value="build/${app.name}-${app_version}-install.exe"/> <!-- }}} --> <!-- {{{ installer props --> <property name="installer.main.class" value="installer.Install"/> @@ -85,8 +98,12 @@ <property name="app.license" value="gpl.html"/> <property name="ostask.unix-script.label" value="Install shortcut in:"/> <property name="ostask.unix-man.label" value="Install manual page in:"/> + <property name="ostask.unix-desktop.label" value="Install desktop launchers in:"/> + <property name="ostask.unix-desktop.shortcut" value="jsxe.desktop"/> + <property name="ostask.unix-desktop.pixmap" value="jsxe.png"/> + <!--<property name="ostask.unix-man.manpage" value="jsxe.1"/>--> - <property name="comp.count" value="4"/> + <property name="comp.count" value="5"/> <property name="comp.0.name" value="jsXe XML Editor"/> <!-- size values are set by the filesize task in the @@ -119,6 +136,15 @@ <property name="comp.3.real-size" value="6073"/>--> <property name="comp.3.fileset" value="jsxe-api"/> <property name="installer.build.api.tar" value="${installer.build.dest}/installer/${comp.3.fileset}.tar.bz2"/> + + <property name="comp.4.name" value="Windows Integration (highly recommended)"/> + <!-- size values are set by the filesize task in the + build-installer task --> + <!--<property name="comp.4.disk-size" value="7084"/> + <property name="comp.4.real-size" value="6073"/>--> + <property name="comp.4.fileset" value="jsxe-win"/> + <property name="comp.4.os" value="Windows"/> + <property name="installer.build.win.tar" value="${installer.build.dest}/installer/${comp.4.fileset}.tar.bz2"/> <!-- }}} --> <!-- {{{ java build properties --> <property name="javac.debug" value="on"/> @@ -144,7 +170,7 @@ </path> <path id="run-classpath"> - <pathelement location="${build.dir}/${app.name}.jar"/> + <pathelement location="${jsxe.jar}"/> <fileset dir="${lib.dir}"> <include name="**/*.jar"/> </fileset> @@ -152,13 +178,6 @@ <!-- }}} --> <!-- {{{ conditionals --> - <available file="${jsmooth.jar}" property="jsmooth.avail"/> - <condition property="windows.build"> - <and> - <os family="windows"/> - <istrue value="${jsmooth.avail}"/> - </and> - </condition> <!-- set whether we have the source for the default views --> @@ -166,6 +185,7 @@ <available file="${plugin.dir}" property="plugin.avail"/> <available file="${plugin.dir}/treeview/build.xml" property="treeview.avail"/> <available file="${plugin.dir}/sourceview/build.xml" property="sourceview.avail"/> + <available file="${launch4j.dir}" property="launch4j.avail"/> <available classname="org.apache.bsf.BSFException" property="bsf.avail"/> <available classname="org.mozilla.javascript.JavaScriptException" property="js.avail"/> @@ -177,21 +197,6 @@ <echo message="----------------------------------------------------------"/> </target> <!-- }}} --> - <!-- {{{ ============ Prints the available targets ===================== --> - <target depends="init" name="usage" description="Prints available targets"> - <echo message=" available targets are:"/> - <echo message=""/> - <echo message=" compile --> generates the ${app.name}.jar file."/> - <echo message=" also generates the jars for the tree view"/> - <echo message=" and source view plugins if available."/> - <echo message=" bin --> generates a binary distribution"/> - <echo message=" src --> generates a source distribution"/> - <echo message=" doc --> generates all documentation"/> - <echo message=" also updates the web api if the web module"/> - <echo message=" is available."/> - <echo message=" clean --> cleans everything up"/> - </target> - <!-- }}} --> <!-- {{{ ============ Prepares for any type of build =================== --> <target depends="init" name="prepare"> <mkdir dir="${build.dir}"/> @@ -247,6 +252,7 @@ <classpath refid="classpath"/> <include name="**/*.java"/> </javac> + <copy todir="${build.dest}"> <fileset dir="${build.src}"> <include name="**/*.props"/> @@ -280,7 +286,7 @@ </section> </manifest> - <jar jarfile="${build.dir}/${app.name}.jar" manifest="${build.dir}/${app.name}.manifest"> + <jar jarfile="${jsxe.jar}" manifest="${build.dir}/${app.name}.manifest"> <fileset dir="${build.dest}"> <include name="**/*.class"/> <include name="**/properties"/> @@ -361,8 +367,9 @@ <!-- {{{ ============ Builds the installer ============================= --> <target depends="compile, prepare-build, doc" name="build-installer" description="Builds the installer"> - <fail unless="js.avail" message="You must have the ${buildlib.dir}/js.jar in your classpath to build the installer. See http://ant.apache.org/manual/install.html#librarydependencies"/> - <fail unless="bsf.avail" message="You must have the ${buildlib.dir}/bsf.jar in your classpath to build the installer. See http://ant.apache.org/manual/install.html#librarydependencies"/> + <fail unless="js.avail" message="You must have the ${buildlib.dir}/js.jar in your classpath to build the installer. It is located in the ${buildlib.dir} directory. See http://ant.apache.org/manual/install.html#librarydependencies"/> + <fail unless="bsf.avail" message="You must have the ${buildlib.dir}/bsf.jar in your classpath to build the installer. It is located in the ${buildlib.dir} directory. See http://ant.apache.org/manual/install.html#librarydependencies"/> + <fail unless="launch4j.avail" message="You must install launch4j in ${launch4j.dir} or change the launch4j.dir property in build.xml"/> <fail unless="treeview.avail" message="You must have the treeview source available to build the installer."/> <fail unless="sourceview.avail" message="You must have the sourceview source available to build the installer."/> @@ -399,7 +406,13 @@ size += file.length(); } - project.setNewProperty(attributes.get("property"), Math.round(size/1024)); + + roundedSize = Math.round(size/1024); + + echo = project.createTask("echo"); + echo.setMessage("Size: "+roundedSize+"Kb"); + echo.perform(); + project.setNewProperty(attributes.get("property"), roundedSize); } ]]> </scriptdef> @@ -422,10 +435,18 @@ <!-- copy html files --> <copy todir="${installer.build.dest}/installer"> <fileset dir="${installer.dir}"> - <include name="**/*.html"/> + <include name="*.html"/> </fileset> </copy> + <!-- copy other files --> + <copy todir="${installer.build.dest}"> + <fileset dir="${installer.dir}"> + <exclude name="*.html"/> + <include name="*"/> + </fileset> + </copy> + <!-- {{{ create the program tar.bz2 file --> <mkdir dir="${installer.program.dir}"/> @@ -448,7 +469,7 @@ </fileset> </copy> - <copy file="${build.dir}/${app.name}.jar" tofile="${installer.program.dir}/${app.name}.jar"/> + <copy file="${jsxe.jar}" todir="${installer.program.dir}"/> <!-- lib --> <mkdir dir="${installer.program.dir}/lib"/> <copy todir="${installer.program.dir}/lib"> @@ -457,9 +478,6 @@ </fileset> </copy> - <!-- create the windows exe --> - <antcall target="build-exe"/> - <!-- create the tar.bz2 for the installer --> <tar basedir="${installer.program.dir}" includes="**/*" tarfile="${installer.build.dir}/${app.name}-${app_version}-program.tar"/> <bzip2 src="${installer.build.dir}/${app.name}-${app_version}-program.tar" destfile="${installer.build.program.tar}"/> @@ -551,6 +569,47 @@ <!-- }}} --> + <!-- {{{ create the win tar.bz2 file --> + + <!-- copy the lib directory so that the jsXe.exe can be run + from the build dir --> + <mkdir dir="${build.dir}/lib"/> + <copy todir="${build.dir}/lib"> + <fileset dir="${build.lib}"> + <include name="**/*"/> + </fileset> + </copy> + + <!-- create the windows exe --> + <taskdef name="launch4j" + classname="net.sf.launch4j.ant.Launch4jTask" + classpath="${launch4j.classpath}"/> + + <launch4j configFile="${launch4j.config}" + outfile="${launch4j.jsxe.exe}" + jarPath="${launch4j.jsxe.jar}" + /> + + <mkdir dir="${installer.win.dir}"/> + <copy file="${jsxe.exe}" todir="${installer.win.dir}" /> + + <tar basedir="${installer.win.dir}" includes="**/*" tarfile="${installer.build.dir}/${app.name}-${app_version}-win.tar"/> + <bzip2 src="${installer.build.dir}/${app.name}-${app_version}-win.tar" destfile="${installer.build.win.tar}"/> + <delete file="${installer.build.dir}/${app.name}-${app_version}-win.tar"/> + + <!-- find the file size of the files on disk and compressed files --> + <filesize property="comp.4.disk-size"> + <fileset dir="${installer.win.dir}"> + <include name="**/*"/> + </fileset> + </filesize> + + <filesize property="comp.4.real-size"> + <fileset file="${installer.build.win.tar}"/> + </filesize> + + <!-- }}} --> + <!-- {{{ create the install.props file --> <propertyfile comment="${app.name}'s installer properties" file="${install.props}"> <entry key="app.name" value="${app.name}"/> @@ -559,6 +618,10 @@ <entry key="app.license.title" value="${app.license.title}"/> <entry key="app.license" value="${app.license}"/> <entry key="ostask.unix-script.label" value="${ostask.unix-script.label}"/> + <entry key="ostask.unix-desktop.label" value="${ostask.unix-desktop.label}"/> + <entry key="ostask.unix-desktop.pixmap" value="${ostask.unix-desktop.pixmap}"/> + <entry key="ostask.unix-desktop.shortcut" value="${ostask.unix-desktop.shortcut}"/> + <!--<entry key="ostask.unix-man.label" value="${ostask.unix-man.label}"/>--> <entry key="comp.count" value="${comp.count}"/> <entry key="comp.0.name" value="${comp.0.name}"/> @@ -580,6 +643,13 @@ <entry key="comp.3.disk-size" value="${comp.3.disk-size}"/> <entry key="comp.3.real-size" value="${comp.3.real-size}"/> <entry key="comp.3.fileset" value="${comp.3.fileset}"/> + + <entry key="comp.4.name" value="${comp.4.name}"/> + <entry key="comp.4.disk-size" value="${comp.4.disk-size}"/> + <entry key="comp.4.real-size" value="${comp.4.real-size}"/> + <entry key="comp.4.fileset" value="${comp.4.fileset}"/> + <entry key="comp.4.os" value="${comp.4.os}"/> + </propertyfile> <!-- }}} --> @@ -595,7 +665,7 @@ <!-- }}} --> <!-- {{{ create the install jar --> - <jar jarfile="${build.dir}/${app.name}-${app_version}-install.jar" manifest="${installer.build.dir}/installer.manifest"> + <jar jarfile="${installer.jar}" manifest="${installer.build.dir}/installer.manifest"> <fileset dir="${installer.build.dest}"> <include name="**/*"/> </fileset> @@ -603,18 +673,16 @@ <!-- }}} --> </target> - <target name="build-exe" if="windows.build"> - <taskdef name="jsmoothgen" - classname="net.charabia.jsmoothgen.ant.JSmoothGen" - classpath="${jsmooth.jar}"/> - - <jsmoothgen project="${jsmooth.project}" skeletonroot="${buildlib.dir}/skeletons"/> - <copy todir="${installer.program.dir}" file="${build.dir}/jsXe.exe"/> - </target> <!-- }}} --> <!-- {{{ ============ Generates a windows distribution ================= --> - <target depends="build-installer" name="win" if="windows.build" description="Build a windows distribution"> + <target depends="build-installer" name="win" description="Build a windows distribution"> + <taskdef name="launch4j" + classname="net.sf.launch4j.ant.Launch4jTask" + classpath="${launch4j.classpath}"/> + <launch4j configFile="${installer.launch4j.config}" + jar="${installer.jar}" + outfile="${installer.exe}"/> </target> <!-- }}} --> <!-- {{{ ============ Generates the binary distribution ================ --> @@ -661,7 +729,7 @@ </fileset> </copy> - <copy file="${build.dir}/${app.name}.jar" tofile="${distbin.dir}/${app.name}.jar"/> + <copy file="${jsxe.jar}" todir="${distbin.dir}"/> <!-- lib --> <mkdir dir="${distbin.dir}/lib"/> <copy todir="${distbin.dir}/lib"> @@ -695,7 +763,7 @@ </fileset> </copy> - <!-- api --> + <!-- api --> <mkdir dir="${distsrc.dir}/doc/api"/> <copy todir="${distsrc.dir}/doc/api"> <fileset dir="${build.javadocs}"> @@ -747,7 +815,7 @@ <include name="**/*"/> </fileset> </copy> - <copy todir="${distsrc.dir}" file="${jsmooth.project}"/> + <copy todir="${distsrc.dir}" file="${launch4j.config}"/> <!-- messages --> <mkdir dir="${distsrc.dir}/messages"/> Deleted: trunk/jsxe/buildlib/jsmoothgen-ant.jar =================================================================== (Binary files differ) Copied: trunk/jsxe/installer/jsxe-installer.ico (from rev 1144, tags/05pre3/jsxe/installer/jsxe-installer.ico) =================================================================== (Binary files differ) Copied: trunk/jsxe/installer/jsxe.desktop (from rev 1144, tags/05pre3/jsxe/installer/jsxe.desktop) =================================================================== --- trunk/jsxe/installer/jsxe.desktop (rev 0) +++ trunk/jsxe/installer/jsxe.desktop 2006-08-13 04:07:13 UTC (rev 1146) @@ -0,0 +1,14 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=jsXe XML Editor +Name[ja]=jsXe XML エディタ +GenericName=XML Editor +GenericName[ja]= +Comment=Edit XML Documents +Comment[ja]= +Exec=jsxe +Icon=jsxe.png +StartupNotify=true +Terminal=false +Type=Application +Categories=GNOME;Application;Utility; \ No newline at end of file Copied: trunk/jsxe/installer/jsxe.png (from rev 1144, tags/05pre3/jsxe/installer/jsxe.png) =================================================================== (Binary files differ) Copied: trunk/jsxe/installer/launch4j.xml (from rev 1144, tags/05pre3/jsxe/installer/launch4j.xml) =================================================================== --- trunk/jsxe/installer/launch4j.xml (rev 0) +++ trunk/jsxe/installer/launch4j.xml 2006-08-13 04:07:13 UTC (rev 1146) @@ -0,0 +1,20 @@ +<launch4jConfig> + <dontWrapJar>false</dontWrapJar> + <headerType>0</headerType> + <jar>..\build\jsXe-05_pre3-install.jar</jar> + <outfile>..\build\jsxe-installer.exe</outfile> + <errTitle>jsXe Installer</errTitle> + <jarArgs></jarArgs> + <chdir></chdir> + <customProcName>true</customProcName> + <stayAlive>false</stayAlive> + <icon>jsxe-installer.ico</icon> + <jre> + <path></path> + <minVersion>1.4.2</minVersion> + <maxVersion></maxVersion> + <initialHeapSize>16</initialHeapSize> + <maxHeapSize>64</maxHeapSize> + <args></args> + </jre> +</launch4jConfig> \ No newline at end of file Modified: trunk/jsxe/installer/src/installer/OperatingSystem.java =================================================================== --- trunk/jsxe/installer/src/installer/OperatingSystem.java 2006-08-13 04:04:39 UTC (rev 1145) +++ trunk/jsxe/installer/src/installer/OperatingSystem.java 2006-08-13 04:07:13 UTC (rev 1146) @@ -22,321 +22,372 @@ */ public abstract class OperatingSystem { - public abstract String getInstallDirectory(String name, String version); + public abstract String getInstallDirectory(String name, String version); - public abstract static class OSTask - { - protected Install installer; - protected String name; - protected String label; - protected String directory; - protected boolean enabled; + public abstract static class OSTask + { + protected Install installer; + protected String name; + protected String label; + protected String directory; + protected boolean enabled; - public OSTask(Install installer, String name) - { - this.installer = installer; - this.name = name; - this.label = installer.getProperty("ostask." + name + ".label"); - this.directory = getDefaultDirectory(installer); + public OSTask(Install installer, String name) + { + this.installer = installer; + this.name = name; + this.label = installer.getProperty("ostask." + name + ".label"); + this.directory = getDefaultDirectory(installer); - // on by default - enabled = true; - } + // on by default + enabled = true; + } - public String getName() - { - return name; - } + public String getName() + { + return name; + } - public String getLabel() - { - return label; - } + public String getLabel() + { + return label; + } - public String getDefaultDirectory(Install installer) - { - return null; - } + public String getDefaultDirectory(Install installer) + { + return null; + } - public String getDirectory() - { - return directory; - } + public String getDirectory() + { + return directory; + } - public boolean isEnabled() - { - return enabled; - } + public boolean isEnabled() + { + return enabled; + } - public void setEnabled(boolean enabled) - { - this.enabled = enabled; - } + public void setEnabled(boolean enabled) + { + this.enabled = enabled; + } - public void setDirectory(String directory) - { - this.directory = directory; - } + public void setDirectory(String directory) + { + this.directory = directory; + } - public abstract void perform(String installDir, - Vector filesets) throws IOException; - } + public abstract void perform(String installDir, + Vector filesets) throws IOException; + } - public OSTask[] getOSTasks(Install installer) - { - return new OSTask[0]; - } + public OSTask[] getOSTasks(Install installer) + { + return new OSTask[0]; + } - public void mkdirs(String directory) throws IOException - { - File file = new File(directory); - if(!file.exists()) - file.mkdirs(); - } + public void mkdirs(String directory) throws IOException + { + File file = new File(directory); + if(!file.exists()) + file.mkdirs(); + } - public static OperatingSystem getOperatingSystem() - { - if(os != null) - return os; + public static OperatingSystem getOperatingSystem() + { + if(os != null) + return os; - if(System.getProperty("mrj.version") != null) - os = new MacOS(); - else - { - String osName = System.getProperty("os.name"); - if(osName.indexOf("Windows") != -1) - os = new Windows(); - else if(osName.indexOf("OS/2") != -1) - os = new HalfAnOS(); - else if(osName.indexOf("VMS") != -1) - os = new VMS(); - else - os = new Unix(); - } + if(System.getProperty("mrj.version") != null) + os = new MacOS(); + else + { + String osName = System.getProperty("os.name"); + if(osName.indexOf("Windows") != -1) + os = new Windows(); + else if(osName.indexOf("OS/2") != -1) + os = new HalfAnOS(); + else if(osName.indexOf("VMS") != -1) + os = new VMS(); + else + os = new Unix(); + } - return os; - } + return os; + } - public static class Unix extends OperatingSystem - { - public String getInstallDirectory(String name, String version) - { - String dir = "/usr/local/share/"; - if(!new File(dir).canWrite()) - dir = System.getProperty("user.home"); + public static class Unix extends OperatingSystem + { + public String getInstallDirectory(String name, String version) + { + String dir = "/usr/local/share/"; + if(!new File(dir).canWrite()) + dir = System.getProperty("user.home"); - return new File(dir,name.toLowerCase() + "/" + version).getPath(); - } + return new File(dir,name.toLowerCase() + "/" + version).getPath(); + } - public class ScriptOSTask extends OSTask - { - public ScriptOSTask(Install installer) - { - super(installer,"unix-script"); - } + public class ScriptOSTask extends OSTask + { + public ScriptOSTask(Install installer) + { + super(installer,"unix-script"); + } - public String getDefaultDirectory(Install installer) - { - String dir = "/usr/local/"; - if(!new File(dir).canWrite()) - dir = System.getProperty("user.home"); + public String getDefaultDirectory(Install installer) + { + String dir = "/usr/local/"; + if(!new File(dir).canWrite()) + dir = System.getProperty("user.home"); - return new File(dir,"bin").getPath(); - } + return new File(dir,"bin").getPath(); + } - public void perform(String installDir, - Vector filesets) throws IOException - { - if(!enabled) - return; + public void perform(String installDir, + Vector filesets) throws IOException + { + if(!enabled) + return; - mkdirs(directory); + mkdirs(directory); - String name = installer.getProperty("app.name"); + String name = installer.getProperty("app.name"); + + //jsxe specific: this is needed for java to load our xerces rather + // than the one included with java. + String vmArgs = "-Djava.endorsed.dirs=\""+installDir + File.separator+"lib\""; - // create app start script - String script = directory + File.separatorChar - + name.toLowerCase(); + // create app start script + String script = directory + File.separatorChar + + name.toLowerCase(); - // Delete existing copy - new File(script).delete(); + // Delete existing copy + new File(script).delete(); - // Write simple script - FileWriter out = new FileWriter(script); - out.write("#!/bin/sh\n"); - out.write("# Java heap size, in megabytes\n"); - out.write("JAVA_HEAP_SIZE=32\n"); - out.write("DEFAULT_JAVA_HOME=\"" - + System.getProperty("java.home") - + "\"\n"); - out.write("if [ \"$JAVA_HOME\" = \"\" ]; then\n"); - out.write("JAVA_HOME=\"$DEFAULT_JAVA_HOME\"\n"); - out.write("fi\n"); + // Write simple script + FileWriter out = new FileWriter(script); + out.write("#!/bin/sh\n"); + out.write("# Java heap size, in megabytes\n"); + out.write("JAVA_HEAP_SIZE=32\n"); + out.write("DEFAULT_JAVA_HOME=\"" + + System.getProperty("java.home") + + "\"\n"); + out.write("if [ \"$JAVA_HOME\" = \"\" ]; then\n"); + out.write("JAVA_HOME=\"$DEFAULT_JAVA_HOME\"\n"); + out.write("fi\n"); - out.write("exec \"$JAVA_HOME" - + "/bin/java\" -mx${JAVA_HEAP_SIZE}m ${" - + name.toUpperCase() + "} "); + out.write("exec \"$JAVA_HOME" + + "/bin/java\" -mx${JAVA_HEAP_SIZE}m "+vmArgs+" ${" + + name.toUpperCase() + "} "); - String jar = installDir + File.separator - + name.toLowerCase() + ".jar"; + // String jar = installDir + File.separator + // + name.toLowerCase() + ".jar"; + + String jar = installDir + File.separator + + name + ".jar"; - out.write("-jar \"" + jar + "\" $@\n"); + out.write("-jar \"" + jar + "\" $@\n"); - out.close(); + out.close(); - // Make it executable - String[] chmodArgs = { "chmod", "755", script }; - exec(chmodArgs); - } - } + // Make it executable + String[] chmodArgs = { "chmod", "755", script }; + exec(chmodArgs); + } + } + + public class DesktopOSTask extends OSTask { + + public DesktopOSTask(Install installer) { + super(installer,"unix-desktop"); + } - public class ManPageOSTask extends OSTask - { - public ManPageOSTask(Install installer) - { - super(installer,"unix-man"); - } + public String getDefaultDirectory(Install installer) { + String dir = "/usr/local/"; + if (!new File(dir).canWrite()) { + dir = System.getProperty("user.home"); + } - public String getDefaultDirectory(Install installer) - { - String dir = "/usr/local/"; - if(!new File(dir).canWrite()) - dir = System.getProperty("user.home"); + return new File(dir,"share").getPath(); + } - return new File(dir,"man/man1").getPath(); - } + public void perform(String installDir, + Vector filesets) throws IOException + { + if (!enabled) { + return; + } - public void perform(String installDir, - Vector filesets) throws IOException - { - if(!enabled) - return; + mkdirs(directory); + mkdirs(directory+"/applications"); + mkdirs(directory+"/pixmaps"); - mkdirs(directory); + String name = installer.getProperty("app.name"); - String name = installer.getProperty("app.name"); + // install shortcut + String shortcut = installer.getProperty("ostask.unix-desktop.shortcut"); + String pixmap = installer.getProperty("ostask.unix-desktop.pixmap"); - // install man page - String manpage = installer.getProperty("ostask.unix-man.manpage"); + if (shortcut != null) { + InputStream in = getClass().getResourceAsStream("/" + shortcut); + installer.copy(in, new File(directory+"/applications",shortcut).getPath(), null); + } + if (pixmap != null) { + InputStream in = getClass().getResourceAsStream("/" + pixmap); + installer.copy(in, new File(directory+"/pixmaps", pixmap).getPath(), null); + } + } + } + + public class ManPageOSTask extends OSTask + { + public ManPageOSTask(Install installer) + { + super(installer,"unix-man"); + } - InputStream in = getClass().getResourceAsStream("/" + manpage); - installer.copy(in,new File(directory,manpage).getPath(), - null); - } - } + public String getDefaultDirectory(Install installer) + { + String dir = "/usr/local/"; + if(!new File(dir).canWrite()) + dir = System.getProperty("user.home"); - public OSTask[] getOSTasks(Install installer) - { - return new OSTask[] { new ScriptOSTask(installer), - new ManPageOSTask(installer) }; - } + return new File(dir,"man/man1").getPath(); + } - public void mkdirs(String directory) throws IOException - { - File file = new File(directory); - if(!file.exists()) - { - String[] mkdirArgs = { "mkdir", "-m", "755", - "-p", directory }; - exec(mkdirArgs); - } - } + public void perform(String installDir, + Vector filesets) throws IOException + { + if(!enabled) + return; - public void exec(String[] args) throws IOException - { - Process proc = Runtime.getRuntime().exec(args); - proc.getInputStream().close(); - proc.getOutputStream().close(); - proc.getErrorStream().close(); - try - { - proc.waitFor(); - } - catch(InterruptedException ie) - { - } - } - } + mkdirs(directory); - public static class MacOS extends Unix - { - public String getInstallDirectory(String name, String version) - { - return "/Applications/" + name + " " + version; - } - } + String name = installer.getProperty("app.name"); - public static class Windows extends OperatingSystem - { - public String getInstallDirectory(String name, String version) - { - return "C:\\Program Files\\" + name + " " + version; - } + // install man page + String manpage = installer.getProperty("ostask.unix-man.manpage"); - public class JEditLauncherOSTask extends OSTask - { - public JEditLauncherOSTask(Install installer) - { - super(installer,"jedit-launcher"); - } + if (manpage != null) { + InputStream in = getClass().getResourceAsStream("/" + manpage); + installer.copy(in, new File(directory,manpage).getPath(), null); + } + } + } - public String getDefaultDirectory(Install installer) - { - return null; - } + public OSTask[] getOSTasks(Install installer) + { + return new OSTask[] { new ScriptOSTask(installer), + new ManPageOSTask(installer), new DesktopOSTask(installer) }; + } - public void perform(String installDir, - Vector filesets) - { - if(!enabled - || !filesets.contains("jedit-windows")) - return; + public void mkdirs(String directory) throws IOException + { + File file = new File(directory); + if(!file.exists()) + { + String[] mkdirArgs = { "mkdir", "-m", "755", + "-p", directory }; + exec(mkdirArgs); + } + } - // run jEditLauncher installation - File executable = new File(installDir,"jedit.exe"); - if(!executable.exists()) - return; + public void exec(String[] args) throws IOException + { + Process proc = Runtime.getRuntime().exec(args); + proc.getInputStream().close(); + proc.getOutputStream().close(); + proc.getErrorStream().close(); + try + { + proc.waitFor(); + } + catch(InterruptedException ie) + { + } + } + } - String[] args = { executable.getPath(), "/i", - System.getProperty("java.home") - + File.separator - + "bin" }; + public static class MacOS extends Unix + { + public String getInstallDirectory(String name, String version) + { + return "/Applications/" + name + " " + version; + } + } - try - { - Runtime.getRuntime().exec(args).waitFor(); - } - catch(IOException io) - { - } - catch(InterruptedException ie) - { - } - } - } + public static class Windows extends OperatingSystem + { + public String getInstallDirectory(String name, String version) + { + return "C:\\Program Files\\" + name + " " + version; + } - public OSTask[] getOSTasks(Install installer) - { - return new OSTask[] { /* new JEditLauncherOSTask(installer) */ }; - } - } + public class JEditLauncherOSTask extends OSTask + { + public JEditLauncherOSTask(Install installer) + { + super(installer,"jedit-launcher"); + } - public static class HalfAnOS extends OperatingSystem - { - public String getInstallDirectory(String name, String version) - { - return "C:\\" + name + " " + version; - } - } + public String getDefaultDirectory(Install installer) + { + return null; + } - public static class VMS extends OperatingSystem - { - public String getInstallDirectory(String name, String version) - { - return "./" + name.toLowerCase() + "/" + version; - } - } + public void perform(String installDir, + Vector filesets) + { + if(!enabled + || !filesets.contains("jedit-windows")) + return; - // private members - private static OperatingSystem os; + // run jEditLauncher installation + File executable = new File(installDir,"jedit.exe"); + if(!executable.exists()) + return; + + String[] args = { executable.getPath(), "/i", + System.getProperty("java.home") + + File.separator + + "bin" }; + + try + { + Runtime.getRuntime().exec(args).waitFor(); + } + catch(IOException io) + { + } + catch(InterruptedException ie) + { + } + } + } + + public OSTask[] getOSTasks(Install installer) + { + return new OSTask[] { /* new JEditLauncherOSTask(installer) */ }; + } + } + + public static class HalfAnOS extends OperatingSystem + { + public String getInstallDirectory(String name, String version) + { + return "C:\\" + name + " " + version; + } + } + + public static class VMS extends OperatingSystem + { + public String getInstallDirectory(String name, String version) + { + return "./" + name.toLowerCase() + "/" + version; + } + } + + // private members + private static OperatingSystem os; } Deleted: trunk/jsxe/jsXe.jsmooth =================================================================== --- trunk/jsxe/jsXe.jsmooth 2006-08-13 04:04:39 UTC (rev 1145) +++ trunk/jsxe/jsXe.jsmooth 2006-08-13 04:07:13 UTC (rev 1146) @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<jsmoothproject> -<JVMSearchPath>registry</JVMSearchPath> -<JVMSearchPath>javahome</JVMSearchPath> -<JVMSearchPath>jrepath</JVMSearchPath> -<JVMSearchPath>jdkpath</JVMSearchPath> -<JVMSearchPath>exepath</JVMSearchPath> -<JVMSearchPath>jview</JVMSearchPath> -<classPath>build\jsXe.jar</classPath> -<embeddedJar>false</embeddedJar> -<executableName>build\jsXe.exe</executableName> -<iconLocation>src\net\sourceforge\jsxe\icons\jsxe.jpg</iconLocation> -<initialMemoryHeap>16777216</initialMemoryHeap> -<javaProperties> -<name>java.endorsed.dirs</name> -<value>lib</value> -</javaProperties> -<mainClassName>net.sourceforge.jsxe.jsXe</mainClassName> -<maximumMemoryHeap>67108864</maximumMemoryHeap> -<maximumVersion></maximumVersion> -<minimumVersion>1.4.2</minimumVersion> -<skeletonName>Windowed Wrapper</skeletonName> -<skeletonProperties> -<key>Message</key> -<value>Java has not been found on your computer. Do you want to download it?</value> -</skeletonProperties> -<skeletonProperties> -<key>URL</key> -<value>http://www.java.com</value> -</skeletonProperties> -<skeletonProperties> -<key>SingleProcess</key> -<value>0</value> -</skeletonProperties> -<skeletonProperties> -<key>Debug</key> -<value>0</value> -</skeletonProperties> -</jsmoothproject> Copied: trunk/jsxe/jsxe.ico (from rev 1144, tags/05pre3/jsxe/jsxe.ico) =================================================================== (Binary files differ) Copied: trunk/jsxe/launch4j.xml (from rev 1144, tags/05pre3/jsxe/launch4j.xml) =================================================================== --- trunk/jsxe/launch4j.xml (rev 0) +++ trunk/jsxe/launch4j.xml 2006-08-13 04:07:13 UTC (rev 1146) @@ -0,0 +1,23 @@ +<launch4jConfig> + <dontWrapJar>true</dontWrapJar> + <headerType>0</headerType> + <jar>jsXe.jar</jar> + <outfile>build\jsXe.exe</outfile> + <errTitle>jsXe</errTitle> + <jarArgs></jarArgs> + <chdir></chdir> + <customProcName>true</customProcName> + <stayAlive>false</stayAlive> + <icon>jsxe.ico</icon> + <jre> + <path></path> + <minVersion>1.4.2</minVersion> + <maxVersion></maxVersion> + <initialHeapSize>16</initialHeapSize> + <maxHeapSize>64</maxHeapSize> + <args>-Djava.endorsed.dirs=lib + + +</args> + </jre> +</launch4jConfig> \ No newline at end of file Modified: trunk/jsxe/messages/messages.ja =================================================================== --- trunk/jsxe/messages/messages.ja 2006-08-13 04:04:39 UTC (rev 1145) +++ trunk/jsxe/messages/messages.ja 2006-08-13 04:07:13 UTC (rev 1146) @@ -9,12 +9,25 @@ common.ok=決定 common.cancel=キャンセル +common.open=開く +common.save=保存 +common.save.as=名前を付けて保存 +common.close=閉じる common.apply=適用 +common.more=次 +common.insert=インサート common.add=追加 common.remove=削除 +common.moveUp=上げる +common.moveDown=下げる + +#common.ctrl=Ctrl +#common.alt=Alt +#common.shift=Shift +#common.meta=Meta -#}}} - +#}}} + #{{{ XML Terminology #{{{ XML Node Types @@ -22,9 +35,11 @@ xml.processing.instruction=処理命令 xml.cdata=CDATAセクション xml.text=テキスト -xml.entity.reference=エンティティ参照 +xml.entity.reference=エンティティ参照 +#xml.declaration=Element Declaration xml.notation=表記法 -xml.entity=エンティティ +xml.entity=エンティティ +#xml.entity=Entity Declaration xml.comment=コメント xml.attribute=属性 xml.doctype=文書型 @@ -35,7 +50,8 @@ xml.document=XMLドキュメント xml.namespace=ネームスペース xml.namespace.prefix=ネームスペース前置修飾子 -xml.namespace.prefix.short=前置修飾子 +xml.namespace.prefix.short=前置修飾子 +#xml.namespace.decl=Namespace Declaration xml.doctypedef=文書型 xml.doctype.name=DTDの名前 xml.doctype.public=公開識別子 @@ -43,6 +59,38 @@ xml.schema=XMLスキーマ #}}} + +#{{{ Global Options +Global.Options.Dialog.Title=Global Options +Global.Options.Title=General +Global.Options.Max.Recent.Files=最近使用したドキュメント数: +Global.Options.Max.Recent.Files.ToolTip=最近使用したドキュメントのメニューに表示するドキュメントの数 +Global.Options.network-off=Always cache without asking +Global.Options.network-cache=Ask first, then cache remote files +Global.Options.network-always=Always download without asking +Global.Options.network=DTDとXMLスキーマ ダウンロード: +Global.Options.Menu.Spill.Over=Number of items before menus spill over: +Global.Options.Undos.To.Remember=元に戻す数: +Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXeは元に戻すために、この操作数を覚える.<BR> しかし, ビューを変わったら、覚えることはできません。</HTML> + +Shortcuts.Options.Title=ショットカット +Shortcuts.Options.Select.Label=ショットカットを編集: +Shortcuts.Options.Shortcut=ショットカット +Shortcuts.Options.Command=コマンド + +Grab.Key.title=ショットカットを選択 +Grab.Key.caption="{0}" のショットカットを選択して、決定を押してくただい。 +Grab.Key.keyboard-test=Input the key strokes that are causing problems. +Grab.Key.assigned-to=今登録されたコマンド: {0} +Grab.Key.assigned-to.none=<なし> +Grab.Key.clear=クリア +Grab.Key.remove=今のショットカットを削除 + +Grab.Key.remove-ask.title=ショットカットを削除? +Grab.Key.remove-ask.message=\ + 新しいショットカットは選択されてなかった。\n\ + 今のショットカットを削除? +#}}} #{{{ Document Options Document.Options.Title=ドキュメント設定 @@ -57,18 +105,31 @@ Tools.Menu=ツール View.Menu=表示 -#{{{ File Menu Items -open-file.label=開く... -save-file.label=保管 -reload-file.label=再ロード -close-file.label=閉じる -close-all.label=すべてを閉じる -exit.label=終了 +#{{{ Action Labels +new-file.label=新規作成 +open-file.label=開く... +File.Recent=最近使用したドキュメント +File.Recent.None=最近使用したドキュメントはありません +save-file.label=保存 +save-as.label=名前を付けて保存... +reload-file.label=再ロード +close-file.label=閉じる +close-all.label=すべて閉じる +exit.label=終了 + +undo.label=元に戻す +redo.label=やり直し +cut.label=切り取り +copy.label=コピー +paste.label=貼り付け +find.label=探索... +findnext.label=次を探索 + +document-options.label=ドキュメント設定... +plugin-manager.label=プラグインマネジャー... +about-jsxe.label=jsXeについて... #}}} -document-options.label=ドキュメント設定... -about-jsxe.label=jsXeについて... - #}}} #{{{ Dialogs @@ -89,4 +150,5 @@ ホームページ: http://jsxe.sourceforge.net/ #}}} -#}}} \ No newline at end of file +#}}} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-18 16:07:21
|
Revision: 1156 Author: ian_lewis Date: 2006-08-18 09:07:10 -0700 (Fri, 18 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1156&view=rev Log Message: ----------- merge from the 0.5pre3 branch Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/messages/messages trunk/jsxe/messages/messages.de trunk/jsxe/messages/messages.ja trunk/jsxe/messages/messages.ru trunk/jsxe/src/net/sourceforge/jsxe/gui/Messages.java Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-18 15:53:11 UTC (rev 1155) +++ trunk/jsxe/Changelog 2006-08-18 16:07:10 UTC (rev 1156) @@ -1,3 +1,7 @@ +08/17/2006 Ian Lewis <Ian...@me...> + + * Updated the German translation thanks to Dieter Steiner + 08/12/2006 Ian Lewis <Ian...@me...> * Added support for running jsXe in a wrapped exe using launch4j. Modified: trunk/jsxe/messages/messages =================================================================== --- trunk/jsxe/messages/messages 2006-08-18 15:53:11 UTC (rev 1155) +++ trunk/jsxe/messages/messages 2006-08-18 16:07:10 UTC (rev 1156) @@ -280,6 +280,7 @@ \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ Translators:\n\ \ \ \ \ German (de) - Bianca Shöen\n\ + \ \ \ \ German (de) - Dieter Steiner <spo...@gm...>\n\ \ \ \ \ Swedish (sv) - Patrik Johansson <pa...@it...>\n\ \ \ \ \ Russian (ru) - Alexandr Gridnev <ale...@ya...>\n\n\ Past Contributers:\n\ Modified: trunk/jsxe/messages/messages.de =================================================================== (Binary files differ) Modified: trunk/jsxe/messages/messages.ja =================================================================== --- trunk/jsxe/messages/messages.ja 2006-08-18 15:53:11 UTC (rev 1155) +++ trunk/jsxe/messages/messages.ja 2006-08-18 16:07:10 UTC (rev 1156) @@ -1,23 +1,23 @@ -# JSXE Japanese properties file -# $Id$ -# Maintained by Ian Lewis -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -#{{{ common properties - -common.ok=決定 -common.cancel=キャンセル +# JSXE Japanese properties file +# $Id$ +# Maintained by Ian Lewis +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +#{{{ common properties + +common.ok=決定 +common.cancel=キャンセル common.open=開く common.save=保存 common.save.as=名前を付けて保存 common.close=閉じる -common.apply=適用 +common.apply=適用 common.more=次 common.insert=インサート -common.add=追加 -common.remove=削除 +common.add=追加 +common.remove=削除 common.moveUp=上げる common.moveDown=下げる @@ -25,41 +25,41 @@ #common.alt=Alt #common.shift=Shift #common.meta=Meta - + #}}} -#{{{ XML Terminology - -#{{{ XML Node Types -xml.element=要素 -xml.processing.instruction=処理命令 -xml.cdata=CDATAセクション -xml.text=テキスト +#{{{ XML Terminology + +#{{{ XML Node Types +xml.element=要素 +xml.processing.instruction=処理命令 +xml.cdata=CDATAセクション +xml.text=テキスト xml.entity.reference=エンティティ参照 -#xml.declaration=Element Declaration -xml.notation=表記法 +#xml.declaration=Element Declaration +xml.notation=表記法 xml.entity=エンティティ -#xml.entity=Entity Declaration -xml.comment=コメント -xml.attribute=属性 -xml.doctype=文書型 -#}}} - -xml.attribute.value.short=値 -xml.attribute.value=属性値 -xml.document=XMLドキュメント -xml.namespace=ネームスペース -xml.namespace.prefix=ネームスペース前置修飾子 +#xml.entity=Entity Declaration +xml.comment=コメント +xml.attribute=属性 +xml.doctype=文書型 +#}}} + +xml.attribute.value.short=値 +xml.attribute.value=属性値 +xml.document=XMLドキュメント +xml.namespace=ネームスペース +xml.namespace.prefix=ネームスペース前置修飾子 xml.namespace.prefix.short=前置修飾子 -#xml.namespace.decl=Namespace Declaration -xml.doctypedef=文書型 -xml.doctype.name=DTDの名前 -xml.doctype.public=公開識別子 -xml.doctype.system=システム識別子 -xml.schema=XMLスキーマ - -#}}} +#xml.namespace.decl=Namespace Declaration +xml.doctypedef=文書型 +xml.doctype.name=DTDの名前 +xml.doctype.public=公開識別子 +xml.doctype.system=システム識別子 +xml.schema=XMLスキーマ +#}}} + #{{{ Global Options Global.Options.Dialog.Title=Global Options Global.Options.Title=General @@ -91,20 +91,20 @@ 新しいショットカットは選択されてなかった。\n\ 今のショットカットを削除? #}}} - -#{{{ Document Options -Document.Options.Title=ドキュメント設定 -Document.Options.Encoding=エンコーディング: -#}}} - -#{{{ Menu Items - -File.Menu=ファイル -Edit.Menu=編集 -Help.Menu=ヘルプ -Tools.Menu=ツール -View.Menu=表示 - + +#{{{ Document Options +Document.Options.Title=ドキュメント設定 +Document.Options.Encoding=エンコーディング: +#}}} + +#{{{ Menu Items + +File.Menu=ファイル +Edit.Menu=編集 +Help.Menu=ヘルプ +Tools.Menu=ツール +View.Menu=表示 + #{{{ Action Labels new-file.label=新規作成 open-file.label=開く... @@ -127,28 +127,29 @@ document-options.label=ドキュメント設定... plugin-manager.label=プラグインマネジャー... -about-jsxe.label=jsXeについて... -#}}} - -#}}} - -#{{{ Dialogs - -#{{{ About dialag -about.title=jsXeについて -about.message=Released under the terms of the GNU General Public License\n\n\ - Active Contributors:\n\ - \ \ \ \ Ian Lewis <Ian...@me...>\n\ - \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ - 翻訳者:\n\ - \ \ \ \ ドイツ語 (de) - Bianca Shöen\n\ - \ \ \ \ スウェーデン語 (sv) - Patrik Johansson <pa...@it...>\n\n\ - Past Contributers:\n\ - \ \ \ \ Aaron Flatten <afl...@us...>\n\ - \ \ \ \ Bilel Remmache <rb...@us...>\n\ - \ \ \ \ SVM <svm...@us...>\n\n\ - ホームページ: http://jsxe.sourceforge.net/ -#}}} - +about-jsxe.label=jsXeについて... #}}} +#}}} + +#{{{ Dialogs + +#{{{ About dialag +about.title=jsXeについて +about.message=Released under the terms of the GNU General Public License\n\n\ + Active Contributors:\n\ + \ \ \ \ Ian Lewis <Ian...@me...>\n\ + \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ + 翻訳者:\n\ + \ \ \ \ ドイツ語 (de) - Bianca Shöen\n\ + \ \ \ \ ドイツ語 (de) - Dieter Steiner <spo...@gm...>\n\ + \ \ \ \ スウェーデン語 (sv) - Patrik Johansson <pa...@it...>\n\n\ + Past Contributers:\n\ + \ \ \ \ Aaron Flatten <afl...@us...>\n\ + \ \ \ \ Bilel Remmache <rb...@us...>\n\ + \ \ \ \ SVM <svm...@us...>\n\n\ + ホームページ: http://jsxe.sourceforge.net/ +#}}} + +#}}} + Modified: trunk/jsxe/messages/messages.ru =================================================================== --- trunk/jsxe/messages/messages.ru 2006-08-18 15:53:11 UTC (rev 1155) +++ trunk/jsxe/messages/messages.ru 2006-08-18 16:07:10 UTC (rev 1156) @@ -271,6 +271,7 @@ \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ Переводчики:\n\ \ \ \ \ German (de) - Bianca Sh\u00f6en\n\ + \ \ \ \ German (de) - Dieter Steiner <spo...@gm...>\n\ \ \ \ \ Swedish (sv) - Patrik Johansson <pa...@it...>\n\n\ В прошлом учавствовали в разработке:\n\ \ \ \ \ Aaron Flatten <afl...@us...>\n\ Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/Messages.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/Messages.java 2006-08-18 15:53:11 UTC (rev 1155) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/Messages.java 2006-08-18 16:07:10 UTC (rev 1156) @@ -94,7 +94,7 @@ // // Locale.setDefault(new Locale("sv")); // // Locale.setDefault(Locale.GERMANY); // // Locale.setDefault(Locale.JAPAN); - // Locale.setDefault(new Locale("ru", "RU")); + // // Locale.setDefault(new Locale("ru", "RU")); // } private static Locale m_locale = Locale.getDefault(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-27 13:34:54
|
Revision: 1165 Author: ian_lewis Date: 2006-08-27 06:30:41 -0700 (Sun, 27 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1165&view=rev Log Message: ----------- merge from the 0.5pre3 branch Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/messages/messages trunk/jsxe/messages/messages.ru trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-23 03:42:41 UTC (rev 1164) +++ trunk/jsxe/Changelog 2006-08-27 13:30:41 UTC (rev 1165) @@ -1,3 +1,12 @@ +08/21/2006 Ian Lewis <Ian...@me...> + + * Updated russian translation. + +08/18/2006 Ian Lewis <Ian...@me...> + + * Added a hack to disable view specific actions that aren't implemented by + the view. + 08/17/2006 Ian Lewis <Ian...@me...> * Updated the German translation thanks to Dieter Steiner Modified: trunk/jsxe/messages/messages =================================================================== --- trunk/jsxe/messages/messages 2006-08-23 03:42:41 UTC (rev 1164) +++ trunk/jsxe/messages/messages 2006-08-27 13:30:41 UTC (rev 1165) @@ -20,6 +20,7 @@ common.remove=Remove common.moveUp=Move Up common.moveDown=Move Down +common.find=Find common.ctrl=Ctrl common.alt=Alt Modified: trunk/jsxe/messages/messages.ru =================================================================== --- trunk/jsxe/messages/messages.ru 2006-08-23 03:42:41 UTC (rev 1164) +++ trunk/jsxe/messages/messages.ru 2006-08-27 13:30:41 UTC (rev 1165) @@ -1,5 +1,5 @@ # JSXE English properties file -# $Id: +# $Id: messages 1158 2006-08-18 18:42:18Z ian_lewis $ # Maintained by Alexandr Gridnev (ale...@ya...) #:mode=properties: #:tabSize=4:indentSize=4:noTabs=true: @@ -20,11 +20,7 @@ common.remove=Удалить common.moveUp=Поднять common.moveDown=Опустить -common.cut=Вырезать -common.copy=Копировать -common.paste=Вставить -common.find=Искать... -common.findnext=Искать следующий +common.find=Искать common.ctrl=Ctrl common.alt=Alt @@ -73,6 +69,8 @@ Global.Options.network-always=Скачивать всегда, без спросу Global.Options.network=Скачивание DTD и схемы: Global.Options.Menu.Spill.Over=Меню выпадают после: +Global.Options.Undos.To.Remember=Запомнить действий: +Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXe запомнит столько действий и потом их можно будет отменить.<BR> Однако он не может запомнить действия, выполненные после переключения видов</HTML> Shortcuts.Options.Title=Горячие клавиши Shortcuts.Options.Select.Label=Редактировать горячие клавиши: @@ -140,7 +138,10 @@ Tools.Menu=Инструменты Help.Menu=Справка -#{{{ File Menu Items + +#}}} + +#{{{ Action Labels new-file.label=Новый open-file.label=Открыть... File.Recent=Ранее открытые файлы @@ -148,16 +149,25 @@ save-file.label=Сохранить save-as.label=Сохранить как... reload-file.label=Открыть еще раз +File.Recent=Ранее открытые файлы close-file.label=Закрыть close-all.label=Закрыть все exit.label=Выход -#}}} +undo.label=Отменить +redo.label=Повторить +cut.label=Вырезать +copy.label=Копировать +paste.label=Вставить +find.label=Искать... +findnext.label=Искать далее + general-options.label=Глобальные опции... document-options.label=Опции документа... plugin-manager.label=Менеджер плагинов... validation-errors.label=Ошибки подтверждения... about-jsxe.label=О программе jsXe... + #}}} #{{{ Messages Modified: trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java 2006-08-23 03:42:41 UTC (rev 1164) +++ trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java 2006-08-27 13:30:41 UTC (rev 1165) @@ -33,6 +33,7 @@ import net.sourceforge.jsxe.util.Log; import net.sourceforge.jsxe.util.MiscUtilities; import net.sourceforge.jsxe.msg.PropertyChanged; +import net.sourceforge.jsxe.action.ViewSpecificAction; //}}} //{{{ Java classes Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-23 03:42:41 UTC (rev 1164) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-27 13:30:41 UTC (rev 1165) @@ -428,6 +428,7 @@ menubar.add(m_fileMenu); + createEditMenu(); menubar.add(m_editMenu); //Add View Specific Menus @@ -572,6 +573,86 @@ }//}}} + //{{{ createEditMenu() + + private void createEditMenu() { + m_editMenu = new JMenu(Messages.getMessage("Edit.Menu")); + m_editMenu.setMnemonic('E'); + + DocumentView view = getDocumentView(); + JMenuItem menuItem = new JMenuItem(ActionManager.getAction("undo")); + m_editMenu.add(menuItem); + menuItem = new JMenuItem(ActionManager.getAction("redo")); + m_editMenu.add(menuItem); + m_editMenu.addSeparator(); + Action action = ActionManager.getAction("cut"); + if (view != null) { + String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".cut"; + if (ActionManager.getLocalizedAction(name) == null) { + action.setEnabled(false); + } else { + action.setEnabled(true); + } + } else { + action.setEnabled(false); + } + menuItem = new JMenuItem(action); + m_editMenu.add(menuItem); + action = ActionManager.getAction("copy"); + if (view != null) { + String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".copy"; + if (ActionManager.getLocalizedAction(name) == null) { + action.setEnabled(false); + } else { + action.setEnabled(true); + } + } else { + action.setEnabled(false); + } + menuItem = new JMenuItem(action); + m_editMenu.add(menuItem); + action = ActionManager.getAction("paste"); + if (view != null) { + String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".paste"; + if (ActionManager.getLocalizedAction(name) == null) { + action.setEnabled(false); + } else { + action.setEnabled(true); + } + } else { + action.setEnabled(false); + } + menuItem = new JMenuItem(action); + m_editMenu.add(menuItem); + m_editMenu.addSeparator(); + action = ActionManager.getAction("find"); + if (view != null) { + String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".find"; + if (ActionManager.getLocalizedAction(name) == null) { + action.setEnabled(false); + } else { + action.setEnabled(true); + } + } else { + action.setEnabled(false); + } + menuItem = new JMenuItem(action); + m_editMenu.add(menuItem); + action = ActionManager.getAction("findnext"); + if (view != null) { + String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".findnext"; + if (ActionManager.getLocalizedAction(name) == null) { + action.setEnabled(false); + } else { + action.setEnabled(true); + } + } else { + action.setEnabled(false); + } + menuItem = new JMenuItem(action); + m_editMenu.add(menuItem); + }//}}} + //{{{ createDefaultMenuItems() private void createDefaultMenuItems() { @@ -606,24 +687,7 @@ //}}} //{{{ Create Edit Menu - m_editMenu = new JMenu(Messages.getMessage("Edit.Menu")); - m_editMenu.setMnemonic('E'); - menuItem = new JMenuItem(ActionManager.getAction("undo")); - m_editMenu.add(menuItem); - menuItem = new JMenuItem(ActionManager.getAction("redo")); - m_editMenu.add(menuItem); - m_editMenu.addSeparator(); - menuItem = new JMenuItem(ActionManager.getAction("cut")); - m_editMenu.add(menuItem); - menuItem = new JMenuItem(ActionManager.getAction("copy")); - m_editMenu.add(menuItem); - menuItem = new JMenuItem(ActionManager.getAction("paste")); - m_editMenu.add(menuItem); - m_editMenu.addSeparator(); - menuItem = new JMenuItem(ActionManager.getAction("find")); - m_editMenu.add(menuItem); - menuItem = new JMenuItem(ActionManager.getAction("findnext")); - m_editMenu.add(menuItem); + createEditMenu(); //}}} //{{{ Create View Menu This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-27 14:58:56
|
Revision: 1171 Author: ian_lewis Date: 2006-08-27 07:58:47 -0700 (Sun, 27 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1171&view=rev Log Message: ----------- Update from 05pre3 branch Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/INSTALL trunk/jsxe/installer/launch4j.xml trunk/jsxe/launch4j.xml Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-27 14:55:31 UTC (rev 1170) +++ trunk/jsxe/Changelog 2006-08-27 14:58:47 UTC (rev 1171) @@ -1,3 +1,10 @@ +08/27/2006 Ian Lewis <Ian...@me...> + + * Updated the launch4j script to set the absolute path of the lib directory + in the jre option to set the endorsed dirs. This will allow jsXe to be + launched from anywhere and still be able to find the right version of + Xerces. + 08/21/2006 Ian Lewis <Ian...@me...> * Updated russian translation. Modified: trunk/jsxe/INSTALL =================================================================== --- trunk/jsxe/INSTALL 2006-08-27 14:55:31 UTC (rev 1170) +++ trunk/jsxe/INSTALL 2006-08-27 14:58:47 UTC (rev 1171) @@ -1,8 +1,8 @@ REQUIREMENTS -Java 1.4.2 -Xerces 2.8.0 -launch4j (for building the installer from source) +Java >= 1.4.2 +Xerces >= 2.8.0 +launch4j >= 3.0.0pre1 (for building the installer from source) GETTING jsXe @@ -83,6 +83,10 @@ Unpack the distribution file wherever you like. Normally you would install it in C:\Program Files\ or /usr/local/share/ or something like that. +Or + +Run the install program and follow the prompts to install jsXe. + RUNNING jsXe You should have 1.4.2 or better of java and you need 2.8.0 of Xerces. Modified: trunk/jsxe/installer/launch4j.xml =================================================================== --- trunk/jsxe/installer/launch4j.xml 2006-08-27 14:55:31 UTC (rev 1170) +++ trunk/jsxe/installer/launch4j.xml 2006-08-27 14:58:47 UTC (rev 1171) @@ -10,11 +10,8 @@ <stayAlive>false</stayAlive> <icon>jsxe-installer.ico</icon> <jre> - <path></path> <minVersion>1.4.2</minVersion> - <maxVersion></maxVersion> <initialHeapSize>16</initialHeapSize> <maxHeapSize>64</maxHeapSize> - <args></args> </jre> </launch4jConfig> \ No newline at end of file Modified: trunk/jsxe/launch4j.xml =================================================================== --- trunk/jsxe/launch4j.xml 2006-08-27 14:55:31 UTC (rev 1170) +++ trunk/jsxe/launch4j.xml 2006-08-27 14:58:47 UTC (rev 1171) @@ -1,23 +1,19 @@ <launch4jConfig> <dontWrapJar>true</dontWrapJar> - <headerType>0</headerType> + <headerType>gui</headerType> <jar>jsXe.jar</jar> <outfile>build\jsXe.exe</outfile> <errTitle>jsXe</errTitle> - <jarArgs></jarArgs> + <cmdLine></cmdLine> <chdir></chdir> <customProcName>true</customProcName> <stayAlive>false</stayAlive> <icon>jsxe.ico</icon> <jre> - <path></path> <minVersion>1.4.2</minVersion> - <maxVersion></maxVersion> + <dontUsePrivateJres>false</dontUsePrivateJres> <initialHeapSize>16</initialHeapSize> <maxHeapSize>64</maxHeapSize> - <args>-Djava.endorsed.dirs=lib - - -</args> + <opt>-Dlaunch4j.exedir="%EXEDIR%"</opt> </jre> </launch4jConfig> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-27 23:20:02
|
Revision: 1177 Author: ian_lewis Date: 2006-08-27 16:19:52 -0700 (Sun, 27 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1177&view=rev Log Message: ----------- Merge from 05pre3 branch Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/installer/src/installer/OperatingSystem.java Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-27 23:16:56 UTC (rev 1176) +++ trunk/jsxe/Changelog 2006-08-27 23:19:52 UTC (rev 1177) @@ -4,6 +4,9 @@ in the jre option to set the endorsed dirs. This will allow jsXe to be launched from anywhere and still be able to find the right version of Xerces. + * Updated the installer to create a script file in unix that uses the java + in the environment path and use the HotSpot server so that jsXe runs + faster at the cost of startup time and memory footprint. 08/21/2006 Ian Lewis <Ian...@me...> Modified: trunk/jsxe/installer/src/installer/OperatingSystem.java =================================================================== --- trunk/jsxe/installer/src/installer/OperatingSystem.java 2006-08-27 23:16:56 UTC (rev 1176) +++ trunk/jsxe/installer/src/installer/OperatingSystem.java 2006-08-27 23:19:52 UTC (rev 1177) @@ -170,15 +170,18 @@ out.write("#!/bin/sh\n"); out.write("# Java heap size, in megabytes\n"); out.write("JAVA_HEAP_SIZE=32\n"); - out.write("DEFAULT_JAVA_HOME=\"" + out.write("#DEFAULT_JAVA_HOME=\"" + System.getProperty("java.home") + "\"\n"); - out.write("if [ \"$JAVA_HOME\" = \"\" ]; then\n"); - out.write("JAVA_HOME=\"$DEFAULT_JAVA_HOME\"\n"); - out.write("fi\n"); + out.write("#if [ \"$JAVA_HOME\" = \"\" ]; then\n"); + out.write("#JAVA_HOME=\"$DEFAULT_JAVA_HOME\"\n"); + out.write("#fi\n"); - out.write("exec \"$JAVA_HOME" - + "/bin/java\" -mx${JAVA_HEAP_SIZE}m "+vmArgs+" ${" + // out.write("exec \"$JAVA_HOME" + // + "/bin/java\" -mx${JAVA_HEAP_SIZE}m "+vmArgs+" ${" + // + name.toUpperCase() + "} "); + // use java in the path and run using the HotSpot server + out.write("exec java -server -mx${JAVA_HEAP_SIZE}m "+vmArgs+" ${" + name.toUpperCase() + "} "); // String jar = installDir + File.separator This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-28 02:40:22
|
Revision: 1179 Author: ian_lewis Date: 2006-08-27 19:40:08 -0700 (Sun, 27 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1179&view=rev Log Message: ----------- Added option to show the full path to a file in the recent files menu Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/messages/messages trunk/jsxe/src/net/sourceforge/jsxe/action/OpenRecentFileAction.java trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java trunk/jsxe/src/net/sourceforge/jsxe/options/GeneralOptionPane.java trunk/jsxe/src/net/sourceforge/jsxe/properties Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-28 02:08:14 UTC (rev 1178) +++ trunk/jsxe/Changelog 2006-08-28 02:40:08 UTC (rev 1179) @@ -7,6 +7,8 @@ * Updated the installer to create a script file in unix that uses the java in the environment path and use the HotSpot server so that jsXe runs faster at the cost of startup time and memory footprint. + * Added an option to display the full path to a file in the recent files + menu. Feature Request #1546371 08/21/2006 Ian Lewis <Ian...@me...> Modified: trunk/jsxe/messages/messages =================================================================== --- trunk/jsxe/messages/messages 2006-08-28 02:08:14 UTC (rev 1178) +++ trunk/jsxe/messages/messages 2006-08-28 02:40:08 UTC (rev 1179) @@ -64,6 +64,8 @@ Global.Options.Title=General Global.Options.Max.Recent.Files=Recent files to remember: Global.Options.Max.Recent.Files.ToolTip=The maximum number of files that jsXe remembers in the recent files menu. +Global.Options.Recent.Files.Show.Full.Path=Show full path in Recent Files menu +Global.Options.Recent.Files.Show.Full.Path.ToolTip=If this checkbox is checked then the full path will be shown for files in the recent files menu. Global.Options.network-off=Always cache without asking Global.Options.network-cache=Ask first, then cache remote files Global.Options.network-always=Always download without asking Modified: trunk/jsxe/src/net/sourceforge/jsxe/action/OpenRecentFileAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/OpenRecentFileAction.java 2006-08-28 02:08:14 UTC (rev 1178) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/OpenRecentFileAction.java 2006-08-28 02:40:08 UTC (rev 1179) @@ -68,11 +68,13 @@ //{{{ OpenRecentFileAction constructor public OpenRecentFileAction(TabbedView parent, BufferHistory.BufferHistoryEntry entry) { String path = entry.getPath(); - String fileName = path.substring(path.lastIndexOf(System.getProperty("file.separator"))+1); + String fileName = path; + if (!jsXe.getBooleanProperty("recent.files.show.full.path", false)) { + fileName = path.substring(path.lastIndexOf(System.getProperty("file.separator"))+1); + } if (fileName.equals("")) { fileName = path; - } - putValue(Action.NAME, fileName); + }putValue(Action.NAME, fileName); m_view = parent; m_entry = entry; }//}}} Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-28 02:08:14 UTC (rev 1178) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-28 02:40:08 UTC (rev 1179) @@ -556,6 +556,10 @@ createDefaultMenuItems(); updateMenuBar(); } + + if (msg.getKey().equals("recent.files.show.full.path")) { + updateRecentFilesMenu(); + } } /* Modified: trunk/jsxe/src/net/sourceforge/jsxe/options/GeneralOptionPane.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/options/GeneralOptionPane.java 2006-08-28 02:08:14 UTC (rev 1178) +++ trunk/jsxe/src/net/sourceforge/jsxe/options/GeneralOptionPane.java 2006-08-28 02:40:08 UTC (rev 1179) @@ -29,6 +29,7 @@ import net.sourceforge.jsxe.CatalogManager; import net.sourceforge.jsxe.gui.Messages; import javax.swing.JComboBox; +import javax.swing.JCheckBox; import javax.swing.JTextField; import java.util.Vector; //}}} @@ -123,6 +124,15 @@ //}}} + //{{{ Recent files full path + + boolean showFullPath = jsXe.getBooleanProperty("recent.files.show.full.path", false); + m_showFullPathCheckBox = new JCheckBox(Messages.getMessage("Global.Options.Recent.Files.Show.Full.Path"),showFullPath); + + addComponent(m_showFullPathCheckBox, Messages.getMessage("Global.Options.Recent.Files.Show.Full.Path")); + + //}}} + }//}}} //{{{ _save() @@ -143,6 +153,7 @@ //Bad input, don't save. } jsXe.setIntegerProperty("xml.cache",network.getSelectedIndex()); + jsXe.setBooleanProperty("recent.files.show.full.path", m_showFullPathCheckBox.isSelected()); CatalogManager.propertiesChanged(); }//}}} @@ -155,6 +166,7 @@ private JComboBox menuSpillOverComboBox; private JComboBox maxRecentFilesComboBox; private JTextField m_undosToRemember; + private JCheckBox m_showFullPathCheckBox; private JComboBox network; //}}} Modified: trunk/jsxe/src/net/sourceforge/jsxe/properties =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-28 02:08:14 UTC (rev 1178) +++ trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-28 02:40:08 UTC (rev 1179) @@ -15,6 +15,8 @@ undo.limit=100 +recent.files.show.full.path=false + #{{{ Plugin Manager Default Dimensions #pluginmgr.x=100 #pluginmgr.y=100 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-28 15:48:41
|
Revision: 1182 Author: ian_lewis Date: 2006-08-28 08:48:25 -0700 (Mon, 28 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1182&view=rev Log Message: ----------- Updated the messages files to me named the standard ResourceBundle way Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/src/net/sourceforge/jsxe/gui/Messages.java Added Paths: ----------- trunk/jsxe/messages/messages.properties trunk/jsxe/messages/messages_de.properties trunk/jsxe/messages/messages_ja.properties trunk/jsxe/messages/messages_ru.properties trunk/jsxe/messages/messages_sv.properties Removed Paths: ------------- trunk/jsxe/messages/messages trunk/jsxe/messages/messages.de trunk/jsxe/messages/messages.ja trunk/jsxe/messages/messages.ru trunk/jsxe/messages/messages.sv Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-28 04:04:14 UTC (rev 1181) +++ trunk/jsxe/Changelog 2006-08-28 15:48:25 UTC (rev 1182) @@ -1,3 +1,7 @@ +08/28/2006 Ian Lewis <Ian...@me...> + + * Changed the messages files to be named the standard ResourceBundle way. + 08/27/2006 Ian Lewis <Ian...@me...> * Updated the launch4j script to set the absolute path of the lib directory Deleted: trunk/jsxe/messages/messages =================================================================== --- trunk/jsxe/messages/messages 2006-08-28 04:04:14 UTC (rev 1181) +++ trunk/jsxe/messages/messages 2006-08-28 15:48:25 UTC (rev 1182) @@ -1,300 +0,0 @@ -# JSXE English properties file -# $Id$ -# Maintained by Ian Lewis -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -#{{{ common properties - -common.ok=OK -common.cancel=Cancel -common.open=Open -common.save=Save -common.save.as=Save As -common.close=Close -common.apply=Apply -common.more=More -common.insert=Insert -common.add=Add -common.remove=Remove -common.moveUp=Move Up -common.moveDown=Move Down -common.find=Find - -common.ctrl=Ctrl -common.alt=Alt -common.shift=Shift -common.meta=Meta - -#}}} - -#{{{ XML Terminology - -#{{{ XML Node Types -xml.element=Element -xml.processing.instruction=Processing Instruction -xml.cdata=CDATA Section -xml.text=Text -xml.entity.reference=Entity Reference -xml.declaration=Element Declaration -xml.notation=Notation -xml.entity=Entity Declaration -xml.comment=Comment -xml.attribute=Attribute -xml.doctype=Document Type -#}}} - -xml.attribute.value.short=Value -xml.attribute.value=Attribute Value -xml.document=XML Document -xml.namespace=Namespace -xml.namespace.prefix=Namespace Prefix -xml.namespace.prefix.short=Prefix -xml.namespace.decl=Namespace Declaration -xml.doctypedef=Document Type Definition -xml.doctype.name=Name -xml.doctype.public=Public Id -xml.doctype.system=System Id -xml.schema=XML Schema -#}}} - -#{{{ Global Options -Global.Options.Dialog.Title=Global Options -Global.Options.Title=General -Global.Options.Max.Recent.Files=Recent files to remember: -Global.Options.Max.Recent.Files.ToolTip=The maximum number of files that jsXe remembers in the recent files menu. -Global.Options.Recent.Files.Show.Full.Path=Show full path in Recent Files menu -Global.Options.Recent.Files.Show.Full.Path.ToolTip=If this checkbox is checked then the full path will be shown for files in the recent files menu. -Global.Options.network-off=Always cache without asking -Global.Options.network-cache=Ask first, then cache remote files -Global.Options.network-always=Always download without asking -Global.Options.network=DTD and schema downloading: -Global.Options.Menu.Spill.Over=Number of items before menus spill over: -Global.Options.Undos.To.Remember=Number of undos to remember: -Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXe will remember this number of undo operations in memory.<BR> However, it cannot remember undo operations after switching views</HTML> - -Shortcuts.Options.Title=Shortcuts -Shortcuts.Options.Select.Label=Edit Shortcuts: -Shortcuts.Options.Shortcut=Shortcut -Shortcuts.Options.Command=Command - -Grab.Key.title=Specify Shortcut -Grab.Key.caption=Press the desired shortcut for "{0}", then click OK. -Grab.Key.keyboard-test=Input the key strokes that are causing problems. -Grab.Key.assigned-to=Currently assigned to: {0} -Grab.Key.assigned-to.none=<none> -Grab.Key.clear=Clear -Grab.Key.remove=Remove Current - -Grab.Key.remove-ask.title=Remove Shortcut? -Grab.Key.remove-ask.message=\ - You didn't specify a new shortcut.\n\ - Do you want to remove the current shortcut? - -Grab.Key.duplicate-alt-shortcut.title=Duplicate Shortcut -Grab.Key.duplicate-alt-shortcut.message=\ - The shortcut you selected duplicates the other\n\ - shortcut for this item. Please choose another. - -Grab.Key.duplicate-shortcut.title=Duplicate Shortcut -Grab.Key.duplicate-shortcut.message=\ - This shortcut is already assigned to\n\ - "{0}".\n\ - \n\ - Do you want to override this assignment? -#}}} - -#{{{ Document Options -Document.Options.Title=XML Document Options -Document.Options.Message=This dialog changes settings for the current\n document only. To change settings on an\n editor-wide basis, see the\n Tools->Global Options dialog box. -Document.Options.Line.Separator=Line Separator: -Document.Options.Line.Separator.ToolTip=The line separator. Usually you'll pick the line separator used by your operating system. -Document.Options.Encoding=Encoding: -Document.Options.Encoding.ToolTip=The encoding that jsXe uses to write the file. -Document.Options.Indent.Width=Indent width: -Document.Options.Indent.Width.ToolTip=The width used when formatting and displaying tab characters. -Document.Options.Format.XML=Format XML output -Document.Options.Format.XML.ToolTip=If this box is checked then XML will be formatted automatically. -Document.Options.Validate=Validate if DTD or Schema Available -Document.Options.Validate.ToolTip=If this box is checked jsXe will validate the XML document. -Document.Options.Soft.Tabs=Soft tabs (emulated with spaces) -Document.Options.Soft.Tabs.ToolTip=If this box is checked then tab characters are replaced by spaces. -#}}} - -#{{{ Plugin Manager -Plugin.Manager.Title=Plugin Manager -Plugin.Manager.Name.Column.Header=Name -Plugin.Manager.Version.Column.Header=Version -Plugin.Manager.Status.Column.Header=Status -Plugin.Manager.Loaded.Status=Loaded -Plugin.Manager.Not.Loaded.Status=Not Loaded -Plugin.Manager.Broken.Status=Error -#}}} - -#{{{ Menu Items - -File.Menu=File -Edit.Menu=Edit -View.Menu=View -Tools.Menu=Tools -Help.Menu=Help - - -#}}} - -#{{{ Action Labels -new-file.label=New -open-file.label=Open... -File.Recent=Recent Files -File.Recent.None=No Recent Files -save-file.label=Save -save-as.label=Save As... -reload-file.label=Reload -File.Recent=Recent Files -close-file.label=Close -close-all.label=Close All -exit.label=Exit - -undo.label=Undo -redo.label=Redo -cut.label=Cut -copy.label=Copy -paste.label=Paste -find.label=Find... -findnext.label=Find Next - -general-options.label=Global Options... -document-options.label=Document Options... -plugin-manager.label=Plugin Manager... -validation-errors.label=Validation Errors... -about-jsxe.label=About jsXe... - -#}}} - -#{{{ Messages - -DocumentView.Open.Message="Could not open buffer in any installed document views" - -#{0} file name -DocumentBuffer.Reload.Message={0} unsaved!\n You will lose all unsaved changes if you reload!\n\nContinue? -DocumentBuffer.Reload.Message.Title=Document Modified -DocumentBuffer.SaveAs.Message=The file {0} already exists. Are you sure you want to overwrite it? -DocumentBuffer.SaveAs.Message.Title=File Exists -DocumentBuffer.Close.Message={0} unsaved! Save it now? -DocumentBuffer.Close.Message.Title=Unsaved Changes - -#{0} file name -DocumentBuffer.Saved.Message={0} Saved -DocumentBuffer.Closed.Message={0} Closed -DocumentBuffer.Loaded.Message={0} Loaded -DocumentBuffer.Reloaded.Message={0} Reloaded - -#{0} plugin name -DocumentView.Not.Found=No plugin a with name of {0} exists. - -#{{{ Plugin Load Messages - -# {0} plugin name -Plugin.Error.title=Plugin Error -Plugin.Error.List.message=The following plugins could not be loaded: -Plugin.Load.Already.Loaded=Plugin {0} already loaded. -Plugin.Load.Wrong.Main.Class=Main class is not a plugin class. -Plugin.Load.No.Plugin.Class=No plugin class defined. -Plugin.Load.No.Plugin.Name=No plugin name defined. -Plugin.Load.No.Plugin.HR.Name=No plugin human-readable name defined. -Plugin.Load.No.Plugin.Version=No plugin version defined. - -# {0} plugin name -# {1} requirement name -# {2} required version -# {3} found version -Plugin.Dependency.Message={0} requires {1} version {2} but only version {3} was found. -# {0} plugin name -# {1} requirement name -# {2} required version -Plugin.Dependency.Not.Found={0} requires {1} version {2} but {1} was not found. -# {0} plugin name -# {1} requirement name -Plugin.Dependency.Not.Found2={0} requires {1} but {1} was not found. -# {0} plugin name -# {1} invalid dependency -Plugin.Dependency.Invalid={0} has an invalid dependency: {1} -# {0} invalid version -Plugin.Dependency.Invalid.jsXe.Version=Invalid jsXe version number: {0} -# {0} plugin name -# {1} requirement name -Plugin.Dependency.No.Version=Cannot load plugin {0}, {1} has no version. -# {0} plugin name -# {1} requirement name -Plugin.Dependency.Failed.Load={0} requires plugin {1} but {1} did not load properly. - -#}}} - -#{{{ Error Messages -No.Xerces.Error.message={0} not found. jsXe requires Apache {0}. -No.Xerces.Error.title={0} not found. -IO.Error.title=I/O Error -IO.Error.message=An I/O error has occurred -#}}} - -#}}} - -#{{{ Dialogs - -#{{{ Download resource dialog -xml.download-resource.title=Getting resource from remote server - -#{0} URL -xml.download-resource.message=This XML file depends on a resource which is stored at the following\n\ - Internet address:\n\ - \n\ - {0}\n\ - \n\ - Do you want the XML plugin to download the resource and cache it\n\ - for future use?\n\ - \n\ - If you want resources to be downloaded every time without prompting,\n\ - disable the resource cache in jsXe's global options. -#}}} - -#{{{ Dirty Files Dialog -DirtyFilesDialog.Dialog.Title=Unsaved Changes -DirtyFilesDialog.Dialog.Message=The following files have unsaved changes: -DirtyFilesDialog.Button.SelectAll.Title=Select All -#DirtyFilesDialog.Button.SelectAll.ToolTip=Select All -DirtyFilesDialog.Button.SaveSelected.Title=Save Selected -#DirtyFilesDialog.Button.SaveSelected.ToolTip=Save Selected -DirtyFilesDialog.Button.DiscardSelected.Title=Discard Selected -#DirtyFilesDialog.Button.DiscardSelected.ToolTip=Discard Selected -#}}} - -#{{{ Activity Log Dialog -activity-log.label = Activity Log -ActivityLogDialog.Dialog.Title = Activity Log -ActivityLogDialog.Dialog.Message = Activity Log contents: -#}}} - -#{{{ About dialag -about.title=About jsXe -about.message=Released under the terms of the GNU General Public License\n\n\ - Active Contributors:\n\ - \ \ \ \ Ian Lewis <Ian...@me...>\n\ - \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ - Translators:\n\ - \ \ \ \ German (de) - Bianca Shöen\n\ - \ \ \ \ German (de) - Dieter Steiner <spo...@gm...>\n\ - \ \ \ \ Swedish (sv) - Patrik Johansson <pa...@it...>\n\ - \ \ \ \ Russian (ru) - Alexandr Gridnev <ale...@ya...>\n\n\ - Past Contributers:\n\ - \ \ \ \ Aaron Flatten <afl...@us...>\n\ - \ \ \ \ Bilel Remmache <rb...@us...>\n\n\ - Homepage: http://jsxe.sourceforge.net/ -#}}} - -#{{{ Validation Errors Dialog -ValidationErrors.title=Validation Errors -ValidationErrors.message=Validation Errors -#}}} - -#}}} \ No newline at end of file Deleted: trunk/jsxe/messages/messages.de =================================================================== (Binary files differ) Deleted: trunk/jsxe/messages/messages.ja =================================================================== --- trunk/jsxe/messages/messages.ja 2006-08-28 04:04:14 UTC (rev 1181) +++ trunk/jsxe/messages/messages.ja 2006-08-28 15:48:25 UTC (rev 1182) @@ -1,155 +0,0 @@ -# JSXE Japanese properties file -# $Id$ -# Maintained by Ian Lewis -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -#{{{ common properties - -common.ok=決定 -common.cancel=キャンセル -common.open=開く -common.save=保存 -common.save.as=名前を付けて保存 -common.close=閉じる -common.apply=適用 -common.more=次 -common.insert=インサート -common.add=追加 -common.remove=削除 -common.moveUp=上げる -common.moveDown=下げる - -#common.ctrl=Ctrl -#common.alt=Alt -#common.shift=Shift -#common.meta=Meta - -#}}} - -#{{{ XML Terminology - -#{{{ XML Node Types -xml.element=要素 -xml.processing.instruction=処理命令 -xml.cdata=CDATAセクション -xml.text=テキスト -xml.entity.reference=エンティティ参照 -#xml.declaration=Element Declaration -xml.notation=表記法 -xml.entity=エンティティ -#xml.entity=Entity Declaration -xml.comment=コメント -xml.attribute=属性 -xml.doctype=文書型 -#}}} - -xml.attribute.value.short=値 -xml.attribute.value=属性値 -xml.document=XMLドキュメント -xml.namespace=ネームスペース -xml.namespace.prefix=ネームスペース前置修飾子 -xml.namespace.prefix.short=前置修飾子 -#xml.namespace.decl=Namespace Declaration -xml.doctypedef=文書型 -xml.doctype.name=DTDの名前 -xml.doctype.public=公開識別子 -xml.doctype.system=システム識別子 -xml.schema=XMLスキーマ - -#}}} - -#{{{ Global Options -Global.Options.Dialog.Title=Global Options -Global.Options.Title=General -Global.Options.Max.Recent.Files=最近使用したドキュメント数: -Global.Options.Max.Recent.Files.ToolTip=最近使用したドキュメントのメニューに表示するドキュメントの数 -Global.Options.network-off=Always cache without asking -Global.Options.network-cache=Ask first, then cache remote files -Global.Options.network-always=Always download without asking -Global.Options.network=DTDとXMLスキーマ ダウンロード: -Global.Options.Menu.Spill.Over=Number of items before menus spill over: -Global.Options.Undos.To.Remember=元に戻す数: -Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXeは元に戻すために、この操作数を覚える.<BR> しかし, ビューを変わったら、覚えることはできません。</HTML> - -Shortcuts.Options.Title=ショットカット -Shortcuts.Options.Select.Label=ショットカットを編集: -Shortcuts.Options.Shortcut=ショットカット -Shortcuts.Options.Command=コマンド - -Grab.Key.title=ショットカットを選択 -Grab.Key.caption="{0}" のショットカットを選択して、決定を押してくただい。 -Grab.Key.keyboard-test=Input the key strokes that are causing problems. -Grab.Key.assigned-to=今登録されたコマンド: {0} -Grab.Key.assigned-to.none=<なし> -Grab.Key.clear=クリア -Grab.Key.remove=今のショットカットを削除 - -Grab.Key.remove-ask.title=ショットカットを削除? -Grab.Key.remove-ask.message=\ - 新しいショットカットは選択されてなかった。\n\ - 今のショットカットを削除? -#}}} - -#{{{ Document Options -Document.Options.Title=ドキュメント設定 -Document.Options.Encoding=エンコーディング: -#}}} - -#{{{ Menu Items - -File.Menu=ファイル -Edit.Menu=編集 -Help.Menu=ヘルプ -Tools.Menu=ツール -View.Menu=表示 - -#{{{ Action Labels -new-file.label=新規作成 -open-file.label=開く... -File.Recent=最近使用したドキュメント -File.Recent.None=最近使用したドキュメントはありません -save-file.label=保存 -save-as.label=名前を付けて保存... -reload-file.label=再ロード -close-file.label=閉じる -close-all.label=すべて閉じる -exit.label=終了 - -undo.label=元に戻す -redo.label=やり直し -cut.label=切り取り -copy.label=コピー -paste.label=貼り付け -find.label=探索... -findnext.label=次を探索 - -document-options.label=ドキュメント設定... -plugin-manager.label=プラグインマネジャー... -about-jsxe.label=jsXeについて... -#}}} - -#}}} - -#{{{ Dialogs - -#{{{ About dialag -about.title=jsXeについて -about.message=Released under the terms of the GNU General Public License\n\n\ - Active Contributors:\n\ - \ \ \ \ Ian Lewis <Ian...@me...>\n\ - \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ - 翻訳者:\n\ - \ \ \ \ ドイツ語 (de) - Bianca Shöen\n\ - \ \ \ \ ドイツ語 (de) - Dieter Steiner <spo...@gm...>\n\ - \ \ \ \ スウェーデン語 (sv) - Patrik Johansson <pa...@it...>\n\n\ - Past Contributers:\n\ - \ \ \ \ Aaron Flatten <afl...@us...>\n\ - \ \ \ \ Bilel Remmache <rb...@us...>\n\ - \ \ \ \ SVM <svm...@us...>\n\n\ - ホームページ: http://jsxe.sourceforge.net/ -#}}} - -#}}} - Copied: trunk/jsxe/messages/messages.properties (from rev 1179, trunk/jsxe/messages/messages) =================================================================== --- trunk/jsxe/messages/messages.properties (rev 0) +++ trunk/jsxe/messages/messages.properties 2006-08-28 15:48:25 UTC (rev 1182) @@ -0,0 +1,300 @@ +# JSXE English properties file +# $Id$ +# Maintained by Ian Lewis +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +#{{{ common properties + +common.ok=OK +common.cancel=Cancel +common.open=Open +common.save=Save +common.save.as=Save As +common.close=Close +common.apply=Apply +common.more=More +common.insert=Insert +common.add=Add +common.remove=Remove +common.moveUp=Move Up +common.moveDown=Move Down +common.find=Find + +common.ctrl=Ctrl +common.alt=Alt +common.shift=Shift +common.meta=Meta + +#}}} + +#{{{ XML Terminology + +#{{{ XML Node Types +xml.element=Element +xml.processing.instruction=Processing Instruction +xml.cdata=CDATA Section +xml.text=Text +xml.entity.reference=Entity Reference +xml.declaration=Element Declaration +xml.notation=Notation +xml.entity=Entity Declaration +xml.comment=Comment +xml.attribute=Attribute +xml.doctype=Document Type +#}}} + +xml.attribute.value.short=Value +xml.attribute.value=Attribute Value +xml.document=XML Document +xml.namespace=Namespace +xml.namespace.prefix=Namespace Prefix +xml.namespace.prefix.short=Prefix +xml.namespace.decl=Namespace Declaration +xml.doctypedef=Document Type Definition +xml.doctype.name=Name +xml.doctype.public=Public Id +xml.doctype.system=System Id +xml.schema=XML Schema +#}}} + +#{{{ Global Options +Global.Options.Dialog.Title=Global Options +Global.Options.Title=General +Global.Options.Max.Recent.Files=Recent files to remember: +Global.Options.Max.Recent.Files.ToolTip=The maximum number of files that jsXe remembers in the recent files menu. +Global.Options.Recent.Files.Show.Full.Path=Show full path in Recent Files menu +Global.Options.Recent.Files.Show.Full.Path.ToolTip=If this checkbox is checked then the full path will be shown for files in the recent files menu. +Global.Options.network-off=Always cache without asking +Global.Options.network-cache=Ask first, then cache remote files +Global.Options.network-always=Always download without asking +Global.Options.network=DTD and schema downloading: +Global.Options.Menu.Spill.Over=Number of items before menus spill over: +Global.Options.Undos.To.Remember=Number of undos to remember: +Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXe will remember this number of undo operations in memory.<BR> However, it cannot remember undo operations after switching views</HTML> + +Shortcuts.Options.Title=Shortcuts +Shortcuts.Options.Select.Label=Edit Shortcuts: +Shortcuts.Options.Shortcut=Shortcut +Shortcuts.Options.Command=Command + +Grab.Key.title=Specify Shortcut +Grab.Key.caption=Press the desired shortcut for "{0}", then click OK. +Grab.Key.keyboard-test=Input the key strokes that are causing problems. +Grab.Key.assigned-to=Currently assigned to: {0} +Grab.Key.assigned-to.none=<none> +Grab.Key.clear=Clear +Grab.Key.remove=Remove Current + +Grab.Key.remove-ask.title=Remove Shortcut? +Grab.Key.remove-ask.message=\ + You didn't specify a new shortcut.\n\ + Do you want to remove the current shortcut? + +Grab.Key.duplicate-alt-shortcut.title=Duplicate Shortcut +Grab.Key.duplicate-alt-shortcut.message=\ + The shortcut you selected duplicates the other\n\ + shortcut for this item. Please choose another. + +Grab.Key.duplicate-shortcut.title=Duplicate Shortcut +Grab.Key.duplicate-shortcut.message=\ + This shortcut is already assigned to\n\ + "{0}".\n\ + \n\ + Do you want to override this assignment? +#}}} + +#{{{ Document Options +Document.Options.Title=XML Document Options +Document.Options.Message=This dialog changes settings for the current\n document only. To change settings on an\n editor-wide basis, see the\n Tools->Global Options dialog box. +Document.Options.Line.Separator=Line Separator: +Document.Options.Line.Separator.ToolTip=The line separator. Usually you'll pick the line separator used by your operating system. +Document.Options.Encoding=Encoding: +Document.Options.Encoding.ToolTip=The encoding that jsXe uses to write the file. +Document.Options.Indent.Width=Indent width: +Document.Options.Indent.Width.ToolTip=The width used when formatting and displaying tab characters. +Document.Options.Format.XML=Format XML output +Document.Options.Format.XML.ToolTip=If this box is checked then XML will be formatted automatically. +Document.Options.Validate=Validate if DTD or Schema Available +Document.Options.Validate.ToolTip=If this box is checked jsXe will validate the XML document. +Document.Options.Soft.Tabs=Soft tabs (emulated with spaces) +Document.Options.Soft.Tabs.ToolTip=If this box is checked then tab characters are replaced by spaces. +#}}} + +#{{{ Plugin Manager +Plugin.Manager.Title=Plugin Manager +Plugin.Manager.Name.Column.Header=Name +Plugin.Manager.Version.Column.Header=Version +Plugin.Manager.Status.Column.Header=Status +Plugin.Manager.Loaded.Status=Loaded +Plugin.Manager.Not.Loaded.Status=Not Loaded +Plugin.Manager.Broken.Status=Error +#}}} + +#{{{ Menu Items + +File.Menu=File +Edit.Menu=Edit +View.Menu=View +Tools.Menu=Tools +Help.Menu=Help + + +#}}} + +#{{{ Action Labels +new-file.label=New +open-file.label=Open... +File.Recent=Recent Files +File.Recent.None=No Recent Files +save-file.label=Save +save-as.label=Save As... +reload-file.label=Reload +File.Recent=Recent Files +close-file.label=Close +close-all.label=Close All +exit.label=Exit + +undo.label=Undo +redo.label=Redo +cut.label=Cut +copy.label=Copy +paste.label=Paste +find.label=Find... +findnext.label=Find Next + +general-options.label=Global Options... +document-options.label=Document Options... +plugin-manager.label=Plugin Manager... +validation-errors.label=Validation Errors... +about-jsxe.label=About jsXe... + +#}}} + +#{{{ Messages + +DocumentView.Open.Message="Could not open buffer in any installed document views" + +#{0} file name +DocumentBuffer.Reload.Message={0} unsaved!\n You will lose all unsaved changes if you reload!\n\nContinue? +DocumentBuffer.Reload.Message.Title=Document Modified +DocumentBuffer.SaveAs.Message=The file {0} already exists. Are you sure you want to overwrite it? +DocumentBuffer.SaveAs.Message.Title=File Exists +DocumentBuffer.Close.Message={0} unsaved! Save it now? +DocumentBuffer.Close.Message.Title=Unsaved Changes + +#{0} file name +DocumentBuffer.Saved.Message={0} Saved +DocumentBuffer.Closed.Message={0} Closed +DocumentBuffer.Loaded.Message={0} Loaded +DocumentBuffer.Reloaded.Message={0} Reloaded + +#{0} plugin name +DocumentView.Not.Found=No plugin a with name of {0} exists. + +#{{{ Plugin Load Messages + +# {0} plugin name +Plugin.Error.title=Plugin Error +Plugin.Error.List.message=The following plugins could not be loaded: +Plugin.Load.Already.Loaded=Plugin {0} already loaded. +Plugin.Load.Wrong.Main.Class=Main class is not a plugin class. +Plugin.Load.No.Plugin.Class=No plugin class defined. +Plugin.Load.No.Plugin.Name=No plugin name defined. +Plugin.Load.No.Plugin.HR.Name=No plugin human-readable name defined. +Plugin.Load.No.Plugin.Version=No plugin version defined. + +# {0} plugin name +# {1} requirement name +# {2} required version +# {3} found version +Plugin.Dependency.Message={0} requires {1} version {2} but only version {3} was found. +# {0} plugin name +# {1} requirement name +# {2} required version +Plugin.Dependency.Not.Found={0} requires {1} version {2} but {1} was not found. +# {0} plugin name +# {1} requirement name +Plugin.Dependency.Not.Found2={0} requires {1} but {1} was not found. +# {0} plugin name +# {1} invalid dependency +Plugin.Dependency.Invalid={0} has an invalid dependency: {1} +# {0} invalid version +Plugin.Dependency.Invalid.jsXe.Version=Invalid jsXe version number: {0} +# {0} plugin name +# {1} requirement name +Plugin.Dependency.No.Version=Cannot load plugin {0}, {1} has no version. +# {0} plugin name +# {1} requirement name +Plugin.Dependency.Failed.Load={0} requires plugin {1} but {1} did not load properly. + +#}}} + +#{{{ Error Messages +No.Xerces.Error.message={0} not found. jsXe requires Apache {0}. +No.Xerces.Error.title={0} not found. +IO.Error.title=I/O Error +IO.Error.message=An I/O error has occurred +#}}} + +#}}} + +#{{{ Dialogs + +#{{{ Download resource dialog +xml.download-resource.title=Getting resource from remote server + +#{0} URL +xml.download-resource.message=This XML file depends on a resource which is stored at the following\n\ + Internet address:\n\ + \n\ + {0}\n\ + \n\ + Do you want the XML plugin to download the resource and cache it\n\ + for future use?\n\ + \n\ + If you want resources to be downloaded every time without prompting,\n\ + disable the resource cache in jsXe's global options. +#}}} + +#{{{ Dirty Files Dialog +DirtyFilesDialog.Dialog.Title=Unsaved Changes +DirtyFilesDialog.Dialog.Message=The following files have unsaved changes: +DirtyFilesDialog.Button.SelectAll.Title=Select All +#DirtyFilesDialog.Button.SelectAll.ToolTip=Select All +DirtyFilesDialog.Button.SaveSelected.Title=Save Selected +#DirtyFilesDialog.Button.SaveSelected.ToolTip=Save Selected +DirtyFilesDialog.Button.DiscardSelected.Title=Discard Selected +#DirtyFilesDialog.Button.DiscardSelected.ToolTip=Discard Selected +#}}} + +#{{{ Activity Log Dialog +activity-log.label = Activity Log +ActivityLogDialog.Dialog.Title = Activity Log +ActivityLogDialog.Dialog.Message = Activity Log contents: +#}}} + +#{{{ About dialag +about.title=About jsXe +about.message=Released under the terms of the GNU General Public License\n\n\ + Active Contributors:\n\ + \ \ \ \ Ian Lewis <Ian...@me...>\n\ + \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ + Translators:\n\ + \ \ \ \ German (de) - Bianca Shöen\n\ + \ \ \ \ German (de) - Dieter Steiner <spo...@gm...>\n\ + \ \ \ \ Swedish (sv) - Patrik Johansson <pa...@it...>\n\ + \ \ \ \ Russian (ru) - Alexandr Gridnev <ale...@ya...>\n\n\ + Past Contributers:\n\ + \ \ \ \ Aaron Flatten <afl...@us...>\n\ + \ \ \ \ Bilel Remmache <rb...@us...>\n\n\ + Homepage: http://jsxe.sourceforge.net/ +#}}} + +#{{{ Validation Errors Dialog +ValidationErrors.title=Validation Errors +ValidationErrors.message=Validation Errors +#}}} + +#}}} \ No newline at end of file Deleted: trunk/jsxe/messages/messages.ru =================================================================== --- trunk/jsxe/messages/messages.ru 2006-08-28 04:04:14 UTC (rev 1181) +++ trunk/jsxe/messages/messages.ru 2006-08-28 15:48:25 UTC (rev 1182) @@ -1,298 +0,0 @@ -# JSXE English properties file -# $Id: messages 1158 2006-08-18 18:42:18Z ian_lewis $ -# Maintained by Alexandr Gridnev (ale...@ya...) -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -#{{{ common properties - -common.ok=Принять -common.cancel=Отменить -common.open=Открыть -common.save=Сохранить -common.save.as=Сохранить как -common.close=Закрыть -common.apply=Применить -common.more=Еще -common.insert=Вставить -common.add=Добавить -common.remove=Удалить -common.moveUp=Поднять -common.moveDown=Опустить -common.find=Искать - -common.ctrl=Ctrl -common.alt=Alt -common.shift=Shift -common.meta=Meta - -#}}} - -#{{{ XML Terminology - -#{{{ XML Node Types -xml.element=Элемент -xml.processing.instruction=Правило обработки -xml.cdata=Секция CDATA -xml.text=Текст -xml.entity.reference=Ссылка на сущность -xml.declaration=Объявление элемента -xml.notation=Замечание -xml.entity=Объявление сущности -xml.comment=Комментарий -xml.attribute=Свойство -xml.doctype=Тип документа -#}}} - -xml.attribute.value.short=Значение -xml.attribute.value=Значение свойства -xml.document=документ XML -xml.namespace=Пространство имен -xml.namespace.prefix=Префикс пространства имен -xml.namespace.prefix.short=Префикс -xml.namespace.decl=Объявление пространства имен -xml.doctypedef=Определение типа документа (DTD) -xml.doctype.name=Имя -xml.doctype.public=Публичный Id -xml.doctype.system=Системный Id -xml.schema=Схема XML -#}}} - -#{{{ Global Options -Global.Options.Dialog.Title=Глобальные опции -Global.Options.Title=Главное -Global.Options.Max.Recent.Files=Помнить ранее открытых файлов: -Global.Options.Max.Recent.Files.ToolTip=Максимальное количество ранее открытых файлов, про которые jsXe помнит и отображает в меню Файл->Ранее открытые файлы -Global.Options.network-off=Кешировать всегда, без спросу -Global.Options.network-cache=Кешировать удаленные файлы только спросив разрешения -Global.Options.network-always=Скачивать всегда, без спросу -Global.Options.network=Скачивание DTD и схемы: -Global.Options.Menu.Spill.Over=Меню выпадают после: -Global.Options.Undos.To.Remember=Запомнить действий: -Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXe запомнит столько действий и потом их можно будет отменить.<BR> Однако он не может запомнить действия, выполненные после переключения видов</HTML> - -Shortcuts.Options.Title=Горячие клавиши -Shortcuts.Options.Select.Label=Редактировать горячие клавиши: -Shortcuts.Options.Shortcut=Горячая клавиша -Shortcuts.Options.Command=Команда - -Grab.Key.title=Нажмите клавишу -Grab.Key.caption=Нажмите клавишу для команды "{0}", а котом нажмите Принять. -Grab.Key.keyboard-test=Input the key strokes that are causing problems. -Grab.Key.assigned-to=Уже назначено для: {0} -Grab.Key.assigned-to.none=<ничего> -Grab.Key.clear=Очистить -Grab.Key.remove=Удалить текущее - -Grab.Key.remove-ask.title=Удалить клавишу? -Grab.Key.remove-ask.message=\ - Вы не назначили новую клавишу.\n\ - Вы что, всеръез решили лишить команду клавиши, правда? - -Grab.Key.duplicate-alt-shortcut.title=Две команды на клавишу -Grab.Key.duplicate-alt-shortcut.message=\ - Клавиша которую вы назначили уже занята за другой командой\n\ - Просьба выбрать другую, ато они подерутся. - -Grab.Key.duplicate-shortcut.title=Две команды на клавишу -Grab.Key.duplicate-shortcut.message=\ - Эта клавиша уже занята за\n\ - "{0}".\n\ - \n\ - Вы хотите отвергнуть это назначение? -#}}} - -#{{{ Document Options -Document.Options.Title=Опции документа XML -Document.Options.Message=Этот диалог управляет настройками только\n текущего документа. Чтобы изменить\n базовые настройки лезте в\n Инструменты->Глобальные опции. -Document.Options.Line.Separator=Разделитель строк: -Document.Options.Line.Separator.ToolTip=Разделитель строк. По умолчанию выбирается традиционный для вашей операционной системы. -Document.Options.Encoding=Кодировка: -Document.Options.Encoding.ToolTip=Кодировка, которую jsXe использует для записи текстовой инфы в файл. -Document.Options.Indent.Width=Ширина отступа: -Document.Options.Indent.Width.ToolTip=Ширина используемая при форматировании и отображении символов табуляции. -Document.Options.Format.XML=Форматировать выводимый XML -Document.Options.Format.XML.ToolTip=Если это выбрано, XML будет форматироваться автоматически. -Document.Options.Validate=Подтв. если доступны DTD или Схема -Document.Options.Validate.ToolTip=Если это выбрано, jsXe будет подтверждать (проверять?) документ XML. -Document.Options.Soft.Tabs=Мягкие табуляции (эмуляция пробелами) -Document.Options.Soft.Tabs.ToolTip=Если это выбрано, символы табуляции будут заменены пробелами. -#}}} - -#{{{ Plugin Manager -Plugin.Manager.Title=Менеджер плагинов -Plugin.Manager.Name.Column.Header=Имя -Plugin.Manager.Version.Column.Header=Версия -Plugin.Manager.Status.Column.Header=Статус -Plugin.Manager.Loaded.Status=Загружен -Plugin.Manager.Not.Loaded.Status=Не загружен -Plugin.Manager.Broken.Status=Ошибка -#}}} - -#{{{ Menu Items - -File.Menu=Файл -Edit.Menu=Правка -View.Menu=Вид -Tools.Menu=Инструменты -Help.Menu=Справка - - -#}}} - -#{{{ Action Labels -new-file.label=Новый -open-file.label=Открыть... -File.Recent=Ранее открытые файлы -File.Recent.None=Нэма нифигга -save-file.label=Сохранить -save-as.label=Сохранить как... -reload-file.label=Открыть еще раз -File.Recent=Ранее открытые файлы -close-file.label=Закрыть -close-all.label=Закрыть все -exit.label=Выход - -undo.label=Отменить -redo.label=Повторить -cut.label=Вырезать -copy.label=Копировать -paste.label=Вставить -find.label=Искать... -findnext.label=Искать далее - -general-options.label=Глобальные опции... -document-options.label=Опции документа... -plugin-manager.label=Менеджер плагинов... -validation-errors.label=Ошибки подтверждения... -about-jsxe.label=О программе jsXe... - -#}}} - -#{{{ Messages - -DocumentView.Open.Message="Не могу открыть буффер в каком-либо из установленных document view-ов" - -#{0} file name -DocumentBuffer.Reload.Message={0} не сохранен!\n Вы потеряете все несохраненные изменения если продолжите!\n\n Продолжить? Вам не нужны эти несохраненные данные, в самом деле? -DocumentBuffer.Reload.Message.Title=Документ был изменен -DocumentBuffer.SaveAs.Message=Файл {0} уже существует. Записать новый файл поверх, зверски убив старый? -DocumentBuffer.SaveAs.Message.Title=Файл уже существует -DocumentBuffer.Close.Message={0} Не сохранен! Сохранить его прямо сейчас? -DocumentBuffer.Close.Message.Title=Несохраненные изменения - -#{0} file name -DocumentBuffer.Saved.Message={0} Сохранен -DocumentBuffer.Closed.Message={0} Закрыт -DocumentBuffer.Loaded.Message={0} Загружен -DocumentBuffer.Reloaded.Message={0} Загружен заново - -#{0} plugin name -DocumentView.Not.Found=Нету такого плагина со странным именем "{0}". - -#{{{ Plugin Load Messages - -# {0} plugin name -Plugin.Error.title=Ошибка плагина -Plugin.Error.List.message=Следующие плагины не могут быть загружены: -Plugin.Load.Already.Loaded=Плагин {0} уже загружен. -Plugin.Load.Wrong.Main.Class=Главный класс не является классом плагина. -Plugin.Load.No.Plugin.Class=Класс плагина не был определен. -Plugin.Load.No.Plugin.Name=Имя плагина не было определено. -Plugin.Load.No.Plugin.HR.Name=Для плагина не было определено такого имени,/n чтоб его мог прочитать нормальный человек (human-readable name). -Plugin.Load.No.Plugin.Version=Версия плагина не была определена. - -# {0} plugin name -# {1} requirement name -# {2} required version -# {3} found version -Plugin.Dependency.Message={0} требует {1} версии {2}, но обнаружена только версия {3}. -# {0} plugin name -# {1} requirement name -# {2} required version -Plugin.Dependency.Not.Found={0} требует {1} версии {2}, но {1} не удалось найти. -# {0} plugin name -# {1} requirement name -Plugin.Dependency.Not.Found2={0} требует {1} но {1} нигде не видать. -# {0} plugin name -# {1} invalid dependency -Plugin.Dependency.Invalid=У {0} есть неправильная зависимость: {1} -# {0} invalid version -Plugin.Dependency.Invalid.jsXe.Version=Неправильный номер версии jsXe: {0} -# {0} plugin name -# {1} requirement name -Plugin.Dependency.No.Version=Не могу загрузить плагин {0}, потому что у {1} не подписана версия. -# {0} plugin name -# {1} requirement name -Plugin.Dependency.Failed.Load={0} Требует плагин {1}, но этот самый {1} так и не удалось загрузить. - -#}}} - -#{{{ Error Messages -No.Xerces.Error.message={0} не обнаружен. jsXe требует Apache {0}. -No.Xerces.Error.title={0} не обнаружен. -IO.Error.title=ошибка ввода/вывода (I/O Error) -IO.Error.message=Произошла ошибка ввода/вывода -#}}} - -#}}} - -#{{{ Dialogs - -#{{{ Download resource dialog -xml.download-resource.title=Выкачиваем ресурсы с удаленного сервера... - -#{0} URL -xml.download-resource.message=Этот XML-файл зависит от ресурсов, которые расколожены\n\ - по следующему адресу в интернете:\n\ - \n\ - {0}\n\ - \n\ - Хотите ли вы чтобы плагин XML скачал ресурсы и закешировал их\n\ - для последующего использования?\n\ - \n\ - Если вы хотите соизволить разрешить мне скачивать ресурсы без спросу,\n\ - то отключите кеширование ресурсов в глобальных опциях jsXe. -#}}} - -#{{{ Dirty Files Dialog -DirtyFilesDialog.Dialog.Title=Несохраненные изменения -DirtyFilesDialog.Dialog.Message=В следующих файлах есть несохраненные изменения: -DirtyFilesDialog.Button.SelectAll.Title=Выбрать все -#DirtyFilesDialog.Button.SelectAll.ToolTip=Взять их фсехх! -DirtyFilesDialog.Button.SaveSelected.Title=Сохранить выбранные -#DirtyFilesDialog.Button.SaveSelected.ToolTip=Сохраняет, что тут еще можно сказать... те что выбраны, да... -DirtyFilesDialog.Button.DiscardSelected.Title=Убрать выделение -#DirtyFilesDialog.Button.DiscardSelected.ToolTip=Убирает выделение ;) -#}}} - -#{{{ Activity Log Dialog -activity-log.label = Лог активности -ActivityLogDialog.Dialog.Title = Лог активности -ActivityLogDialog.Dialog.Message = Содержимое лога активности: -#}}} - -#{{{ About dialag -about.title=О программе jsXe -about.message=Распространяется на условиях GNU General Public License\n\n\ - Активные разработчики:\n\ - \ \ \ \ Ian Lewis <Ian...@me...>\n\ - \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ - Переводчики:\n\ - \ \ \ \ German (de) - Bianca Sh\u00f6en\n\ - \ \ \ \ German (de) - Dieter Steiner <spo...@gm...>\n\ - \ \ \ \ Swedish (sv) - Patrik Johansson <pa...@it...>\n\n\ - В прошлом учавствовали в разработке:\n\ - \ \ \ \ Aaron Flatten <afl...@us...>\n\ - \ \ \ \ Bilel Remmache <rb...@us...>\n\ - \ \ \ \ SVM <svm...@us...>\n\n\ - Страница проекта: http://jsxe.sourceforge.net/ -#}}} - -#{{{ Validation Errors Dialog -ValidationErrors.title=Ошибки подтверждения -ValidationErrors.message=Ошибки подтверждения -#}}} - -#}}} Deleted: trunk/jsxe/messages/messages.sv =================================================================== --- trunk/jsxe/messages/messages.sv 2006-08-28 04:04:14 UTC (rev 1181) +++ trunk/jsxe/messages/messages.sv 2006-08-28 15:48:25 UTC (rev 1182) @@ -1,48 +0,0 @@ -# JSXE Swedish properties file -# $Id$ -# Currently maintained by Patrik Johansson <pa...@it...> -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -#{{{ common properties - -common.ok=OK -common.cancel=Avbryt -common.close=Stäng -common.apply=Verkställ -common.more=Mer -common.insert=Infoga -common.add=Lägg till -common.remove=Ta bort -common.moveUp=Flytta upp -common.moveDown=Flytta ner -common.cut=Klipp ut -common.copy=Kopiera -common.paste=Klistra in -common.find=Sök... -common.findnext=Sök nästa - -#}}} - -#{{{ Global Options -global.options.title=Globala inställningar -#}}} - -#{{{ File Menu Items -File.New=Ny -File.Open=Öppna... -File.Recent=Senaste filer -File.Save=Spara -File.SaveAs=Spara som... -File.Reload=Läs om -File.Recent=Senaste filer -File.Close=Stäng -File.CloseAll=Stäng alla -File.Exit=Avsluta -#}}} - -Tools.Options=Inställningar... -Tools.Plugin=Hanterare för insticksprogram... -Plugin.Manager.Title=Hanterare för insticksprogram -Help.About=Om jsXe... Copied: trunk/jsxe/messages/messages_de.properties (from rev 1176, trunk/jsxe/messages/messages.de) =================================================================== (Binary files differ) Copied: trunk/jsxe/messages/messages_ja.properties (from rev 1176, trunk/jsxe/messages/messages.ja) =================================================================== --- trunk/jsxe/messages/messages_ja.properties (rev 0) +++ trunk/jsxe/messages/messages_ja.properties 2006-08-28 15:48:25 UTC (rev 1182) @@ -0,0 +1,155 @@ +# JSXE Japanese properties file +# $Id$ +# Maintained by Ian Lewis +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +#{{{ common properties + +common.ok=決定 +common.cancel=キャンセル +common.open=開く +common.save=保存 +common.save.as=名前を付けて保存 +common.close=閉じる +common.apply=適用 +common.more=次 +common.insert=インサート +common.add=追加 +common.remove=削除 +common.moveUp=上げる +common.moveDown=下げる + +#common.ctrl=Ctrl +#common.alt=Alt +#common.shift=Shift +#common.meta=Meta + +#}}} + +#{{{ XML Terminology + +#{{{ XML Node Types +xml.element=要素 +xml.processing.instruction=処理命令 +xml.cdata=CDATAセクション +xml.text=テキスト +xml.entity.reference=エンティティ参照 +#xml.declaration=Element Declaration +xml.notation=表記法 +xml.entity=エンティティ +#xml.entity=Entity Declaration +xml.comment=コメント +xml.attribute=属性 +xml.doctype=文書型 +#}}} + +xml.attribute.value.short=値 +xml.attribute.value=属性値 +xml.document=XMLドキュメント +xml.namespace=ネームスペース +xml.namespace.prefix=ネームスペース前置修飾子 +xml.namespace.prefix.short=前置修飾子 +#xml.namespace.decl=Namespace Declaration +xml.doctypedef=文書型 +xml.doctype.name=DTDの名前 +xml.doctype.public=公開識別子 +xml.doctype.system=システム識別子 +xml.schema=XMLスキーマ + +#}}} + +#{{{ Global Options +Global.Options.Dialog.Title=Global Options +Global.Options.Title=General +Global.Options.Max.Recent.Files=最近使用したドキュメント数: +Global.Options.Max.Recent.Files.ToolTip=最近使用したドキュメントのメニューに表示するドキュメントの数 +Global.Options.network-off=Always cache without asking +Global.Options.network-cache=Ask first, then cache remote files +Global.Options.network-always=Always download without asking +Global.Options.network=DTDとXMLスキーマ ダウンロード: +Global.Options.Menu.Spill.Over=Number of items before menus spill over: +Global.Options.Undos.To.Remember=元に戻す数: +Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXeは元に戻すために、この操作数を覚える.<BR> しかし, ビューを変わったら、覚えることはできません。</HTML> + +Shortcuts.Options.Title=ショットカット +Shortcuts.Options.Select.Label=ショットカットを編集: +Shortcuts.Options.Shortcut=ショットカット +Shortcuts.Options.Command=コマンド + +Grab.Key.title=ショットカットを選択 +Grab.Key.caption="{0}" のショットカットを選択して、決定を押してくただい。 +Grab.Key.keyboard-test=Input the key strokes that are causing problems. +Grab.Key.assigned-to=今登録されたコマンド: {0} +Grab.Key.assigned-to.none=<なし> +Grab.Key.clear=クリア +Grab.Key.remove=今のショットカットを削除 + +Grab.Key.remove-ask.title=ショットカットを削除? +Grab.Key.remove-ask.message=\ + 新しいショットカットは選択されてなかった。\n\ + 今のショットカットを削除? +#}}} + +#{{{ Document Options +Document.Options.Title=ドキュメント設定 +Document.Options.Encoding=エンコーディング: +#}}} + +#{{{ Menu Items + +File.Menu=ファイル +Edit.Menu=編集 +Help.Menu=ヘルプ +Tools.Menu=ツール +View.Menu=表示 + +#{{{ Action Labels +new-file.label=新規作成 +open-file.label=開く... +File.Recent=最近使用したドキュメント +File.Recent.None=最近使用したドキュメントはありません +save-file.label=保存 +save-as.label=名前を付けて保存... +reload-file.label=再ロード +close-file.label=閉じる +close-all.label=すべて閉じる +exit.label=終了 + +undo.label=元に戻す +redo.label=やり直し +cut.label=切り取り +copy.label=コピー +paste.label=貼り付け +find.label=探索... +findnext.label=次を探索 + +document-options.label=ドキュメント設定... +plugin-manager.label=プラグインマネジャー... +about-jsxe.label=jsXeについて... +#}}} + +#}}} + +#{{{ Dialogs + +#{{{ About dialag +about.title=jsXeについて +about.message=Released under the terms of the GNU General Public License\n\n\ + Active Contributors:\n\ + \ \ \ \ Ian Lewis <Ian...@me...>\n\ + \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ + 翻訳者:\n\ + \ \ \ \ ドイツ語 (de) - Bianca Shöen\n\ + \ \ \ \ ドイツ語 (de) - Dieter Steiner <spo...@gm...>\n\ + \ \ \ \ スウェーデン語 (sv) - Patrik Johansson <pa...@it...>\n\n\ + Past Contributers:\n\ + \ \ \ \ Aaron Flatten <afl...@us...>\n\ + \ \ \ \ Bilel Remmache <rb...@us...>\n\ + \ \ \ \ SVM <svm...@us...>\n\n\ + ホームページ: http://jsxe.sourceforge.net/ +#}}} + +#}}} + Copied: trunk/jsxe/messages/messages_ru.properties (from rev 1176, trunk/jsxe/messages/messages.ru) =================================================================== --- trunk/jsxe/messages/messages_ru.properties (rev 0) +++ trunk/jsxe/messages/messages_ru.properties 2006-08-28 15:48:25 UTC (rev 1182) @@ -0,0 +1,298 @@ +# JSXE English properties file +# $Id: messages 1158 2006-08-18 18:42:18Z ian_lewis $ +# Maintained by Alexandr Gridnev (ale...@ya...) +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +#{{{ common properties + +common.ok=Принять +common.cancel=Отменить +common.open=Открыть +common.save=Сохранить +common.save.as=Сохранить как +common.close=Закрыть +common.apply=Применить +common.more=Еще +common.insert=Вставить +common.add=Добавить +common.remove=Удалить +common.moveUp=Поднять +common.moveDown=Опустить +common.find=Искать + +common.ctrl=Ctrl +common.alt=Alt +common.shift=Shift +common.meta=Meta + +#}}} + +#{{{ XML Terminology + +#{{{ XML Node Types +xml.element=Элемент +xml.processing.instruction=Правило обработки +xml.cdata=Секция CDATA +xml.text=Текст +xml.entity.reference=Ссылка на сущность +xml.declaration=Объявление элемента +xml.notation=Замечание +xml.entity=Объявление сущности +xml.comment=Комментарий +xml.attribute=Свойство +xml.doctype=Тип документа +#}}} + +xml.attribute.value.short=Значение +xml.attribute.value=Значение свойства +xml.document=документ XML +xml.namespace=Пространство имен +xml.namespace.prefix=Префикс пространства имен +xml.namespace.prefix.short=Префикс +xml.namespace.decl=Объявление пространства имен +xml.doctypedef=Определение типа документа (DTD) +xml.doctype.name=Имя +xml.doctype.public=Публичный Id +xml.doctype.system=Системный Id +xml.schema=Схема XML +#}}} + +#{{{ Global Options +Global.Options.Dialog.Title=Глобальные опции +Global.Options.Title=Главное +Global.Options.Max.Recent.Files=Помнить ранее открытых файлов: +Global.Options.Max.Recent.Files.ToolTip=Максимальное количество ранее открытых файлов, про которые jsXe помнит и отображает в меню Файл->Ранее открытые файлы +Global.Options.network-off=Кешировать всегда, без спросу +Global.Options.network-cache=Кешировать удаленные файлы только спросив разрешения +Global.Options.network-always=Скачивать всегда, без спросу +Global.Options.network=Скачивание DTD и схемы: +Global.Options.Menu.Spill.Over=Меню выпадают после: +Global.Options.Undos.To.Remember=Запомнить действий: +Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXe запомнит столько действий и потом их можно будет отменить.<BR> Однако он не может запомнить действия, выполненные после переключения видов</HTML> + +Shortcuts.Options.Title=Горячие клавиши +Shortcuts.Options.Select.Label=Редактировать горячие клавиши: +Shortcuts.Options.Shortcut=Горячая клавиша +Shortcuts.Options.Command=Команда + +Grab.Key.title=Нажмите клавишу +Grab.Key.caption=Нажмите клавишу для команды "{0}", а котом нажмите Принять. +Grab.Key.keyboard-test=Input the key strokes that are causing problems. +Grab.Key.assigned-to=Уже назначено для: {0} +Grab.Key.assigned-to.none=<ничего> +Grab.Key.clear=Очистить +Grab.Key.remove=Удалить текущее + +Grab.Key.remove-ask.title=Удалить клавишу? +Grab.Key.remove-ask.message=\ + Вы не назначили новую клавишу.\n\ + Вы что, всеръез решили лишить команду клавиши, правда? + +Grab.Key.duplicate-alt-shortcut.title=Две команды на клавишу +Grab.Key.duplicate-alt-shortcut.message=\ + Клавиша которую вы назначили уже занята за другой командой\n\ + Просьба выбрать другую, ато они подерутся. + +Grab.Key.duplicate-shortcut.title=Две команды на клавишу +Grab.Key.duplicate-shortcut.message=\ + Эта клавиша уже занята за\n\ + "{0}".\n\ + \n\ + Вы хотите отвергнуть это назначение? +#}}} + +#{{{ Document Options +Document.Options.Title=Опции документа XML +Document.Options.Message=Этот диалог управляет настройками только\n текущего документа. Чтобы изменить\n базовые настройки лезте в\n Инструменты->Глобальные опции. +Document.Options.Line.Separator=Разделитель строк: +Document.Options.Line.Separator.ToolTip=Разделитель строк. По умолчанию выбирается традиционный для вашей операционной системы. +Document.Options.Encoding=Кодировка: +Document.Options.Encoding.ToolTip=Кодировка, которую jsXe использует для записи текстовой инфы в файл. +Document.Options.Indent.Width=Ширина отступа: +Document.Options.Indent.Width.ToolTip=Ширина используемая при форматировании и отображении символов табуляции. +Document.Options.Format.XML=Форматировать выводимый XML +Document.Options.Format.XML.ToolTip=Если это выбрано, XML будет форматироваться автоматически. +Document.Options.Validate=Подтв. если доступны DTD или Схема +Document.Options.Validate.ToolTip=Если это выбрано, jsXe будет подтверждать (проверять?) документ XML. +Document.Options.Soft.Tabs=Мягкие табуляции (эмуляция пробелами) +Document.Options.Soft.Tabs.ToolTip=Если это выбрано, символы табуляции будут заменены пробелами. +#}}} + +#{{{ Plugin Manager +Plugin.Manager.Title=Менеджер плагинов +Plugin.Manager.Name.Column.Header=Имя +Plugin.Manager.Version.Column.Header=Версия +Plugin.Manager.Status.Column.Header=Статус +Plugin.Manager.Loaded.Status=Загружен +Plugin.Manager.Not.Loaded.Status=Не загружен +Plugin.Manager.Broken.Status=Ошибка +#}}} + +#{{{ Menu Items + +File.Menu=Файл +Edit.Menu=Правка +View.Menu=Вид +Tools.Menu=Инструменты +Help.Menu=Справка + + +#}}} + +#{{{ Action Labels +new-file.label=Новый +open-file.label=Открыть... +File.Recent=Ранее открытые файлы +File.Recent.None=Нэма нифигга +save-file.label=Сохранить +save-as.label=Сохранить как... +reload-file.label=Открыть еще раз +File.Recent=Ранее открытые файлы +close-file.label=Закрыть +close-all.label=Закрыть все +exit.label=Выход + +undo.label=Отменить +redo.label=Повторить +cut.label=Вырезать +copy.label=Копировать +paste.label=Вставить +find.label=Искать... +findnext.label=Искать далее + +general-options.label=Глобальные опции... +document-options.label=Опции документа... +plugin-manager.label=Менеджер плагинов... +validation-errors.label=Ошибки подтверждения... +about-jsxe.label=О программе jsXe... + +#}}} + +#{{{ Messages + +DocumentView.Open.Message="Не могу открыть буффер в каком-либо из установленных document view-ов" + +#{0} file name +DocumentBuffer.Reload.Message={0} не сохранен!\n Вы потеряете все несохраненные изменения если продолжите!\n\n Продолжить? Вам не нужны эти несохраненные данные, в самом деле? +DocumentBuffer.Reload.Message.Title=Документ был изменен +DocumentBuffer.SaveAs.Message=Файл {0} уже существует. Записать новый файл поверх, зверски убив старый? +DocumentBuffer.SaveAs.Message.Title=Файл уже существует +DocumentBuffer.Close.Message={0} Не сохранен! Сохранить его прямо сейчас? +DocumentBuffer.Close.Message.Title=Несохраненные изменения + +#{0} file name +DocumentBuffer.Saved.Message={0} Сохранен +DocumentBuffer.Closed.Message={0} Закрыт +DocumentBuffer.Loaded.Message={0} Загружен +DocumentBuffer.Reloaded.Message={0} Загружен заново + +#{0} plugin name +DocumentView.Not.Found=Нету такого плагина со странным именем "{0}". + +#{{{ Plugin Load Messages + +# {0} plugin name +Plugin.Error.title=Ошибка плагина +Plugin.Error.List.message=Следующие плагины не могут быть загружены: +Plugin.Load.Already.Loaded=Плагин {0} уже загружен. +Plugin.Load.Wrong.Main.Class=Главный класс не является классом плагина. +Plugin.Load.No.Plugin.Class=Класс плагина не был определен. +Plugin.Load.No.Plugin.Name=Имя плагина не было определено. +Plugin.Load.No.Plugin.HR.Name=Для плагина не было определено такого имени,/n чтоб его мог прочитать нормальный человек (human-readable name). +Plugin.Load.No.Plugin.Version=Версия плагина не была определена. + +# {0} plugin name +# {1} requirement name +# {2} required version +# {3} found version +Plugin.Dependency.Message={0} требует {1} версии {2}, но обнаружена только версия {3}. +# {0} plugin name +# {1} requirement name +# {2} required version +Plugin.Dependency.Not.Found={0} требует {1} версии {2}, но {1} не удалось найти. +# {0} plugin name +# {1} requirement name +Plugin.Dependency.Not.Found2={0} требует {1} но {1} нигде не видать. +# {0} plugin name +# {1} invalid dependency +Plugin.Dependency.Invalid=У {0} есть неправильная зависимость: {1} +# {0} invalid version +Plugin.Dependency.Invalid.jsXe.Version=Неправильный номер версии jsXe: {0} +# {0} plugin name +# {1} requirement name +Plugin.Dependency.No.Version=Не могу загрузить плагин {0}, потому что у {1} не подписана версия. +# {0} plugin name +# {1} requirement name +Plugin.Dependency.Failed.Load={0} Требует плагин {1}, но этот самый {1} так и не удалось загрузить. + +#}}} + +#{{{ Error Messages +No.Xerces.Error.message={0} не обнаружен. jsXe требует Apache {0}. +No.Xerces.Error.title={0} не обнаружен. +IO.Error.title=ошибка ввода/вывода (I/O Error) +IO.Error.message=Произошла ошибка ввода/вывода +#}}} + +#}}} + +#{{{ Dialogs + +#{{{ Download resource dialog +xml.download-resource.title=Выкачиваем ресурсы с удаленного сервера... + +#{0} URL +xml.download-resource.message=Этот XML-файл зависит от ресурсов, которые расколожены\n\ + по следующему адресу в интернете:\n\ + \n\ + {0}\n\ + \n\ + Хотите ли вы чтобы плагин XML скачал ресурсы и закешировал их\n\ + для последующего использования?\n\ + \n\ + Если вы хотите соизволить разрешить мне скачивать ресурсы без спросу,\n\ + то отключите кеширование ресурсов в глобальных опциях jsXe. +#}}} + +#{{{ Dirty Files Dialog +DirtyFilesDialog.Dialog.Title=Несохраненные изменения +DirtyFilesDialog.Dialog.Message=В следующих файлах есть несохраненные изменения: +DirtyFilesDialog.Button.SelectAll.Title=Выбрать все +#DirtyFilesDialog.Button.SelectAll.ToolTip=Взять их фсехх! +DirtyFilesDialog.Button.SaveSelected.Title=Сохранить выбранные +#DirtyFilesDialog.Button.SaveSelected.ToolTip=Сохраняет, что тут еще можно сказать... те что выбраны, да... +DirtyFilesDialog.Button.DiscardSelected.Title=Убрать выделение +#DirtyFilesDialog.Button.DiscardSelected.ToolTip=Убирает выделение ;) +#}}} + +#{{{ Activity Log Dialog +activity-log.label = Лог активности +ActivityLogDialog.Dialog.Title = Лог активности +ActivityLogDialog.Dialog.Message = Содержимое лога активности: +#}}} + +#{{{ About dialag +about.title=О программе jsXe +about.message=Распространяется на условиях GNU General Public License\n\n\ + Активные разработчики:\n\ + \ \ \ \ Ian Lewis <Ian...@me...>\n\ + \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ + Переводчики:\n\ + \ \ \ \ German (de) - Bianca Sh\u00f6en\n\ + \ \ \ \ German (de) - Dieter Steiner <spo...@gm...>\n\ + \ \ \ \ Swedish (sv) - Patrik Johansson <pa...@it...>\n\n\ + В прошлом учавствовали в разработке:\n\ + \ \ \ \ Aaron Flatten <afl...@us...>\n\ + \ \ \ \ Bilel Remmache <rb...@us...>\n\ + \ \ \ \ SVM <svm...@us...>\n\n\ + Страница проекта: http://jsxe.sourceforge.net/ +#}}} + +#{{{ Validation Errors Dialog +ValidationErrors.title=Ошибки подтверждения +ValidationErrors.message=Ошибки подтверждения +#}}} + +#}}} Copied: trunk/jsxe/messages/messages_sv.properties (from rev 1176, trunk/jsxe/messages/messages.sv) =================================================================== --- trunk/jsxe/messages/messages_sv.properties (rev 0) +++ trunk/jsxe/messages/messages_sv.properties 2006-08-28 15:48:25 UTC (rev 1182) @@ -0,0 +1,48 @@ +# JSXE Swedish properties file +# $Id$ +# Currently maintained by Patrik Johansson <pa...@it...> +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +#{{{ common properties + +common.ok=OK +common.cancel=Avbryt +common.close=Stäng +common.apply=Verkställ +common.more=Mer +common.insert=Infoga +common.add=Lägg till +common.remove=Ta bort +common.moveUp=Flytta upp +common.moveDown=Flytta ner +common.cut=Klipp ut +common.copy=Kopiera +common.paste=Klistra in +common.find=Sök... +common.findnext=Sök nästa + +#}}} + +#{{{ Global Options +global.options.title=Globala inställningar +#}}} + +#{{{ File Menu Items +File.New=Ny +File.Open=Öppna... +File.Recent=Senaste filer +File.Save=Spara +File.SaveAs=Spara som... +File.Reload=Läs om +File.Recent=Senaste filer +File.Close=Stäng +File.CloseAll=Stäng alla +File.Exit=Avsluta +#}}} + +Tools.Options=Inställningar... +Tools.Plugin=Hanterare för insticksprogram... +Plugin.Manager.Title=Hanterare för insticksprogram +Help.About=Om jsXe... Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/Messages.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/Messages.java 2006-08-28 04:04:14 UTC (rev 1181) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/Messages.java 2006-08-28 15:48:25 UTC (rev 1182) @@ -66,10 +66,10 @@ * <code>Properties</code> class. * * <ul> - * <li>messages.<code>language</code>_<code>country</code>_<code>variant</code></li> - * <li>messages.<code>language</code>_<code>country</code></li> - * <li>messages.<code>language</code></li> - * <li>messages</li> + * <li>messages_<code>language</code>_<code>country</code>_<code>variant</code>.properties</li> + * <li>messages_<code>language</code>_<code>country</code>.properties</li> + * <li>messages_<code>language</code>.properties</li> + * <li>messages.properties</li> * </ul> * * @author Trish Hartnett (<a href="mailto:tri...@me...">tri...@me...</a>) @@ -107,23 +107,12 @@ StringBuffer messagesFile = new StringBuffer("messages"); if (locale != null) { - messagesFile.append(".").append(locale.toString()); - // String language = locale.getLanguage(); - // if (language != null && !language.equals("")) { - // messagesFile.append(".").append(language); - - // String country = locale.getCountry(); - // if (country != null && !country.equals("")) { - // messagesFile.append(".").append(country); - - // String variant = locale.getVariant(); - // if (variant != null && !variant.equals("")) { - // messagesFile.append(".").append(variant); - // } - // } - // } + //locale is language[_country[_variant]] + messagesFile.append("_").append(locale.toString()); } + messagesFile.append(".properties"); + return messagesFile.toString(); }//}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ... [truncated message content] |
From: <ian...@us...> - 2006-08-28 21:56:27
|
Revision: 1190 Author: ian_lewis Date: 2006-08-28 14:56:21 -0700 (Mon, 28 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1190&view=rev Log Message: ----------- merge from 05pre3 branch rev. 1189 Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/src/net/sourceforge/jsxe/properties Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-28 21:53:57 UTC (rev 1189) +++ trunk/jsxe/Changelog 2006-08-28 21:56:21 UTC (rev 1190) @@ -1,6 +1,7 @@ 08/28/2006 Ian Lewis <Ian...@me...> * Changed the messages files to be named the standard ResourceBundle way. + * Fixed default key binding for exit. 08/27/2006 Ian Lewis <Ian...@me...> Modified: trunk/jsxe/src/net/sourceforge/jsxe/properties =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-28 21:53:57 UTC (rev 1189) +++ trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-28 21:56:21 UTC (rev 1190) @@ -57,7 +57,7 @@ #{{{ Default key bindings open-file.shortcut=C+o -exit.shortcut=C+x +exit.shortcut=C+q close-file.shortcut=C+w new-file.shortcut=C+n save-file.shortcut=C+s This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-28 18:23:34
|
Revision: 1185 Author: ian_lewis Date: 2006-08-28 11:23:14 -0700 (Mon, 28 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1185&view=rev Log Message: ----------- Added initial files for the help viewer Modified Paths: -------------- trunk/jsxe/build.xml trunk/jsxe/messages/messages.properties trunk/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java trunk/jsxe/src/net/sourceforge/jsxe/jsXe.java trunk/jsxe/src/net/sourceforge/jsxe/properties trunk/jsxe/src/net/sourceforge/jsxe/util/MiscUtilities.java Added Paths: ----------- trunk/jsxe/src/net/sourceforge/jsxe/gui/RolloverButton.java trunk/jsxe/src/net/sourceforge/jsxe/help/ trunk/jsxe/src/net/sourceforge/jsxe/help/HelpIndex.java trunk/jsxe/src/net/sourceforge/jsxe/help/HelpSearchPanel.java trunk/jsxe/src/net/sourceforge/jsxe/help/HelpTOCPanel.java trunk/jsxe/src/net/sourceforge/jsxe/help/HelpViewer.java trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowD.png trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowL.png trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowR.png trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowU.png Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-08-28 15:50:38 UTC (rev 1184) +++ trunk/jsxe/build.xml 2006-08-28 18:23:14 UTC (rev 1185) @@ -221,6 +221,9 @@ <!--<include name="**/*.dtd"/>--> <include name="**/*.jpg"/> <include name="**/*.png"/> + + <!-- files in the source directory to ignore --> + <exclude name="net/sourceforge/jsxe/help/**/*"/> </fileset> </copy> <mkdir dir="${build.plugin}"/> Modified: trunk/jsxe/messages/messages.properties =================================================================== --- trunk/jsxe/messages/messages.properties 2006-08-28 15:50:38 UTC (rev 1184) +++ trunk/jsxe/messages/messages.properties 2006-08-28 18:23:14 UTC (rev 1185) @@ -297,4 +297,28 @@ ValidationErrors.message=Validation Errors #}}} +#}}} + +#{{{ Help viewer +helpviewer.title=jsXe Help +helpviewer.loading=Loading... +helpviewer.back.label=Back +helpviewer.forward.label=Forward + +helpviewer.toc.loading=Loading... +helpviewer.toc.label=Contents +helpviewer.toc.welcome=Welcome to jsXe +helpviewer.toc.readme=General Information +helpviewer.toc.changes=Detailed Change Log +helpviewer.toc.todo=To Do List and Known Bugs +helpviewer.toc.copying=GNU General Public License +helpviewer.toc.copying-doc=GNU Free Documentation License +helpviewer.toc.copying-apache=Apache License +helpviewer.toc.copying-plugins=Plugin Licensing Amendment +helpviewer.toc.plugins=Plugins + +helpviewer.search.label=Search +helpviewer.search.caption=Search for: +helpviewer.searching=Searching... +helpviewer.no-results=No results #}}} \ No newline at end of file Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java 2006-08-28 15:50:38 UTC (rev 1184) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java 2006-08-28 18:23:14 UTC (rev 1185) @@ -90,7 +90,7 @@ * Loads an icon. * @param iconName The icon name */ - public static Icon loadIcon(String iconName) { + public static ImageIcon loadIcon(String iconName) { if (icons == null) { icons = new Hashtable(); } Added: trunk/jsxe/src/net/sourceforge/jsxe/gui/RolloverButton.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/RolloverButton.java (rev 0) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/RolloverButton.java 2006-08-28 18:23:14 UTC (rev 1185) @@ -0,0 +1,207 @@ +/* + * RolloverButton.java - Class for buttons that implement rollovers + * :tabSize=8:indentSize=8:noTabs=false: + * :folding=explicit:collapseFolds=1: + * + * Copyright (C) 2002 Kris Kopicki + * Portions copyright (C) 2003 Slava Pestov + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package net.sourceforge.jsxe.gui; + +//{{{ Imports +import java.awt.*; +import java.awt.event.*; +import java.lang.reflect.Method; +import javax.swing.*; +import javax.swing.border.*; +import javax.swing.plaf.basic.BasicButtonUI; +import net.sourceforge.jsxe.OperatingSystem; +import net.sourceforge.jsxe.util.Log; +//}}} + +/** + * If you wish to have rollovers on your buttons, use this class. + * + * Unlike the Swing rollover support, this class works outside of + * <code>JToolBar</code>s, and does not require undocumented client + * property hacks or JDK1.4-specific API calls.<p> + * + * Note: You should not call <code>setBorder()</code> on your buttons, + * as they probably won't work properly. + * @author Kris Kopicki + * @author Slava Pestov + * @since jsXe 0.5 pre4 + * @version $Id$ + */ +public class RolloverButton extends JButton +{ + //{{{ RolloverButton constructor + /** + * Setup the border (invisible initially) + */ + public RolloverButton() + { + if(OperatingSystem.hasJava15()) + setContentAreaFilled(false); + + if(method != null) + { + try + { + method.invoke(this,new Boolean[] { Boolean.TRUE }); + } + catch(Exception e) + { + Log.log(Log.ERROR,this,e); + } + } + else + { + addMouseListener(new MouseOverHandler()); + } + } //}}} + + //{{{ RolloverButton constructor + /** + * Setup the border (invisible initially) + */ + public RolloverButton(Icon icon) + { + this(); + + setIcon(icon); + } //}}} + + //{{{ updateUI() method + public void updateUI() + { + if(OperatingSystem.isWindows()) + { + /* Workaround for uncooperative Windows L&F */ + setUI(new BasicButtonUI()); + } + else + super.updateUI(); + + setBorder(new EtchedBorder()); + setBorderPainted(false); + setMargin(new Insets(1,1,1,1)); + + setRequestFocusEnabled(false); + } //}}} + + //{{{ isOpaque() method + public boolean isOpaque() + { + return false; + } //}}} + + //{{{ setEnabled() method + public void setEnabled(boolean b) + { + super.setEnabled(b); + if(method == null) + { + setBorderPainted(false); + repaint(); + } + } //}}} + + //{{{ setBorderPainted() method + public void setBorderPainted(boolean b) + { + try + { + revalidateBlocked = true; + super.setBorderPainted(b); + } + finally + { + revalidateBlocked = false; + } + } //}}} + + //{{{ revalidate() method + /** + * We block calls to revalidate() from a setBorderPainted(), for + * performance reasons. + */ + public void revalidate() + { + if(!revalidateBlocked) + super.revalidate(); + } //}}} + + //{{{ paint() method + public void paint(Graphics g) + { + if(method != null || isEnabled()) + super.paint(g); + else + { + Graphics2D g2 = (Graphics2D)g; + g2.setComposite(c); + super.paint(g2); + } + } //}}} + + //{{{ Private members + private static AlphaComposite c = AlphaComposite.getInstance( + AlphaComposite.SRC_OVER, 0.5f); + + private static Method method; + + private boolean revalidateBlocked; + + static + { + /* if(OperatingSystem.hasJava14()) + { + try + { + method = RolloverButton.class + .getMethod("setRolloverEnabled",new Class[] + { boolean.class }); + Log.log(Log.DEBUG,RolloverButton.class, + "Java 1.4 setRolloverEnabled() method enabled"); + } + catch(Exception e) + { + Log.log(Log.ERROR,RolloverButton.class,e); + } + } */ + } //}}} + + //{{{ MouseHandler class + /** + * Make the border visible/invisible on rollovers + */ + class MouseOverHandler extends MouseAdapter + { + public void mouseEntered(MouseEvent e) + { + if (isEnabled()) + setBorderPainted(true); + } + + public void mouseExited(MouseEvent e) + { + setBorderPainted(false); + } + } //}}} +} Added: trunk/jsxe/src/net/sourceforge/jsxe/help/HelpIndex.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/help/HelpIndex.java (rev 0) +++ trunk/jsxe/src/net/sourceforge/jsxe/help/HelpIndex.java 2006-08-28 18:23:14 UTC (rev 1185) @@ -0,0 +1,398 @@ +/* +HelpIndex.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2002 Slava Pestov +Portions Copyright (C) 2006 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package org.gjt.sp.jedit.help; + +//{{{ Imports +import java.io.*; +import java.net.*; +import java.util.zip.*; +import java.util.*; +import org.gjt.sp.jedit.io.*; +import org.gjt.sp.jedit.*; +import org.gjt.sp.util.Log; +//}}} + +class HelpIndex +{ + //{{{ HelpIndex constructor + public HelpIndex() + { + words = new HashMap(); + files = new ArrayList(); + + ignoreWord("a"); + ignoreWord("an"); + ignoreWord("and"); + ignoreWord("are"); + ignoreWord("as"); + ignoreWord("be"); + ignoreWord("by"); + ignoreWord("can"); + ignoreWord("do"); + ignoreWord("for"); + ignoreWord("from"); + ignoreWord("how"); + ignoreWord("i"); + ignoreWord("if"); + ignoreWord("in"); + ignoreWord("is"); + ignoreWord("it"); + ignoreWord("not"); + ignoreWord("of"); + ignoreWord("on"); + ignoreWord("or"); + ignoreWord("s"); + ignoreWord("that"); + ignoreWord("the"); + ignoreWord("this"); + ignoreWord("to"); + ignoreWord("will"); + ignoreWord("with"); + ignoreWord("you"); + } //}}} + + /* //{{{ HelpIndex constructor + public HelpIndex(String fileListPath, String wordIndexPath) + { + this(); + } //}}} */ + + //{{{ indexEditorHelp() method + /** + * Indexes all available help, including the jEdit user's guide, FAQ,] + * and plugin documentation. + */ + public void indexEditorHelp() + { + try + { + String jEditHome = jEdit.getJEditHome(); + if(jEditHome != null) + { + indexDirectory(MiscUtilities.constructPath(jEditHome,"doc","users-guide")); + indexDirectory(MiscUtilities.constructPath(jEditHome,"doc","FAQ")); + indexDirectory(MiscUtilities.constructPath(jEditHome,"doc","news42")); + } + } + catch(Throwable e) + { + Log.log(Log.ERROR,this,"Error indexing editor help"); + Log.log(Log.ERROR,this,e); + } + + PluginJAR[] jars = jEdit.getPluginJARs(); + for(int i = 0; i < jars.length; i++) + { + try + { + indexJAR(jars[i].getZipFile()); + } + catch(Throwable e) + { + Log.log(Log.ERROR,this,"Error indexing JAR: " + + jars[i].getPath()); + Log.log(Log.ERROR,this,e); + } + } + + Log.log(Log.DEBUG,this,"Indexed " + words.size() + " words"); + } //}}} + + //{{{ indexDirectory() method + /** + * Indexes all HTML and text files in the specified directory. + * @param dir The directory + */ + public void indexDirectory(String dir) throws Exception + { + String[] files = VFSManager.getFileVFS() + ._listDirectory(null,dir,"*.{html,txt}",true,null); + + for(int i = 0; i < files.length; i++) + { + indexURL(files[i]); + } + } //}}} + + //{{{ indexJAR() method + /** + * Indexes all HTML and text files in the specified JAR file. + * @param jar The JAR file + */ + public void indexJAR(ZipFile jar) throws Exception + { + Enumeration e = jar.entries(); + while(e.hasMoreElements()) + { + ZipEntry entry = (ZipEntry)e.nextElement(); + String name = entry.getName(); + String lname = name.toLowerCase(); + if(lname.endsWith(".html")/* || lname.endsWith(".txt") */) + { + // only works for jEdit plugins + String url = "jeditresource:/" + + MiscUtilities.getFileName(jar.getName()) + + "!/" + name; + Log.log(Log.DEBUG,this,url); + indexStream(jar.getInputStream(entry),url); + } + } + } //}}} + + //{{{ indexURL() method + /** + * Reads the specified HTML file and adds all words defined therein to the + * index. + * @param url The HTML file's URL + */ + public void indexURL(String url) throws Exception + { + InputStream _in; + + if(MiscUtilities.isURL(url)) + _in = new URL(url).openStream(); + else + { + _in = new FileInputStream(url); + // hack since HelpViewer needs a URL... + url = "file:" + url; + } + + indexStream(_in,url); + } //}}} + + //{{{ lookupWord() method + public Word lookupWord(String word) + { + Object o = words.get(word); + if(o == IGNORE) + return null; + else + return (Word)o; + } //}}} + + //{{{ getFile() method + public HelpFile getFile(int index) + { + return (HelpFile)files.get(index); + } //}}} + + //{{{ Private members + // used to mark words to ignore (see constructor for the list) + private static Object IGNORE = new Object(); + private HashMap words; + private ArrayList files; + + //{{{ ignoreWord() method + private void ignoreWord(String word) + { + words.put(word,IGNORE); + } //}}} + + //{{{ indexStream() method + /** + * Reads the specified HTML file and adds all words defined therein to the + * index. + * @param _in The input stream + * @param file The file + */ + private void indexStream(InputStream _in, String fileName) + throws Exception + { + HelpFile file = new HelpFile(fileName); + files.add(file); + int index = files.size() - 1; + + StringBuffer titleText = new StringBuffer(); + + BufferedReader in = new BufferedReader( + new InputStreamReader(_in)); + + try + { + StringBuffer word = new StringBuffer(); + boolean insideTag = false; + boolean insideEntity = false; + + boolean title = false; + + int c; + while((c = in.read()) != -1) + { + char ch = (char)c; + if(insideTag) + { + if(ch == '>') + { + if(word.toString().equals("title")) + title = true; + insideTag = false; + word.setLength(0); + } + else + word.append(ch); + } + else if(insideEntity) + { + if(ch == ';') + insideEntity = false; + } + else if(ch == '<') + { + if(title) + title = false; + + if(word.length() != 0) + { + addWord(word.toString(),index,title); + word.setLength(0); + } + + insideTag = true; + } + else if(ch == '&') + insideEntity = true; + else if(title) + titleText.append(ch); + else if(!Character.isLetterOrDigit(ch)) + { + if(word.length() != 0) + { + addWord(word.toString(),index,title); + word.setLength(0); + } + } + else + word.append(ch); + } + } + finally + { + in.close(); + } + + if(titleText.length() == 0) + file.title = fileName; + else + file.title = titleText.toString(); + } //}}} + + //{{{ addWord() method + private void addWord(String word, int file, boolean title) + { + word = word.toLowerCase(); + + Object o = words.get(word); + if(o == IGNORE) + return; + + if(o == null) + words.put(word,new Word(word,file,title)); + else + ((Word)o).addOccurrence(file,title); + } //}}} + + //}}} + + //{{{ Word class + static class Word + { + // how much an occurrence in the title is worth + static final int TITLE_OCCUR = 10; + + // the word + String word; + + // files it occurs in + int occurCount = 0; + Occurrence[] occurrences; + + Word(String word, int file, boolean title) + { + this.word = word; + occurrences = new Occurrence[5]; + addOccurrence(file,title); + } + + void addOccurrence(int file, boolean title) + { + for(int i = 0; i < occurCount; i++) + { + if(occurrences[i].file == file) + { + occurrences[i].count += (title ? TITLE_OCCUR : 1); + return; + } + } + + if(occurCount >= occurrences.length) + { + Occurrence[] newOccur = new Occurrence[occurrences.length * 2]; + System.arraycopy(occurrences,0,newOccur,0,occurCount); + occurrences = newOccur; + } + + occurrences[occurCount++] = new Occurrence(file,title); + } + + static class Occurrence + { + int file; + int count; + + Occurrence(int file, boolean title) + { + this.file = file; + this.count = (title ? TITLE_OCCUR : 1); + } + } + } //}}} + + //{{{ HelpFile class + static class HelpFile + { + String file; + String title; + + HelpFile(String file) + { + this.file = file; + } + + public String toString() + { + return title; + } + + public boolean equals(Object o) + { + if(o instanceof HelpFile) + return ((HelpFile)o).file.equals(file); + else + return false; + } + } //}}} +} Added: trunk/jsxe/src/net/sourceforge/jsxe/help/HelpSearchPanel.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/help/HelpSearchPanel.java (rev 0) +++ trunk/jsxe/src/net/sourceforge/jsxe/help/HelpSearchPanel.java 2006-08-28 18:23:14 UTC (rev 1185) @@ -0,0 +1,298 @@ +/* +HelpSearchPanel.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2002 Slava Pestov +Portions Copyright (C) 2006 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.help; + +//{{{ Imports +import javax.swing.*; +import java.awt.event.*; +import java.awt.*; +import java.util.*; + +import net.sourceforge.jsxe.gui.*; +import net.sourceforge.jsxe.jsXe; +import net.sourceforge.jsxe.Log; +//}}} + +/** + * The Search panel in the Help Viewer. + * + * @author Slava Pestov + * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) + * @version $Id$ + * @since jsXe 0.5 pre4 + */ +class HelpSearchPanel extends JPanel { + + //{{{ HelpSearchPanel constructor + public HelpSearchPanel(HelpViewer helpViewer) { + super(new BorderLayout(6,6)); + + this.helpViewer = helpViewer; + + Box box = new Box(BoxLayout.X_AXIS); + box.add(new JLabel(Messages.getMessage("helpviewer.search.caption"))); + box.add(Box.createHorizontalStrut(6)); + box.add(searchField = new HistoryTextField("helpviewer.search")); + searchField.addActionListener(new ActionHandler()); + + add(BorderLayout.NORTH,box); + + results = new JList(); + results.addMouseListener(new MouseHandler()); + results.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + results.setCellRenderer(new ResultRenderer()); + add(BorderLayout.CENTER,new JScrollPane(results)); + } //}}} + + //{{{ Private members + private HelpViewer helpViewer; + private HistoryTextField searchField; + private JList results; + private HelpIndex index; + + private HelpIndex getHelpIndex() + { + if(index == null) + { + index = new HelpIndex(); + try + { + index.indexEditorHelp(); + } + catch(Exception e) + { + index = null; + Log.log(Log.ERROR,this,e); + GUIUtilities.error(helpViewer,"helpviewer.search.error", + new String[] { e.toString() }); + } + } + + return index; + } //}}} + + //{{{ ResultIcon class + static class ResultIcon implements Icon + { + private static RenderingHints renderingHints; + + static + { + HashMap hints = new HashMap(); + + hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); + hints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + + renderingHints = new RenderingHints(hints); + } + + private int rank; + + ResultIcon(int rank) + { + this.rank = rank; + } + + public int getIconWidth() + { + return 40; + } + + public int getIconHeight() + { + return 9; + } + + public void paintIcon(Component c, Graphics g, int x, int y) + { + Graphics2D g2d = (Graphics2D)g.create(); + g2d.setRenderingHints(renderingHints); + + for(int i = 0; i < 4; i++) + { + if(rank > i) + g2d.setColor(UIManager.getColor("Label.foreground")); + else + g2d.setColor(UIManager.getColor("Label.disabledForeground")); + g2d.fillOval(x+i*10,y,9,9); + } + } + } //}}} + + //{{{ ResultRenderer class + class ResultRenderer extends DefaultListCellRenderer + { + public Component getListCellRendererComponent( + JList list, + Object value, + int index, + boolean isSelected, + boolean cellHasFocus) + { + super.getListCellRendererComponent(list,null,index, + isSelected,cellHasFocus); + + if(value instanceof String) + { + setIcon(null); + setText((String)value); + } + else + { + Result result = (Result)value; + setIcon(new ResultIcon(result.rank)); + setText(result.title); + } + + return this; + } + } //}}} + + //{{{ Result class + static class Result + { + String file; + String title; + int rank; + + Result(HelpIndex.HelpFile file, int count) + { + this.file = file.file; + this.title = file.title; + rank = count; + } + } //}}} + + //{{{ ResultCompare class + static class ResultCompare implements Comparator + { + public int compare(Object o1, Object o2) + { + Result r1 = (Result)o1; + Result r2 = (Result)o2; + if(r1.rank == r2.rank) + return r1.title.compareTo(r2.title); + else + return r2.rank - r1.rank; + } + } //}}} + + //{{{ ActionHandler class + class ActionHandler implements ActionListener { + + public void actionPerformed(ActionEvent evt) { + + final HelpIndex index = getHelpIndex(); + if (index == null) { + return; + } + + results.setListData(new String[] { Messages.getMessage("helpviewer.searching") }); + + final String text = searchField.getText(); + final Vector resultModel = new Vector(); + + VFSManager.runInWorkThread(new Runnable() { + + public void run() { + StringTokenizer st = new StringTokenizer(text,",.;:-? "); + + // we later use this to compute a relative ranking + int maxRank = 0; + + while (st.hasMoreTokens()) { + String word = st.nextToken().toLowerCase(); + HelpIndex.Word lookup = index.lookupWord(word); + if (lookup == null) { + continue; + } + + for (int i = 0; i < lookup.occurCount; i++) { + HelpIndex.Word.Occurrence occur = lookup.occurrences[i]; + + boolean ok = false; + + HelpIndex.HelpFile file = index.getFile(occur.file); + for (int j = 0; j < resultModel.size(); j++) { + Result result = (Result)resultModel.elementAt(j); + if (result.file.equals(file.file)) { + result.rank += occur.count; + result.rank += 20; // multiple files w/ word bonus + maxRank = Math.max(result.rank,maxRank); + ok = true; + break; + } + } + + if (!ok) { + maxRank = Math.max(occur.count,maxRank); + resultModel.addElement(new Result(file,occur.count)); + } + } + } + + if (maxRank != 0) { + // turn the rankings into relative rankings, from 1 to 4 + for (int i = 0; i < resultModel.size(); i++) { + Result result = (Result)resultModel.elementAt(i); + result.rank = (int)Math.ceil((double)result.rank * 4 / maxRank); + } + + Collections.sort(resultModel,new ResultCompare()); + } + } + }); + + VFSManager.runInAWTThread(new Runnable() { + public void run() { + if (resultModel.size() == 0) { + results.setListData(new String[] { Messages.getMessage("helpviewer.no-results") }); + + getToolkit().beep(); + } else { + results.setListData(resultModel); + } + } + }); + + } + } //}}} + + //{{{ MouseHandler class + public class MouseHandler extends MouseAdapter + { + public void mouseReleased(MouseEvent evt) + { + int row = results.locationToIndex(evt.getPoint()); + if(row != -1) + { + Result result = (Result)results.getModel() + .getElementAt(row); + helpViewer.gotoURL(result.file,true); + } + } + } //}}} +} Added: trunk/jsxe/src/net/sourceforge/jsxe/help/HelpTOCPanel.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/help/HelpTOCPanel.java (rev 0) +++ trunk/jsxe/src/net/sourceforge/jsxe/help/HelpTOCPanel.java 2006-08-28 18:23:14 UTC (rev 1185) @@ -0,0 +1,445 @@ +/* +HelpTOCPanel.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 1999, 2004 Slava Pestov +Portions Copyright (C) 2006 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.help; + +//{{{ Imports +import com.microstar.xml.*; +import javax.swing.*; +import javax.swing.border.*; +import javax.swing.tree.*; +import java.awt.*; +import java.awt.event.*; +import java.io.*; +import java.net.*; +import java.util.*; +//import org.gjt.sp.jedit.browser.FileCellRenderer; // for icons +//import org.gjt.sp.jedit.io.VFSManager; +import net.sourceforge.jsxe.jsXe; +import net.sourceforge.jsxe.util.Log; +//}}} + +class HelpTOCPanel extends JPanel { + + //{{{ HelpTOCPanel constructor + HelpTOCPanel(HelpViewer helpViewer) + { + super(new BorderLayout()); + + this.helpViewer = helpViewer; + nodes = new Hashtable(); + + toc = new TOCTree(); + + // looks bad with the OS X L&F, apparently... + if(!OperatingSystem.isMacOSLF()) + toc.putClientProperty("JTree.lineStyle", "Angled"); + + toc.setCellRenderer(new TOCCellRenderer()); + toc.setEditable(false); + toc.setShowsRootHandles(true); + + add(BorderLayout.CENTER,new JScrollPane(toc)); + + load(); + } //}}} + + //{{{ selectNode() method + void selectNode(String shortURL) + { + if(tocModel == null) + return; + + DefaultMutableTreeNode node = (DefaultMutableTreeNode)nodes.get(shortURL); + + if(node == null) + return; + + TreePath path = new TreePath(tocModel.getPathToRoot(node)); + toc.expandPath(path); + toc.setSelectionPath(path); + toc.scrollPathToVisible(path); + } //}}} + + //{{{ load() method + void load() { + DefaultTreeModel empty = new DefaultTreeModel( + new DefaultMutableTreeNode(Messages.getMessage("helpviewer.toc.loading"))); + toc.setModel(empty); + toc.setRootVisible(true); + + VFSManager.runInWorkThread(new Runnable() { + public void run() { + createTOC(); + tocModel.reload(tocRoot); + toc.setModel(tocModel); + toc.setRootVisible(false); + for (int i = 0; i <tocRoot.getChildCount(); i++) { + DefaultMutableTreeNode node = (DefaultMutableTreeNode)tocRoot.getChildAt(i); + toc.expandPath(new TreePath(node.getPath())); + } + if (helpViewer.getShortURL() != null) { + selectNode(helpViewer.getShortURL()); + } + } + }); + } //}}} + + //{{{ Private members + private HelpViewer helpViewer; + private DefaultTreeModel tocModel; + private DefaultMutableTreeNode tocRoot; + private JTree toc; + private Hashtable nodes; + + //{{{ createNode() method + private DefaultMutableTreeNode createNode(String href, String title) + { + DefaultMutableTreeNode node = new DefaultMutableTreeNode( + new HelpNode(href,title),true); + nodes.put(href,node); + return node; + } //}}} + + //{{{ createTOC() method + private void createTOC() { + + EditPlugin[] plugins = jEdit.getPlugins(); + Arrays.sort(plugins,new PluginCompare()); + tocRoot = new DefaultMutableTreeNode(); + + tocRoot.add(createNode("welcome.html", + Messages.getMessage("helpviewer.toc.welcome"))); + + tocRoot.add(createNode("README.txt", + Messages.getMessage("helpviewer.toc.readme"))); + tocRoot.add(createNode("CHANGES.txt", + Messages.getMessage("helpviewer.toc.changes"))); + tocRoot.add(createNode("TODO.txt", + Messages.getMessage("helpviewer.toc.todo"))); + tocRoot.add(createNode("COPYING.txt", + Messages.getMessage("helpviewer.toc.copying"))); + tocRoot.add(createNode("COPYING.DOC.txt", + Messages.getMessage("helpviewer.toc.copying-doc"))); + tocRoot.add(createNode("Apache.LICENSE.txt", + Messages.getMessage("helpviewer.toc.copying-apache"))); + tocRoot.add(createNode("COPYING.PLUGINS.txt", + Messages.getMessage("helpviewer.toc.copying-plugins"))); + + loadTOC(tocRoot,"news42/toc.xml"); + loadTOC(tocRoot,"users-guide/toc.xml"); + loadTOC(tocRoot,"FAQ/toc.xml"); + loadTOC(tocRoot,"api/toc.xml"); + + DefaultMutableTreeNode pluginTree = new DefaultMutableTreeNode( + Messages.getMessage("helpviewer.toc.plugins"),true); + + for (int i = 0; i < plugins.length; i++) { + EditPlugin plugin = plugins[i]; + + String name = plugin.getClassName(); + + String docs = jEdit.getProperty("plugin." + name + ".docs"); + String label = jEdit.getProperty("plugin." + name + ".name"); + if (docs != null) { + if (label != null && docs != null) { + String path = plugin.getPluginJAR() + .getClassLoader() + .getResourceAsPath(docs); + pluginTree.add(createNode( + path,label)); + } + } + } + + if (pluginTree.getChildCount() != 0) { + tocRoot.add(pluginTree); + } else { + // so that HelpViewer constructor doesn't try to expand + pluginTree = null; + } + + tocModel = new DefaultTreeModel(tocRoot); + } //}}} + + //{{{ loadTOC() method + private void loadTOC(DefaultMutableTreeNode root, String path) + { + TOCHandler h = new TOCHandler(root,MiscUtilities.getParentOfPath(path)); + XmlParser parser = new XmlParser(); + Reader in = null; + parser.setHandler(h); + + try + { + in = new InputStreamReader( + new URL(helpViewer.getBaseURL() + + '/' + path).openStream()); + parser.parse(null, null, in); + } + catch(XmlException xe) + { + int line = xe.getLine(); + String message = xe.getMessage(); + Log.log(Log.ERROR,this,path + ':' + line + + ": " + message); + } + catch(Exception e) + { + Log.log(Log.ERROR,this,e); + } + finally + { + try + { + if(in != null) + in.close(); + } + catch(IOException io) + { + Log.log(Log.ERROR,this,io); + } + } + } //}}} + + //}}} + + //{{{ HelpNode class + static class HelpNode + { + String href, title; + + //{{{ HelpNode constructor + HelpNode(String href, String title) + { + this.href = href; + this.title = title; + } //}}} + + //{{{ toString() method + public String toString() + { + return title; + } //}}} + } //}}} + + //{{{ TOCHandler class + class TOCHandler extends HandlerBase + { + String dir; + + //{{{ TOCHandler constructor + TOCHandler(DefaultMutableTreeNode root, String dir) + { + nodes = new Stack(); + node = root; + this.dir = dir; + } //}}} + + //{{{ attribute() method + public void attribute(String aname, String value, boolean isSpecified) + { + if(aname.equals("HREF")) + href = value; + } //}}} + + //{{{ charData() method + public void charData(char[] c, int off, int len) + { + if(tag.equals("TITLE")) + { + StringBuffer buf = new StringBuffer(); + for(int i = 0; i < len; i++) + { + char ch = c[off + i]; + if(ch == ' ' || !Character.isWhitespace(ch)) + buf.append(ch); + } + title = buf.toString(); + } + } //}}} + + //{{{ startElement() method + public void startElement(String name) + { + tag = name; + } //}}} + + //{{{ endElement() method + public void endElement(String name) + { + if(name == null) + return; + + if(name.equals("TITLE")) + { + DefaultMutableTreeNode newNode = createNode( + dir + href,title); + node.add(newNode); + nodes.push(node); + node = newNode; + } + else if(name.equals("ENTRY")) + node = (DefaultMutableTreeNode)nodes.pop(); + } //}}} + + //{{{ Private members + private String tag; + private String title; + private String href; + private DefaultMutableTreeNode node; + private Stack nodes; + //}}} + } //}}} + + //{{{ TOCTree class + class TOCTree extends JTree + { + //{{{ TOCTree constructor + TOCTree() + { + ToolTipManager.sharedInstance().registerComponent(this); + } //}}} + + //{{{ getToolTipText() method + public final String getToolTipText(MouseEvent evt) + { + TreePath path = getPathForLocation(evt.getX(), evt.getY()); + if(path != null) + { + Rectangle cellRect = getPathBounds(path); + if(cellRect != null && !cellRectIsVisible(cellRect)) + return path.getLastPathComponent().toString(); + } + return null; + } //}}} + + //{{{ getToolTipLocation() method + /* public final Point getToolTipLocation(MouseEvent evt) + { + TreePath path = getPathForLocation(evt.getX(), evt.getY()); + if(path != null) + { + Rectangle cellRect = getPathBounds(path); + if(cellRect != null && !cellRectIsVisible(cellRect)) + { + return new Point(cellRect.x + 14, cellRect.y); + } + } + return null; + } */ //}}} + + //{{{ processMouseEvent() method + protected void processMouseEvent(MouseEvent evt) + { + //ToolTipManager ttm = ToolTipManager.sharedInstance(); + + switch(evt.getID()) + { + /* case MouseEvent.MOUSE_ENTERED: + toolTipInitialDelay = ttm.getInitialDelay(); + toolTipReshowDelay = ttm.getReshowDelay(); + ttm.setInitialDelay(200); + ttm.setReshowDelay(0); + super.processMouseEvent(evt); + break; + case MouseEvent.MOUSE_EXITED: + ttm.setInitialDelay(toolTipInitialDelay); + ttm.setReshowDelay(toolTipReshowDelay); + super.processMouseEvent(evt); + break; */ + case MouseEvent.MOUSE_CLICKED: + TreePath path = getPathForLocation(evt.getX(),evt.getY()); + if(path != null) + { + if(!isPathSelected(path)) + setSelectionPath(path); + + Object obj = ((DefaultMutableTreeNode) + path.getLastPathComponent()) + .getUserObject(); + if(!(obj instanceof HelpNode)) + { + this.expandPath(path); + return; + } + + HelpNode node = (HelpNode)obj; + + helpViewer.gotoURL(node.href,true); + } + + super.processMouseEvent(evt); + break; + default: + super.processMouseEvent(evt); + break; + } + } //}}} + + //{{{ cellRectIsVisible() method + private boolean cellRectIsVisible(Rectangle cellRect) + { + Rectangle vr = TOCTree.this.getVisibleRect(); + return vr.contains(cellRect.x,cellRect.y) && + vr.contains(cellRect.x + cellRect.width, + cellRect.y + cellRect.height); + } //}}} + } //}}} + + //{{{ TOCCellRenderer class + class TOCCellRenderer extends DefaultTreeCellRenderer + { + EmptyBorder border = new EmptyBorder(1,0,1,1); + + public Component getTreeCellRendererComponent(JTree tree, + Object value, boolean sel, boolean expanded, + boolean leaf, int row, boolean focus) + { + super.getTreeCellRendererComponent(tree,value,sel, + expanded,leaf,row,focus); + setIcon(leaf ? FileCellRenderer.fileIcon + : (expanded ? FileCellRenderer.openDirIcon + : FileCellRenderer.dirIcon)); + setBorder(border); + + return this; + } + } //}}} + + //{{{ PluginCompare class + static class PluginCompare implements Comparator + { + public int compare(Object o1, Object o2) + { + EditPlugin p1 = (EditPlugin)o1; + EditPlugin p2 = (EditPlugin)o2; + return MiscUtilities.compareStrings( + jEdit.getProperty("plugin." + p1.getClassName() + ".name"), + jEdit.getProperty("plugin." + p2.getClassName() + ".name"), + true); + } + } //}}} +} Added: trunk/jsxe/src/net/sourceforge/jsxe/help/HelpViewer.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/help/HelpViewer.java (rev 0) +++ trunk/jsxe/src/net/sourceforge/jsxe/help/HelpViewer.java 2006-08-28 18:23:14 UTC (rev 1185) @@ -0,0 +1,402 @@ +/* +HelpViewer.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 1999, 2002 Slava Pestov +Portions Copyright (C) 2006 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.help; + +//{{{ Imports + +//{{{ jsXe classes +import net.sourceforge.jsxe.jsXe; +import net.sourceforge.jsxe.util.Log; +import net.sourceforge.jsxe.gui.RolloverButton; +import net.sourceforge.jsxe.gui.GUIUtilities; +//}}} + +//{{{ Swing classes +import javax.swing.*; +import javax.swing.border.*; +import javax.swing.event.*; +import javax.swing.text.html.*; +//}}} + +//{{{ AWT classes +import java.awt.*; +import java.awt.event.*; +//}}} + +//{{{ Java classes +import java.beans.*; +import java.io.*; +import java.net.*; +//}}} + +//}}} + +/** + * jsXe's searchable help viewer. It uses a Swing JEditorPane to display the HTML, + * and implements a URL history. + * @author Slava Pestov + * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) + * @version $Id$ + * @since jsXe 0.5 pre4 + */ +public class HelpViewer extends JFrame { + + //{{{ HelpViewer constructor + /** + * Creates a new help viewer with the default help page. + */ + public HelpViewer() { + this("welcome.html"); + } //}}} + + //{{{ HelpViewer constructor + /** + * Creates a new help viewer for the specified URL. + * @param url The URL + */ + public HelpViewer(URL url) + { + this(url.toString()); + } //}}} + + //{{{ HelpViewer constructor + /** + * Creates a new help viewer for the specified URL. + * @param url The URL + */ + public HelpViewer(String url) { + super(Messages.getMessage("helpviewer.title")); + + setIconImage(jsXe.getIcon().getImage()); + + try { + baseURL = new File(MiscUtilities.constructPath(jsXe.getInstallDirectory(),"doc")).toURL().toString(); + } catch(MalformedURLException mu) { + Log.log(Log.ERROR,this,mu); + // what to do? + } + + history = new String[25]; + + ActionHandler actionListener = new ActionHandler(); + + JTabbedPane tabs = new JTabbedPane(); + tabs.addTab(Messages.getMessage("helpviewer.toc.label"), toc = new HelpTOCPanel(this)); + tabs.addTab(Messages.getMessage("helpviewer.search.label"), new HelpSearchPanel(this)); + tabs.setMinimumSize(new Dimension(0,0)); + + JPanel rightPanel = new JPanel(new BorderLayout()); + + JToolBar toolBar = new JToolBar(); + toolBar.setFloatable(false); + + toolBar.add(title = new JLabel()); + toolBar.add(Box.createGlue()); + + JPanel buttons = new JPanel(); + buttons.setLayout(new BoxLayout(buttons,BoxLayout.X_AXIS)); + buttons.setBorder(new EmptyBorder(0,12,0,0)); + back = new RolloverButton(GUIUtilities.loadIcon(jsXe.getProperty("helpviewer.back.icon"))); + back.setToolTipText(Messages.getMessage("helpviewer.back.label")); + back.addActionListener(actionListener); + toolBar.add(back); + forward = new RolloverButton(GUIUtilities.loadIcon(jsXe.getProperty("helpviewer.forward.icon"))); + forward.addActionListener(actionListener); + forward.setToolTipText(Messages.getMessage("helpviewer.forward.label")); + toolBar.add(forward); + back.setPreferredSize(forward.getPreferredSize()); + + rightPanel.add(BorderLayout.NORTH,toolBar); + + viewer = new JEditorPane(); + viewer.setEditable(false); + viewer.addHyperlinkListener(new LinkHandler()); + viewer.setFont(new Font("Monospaced",Font.PLAIN,12)); + viewer.addPropertyChangeListener(new PropertyChangeHandler()); + + rightPanel.add(BorderLayout.CENTER,new JScrollPane(viewer)); + + splitter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, + tabs,rightPanel); + splitter.setBorder(null); + + getContentPane().add(BorderLayout.CENTER,splitter); + + gotoURL(url,true); + + setDefaultCloseOperation(DISPOSE_ON_CLOSE); + + getRootPane().setPreferredSize(new Dimension(750,500)); + + pack(); + GUIUtilities.loadGeometry(this,"helpviewer"); + + // EditBus.addToBus(this); + + setVisible(true); + + SwingUtilities.invokeLater(new Runnable() { + public void run() { + splitter.setDividerLocation(jsXe.getIntegerProperty("helpviewer.splitter",250)); + viewer.requestFocus(); + } + }); + } //}}} + + //{{{ gotoURL() method + /** + * Displays the specified URL in the HTML component. + * @param url The URL + * @param addToHistory Should the URL be added to the back/forward + * history? + */ + public void gotoURL(String url, boolean addToHistory) { + + // the TOC pane looks up user's guide URLs relative to the + // doc directory... + String shortURL; + if (MiscUtilities.isURL(url)) { + if(url.startsWith(baseURL)) { + shortURL = url.substring(baseURL.length()); + if (shortURL.startsWith("/")) { + shortURL = shortURL.substring(1); + } + } else { + shortURL = url; + } + } else { + shortURL = url; + if (baseURL.endsWith("/")) { + url = baseURL + url; + } else { + url = baseURL + '/' + url; + } + } + + // reset default cursor so that the hand cursor doesn't + // stick around + viewer.setCursor(Cursor.getDefaultCursor()); + + URL _url = null; + try { + _url = new URL(url); + + if (!_url.equals(viewer.getPage())) { + title.setText(Messages.getMessage("helpviewer.loading")); + } else { + /* don't show loading msg because we won't + receive a propertyChanged */ + } + + viewer.setPage(_url); + if (addToHistory) { + history[historyPos] = url; + if (historyPos + 1 == history.length) { + System.arraycopy(history,1,history,0,history.length - 1); + history[historyPos] = null; + } else { + historyPos++; + } + } + } catch(MalformedURLException mf) { + Log.log(Log.ERROR,this,mf); + String[] args = { url, mf.getMessage() }; + GUIUtilities.error(this,"badurl",args); + return; + } catch(IOException io) { + Log.log(Log.ERROR,this,io); + String[] args = { url, io.toString() }; + GUIUtilities.error(this,"read-error",args); + return; + } + + this.shortURL = shortURL; + + // select the appropriate tree node. + if (shortURL != null) { + toc.selectNode(shortURL); + } + } //}}} + + //{{{ dispose() method + public void dispose() { + // EditBus.removeFromBus(this); + jsXe.setIntegerProperty("helpviewer.splitter", splitter.getDividerLocation()); + GUIUtilities.saveGeometry(this,"helpviewer"); + super.dispose(); + } //}}} + + //{{{ handleMessage() method + public void handleMessage(EBMessage msg) + { + if(msg instanceof PluginUpdate) + { + PluginUpdate pmsg = (PluginUpdate)msg; + if(pmsg.getWhat() == PluginUpdate.LOADED + || pmsg.getWhat() == PluginUpdate.UNLOADED) + { + if(!pmsg.isExiting()) + { + if(!queuedTOCReload) + queueTOCReload(); + queuedTOCReload = true; + } + } + } + } //}}} + + //{{{ getBaseURL() method + public String getBaseURL() + { + return baseURL; + } //}}} + + //{{{ getShortURL() method + String getShortURL() + { + return shortURL; + } //}}} + + //{{{ Private members + + //{{{ Instance members + private String baseURL; + private String shortURL; + private JButton back; + private JButton forward; + private JEditorPane viewer; + private JLabel title; + private JSplitPane splitter; + private String[] history; + private int historyPos; + private HelpTOCPanel toc; + private boolean queuedTOCReload; + //}}} + + //{{{ queueTOCReload() method + public void queueTOCReload() + { + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + queuedTOCReload = false; + toc.load(); + } + }); + } //}}} + + //}}} + + //{{{ Inner classes + + //{{{ ActionHandler class + class ActionHandler implements ActionListener + { + //{{{ actionPerformed() class + public void actionPerformed(ActionEvent evt) + { + Object source = evt.getSource(); + if(source == back) + { + if(historyPos <= 1) + getToolkit().beep(); + else + { + String url = history[--historyPos - 1]; + gotoURL(url,false); + } + } + else if(source == forward) + { + if(history.length - historyPos <= 1) + getToolkit().beep(); + else + { + String url = history[historyPos]; + if(url == null) + getToolkit().beep(); + else + { + historyPos++; + gotoURL(url,false); + } + } + } + } //}}} + } //}}} + + //{{{ LinkHandler class + class LinkHandler implements HyperlinkListener + { + //{{{ hyperlinkUpdate() method + public void hyperlinkUpdate(HyperlinkEvent evt) + { + if(evt.getEventType() == HyperlinkEvent.EventType.ACTIVATED) + { + if(evt instanceof HTMLFrameHyperlinkEvent) + { + ((HTMLDocument)viewer.getDocument()) + .processHTMLFrameHyperlinkEvent( + (HTMLFrameHyperlinkEvent)evt); + } + else + { + URL url = evt.getURL(); + if(url != null) + gotoURL(url.toString(),true); + } + } + else if (evt.getEventType() == HyperlinkEvent.EventType.ENTERED) { + viewer.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + } + else if (evt.getEventType() == HyperlinkEvent.EventType.EXITED) { + viewer.setCursor(Cursor.getDefaultCursor()); + } + } //}}} + } //}}} + + //{{{ PropertyChangeHandler class + class PropertyChangeHandler implements PropertyChangeListener + { + public void propertyChange(PropertyChangeEvent evt) + { + if("page".equals(evt.getPropertyName())) + { + String titleStr = (String)viewer.getDocument() + .getProperty("title"); + if(titleStr == null) + { + titleStr = MiscUtilities.getFileName( + viewer.getPage().toString()); + } + title.setText(titleStr); + } + } + } //}}} + + //}}} +} Added: trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowD.png =================================================================== (Binary files differ) Property changes on: trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowD.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowL.png =================================================================== (Binary files differ) Property changes on: trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowL.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowR.png =================================================================== (Binary files differ) Property changes on: trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowR.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowU.png =================================================================== (Binary files differ) Property changes on: trunk/jsxe/src/net/sourceforge/jsxe/icons/ArrowU.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/jsxe/src/net/sourceforge/jsxe/jsXe.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/jsXe.java 2006-08-28 15:50:38 UTC (rev 1184) +++ trunk/jsxe/src/net/sourceforge/jsxe/jsXe.java 2006-08-28 18:23:14 UTC (rev 1185) @@ -485,7 +485,7 @@ return jsXeIcon; }//}}} - //{{{ getHomeDirectory() method + //{{{ getInstallDirectory() method /** * Returns the path to where jsXe is installed */ @@ -1367,7 +1367,7 @@ private static ArrayList m_buffers = new ArrayList(); private static final String DefaultDocument = "<?xml version='1.0' encoding='UTF-8'?>\n<default_element>default_node</default_element>"; - private static final ImageIcon jsXeIcon = new ImageIcon(jsXe.class.getResource("/net/sourceforge/jsxe/icons/jsxe.jpg"), "jsXe"); + private static final ImageIcon jsXeIcon = GUIUtilities.loadIcon("jsxe.jpg"); private static final Properties buildProps = new Properties(); private static boolean m_exiting=false; Modified: trunk/jsxe/src/net/sourceforge/jsxe/properties =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-28 15:50:38 UTC (rev 1184) +++ trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-28 18:23:14 UTC (rev 1185) @@ -69,3 +69,8 @@ undo.shortcut=C+z redo.shortcut=C+y #}}} + +#{{{ Help Viewer +helpviewer.back.icon=ArrowL.png +helpviewer.forward.icon=ArrowR.png +#}}} \ No newline at end of file Modified: trunk/jsxe/src/net/sourceforge/jsxe/util/MiscUtilities.java ======================... [truncated message content] |
From: <ian...@us...> - 2006-08-29 02:16:49
|
Revision: 1191 Author: ian_lewis Date: 2006-08-28 19:13:58 -0700 (Mon, 28 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1191&view=rev Log Message: ----------- Added base support for building documentation for jsXe Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/INSTALL trunk/jsxe/build.xml Added Paths: ----------- trunk/jsxe/buildlib/avalon.jar trunk/jsxe/buildlib/batik.jar trunk/jsxe/buildlib/docbook/ trunk/jsxe/buildlib/docbook/VERSION trunk/jsxe/buildlib/docbook/catalog.xml trunk/jsxe/buildlib/docbook/common/ trunk/jsxe/buildlib/docbook/common/ChangeLog trunk/jsxe/buildlib/docbook/common/af.xml trunk/jsxe/buildlib/docbook/common/ar.xml trunk/jsxe/buildlib/docbook/common/autoidx-ng.xsl trunk/jsxe/buildlib/docbook/common/bg.xml trunk/jsxe/buildlib/docbook/common/bn.xml trunk/jsxe/buildlib/docbook/common/bs.xml trunk/jsxe/buildlib/docbook/common/ca.xml trunk/jsxe/buildlib/docbook/common/common.xsl trunk/jsxe/buildlib/docbook/common/cs.xml trunk/jsxe/buildlib/docbook/common/da.xml trunk/jsxe/buildlib/docbook/common/de.xml trunk/jsxe/buildlib/docbook/common/el.xml trunk/jsxe/buildlib/docbook/common/en.xml trunk/jsxe/buildlib/docbook/common/es.xml trunk/jsxe/buildlib/docbook/common/et.xml trunk/jsxe/buildlib/docbook/common/eu.xml trunk/jsxe/buildlib/docbook/common/fa.xml trunk/jsxe/buildlib/docbook/common/fi.xml trunk/jsxe/buildlib/docbook/common/fr.xml trunk/jsxe/buildlib/docbook/common/gentext.xsl trunk/jsxe/buildlib/docbook/common/he.xml trunk/jsxe/buildlib/docbook/common/hr.xml trunk/jsxe/buildlib/docbook/common/hu.xml trunk/jsxe/buildlib/docbook/common/id.xml trunk/jsxe/buildlib/docbook/common/it.xml trunk/jsxe/buildlib/docbook/common/ja.xml trunk/jsxe/buildlib/docbook/common/ko.xml trunk/jsxe/buildlib/docbook/common/l10n.dtd trunk/jsxe/buildlib/docbook/common/l10n.xml trunk/jsxe/buildlib/docbook/common/l10n.xsl trunk/jsxe/buildlib/docbook/common/la.xml trunk/jsxe/buildlib/docbook/common/labels.xsl trunk/jsxe/buildlib/docbook/common/lt.xml trunk/jsxe/buildlib/docbook/common/nl.xml trunk/jsxe/buildlib/docbook/common/nn.xml trunk/jsxe/buildlib/docbook/common/no.xml trunk/jsxe/buildlib/docbook/common/olink.xsl trunk/jsxe/buildlib/docbook/common/pi.xsl trunk/jsxe/buildlib/docbook/common/pl.xml trunk/jsxe/buildlib/docbook/common/pt.xml trunk/jsxe/buildlib/docbook/common/pt_br.xml trunk/jsxe/buildlib/docbook/common/ro.xml trunk/jsxe/buildlib/docbook/common/ru.xml trunk/jsxe/buildlib/docbook/common/sk.xml trunk/jsxe/buildlib/docbook/common/sl.xml trunk/jsxe/buildlib/docbook/common/sr.xml trunk/jsxe/buildlib/docbook/common/sr_Latn.xml trunk/jsxe/buildlib/docbook/common/subtitles.xsl trunk/jsxe/buildlib/docbook/common/sv.xml trunk/jsxe/buildlib/docbook/common/table.xsl trunk/jsxe/buildlib/docbook/common/targetdatabase.dtd trunk/jsxe/buildlib/docbook/common/targets.xsl trunk/jsxe/buildlib/docbook/common/th.xml trunk/jsxe/buildlib/docbook/common/titles.xsl trunk/jsxe/buildlib/docbook/common/tr.xml trunk/jsxe/buildlib/docbook/common/uk.xml trunk/jsxe/buildlib/docbook/common/vi.xml trunk/jsxe/buildlib/docbook/common/xh.xml trunk/jsxe/buildlib/docbook/common/zh_cn.xml trunk/jsxe/buildlib/docbook/common/zh_tw.xml trunk/jsxe/buildlib/docbook/dtd/ trunk/jsxe/buildlib/docbook/dtd/calstblx.dtd trunk/jsxe/buildlib/docbook/dtd/catalog trunk/jsxe/buildlib/docbook/dtd/catalog.xml trunk/jsxe/buildlib/docbook/dtd/dbcentx.mod trunk/jsxe/buildlib/docbook/dtd/dbgenent.mod trunk/jsxe/buildlib/docbook/dtd/dbhierx.mod trunk/jsxe/buildlib/docbook/dtd/dbnotnx.mod trunk/jsxe/buildlib/docbook/dtd/dbpoolx.mod trunk/jsxe/buildlib/docbook/dtd/docbookx.dtd trunk/jsxe/buildlib/docbook/dtd/ent/ trunk/jsxe/buildlib/docbook/dtd/ent/ISOamsa.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOamsb.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOamsc.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOamsn.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOamso.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOamsr.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISObox.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOcyr1.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOcyr2.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOdia.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOgrk1.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOgrk2.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOgrk3.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOgrk4.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOlat1.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOlat2.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOnum.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOpub.ent trunk/jsxe/buildlib/docbook/dtd/ent/ISOtech.ent trunk/jsxe/buildlib/docbook/dtd/ent/catalog trunk/jsxe/buildlib/docbook/dtd/ent/catalog.xml trunk/jsxe/buildlib/docbook/dtd/htmltblx.mod trunk/jsxe/buildlib/docbook/dtd/soextblx.dtd trunk/jsxe/buildlib/docbook/fo/ trunk/jsxe/buildlib/docbook/fo/ChangeLog trunk/jsxe/buildlib/docbook/fo/admon.xsl trunk/jsxe/buildlib/docbook/fo/autoidx-ng.xsl trunk/jsxe/buildlib/docbook/fo/autoidx.xsl trunk/jsxe/buildlib/docbook/fo/autotoc.xsl trunk/jsxe/buildlib/docbook/fo/axf.xsl trunk/jsxe/buildlib/docbook/fo/biblio.xsl trunk/jsxe/buildlib/docbook/fo/block.xsl trunk/jsxe/buildlib/docbook/fo/callout.xsl trunk/jsxe/buildlib/docbook/fo/component.xsl trunk/jsxe/buildlib/docbook/fo/division.xsl trunk/jsxe/buildlib/docbook/fo/docbook.xsl trunk/jsxe/buildlib/docbook/fo/docbookng.xsl trunk/jsxe/buildlib/docbook/fo/ebnf.xsl trunk/jsxe/buildlib/docbook/fo/fo-patch-for-fop.xsl trunk/jsxe/buildlib/docbook/fo/fo-rtf.xsl trunk/jsxe/buildlib/docbook/fo/fo.xsl trunk/jsxe/buildlib/docbook/fo/footnote.xsl trunk/jsxe/buildlib/docbook/fo/fop.xsl trunk/jsxe/buildlib/docbook/fo/formal.xsl trunk/jsxe/buildlib/docbook/fo/glossary.xsl trunk/jsxe/buildlib/docbook/fo/graphics.xsl trunk/jsxe/buildlib/docbook/fo/htmltbl.xsl trunk/jsxe/buildlib/docbook/fo/index.xsl trunk/jsxe/buildlib/docbook/fo/info.xsl trunk/jsxe/buildlib/docbook/fo/inline.xsl trunk/jsxe/buildlib/docbook/fo/keywords.xsl trunk/jsxe/buildlib/docbook/fo/lists.xsl trunk/jsxe/buildlib/docbook/fo/math.xsl trunk/jsxe/buildlib/docbook/fo/pagesetup.xsl trunk/jsxe/buildlib/docbook/fo/param.ent trunk/jsxe/buildlib/docbook/fo/param.xml trunk/jsxe/buildlib/docbook/fo/param.xsl trunk/jsxe/buildlib/docbook/fo/param.xweb trunk/jsxe/buildlib/docbook/fo/passivetex.xsl trunk/jsxe/buildlib/docbook/fo/pdf2index trunk/jsxe/buildlib/docbook/fo/pi.xsl trunk/jsxe/buildlib/docbook/fo/profile-docbook.xsl trunk/jsxe/buildlib/docbook/fo/qandaset.xsl trunk/jsxe/buildlib/docbook/fo/refentry.xsl trunk/jsxe/buildlib/docbook/fo/sections.xsl trunk/jsxe/buildlib/docbook/fo/synop.xsl trunk/jsxe/buildlib/docbook/fo/table.xsl trunk/jsxe/buildlib/docbook/fo/task.xsl trunk/jsxe/buildlib/docbook/fo/titlepage.templates.xml trunk/jsxe/buildlib/docbook/fo/titlepage.templates.xsl trunk/jsxe/buildlib/docbook/fo/titlepage.xsl trunk/jsxe/buildlib/docbook/fo/toc.xsl trunk/jsxe/buildlib/docbook/fo/verbatim.xsl trunk/jsxe/buildlib/docbook/fo/xep.xsl trunk/jsxe/buildlib/docbook/fo/xref.xsl trunk/jsxe/buildlib/docbook/html/ trunk/jsxe/buildlib/docbook/html/ChangeLog trunk/jsxe/buildlib/docbook/html/admon.xsl trunk/jsxe/buildlib/docbook/html/autoidx-ng.xsl trunk/jsxe/buildlib/docbook/html/autoidx.xsl trunk/jsxe/buildlib/docbook/html/autotoc.xsl trunk/jsxe/buildlib/docbook/html/biblio.xsl trunk/jsxe/buildlib/docbook/html/block.xsl trunk/jsxe/buildlib/docbook/html/callout.xsl trunk/jsxe/buildlib/docbook/html/changebars.xsl trunk/jsxe/buildlib/docbook/html/chunk-code.xsl trunk/jsxe/buildlib/docbook/html/chunk-common.xsl trunk/jsxe/buildlib/docbook/html/chunk.xsl trunk/jsxe/buildlib/docbook/html/chunker.xsl trunk/jsxe/buildlib/docbook/html/chunkfast.xsl trunk/jsxe/buildlib/docbook/html/chunktoc.xsl trunk/jsxe/buildlib/docbook/html/component.xsl trunk/jsxe/buildlib/docbook/html/division.xsl trunk/jsxe/buildlib/docbook/html/docbook.xsl trunk/jsxe/buildlib/docbook/html/docbookng.xsl trunk/jsxe/buildlib/docbook/html/ebnf.xsl trunk/jsxe/buildlib/docbook/html/footnote.xsl trunk/jsxe/buildlib/docbook/html/formal.xsl trunk/jsxe/buildlib/docbook/html/glossary.xsl trunk/jsxe/buildlib/docbook/html/graphics.xsl trunk/jsxe/buildlib/docbook/html/html-rtf.xsl trunk/jsxe/buildlib/docbook/html/html.xsl trunk/jsxe/buildlib/docbook/html/htmltbl.xsl trunk/jsxe/buildlib/docbook/html/index.xsl trunk/jsxe/buildlib/docbook/html/info.xsl trunk/jsxe/buildlib/docbook/html/inline.xsl trunk/jsxe/buildlib/docbook/html/keywords.xsl trunk/jsxe/buildlib/docbook/html/lists.xsl trunk/jsxe/buildlib/docbook/html/maketoc.xsl trunk/jsxe/buildlib/docbook/html/manifest.xsl trunk/jsxe/buildlib/docbook/html/math.xsl trunk/jsxe/buildlib/docbook/html/oldchunker.xsl trunk/jsxe/buildlib/docbook/html/onechunk.xsl trunk/jsxe/buildlib/docbook/html/param.ent trunk/jsxe/buildlib/docbook/html/param.xml trunk/jsxe/buildlib/docbook/html/param.xsl trunk/jsxe/buildlib/docbook/html/param.xweb trunk/jsxe/buildlib/docbook/html/pi.xsl trunk/jsxe/buildlib/docbook/html/profile-chunk-code.xsl trunk/jsxe/buildlib/docbook/html/profile-chunk.xsl trunk/jsxe/buildlib/docbook/html/profile-docbook.xsl trunk/jsxe/buildlib/docbook/html/profile-onechunk.xsl trunk/jsxe/buildlib/docbook/html/qandaset.xsl trunk/jsxe/buildlib/docbook/html/refentry.xsl trunk/jsxe/buildlib/docbook/html/sections.xsl trunk/jsxe/buildlib/docbook/html/synop.xsl trunk/jsxe/buildlib/docbook/html/table.xsl trunk/jsxe/buildlib/docbook/html/task.xsl trunk/jsxe/buildlib/docbook/html/titlepage.templates.xml trunk/jsxe/buildlib/docbook/html/titlepage.templates.xsl trunk/jsxe/buildlib/docbook/html/titlepage.xsl trunk/jsxe/buildlib/docbook/html/toc.xsl trunk/jsxe/buildlib/docbook/html/verbatim.xsl trunk/jsxe/buildlib/docbook/html/xref.xsl trunk/jsxe/buildlib/docbook/lib/ trunk/jsxe/buildlib/docbook/lib/ChangeLog trunk/jsxe/buildlib/docbook/lib/lib.xml trunk/jsxe/buildlib/docbook/lib/lib.xsl trunk/jsxe/buildlib/docbook/lib/lib.xweb trunk/jsxe/buildlib/fop.jar trunk/jsxe/doc/ trunk/jsxe/doc/manual/ trunk/jsxe/doc/manual/manual.xml Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-28 21:56:21 UTC (rev 1190) +++ trunk/jsxe/Changelog 2006-08-29 02:13:58 UTC (rev 1191) @@ -2,6 +2,7 @@ * Changed the messages files to be named the standard ResourceBundle way. * Fixed default key binding for exit. + * Added some new processing for generating jsXe's manual. 08/27/2006 Ian Lewis <Ian...@me...> Modified: trunk/jsxe/INSTALL =================================================================== --- trunk/jsxe/INSTALL 2006-08-28 21:56:21 UTC (rev 1190) +++ trunk/jsxe/INSTALL 2006-08-29 02:13:58 UTC (rev 1191) @@ -2,6 +2,7 @@ Java >= 1.4.2 Xerces >= 2.8.0 +Xalan >= 2.7.0 (for building jsXe's documentation) launch4j >= 3.0.0pre1 (for building the installer from source) GETTING jsXe @@ -50,9 +51,12 @@ Xerces (A Xerces 2.8.0 binary distribution is not included in the CVS source tree. You can aquire it at at http://xml.apache.org/) The jar files xercesImpl.jar, xml-apis.jar, and resolver.jar from the 2.8.0 distribution are -required. These should be placed in a directory called lib in jsXe's root folder -(where you installed jsXe's source) or in the jre/lib/ext or lib/ext in your -JVM. These jar files will be included with jsXe distributions for convenience. +required. These should already be in a directory called lib in jsXe's root folder +(where you installed jsXe's source) but you will need to copy them in +the jre/lib/endorsed directory in your JVM. You will also need to put the +xalan.jar in the jre/lib/endorsed directory in order to build jsXe's +documentation. xalan.jar is not currently included with jsXe so you need to +download it from http://xml.apache.org/ In order to build jsXe's installer or a windows distribution of jsXe you will need to install launch4j (http://launch4j.sourceforge.net/). You can install it Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-08-28 21:56:21 UTC (rev 1190) +++ trunk/jsxe/build.xml 2006-08-29 02:13:58 UTC (rev 1191) @@ -46,7 +46,7 @@ <property name="bin.dir" value="${root.dir}/bin"/> <property name="messages.dir" value="${root.dir}/messages"/> <property name="build.messages" value="${build.dir}/messages"/> - <property name="docs.dir" value="${src.dir}/doc"/> + <property name="docs.dir" value="${root.dir}/doc"/> <property name="plugin.dir" value="${root.dir}/jars"/> <property name="jsxe.jar" value="${build.dir}/${app.name}.jar"/> <!-- jar file needs to be relative to the exe --> @@ -63,6 +63,7 @@ <property name="build.javadocs" value="${build.dir}/api"/> <property name="build.help" value="${build.docs}/help"/> <property name="buildlib.dir" value="${root.dir}/buildlib"/> + <property name="docbook.dir" value="${buildlib.dir}/docbook"/> <!--<property name="app.version" value="${major.version}.${minor.version} beta"/>--> <!--<property name="app_version" value="${major.version}_${minor.version}beta"/>--> <property name="distbin.dir" value="${build.dir}/${app.name}-${app_version}-bin"/> @@ -193,6 +194,14 @@ <!-- }}} --> + <!-- {{{ catalog used for building docs --> + <xmlcatalog id="docbook-catalog"> + <catalogpath> + <pathelement location="${docbook.dir}/catalog.xml"/> + </catalogpath> + </xmlcatalog> + <!-- }}} --> + <echo message="${app.name} ${app.version}"/> <echo message="----------------------------------------------------------"/> </target> @@ -349,6 +358,14 @@ <!-- }}} --> <!-- {{{ ============ Generates the documentation ====================== --> <target depends="prepare-doc, prepare-src" name="doc" description="Build documentation"> + <taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop"> + <classpath> + <pathelement location="${buildlib.dir}\fop.jar"/> + <pathelement location="${buildlib.dir}\avalon.jar"/> + <pathelement location="${buildlib.dir}\batik.jar"/> + </classpath> + </taskdef> + <copy file="${root.dir}/COPYING" tofile="${build.docs}/COPYING"/> <copy file="${root.dir}/README" tofile="${build.docs}/README"/> <copy file="${root.dir}/AUTHORS" tofile="${build.docs}/AUTHORS"/> @@ -358,6 +375,36 @@ <copy file="${root.dir}/THANKS" tofile="${build.docs}/THANKS"/> <copy file="${root.dir}/NEWS" tofile="${build.docs}/NEWS"/> + <!-- generate the html manual --> + <mkdir dir="${build.docs}/manual"/> + <xslt basedir="${docs.dir}/manual" + destdir="${build.docs}/manual" + includes="**/manual.xml" + style="${docbook.dir}/html/docbook.xsl"> + <outputproperty name="encoding" value="UTF-8"/> + <mapper type="glob" from="*.xml" to="*.html"/> + <xmlcatalog refid="docbook-catalog"/> + </xslt> + + <!-- generate the pdf manual --> + <mkdir dir="${build.dir}/manual"/> + <xslt basedir="${docs.dir}/manual" + destdir="${build.dir}/manual" + includes="**/manual.xml" + style="${docbook.dir}/fo/docbook.xsl"> + <outputproperty name="encoding" value="UTF-8"/> + <mapper type="glob" from="*.xml" to="*.fo"/> + <xmlcatalog refid="catalog"/> + </xslt> + + <fop format="application/pdf" + outdir="${build.dir}" + messagelevel="warn"> + <fileset dir="${build.dir}/manual"> + <include name="*.fo"/> + </fileset> + </fop> + <javadoc author="true" destdir="${build.javadocs}" doctitle="${app.name} ${app.version} API" locale="en_US" packagenames="*" sourcepath="${build.src}" version="true" windowtitle="${app.name} ${app.version} API"> <link href="${java.javadoc.link}"/> <link href="${xerces.javadoc.link}"/> Added: trunk/jsxe/buildlib/avalon.jar =================================================================== (Binary files differ) Property changes on: trunk/jsxe/buildlib/avalon.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/jsxe/buildlib/batik.jar =================================================================== (Binary files differ) Property changes on: trunk/jsxe/buildlib/batik.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/jsxe/buildlib/docbook/VERSION =================================================================== --- trunk/jsxe/buildlib/docbook/VERSION (rev 0) +++ trunk/jsxe/buildlib/docbook/VERSION 2006-08-29 02:13:58 UTC (rev 1191) @@ -0,0 +1,85 @@ +<?xml version='1.0'?> <!-- -*- nxml -*- --> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fm="http://freshmeat.net/projects/freshmeat-submit/" + xmlns:sf="http://sourceforge.net/" + exclude-result-prefixes="fm sf" + version='1.0'> + +<xsl:param name="VERSION" select="string(document('')//fm:Version[1])"/> +<xsl:param name="sf-relid" select="0"/> +<xsl:strip-space elements="fm:*"/> + +<fm:project> + <fm:Project>DocBook</fm:Project> + <fm:Branch>XSL Stylesheets</fm:Branch> + <fm:Version>1.68.1</fm:Version> +<!-- + <fm:License>MIT/X Consortium License</fm:License> +--> + <fm:Release-Focus> + <!-- Initial freshmeat announcement --> + <!-- Documentation --> + <!-- Code cleanup --> + <!-- Minor feature enhancements --> + <!-- Major feature enhancements --> + Minor bugfixes + <!-- Major bugfixes --> + <!-- Minor security fixes --> + <!-- Major security fixes --> + </fm:Release-Focus> + <fm:Home-Page-URL>http://sourceforge.net/projects/docbook/</fm:Home-Page-URL> + <fm:Gzipped-Tar-URL>http://prdownloads.sourceforge.net/docbook/docbook-xsl-{VERSION}.tar.gz?download</fm:Gzipped-Tar-URL> + <fm:Zipped-Tar-URL>http://prdownloads.sourceforge.net/docbook/docbook-xsl-{VERSION}.zip?download</fm:Zipped-Tar-URL> + <fm:Bzipped-Tar-URL>http://prdownloads.sourceforge.net/docbook/docbook-xsl-{VERSION}.bz2?download</fm:Bzipped-Tar-URL> + <fm:Changelog-URL>http://sourceforge.net/project/shownotes.php?release_id={SFRELID}</fm:Changelog-URL> + <fm:CVS-URL>http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/xsl/</fm:CVS-URL> + <fm:Mailing-List-URL>http://lists.oasis-open.org/archives/docbook-apps/</fm:Mailing-List-URL> + <fm:Changes>This is a minor bug-fix update to the 1.68.0 release. +</fm:Changes> +</fm:project> + +<xsl:template match="/" priority="-100"> + <xsl:if test="$sf-relid = 0"> + <xsl:message terminate="yes"> + <xsl:text>You must specify the sf-relid as a parameter.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:apply-templates select="//fm:project"/> +</xsl:template> + +<xsl:template match="fm:project"> + <xsl:text> </xsl:text> + <xsl:apply-templates/> + <xsl:text> </xsl:text> + <xsl:apply-templates select="fm:Changes" mode="text"/> +</xsl:template> + +<xsl:template match="fm:Changes"/> + +<xsl:template match="fm:Gzipped-Tar-URL|fm:Zipped-Tar-URL|fm:Bzipped-Tar-URL"> + <xsl:value-of select="local-name(.)"/> + <xsl:text>: </xsl:text> + <xsl:value-of select="substring-before(., '{VERSION}')"/> + <xsl:value-of select="$VERSION"/> + <xsl:value-of select="substring-after(., '{VERSION}')"/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="fm:Changelog-URL"> + <xsl:value-of select="local-name(.)"/> + <xsl:text>: </xsl:text> + <xsl:value-of select="substring-before(., '{SFRELID}')"/> + <xsl:value-of select="$sf-relid"/> + <xsl:value-of select="substring-after(., '{SFRELID}')"/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="fm:*"> + <xsl:value-of select="local-name(.)"/> + <xsl:text>: </xsl:text> + <xsl:value-of select="normalize-space(.)"/> + <xsl:text> </xsl:text> +</xsl:template> + +</xsl:stylesheet> Added: trunk/jsxe/buildlib/docbook/catalog.xml =================================================================== --- trunk/jsxe/buildlib/docbook/catalog.xml (rev 0) +++ trunk/jsxe/buildlib/docbook/catalog.xml 2006-08-29 02:13:58 UTC (rev 1191) @@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<!DOCTYPE catalog PUBLIC "-//OASIS//DTD XML Catalogs V1.0//EN" + "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"> + +<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> + +<!-- ==== Local Catalog for docbook-xsl ==== --> + + <rewriteURI + uriStartString="http://docbook.sourceforge.net/release/xsl/1.68.1/" + rewritePrefix="file://./docbook/"/> + + <rewriteURI + uriStartString="http://docbook.sourceforge.net/release/xsl/current/" + rewritePrefix="file://./docbook/"/> + + <rewriteSystem + systemIdStartString="http://docbook.sourceforge.net/release/xsl/1.68.1/" + rewritePrefix="file://./docbook/"/> + + <rewriteSystem + systemIdStartString="http://docbook.sourceforge.net/release/xsl/current/" + rewritePrefix="file://./docbook/"/> + + <group id="DocbookDTD" prefer="public"> + <system + systemId="http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" + uri="file://./docbook/dtd/docbookx.dtd"/> + </group> +</catalog> Added: trunk/jsxe/buildlib/docbook/common/ChangeLog =================================================================== --- trunk/jsxe/buildlib/docbook/common/ChangeLog (rev 0) +++ trunk/jsxe/buildlib/docbook/common/ChangeLog 2006-08-29 02:13:58 UTC (rev 1191) @@ -0,0 +1,819 @@ +2005-02-12 Michael Smith <xm...@us...> + + * .cvsignore: fa.xml, ignore + +2005-02-11 Michael Smith <xm...@us...> + + * Makefile: fa.xml added; ported from trunk + +2005-02-11 Robert Stayton <bob...@us...> + + * Makefile, l10n.xml: Added new fa.xml for Farsi language. + +2005-01-25 Robert Stayton <bob...@us...> + + * labels.xsl: Fixed bug in sect1 label.markup mode that could output the + component label without the section label. + +2005-01-19 Norman Walsh <nw...@us...> + + * titles.xsl: Support refdescriptor + + * titles.xsl: Support title in info for figure, example, and equation. This only occurs in DocBook V5 which is still pretty sporadically supported, but... + +2004-12-11 Robert Stayton <bob...@us...> + + * common.xsl: Minor fixes for itemizedlist symbols. + +2004-12-07 Robert Stayton <bob...@us...> + + * titles.xsl: Fixed bug #1079453, title attribute being added to non-existant element. + +2004-12-02 Michael Smith <xm...@us...> + + * Makefile: New file. + +2004-11-18 Robert Stayton <bob...@us...> + + * l10n.xsl: Fixed bug in lang selection from ancestor-or-self predicate. + +2004-11-17 Robert Stayton <bob...@us...> + + * common.xsl: Fixed bug in strippath template that stripped leading double dots. + +2004-11-16 Michael Smith <xm...@us...> + + * labels.xsl: issue #924251 Wrong numbering of Qandaset entries + applied patch from Harald Joerg. + +2004-10-28 Norman Walsh <nw...@us...> + + * titles.xsl: Fix bug #663552: handle xref correctly when it appears in titles. + +2004-10-24 Jirka Kosek <ko...@us...> + + * table.xsl: Fixed bug #1005990. Column spans are now working also in entrytbl element, not only in table elements. However due to complexity of table code I am not completely sure whether I fixed it on all places. + +2004-10-22 Norman Walsh <nw...@us...> + + * labels.xsl: Bug #1035656: the label for a listitem in an orderedlist must account for the possibility of continuations or alternate starting numbers + +2004-09-22 Robert Stayton <bob...@us...> + + * olink.xsl: Fixed bug where olink.base.uri parameter was being used in the wrong place. + +2004-09-20 Michael Smith <xm...@us...> + + * .cvsignore: Added bs.xml to ignore list. Also, re-sorted list. + (Committed while riding on a train between Yokohama and Tokyo.) + +2004-09-18 Robert Stayton <bob...@us...> + + * targetdatabase.dtd: Changed the page element to an attribute. + +2004-09-17 Peter Eisentraut <pet...@us...> + + * Makefile: branches: 1.22.2; + Bosnian translation by Kemal Skripic + + * l10n.xml: Bosnian translation by Kemal Skripic + +2004-09-17 Robert Stayton <bob...@us...> + + * l10n.xml: Added &bs; entity reference. + + * pi.xsl: Fix Xalan date-time bug. + +2004-09-13 Robert Stayton <bob...@us...> + + * olink.xsl: Fixed bug in olink resolution. + +2004-09-09 Robert Stayton <bob...@us...> + + * common.xsl: Fixed bug in xml:base resolution not recursing through the ancestors. + +2004-09-06 Robert Stayton <bob...@us...> + + * olink.xsl: remove duplicate make.gentext.template and substitute.markup templates. + +2004-08-26 Robert Stayton <bob...@us...> + + * labels.xsl: Added component.label.includes.part.label parameter to appendices and + other component elements. + + * labels.xsl: Add component.label.includes.part.label parameter to add + part number to chapter labels when $label.from.part is nonzero. + +2004-08-19 Jirka Kosek <ko...@us...> + + * l10n.xsl: Fixed variable name + +2004-08-15 Robert Stayton <bob...@us...> + + * l10n.xsl: Another select optimization. + + * l10n.xsl: lang attribute select statement optimized. + +2004-08-11 Robert Stayton <bob...@us...> + + * titles.xsl: In no.anchor.mode, test for any link descendants and switch to + normal formatting if there are none. This preserves formatting + in titleabbrev for TOC and headers. + +2004-08-09 Robert Stayton <bob...@us...> + + * Makefile: Make each locale file dependent on en.xml to pick up any new items + so that all locale files at least have all items, even if not yet + translated. + + * gentext.xsl: Added olink docname placeholder to substitute.markup and make.gentext.template. + +2004-08-08 Robert Stayton <bob...@us...> + + * olink.xsl: New file. + +2004-07-20 Robert Stayton <bob...@us...> + + * titles.xsl: titleabbrev.markup mode was not getting a book's titleabbrev in bookinfo. + +2004-06-26 Robert Stayton <bob...@us...> + + * common.xsl: Added helper templates to resolve xml:base attributes. + + * common.xsl: Changed @fileref processing to support xml:base. + +2004-06-20 Robert Stayton <bob...@us...> + + * gentext.xsl, labels.xsl: Added support for new section.autolabel.max.depth to turn off + section numbering below a certain depth. + +2004-06-16 Robert Stayton <bob...@us...> + + * common.xsl: Removed 'entry' from xsl:strip-space element list because it + can contain #PCDATA. + +2004-06-14 Robert Stayton <bob...@us...> + + * gentext.xsl: Add support for xrefstyle attrib in olinks. + +2004-06-11 Robert Stayton <bob...@us...> + + * l10n.xml: Added missing ar.xml and hr.xml. + +2004-05-28 Robert Stayton <bob...@us...> + + * gentext.xsl, targets.xsl, titles.xsl: Eliminated spurious error messages when collecting olink targets. + +2004-05-19 Jirka Kosek <ko...@us...> + + * gentext.xsl: Fixed misplaced " + +2004-04-26 Robert Stayton <bob...@us...> + + * gentext.xsl: For procedure object.title.template, use formal only if title + actually present. + +2004-04-21 Jirka Kosek <ko...@us...> + + * labels.xsl: Template label.this.section controls whole section label, not only sub-label which corresponds to particular label. Former behaviour was IMHO bug as it was not usable. + +2004-04-12 Robert Stayton <bob...@us...> + + * table.xsl: Fixed bug #880044 in which rowsep or colsep attributes on the + table or informaltable element had no effect. + +2004-04-11 Robert Stayton <bob...@us...> + + * targets.xsl: Another bad parameter name fixed. + + * targets.xsl: Bug # 907582: incorrect parameter name fixed. + +2004-03-10 Robert Stayton <bob...@us...> + + * targets.xsl: Fixed bug whereby bibliography entries were not getting into + the olink database. + +2004-02-18 Robert Stayton <bob...@us...> + + * labels.xsl: Turn off procedure number when formal.procedures = 0. + +2004-01-29 Norman Walsh <nw...@us...> + + * subtitles.xsl, titles.xsl: Support 'info' + +2004-01-26 Robert Stayton <bob...@us...> + + * targets.xsl: Pass empty doctype parameters to write.chunk so the + output can be used as an entity without DOCTYPE. + +2003-12-31 Jirka Kosek <ko...@us...> + + * autoidx-ng.xsl, l10n.dtd: Added support for new i18n friendly indexing method + +2003-12-15 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile: Support sr_Latn locale + +2003-12-13 Robert Stayton <bob...@us...> + + * l10n.xml: Added sr_Latn.xml for Serbian in Latin script. + +2003-12-06 Robert Stayton <bob...@us...> + + * common.xsl: Fixed bug #851603 infinite recursion in copyright.year when + no <year> elements at all. + +2003-12-05 Robert Stayton <bob...@us...> + + * common.xsl: section.level now computes refentry sections relative to container element. + +2003-11-30 Robert Stayton <bob...@us...> + + * gentext.xsl, labels.xsl, subtitles.xsl, table.xsl, targets.xsl, titles.xsl: + Added CVS $Id$ comment. + +2003-11-17 Robert Stayton <bob...@us...> + + * labels.xsl: Fixed bug where sect1 generated infinite loop when root element + and $section.label.includes.component.label is non zero. + +2003-10-12 Robert Stayton <bob...@us...> + + * gentext.xsl: Fixed cut-and-paste typo in substitute.markup template. + +2003-09-23 Robert Stayton <bob...@us...> + + * pi.xsl: Fixed dbdatetime PI, which was using context + datetime-abbrev for format "B" rather than datetime-full. + +2003-08-27 Norman Walsh <nw...@us...> + + * titles.xsl: Support HTML tables + +2003-08-18 Norman Walsh <nw...@us...> + + * .cvsignore: Ignore generate XML documents for Latin and Bangla + + * Makefile, l10n.xml: Add support for Latin + +2003-07-31 Jirka Kosek <ko...@us...> + + * Makefile: Update Makefile to new gentext mechanism + +2003-07-31 Robert Stayton <bob...@us...> + + * gentext.xsl: Added template for question in object.xref.markup mode + to handle case of defaultlabel = qanda. + + * labels.xsl: Removed processing of @label on qandadiv since that is + not an allowed attribute of qandadiv. + +2003-07-25 Robert Stayton <bob...@us...> + + * Makefile, l10n.xml: Added bn.xml Bangla language. + + * gentext.xsl: Handles new xref contexts and the new xrefstyle attribute + on xref elements. + + * pi.xsl: Now uses new datetime-full and datetime-abbrev gentext + contexts for certain date components. + +2003-07-08 Robert Stayton <bob...@us...> + + * l10n.xsl: Removed extraneous variable l10n.name which is not used. + +2003-06-24 Robert Stayton <bob...@us...> + + * l10n.xsl: Fixed bug in l10n.language template where $target parameter + was missing from xpath expression. + +2003-06-21 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile: Added Croatian + +2003-05-19 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile: Added Arabic + +2003-05-08 Norman Walsh <nw...@us...> + + * titles.xsl: Support 'title.markup' on glossentry + +2003-04-29 Jirka Kosek <ko...@us...> + + * pi.xsl: Added localization support for datetime PI + +2003-04-27 <dc...@us...> + + * common.xsl: Added level 6 to test for section depth in section.level template so that section.title.level6.properties will be used for sections that are 6 deep or deeper. This should also cause a h6 to be created in html output. + +2003-04-16 Jirka Kosek <ko...@us...> + + * pi.xsl: Changed PI name from <?timestamp?> to <?dbtimestamp?> + +2003-04-14 Jirka Kosek <ko...@us...> + + * pi.xsl: New file. + +2003-04-13 Norman Walsh <nw...@us...> + + * table.xsl: A few bug fixes for the colsep/rowsep code + +2003-04-12 Norman Walsh <nw...@us...> + + * common.xsl: Don't use SVG graphics if use.svg=0 + + * table.xsl: Support template to find out if there are more columns in the current row of a table + +2003-04-05 Robert Stayton <bob...@us...> + + * gentext.xsl: Now uses number-and-title-template for sections only + if $section.autolabel is not zero. + +2003-03-02 Jirka Kosek <ko...@us...> + + * common.xsl: Fixed several errors related to TeX math processing + +2003-02-25 Robert Stayton <bob...@us...> + + * l10n.dtd: Added missing 'english-language-name' attribute to the l10n + element, and the missing 'style' attribute to the template + element so the current gentext documents will validate. + +2003-01-30 Robert Stayton <bob...@us...> + + * common.xsl: Corrected several references to parameter $qanda.defaultlabel + that were missing the "$". + +2003-01-23 Adam Di Carlo <adi...@us...> + + * Makefile: make use of cvstools/Makefile.incl + +2003-01-20 Norman Walsh <nw...@us...> + + * gentext.xsl: Support experimental parameter to specify that number-and-title xrefs should be used even when things are numbered + + * gentext.xsl: Added object.titleabbrev.markup for consistency + + * l10n.xsl: Added gentext.template.exists to test if a gentext template exists. Clever name, huh? + + * titles.xsl: Expanded support for obtaining titleabbrevs + +2003-01-10 Norman Walsh <nw...@us...> + + * .cvsignore, l10n.xml: Added bg.xml + + * Makefile: Add Bulgarian + +2003-01-02 Norman Walsh <nw...@us...> + + * labels.xsl, titles.xsl: Support setindex (there were all sorts of things wrong with it) + +2003-01-01 Norman Walsh <nw...@us...> + + * table.xsl: CALS says the default for colsep and rowsep is 1. + + * table.xsl: Fix variable scoping problem + + * titles.xsl: Support titleabbrev (outside of info elements anyway) + +2002-12-18 Robert Stayton <bob...@us...> + + * common.xsl: The select.mediaobject.index template now uses the + $stylesheet.result.type parameter to choose the role + value, with xhtml falling back to html if needed. + +2002-12-17 Robert Stayton <bob...@us...> + + * common.xsl: Changed selection of mediaobject to be more consistent using + a separate select.mediaobject.index template. Also added + text-align to block containing external-graphic in fo output. + +2002-11-23 Robert Stayton <bob...@us...> + + * common.xsl: Fixed bug in orderedlist-starting-number test when + @continuation not set. + +2002-11-14 Norman Walsh <nw...@us...> + + * common.xsl: Handle nested refsections in section.level + + * gentext.xsl: Pass full xpath name to gentext.template instead of just the local-name + + * l10n.xsl: Make gentext.template search through /-separated names + +2002-10-19 Norman Walsh <nw...@us...> + + * l10n.xsl: Support output of language attribute + +2002-10-09 Norman Walsh <nw...@us...> + + * l10n.xsl: Make 3166 language codes work in upper or lowercase + +2002-10-02 Norman Walsh <nw...@us...> + + * common.xsl: Added orderedlist-starting-number and orderedlist-item-number templates + +2002-10-01 Robert Stayton <bob...@us...> + + * common.xsl: Changed the section.level template to return a number that matches + the section level (sect1 = 1, etc.). + +2002-09-27 Norman Walsh <nw...@us...> + + * l10n.xml: Add Thai + +2002-09-15 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile, l10n.xml: Added LT and VI localizations + +2002-09-04 Norman Walsh <nw...@us...> + + * common.xsl: Refactor person.name templates so that it's easy to override them + + * l10n.xsl: Move l10n.* parameters into ../params so they can be properly documented; made l10n.gentext.use.xref.language a numeric boolean parameter instead of a proper boolean + +2002-09-03 Norman Walsh <nw...@us...> + + * common.xsl: Remove spurious character on line 432 + + * table.xsl: Make sure row-level colsep and rowsep values are 'inherited' onto missing cells + +2002-09-02 Norman Walsh <nw...@us...> + + * common.xsl: Support person-name style from localization data in personal names + +2002-08-28 Norman Walsh <nw...@us...> + + * table.xsl: Make inherited attributes work for 'missing' table cells + +2002-07-29 Robert Stayton <bob...@us...> + + * targetdatabase.dtd: Forgot to fix the attribute on the <obj> element + as well. + + * targetdatabase.dtd: Changed the targetptr attribute from #REQUIRED to #IMPLIED + since it is not required on all objects. + + * targetdatabase.dtd: Replaced targetid attribute on document with targetptr + per the decision of the DocBook Technical Committee. + +2002-07-17 Norman Walsh <nw...@us...> + + * labels.xsl: Fixed thinko + + * labels.xsl: Don't count equations without titles when labelling equations + +2002-07-13 Robert Stayton <bob...@us...> + + * targets.xsl: Fixed output encoding to utf-8 so a targets database + can handle mixed languages. + Added omit-xml-declaration to get around the standalone + attribute in the XML declaration not being permitted + in system entities. + +2002-07-09 Norman Walsh <nw...@us...> + + * labels.xsl: Bug #558333: use containing section for the label of a bridgehead if section.autolabel is non-zero + +2002-07-07 Robert Stayton <bob...@us...> + + * common.xsl: Changed the name of the second-order itemizedlist mark + from 'round' (not supported in browsers' <ul> 'type' attribute) + to 'circle', which is supported. + Both are already supported in FO stylesheet. + +2002-07-06 Norman Walsh <nw...@us...> + + * targets.xsl: The default.encoding parameter has been renamed chunker.output.encoding + +2002-07-05 Robert Stayton <bob...@us...> + + * labels.xsl, titles.xsl: Added 'verbose' parameter to default templates in + title.markup mode and label.markup mode, and made + the error message conditional on that parameter. The + default value is 1, so the message will still be + there for normal usage. But the targets.xsl + stylesheet sets verbose to 0 when trolling for + cross reference targets to eliminate useless noise + on elements that have an id attribute but no title or label. + + * targetdatabase.dtd: New file. + + * targets.xsl: New file. + +2002-06-11 Norman Walsh <nw...@us...> + + * common.xsl: Augmented debugging message (commented out) + + * gentext.xsl: Experimental support for xrefstyle; support for %d in templates + + * l10n.xsl: Experimental support for xrefstyle + + * titles.xsl: Support refsynopsisdiv in title.markup mode + +2002-05-23 Norman Walsh <nw...@us...> + + * common.xsl: Support for SVG in HTML + +2002-05-21 Norman Walsh <nw...@us...> + + * gentext.xsl: Whitespace + + * labels.xsl: Don't generate '. ' after QandA labels + +2002-05-12 Norman Walsh <nw...@us...> + + * common.xsl: Fix bugs in extension checking in mediaobject.filename + + * l10n.xsl: Reworked test in gentext.template; should have no user-visible changes + + * table.xsl: Removed some obsolete templates; reworked inheritance for improved border support (still implements old DocBook semantics which aren't quite CALS) + + * titles.xsl: Improved error message + +2002-04-21 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile, l10n.xml: Add support for Hebrew localization + +2002-03-24 Norman Walsh <nw...@us...> + + * common.xsl: Change comment: personname is no longer experimental + +2002-03-18 Norman Walsh <nw...@us...> + + * common.xsl: Replace generate.*.toc and generate.*.lot with single generate.toc parameter. + +2002-03-18 Robert Stayton <bob...@us...> + + * gentext.xsl: Replaced the substitute-markup template with one + using simpler logic. Added params for the content + to be substituted so it can be used with olinks + where the content is supplied from a data file. + +2002-03-14 Norman Walsh <nw...@us...> + + * common.xsl: Handle revisionflag a little better on copyrights + + * common.xsl, gentext.xsl, l10n.xsl, labels.xsl, subtitles.xsl, table.xsl, titles.xsl: + Whitespace only: change CR/LF back to LF. Norm was a total moron. + + * common.xsl, gentext.xsl, l10n.xsl, labels.xsl, subtitles.xsl, table.xsl, titles.xsl: + Whitespace changes only: use PC-style CR/LF because Unix clients choke on this far less often than PC clients choke on the reverse. Grrr. + +2002-03-07 Robert Stayton <bob...@us...> + + * titles.xsl: refentry title in title.markup mode now follows $allow-anchors setting + to prevent index entries from appearing in the TOC. + +2002-01-28 Norman Walsh <nw...@us...> + + * l10n.dtd, l10n.xml: Tweaks to the l10n.dtd to make it as namespace aware as DTDs can be + +2002-01-25 Norman Walsh <nw...@us...> + + * table.xsl: Fix bug that caused rowsep and colsep to be ignored on empty cells + +2002-01-10 Norman Walsh <nw...@us...> + + * l10n.xsl: Don't rely on the order of attribute nodes cause they don't have one + +2002-01-03 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile: Added Thai localization + + * common.xsl: Calculate itemized list symbol based on depth analagous to orderedlist numeration + + * gentext.xsl: Use unnumbered gentext keys appropriately + +2001-12-15 Jirka Kosek <ko...@us...> + + * common.xsl: Improved support for TeX math inside equations. + +2001-12-04 Norman Walsh <nw...@us...> + + * labels.xsl: Bug #435320: Poor enumeration of LoTs and LoFs + + * titles.xsl: Bug! Can't put HTML here. But what does this break? + +2001-12-02 Norman Walsh <nw...@us...> + + * titles.xsl: Make no.anchor.mode 'sticky'. This is really necessary because otherwise title inlines effectively turn it off + +2001-12-01 Norman Walsh <nw...@us...> + + * labels.xsl: Improve FAQ labeling + +2001-11-29 Robert Stayton <bob...@us...> + + * l10n.xsl: Fixed error message for missing localization so that if + missing in en.xml, it doesn't say 'using en'. + +2001-11-28 Norman Walsh <nw...@us...> + + * common.xsl: Added punct.honorific parameter + + * l10n.xsl: Removed crufty gentext.xref.text template + +2001-11-15 Norman Walsh <nw...@us...> + + * common.xsl: Support experimental personname wrapper + +2001-11-14 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile, l10n.xml: Added Basque + +2001-11-12 Norman Walsh <nw...@us...> + + * common.xsl: Support well-formed documents, use key() instead of id() + +2001-11-09 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile, l10n.xml: Added Nynorsk + +2001-11-06 Norman Walsh <nw...@us...> + + * labels.xsl: Why did I assume sections should always be labelled in articles? + +2001-11-02 Norman Walsh <nw...@us...> + + * common.xsl: Support FAMILY Given style personal names + +2001-10-30 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile, l10n.xml: Added Xhosa + +2001-10-16 Norman Walsh <nw...@us...> + + * table.xsl: Table support improvements + +2001-10-15 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile, l10n.xml: Added Ukranian + + * table.xsl: Fix calculation of rowsep and colsep; added experimental support for table.borders.with.css in HTML; calculation of alignments needs to be added along the same lines + +2001-10-14 Norman Walsh <nw...@us...> + + * table.xsl: New file. + +2001-09-25 Norman Walsh <nw...@us...> + + * common.xsl: Support automatic collation of year ranges in copyright + + * l10n.xsl: Fix gentext.nav.* templates + +2001-09-22 Norman Walsh <nw...@us...> + + * gentext.xsl: Rewrote substitute-markup to support %p + + * gentext.xsl, labels.xsl: Bug #463033: allow xref to list items (in orderedlists) and varlistentrys + + * titles.xsl: Support title.markup for legal notices + +2001-08-29 Norman Walsh <nw...@us...> + + * common.xsl: Fix orderedlist numerations + +2001-08-14 Norman Walsh <nw...@us...> + + * l10n.xsl: Calculation of the dingbat nodeset was simply broken + +2001-08-13 Norman Walsh <nw...@us...> + + * Makefile: Added stylesheet as a dependency + +2001-08-04 Norman Walsh <nw...@us...> + + * l10n.dtd: Rename internationalization to i18n, localization to l10n + + * l10n.xml: Rename internationalization to i18n, localization to l10n, add namespace declaration + + * l10n.xsl: Support a local i18n override, rename internationalization to i18n, localization to l10n, add namespace declaration + + * labels.xsl: PartIntros never get a label + +2001-08-01 Norman Walsh <nw...@us...> + + * gentext.xsl: Pass allow-anchors through properly + + * labels.xsl: Fix question labelling + + * titles.xsl: Output anchors for titles if the titles have ids + +2001-07-31 Robert Stayton <bob...@us...> + + * l10n.xsl: Reverted the change from [last()] to [1] back to [last()] + because that is the correct code. + + * l10n.xsl: Added code to the "l10n.language" template to fall + back to the two-letter lang code if a longer lang + does not have a <lang>.xml localization file. + And it falls back to the default lang if it can't + find that either. + + Also fixed a bug for finding the lang attribute. + It was using the last() function, but in an + ancestor-or-self node set you want the first ancestor + (closest) with a lang value. + + 49c49 + < |ancestor-or-self::*/@xml:lang)[last()]"/> + --- + > |ancestor-or-self::*/@xml:lang)[1]"/> + +2001-07-17 Jirka Kosek <ko...@us...> + + * common.xsl: Fixed bug #442160. Parameter graphic.default.extension is now used also for <graphic> and <inlinegraphic> not only for <imagedata>. + +2001-07-08 Norman Walsh <nw...@us...> + + * gentext.xsl, titles.xsl: Support xref to bridgehead + +2001-07-04 <uid...@us...> + + * .cvsignore, Makefile, l10n.xml: Added support for Turkish + + * .cvsignore, Makefile, l10n.xml: Added Afrikaans + + * common.xsl, titles.xsl: Bug #429011, fix xref to qandset elements + + * labels.xsl: Bug #426188, fix question/answer labels + +2001-06-21 Norman Walsh <nw...@us...> + + * common.xsl, gentext.xsl, labels.xsl, titles.xsl: Use common code to calculate step numbers; support xref to procedures and steps; added formal.procedures parameter + +2001-06-20 Norman Walsh <nw...@us...> + + * l10n.xsl: Xalan debugging; harmless changes + +2001-06-14 Norman Walsh <nw...@us...> + + * subtitles.xsl: Support subtitle on article + +2001-05-23 Norman Walsh <nw...@us...> + + * common.xsl: Fix dup. template bug with is.graphic.* + + * gentext.xsl: Workaround article/appendix formatting bug (HACK) + + * labels.xsl: Label appendixes correctly in books and articles + +2001-05-21 Norman Walsh <nw...@us...> + + * labels.xsl: Tweak for section labels in articles + +2001-05-12 Norman Walsh <nw...@us...> + + * common.xsl: Added refsect* to the section.level template + +2001-05-04 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile, l10n.xml: Add Serbian localization + +2001-04-21 Norman Walsh <nw...@us...> + + * common.xsl: My first crude attempts at support for qandaset + +2001-04-19 Norman Walsh <nw...@us...> + + * gentext.xsl, titles.xsl: Fix bug #417193, make sure allow-anchors is properly propagated through substitute-markup + +2001-04-18 Norman Walsh <nw...@us...> + + * titles.xsl: Suppress indexterms in no.anchor.mode + +2001-04-17 Norman Walsh <nw...@us...> + + * labels.xsl: Move label.from.part parameter into param.xsl; default it to 0 so that chapters and appendixes are numbered monotonically throughout a book by default. Moved param.xsl up in the include list, just for good measure + +2001-04-16 Norman Walsh <nw...@us...> + + * gentext.xsl: Fix bug in processing of subtitle content + + * labels.xsl: Only label.from.part if there actually is a part + + * titles.xsl: Don't put ulink, link, olink, or xref in titles if anchor's aren't allowed + +2001-04-15 Norman Walsh <nw...@us...> + + * gentext.xsl: Localize the textonly calculations by creating a object.title.markup.textonly mode + +2001-04-03 Norman Walsh <nw...@us...> + + * gentext.xsl, labels.xsl, titles.xsl: Fix bug 412487, make XSL-generated callout marks honor callout mark parameters + + * titles.xsl: Restore no.anchor.mode and suppress footnotes in no.anchor.mode + +2001-04-02 Norman Walsh <nw...@us...> + + * .cvsignore, Makefile: Make common files + + * common.xsl, gentext.xsl, l10n.xml, l10n.xsl, labels.xsl, subtitles.xsl, titles.xsl: + New file. + + * gentext.xsl: Commented out debugging messages + + * l10n.dtd: New file. + Added: trunk/jsxe/buildlib/docbook/common/af.xml =================================================================== --- trunk/jsxe/buildlib/docbook/common/af.xml (rev 0) +++ trunk/jsxe/buildlib/docbook/common/af.xml 2006-08-29 02:13:58 UTC (rev 1191) @@ -0,0 +1,1161 @@ +<?xml version="1.0" encoding="US-ASCII"?> +<l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="af" english-language-name="Afrikaans"> + +<!-- This file is generated automatically. --> +<!-- Do not edit this file by hand! --> +<!-- See http://docbook.sourceforge.net/ --> +<!-- To update this file: edit the corresponding document at --> +<!-- http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/docbook/gentext/locale/ --> + + <l:gentext key="Abstract" text="Samevatting"/> + <l:gentext key="abstract" text="samevatting"/> + <l:gentext key="Answer" text="Antwoord:"/> + <l:gentext key="answer" text="antwoord:"/> + <l:gentext key="Appendix" text="Aanhangsel"/> + <l:gentext key="appendix" text="aanhangsel"/> + <l:gentext key="Article" text="Artikel"/> + <l:gentext key="article" text="artikel"/> + <l:gentext key="Bibliography" text="Bibliografie"/> + <l:gentext key="bibliography" text="bibliografie"/> + <l:gentext key="Book" text="Boek"/> + <l:gentext key="book" text="boek"/> + <l:gentext key="CAUTION" text="PAS OP"/> + <l:gentext key="Caution" text="Pas op"/> + <l:gentext key="caution" text="pas op"/> + <l:gentext key="Chapter" text="Hoofdstuk"/> + <l:gentext key="chapter" text="hoofdstuk"/> + <l:gentext key="Colophon" text="Kolifon"/> + <l:gentext key="colophon" text="kolifon"/> + <l:gentext key="Copyright" text="Kopie reg"/> + <l:gentext key="copyright" text="kopie reg"/> + <l:gentext key="Dedication" text="Opgedra aan"/> + <l:gentext key="dedication" text="opgedra aan"/> + <l:gentext key="Edition" text="Uitgawe"/> + <l:gentext key="edition" text="uitgawe"/> + <l:gentext key="Equation" text="Vergelyking"/> + <l:gentext key="equation" text="vergelyking"/> + <l:gentext key="Example" text="Voorbeeld"/> + <l:gentext key="example" text="voorbeeld"/> + <l:gentext key="Figure" text="Figuur"/> + <l:gentext key="figure" text="figuur"/> + <l:gentext key="Glossary" text="Woordlys"/> + <l:gentext key="glossary" text="woordlys"/> + <l:gentext key="GlossSee" text="WoordelysSien"/> + <l:gentext key="glosssee" text="woordelyssien"/> + <l:gentext key="GlossSeeAlso" text="WoordelysSienOok"/> + <l:gentext key="glossseealso" text="woordelyssienook"/> + <l:gentext key="IMPORTANT" text="BELANGRIK"/> + <l:gentext key="important" text="belangrik"/> + <l:gentext key="Important" text="Belangrik"/> + <l:gentext key="Index" text="Indeks"/> + <l:gentext key="index" text="indeks"/> + <l:gentext key="ISBN" text="ISBN"/> + <l:gentext key="isbn" text="isbn"/> + <l:gentext key="LegalNotice" text="RegsKennisgewing"/> + <l:gentext key="legalnotice" text="regskennisgewing"/> + <l:gentext key="MsgAud" text="Teikengroep"/> + <l:gentext key="msgaud" text="teikengroep"/> + <l:gentext key="MsgLevel" text="Vlak"/> + <l:gentext key="msglevel" text="vlak"/> + <l:gentext key="MsgOrig" text="Herkoms"/> + <l:gentext key="msgorig" text="herkoms"/> + <l:gentext key="NOTE" text="OPMERKING"/> + <l:gentext key="Note" text="Opmerking"/> + <l:gentext key="note" text="opmerking"/> + <l:gentext key="Part" text="Deel"/> + <l:gentext key="part" text="deel"/> + <l:gentext key="Preface" text="Voorwoord"/> + <l:gentext key="preface" text="voorwoord"/> + <l:gentext key="Procedure" text="Prosedure"/> + <l:gentext key="procedure" text="prosedure"/> + <l:gentext key="ProductionSet" text="ProduksieStel"/> + <l:gentext key="PubDate" text="Publication Date" lang="en"/> + <l:gentext key="pubdate" text="Publication date" lang="en"/> + <l:gentext key="Published" text="Uitgegee"/> + <l:gentext key="published" text="uitgegee"/> + <l:gentext key="Qandadiv" text="Q & A" lang="en"/> + <l:gentext key="qandadiv" text="Q & A" lang="en"/> + <l:gentext key="Question" text="Vraag:"/> + <l:gentext key="question" text="vraag:"/> + <l:gentext key="RefEntry" text="Verwysingslemma"/> + <l:gentext key="refentry" text="verwysingslemma"/> + <l:gentext key="Reference" text="Verwysing"/> + <l:gentext key="reference" text="verwysing"/> + <l:gentext key="RefName" text="Verwysingsnaam"/> + <l:gentext key="refname" text="verwysingsnaam"/> + <l:gentext key="RefSection" text="Verwysingsparagraaf"/> + <l:gentext key="refsection" text="verwysingsparagraaf"/> + <l:gentext key="RefSynopsisDiv" text="Verwysingsamevatting"/> + <l:gentext key="refsynopsisdiv" text="verwysingsamevatting"/> + <l:gentext key="RevHistory" text="Hersiening geskiedenis"/> + <l:gentext key="revhistory" text="hersiening geskiedenis"/> + <l:gentext key="revision" text="hersiening"/> + <l:gentext key="Revision" text="Hersiening"/> + <l:gentext key="sect1" text="Paragraaf"/> + <l:gentext key="sect2" text="Paragraaf"/> + <l:gentext key="sect3" text="Paragraaf"/> + <l:gentext key="sect4" text="Paragraaf"/> + <l:gentext key="sect5" text="Paragraaf"/> + <l:gentext key="section" text="paragraaf"/> + <l:gentext key="Section" text="Paragraaf"/> + <l:gentext key="see" text="sien"/> + <l:gentext key="See" text="Sien"/> + <l:gentext key="seealso" text="sien ook"/> + <l:gentext key="Seealso" text="Sien ook"/> + <l:gentext key="SeeAlso" text="Sien Ook"/> + <l:gentext key="set" text="versameling"/> + <l:gentext key="Set" text="Versameling"/> + <l:gentext key="setindex" text="versamelingindeks"/> + <l:gentext key="SetIndex" text="VersamelingIndeks"/> + <l:gentext key="Sidebar" text="Kantbalk"/> + <l:gentext key="sidebar" text="kantbalk"/> + <l:gentext key="step" text="stap"/> + <l:gentext key="Step" text="Stap"/> + <l:gentext key="Table" text="Tabel"/> + <l:gentext key="table" text="tabel"/> + <l:gentext key="tip" text="leidraad"/> + <l:gentext key="TIP" text="LEIDRAAD"/> + <l:gentext key="Tip" text="Leidraad"/> + <l:gentext key="Warning" text="Waarskuwing"/> + <l:gentext key="warning" text="waarskuwing"/> + <l:gentext key="WARNING" text="WAARSKUWING"/> + <l:gentext key="and" text="en"/> + <l:gentext key="by" text="deur"/> + <l:gentext key="called" text="called" lang="en"/> + <l:gentext key="Edited" text="Geredigeer"/> + <l:gentext key="edited" text="geredigeer"/> + <l:gentext key="Editedby" text="Geredigeer deur"/> + <l:gentext key="editedby" text="geredigeer deur"/> + <l:gentext key="in" text="in"/> + <l:gentext key="lastlistcomma" text=","/> + <l:gentext key="listcomma" text=","/> + <l:gentext key="nonexistantelement" text="element bestaan nie"/> + <l:gentext key="notes" text="Notas"/> + <l:gentext key="Notes" text="notas"/> + <l:gentext key="Pgs" text="bl."/> + <l:gentext key="pgs" text="bl."/> + <l:gentext key="Revisedby" text="Hersien deur"/> + <l:gentext key="revisedby" text="hersien deur"/> + <l:gentext key="TableNotes" text="TabelOpmerking"/> + <l:gentext key="tablenotes" text="tabelopmerking"/> + <l:gentext key="TableofContents" text="Inhoudsopgawe"/> + <l:gentext key="tableofcontents" text="inhoudsopgawe"/> + <l:gentext key="the" text="" lang="en"/> + <l:gentext key="unexpectedelementname" text="onverwagte element naam"/> + <l:gentext key="unsupported" text="nie geondersteun"/> + <l:gentext key="xrefto" text="verwysing na"/> + <l:gentext key="listofequations" text="lys van vergelykings"/> + <l:gentext key="ListofEquations" text="Lys van vergelykings"/> + <l:gentext key="ListofExamples" text="Lys van voorbeelde"/> + <l:gentext key="listofexamples" text="lys van voorbeelde"/> + <l:gentext key="ListofFigures" text="Lys van figure"/> + <l:gentext key="listoffigures" text="lys van figure"/> + <l:gentext key="ListofProcedures" text="List of Procedures" lang="en"/> + <l:gentext key="listofprocedures" text="List of Procedures" lang="en"/> + <l:gentext key="listoftables" text="lys van tabelle"/> + <l:gentext key="ListofTables" text="Lys van tabelle"/> + <l:gentext key="ListofUnknown" text="Lys van onbekende tipes"/> + <l:gentext key="listofunknown" text="lys van onbekende tipes"/> + <l:gentext key="nav-home" text="Begin"/> + <l:gentext key="nav-next" text="Volgende"/> + <l:gentext key="nav-next-sibling" text="Verder vooruit"/> + <l:gentext key="nav-prev" text="Terug"/> + <l:gentext key="nav-prev-sibling" text="Verder terug"/> + <l:gentext key="nav-up" text="Boontoe"/> + <l:gentext key="nav-toc" text="ToC" lang="en"/> + <l:gentext key="Draft" text="Proef"/> + <l:gentext key="above" text="bo"/> + <l:gentext key="below" text="onder"/> + <l:gentext key="sectioncalled" text="die seksie genaamd"/> + <l:gentext key="index symbols" text="indeks simbole"/> + <l:gentext key="lowercase.alpha" text="abcdefghijklmnopqrstuvwxyz"/> + <l:gentext key="uppercase.alpha" text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/> + <l:dingbat key="startquote" text="“"/> + <l:dingbat key="endquote" text="”"/> + <l:dingbat key="nestedstartquote" text="‘"/> + <l:dingbat key="nestedendquote" text="’"/> + <l:dingbat key="singlestartquote" text="‘" lang="en"/> + <l:dingbat key="singleendquote" text="’" lang="en"/> + <l:dingbat key="bullet" text="•"/> + <l:gentext key="hyphenation-character" text="-" lang="en"/> + <l:gentex... [truncated message content] |
From: <ian...@us...> - 2006-08-29 16:06:25
|
Revision: 1197 Author: ian_lewis Date: 2006-08-29 09:06:10 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1197&view=rev Log Message: ----------- Merge from 05pre3 branch rev. 1195 Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/build.xml trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java trunk/jsxe/src/net/sourceforge/jsxe/gui/menu/WrappingMenu.java Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-29 16:05:55 UTC (rev 1196) +++ trunk/jsxe/Changelog 2006-08-29 16:06:10 UTC (rev 1197) @@ -1,3 +1,9 @@ +08/29/2006 Ian Lewis <Ian...@me...> + + * Fixed a memory leak with JMenuItems. ActionManager kept a cache of + Wrapper Action objects. JMenu items register listeners with those Actions + so the JMenuItems would never be Garbage collected. + 08/28/2006 Ian Lewis <Ian...@me...> * Changed the messages files to be named the standard ResourceBundle way. Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-08-29 16:05:55 UTC (rev 1196) +++ trunk/jsxe/build.xml 2006-08-29 16:06:10 UTC (rev 1197) @@ -278,6 +278,15 @@ </fileset> </copy> + <!-- copy the lib directory so that the jsXe.exe can be run + from the build dir --> + <mkdir dir="${build.lib}"/> + <copy todir="${build.lib}"> + <fileset dir="${lib.dir}"> + <include name="**/*"/> + </fileset> + </copy> + <!-- set the build properties --> <propertyfile comment="${app.name}'s build properties" file="${build.dest}/net/sourceforge/jsxe/build.properties"> <entry key="application.name" value="${app.name}"/> @@ -340,13 +349,6 @@ <!-- }}} --> <!-- {{{ ============ Prepares for a build ============================= --> <target depends="init" name="prepare-build"> - <!-- lib --> - <mkdir dir="${build.dir}/lib"/> - <copy todir="${build.dir}/lib"> - <fileset dir="${lib.dir}"> - <include name="**/*"/> - </fileset> - </copy> <!-- bin --> <mkdir dir="${build.dir}/bin"/> <copy todir="${build.dir}/bin"> @@ -621,15 +623,6 @@ <!-- {{{ create the win tar.bz2 file --> - <!-- copy the lib directory so that the jsXe.exe can be run - from the build dir --> - <mkdir dir="${build.dir}/lib"/> - <copy todir="${build.dir}/lib"> - <fileset dir="${build.lib}"> - <include name="**/*"/> - </fileset> - </copy> - <!-- create the windows exe --> <taskdef name="launch4j" classname="net.sf.launch4j.ant.Launch4jTask" Modified: trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java 2006-08-29 16:05:55 UTC (rev 1196) +++ trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java 2006-08-29 16:06:10 UTC (rev 1197) @@ -118,8 +118,11 @@ * @param name the name of the action. */ public static Action getAction(String name) { - Action action = (Action)m_actionMap.get(name); - if (action == null) { + // We can't keep a cache of Wrappers because JMenuItems register + //listeners with them and would never be GCed. + Action action = null; + // Action action = (Action)m_actionMap.get(name); + // if (action == null) { LocalizedAction editAction = getLocalizedAction(name); if (editAction != null) { action = new Wrapper(name); @@ -135,11 +138,11 @@ action.putValue(Action.ACCELERATOR_KEY, KeyEventTranslator.getKeyStroke(keyBinding)); } - m_actionMap.put(name, action); + // m_actionMap.put(name, action); } else { Log.log(Log.WARNING,ActionManager.class,"Unknown action: "+ name); } - } + // } return action; }//}}} @@ -326,7 +329,7 @@ /** * This is an name to Wrapper mapping. */ - private static HashMap m_actionMap = new HashMap(); + // private static HashMap m_actionMap = new HashMap(); private static ArrayList m_actionSets = new ArrayList(); private static boolean initialized = false; Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-29 16:05:55 UTC (rev 1196) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-29 16:06:10 UTC (rev 1197) @@ -462,17 +462,16 @@ m_recentFilesMenu.removeAll(); ArrayList historyEntries = jsXe.getBufferHistory().getEntries(); int index = 0; - JMenu addMenu = m_recentFilesMenu; Iterator historyItr = historyEntries.iterator(); while (historyItr.hasNext()) { BufferHistory.BufferHistoryEntry entry = (BufferHistory.BufferHistoryEntry)historyItr.next(); - addMenu.add(new JMenuItem(new OpenRecentFileAction(this, entry))); + m_recentFilesMenu.add(new JMenuItem(new OpenRecentFileAction(this, entry))); index++; } - if (addMenu.getItemCount() == 0) { + if (m_recentFilesMenu.getMenuComponentCount() == 0) { JMenuItem nullItem = new JMenuItem(Messages.getMessage("File.Recent.None")); nullItem.setEnabled(false); - addMenu.add(nullItem); + m_recentFilesMenu.add(nullItem); } }//}}} @@ -671,7 +670,7 @@ //Add recent files menu m_recentFilesMenu = new WrappingMenu(Messages.getMessage("File.Recent"), jsXe.getIntegerProperty("menu.spill.over", 20)); - m_fileMenu.add(m_recentFilesMenu); + m_fileMenu.add(m_recentFilesMenu.getJMenu()); m_fileMenu.addSeparator(); menuItem = new JMenuItem(ActionManager.getAction("save-file")); Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/menu/WrappingMenu.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/menu/WrappingMenu.java 2006-08-29 16:05:55 UTC (rev 1196) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/menu/WrappingMenu.java 2006-08-29 16:06:10 UTC (rev 1197) @@ -28,7 +28,6 @@ //{{{ jsXe classes import net.sourceforge.jsxe.gui.Messages; -import net.sourceforge.jsxe.EBListener; //}}} //{{{ Java classes @@ -47,15 +46,14 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class WrappingMenu extends JMenu { +public class WrappingMenu { //{{{ WrappingMenu constructor /** * Constructs a WrappingMenu without an "invoker" and the default wrap count of 20. */ public WrappingMenu() { - super(); - m_addToMenus.push(this); + m_addToMenus.push(new JMenu()); }//}}} //{{{ WrappingMenu constructor @@ -66,9 +64,8 @@ * it wraps. */ public WrappingMenu(int wrapCount) { - super(); m_wrapCount = wrapCount; - m_addToMenus.push(this); + m_addToMenus.push(new JMenu()); }//}}} //{{{ WrappingMenu constructor @@ -80,9 +77,8 @@ * it wraps. */ public WrappingMenu(String label, int wrapCount) { - super(label); m_wrapCount = wrapCount; - m_addToMenus.push(this); + m_addToMenus.push(new JMenu(label)); }//}}} //{{{ add() @@ -91,11 +87,7 @@ maybeAddMenu(); JMenuItem r; JMenu menu = getCurrentMenu(); - if (menu == this) { - r = super.add(a); - } else { - r = menu.add(a); - } + r = menu.add(a); m_menuHash.put(r, getCurrentMenu()); return r; }//}}} @@ -106,11 +98,7 @@ maybeAddMenu(); Component r; JMenu menu = getCurrentMenu(); - if (menu == this) { - r = super.add(c); - } else { - r = menu.add(c); - } + r = menu.add(c); m_menuHash.put(r, getCurrentMenu()); return r; }//}}} @@ -126,11 +114,7 @@ int addIndex = (int)(index / m_wrapCount); int addSubIndex = (index % m_wrapCount); JMenu menu = (JMenu)m_addToMenus.get(addIndex); - if (menu == this) { - r = super.add(c, addSubIndex); - } else { - r = menu.add(c, addSubIndex); - } + r = menu.add(c, addSubIndex); updateSubMenus(); } return r; @@ -145,11 +129,7 @@ } JMenuItem r; JMenu menu = getCurrentMenu(); - if (menu == this) { - r = super.add(menuItem); - } else { - r = menu.add(menuItem); - } + r = menu.add(menuItem); return r; }//}}} @@ -159,11 +139,7 @@ maybeAddMenu(); JMenuItem r; JMenu menu = getCurrentMenu(); - if (menu == this) { - r = super.add(s); - } else { - r = menu.add(s); - } + r = menu.add(s); m_menuHash.put(r, getCurrentMenu()); return r; }//}}} @@ -179,11 +155,7 @@ int addIndex = (int)(pos / m_wrapCount); int addSubIndex = (pos % m_wrapCount); JMenu menu = (JMenu)m_addToMenus.get(addIndex); - if (menu == this) { - r = super.insert(a, addSubIndex); - } else { - r = menu.insert(a, addSubIndex); - } + r = menu.insert(a, addSubIndex); updateSubMenus(); } return r; @@ -200,17 +172,13 @@ int addIndex = (int)(pos / m_wrapCount); int addSubIndex = (pos % m_wrapCount); JMenu menu = (JMenu)m_addToMenus.get(addIndex); - if (menu == this) { - r = super.insert(mi, addSubIndex); - } else { - r = menu.insert(mi, addSubIndex); - } + r = menu.insert(mi, addSubIndex); updateSubMenus(); } return r; }//}}} - //{{{ insert + //{{{ insert() public void insert(String s, int pos) { if (pos == -1) { @@ -220,11 +188,7 @@ int addIndex = (int)(pos / m_wrapCount); int addSubIndex = (pos % m_wrapCount); JMenu menu = (JMenu)m_addToMenus.get(addIndex); - if (menu == this) { - super.insert(s, addSubIndex); - } else { - menu.insert(s, addSubIndex); - } + menu.insert(s, addSubIndex); updateSubMenus(); } }//}}} @@ -233,12 +197,7 @@ public void remove(Component c) { JMenu menu = (JMenu)m_menuHash.get(c); - if (menu == this) { - super.remove(c); - } else { - menu.remove(c); - } - + menu.remove(c); m_menuHash.remove(c); updateSubMenus(); }//}}} @@ -253,11 +212,7 @@ public void remove(JMenuItem item) { JMenu menu = (JMenu)m_menuHash.get(item); - if (menu == this) { - super.remove(item); - } else { - menu.remove(item); - } + menu.remove(item); m_menuHash.remove(item); updateSubMenus(); }//}}} @@ -265,10 +220,11 @@ //{{{ removeAll() public void removeAll() { + JMenu menu = getJMenu(); + menu.removeAll(); m_menuHash = new HashMap(); m_addToMenus = new Stack(); - m_addToMenus.push(this); - super.removeAll(); + m_addToMenus.push(menu); }//}}} //{{{ getMenuComponent() @@ -280,14 +236,10 @@ int addIndex = (int)(n / m_wrapCount); int addSubIndex = (n % m_wrapCount); JMenu menu = (JMenu)m_addToMenus.get(addIndex); - if (menu == this) { - return super.getMenuComponent(addSubIndex); - } else { - return menu.getMenuComponent(addSubIndex); - } + return menu.getMenuComponent(addSubIndex); }//}}} - //{{{ getMenuComponentCount + //{{{ getMenuComponentCount() /** * Gets the total number of components in this menu * and submenus. @@ -297,6 +249,14 @@ return m_menuHash.keySet().size(); }//}}} + //{{{ getJMenu() + /** + * Gets the JMenu that is used by Swing for this WrappingMenu. + */ + public JMenu getJMenu() { + return (JMenu)m_addToMenus.get(0); + }//}}} + //{{{ MoreMenu class /** * A submenu used by the <code>WrappingMenu</code>. Classes that extend @@ -328,18 +288,6 @@ //{{{ Private members - //{{{ getTrueMenuItemCount() - /** - * Gets the true item count for a sub-menu - */ - private int getTrueMenuItemCount(JMenu menu) { - if (menu == this) { - return super.getMenuComponentCount(); - } else { - return menu.getMenuComponentCount(); - } - }//}}} - //{{{ getCurrentMenu() /** * Gets the current menu that we are adding to. @@ -358,7 +306,7 @@ JMenu menu = (JMenu)m_addToMenus.get(i); //greater than wrap count + 1 because of the "More" menu item. - while (getTrueMenuItemCount(menu) > m_wrapCount + 1) { + while (menu.getMenuComponentCount() > m_wrapCount + 1) { //If we need another menu then make one. JMenu nextMenu; @@ -371,25 +319,21 @@ nextMenu = moreMenu; } - int index = getTrueMenuItemCount(menu)-2; + int index = menu.getMenuComponentCount()-2; Component menuComponent = menu.getComponent(index); menu.remove(index); nextMenu.add(menuComponent, 0); } //while there are less than we want in the menu and it's not the last menu - while (getTrueMenuItemCount(menu) < m_wrapCount + 1 && i+1 < m_addToMenus.size()) { + while (menu.getMenuComponentCount() < m_wrapCount + 1 && i+1 < m_addToMenus.size()) { JMenu nextMenu = (JMenu)m_addToMenus.get(i+1); Component menuComponent = nextMenu.getMenuComponent(0); nextMenu.remove(0); - if (menu == this) { - super.add(menuComponent, getTrueMenuItemCount(this)-1); - } else { - menu.add(menuComponent, getTrueMenuItemCount(menu)-1); - } + menu.add(menuComponent, menu.getMenuComponentCount()-1); - if (getTrueMenuItemCount(nextMenu) == 0) { + if (nextMenu.getMenuComponentCount() == 0) { menu.remove(nextMenu); m_addToMenus.pop(); //if it's empty it must be the last menu. } @@ -402,7 +346,7 @@ * Updates the menu that we are truly adding to. */ private void maybeAddMenu() { - int componentCount = getTrueMenuItemCount(getCurrentMenu()); + int componentCount = getCurrentMenu().getMenuComponentCount(); if (componentCount >= m_wrapCount) { MoreMenu menu = createMoreMenu(); ((JMenu)m_addToMenus.peek()).add(menu); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-29 17:56:42
|
Revision: 1198 Author: ian_lewis Date: 2006-08-29 10:56:30 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1198&view=rev Log Message: ----------- still can't get catalogs to work Modified Paths: -------------- trunk/jsxe/build.xml trunk/jsxe/buildlib/docbook/catalog.xml Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-08-29 16:06:10 UTC (rev 1197) +++ trunk/jsxe/build.xml 2006-08-29 17:56:30 UTC (rev 1198) @@ -197,11 +197,13 @@ <!-- {{{ catalog used for building docs --> <xmlcatalog id="docbook-catalog"> <catalogpath> - <pathelement location="${docbook.dir}/catalog.xml"/> + <fileset dir="${docbook.dir}" includes="**/catalog.xml"/> </catalogpath> </xmlcatalog> <!-- }}} --> + <echo message="${docbook.dir}"/> + <echo message="${app.name} ${app.version}"/> <echo message="----------------------------------------------------------"/> </target> @@ -396,7 +398,7 @@ style="${docbook.dir}/fo/docbook.xsl"> <outputproperty name="encoding" value="UTF-8"/> <mapper type="glob" from="*.xml" to="*.fo"/> - <xmlcatalog refid="catalog"/> + <xmlcatalog refid="docbook-catalog"/> </xslt> <fop format="application/pdf" @@ -407,10 +409,11 @@ </fileset> </fop> + <javadoc author="true" destdir="${build.javadocs}" doctitle="${app.name} ${app.version} API" locale="en_US" packagenames="*" sourcepath="${build.src}" version="true" windowtitle="${app.name} ${app.version} API"> <link href="${java.javadoc.link}"/> <link href="${xerces.javadoc.link}"/> - </javadoc> + </javadoc> <zip basedir="${build.javadocs}" includes="**/*" zipfile="${build.dir}/${app.name}-${app_version}-api.zip"/> Modified: trunk/jsxe/buildlib/docbook/catalog.xml =================================================================== --- trunk/jsxe/buildlib/docbook/catalog.xml 2006-08-29 16:06:10 UTC (rev 1197) +++ trunk/jsxe/buildlib/docbook/catalog.xml 2006-08-29 17:56:30 UTC (rev 1198) @@ -8,23 +8,27 @@ <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/1.68.1/" - rewritePrefix="file://./docbook/"/> + rewritePrefix="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/"/> <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/current/" - rewritePrefix="file://./docbook/"/> + rewritePrefix="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/"/> <rewriteSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/1.68.1/" - rewritePrefix="file://./docbook/"/> + rewritePrefix="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/"/> <rewriteSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/current/" - rewritePrefix="file://./docbook/"/> - + rewritePrefix="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/"/> + + <rewriteSystem + systemIdStartString="http://www.oasis-open.org/docbook/xml/4.4/" + rewritePrefix="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/dtd/"/> + <group id="DocbookDTD" prefer="public"> <system systemId="http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" - uri="file://./docbook/dtd/docbookx.dtd"/> + uri="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/dtd/docbookx.dtd"/> </group> </catalog> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-30 04:58:30
|
Revision: 1206 Author: ian_lewis Date: 2006-08-29 21:58:24 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1206&view=rev Log Message: ----------- Merge from 05pre3 branch rev. 1205 Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/src/net/sourceforge/jsxe/properties Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-30 04:56:43 UTC (rev 1205) +++ trunk/jsxe/Changelog 2006-08-30 04:58:24 UTC (rev 1206) @@ -3,6 +3,8 @@ * Fixed a memory leak with JMenuItems. ActionManager kept a cache of Wrapper Action objects. JMenu items register listeners with those Actions so the JMenuItems would never be Garbage collected. + * Fixed that the Find action had Ctrl-v as the default shortcut. Changed it + to Ctrl-f 08/28/2006 Ian Lewis <Ian...@me...> Modified: trunk/jsxe/src/net/sourceforge/jsxe/properties =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-30 04:56:43 UTC (rev 1205) +++ trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-30 04:58:24 UTC (rev 1206) @@ -64,7 +64,7 @@ cut.shortcut=C+x copy.shortcut=C+c paste.shortcut=C+v -find.shortcut=C+v +find.shortcut=C+f findnext.shortcut=C+g undo.shortcut=C+z redo.shortcut=C+y This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |