[zhyi~subversion:56] Finished Jar Dependency Walker & SRT Subtitle Editor.
- From: zhyi@kenai.com
- To: commits@zhyi.kenai.com
- Subject: [zhyi~subversion:56] Finished Jar Dependency Walker & SRT Subtitle Editor.
- Date: Sat, 12 Dec 2009 10:29:41 +0000
Project: zhyi
Repository: subversion
Revision: 56
Author: zhyi
Date: 2009-12-12 10:29:38 UTC
Link:
Log Message:
------------
Finished Jar Dependency Walker & SRT Subtitle Editor.
Revisions:
----------
56
Modified Paths:
---------------
SrtSubtitleEditor/src/com/zhyi/sse/common/SrtToolkit.java
JarDependencyWalker/nbproject/project.properties
JarDependencyWalker/nbproject/build-impl.xml
SrtSubtitleEditor/src/com/zhyi/sse/ui/SrtSubtitleEditorFrame.form
Checksumz/src/com/zhyi/checksumz/ui/ChecksumzFrame.java
Checksumz/nbproject/build-impl.xml
SrtSubtitleEditor/nbproject/build-impl.xml
SrtSubtitleEditor/src/com/zhyi/sse/ui/OptionsDialog.java
Checksumz/src/com/zhyi/checksumz/ui/OptionsDialog.java
Checksumz/nbproject/genfiles.properties
Checksumz/src/com/zhyi/checksumz/ui/ChecksumzFrame.form
Checksumz/nbproject/project.properties
SrtSubtitleEditor/nbproject/project.properties
JarDependencyWalker/nbproject/genfiles.properties
SrtSubtitleEditor/src/com/zhyi/sse/ui/SrtSubtitleEditorFrame.java
SrtSubtitleEditor/nbproject/genfiles.properties
SrtSubtitleEditor/src/com/zhyi/sse/ui/OptionsDialog.form
Diffs:
------
Index: JarDependencyWalker/nbproject/project.properties
===================================================================
--- JarDependencyWalker/nbproject/project.properties (revision 55)
+++ JarDependencyWalker/nbproject/project.properties (revision 56)
@@ -46,6 +46,7 @@
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
+jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api"
main.class=com.zhyi.jdw.ui.JarDependencyWalkerFrame
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
Index: JarDependencyWalker/nbproject/genfiles.properties
===================================================================
--- JarDependencyWalker/nbproject/genfiles.properties (revision 55)
+++ JarDependencyWalker/nbproject/genfiles.properties (revision 56)
@@ -4,5 +4,5 @@
# This file is used by a NetBeans-based IDE to track changes in generated
files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never
regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=9646d938
-nbproject/build-impl.xml.script.CRC32=1582da15
-nbproject/build-impl.xml.stylesheet.CRC32=5c621a33@1.26.2.45
+nbproject/build-impl.xml.script.CRC32=c6ee6122
+nbproject/build-impl.xml.stylesheet.CRC32=576378a2@1.32.1.45
Index: JarDependencyWalker/nbproject/build-impl.xml
===================================================================
--- JarDependencyWalker/nbproject/build-impl.xml (revision 55)
+++ JarDependencyWalker/nbproject/build-impl.xml (revision 56)
@@ -55,21 +55,52 @@
</target>
<target
depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property"
name="-do-init">
<available file="${manifest.file}" property="manifest.available"/>
- <condition property="manifest.available+main.class">
+ <condition property="main.class.available">
<and>
- <isset property="manifest.available"/>
<isset property="main.class"/>
<not>
<equals arg1="${main.class}" arg2="" trim="true"/>
</not>
</and>
</condition>
+ <condition property="manifest.available+main.class">
+ <and>
+ <isset property="manifest.available"/>
+ <isset property="main.class.available"/>
+ </and>
+ </condition>
+ <condition property="do.mkdist">
+ <and>
+ <isset property="libs.CopyLibs.classpath"/>
+ <not>
+ <istrue value="${mkdist.disabled}"/>
+ </not>
+ </and>
+ </condition>
<condition property="manifest.available+main.class+mkdist.available">
<and>
<istrue value="${manifest.available+main.class}"/>
- <isset property="libs.CopyLibs.classpath"/>
+ <isset property="do.mkdist"/>
</and>
</condition>
+ <condition property="manifest.available+mkdist.available">
+ <and>
+ <istrue value="${manifest.available}"/>
+ <isset property="do.mkdist"/>
+ </and>
+ </condition>
+ <condition property="manifest.available-mkdist.available">
+ <or>
+ <istrue value="${manifest.available}"/>
+ <isset property="do.mkdist"/>
+ </or>
+ </condition>
+ <condition property="manifest.available+main.class-mkdist.available">
+ <or>
+ <istrue value="${manifest.available+main.class}"/>
+ <isset property="do.mkdist"/>
+ </or>
+ </condition>
<condition property="have.tests">
<or>
<available file="${test.src.dir}"/>
@@ -104,6 +135,7 @@
<property name="javadoc.preview" value="true"/>
<property name="application.args" value=""/>
<property name="source.encoding" value="${file.encoding}"/>
+ <property name="runtime.encoding" value="${source.encoding}"/>
<condition property="javadoc.encoding.used"
value="${javadoc.encoding}">
<and>
<isset property="javadoc.encoding"/>
@@ -119,12 +151,11 @@
<condition property="do.depend.true">
<istrue value="${do.depend}"/>
</condition>
- <condition else="" property="javac.compilerargs.jaxws"
value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
- <and>
- <isset property="jaxws.endorsed.dir"/>
- <available file="nbproject/jaxws-build.xml"/>
- </and>
+ <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+ <condition else="" property="endorsed.classpath.cmd.line.arg"
value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+ <length length="0" string="${endorsed.classpath}"
when="greater"/>
</condition>
+ <property name="javac.fork" value="false"/>
</target>
<target name="-post-init">
<!-- Empty placeholder for easier customization. -->
@@ -165,7 +196,7 @@
<sequential>
<property location="${build.dir}/empty" name="empty.dir"/>
<mkdir dir="${empty.dir}"/>
- <javac debug="@{debug}" deprecation="${javac.deprecation}"
destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}"
includeantruntime="false" includes="@{includes}" source="${javac.source}"
sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
+ <javac debug="@{debug}" deprecation="${javac.deprecation}"
destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}"
fork="${javac.fork}" includeantruntime="false" includes="@{includes}"
source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}"
target="${javac.target}" tempdir="${java.io.tmpdir}">
<src>
<dirset dir="@{gensrcdir}" erroronmissingdir="false">
<include name="*"/>
@@ -174,7 +205,8 @@
<classpath>
<path path="@{classpath}"/>
</classpath>
- <compilerarg line="${javac.compilerargs}
${javac.compilerargs.jaxws}"/>
+ <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <compilerarg line="${javac.compilerargs}"/>
<customize/>
</javac>
</sequential>
@@ -213,7 +245,7 @@
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
- <junit dir="${work.dir}" errorproperty="tests.failed"
failureproperty="tests.failed" fork="true" showoutput="true">
+ <junit dir="${work.dir}" errorproperty="tests.failed"
failureproperty="tests.failed" fork="true" showoutput="true"
tempdir="${build.dir}">
<batchtest todir="${build.test.results.dir}">
<fileset dir="${test.src.dir}"
excludes="@{excludes},${excludes}" includes="@{includes}">
<filename name="@{testincludes}"/>
@@ -228,6 +260,7 @@
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
+ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg line="${run.jvmargs}"/>
</junit>
</sequential>
@@ -284,10 +317,11 @@
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
+ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg line="${debug-args-line}"/>
<jvmarg
value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
- <jvmarg value="-Dfile.encoding=${source.encoding}"/>
- <redirector errorencoding="${source.encoding}"
inputencoding="${source.encoding}" outputencoding="${source.encoding}"/>
+ <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+ <redirector errorencoding="${runtime.encoding}"
inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="@{classpath}"/>
@@ -308,8 +342,9 @@
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
- <jvmarg value="-Dfile.encoding=${source.encoding}"/>
- <redirector errorencoding="${source.encoding}"
inputencoding="${source.encoding}" outputencoding="${source.encoding}"/>
+ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+ <redirector errorencoding="${runtime.encoding}"
inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="@{classpath}"/>
@@ -336,9 +371,29 @@
COMPILATION SECTION
===================
-->
- <target depends="init" name="deps-jar" unless="no.deps">
- <ant antfile="${project.zylib}/build.xml" inheritall="false"
target="jar"/>
+ <target name="-deps-jar-init" unless="built-jar.properties">
+ <property location="${build.dir}/built-jar.properties"
name="built-jar.properties"/>
+ <delete file="${built-jar.properties}" quiet="true"/>
</target>
+ <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+ <echo level="warn" message="Cycle detected: JarDependencyWalker was
already built"/>
+ </target>
+ <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+ <mkdir dir="${build.dir}"/>
+ <touch file="${built-jar.properties}" verbose="false"/>
+ <property file="${built-jar.properties}"
prefix="already.built.jar."/>
+ <antcall target="-warn-already-built-jar"/>
+ <propertyfile file="${built-jar.properties}">
+ <entry key="${basedir}" value=""/>
+ </propertyfile>
+ <antcall target="-maybe-call-dep">
+ <param name="call.built.properties"
value="${built-jar.properties}"/>
+ <param location="${project.zylib}" name="call.subproject"/>
+ <param location="${project.zylib}/build.xml" name="call.script"/>
+ <param name="call.target" value="jar"/>
+ <param name="transfer.built-jar.properties"
value="${built-jar.properties}"/>
+ </antcall>
+ </target>
<target
depends="init,-check-automatic-build,-clean-after-automatic-build"
name="-verify-automatic-build"/>
<target depends="init" name="-check-automatic-build">
<available file="${build.classes.dir}/.netbeans_automatic_build"
property="netbeans.automatic.build"/>
@@ -399,10 +454,10 @@
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
- <target depends="init,compile,-pre-pre-jar,-pre-jar"
name="-do-jar-without-manifest" unless="manifest.available">
+ <target depends="init,compile,-pre-pre-jar,-pre-jar"
name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
<j2seproject1:jar/>
</target>
- <target depends="init,compile,-pre-pre-jar,-pre-jar"
if="manifest.available" name="-do-jar-with-manifest"
unless="manifest.available+main.class">
+ <target depends="init,compile,-pre-pre-jar,-pre-jar"
if="manifest.available" name="-do-jar-with-manifest"
unless="manifest.available+main.class-mkdist.available">
<j2seproject1:jar manifest="${manifest.file}"/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar"
if="manifest.available+main.class" name="-do-jar-with-mainclass"
unless="manifest.available+main.class+mkdist.available">
@@ -445,7 +500,7 @@
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
- <target depends="init,compile,-pre-pre-jar,-pre-jar"
if="libs.CopyLibs.classpath" name="-do-jar-with-libraries-without-manifest"
unless="manifest.available+main.class">
+ <target depends="init,compile,-pre-pre-jar,-pre-jar"
if="manifest.available+mkdist.available"
name="-do-jar-with-libraries-without-mainclass" unless="main.class.available">
<property location="${build.classes.dir}"
name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
@@ -459,15 +514,39 @@
</chainedmapper>
</pathconvert>
<taskdef
classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs"
classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+ <copylibs compress="${jar.compress}" jarfile="${dist.jar}"
manifest="${manifest.file}"
runtimeclasspath="${run.classpath.without.build.classes.dir}">
+ <fileset dir="${build.classes.dir}"/>
+ <manifest>
+ <attribute name="Class-Path" value="${jar.classpath}"/>
+ </manifest>
+ </copylibs>
+ </target>
+ <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.mkdist"
name="-do-jar-with-libraries-without-manifest" unless="manifest.available">
+ <property location="${build.classes.dir}"
name="build.classes.dir.resolved"/>
+ <pathconvert property="run.classpath.without.build.classes.dir">
+ <path path="${run.classpath}"/>
+ <map from="${build.classes.dir.resolved}" to=""/>
+ </pathconvert>
+ <pathconvert pathsep=" " property="jar.classpath">
+ <path path="${run.classpath.without.build.classes.dir}"/>
+ <chainedmapper>
+ <flattenmapper/>
+ <globmapper from="*" to="lib/*"/>
+ </chainedmapper>
+ </pathconvert>
+ <taskdef
classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs"
classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}"
runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
+ <manifest>
+ <attribute name="Class-Path" value="${jar.classpath}"/>
+ </manifest>
</copylibs>
</target>
<target name="-post-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
- <target
depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-do-jar-with-libraries-without-manifest,-post-jar"
description="Build JAR." name="jar"/>
+ <target
depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-do-jar-with-libraries-without-mainclass,-do-jar-with-libraries-without-manifest,-post-jar"
description="Build JAR." name="jar"/>
<!--
=================
EXECUTION SECTION
@@ -483,11 +562,11 @@
<target name="-do-not-recompile">
<property name="javac.includes.binary" value=""/>
</target>
- <target depends="init,-do-not-recompile,compile-single"
name="run-single">
+ <target depends="init,compile-single" name="run-single">
<fail unless="run.class">Must select one file in the IDE or set
run.class</fail>
<j2seproject1:java classname="${run.class}"/>
</target>
- <target depends="init,-do-not-recompile,compile-test-single"
name="run-test-with-main">
+ <target depends="init,compile-test-single" name="run-test-with-main">
<fail unless="run.class">Must select one file in the IDE or set
run.class</fail>
<j2seproject1:java classname="${run.class}"
classpath="${run.test.classpath}"/>
</target>
@@ -518,12 +597,12 @@
<fail unless="debug.class">Must select one file in the IDE or set
debug.class</fail>
<j2seproject3:debug classname="${debug.class}"/>
</target>
- <target
depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single"
if="netbeans.home" name="debug-single"/>
+ <target
depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single"
if="netbeans.home" name="debug-single"/>
<target depends="init,compile-test-single" if="netbeans.home"
name="-debug-start-debuggee-main-test">
<fail unless="debug.class">Must select one file in the IDE or set
debug.class</fail>
<j2seproject3:debug classname="${debug.class}"
classpath="${debug.test.classpath}"/>
</target>
- <target
depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test"
if="netbeans.home" name="debug-test-with-main"/>
+ <target
depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test"
if="netbeans.home" name="debug-test-with-main"/>
<target depends="init" name="-pre-debug-fix">
<fail unless="fix.includes">Must set fix.includes</fail>
<property name="javac.includes" value="${fix.includes}.java"/>
@@ -625,7 +704,7 @@
<target
depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single"
if="have.tests" name="-post-test-run-single">
<fail if="tests.failed" unless="ignore.failing.tests">Some tests
failed; see details above.</fail>
</target>
- <target
depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single"
description="Run single unit test." name="test-single"/>
+ <target
depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single"
description="Run single unit test." name="test-single"/>
<!--
=======================
JUNIT DEBUGGING SECTION
@@ -652,7 +731,7 @@
<target depends="init,compile-test" if="netbeans.home+have.tests"
name="-debug-start-debugger-test">
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}"
name="${test.class}"/>
</target>
- <target
depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test"
name="debug-test"/>
+ <target
depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test"
name="debug-test"/>
<target depends="init,-pre-debug-fix,compile-test-single"
if="netbeans.home" name="-do-debug-fix-test">
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
</target>
@@ -689,16 +768,52 @@
CLEANUP SECTION
===============
-->
- <target depends="init" name="deps-clean" unless="no.deps">
- <ant antfile="${project.zylib}/build.xml" inheritall="false"
target="clean"/>
+ <target name="-deps-clean-init" unless="built-clean.properties">
+ <property location="${build.dir}/built-clean.properties"
name="built-clean.properties"/>
+ <delete file="${built-clean.properties}" quiet="true"/>
</target>
+ <target if="already.built.clean.${basedir}"
name="-warn-already-built-clean">
+ <echo level="warn" message="Cycle detected: JarDependencyWalker was
already built"/>
+ </target>
+ <target depends="init,-deps-clean-init" name="deps-clean"
unless="no.deps">
+ <mkdir dir="${build.dir}"/>
+ <touch file="${built-clean.properties}" verbose="false"/>
+ <property file="${built-clean.properties}"
prefix="already.built.clean."/>
+ <antcall target="-warn-already-built-clean"/>
+ <propertyfile file="${built-clean.properties}">
+ <entry key="${basedir}" value=""/>
+ </propertyfile>
+ <antcall target="-maybe-call-dep">
+ <param name="call.built.properties"
value="${built-clean.properties}"/>
+ <param location="${project.zylib}" name="call.subproject"/>
+ <param location="${project.zylib}/build.xml" name="call.script"/>
+ <param name="call.target" value="clean"/>
+ <param name="transfer.built-clean.properties"
value="${built-clean.properties}"/>
+ </antcall>
+ </target>
<target depends="init" name="-do-clean">
<delete dir="${build.dir}"/>
- <delete dir="${dist.dir}"/>
+ <delete dir="${dist.dir}" followsymlinks="false"
includeemptydirs="true"/>
</target>
<target name="-post-clean">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-clean,-do-clean,-post-clean"
description="Clean build products." name="clean"/>
+ <target name="-check-call-dep">
+ <property file="${call.built.properties}" prefix="already.built."/>
+ <condition property="should.call.dep">
+ <not>
+ <isset property="already.built.${call.subproject}"/>
+ </not>
+ </condition>
+ </target>
+ <target depends="-check-call-dep" if="should.call.dep"
name="-maybe-call-dep">
+ <ant antfile="${call.script}" inheritall="false"
target="${call.target}">
+ <propertyset>
+ <propertyref prefix="transfer."/>
+ <mapper from="transfer.*" to="*" type="glob"/>
+ </propertyset>
+ </ant>
+ </target>
</project>
Index: SrtSubtitleEditor/nbproject/project.properties
===================================================================
--- SrtSubtitleEditor/nbproject/project.properties (revision 55)
+++ SrtSubtitleEditor/nbproject/project.properties (revision 56)
@@ -46,6 +46,7 @@
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
+jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api"
main.class=com.zhyi.sse.ui.SrtSubtitleEditorFrame
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
Index: SrtSubtitleEditor/nbproject/genfiles.properties
===================================================================
--- SrtSubtitleEditor/nbproject/genfiles.properties (revision 55)
+++ SrtSubtitleEditor/nbproject/genfiles.properties (revision 56)
@@ -4,5 +4,5 @@
# This file is used by a NetBeans-based IDE to track changes in generated
files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never
regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=06d10c0d
-nbproject/build-impl.xml.script.CRC32=621e8629
-nbproject/build-impl.xml.stylesheet.CRC32=5c621a33@1.26.2.45
+nbproject/build-impl.xml.script.CRC32=fac5d388
+nbproject/build-impl.xml.stylesheet.CRC32=576378a2@1.32.1.45
Index: SrtSubtitleEditor/nbproject/build-impl.xml
===================================================================
--- SrtSubtitleEditor/nbproject/build-impl.xml (revision 55)
+++ SrtSubtitleEditor/nbproject/build-impl.xml (revision 56)
@@ -55,21 +55,52 @@
</target>
<target
depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property"
name="-do-init">
<available file="${manifest.file}" property="manifest.available"/>
- <condition property="manifest.available+main.class">
+ <condition property="main.class.available">
<and>
- <isset property="manifest.available"/>
<isset property="main.class"/>
<not>
<equals arg1="${main.class}" arg2="" trim="true"/>
</not>
</and>
</condition>
+ <condition property="manifest.available+main.class">
+ <and>
+ <isset property="manifest.available"/>
+ <isset property="main.class.available"/>
+ </and>
+ </condition>
+ <condition property="do.mkdist">
+ <and>
+ <isset property="libs.CopyLibs.classpath"/>
+ <not>
+ <istrue value="${mkdist.disabled}"/>
+ </not>
+ </and>
+ </condition>
<condition property="manifest.available+main.class+mkdist.available">
<and>
<istrue value="${manifest.available+main.class}"/>
- <isset property="libs.CopyLibs.classpath"/>
+ <isset property="do.mkdist"/>
</and>
</condition>
+ <condition property="manifest.available+mkdist.available">
+ <and>
+ <istrue value="${manifest.available}"/>
+ <isset property="do.mkdist"/>
+ </and>
+ </condition>
+ <condition property="manifest.available-mkdist.available">
+ <or>
+ <istrue value="${manifest.available}"/>
+ <isset property="do.mkdist"/>
+ </or>
+ </condition>
+ <condition property="manifest.available+main.class-mkdist.available">
+ <or>
+ <istrue value="${manifest.available+main.class}"/>
+ <isset property="do.mkdist"/>
+ </or>
+ </condition>
<condition property="have.tests">
<or>
<available file="${test.src.dir}"/>
@@ -104,6 +135,7 @@
<property name="javadoc.preview" value="true"/>
<property name="application.args" value=""/>
<property name="source.encoding" value="${file.encoding}"/>
+ <property name="runtime.encoding" value="${source.encoding}"/>
<condition property="javadoc.encoding.used"
value="${javadoc.encoding}">
<and>
<isset property="javadoc.encoding"/>
@@ -119,12 +151,11 @@
<condition property="do.depend.true">
<istrue value="${do.depend}"/>
</condition>
- <condition else="" property="javac.compilerargs.jaxws"
value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
- <and>
- <isset property="jaxws.endorsed.dir"/>
- <available file="nbproject/jaxws-build.xml"/>
- </and>
+ <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+ <condition else="" property="endorsed.classpath.cmd.line.arg"
value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+ <length length="0" string="${endorsed.classpath}"
when="greater"/>
</condition>
+ <property name="javac.fork" value="false"/>
</target>
<target name="-post-init">
<!-- Empty placeholder for easier customization. -->
@@ -165,7 +196,7 @@
<sequential>
<property location="${build.dir}/empty" name="empty.dir"/>
<mkdir dir="${empty.dir}"/>
- <javac debug="@{debug}" deprecation="${javac.deprecation}"
destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}"
includeantruntime="false" includes="@{includes}" source="${javac.source}"
sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
+ <javac debug="@{debug}" deprecation="${javac.deprecation}"
destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}"
fork="${javac.fork}" includeantruntime="false" includes="@{includes}"
source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}"
target="${javac.target}" tempdir="${java.io.tmpdir}">
<src>
<dirset dir="@{gensrcdir}" erroronmissingdir="false">
<include name="*"/>
@@ -174,7 +205,8 @@
<classpath>
<path path="@{classpath}"/>
</classpath>
- <compilerarg line="${javac.compilerargs}
${javac.compilerargs.jaxws}"/>
+ <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <compilerarg line="${javac.compilerargs}"/>
<customize/>
</javac>
</sequential>
@@ -213,7 +245,7 @@
<attribute default="${excludes}" name="excludes"/>
<attribute default="**" name="testincludes"/>
<sequential>
- <junit dir="${work.dir}" errorproperty="tests.failed"
failureproperty="tests.failed" fork="true" showoutput="true">
+ <junit dir="${work.dir}" errorproperty="tests.failed"
failureproperty="tests.failed" fork="true" showoutput="true"
tempdir="${build.dir}">
<batchtest todir="${build.test.results.dir}">
<fileset dir="${test.src.dir}"
excludes="@{excludes},${excludes}" includes="@{includes}">
<filename name="@{testincludes}"/>
@@ -228,6 +260,7 @@
</syspropertyset>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
+ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg line="${run.jvmargs}"/>
</junit>
</sequential>
@@ -284,10 +317,11 @@
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
+ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg line="${debug-args-line}"/>
<jvmarg
value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
- <jvmarg value="-Dfile.encoding=${source.encoding}"/>
- <redirector errorencoding="${source.encoding}"
inputencoding="${source.encoding}" outputencoding="${source.encoding}"/>
+ <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+ <redirector errorencoding="${runtime.encoding}"
inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="@{classpath}"/>
@@ -308,8 +342,9 @@
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
- <jvmarg value="-Dfile.encoding=${source.encoding}"/>
- <redirector errorencoding="${source.encoding}"
inputencoding="${source.encoding}" outputencoding="${source.encoding}"/>
+ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+ <redirector errorencoding="${runtime.encoding}"
inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
<jvmarg line="${run.jvmargs}"/>
<classpath>
<path path="@{classpath}"/>
@@ -336,9 +371,29 @@
COMPILATION SECTION
===================
-->
- <target depends="init" name="deps-jar" unless="no.deps">
- <ant antfile="${project.zylib}/build.xml" inheritall="false"
target="jar"/>
+ <target name="-deps-jar-init" unless="built-jar.properties">
+ <property location="${build.dir}/built-jar.properties"
name="built-jar.properties"/>
+ <delete file="${built-jar.properties}" quiet="true"/>
</target>
+ <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+ <echo level="warn" message="Cycle detected: SrtSubtitleEditor was
already built"/>
+ </target>
+ <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+ <mkdir dir="${build.dir}"/>
+ <touch file="${built-jar.properties}" verbose="false"/>
+ <property file="${built-jar.properties}"
prefix="already.built.jar."/>
+ <antcall target="-warn-already-built-jar"/>
+ <propertyfile file="${built-jar.properties}">
+ <entry key="${basedir}" value=""/>
+ </propertyfile>
+ <antcall target="-maybe-call-dep">
+ <param name="call.built.properties"
value="${built-jar.properties}"/>
+ <param location="${project.zylib}" name="call.subproject"/>
+ <param location="${project.zylib}/build.xml" name="call.script"/>
+ <param name="call.target" value="jar"/>
+ <param name="transfer.built-jar.properties"
value="${built-jar.properties}"/>
+ </antcall>
+ </target>
<target
depends="init,-check-automatic-build,-clean-after-automatic-build"
name="-verify-automatic-build"/>
<target depends="init" name="-check-automatic-build">
<available file="${build.classes.dir}/.netbeans_automatic_build"
property="netbeans.automatic.build"/>
@@ -399,10 +454,10 @@
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
- <target depends="init,compile,-pre-pre-jar,-pre-jar"
name="-do-jar-without-manifest" unless="manifest.available">
+ <target depends="init,compile,-pre-pre-jar,-pre-jar"
name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
<j2seproject1:jar/>
</target>
- <target depends="init,compile,-pre-pre-jar,-pre-jar"
if="manifest.available" name="-do-jar-with-manifest"
unless="manifest.available+main.class">
+ <target depends="init,compile,-pre-pre-jar,-pre-jar"
if="manifest.available" name="-do-jar-with-manifest"
unless="manifest.available+main.class-mkdist.available">
<j2seproject1:jar manifest="${manifest.file}"/>
</target>
<target depends="init,compile,-pre-pre-jar,-pre-jar"
if="manifest.available+main.class" name="-do-jar-with-mainclass"
unless="manifest.available+main.class+mkdist.available">
@@ -445,7 +500,7 @@
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
- <target depends="init,compile,-pre-pre-jar,-pre-jar"
if="libs.CopyLibs.classpath" name="-do-jar-with-libraries-without-manifest"
unless="manifest.available+main.class">
+ <target depends="init,compile,-pre-pre-jar,-pre-jar"
if="manifest.available+mkdist.available"
name="-do-jar-with-libraries-without-mainclass" unless="main.class.available">
<property location="${build.classes.dir}"
name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
@@ -459,15 +514,39 @@
</chainedmapper>
</pathconvert>
<taskdef
classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs"
classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+ <copylibs compress="${jar.compress}" jarfile="${dist.jar}"
manifest="${manifest.file}"
runtimeclasspath="${run.classpath.without.build.classes.dir}">
+ <fileset dir="${build.classes.dir}"/>
+ <manifest>
+ <attribute name="Class-Path" value="${jar.classpath}"/>
+ </manifest>
+ </copylibs>
+ </target>
+ <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.mkdist"
name="-do-jar-with-libraries-without-manifest" unless="manifest.available">
+ <property location="${build.classes.dir}"
name="build.classes.dir.resolved"/>
+ <pathconvert property="run.classpath.without.build.classes.dir">
+ <path path="${run.classpath}"/>
+ <map from="${build.classes.dir.resolved}" to=""/>
+ </pathconvert>
+ <pathconvert pathsep=" " property="jar.classpath">
+ <path path="${run.classpath.without.build.classes.dir}"/>
+ <chainedmapper>
+ <flattenmapper/>
+ <globmapper from="*" to="lib/*"/>
+ </chainedmapper>
+ </pathconvert>
+ <taskdef
classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs"
classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}"
runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
+ <manifest>
+ <attribute name="Class-Path" value="${jar.classpath}"/>
+ </manifest>
</copylibs>
</target>
<target name="-post-jar">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
- <target
depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-do-jar-with-libraries-without-manifest,-post-jar"
description="Build JAR." name="jar"/>
+ <target
depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-do-jar-with-libraries-without-mainclass,-do-jar-with-libraries-without-manifest,-post-jar"
description="Build JAR." name="jar"/>
<!--
=================
EXECUTION SECTION
@@ -483,11 +562,11 @@
<target name="-do-not-recompile">
<property name="javac.includes.binary" value=""/>
</target>
- <target depends="init,-do-not-recompile,compile-single"
name="run-single">
+ <target depends="init,compile-single" name="run-single">
<fail unless="run.class">Must select one file in the IDE or set
run.class</fail>
<j2seproject1:java classname="${run.class}"/>
</target>
- <target depends="init,-do-not-recompile,compile-test-single"
name="run-test-with-main">
+ <target depends="init,compile-test-single" name="run-test-with-main">
<fail unless="run.class">Must select one file in the IDE or set
run.class</fail>
<j2seproject1:java classname="${run.class}"
classpath="${run.test.classpath}"/>
</target>
@@ -518,12 +597,12 @@
<fail unless="debug.class">Must select one file in the IDE or set
debug.class</fail>
<j2seproject3:debug classname="${debug.class}"/>
</target>
- <target
depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single"
if="netbeans.home" name="debug-single"/>
+ <target
depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single"
if="netbeans.home" name="debug-single"/>
<target depends="init,compile-test-single" if="netbeans.home"
name="-debug-start-debuggee-main-test">
<fail unless="debug.class">Must select one file in the IDE or set
debug.class</fail>
<j2seproject3:debug classname="${debug.class}"
classpath="${debug.test.classpath}"/>
</target>
- <target
depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test"
if="netbeans.home" name="debug-test-with-main"/>
+ <target
depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test"
if="netbeans.home" name="debug-test-with-main"/>
<target depends="init" name="-pre-debug-fix">
<fail unless="fix.includes">Must set fix.includes</fail>
<property name="javac.includes" value="${fix.includes}.java"/>
@@ -625,7 +704,7 @@
<target
depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single"
if="have.tests" name="-post-test-run-single">
<fail if="tests.failed" unless="ignore.failing.tests">Some tests
failed; see details above.</fail>
</target>
- <target
depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single"
description="Run single unit test." name="test-single"/>
+ <target
depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single"
description="Run single unit test." name="test-single"/>
<!--
=======================
JUNIT DEBUGGING SECTION
@@ -652,7 +731,7 @@
<target depends="init,compile-test" if="netbeans.home+have.tests"
name="-debug-start-debugger-test">
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}"
name="${test.class}"/>
</target>
- <target
depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test"
name="debug-test"/>
+ <target
depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test"
name="debug-test"/>
<target depends="init,-pre-debug-fix,compile-test-single"
if="netbeans.home" name="-do-debug-fix-test">
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
</target>
@@ -689,16 +768,52 @@
CLEANUP SECTION
===============
-->
- <target depends="init" name="deps-clean" unless="no.deps">
- <ant antfile="${project.zylib}/build.xml" inheritall="false"
target="clean"/>
+ <target name="-deps-clean-init" unless="built-clean.properties">
+ <property location="${build.dir}/built-clean.properties"
name="built-clean.properties"/>
+ <delete file="${built-clean.properties}" quiet="true"/>
</target>
+ <target if="already.built.clean.${basedir}"
name="-warn-already-built-clean">
+ <echo level="warn" message="Cycle detected: SrtSubtitleEditor was
already built"/>
+ </target>
+ <target depends="init,-deps-clean-init" name="deps-clean"
unless="no.deps">
+ <mkdir dir="${build.dir}"/>
+ <touch file="${built-clean.properties}" verbose="false"/>
+ <property file="${built-clean.properties}"
prefix="already.built.clean."/>
+ <antcall target="-warn-already-built-clean"/>
+ <propertyfile file="${built-clean.properties}">
+ <entry key="${basedir}" value=""/>
+ </propertyfile>
+ <antcall target="-maybe-call-dep">
+ <param name="call.built.properties"
value="${built-clean.properties}"/>
+ <param location="${project.zylib}" name="call.subproject"/>
+ <param location="${project.zylib}/build.xml" name="call.script"/>
+ <param name="call.target" value="clean"/>
+ <param name="transfer.built-clean.properties"
value="${built-clean.properties}"/>
+ </antcall>
+ </target>
<target depends="init" name="-do-clean">
<delete dir="${build.dir}"/>
- <delete dir="${dist.dir}"/>
+ <delete dir="${dist.dir}" followsymlinks="false"
includeemptydirs="true"/>
</target>
<target name="-post-clean">
<!-- Empty placeholder for easier customization. -->
<!-- You can override this target in the ../build.xml file. -->
</target>
<target depends="init,deps-clean,-do-clean,-post-clean"
description="Clean build products." name="clean"/>
+ <target name="-check-call-dep">
+ <property file="${call.built.properties}" prefix="already.built."/>
+ <condition property="should.call.dep">
+ <not>
+ <isset property="already.built.${call.subproject}"/>
+ </not>
+ </condition>
+ </target>
+ <target depends="-check-call-dep" if="should.call.dep"
name="-maybe-call-dep">
+ <ant antfile="${call.script}" inheritall="false"
target="${call.target}">
+ <propertyset>
+ <propertyref prefix="transfer."/>
+ <mapper from="transfer.*" to="*" type="glob"/>
+ </propertyset>
+ </ant>
+ </target>
</project>
Index: SrtSubtitleEditor/src/com/zhyi/sse/common/SrtToolkit.java
===================================================================
--- SrtSubtitleEditor/src/com/zhyi/sse/common/SrtToolkit.java (revision 55)
+++ SrtSubtitleEditor/src/com/zhyi/sse/common/SrtToolkit.java (revision 56)
@@ -53,14 +53,7 @@
return TIME_PATTERN.matcher(time).matches();
}
- public static String ajustTime(String originalTime,
- int offset) throws Exception {
-// if (!isLegalTime(originalTime)) {
-// throw new Exception(Context.getBundle().getString("BadTime"));
-// }
-// if (offset < 1 || offset > 299999) {
-// throw new
Exception(Context.getBundle().getString("IllegalOffset"));
-// }
+ public static String ajustTime(String originalTime, int offset) {
int hours = Integer.parseInt(originalTime.substring(0, 2));
int minutes = Integer.parseInt(originalTime.substring(3, 5));
int seconds = Integer.parseInt(originalTime.substring(6, 8));
@@ -72,9 +65,9 @@
int newMinutes = left / MINUTE_TO_MS;
left = left % MINUTE_TO_MS;
int newSeconds = left / 1000;
- left = left % 1000;
-
- return null;
+ int newMilliseconds = left % 1000;
+ return prependZero(newHour, 2) + ":" + prependZero(newMinutes, 2) +
":"
+ + prependZero(newSeconds, 2) + "," +
prependZero(newMilliseconds, 3);
}
/**
@@ -207,4 +200,17 @@
return line;
}
+ private static String prependZero(int n, int width) {
+ String s = Integer.toString(n);
+ int numberOfZeros = width - s.length();
+ if (numberOfZeros > 0) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < numberOfZeros; i++) {
+ sb.append("0");
+ }
+ s = sb.toString() + s;
+ }
+ return s;
+ }
+
}
Index: SrtSubtitleEditor/src/com/zhyi/sse/ui/SrtSubtitleEditorFrame.java
===================================================================
--- SrtSubtitleEditor/src/com/zhyi/sse/ui/SrtSubtitleEditorFrame.java
(revision 55)
+++ SrtSubtitleEditor/src/com/zhyi/sse/ui/SrtSubtitleEditorFrame.java
(revision 56)
@@ -496,7 +496,9 @@
private void aboutMenuItemActionPerformed(ActionEvent evt)
{//GEN-FIRST:event_aboutMenuItemActionPerformed
JOptionPane.showMessageDialog(this,
- "<html><h3>SRT Subtitle Editor</h3>Copyright © 2009
Zhao Yi (shinzey@msn.com)"
+ "<html><h2>SRT Subtitle Editor</h2>"
+ + "Used for editing SRT subtitle file.<br><br>"
+ + "Copyright © 2009 Zhao Yi (shinzey@msn.com)"
+ "<br>Licensed under GNU General Public License Version
3</html>",
"About SRT Subtitle Editor",
JOptionPane.INFORMATION_MESSAGE);
}//GEN-LAST:event_aboutMenuItemActionPerformed
@@ -657,13 +659,39 @@
return srtTable.getRowCount();
}
- public void ajustTime(int beginIndex, int endIndex, int offset) {
- List<String> beginTimes = new ArrayList<String>();
- List<String> endTimes = new ArrayList<String>();
- for (int i = beginIndex; i < endIndex; i++) {
+ public void ajustTime(final int beginIndex, final int endIndex, final
int offset) {
+ final List<String> beginTimes = new ArrayList<String>();
+ final List<String> endTimes = new ArrayList<String>();
+ final List<String> newBeginTimes = new ArrayList<String>();
+ final List<String> newEndTimes = new ArrayList<String>();
+ for (int i = beginIndex; i <= endIndex; i++) {
beginTimes.add((String) srtTable.getValueAt(i, 1));
endTimes.add((String) srtTable.getValueAt(i, 2));
}
+
+ new SwingWorker<Void, Void>() {
+
+ @Override
+ protected Void doInBackground() throws Exception {
+ for (String beginTime : beginTimes) {
+ newBeginTimes.add(SrtToolkit.ajustTime(beginTime,
offset));
+ }
+ for (String endTime : endTimes) {
+ newEndTimes.add(SrtToolkit.ajustTime(endTime, offset));
+ }
+ return null;
+ }
+
+ @Override
+ protected void done() {
+ int j = 0;
+ for (int i = beginIndex; i <= endIndex; i++) {
+ srtTable.setValueAt(newBeginTimes.get(j), i, 1);
+ srtTable.setValueAt(newEndTimes.get(j), i, 2);
+ }
+ }
+
+ }.execute();
}
public static void main(String args[]) throws Exception {
Index: SrtSubtitleEditor/src/com/zhyi/sse/ui/SrtSubtitleEditorFrame.form
===================================================================
--- SrtSubtitleEditor/src/com/zhyi/sse/ui/SrtSubtitleEditorFrame.form
(revision 55)
+++ SrtSubtitleEditor/src/com/zhyi/sse/ui/SrtSubtitleEditorFrame.form
(revision 56)
@@ -155,7 +155,7 @@
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
- <Component id="srtScrollPane" alignment="0" pref="620"
max="32767" attributes="0"/>
+ <Component id="srtScrollPane" alignment="0" pref="649"
max="32767" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
@@ -179,7 +179,7 @@
<EmptySpace max="-2" attributes="0"/>
<Component id="updateButton" min="-2" max="-2"
attributes="0"/>
</Group>
- <Component id="separator" alignment="0" pref="620"
max="32767" attributes="0"/>
+ <Component id="separator" alignment="0" pref="649"
max="32767" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
@@ -194,7 +194,7 @@
<Component id="separator" min="-2" max="-2" attributes="1"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
- <Component id="contentScrollPane" pref="72" max="32767"
attributes="1"/>
+ <Component id="contentScrollPane" pref="75" max="32767"
attributes="1"/>
<Group type="103" alignment="1" groupAlignment="1"
max="-2" attributes="0">
<Group type="102"
[truncated due to length]
|
[zhyi~subversion:56] Finished Jar Dependency Walker & SRT Subtitle Editor. |
zhyi | 12/12/2009 |





