This commit was manufactured by cvs2svn to create tag 'Release050'.
diff --git a/features/org.eclipse.actf.ai-feature/.project b/features/org.eclipse.actf.ai-feature/.project
deleted file mode 100644
index 74479f7..0000000
--- a/features/org.eclipse.actf.ai-feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai-feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.actf.ai-feature/build.properties b/features/org.eclipse.actf.ai-feature/build.properties
deleted file mode 100644
index 36bf9db..0000000
--- a/features/org.eclipse.actf.ai-feature/build.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,\
-               license.html,\
-               epl-v10.html,\
-               feature.properties
diff --git a/features/org.eclipse.actf.ai-feature/epl-v10.html b/features/org.eclipse.actf.ai-feature/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.actf.ai-feature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.actf.ai-feature/feature.properties b/features/org.eclipse.actf.ai-feature/feature.properties
deleted file mode 100644
index c66f082..0000000
--- a/features/org.eclipse.actf.ai-feature/feature.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-#
-#featureName=Eclipse ACTF
-#updateSiteName=The Eclipse Project Updates
-#providerName=Eclipse.org
-#
-description=Eclipse Accessibility Tools Framework (ACTF) Alternative Interface Feature.
-#
-copyright=Copyright (c) 2007, 2008 IBM Corporation and others.\nAll rights reserved. This program and the accompanying materials\nare made available under the terms of the Eclipse Public License v1.0\nwhich accompanies this distribution, and is available at\nhttp\://www.eclipse.org/legal/epl-v10.html\n\nContributors\:\nIBM Corporation - initial API and implementation\n
-licenseURL=license.html
-license=ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\nMarch 17, 2005\n\nUsage Of Content\n\nTHE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\nOTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\nUSE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\nAGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\nNOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\nAGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\nAND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\nOR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\nTERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\nOF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\nBELOW, THEN YOU MAY NOT USE THE CONTENT.\n\nApplicable Licenses\n\nUnless otherwise indicated, all Content made available by the Eclipse Foundation\nis provided to you under the terms and conditions of the Eclipse Public\nLicense Version 1.0 ("EPL"). A copy of the EPL is provided with this\nContent and is also available at http\://www.eclipse.org/legal/epl-v10.html.\nFor purposes of the EPL, "Program" will mean the Content.\n\nContent includes, but is not limited to, source code, object code,\ndocumentation and other files maintained in the Eclipse.org CVS\nrepository ("Repository") in CVS modules ("Modules") and made available\nas downloadable archives ("Downloads").\n\n- Content may be structured and packaged into modules to facilitate delivering,\nextending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\nplug-in fragments ("Fragments"), and features ("Features").\n- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\nin a directory named "plugins".\n- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\nEach Feature may be packaged as a sub-directory in a directory named "features".\nWithin a Feature, files named "feature.xml" may contain a list of the names and version\nnumbers of the Plug-ins and/or Fragments associated with that Feature.\n- Features may also include other Features ("Included Features"). Within a Feature, files\nnamed "feature.xml" may contain a list of the names and version numbers of Included Features.\n\nFeatures may also include other Features ("Included Features"). Files named\n"feature.xml" may contain a list of the names and version numbers of\nIncluded Features.\n\nThe terms and conditions governing Plug-ins and Fragments should be\ncontained in files named "about.html" ("Abouts"). The terms and\nconditions governing Features and Included Features should be contained\nin files named "license.html" ("Feature Licenses"). Abouts and Feature\nLicenses may be located in any directory of a Download or Module\nincluding, but not limited to the following locations\:\n\n- The top-level (root) directory\n- Plug-in and Fragment directories\n- Inside Plug-ins and Fragments packaged as JARs\n- Sub-directories of the directory named "src" of certain Plug-ins\n- Feature directories\n\nNote\: if a Feature made available by the Eclipse Foundation is installed using the\nEclipse Update Manager, you must agree to a license ("Feature Update\nLicense") during the installation process. If the Feature contains\nIncluded Features, the Feature Update License should either provide you\nwith the terms and conditions governing the Included Features or inform\nyou where you can locate them. Feature Update Licenses may be found in\nthe "license" property of files named "feature.properties". Such Abouts,\nFeature Licenses and Feature Update Licenses contain the terms and\nconditions (or references to such terms and conditions) that govern your\nuse of the associated Content in that directory.\n\nTHE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\nTO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\nSOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO)\:\n\n- Common Public License Version 1.0 (available at http\://www.eclipse.org/legal/cpl-v10.html)\n- Apache Software License 1.1 (available at http\://www.apache.org/licenses/LICENSE)\n- Apache Software License 2.0 (available at http\://www.apache.org/licenses/LICENSE-2.0)\n- IBM Public License 1.0 (available at http\://oss.software.ibm.com/developerworks/opensource/license10.html)\n- Metro Link Public License 1.00 (available at http\://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n- Mozilla Public License Version 1.1 (available at http\://www.mozilla.org/MPL/MPL-1.1.html)\n\nIT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\nTO USE OF THE CONTENT. If no About, Feature License or Feature Update License\nis provided, please contact the Eclipse Foundation to determine what terms and conditions\ngovern that particular Content.\n\nCryptography\n\nContent may contain encryption software. The country in which you are\ncurrently may have restrictions on the import, possession, and use,\nand/or re-export to another country, of encryption software. BEFORE\nusing any encryption software, please check the country's laws,\nregulations and policies concerning the import, possession, or use,\nand re-export of encryption software, to see if this is permitted.\n\nJava and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
diff --git a/features/org.eclipse.actf.ai-feature/feature.xml b/features/org.eclipse.actf.ai-feature/feature.xml
deleted file mode 100644
index b7ee920..0000000
--- a/features/org.eclipse.actf.ai-feature/feature.xml
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.actf.ai"
-      label="Accessibility Tools Framework (ACTF) Alternative Interface feature (Incubation)"
-      version="0.5.0.qualifier"
-      provider-name="Eclipse.org">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="license.html">
-      %license
-   </license>
-
-   <requires>
-      <import plugin="org.eclipse.core.runtime" version="3.2.0" match="compatible"/>
-      <import plugin="org.eclipse.ui" version="3.2.0" match="compatible"/>
-      <import plugin="org.eclipse.swt"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.actf.ai.audio.description"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.audio.io"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.dom.dombycom"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.screenreader.jaws"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.xmlstore"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.util.win32"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.voice"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.ui.editors.ie"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.util.httpproxy"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.util.jxpath"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.util.vocab"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.key.keyui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.navigator"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.fennec"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.query"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.screenreader.windoweyes"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.core"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.actf.model.flash.proxy"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.tts.protalker"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ai.tts.sapi"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.flash"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.dom.dombycom.flash"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.util.win32.comclutch"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.model.dom.html"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.actf.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.commons.jxpath"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
diff --git a/features/org.eclipse.actf.ai-feature/license.html b/features/org.eclipse.actf.ai-feature/license.html
deleted file mode 100644
index c6af966..0000000
--- a/features/org.eclipse.actf.ai-feature/license.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<title>Eclipse.org Software User Agreement</title>
-</head>
-
-<body lang="EN-US" link=blue vlink=purple>
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>March 17, 2005</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-   
-<h3>Applicable Licenses</h3>   
-   
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
-   modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-   
-<ul>
-	<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-	<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-	<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-	<li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>   
- 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-	<li>The top-level (root) directory</li>
-	<li>Plug-in and Fragment directories</li>
-	<li>Inside Plug-ins and Fragments packaged as JARs</li>
-	<li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-	<li>Feature directories</li>
-</ul>
-		
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-	<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-	<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-	<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-	<li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>	
-	<li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-	<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-   
-<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>   
-</body>
-</html>
diff --git a/plugins/org.eclipse.actf.ai.audio.description/.classpath b/plugins/org.eclipse.actf.ai.audio.description/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.audio.description/.project b/plugins/org.eclipse.actf.ai.audio.description/.project
deleted file mode 100644
index f0c20b7..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.audio.description</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.audio.description/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.audio.description/META-INF/MANIFEST.MF
deleted file mode 100644
index fdd6660..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,19 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Audio Description Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.audio.description;singleton:=true
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin
-Bundle-Vendor: Eclipse.org
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.actf.ai.fennec,
- org.eclipse.actf.ai.navigator,
- org.eclipse.actf.ai.voice,
- org.eclipse.actf.ai.xmlstore,
- org.eclipse.actf.core,
- org.eclipse.actf.ui,
- org.eclipse.actf.model.ui
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.actf.ai.audio.description
diff --git a/plugins/org.eclipse.actf.ai.audio.description/about.html b/plugins/org.eclipse.actf.ai.audio.description/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.audio.description/build.properties b/plugins/org.eclipse.actf.ai.audio.description/build.properties
deleted file mode 100644
index 86eff37..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/build.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.xml,\
-               plugin.properties,\
-               plugin_ja.properties,\
-               icons/,\
-			   about.html,\
-               src/messages.properties,\
-               src/messages_ja.properties
diff --git a/plugins/org.eclipse.actf.ai.audio.description/icons/micx16.gif b/plugins/org.eclipse.actf.ai.audio.description/icons/micx16.gif
deleted file mode 100644
index f60045c..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/icons/micx16.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.actf.ai.audio.description/icons/micx48.gif b/plugins/org.eclipse.actf.ai.audio.description/icons/micx48.gif
deleted file mode 100644
index 3b79303..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/icons/micx48.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.actf.ai.audio.description/plugin.properties b/plugins/org.eclipse.actf.ai.audio.description/plugin.properties
deleted file mode 100644
index 35d412b..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-AudioDescription.preference.name=Audio Description
-AudioDescription.view.name=Audio Description
diff --git a/plugins/org.eclipse.actf.ai.audio.description/plugin.xml b/plugins/org.eclipse.actf.ai.audio.description/plugin.xml
deleted file mode 100644
index 721d33c..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/plugin.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-   <extension
-         point="org.eclipse.actf.ai.navigator.MediaControl">
-      <controller class="org.eclipse.actf.ai.audio.description.impl.MediaControlImpl"/>
-   </extension>
-   <extension
-         point="org.eclipse.ui.views">
-      <view
-            category="org.eclipse.actf.ai.ui.views"
-            class="org.eclipse.actf.ai.audio.description.views.DescriptionView"
-            icon="icons/micx16.gif"
-            id="org.eclipse.actf.ai.audio.description.views.DescriptionView"
-            name="%AudioDescription.view.name"/>
-   </extension>
-   <extension
-         point="org.eclipse.ui.perspectiveExtensions">
-      <perspectiveExtension targetID="org.eclipse.actf.examples.aibrowser.DefaultPerspective">
-         <view
-               closeable="false"
-               id="org.eclipse.actf.ai.audio.description.views.DescriptionView"
-               moveable="true"
-               ratio="0.7"
-               relationship="bottom"
-               relative="org.eclipse.actf.ai.navigator.views.NavigatorTreeView"
-               showTitle="true"
-               standalone="false"
-               visible="true"/>
-      </perspectiveExtension>
-   </extension>
-   <!--extension
-         point="org.eclipse.ui.actionSets">
-      <actionSet
-            id="org.eclipse.actf.ai.audio.description.actionSet1"
-            label="org.eclipse.actf.ai.audio.description.actionSet1"
-            visible="true">
-         <action
-               class="org.eclipse.actf.ai.audio.description.actions.AudioDescriptionActionDelegate"
-               id="org.eclipse.actf.ai.audio.description.AudioDescription"
-               label="&amp;Audio Description"
-               menubarPath="org.eclipse.actf.examples.aibrowser.FileMenu/filegroup"
-               state="false"
-               style="toggle"
-               tooltip="Toggle audio description mode"/>
-      </actionSet>
-   </extension-->
-   <extension
-         point="org.eclipse.ui.preferencePages">
-      <page
-            category="org.eclipse.actf.ui.preferences.RootPreferencePage"
-            class="org.eclipse.actf.ai.audio.description.preferences.ADPreferencePage"
-            id="org.eclipse.actf.ai.audio.description.preferences.ADPreferencePage"
-            name="%AudioDescription.preference.name"/>
-   </extension>
-   <extension
-         point="org.eclipse.core.runtime.preferences">
-      <initializer class="org.eclipse.actf.ai.audio.description.preferences.ADPreferenceInitializer"/>
-   </extension>
-
-</plugin>
diff --git a/plugins/org.eclipse.actf.ai.audio.description/plugin_ja.properties b/plugins/org.eclipse.actf.ai.audio.description/plugin_ja.properties
deleted file mode 100644
index db0b66b..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/plugin_ja.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-AudioDescription.preference.name=\u97f3\u58f0\u89e3\u8aac
-AudioDescription.view.name=\u97f3\u58f0\u89e3\u8aac
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/messages.properties b/plugins/org.eclipse.actf.ai.audio.description/src/messages.properties
deleted file mode 100644
index 86b5145..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/messages.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-AudioDescription.view.time=Time
-AudioDescription.view.desc=Description
-AudioDescription.view.enable=Enable
-AudioDescription.view.notEnable=Not Enable
-
-AudioDescription.preference.title=Audio Description Preference
-AudioDescription.voice.engine=TTS engine
-Metadata.available=Audio Description is Available
-
-AudioDescription.on=Audio Description is on
-AudioDescription.off=Audio Description is off
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/messages_ja.properties b/plugins/org.eclipse.actf.ai.audio.description/src/messages_ja.properties
deleted file mode 100644
index c0b1c63..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/messages_ja.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-AudioDescription.view.time=\u6642\u9593
-AudioDescription.view.desc=\u8aac\u660e
-AudioDescription.view.enable=\u89e3\u8aac\u30aa\u30f3
-AudioDescription.view.notEnable=\u89e3\u8aac\u30aa\u30d5
-
-AudioDescription.preference.title=\u97f3\u58f0\u8a2d\u5b9a
-AudioDescription.voice.engine=TTS\u30a8\u30f3\u30b8\u30f3
-
-Metadata.available=\u97f3\u58f0\u89e3\u8aac\u5229\u7528\u53ef\u80fd
-
-AudioDescription.on=\u97f3\u58f0\u89e3\u8aac\u30aa\u30f3
-AudioDescription.off=\u97f3\u58f0\u89e3\u8aac\u30aa\u30d5
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadata.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadata.java
deleted file mode 100644
index f39eee9..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadata.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description;
-
-/**
- * This represents an item of audio description such as following declaration.
- * 
- * <pre>
- *   &lt;item importance=&quot;high&quot; type=&quot;pause-before|speak&quot;&gt;
- *     &lt;start type=&quot;relTime&quot;&gt;00:00:100&lt;/start&gt;
- *     &lt;duration&gt;00:04:500&lt;/duration&gt;
- *     &lt;description xml:lang=&quot;en&quot;&gt;The following preview has been approved for all audiences.&lt;/description&gt;
- *   &lt;/item&gt;
- * </pre>
- */
-public interface IMetadata {
-	/**
-	 * Importance is low.
-	 */
-	int IMPORTANCE_LOW = 0;
-	/**
-	 * Importance is middle.
-	 */
-	int IMPORTANCE_MIDDLE = 1;
-	/**
-	 * Importance is high.
-	 */
-	int IMPORTANCE_HIGH = 2;
-
-	/**
-	 * Null mask.
-	 */
-	int MASK_NONE = 0;
-	/**
-	 * The description will be spoken.
-	 */
-	int MASK_SPEAK = 1;
-	/**
-	 * The video should be paused before speaking the description.
-	 */
-	int MASK_PAUSE_BEFORE = 1 << 1;
-	/**
-	 * The video should be paused after speaking the description.
-	 */
-	int MASK_PAUSE_AFTER = 1 << 2;
-	/**
-	 * The video should be paused during speaking the description.
-	 */
-	int MASK_PAUSE_DURING_SPEAK = 1 << 3;
-
-	/**
-	 * @return the inner text of the <i>description tag</i>.
-	 */
-	String getDescription();
-
-	/**
-	 * @return the time to start in 1/1000 second.
-	 */
-	int getStartTime();
-
-	/**
-	 * @return the time of duration in 1/1000 second.
-	 */
-	int getDuration();
-
-	/**
-	 * @return the xml:lang string specified in the <i>description tag</i>
-	 */
-	String getLang();
-
-	/**
-	 * @return the type value, combination of the following masks, corresponding
-	 *         to the <i>type attribute</i> in the <i>item tag</i>
-	 * @see #MASK_PAUSE_BEFORE
-	 * @see #MASK_SPEAK
-	 * @see #MASK_PAUSE_AFTER
-	 * @see #MASK_PAUSE_DURING_SPEAK
-	 */
-	int getType();
-
-	/**
-	 * @return the importance value specified in the <i>item tag</i>
-	 * @see #IMPORTANCE_LOW
-	 * @see #IMPORTANCE_MIDDLE
-	 * @see #IMPORTANCE_HIGH
-	 */
-	int getImportance();
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadataProvider.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadataProvider.java
deleted file mode 100644
index ccf70e0..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/IMetadataProvider.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.audio.description;
-
-import java.util.ArrayList;
-import java.util.Locale;
-
-/**
- * This represents an audio description file.
- */
-public interface IMetadataProvider {
-	/**
-	 * @return the number of items.
-	 */
-	public int getSize();
-
-	/**
-	 * {@link #prepareMetadata()} should be called before calling this method.
-	 * 
-	 * @param index
-	 *            the index of the item.
-	 * @return the item of audio description specified by the index.
-	 */
-	public IMetadata getItem(int index);
-
-	/**
-	 * {@link #prepareMetadata()} should be called before calling this method.
-	 * 
-	 * @return the list of the items of audio description.
-	 */
-	public ArrayList<IMetadata> getAllItems();
-
-	/**
-	 * {@link #prepareMetadata()} should be called before calling this method.
-	 * 
-	 * @param position
-	 *            the position of the video in 1/1000 second from the start of
-	 *            the video.
-	 * @return the index of the item corresponding to the position.
-	 */
-	public int getIndex(int position);
-
-	/**
-	 * Set the locale information to the provider. The provider selects
-	 * descriptions for the locale.
-	 * 
-	 * @param locale
-	 *            the local to be set.
-	 */
-	public void setLocale(Locale locale);
-
-	/**
-	 * Prepare the metadata information in the default locale or the locale
-	 * specified by {@link #setLocale(Locale)}.
-	 * 
-	 * @see #setLocale(Locale)
-	 * @see #prepareMetadata(Locale)
-	 */
-	public void prepareMetadata();
-
-	/**
-	 * Prepare the metadata information in the specified locale.
-	 * 
-	 * @param locale
-	 *            the local to be used.
-	 */
-	public void prepareMetadata(Locale locale);
-
-	/**
-	 * Reload the audio description file.
-	 */
-	public void reload();
-
-	/**
-	 * @return whether the instance has any metadata information or not.
-	 */
-	public boolean hasMetadata();
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaControlImpl.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaControlImpl.java
deleted file mode 100644
index ce020ba..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaControlImpl.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.impl;
-
-import java.util.HashMap;
-
-import org.eclipse.actf.ai.audio.description.IMetadataProvider;
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.internal.audio.description.Messages;
-import org.eclipse.actf.ai.navigator.IMediaControl;
-
-public class MediaControlImpl implements IMediaControl {
-
-	private HashMap<IHandle, MetadataManager> map = new HashMap<IHandle, MetadataManager>();
-	// private List<MetadataManager> managers = new Vector<MetadataManager>();
-
-	MetadataManager manager;
-	MetadataManager oldManager;
-
-	IHandle old = null;
-
-	IHandle handle;
-
-	public void dispose(IHandle handle) {
-	}
-
-	public void start(IHandle handle) {
-		// if (handle.getSoundControl() == null || handle.getVideoControl() ==
-		// null)
-		// return;
-		initialize(handle);
-	}
-
-	private void initialize(IHandle handle) {
-		this.handle = handle;
-		MetadataManager temp = map.get(handle);
-		IMetadataProvider provider = null;
-
-		if (temp == null) {
-			String url = handle.getWebBrowser().getURL();
-			provider = DescriptionPlugin.getDefault().getMetadata(url);
-			temp = new MetadataManager(handle, provider);
-
-			if (handle.getVideoControl() != null)
-				handle.getVideoControl().addEventListener(
-						new MediaSyncEventListener(handle, temp));
-			// System.out.println(temp);
-			// map.put(handle, temp);
-		}
-		if (manager != null) {
-			manager.stop();
-		}
-		manager = temp;
-		manager.start();
-		DescriptionPlugin.getDefault().setActiveMetadataProvider(provider);
-
-		if (manager.hasMetadata()) {
-			if (oldManager != null) {
-				System.out.println(oldManager.getMetadataProvider());
-				System.out.println(manager.getMetadataProvider());
-			}
-			if (oldManager == null
-					|| oldManager.getMetadataProvider() != manager
-							.getMetadataProvider()) {
-				if (handle.getVoice() != null) {
-					// speakInfo(false);
-				}
-				oldManager = manager;
-			}
-		} else {
-			// handle.getVoice().speak(Messages.getString("Metadata.notAvailable"),
-			// false);
-		}
-	}
-
-	public void speakInfo(boolean flush) {
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-		if (!plugin.isAvailable())
-			return;
-		if (handle.getVoice() == null)
-			return;
-
-		if (plugin.getEnable()) {
-			handle.getVoice().speak(Messages.getString("AudioDescription.on"),
-					flush);
-		} else {
-			handle.getVoice().speak(Messages.getString("AudioDescription.off"),
-					flush);
-		}
-	}
-
-	public int toggleEnabled() {
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-		return plugin.toggleEnable();
-	}
-
-	public boolean isAvailable() {
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-		return plugin.isAvailable();
-	}
-
-	public boolean toggleViewShowing() {
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-		return plugin.getDescriptionView().toggleViewShowing();
-	}
-
-	public boolean isEnabled() {
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-		return plugin.getEnable();
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaSyncEventListener.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaSyncEventListener.java
deleted file mode 100644
index dd0f539..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MediaSyncEventListener.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.IMediaSyncEventListener;
-import org.eclipse.actf.ai.navigator.IMediaControl.IHandle;
-
-public class MediaSyncEventListener implements IMediaSyncEventListener {
-
-	private static final double EVENT_INTERVAL = 0.1; // 100ms
-
-	private IHandle handle;
-	private MetadataManager manager;
-
-	public MediaSyncEventListener(IHandle handle, MetadataManager manager) {
-		this.handle = handle;
-		this.manager = manager;
-	}
-
-	public void run() {
-		if (handle.getVideoControl() != null) {
-			double time = handle.getVideoControl().getCurrentPosition();
-			manager.process(time);
-		}
-	}
-
-	public double getInterval() {
-		return EVENT_INTERVAL;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataContentProvider.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataContentProvider.java
deleted file mode 100644
index 15f6cdd..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataContentProvider.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.impl;
-
-import org.eclipse.actf.ai.audio.description.IMetadata;
-import org.eclipse.actf.ai.audio.description.IMetadataProvider;
-import org.eclipse.actf.ai.audio.description.util.TimeFormatUtil;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
-
-public class MetadataContentProvider extends LabelProvider implements
-		IStructuredContentProvider, ITableLabelProvider {
-
-	@Override
-	public void dispose() {
-	}
-
-	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-	}
-
-	public Object[] getElements(Object inputElement) {
-		if (inputElement instanceof IMetadataProvider) {
-			IMetadataProvider provider = (IMetadataProvider) inputElement;
-
-			String[][] ret = new String[provider.getSize()][2];
-			for (int i = 0; i < ret.length; i++) {
-				IMetadata metadata = provider.getItem(i);
-				ret[i][0] = ""
-						+ TimeFormatUtil
-								.getTimeString(metadata.getStartTime() / 100.0);
-				ret[i][1] = "" + metadata.getDescription();
-			}
-			return ret;
-		}
-		return null;
-	}
-
-	public Image getColumnImage(Object element, int columnIndex) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public String getColumnText(Object element, int columnIndex) {
-		if (element instanceof String[]) {
-			return ((String[]) element)[columnIndex];
-		}
-		return "";
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataImpl.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataImpl.java
deleted file mode 100644
index 43b8135..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataImpl.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.audio.description.impl;
-
-import java.util.Locale;
-
-import org.eclipse.actf.ai.audio.description.IMetadata;
-
-public class MetadataImpl implements IMetadata {
-	private double scale = 1;
-
-	private String sTime;
-
-	private int type = MASK_SPEAK;
-
-	private int start;
-
-	private int originalTime;
-
-	private int duration;
-
-	private String description;
-
-	private int importance;
-
-	private String lang;
-
-	public MetadataImpl(String start, String duration, String desc,
-			String lang, String importance) {
-		setStart(start);
-		setDuration(duration);
-		setLang(lang);
-		setDescription(desc);
-		setImportance(importance);
-
-	}
-
-	private void setStart(String start) {
-		this.start = string2time(start);
-		setStringTime();
-	}
-
-	private void setDuration(String duration) {
-		this.duration = string2time(duration);
-	}
-
-	private void setLang(String lang) {
-		this.lang = (new Locale(lang)).getLanguage();
-	}
-
-	private void setDescription(String desc) {
-		this.description = desc;
-	}
-
-	private void setImportance(String importance) {
-		importance = importance.toLowerCase();
-		if (importance.equals("low")) {
-			this.importance = IMPORTANCE_LOW;
-		} else if (importance.equals("middle")) {
-			this.importance = IMPORTANCE_MIDDLE;
-		} else if (importance.equals("high")) {
-			this.importance = IMPORTANCE_HIGH;
-		}
-	}
-
-	private int string2time(String str) {
-		int time = 0;
-		try {
-			String[] part = str.split(":");
-			int[] r = new int[] { 1, 1000, 60000, 3600000 };
-
-			time = 0;
-			for (int i = part.length - 1, j = 0; i >= 0; i--, j++) {
-				int temp = Integer.parseInt(part[i]);
-				time += temp * r[j];
-			}
-			time /= 10;
-		} catch (Exception e) {
-			e.printStackTrace();
-			time = 0;
-		}
-		return time;
-	}
-
-	private void setStringTime() {
-		int temp = getStartTime();
-		int mm = 0;
-		int s = 0;
-		int m = 0;
-		int h = 0;
-		mm = temp % 100;
-		temp -= mm;
-		temp /= 100;
-		s = temp % 60;
-		temp -= s;
-		temp /= 60;
-		m = temp % 60;
-		temp -= m;
-		temp /= 60;
-		h = temp;
-
-		StringBuffer sb = new StringBuffer();
-		if (h != 0) {
-			sb.append(h + "h");
-		}
-		sb.append((m < 10 ? "0" : "") + m + "m");
-		sb.append((s < 10 ? "0" : "") + s + "s");
-		sb.append((mm < 10 ? "0" : "") + mm);
-
-		sTime = sb.toString();
-	}
-
-	public void setScale(double scale) {
-		this.scale = scale;
-	}
-
-	public String getDescription() {
-		return description;
-	}
-
-	public int getStartTime() {
-		int temp = start;
-		if (temp < 0) {
-			temp = 0;
-		}
-		return (int) (temp * scale);
-	}
-
-	public int getType() {
-		return type;
-	}
-
-	@Override
-	public String toString() {
-		return start + " (" + duration + ") " + description + ", " + importance;
-	}
-
-	public String getStringTime() {
-		return sTime;
-	}
-
-	public void refresh() {
-		start = originalTime;
-		setStringTime();
-	}
-
-	public int getDuration() {
-		return duration;
-	}
-
-	public String getLang() {
-		return lang;
-	}
-
-	public int getImportance() {
-		return importance;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataManager.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataManager.java
deleted file mode 100644
index a6f5753..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataManager.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.impl;
-
-import org.eclipse.actf.ai.audio.description.IMetadata;
-import org.eclipse.actf.ai.audio.description.IMetadataProvider;
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.navigator.IMediaControl.IHandle;
-
-public class MetadataManager {
-
-	private IMetadataProvider metadataProvider;
-
-	private int index;
-
-	private int oldIndex;
-
-	private int forceFlag = IMetadata.MASK_NONE;
-
-	private IHandle handle;
-
-	private IVideoControl video;
-
-	@SuppressWarnings("unused")
-	private ISoundControl sound;
-
-	private boolean stopFlag = false;
-
-	public void setForceFlag(int flag) {
-		forceFlag = flag;
-	}
-
-	public MetadataManager(IHandle handle, IMetadataProvider metadataProvider) {
-		this.handle = handle;
-		this.video = handle.getVideoControl();
-		this.sound = handle.getSoundControl();
-
-		this.metadataProvider = metadataProvider;
-		index = oldIndex = -1;
-	}
-
-	private boolean pauseBeforeFlag = false;
-
-	private boolean speakFlag = false;
-
-	private boolean pauseAfterFlag = false;
-
-	public void process(double time) {
-		if (stopFlag)
-			return;
-
-		DescriptionPlugin.getDefault().getDescriptionView().setTime(time);
-
-		if (metadataProvider == null)
-			return;
-		index = metadataProvider.getIndex((int) (time * 100));
-		// System.out.println(time+",
-		// "+metadataProvider.getItem(index).getTime());
-
-		if (oldIndex != index && oldIndex < index) {
-			int type = metadataProvider.getItem(index).getType();
-
-			pauseBeforeFlag = isIt(type | forceFlag,
-					IMetadata.MASK_PAUSE_BEFORE);
-			speakFlag = isIt(type | forceFlag, IMetadata.MASK_SPEAK);
-			pauseAfterFlag = isIt(type | forceFlag, IMetadata.MASK_PAUSE_AFTER);
-		}
-
-		if (pauseBeforeFlag) {
-			pauseBeforeFlag = false;
-			processPause();
-		}
-		if (speakFlag) {
-			speakFlag = false;
-			processSpeak();
-		}
-		if (pauseAfterFlag) {
-			pauseAfterFlag = false;
-			processPlay();
-		}
-
-		oldIndex = index;
-	}
-
-	private boolean isIt(int type, int pause) {
-		return (type & pause) == pause;
-	}
-
-	private void processPause() {
-		if (DescriptionPlugin.getDefault().getEnable())
-			video.pauseMedia();
-	}
-
-	private void processPlay() {
-		if (DescriptionPlugin.getDefault().getEnable())
-			video.playMedia();
-	}
-
-	private void processSpeak() {
-		if (DescriptionPlugin.getDefault().getEnable()) {
-
-			/*
-			 * int[] volumes = null; volumes = sound.getVolumes(); int[]
-			 * volumes2 = new int[volumes.length]; for(int i=0; i<volumes2.length;
-			 * i++) volumes2[i] = 200; sound.setVolumes(volumes2);
-			 */
-
-			String desc = metadataProvider.getItem(index).getDescription();
-			say(desc);
-		}
-	}
-
-	public void say(String str) {
-		// System.out.println(str);
-		DescriptionPlugin plugin = DescriptionPlugin.getDefault();
-
-		if (plugin.canSpeak()) {
-			plugin.speak(str);
-		} else {
-			handle.getVoice().speak(str, true);
-		}
-	}
-
-	public void stop() {
-		stopFlag = true;
-	}
-
-	public void start() {
-		stopFlag = false;
-		DescriptionPlugin.getDefault().getDescriptionView().setInput(
-				metadataProvider);
-	}
-
-	public boolean hasMetadata() {
-		if (metadataProvider == null)
-			return false;
-		return metadataProvider.hasMetadata();
-	}
-
-	public Object getMetadataProvider() {
-		return metadataProvider;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataProviderImpl.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataProviderImpl.java
deleted file mode 100644
index 27f70fd..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/impl/MetadataProviderImpl.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.audio.description.impl;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Set;
-import java.util.Stack;
-
-import org.eclipse.actf.ai.audio.description.IMetadata;
-import org.eclipse.actf.ai.audio.description.IMetadataProvider;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-public class MetadataProviderImpl implements IMetadataProvider {
-
-	private static class Key {
-		public String id;
-
-		public String lang;
-
-		public Key(String id, String lang) {
-			this.id = id;
-			if (lang == null || lang.length() == 0) {
-				this.lang = "";
-			} else {
-				this.lang = (new Locale(lang)).getLanguage();
-			}
-		}
-
-		@Override
-		public int hashCode() {
-			return toString().hashCode();
-		}
-
-		@Override
-		public boolean equals(Object o) {
-			return toString().equals(o.toString());
-		}
-
-		@Override
-		public String toString() {
-			return id + lang;
-		}
-	}
-
-	private HashMap<Key, ArrayList<IMetadata>> metadataList = new HashMap<Key, ArrayList<IMetadata>>();
-
-	private ArrayList<IMetadata> metadata;
-
-	private ArrayList<IXMLInfo> entries;
-
-	private Locale locale = null;
-
-	public MetadataProviderImpl(ArrayList<IXMLInfo> entries) {
-		this.entries = entries;
-	}
-
-	public void reload() {
-		metadataList.clear();
-		readFile();
-	}
-
-	private Stack<String> langStack = new Stack<String>();
-
-	private class BaseHandler extends DefaultHandler {
-		private BaseHandler back;
-
-		private IXMLInfo entry;
-
-		public BaseHandler(BaseHandler back, IXMLInfo entry) {
-			this.back = back;
-			this.entry = entry;
-		}
-
-		public BaseHandler(BaseHandler back) {
-			this.back = back;
-			this.entry = back.getEntry();
-		}
-
-		@Override
-		public void startElement(String uri, String localName, String qName,
-				Attributes attributes) throws SAXException {
-			if (attributes.getValue("xml:lang") != null) {
-				langStack.push(attributes.getValue("xml:lang"));
-			} else {
-				langStack.push(langStack.peek() + "");
-			}
-		}
-
-		@Override
-		public void endElement(String uri, String localName, String qName)
-				throws SAXException {
-			langStack.pop();
-			getEntry().setContentHandler(back);
-		}
-
-		public IXMLInfo getEntry() {
-			return entry;
-		}
-	}
-
-	private class AllHandler extends BaseHandler {
-		private boolean altFlag;
-
-		public AllHandler(IXMLInfo entry) {
-			super(null, entry);
-			langStack.clear();
-			langStack.push("");
-		}
-
-		@Override
-		public void startElement(String uri, String localName, String qName,
-				Attributes attributes) throws SAXException {
-			super.startElement(uri, localName, qName, attributes);
-
-			if (altFlag) {
-				if ("item".equals(localName)) {
-					String importance = attributes.getValue("importance");
-					if (importance == null || importance.length() == 0) {
-						importance = "middle";
-					}
-					getEntry().setContentHandler(
-							new ItemHandler(this, importance));
-				}
-			} else {
-				if ("alternative".equals(localName)) {
-					String type = attributes.getValue("type");
-					if (type != null && type.equals("audio-description")) {
-						altFlag = true;
-					}
-				}
-			}
-		}
-
-		@Override
-		public void endElement(String uri, String localName, String qName)
-				throws SAXException {
-			// super.endElement(uri, localName, qName);
-		}
-	}
-
-	private class ItemHandler extends BaseHandler {
-		private boolean descFlag = false;
-
-		private boolean startFlag = false;
-
-		private boolean durationFlag = false;
-
-		private StringBuffer buf = new StringBuffer();
-
-		private String start;
-
-		private String duration;
-
-		private ArrayList<String> desc = new ArrayList<String>();
-
-		private ArrayList<String> lang = new ArrayList<String>();
-
-		private String importance;
-
-		public ItemHandler(BaseHandler back, String importance) {
-			super(back);
-			this.importance = importance;
-		}
-
-		@Override
-		public void startElement(String uri, String localName, String qName,
-				Attributes attributes) throws SAXException {
-			super.startElement(uri, localName, qName, attributes);
-
-			if ("start".equals(localName)) {
-				if (attributes.getValue("type").equals("relTime")) {
-					startFlag = true;
-				}
-			} else if ("duration".equals(localName)) {
-				durationFlag = true;
-			} else if ("description".equals(localName)) {
-				descFlag = true;
-			}
-
-		}
-
-		@Override
-		public void characters(char[] ch, int start, int length)
-				throws SAXException {
-			if (startFlag) {
-				buf.append(ch, start, length);
-			} else if (durationFlag) {
-				buf.append(ch, start, length);
-			} else if (descFlag) {
-				buf.append(ch, start, length);
-			}
-		}
-
-		@Override
-		public void endElement(String uri, String localName, String qName)
-				throws SAXException {
-			if ("start".equals(localName)) {
-				startFlag = false;
-				start = buf.toString();
-				buf.delete(0, buf.length());
-			} else if ("duration".equals(localName)) {
-				durationFlag = false;
-				duration = buf.toString();
-				buf.delete(0, buf.length());
-			} else if ("description".equals(localName)) {
-				descFlag = false;
-				desc.add(buf.toString());
-				lang.add(langStack.peek());
-				buf.delete(0, buf.length());
-			} else if ("item".equals(localName)) {
-
-				for (int i = 0; i < desc.size(); i++) {
-					MetadataImpl mi = new MetadataImpl(start, duration, desc
-							.get(i), lang.get(i), importance);
-					// System.out.println(start + ", " + duration + ", " +
-					// desc.get(i) + ", " + lang.get(i));
-
-					Key key = new Key(getEntry().getDocumentation(), lang
-							.get(i));
-
-					ArrayList<IMetadata> list = metadataList.get(key);
-
-					if (list == null) {
-						list = new ArrayList<IMetadata>();
-						metadataList.put(key, list);
-					}
-					list.add(mi);
-				}
-				super.endElement(uri, localName, qName);
-			}
-		}
-	}
-
-	private void readFile() {
-		for (int i = 0; i < entries.size(); i++) {
-			IXMLInfo entry = entries.get(i);
-
-			AllHandler ah = new AllHandler(entry);
-			entry.setContentHandler(ah);
-			try {
-				entry.startSAX();
-			} catch (XMLStoreException e) {
-				e.printStackTrace();
-			} catch (SAXException e) {
-				e.printStackTrace();
-			}
-		}
-	}
-
-	public void setLocale(Locale locale) {
-		this.locale = locale;
-	}
-
-	ArrayList<ArrayList<IMetadata>> alternatives;
-
-	public void prepareMetadata() {
-		prepareMetadata(this.locale);
-	}
-
-	public void prepareMetadata(Locale locale) {
-		Set<Key> keys = metadataList.keySet();
-		alternatives = new ArrayList<ArrayList<IMetadata>>();
-		for (Iterator<Key> i = keys.iterator(); i.hasNext();) {
-			Key key = i.next();
-			if (key.lang.equals(locale.getLanguage())) {
-				alternatives.add(metadataList.get(key));
-			}
-		}
-		if (alternatives.size() > 0)
-			setMetadata(alternatives.get(0));
-	}
-
-	public void setMetadata(ArrayList<IMetadata> metadata) {
-		this.metadata = metadata;
-	}
-
-	public IMetadata getItem(int index) {
-		if (0 <= index && index < metadata.size())
-			return metadata.get(index);
-		return null;
-	}
-
-	public ArrayList<IMetadata> getAllItems() {
-		return metadata;
-	}
-
-	public int getIndex(int position) {
-		if (metadata == null)
-			return 0;
-
-		int ret = 0;
-		for (int i = 0; i < metadata.size(); i++) {
-			if (metadata.get(i).getStartTime() >= position) {
-				ret = i - 1;
-				return ret;
-			}
-		}
-		return metadata.size() - 1;
-	}
-
-	public int getSize() {
-		if (metadata == null)
-			return 0;
-		return metadata.size();
-	}
-
-	public boolean hasMetadata() {
-		return metadata.size() > 0;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferenceInitializer.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferenceInitializer.java
deleted file mode 100644
index fe891cd..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferenceInitializer.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.audio.description.preferences;
-
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.tts.TTSRegistry;
-import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-public class ADPreferenceInitializer extends AbstractPreferenceInitializer {
-
-	@Override
-	public void initializeDefaultPreferences() {
-		IPreferenceStore store = DescriptionPlugin.getDefault()
-				.getPreferenceStore();
-		store.setDefault(DescriptionPlugin.PREF_ENGINE, TTSRegistry
-				.getDefaultEngine());
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferencePage.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferencePage.java
deleted file mode 100644
index 94b5987..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/preferences/ADPreferencePage.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.preferences;
-
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.internal.audio.description.Messages;
-import org.eclipse.actf.ai.tts.TTSRegistry;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.jface.preference.RadioGroupFieldEditor;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-public class ADPreferencePage extends FieldEditorPreferencePage implements
-		IWorkbenchPreferencePage {
-
-	public ADPreferencePage() {
-		super(GRID);
-		setPreferenceStore(DescriptionPlugin.getDefault().getPreferenceStore());
-		setDescription(Messages.getString("AudioDescription.preference.title")); //$NON-NLS-1$
-	}
-
-	@Override
-	public void createFieldEditors() {
-		RadioGroupFieldEditor rgfe;
-		String[][] labelAndIds = TTSRegistry.getLabelAndIds();
-		addField(rgfe = new RadioGroupFieldEditor(
-				DescriptionPlugin.PREF_ENGINE,
-				Messages.getString("AudioDescription.voice.engine"), 1, labelAndIds, //$NON-NLS-1$
-				getFieldEditorParent()));
-		Composite c = rgfe.getRadioBoxControl(getFieldEditorParent());
-		for (int i = 0; i < labelAndIds.length; i++) {
-			if (labelAndIds[i][1].length() == 0) {
-				c.getChildren()[i].setEnabled(false);
-			}
-		}
-	}
-
-	public void init(IWorkbench workbench) {
-
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/util/TimeFormatUtil.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/util/TimeFormatUtil.java
deleted file mode 100644
index 91e7f3f..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/util/TimeFormatUtil.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.util;
-
-public class TimeFormatUtil {
-
-	public static String getTimeString(double time) {
-		int mi, se, ms;
-		int intTime = (int) (time * 100);
-
-		ms = intTime % 100;
-		intTime /= 100;
-		se = intTime % 60;
-		intTime /= 60;
-		mi = intTime;
-
-		return (mi < 10 ? "0" : "") + mi + ":" + (se < 10 ? "0" : "") + se
-				+ "." + (ms < 10 ? "0" : "") + ms;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/DescriptionView.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/DescriptionView.java
deleted file mode 100644
index 9055acd..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/DescriptionView.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.views;
-
-import org.eclipse.actf.ai.audio.description.impl.MetadataContentProvider;
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.internal.audio.description.Messages;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.ViewPart;
-
-public class DescriptionView extends ViewPart {
-	public static final String ID = "org.eclipse.actf.ai.audio.description.views.DescriptionView";
-
-	private VideoStatusViewer status;
-
-	private TableViewer tableViewer;
-
-	@Override
-	public void createPartControl(Composite parent) {
-		initView(parent);
-		DescriptionPlugin.getDefault().setDescriptionView(this);
-	}
-
-	private void initView(Composite parent) {
-		GridLayout gLayout = new GridLayout(1, true);
-		gLayout.marginWidth = 0;
-		gLayout.marginHeight = 0;
-		parent.setLayout(gLayout);
-
-		status = new VideoStatusViewer(parent);
-
-		tableViewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
-				| SWT.V_SCROLL | SWT.BORDER);
-		MetadataContentProvider provider = new MetadataContentProvider();
-		tableViewer.setContentProvider(provider);
-		tableViewer.setLabelProvider(provider);
-
-		Table table = tableViewer.getTable();
-		table.setHeaderVisible(true);
-		table.setLinesVisible(true);
-		TableColumn tableColumnProperty = new TableColumn(table, SWT.LEFT);
-		tableColumnProperty.setText(Messages
-				.getString("AudioDescription.view.time"));
-		tableColumnProperty.setWidth(70);
-		TableColumn tableColumnValue = new TableColumn(table, SWT.LEFT);
-		tableColumnValue.setText(Messages
-				.getString("AudioDescription.view.desc"));
-		tableColumnValue.setWidth(130);
-
-		GridData data = new GridData(GridData.FILL_BOTH);
-		table.setLayoutData(data);
-	}
-
-	@Override
-	public void setFocus() {
-
-	}
-
-	public void setTime(double time) {
-		status.setTime(time);
-	}
-
-	public void setInput(Object input) {
-		if (tableViewer.getTable().isDisposed())
-			return;
-		tableViewer.setInput(input);
-	}
-
-	public void setIndex(int index) {
-		if (tableViewer.getTable().isDisposed())
-			return;
-		tableViewer.getTable().select(index);
-	}
-
-	public void setEnable(boolean b) {
-		status.setEnable(b);
-	}
-
-	public boolean toggleViewShowing() {
-		IWorkbenchPage page = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow().getActivePage();
-		IViewPart part = page.findView(ID);
-
-		if (part != null) {
-			page.hideView(part);
-			return false;
-		} else {
-			try {
-				page.showView(ID);
-				return true;
-			} catch (PartInitException e) {
-				e.printStackTrace();
-			}
-		}
-		return false;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/VideoStatusViewer.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/VideoStatusViewer.java
deleted file mode 100644
index bf3b71f..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/audio/description/views/VideoStatusViewer.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.description.views;
-
-import org.eclipse.actf.ai.audio.description.util.TimeFormatUtil;
-import org.eclipse.actf.ai.internal.audio.description.DescriptionPlugin;
-import org.eclipse.actf.ai.internal.audio.description.Messages;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-
-public class VideoStatusViewer {
-
-	private Composite parent;
-	private Label status;
-	private boolean enable = false;
-	private String timeText;
-
-	public VideoStatusViewer(Composite parent) {
-		this.parent = parent;
-		initialize();
-	}
-
-	public void initialize() {
-		status = new Label(parent, SWT.NONE);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		status.setLayoutData(data);
-		status.setAlignment(SWT.RIGHT);
-		setTime(0);
-		enable = DescriptionPlugin.getDefault().getEnable();
-	}
-
-	public void setTime(double time) {
-		timeText = TimeFormatUtil.getTimeString(time);
-		refreshText();
-	}
-
-	private void refreshText() {
-		if (status.isDisposed())
-			return;
-		if (enable) {
-			status.setText(Messages.getString("AudioDescription.view.enable")
-					+ " " + timeText);
-		} else {
-			status.setText(Messages
-					.getString("AudioDescription.view.notEnable")
-					+ " " + timeText);
-		}
-	}
-
-	public void setEnable(boolean b) {
-		enable = b;
-		refreshText();
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/DescriptionPlugin.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/DescriptionPlugin.java
deleted file mode 100644
index 937d4c2..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/DescriptionPlugin.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.internal.audio.description;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Locale;
-
-import org.eclipse.actf.ai.audio.description.IMetadataProvider;
-import org.eclipse.actf.ai.audio.description.impl.MetadataManager;
-import org.eclipse.actf.ai.audio.description.impl.MetadataProviderImpl;
-import org.eclipse.actf.ai.audio.description.views.DescriptionView;
-import org.eclipse.actf.ai.navigator.IMediaControl;
-import org.eclipse.actf.ai.tts.AbstractUIPluginForTTS;
-import org.eclipse.actf.ai.tts.ITTSEngine;
-import org.eclipse.actf.ai.tts.TTSRegistry;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-import org.eclipse.actf.ai.xmlstore.IXMLStoreService;
-import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle. And this provides
- * information of audio description and TTS function to speak the description.
- */
-public class DescriptionPlugin extends AbstractUIPluginForTTS implements
-		IPropertyChangeListener {
-
-	/**
-	 * The plug-in ID.
-	 */
-	public static final String PLUGIN_ID = "org.eclipse.actf.ai.audio.description";
-
-	/**
-	 * The preferences ID of TTS engine for audio description.
-	 */
-	public static final String PREF_ENGINE = "AudioDescriptionTTSEngine";
-
-	/*
-	 * The shared instance.
-	 */
-	private static DescriptionPlugin plugin;
-
-	/*
-	 * The switch weather enable or disable audio description speaking.
-	 */
-	private boolean enable = false;
-
-	/*
-	 * The current active audio description manager. If the target page has no
-	 * audio description then this should be null.
-	 */
-	private IMetadataProvider activeProvider;
-
-	/*
-	 * The instance of TTS engine for audio description.
-	 */
-	private ITTSEngine engine;
-
-	/**
-	 * The constructor
-	 */
-	public DescriptionPlugin() {
-		plugin = this;
-	}
-
-	/**
-	 * @param url
-	 *            The URL string which determines audio description files in the
-	 *            XMLStore
-	 * @see org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil#getXMLStoreService
-	 * @return metadata information
-	 */
-	public IMetadataProvider getMetadata(String url) {
-		IXMLStoreService service = XMLStoreServiceUtil
-				.getXMLStoreService();
-		IXMLStore store = service.getRootStore();
-		IXMLSelector selector1 = service.getSelectorWithDocElem("puits",
-				"urn:puits");
-		IXMLSelector selector2 = service.getSelectorWithURI(url);
-		store = store.specify(selector1);
-		store = store.specify(selector2);
-
-		ArrayList<IXMLInfo> list = new ArrayList<IXMLInfo>();
-		for (Iterator<IXMLInfo> i = store.getInfoIterator(); i.hasNext();) {
-			list.add(i.next());
-		}
-		if (list.size() == 0)
-			return null;
-		MetadataProviderImpl provider = new MetadataProviderImpl(list);
-		if (provider != null) {
-			provider.reload();
-			provider.setLocale(Locale.getDefault());
-			provider.prepareMetadata();
-		}
-		return provider;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		initialize();
-	}
-
-	/**
-	 * The initializer of the plug-in.
-	 */
-	private void initialize() {
-		engine = newTTSEngine();
-		DescriptionPlugin.getDefault().addPropertyChangeListener(this);
-	}
-
-	/**
-	 * @return TTS engine using the preference value
-	 * @see #engine
-	 */
-	private ITTSEngine newTTSEngine() {
-		ITTSEngine engine;
-		String e = DescriptionPlugin.getDefault().getPreferenceStore()
-				.getString(DescriptionPlugin.PREF_ENGINE);
-
-		// TODO
-		if (e.equals("org.eclipse.actf.ai.screenreader.jaws"))
-			return null;
-		engine = TTSRegistry.createTTSEngine(e);
-		if (engine != null)
-			engine.setSpeed(50);
-		return engine;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.voice.internal.AbstractPreferenceUIPlugin#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-	 */
-	@Override
-	public void propertyChange(PropertyChangeEvent event) {
-		if (DescriptionPlugin.PREF_ENGINE.equals(event.getProperty())) {
-			if (null != engine) {
-				engine.stop();
-				engine.dispose();
-				engine = newTTSEngine();
-			}
-		}
-	}
-
-	/**
-	 * @return instance of TTS engine.
-	 */
-	public ITTSEngine getTTSEngine() {
-		return engine;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 * 
-	 * @return the shared instance
-	 */
-	public static DescriptionPlugin getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * The instance of the view.
-	 */
-	private DescriptionView view;
-
-	/**
-	 * @param view
-	 *            Keep the instance of the view to share the instance.
-	 */
-	public void setDescriptionView(DescriptionView view) {
-		this.view = view;
-	}
-
-	/**
-	 * @return shared instance of the view.
-	 */
-	public DescriptionView getDescriptionView() {
-		return view;
-	}
-
-	/**
-	 * @param flag
-	 *            The switch to enable/disable
-	 * @return The status of the audio description plug-in
-	 * @see IMediaControl.STATUS_NOT_AVAILABLE
-	 * @see IMediaControl.STATUS_ON
-	 * @see IMediaControl.STATUS_OFF
-	 */
-	public int setEnable(boolean flag) {
-		if (!isAvailable()) {
-			enable = false;
-			return IMediaControl.STATUS_NOT_AVAILABLE;
-		}
-
-		enable = flag;
-		getDescriptionView().setEnable(enable);
-		if (enable) {
-			return IMediaControl.STATUS_ON;
-		} else {
-			return IMediaControl.STATUS_OFF;
-		}
-	}
-
-	/**
-	 * @return The availability of the plug-in. If there is no active metadata
-	 *         manager then this returns false.
-	 * @see #setActiveMetadataProvider(MetadataManager)
-	 */
-	public boolean isAvailable() {
-		if (activeProvider == null)
-			return false;
-		return activeProvider.hasMetadata();
-	}
-
-	/**
-	 * @return The availability of TTS engine.
-	 */
-	public boolean canSpeak() {
-		return engine != null;
-	}
-
-	/**
-	 * @param str
-	 *            The string to be spoken.
-	 */
-	public void speak(String str) {
-		if (engine != null)
-			engine.speak(str, ITTSEngine.TTSFLAG_FLUSH, -1);
-	}
-
-	/**
-	 * Toggle the enable and disable of the plug-in.
-	 * 
-	 * @return The status of the plug-in.
-	 * @see #setEnable(boolean)
-	 */
-	public int toggleEnable() {
-		return setEnable(!getEnable());
-	}
-
-	/**
-	 * @return The value of enable/disable
-	 */
-	public boolean getEnable() {
-		return enable;
-	}
-
-	/**
-	 * @param manager
-	 *            The active metadata provider to know the metadata avilability
-	 */
-	public void setActiveMetadataProvider(IMetadataProvider provider) {
-		this.activeProvider = provider;
-	}
-
-	/**
-	 * @param key
-	 *            The key for the resource string.
-	 * @return The resource string.
-	 */
-	public static String getString(String key) {
-		return Platform.getResourceString(getDefault().getBundle(), key);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/Messages.java b/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/Messages.java
deleted file mode 100644
index b87f690..0000000
--- a/plugins/org.eclipse.actf.ai.audio.description/src/org/eclipse/actf/ai/internal/audio/description/Messages.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Takashi ITOH - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.internal.audio.description;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-/**
- * This provides the resource string.
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "messages"; //$NON-NLS-1$
-
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
-
-	private Messages() {
-	}
-
-	/**
-	 * @param key
-	 *            the name of the resource string.
-	 * @return the string specified the key.
-	 */
-	public static String getString(String key) {
-		// TODO Auto-generated method stub
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/.classpath b/plugins/org.eclipse.actf.ai.audio.io/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.audio.io/.project b/plugins/org.eclipse.actf.ai.audio.io/.project
deleted file mode 100644
index cc0b860..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.audio.io</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.audio.io/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.audio.io/META-INF/MANIFEST.MF
deleted file mode 100644
index c32af6c..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Audio IO Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.audio.io
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.audio.io.impl.Activator
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.actf.ai.audio.io
diff --git a/plugins/org.eclipse.actf.ai.audio.io/about.html b/plugins/org.eclipse.actf.ai.audio.io/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.audio.io/build.properties b/plugins/org.eclipse.actf.ai.audio.io/build.properties
deleted file mode 100644
index e1942be..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioFactory.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioFactory.java
deleted file mode 100644
index a336e2d..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioFactory.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-import java.net.URL;
-
-import javax.sound.sampled.Mixer;
-
-import org.eclipse.actf.ai.audio.io.impl.AudioFileReader;
-import org.eclipse.actf.ai.audio.io.impl.AudioPipe;
-import org.eclipse.actf.ai.audio.io.impl.LoopedAudioPipe;
-import org.eclipse.actf.ai.audio.io.impl.PlaybackDevice;
-import org.eclipse.actf.ai.audio.io.impl.RecordDevice;
-
-/**
- * This audio IO utilities enable to play audio stream in form of pipe-like
- * interface. The following is a sample code to play audio file for a second.
- * Firstly, a reader and a writer are created then these are combined with a
- * pipe. Secondly, the pipe is initialized to play then the pipe runs for a
- * second.
- * 
- * <pre>
- * IAudioReader reader = AudioFactory.createAudioReader(&quot;*****.wav&quot;);
- * IAudioWriter writer = AudioFactory.createDefaultWriter();
- * IAudioPipe pipe = AudioFactory.createLoopedAudioPipe(reader, writer);
- * // buffer size for reading (in milli seconds)
- * pipe.setBufferSize(100);
- * 
- * // interval time to try writing (in milli seconds)
- * pipe.setInterval(1);
- * 
- * // Create new thread and start playing. 
- * // The pipe automatically opens reader and writer.
- * pipe.prepare();
- * 
- * pipe.start();
- * 
- * try {
- * 	Thread.sleep(1000);
- * } catch (InterruptedException e) {
- * 	e.printStackTrace();
- * }
- * 
- * pipe.stop();
- * </pre>
- */
-public class AudioFactory {
-	/**
-	 * This method creates an IAudioReader which provides an audio stream from
-	 * the file. In the default Java environment this can read files in format
-	 * of WAVE and AIFF. You can extends the supported formats by Java sound
-	 * SPI.
-	 * 
-	 * @param file
-	 *            the audio file to be read.
-	 * @return new instance of IAudioReaer.
-	 */
-	public static IAudioReader createAudioReader(String file) {
-		return new AudioFileReader(file);
-	}
-
-	/**
-	 * This method creates an IAudioReader which provides an audio stream from
-	 * the URL.
-	 * 
-	 * @param url
-	 *            the audio file to be read.
-	 * @return new instance of IAudioReader.
-	 * @see #createAudioReader(String)
-	 */
-	public static IAudioReader createAudioReader(URL url) {
-		return new AudioFileReader(url);
-	}
-
-	/**
-	 * This method creates an IAudioWriter which manages the default system play
-	 * back device.
-	 * 
-	 * @return new instance of IAudioWriter
-	 */
-	public static IAudioWriter createDefaultWriter() {
-		return new PlaybackDevice();
-	}
-
-	/**
-	 * This methods creates an IAudioPipe which manages the audio stream between
-	 * <i>reader</i> and <i>writer</i>.
-	 * 
-	 * @param reader
-	 *            the IAudioReader provides an audio stream.
-	 * @param writer
-	 *            the IAudioWriter process the audio stream.
-	 * @return new instance of IAudioPipe.
-	 */
-	public static IAudioPipe createAudioPipe(IAudioReader reader,
-			IAudioWriter writer) {
-		return new AudioPipe(reader, writer);
-	}
-
-	/**
-	 * This method creates an IAudioPipe which manages the audio stream between
-	 * <i>reader</i> and <i>writer</i>. The pipe provides a repeating audio
-	 * stream, so it has no ending.
-	 * 
-	 * @param reader
-	 *            the IAudioReader provides an audio stream.
-	 * @param writer
-	 *            the IAudioWriter process the audio stream.
-	 * @return new instance of IAudioPipe.
-	 */
-	public static IAudioPipe createLoopedAudioPipe(IAudioReader reader,
-			IAudioWriter writer) {
-		return new LoopedAudioPipe(reader, writer);
-	}
-
-	/**
-	 * This method creates an IAudioWriter which manages the play back device
-	 * specified by the <i>mixer</i>.
-	 * 
-	 * @param mixer
-	 *            the Mixer to be used for audio play back.
-	 * @return new instance of IAudioWriter
-	 * @see Mixer
-	 */
-	public static IAudioWriter createAudioWriter(Mixer mixer) {
-		return new PlaybackDevice(mixer);
-	}
-
-	/**
-	 * This method creates an IAudioReader which provides an audio stream from
-	 * the specified recording device.
-	 * 
-	 * @param mixer
-	 *            the Mixer to be used for audio recording.
-	 * @param recordingSmapleRate
-	 *            the recording sampling rate. It might be 8000, 16000, or so
-	 *            on.
-	 * @param recordingChannels
-	 *            the number of recording channel. It might be 1 or 2.
-	 * @return new instance of IAudioReader.
-	 */
-	public static IAudioReader createAudioReader(Mixer mixer,
-			int recordingSmapleRate, int recordingChannels) {
-		return new RecordDevice(mixer, recordingSmapleRate, recordingChannels);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioIOException.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioIOException.java
deleted file mode 100644
index a36bce4..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioIOException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-/**
- * AudioIOException is thrown when some exception occurs in this utilities.
- */
-public class AudioIOException extends Exception {
-
-	/**
-	 * @param string
-	 *            the further message of the exception.
-	 * @param cause
-	 * 			  the reason of the exception.
-	 */
-	public AudioIOException(String string, Throwable cause) {
-		super(string, cause);
-	}
-
-	private static final long serialVersionUID = 1L;
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioPipeListener.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioPipeListener.java
deleted file mode 100644
index e47f960..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioPipeListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-/**
- * The listener interface for receiving pipe events.
- */
-public interface AudioPipeListener {
-	/**
-	 * Invoke when the audio stream is finished.
-	 * 
-	 * @param pipe
-	 *            the IAudioPipe instance which raises this event.
-	 */
-	void finished(IAudioPipe pipe);
-
-	/**
-	 * Invoke when the play back is stopped.
-	 * 
-	 * @param pipe
-	 *            the IAudioPipe instance which raises this event.
-	 */
-	void stopped(IAudioPipe pipe);
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioUtil.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioUtil.java
deleted file mode 100644
index 28d537c..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/AudioUtil.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-import java.nio.ByteOrder;
-
-import javax.sound.sampled.AudioFormat;
-
-/**
- * This utility provides some methods to manage AudioFormat in form of human
- * readable.
- */
-public class AudioUtil {
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the total number of bytes per second in all channels.
-	 */
-	public static int getBytesPerSecondLR(AudioFormat format) {
-		return (int) getBytesPerSecond(format) * format.getChannels();
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the number of bytes per second in one channel.
-	 */
-	public static int getBytesPerSecond(AudioFormat format) {
-		return (int) getBitsPerSecond(format) / 8;
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the number of bits per second in one channel.
-	 */
-	public static int getBitsPerSecond(AudioFormat format) {
-		return (int) format.getSampleRate() * format.getSampleSizeInBits();
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the number of samples per second in one channel.
-	 */
-	public static int getSamplesPerSecond(AudioFormat format) {
-		return (int) format.getSampleRate();
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the total number of samples per second in all channels.
-	 */
-	public static int getSamplesPerSecondLR(AudioFormat format) {
-		return (int) getSamplesPerSecond(format) * format.getChannels();
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the number of bytes per sample in one channel.
-	 */
-	public static int getBytesPerSample(AudioFormat format) {
-		return format.getSampleSizeInBits() / 8;
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the total number of bytes per sample in all channels.
-	 */
-	public static int getBytesPerSampleLR(AudioFormat format) {
-		return getBytesPerSample(format) * format.getChannels();
-	}
-
-	/**
-	 * @param format
-	 *            the instance of AudioFormat to be used.
-	 * @return the ByteOrder of the format.
-	 */
-	public static ByteOrder getEndian(AudioFormat format) {
-		if (format.isBigEndian())
-			return ByteOrder.BIG_ENDIAN;
-		else
-			return ByteOrder.LITTLE_ENDIAN;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioPipe.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioPipe.java
deleted file mode 100644
index 485391a..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioPipe.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-/**
- * This interface provides for processing audio stream between a IAudioReader
- * and a IAudioWriter. The simplest implementation provides the function to
- * transfer a audio stream from the IAudioReader to the IAudioWriter. You can
- * creates IAudioPipe that have function to repeat or convert the audio stream.
- * 
- * The pipe should create a thread to manager the time line of the audio stream.
- */
-public interface IAudioPipe {
-	/**
-	 * @param listener
-	 *            the listener to be added.
-	 */
-	void addAudioPipeListener(AudioPipeListener listener);
-
-	/**
-	 * The pipe thread will be processed every <i>interval</i>. The interval
-	 * might be sufficiently-small than the buffer size of the pipe.
-	 * 
-	 * @param milliSeconds
-	 *            the interval time in milliseconds.
-	 * @see #setBufferSize(int)
-	 */
-	void setInterval(int milliSeconds);
-
-	/**
-	 * @param priority
-	 *            the priority of the pipe thread.
-	 * @see Thread#setPriority(int)
-	 */
-	void setPriority(int priority);
-
-	/**
-	 * The pipe will read buffer-size data from the audio stream of the
-	 * IAudioReader at one interval. If you want to stop the audio play back
-	 * immediately when you call {@link #stop()} then you have to set the buffer
-	 * size as small as possible. But this will be coin side of generating noise
-	 * because of the data missing for the play back device.
-	 * 
-	 * @param milliSeconds
-	 *            the length of the buffer size in milliSeconds.
-	 */
-	void setBufferSize(int milliSeconds);
-
-	/**
-	 * @return whether the pipe is running or not.
-	 */
-	boolean isActive();
-
-	/**
-	 * The pipe opens the IAudioReader and IAudioWriter. Firstly, the pipe gets
-	 * the format of the IAudioReader then the IAudioWriter is opened with the
-	 * format or converted format.
-	 */
-	void prepare();
-
-	/**
-	 * @param delay
-	 *            the delay time to start the pipe in millisecond.
-	 * @see #start()
-	 */
-	void start(int delay);
-
-	/**
-	 * The pipe starts to process the audio stream. This creates a thread.
-	 */
-	void start();
-
-	/**
-	 * The pipe will be stopped. The play back device will be stopped within the
-	 * buffer size. The thread will be terminated.
-	 * 
-	 * @see #setBufferSize(int)
-	 */
-	void stop();
-
-	/**
-	 * This function blocks until the pipe is finished. The pipe will be
-	 * finished when the IAudioReader is finished or {@link #stop()} is called.
-	 */
-	void join();
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioReader.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioReader.java
deleted file mode 100644
index ed42668..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioReader.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-import javax.sound.sampled.AudioFormat;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-
-/**
- * This interface provides for reading audio data stream. It will read the audio
- * data from file, URL, audio device, and so on.
- */
-public interface IAudioReader {
-
-	/**
-	 * @return the name of the reader.
-	 */
-	String getName();
-
-	/**
-	 * @return the audio format of the audio data.
-	 */
-	AudioFormat getAudioFormat();
-
-	/**
-	 * It returns true when the reader is opened, but an error occurs then
-	 * it returns false.
-	 * 
-	 * @return Whether the audio reader can read the data or not.
-	 */
-	boolean canRead();
-
-	/**
-	 * Open the audio stream.
-	 * 
-	 * @throws AudioIOException
-	 */
-	void open() throws AudioIOException;
-
-	/**
-	 * Close the audio stream.
-	 */
-	void close();
-
-	/**
-	 * This copies the audio stream from the source to the buffer. The reading
-	 * cursor will be increased. When the cursor is reached to the end, the
-	 * reader will be closed.
-	 * 
-	 * @param data
-	 *            the buffer to copy the audio data.
-	 * @param offset
-	 *            the offset of the buffer to copy.
-	 * @param length
-	 *            the length of the audio data to copy.
-	 * @return the number of the actual read.
-	 * @throws AudioIOException
-	 * @see #isClosed()
-	 */
-	int read(byte[] data, int offset, int length) throws AudioIOException;
-
-	/**
-	 * @return whether the reader is closed or not.
-	 */
-	boolean isClosed();
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioWriter.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioWriter.java
deleted file mode 100644
index 3c6e965..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/IAudioWriter.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io;
-
-import javax.sound.sampled.AudioFormat;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-
-/**
- * This interface provides for writing audio data stream. It will write the
- * audio data to file, audio device, another pipe, and so on.
- */
-public interface IAudioWriter {
-
-	/**
-	 * @return the name of the writer.
-	 */
-	String getName();
-
-	/**
-	 * This copies the audio stream from the buffer to the destination.
-	 * 
-	 * @param data
-	 *            the buffer to copy the audio data.
-	 * @param offset
-	 *            the offset of the buffer to copy.
-	 * @param length
-	 *            the length of the audio data to copy.
-	 * @return the number of the actual write.
-	 * @throws AudioIOException
-	 */
-	int write(byte[] data, int offset, int length) throws AudioIOException;
-
-	/**
-	 * @return whether the writer can write to the destination or not.
-	 */
-	boolean canWrite();
-
-	/**
-	 * The writer open the destination in specified format.
-	 * 
-	 * @param format
-	 *            the format to be opened.
-	 * @throws AudioIOException
-	 */
-	void open(AudioFormat format) throws AudioIOException;
-
-	/**
-	 * The writer close the destination.
-	 */
-	void close();
-
-	/**
-	 * @return whether the destination is closed or not.
-	 */
-	boolean isClosed();
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/Activator.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/Activator.java
deleted file mode 100644
index 8afc252..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/Activator.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.audio.io.impl;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.actf.ai.audio.io";
-
-	// The shared instance
-	private static Activator plugin;
-
-	/**
-	 * The constructor
-	 */
-	public Activator() {
-		plugin = this;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 * 
-	 * @return the shared instance
-	 */
-	public static Activator getDefault() {
-		return plugin;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioFileReader.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioFileReader.java
deleted file mode 100644
index 3ac5f14..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioFileReader.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io.impl;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.AudioInputStream;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.UnsupportedAudioFileException;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-import org.eclipse.actf.ai.audio.io.IAudioReader;
-
-public class AudioFileReader implements IAudioReader {
-
-	private File file;
-
-	private URL url;
-
-	private AudioFormat format;
-
-	private AudioInputStream stream;
-
-	private boolean opened = false;
-
-	private boolean closed = false;
-
-	public AudioFileReader(String fileName) {
-		setFile(fileName);
-	}
-
-	public AudioFileReader(URL url) {
-		setURL(url);
-	}
-
-	public String getName() {
-		if (file != null)
-			return "File \"" + file.getName() + "\"";
-		if (url != null)
-			return "URL \"" + url.getPath() + "\"";
-		return "";
-	}
-
-	private void setFile(String fileName) {
-		this.file = new File(fileName);
-	}
-
-	private void setURL(URL url) {
-		this.url = url;
-	}
-
-	public boolean canRead() {
-		try {
-			if (file != null)
-				AudioSystem.getAudioInputStream(file);
-			if (url != null)
-				AudioSystem.getAudioFileFormat(url);
-			return true;
-		} catch (UnsupportedAudioFileException e) {
-		} catch (IOException e) {
-		}
-		return false;
-	}
-
-	synchronized public void open() throws AudioIOException {
-		try {
-			if (file != null)
-				stream = AudioSystem.getAudioInputStream(file);
-			if (url != null)
-				stream = AudioSystem.getAudioInputStream(url);
-			
-			// AudioFormat baseFormat = stream.getFormat();
-			// 
-			// AudioFormat decodedFormat = new AudioFormat(baseFormat
-			// .getEncoding(), baseFormat.getSampleRate(), 16, baseFormat
-			// .getChannels(), baseFormat.getChannels() * 2, baseFormat
-			// .getSampleRate(), false);
-			//
-			// stream = AudioSystem.getAudioInputStream(decodedFormat, stream);
-
-			format = stream.getFormat();
-			opened = true;
-			closed = false;
-		} catch (UnsupportedAudioFileException e) {
-			throw new AudioIOException("Unsupported audio file type.", e);
-		} catch (IOException e) {
-			throw new AudioIOException(e.toString(), e);
-		}
-	}
-
-	public AudioFormat getAudioFormat() {
-		return format;
-	}
-
-	synchronized public int read(byte[] data, int offset, int length)
-			throws AudioIOException {
-		if (!opened) {
-			throw new AudioIOException("This is not opened.", null);
-		}
-		try {
-			int nBytesRead = stream.read(data, offset, length);
-			if (nBytesRead == -1) {
-				stream.close();
-				opened = false;
-				closed = true;
-				nBytesRead = 0;
-			}
-			return nBytesRead;
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		return 0;
-	}
-
-	synchronized public void close() {
-		try {
-			if (stream != null)
-				stream.close();
-		} catch (IOException e) {
-		}
-		opened = false;
-		closed = true;
-	}
-
-	public boolean isClosed() {
-		return closed;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioPipe.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioPipe.java
deleted file mode 100644
index cfae3f9..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/AudioPipe.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io.impl;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.ShortBuffer;
-import java.util.ArrayList;
-import java.util.Date;
-
-import javax.sound.sampled.AudioFormat;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-import org.eclipse.actf.ai.audio.io.AudioPipeListener;
-import org.eclipse.actf.ai.audio.io.AudioUtil;
-import org.eclipse.actf.ai.audio.io.IAudioPipe;
-import org.eclipse.actf.ai.audio.io.IAudioReader;
-import org.eclipse.actf.ai.audio.io.IAudioWriter;
-
-public class AudioPipe implements IAudioPipe {
-
-	private IAudioReader reader;
-
-	private IAudioWriter writer;
-
-	private AudioFormat format;
-
-	private Thread thread;
-
-	private Runnable runner;
-
-	private byte[] buffer;
-
-	private int bufferSize;
-
-	private int interval = 100;
-
-	private int priority = Thread.NORM_PRIORITY;
-
-	private int bufferSizeInMs = 1000;
-
-	private boolean active;
-
-	private boolean waiting;
-
-	private boolean stopFlag = false;
-
-	private boolean stopFlag2 = false;
-
-	private ArrayList<AudioPipeListener> listeners = new ArrayList<AudioPipeListener>();
-
-	public AudioPipe(IAudioReader reader, IAudioWriter writer) {
-		this.reader = reader;
-		this.writer = writer;
-		runner = new ReaderWriterRunner();
-	}
-
-	public void addAudioPipeListener(AudioPipeListener listener) {
-		listeners.add(listener);
-	}
-
-	class ReaderWriterRunner implements Runnable {
-		private void fadeout(byte[] buffer, int nBytesRead) {
-			int bps = AudioUtil.getBytesPerSample(format);
-
-			ByteBuffer bb = ByteBuffer.wrap(buffer);
-			ShortBuffer sb = null;
-			if (format.isBigEndian())
-				bb.order(ByteOrder.BIG_ENDIAN);
-			else
-				bb.order(ByteOrder.LITTLE_ENDIAN);
-
-			if (bps == 2)
-				sb = bb.asShortBuffer();
-
-			int len = nBytesRead / bps;
-
-			for (int i = 0; i < len; i++) {
-				double k = (double) (len - i) / (double) len;
-				if (bps == 1)
-					bb.put(i, (byte) (bb.get(i) * k));
-				else
-					sb.put(i, (short) (sb.get(i) * k));
-			}
-		}
-
-		public void run() {
-			try {
-				while (true) {
-					if (reader.isClosed())
-						break;
-
-					int nBytesRead = reader.read(buffer, 0, buffer.length);
-
-					int nBytesWritten = 0;
-					do {
-						if (writer.isClosed()) {
-							active = false;
-							fireStopped();
-							return;
-						}
-						if (stopFlag) {
-							fadeout(buffer, nBytesRead);
-							stopFlag = false;
-							stopFlag2 = true;
-						}
-						int temp = writer.write(buffer, nBytesWritten,
-								nBytesRead);
-						nBytesWritten += temp;
-						nBytesRead -= temp;
-						sleep();
-					} while (nBytesRead > 0);
-
-					if (stopFlag2) {
-						stopFlag2 = false;
-						writer.close();
-					}
-				}
-				writer.close();
-			} catch (AudioIOException e) {
-				writer.close();
-			} catch (Exception e) {
-				e.printStackTrace();
-				writer.close();
-			}
-			active = false;
-			fireFinished();
-		}
-	}
-
-	private void fireFinished() {
-		for (int i = 0; i < listeners.size(); i++) {
-			listeners.get(i).finished(this);
-		}
-	}
-
-	private void fireStopped() {
-		for (int i = 0; i < listeners.size(); i++) {
-			listeners.get(i).stopped(this);
-		}
-	}
-
-	synchronized public void setInterval(int interval) {
-		this.interval = interval;
-	}
-
-	synchronized public void setPriority(int priority) {
-		this.priority = priority;
-		if (thread != null)
-			thread.setPriority(priority);
-	}
-
-	public void prepare() {
-		try {
-			reader.open();
-			format = reader.getAudioFormat();
-			writer.open(format);
-		} catch (AudioIOException e) {
-			e.printStackTrace();
-			return;
-		}
-	}
-
-	public void start() {
-		start(0);
-	}
-
-	public void start(final int delay) {
-		if (active || waiting)
-			return;
-		waiting = true;
-		thread = new Thread(new Runnable() {
-			public void run() {
-				long s = (new Date()).getTime();
-
-				while (true) {
-					long n = (new Date()).getTime();
-					if (stopFlag) {
-						waiting = false;
-						stopFlag = false;
-						active = false;
-						fireStopped();
-						return;
-					}
-					if (s + delay <= n) {
-						break;
-					}
-					try {
-						Thread.sleep(1);
-					} catch (InterruptedException e) {
-					}
-				}
-
-				while (active) {
-					try {
-						Thread.sleep(1);
-					} catch (InterruptedException e) {
-					}
-				}
-
-				prepare();
-
-				int Bps = AudioUtil.getBytesPerSampleLR(format);
-				bufferSize = AudioUtil.getBytesPerSecondLR(format)
-						* bufferSizeInMs / 1000 / Bps * Bps;
-				buffer = new byte[bufferSize];
-				active = true;
-				waiting = false;
-				runner.run();
-			}
-		});
-		thread.setPriority(priority);
-		thread.setName(reader.getName() + "<->" + writer.getName());
-		thread.start();
-	}
-
-	synchronized private void sleep() {
-		try {
-			Thread.sleep(interval);
-			Thread.yield();
-		} catch (InterruptedException e) {
-		}
-	}
-
-	public boolean isActive() {
-		return active;
-	}
-
-	public void stop() {
-		if (active || waiting)
-			stopFlag = true;
-	}
-
-	public void join() {
-		if (thread == null)
-			return;
-		try {
-			thread.join();
-		} catch (InterruptedException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public void setBufferSize(int miliSeconds) {
-		bufferSizeInMs = miliSeconds;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/LoopedAudioPipe.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/LoopedAudioPipe.java
deleted file mode 100644
index 68d2531..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/LoopedAudioPipe.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io.impl;
-
-import java.util.ArrayList;
-
-import org.eclipse.actf.ai.audio.io.AudioPipeListener;
-import org.eclipse.actf.ai.audio.io.IAudioPipe;
-import org.eclipse.actf.ai.audio.io.IAudioReader;
-import org.eclipse.actf.ai.audio.io.IAudioWriter;
-
-public class LoopedAudioPipe implements IAudioPipe, AudioPipeListener {
-
-	IAudioPipe target;
-
-	boolean isActive;
-
-	boolean joining = false;
-
-	private ArrayList<AudioPipeListener> listeners = new ArrayList<AudioPipeListener>();
-
-	public LoopedAudioPipe(IAudioReader reader, IAudioWriter writer) {
-		target = new AudioPipe(reader, writer);
-		target.addAudioPipeListener(this);
-	}
-
-	public void addAudioPipeListener(AudioPipeListener listener) {
-		listeners.add(listener);
-	}
-
-	public boolean isActive() {
-		return isActive;
-	}
-
-	public void join() {
-		joining = true;
-		target.join();
-		fireFinished();
-	}
-
-	public void setBufferSize(int miliSeconds) {
-		target.setBufferSize(miliSeconds);
-	}
-
-	public void setInterval(int interval) {
-		target.setInterval(interval);
-	}
-
-	public void setPriority(int priority) {
-		target.setPriority(priority);
-	}
-
-	public void prepare() {
-		target.prepare();
-	}
-
-	public void start() {
-		start(0);
-	}
-
-	public void start(int delay) {
-		target.start(delay);
-		isActive = true;
-		joining = false;
-	}
-
-	public void stop() {
-		target.stop();
-		isActive = false;
-		fireStopped();
-	}
-
-	private void fireFinished() {
-		for (int i = 0; i < listeners.size(); i++) {
-			listeners.get(i).finished(this);
-		}
-	}
-
-	private void fireStopped() {
-		for (int i = 0; i < listeners.size(); i++) {
-			listeners.get(i).stopped(this);
-		}
-	}
-
-	public void finished(IAudioPipe pipe) {
-		if (!joining)
-			pipe.start();
-	}
-
-	public void stopped(IAudioPipe pipe) {
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/PlaybackDevice.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/PlaybackDevice.java
deleted file mode 100644
index a8f6bc0..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/PlaybackDevice.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io.impl;
-
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.DataLine;
-import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.Mixer;
-import javax.sound.sampled.SourceDataLine;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-import org.eclipse.actf.ai.audio.io.IAudioWriter;
-
-public class PlaybackDevice implements IAudioWriter {
-
-	private Mixer playbackMixer;
-
-	private SourceDataLine playbackLine;
-
-	private int limit;
-
-	@Override
-	public boolean equals(Object o) {
-		if (o instanceof PlaybackDevice) {
-			return playbackMixer.equals(((PlaybackDevice) o).playbackMixer);
-		}
-		return false;
-	}
-
-	public PlaybackDevice(Mixer mixer) {
-		this.playbackMixer = mixer;
-	}
-
-	public PlaybackDevice() {
-		this.playbackMixer = null;
-	}
-
-	public String getName() {
-		if (playbackMixer != null)
-			return "Device \"" + playbackMixer.getMixerInfo().getName() + "\"";
-		else
-			return "Device \"default\"";
-	}
-
-	synchronized public void close() {
-		if (playbackLine != null) {
-			playbackLine.drain();
-			playbackLine.close();
-		}
-	}
-
-	public boolean isClosed() {
-		if (playbackLine == null)
-			return true;
-		return !playbackLine.isOpen();
-	}
-
-	public boolean canWrite() {
-		return true;
-	}
-
-	synchronized public void open(AudioFormat format) throws AudioIOException {
-
-		DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
-
-		try {
-			if (playbackMixer != null)
-				playbackLine = (SourceDataLine) playbackMixer.getLine(info);
-			else
-				playbackLine = (SourceDataLine) AudioSystem.getLine(info);
-
-			playbackLine.open();
-
-			limit = playbackLine.available() / 10 * 5;
-
-			playbackLine.start();
-		} catch (LineUnavailableException e1) {
-			e1.printStackTrace();
-		}
-	}
-
-	synchronized public int write(byte[] data, int offset, int length)
-			throws AudioIOException {
-		if (playbackLine.available() > limit) {
-			return playbackLine.write(data, offset, length);
-		}
-		return 0;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/RecordDevice.java b/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/RecordDevice.java
deleted file mode 100644
index 139d8a1..0000000
--- a/plugins/org.eclipse.actf.ai.audio.io/src/org/eclipse/actf/ai/audio/io/impl/RecordDevice.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.audio.io.impl;
-
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.DataLine;
-import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.Mixer;
-import javax.sound.sampled.TargetDataLine;
-
-import org.eclipse.actf.ai.audio.io.AudioIOException;
-import org.eclipse.actf.ai.audio.io.IAudioReader;
-
-public class RecordDevice implements IAudioReader {
-
-	private Mixer recordMixer;
-
-	private AudioFormat format;
-
-	private TargetDataLine recordLine;
-
-	@Override
-	public boolean equals(Object o) {
-		if (o instanceof RecordDevice) {
-			RecordDevice rd = (RecordDevice) o;
-			if (recordMixer.equals(rd.recordMixer)) {
-				return format.getChannels() == rd.format.getChannels()
-						&& format.getFrameRate() == rd.format.getFrameRate()
-						&& format.getSampleSizeInBits() == rd.format
-								.getSampleSizeInBits();
-			}
-		}
-		return false;
-	}
-
-	public RecordDevice(Mixer mixer, int sampleRate, int channels) {
-		this.recordMixer = mixer;
-		format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, sampleRate,
-				16, channels, 2 * channels, sampleRate, false);
-		if (!recordMixer.isLineSupported(new DataLine.Info(
-				TargetDataLine.class, format))) {
-			check(sampleRate, channels);
-		}
-	}
-
-	private void check(int sampleRate, int channels) {
-		AudioFormat temp;
-		int[] samples = new int[] { 48000, 44100, 22050, 16000, 8000 };
-
-		outer: for (int i = 0; i < samples.length; i++) {
-			if (samples[i] < sampleRate) {
-				temp = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
-						samples[i], 16, channels, 2 * channels, samples[i],
-						false);
-				if (recordMixer.isLineSupported(new DataLine.Info(
-						TargetDataLine.class, temp))) {
-					format = temp;
-					break outer;
-				}
-			}
-		}
-	}
-
-	public String getName() {
-		return "Device \"" + recordMixer.getMixerInfo().getName()
-				+ //
-				" (" + (format.getFrameRate() / 1000) + " kHz, "
-				+ format.getChannels() + "ch)" + "\"";
-	}
-
-	public AudioFormat getAudioFormat() {
-		return format;
-	}
-
-	synchronized public void close() {
-		if (recordLine != null)
-			recordLine.close();
-	}
-
-	public boolean isClosed() {
-		return !recordLine.isOpen();
-	}
-
-	public boolean canRead() {
-		DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
-		return recordMixer.isLineSupported(info);
-	}
-
-	synchronized public void open() throws AudioIOException {
-		DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
-
-		try {
-			recordLine = (TargetDataLine) recordMixer.getLine(info);
-			recordLine.open(format);
-			recordLine.start();
-		} catch (LineUnavailableException e) {
-			e.printStackTrace();
-		}
-	}
-
-	synchronized public int read(byte[] data, int offset, int length)
-			throws AudioIOException {
-		return recordLine.read(data, offset, length);
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/.classpath b/plugins/org.eclipse.actf.ai.fennec/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.fennec/.cvsignore b/plugins/org.eclipse.actf.ai.fennec/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/plugins/org.eclipse.actf.ai.fennec/.project b/plugins/org.eclipse.actf.ai.fennec/.project
deleted file mode 100644
index 6a55645..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.fennec</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.fennec/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.fennec/META-INF/MANIFEST.MF
deleted file mode 100644
index 5531ede..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,19 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Fennec Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.fennec
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.internal.fennec.FennecPlugin
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.actf.util.vocab,
- org.eclipse.actf.core,
- org.eclipse.actf.model.ui,
- org.eclipse.actf.model.dom.dombycom,
- org.eclipse.actf.ai.query,
- org.eclipse.actf.ai.xmlstore,
- org.eclipse.swt,
- org.eclipse.actf.ui
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.actf.ai.fennec,
- org.eclipse.actf.ai.fennec.treemanager
diff --git a/plugins/org.eclipse.actf.ai.fennec/about.html b/plugins/org.eclipse.actf.ai.fennec/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.fennec/build.properties b/plugins/org.eclipse.actf.ai.fennec/build.properties
deleted file mode 100644
index e1942be..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecException.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecException.java
deleted file mode 100644
index 9a0fee7..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec;
-
-/**
- * FennecException is the super class of the exception on processing Fennec
- * metadata. The message text provide a further description of the problem.
- */
-public class FennecException extends Exception {
-	private static final long serialVersionUID = -4473389024467270039L;
-
-	/**
-	 * @param message
-	 * @param cause
-	 * @see Exception#Exception(String, Throwable)
-	 */
-	public FennecException(String message, Throwable cause) {
-		super(message, cause);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecInterruptedException.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecInterruptedException.java
deleted file mode 100644
index c872a1a..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecInterruptedException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec;
-
-/**
- * This Fennec exception is thrown when a fennec processing is interrupted by
- * some reason. For example, metadata is updated during the processing.
- */
-public class FennecInterruptedException extends FennecException {
-	private static final long serialVersionUID = 503781748413609768L;
-
-	/**
-	 * @param message
-	 * @param cause
-	 * @see FennecException#FennecException(String, Throwable)
-	 */
-	public FennecInterruptedException(String message, Throwable cause) {
-		super(message, cause);
-	}
-
-	/**
-	 * @param message
-	 * @see FennecException#FennecException(String, Throwable)
-	 */
-	public FennecInterruptedException(String message) {
-		super(message, null);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecMediatorFactory.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecMediatorFactory.java
deleted file mode 100644
index 1bf84ef..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecMediatorFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Kentarou FUKUDA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec;
-
-import org.eclipse.actf.ai.fennec.mediator.FennecMediatorImpl;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-
-/**
- * Factory to create a instance of IFennecMediator
- */
-public class FennecMediatorFactory {
-
-	/**
-	 * This is the factory method to create a instance of IFennecMediator
-	 * 
-	 * @param webBrowser
-	 *            An instance of {@link IWebBrowserACTF} to mediate.
-	 * @return New instance of IFennecMediator.
-	 */
-	public static IFennecMediator newFennecMediator(IWebBrowserACTF webBrowser) {
-		return new FennecMediatorImpl(webBrowser);
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecServiceFactory.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecServiceFactory.java
deleted file mode 100644
index 4a6245e..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/FennecServiceFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec;
-
-import org.eclipse.actf.ai.fennec.impl.FennecServiceImpl;
-import org.eclipse.actf.model.dom.dombycom.IDocumentEx;
-
-/**
- * This is the factory class of the IFennecService. This class has methods to
- * create a IFennecService instance from a {@link IFennecEntry} and a
- * {@link IDocumentEx}.
- */
-public class FennecServiceFactory {
-	/**
-	 * @param entry
-	 *            the instance of entry of Fennec metadata.
-	 * @param doc
-	 *            the instance of IDocumentEx which will be applied the Fennec
-	 *            metadata.
-	 * @return a new {@link IFennecService} instance.
-	 * @throws FennecException
-	 *             it will be thrown when the specified entry can't be loaded.
-	 */
-	public static IFennecService newFennecService(IFennecEntry entry,
-			IDocumentEx doc) throws FennecException {
-		return new FennecServiceImpl(entry, doc);
-	}
-
-	/**
-	 * This creates a instance of {@link IFennecService} with default Fennec
-	 * meatadata. Default metadata has an attach element for the root element of
-	 * the specified document.
-	 * 
-	 * @param doc
-	 *            the instance of IDocumentEx which will be applied the Fennec
-	 *            metadata.
-	 * @return a new {@link IFennecService} instance.
-	 */
-	public static IFennecService newFennecServiceWithDefaultMetadata(
-			IDocumentEx doc) {
-		return new FennecServiceImpl(doc);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecEntry.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecEntry.java
deleted file mode 100644
index 191ceac..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecEntry.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec;
-
-import java.io.File;
-
-/**
- * IFennecEntry represents an entry of Fennec metadata. An entry is
- * corresponding to an Fennec file.
- */
-public interface IFennecEntry {
-	/**
-	 * @return the title of the entry specified in the documentation element.
-	 */
-	String getDocumentation();
-
-	/**
-	 * @return whether the entry is for a metadata of user annotations or not.
-	 */
-	boolean isUserEntry();
-
-	/**
-	 * Export the entry to the specified destination file.
-	 * 
-	 * @param dest
-	 *            the destination of the export.
-	 * @return if the export is succeeded then it returns true and failed then
-	 *         false.
-	 */
-	boolean export(File dest);
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecMediator.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecMediator.java
deleted file mode 100644
index eaab812..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecMediator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-
-/**
- * IFennecMediator interface defines the methods implemented by the mediator
- * class between the web browser and the Fennec service.
- */
-public interface IFennecMediator {
-	/**
-	 * This method creates an instance of ITreeManager by using the metadata
-	 * entry and Fennec service created from the document obtained from the web
-	 * browser and the metadata entry.
-	 * 
-	 * @param entry
-	 *            the instance of the Fennec metadata entry.
-	 * @return the new instance of ITreeManager.
-	 */
-	ITreeManager newTreeManager(IFennecEntry entry);
-
-	/**
-	 * It returns the default Fennec metadta for the document opened in the web
-	 * browser. If there is no metadata for the doument, it returns null.
-	 * 
-	 * @return the Fennec metadata entry.
-	 */
-	IFennecEntry getDefaultFennecEntry();
-
-	/**
-	 * It returns all Fennec metadata for the document opened in the web
-	 * browser.
-	 * 
-	 * @return An array of the Fennec metadata entries.
-	 */
-	IFennecEntry[] getFennecEntries();
-
-	/**
-	 * If the mediator is not needed anymore, this method should be called.
-	 */
-	void release();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecService.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecService.java
deleted file mode 100644
index 31d1072..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/IFennecService.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec;
-
-import org.eclipse.actf.ai.fennec.treemanager.IAccessKeyList;
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.model.dom.dombycom.IFlashNode;
-import org.eclipse.actf.util.vocab.IProposition;
-
-/**
- * IFennecService interface defines the methods to manage a document with a
- * Fennec metadata which provides another tree presentation of the document. The
- * service has a position, and the tree presentation is dynamically changed by
- * updating the position. When the position is tried to be updated then the
- * result code of ITreeManager is returned.
- * 
- * @see ITreeManager#NOACTION
- * @see ITreeManager#MOVED
- * @see ITreeManager#CLICKED
- * @see ITreeManager#FOUND
- */
-public interface IFennecService {
-	/**
-	 * The service is not initialized.
-	 */
-	int UNINIT = 0;
-	/**
-	 * The service is available.
-	 */
-	int NORMAL = 1;
-	/**
-	 * The service is in error.
-	 */
-	int ERROR = 1 << 16;
-
-	/**
-	 * @return the status of the service.
-	 * @see #UNINIT
-	 * @see #NORMAL
-	 * @see #ERROR
-	 */
-	int getStatus();
-
-	/**
-	 * @return the ITreeItem instance of the position on the service.
-	 */
-	ITreeItem getLastTreeItem();
-
-	/**
-	 * It returns collected sound objects in the document.
-	 * 
-	 * @return the {@link ISoundControl} instance of the document tree.
-	 * @see ISoundControl
-	 */
-	ISoundControl getSoundControl();
-
-	/**
-	 * It returns collected video objects in the document.
-	 * 
-	 * @return the {@link IVideoControl} instance of the document tree.
-	 */
-	IVideoControl getVideoControl();
-
-	/**
-	 * It returns collected access keys declared in the document.
-	 * 
-	 * @return the {@link IAccessKeyList} instance of the document tree.
-	 */
-	IAccessKeyList getAccessKeyList();
-
-	/**
-	 * It returns Flash objects in the document.
-	 * 
-	 * @return the array of the {@link IFlashNode} instances of the document
-	 *         tree.
-	 */
-	IFlashNode[] getFlashTopNodes();
-
-	/**
-	 * Initialize the service. It creates the root element of the tree
-	 * presentation of the document, and analyzes the document to collect
-	 * objects such as sounds, videos, and access keys in the document.
-	 * 
-	 * @return {@link ITreeManager#MOVED} is returned.
-	 * @throws FennecException
-	 *             it is thrown if the initialization is failed.
-	 */
-	int initialize() throws FennecException;
-
-	/**
-	 * The position will be updated to the specified ITreeItem. You can update
-	 * the position by traversing from the position, {@link #getLastTreeItem()}
-	 * which has a parent and some children. This method is the shortcut of
-	 * moveUpdate(target, true).
-	 * 
-	 * @param target
-	 *            the new position of the tree presentation.
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see #moveUpdate(ITreeItem, boolean)
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 */
-	int moveUpdate(ITreeItem target) throws FennecException;
-
-	/**
-	 * The position will be updated to the specified ITreeItem. If the <i>update</i>
-	 * is false then the children of the current ITreeItem are not updated, the
-	 * children are cached instances. It is valid in static document, but if the
-	 * original document is changed dynamically the children are invalid.
-	 * 
-	 * @param target
-	 *            the new position of the tree presentation.
-	 * @param update
-	 *            whether updating the children of the target or not.
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 */
-	int moveUpdate(ITreeItem target, boolean update) throws FennecException;
-
-	/**
-	 * The position will be updated. This method should be used after clicking
-	 * the target. If the target is disappear by the clicking the position will
-	 * be changed to proper position.
-	 * 
-	 * @param target
-	 *            the target ITreeItem which was clicked.
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 */
-	int clickUpdate(ITreeItem target) throws FennecException;
-
-	/**
-	 * It searches the element which is matched with the specified IProposition
-	 * in forward direction. This service tests
-	 * {@link IProposition#eval(org.eclipse.actf.util.vocab.IEvalTarget)} with
-	 * all elements from the current position in forward direction. If the
-	 * matching is succeeded then it returns.
-	 * 
-	 * @param prop
-	 *            the instance of IProposition to be used for the searching.
-	 * @return
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 * @see IProposition
-	 */
-	int searchForward(IProposition prop) throws FennecException;
-
-	/**
-	 * It searches the element which is matched with the specified IProposition
-	 * in backward direction.
-	 * 
-	 * @param prop
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 * @see #searchForward(IProposition)
-	 */
-	int searchBackward(IProposition prop) throws FennecException;
-
-	/**
-	 * It analyzes the document to collect objects such as sounds, videos, and
-	 * access keys in the document. This analysis is executed in the
-	 * {@link #initialize()}. So it is used when the analysis is failed because
-	 * of loading timing or something.
-	 * 
-	 * @return it returns ITreeManager#NOACTION
-	 * @throws FennecException
-	 */
-	int analyze() throws FennecException;
-
-	/**
-	 * It searches the anchor element specified by <i>target</i>.
-	 * 
-	 * @param target
-	 *            the anchor name to be searched.
-	 * @return the result code of the updating.
-	 * @throws FennecException
-	 * @see ITreeManager#NOACTION
-	 * @see ITreeManager#MOVED
-	 * @see ITreeManager#CLICKED
-	 * @see ITreeManager#FOUND
-	 */
-	int skipToAnchor(String target) throws FennecException;
-
-	// !!FN!!
-	/**
-	 * It expands whole tree of the document. It means all elements in the
-	 * document are scanned. It would take a long time.
-	 * 
-	 * @return the root element of the document.
-	 * @throws FennecException
-	 */
-	ITreeItem expandWholeTree() throws FennecException;
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/autotranslator/AutoTranslator.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/autotranslator/AutoTranslator.java
deleted file mode 100644
index fdcd14f..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/autotranslator/AutoTranslator.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.autotranslator;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.impl.FennecMode;
-import org.eclipse.actf.ai.fennec.impl.TreeItemMark;
-import org.eclipse.actf.ai.fennec.impl.TreeItemFennec;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.model.dom.dombycom.IFlashNode;
-import org.eclipse.actf.model.dom.dombycom.IImageElement;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.eclipse.actf.util.vocab.Vocabulary;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class AutoTranslator {
-    private static final boolean AUTO_COLLAPSE = true;
-
-    private static final boolean AUTO_INDENT = true;
-
-    private static boolean canCollapse(TreeItemFennec item) {
-        if (true) {
-            return Vocabulary.isReducible().eval(item);
-        } else {
-            if (Vocabulary.hasContent().eval(item))
-                return false;
-            ITreeItem[] cc = item.getChildItems();
-            for (int i = 0; i < cc.length; i++) {
-                TreeItemFennec item2 = (TreeItemFennec) cc[i];
-                if (Vocabulary.hasContent().eval(item2))
-                    return false;
-            }
-            return true;
-        }
-    }
-
-    private static TreeItemFennec simplify(TreeItemFennec item, TreeItemFennec pItem) {
-        if (AUTO_COLLAPSE) {
-            // pattern pItem - item(X) - child => pItem - child
-            if (!Vocabulary.hasContent().eval(item)) {
-                ITreeItem[] cc = item.getChildItems();
-                if (cc.length == 0) {
-                    return null;
-                }
-                if (cc.length == 1) {
-                    TreeItemFennec item2 = (TreeItemFennec) cc[0];
-                    item2.forceParent(pItem);
-                    item2.addMetadata(item);
-                    return item2;
-                }
-            }
-            
-            // pattern item - child(X) - grandChild => item - grandChild
-            ITreeItem[] childItems = item.getChildItems();
-            if (childItems.length == 1) {
-                TreeItemFennec item2 = (TreeItemFennec) childItems[0];
-                if (!Vocabulary.hasContent().eval(item2)){
-                    ITreeItem[] childItems2 = item2.getChildItems();
-                    item.setChildItems(childItems2);
-                    item.addMetadata(item2);
-                }
-            }
-        }
-
-        return item;
-    }
-
-    private static void adjustLabelIndent(TreeItemFennec item) {
-        // TODO
-        //        var itemCount = item._childItems.length;
-        //        if( itemCount>1 ) {
-        //            var heading;
-        //            var topIsLabel = true;
-        //            for( var i=0, child; child=item._childItems[i]; i++ ) {
-        //            if( topIsLabel ) {
-        //                topIsLabel = child._childItems.length ? (i>0) : (i==0);
-        //            }
-        //            if( child.isHeadingNode() ) {
-        //                // Collapse heading node tree
-        //                child._join();
-        //                heading = child._childItems.length==0 ? child : null;
-        //            }
-        //            else if( heading ) {
-        //                // Move child item into heading item children
-        //                heading._childItems.push(child);
-        //                item._childItems.splice(i--,1);
-        //                topIsLabel = false;
-        //                        heading._labelHead = true;
-        //            }
-        //            }
-        //            if( topIsLabel ) {
-        //            // 1st child is a label. Move item 2-n into item 1 children
-        //                    heading = item._childItems[0];
-        //            heading._childItems = item._childItems.splice(1,item._childItems.length-1);
-        //                    heading._labelHead = true;
-        //            }
-        //            if( (item._childItems.length != itemCount) && Options.AUTO_COLLAPSE ) {
-        //            // Re-adjust tree collaption because tree structure has changed
-        //            for( var i=0, child; child=item._childItems[i]; i++ ) {
-        //                child._simplify();
-        //            }
-        //            item._simplify();
-        //            }
-        //        }
-
-    }
-
-    private static List<ITreeItem> buildTreeItemContinued(FennecMode mode, TreeItemFennec item, INodeEx nex, int depth) {
-        List<ITreeItem> childItemList = new ArrayList<ITreeItem>();
-        ITreeItem lastItem = null;
-        
-        if (nex instanceof IFlashNode) {
-            IFlashNode fn = (IFlashNode) nex;
-            nex = fn.getMSAA();
-            lastItem = new TreeItemMark(item, TreeItemMark.MarkType.FLASH_END);
-            
-            if ((nex != null && Vocabulary.getNormalFlashMode() == Vocabulary.FlashMode.NO_FLASH)
-                    || (nex == null && Vocabulary.getWindowlessFlashMode() == Vocabulary.FlashMode.NO_FLASH)) {
-                return childItemList;
-            }
-            
-            if ((nex != null && Vocabulary.getNormalFlashMode() == Vocabulary.FlashMode.FLASH_DOM)
-                    || (nex == null && Vocabulary.getWindowlessFlashMode() == Vocabulary.FlashMode.FLASH_DOM)) {
-                IFlashNode[] translated = fn.translate();
-                for (int i = 0; i < translated.length; i++) {
-                    TreeItemFennec newItem = mode.generateItem(item, translated[i]);
-                    if (newItem == null) continue;
-                    childItemList.add(newItem);
-                }
-                if (Vocabulary.isFlashTopNode().eval(fn)) {
-                    childItemList.add(lastItem);
-                }
-                
-                item.setChildItems(childItemList);
-                return childItemList;
-            }
-        }
-        
-        if (nex instanceof IImageElement) {
-            IImageElement image = (IImageElement) nex;
-            if (image.hasUsemap()) {
-                Element map = image.getMap();
-                if (map == null) return childItemList;
-                NodeList nl = map.getChildNodes();
-                for (int i = 0; i < nl.getLength(); i++) {
-                    Node n = nl.item(i);
-                    if (n instanceof Element) {
-                        TreeItemFennec newItem = mode.generateItem(item, n);
-                        childItemList.add(newItem);
-                    }
-                }
-                item.setChildItems(childItemList);
-                return childItemList;
-            }
-        }
-
-        if (depth <= 0) {
-            item.setChildItems(childItemList);
-            return childItemList;
-        }
-
-        TreeItemFennec childItem = null;
-        NodeList nl = nex.getChildNodes();
-        int len = nl.getLength();
-        boolean hasContent = Vocabulary.hasContent().eval(item);
-        for (int i = 0; i < len; i++) {
-            Node cn = nl.item(i);
-
-            if (hasContent) {
-                childItem = buildTreeItem(mode, item, cn, depth - 1);
-            } else {
-                childItem = buildTreeItem(mode, item, cn, depth);
-            }
-            if (childItem == null)
-                continue;
-
-            if (true && AUTO_COLLAPSE && canCollapse(childItem)) {
-                ITreeItem[] cc = childItem.getChildItems();
-                if ((cc != null) && (cc.length > 0)) {
-                    for (int j = 0; j < cc.length; j++) {
-                        if (!(cc[j] instanceof TreeItemFennec))
-                            continue;
-                        TreeItemFennec temp = (TreeItemFennec) cc[j];
-                        temp.addMetadata(childItem);
-                    }
-                    childItemList.addAll(Arrays.asList(cc));
-                }
-            } else {
-                childItemList.add(childItem);
-            }
-        }
-        
-        if (lastItem != null)
-            childItemList.add(lastItem);
-
-        item.setChildItems(childItemList);
-        return childItemList;
-    }
-
-    private static TreeItemFennec buildTreeItem(FennecMode mode, TreeItemFennec pItem, Node n, int depth) {
-        if (!(n instanceof INodeEx)) {
-            return null;
-        }
-
-        INodeEx  nex = (INodeEx) n;
-
-        if (!Vocabulary.isValidNode().eval(nex)) {
-            return null;
-        }
-
-        TreeItemFennec item = mode.generateItem(pItem, n);
-        if (item == null) return null;
-        buildTreeItemContinued(mode, item, nex, depth);
-
-        if (AUTO_INDENT) {
-            adjustLabelIndent(item);
-        }
-
-        return simplify(item, pItem);
-    }
-
-    public static TreeItemFennec translate(FennecMode mode, TreeItemFennec pItem, Node n) {
-
-        return buildTreeItem(mode, pItem, n, 1);
-    }
-
-    public static TreeItemFennec translateContinued(FennecMode mode, TreeItemFennec item, Node n) {
-        if (!(n instanceof INodeEx))
-            return item;
-        buildTreeItemContinued(mode, item, (INodeEx) n, 2);
-        // item = simplify(item, (TreeItemFennec) item.getParent());
-        return item;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecBundleMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecBundleMetadata.java
deleted file mode 100644
index c640651..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecBundleMetadata.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.query.IQuery;
-import org.w3c.dom.Node;
-
-
-abstract class FennecBundleMetadata extends FennecMetadata {
-    private static final FennecMetadata[] emptyChildMetadata = new FennecMetadata[0];
-    protected final FennecMetadata[] childMetadata;
-
-    protected FennecBundleMetadata(FennecServiceImpl fennecService,
-                                 IQuery q, FennecMode mode, FennecMetadata[] mds) {
-        super(fennecService, q, mode);
-        if (mds == null) {
-            mds = emptyChildMetadata;
-        }
-        this.childMetadata = mds;
-    }
-
-    protected FennecBundleMetadata(FennecServiceImpl fennecService,
-                                FennecMode mode,
-                                Node node,
-                                FennecMetadata[] mds) {
-        super(fennecService, mode, node);
-        if (mds == null) {
-            mds = emptyChildMetadata;
-        }
-        this.childMetadata = mds;
-    }
-
-    @Override
-    List expand(TreeItemFennec pItem, int trigger) throws FennecException {
-        ArrayList ret = new ArrayList();
-        for (int i = 0; i < childMetadata.length; i++) {
-            FennecMetadata cmd = childMetadata[i];
-            List ret2 = cmd.buildItems(pItem, null, trigger);
-            if (ret2 != null) ret.addAll(ret2);
-        }
-        return ret;
-    }
-
-
-    FennecMetadata[] getChildMetadata() {
-        return childMetadata;
-    }
-
-    // CoR pattern.
-    @Override
-    public String getAltText(ITreeItem item) {
-        for (int i = 0; i < childMetadata.length; i++) {
-            if (childMetadata[i].hasTargets()) continue;
-            if (!(childMetadata[i] instanceof FennecSimpleMetadata)) continue;
-            String ret = childMetadata[i].getAltText(item);
-            if (ret == null) return null;
-            if (ret.length() > 0) return ret;
-        }
-        return "";
-    }
-
-    @Override
-    public String getDescription(ITreeItem item) {
-        for (int i = 0; i < childMetadata.length; i++) {
-            if (childMetadata[i].hasTargets()) continue;
-            if (!(childMetadata[i] instanceof FennecSimpleMetadata)) continue;
-            String ret = childMetadata[i].getDescription(item);
-            if (ret == null) return null;
-            if (ret.length() > 0) return ret;
-        }
-        return "";
-    }
-
-    @Override
-    public short getHeadingLevel(ITreeItem item) {
-        for (int i = 0; i < childMetadata.length; i++) {
-            if (childMetadata[i].hasTargets()) continue;
-            if (!(childMetadata[i] instanceof FennecSimpleMetadata)) continue;
-            short ret = childMetadata[i].getHeadingLevel(item);
-            if (ret == -1) return -1;
-            if (ret > 0) return ret;
-        }
-        return 0;
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecDOMReader.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecDOMReader.java
deleted file mode 100644
index 6774038..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecDOMReader.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-
-import org.eclipse.actf.ai.fennec.IFennecEntry;
-import org.eclipse.actf.ai.query.IQuery;
-import org.eclipse.actf.ai.query.QueryService;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class FennecDOMReader {
-    public static final String Fennec_NAMESPACE_URI = "http://www.ibm.com/xmlns/prod/aiBrowser/fennec";
-    public static final String Fennec_DOCUMENT_ELEMENT_NAME = "fennec";
-
-    private FennecServiceImpl fennecService;
-
-    private void error(String message) {
-        System.err.println(message);
-    }
-
-    private IQuery parseQuery(Element e, IQuery parentQuery) {
-        return QueryService.parse(e, parentQuery);
-    }
-
-    private FennecMetadata parseNode(FennecMode mode, Element e, IQuery parentQuery) {
-        NodeList nl = e.getChildNodes();
-        IQuery q = parseQuery(e, parentQuery);
-        if (q != null) parentQuery = q;
-        FennecMetadata[] mds = parseInternal(mode, nl, parentQuery);
-        return new FennecGroupMetadata(fennecService, q, mode, mds);
-    }
-
-    private FennecMetadata parseHeader(FennecMode mode, Element e, short level, IQuery parentQuery) {
-        // IQuery q = parseQuery(e, parentQuery);
-        return FennecSimpleMetadata.newHeader(fennecService, null, mode, level);
-    }
-
-    private List parseTextFormat(Element e, IQuery parentQuery) {
-        NodeList nl = e.getChildNodes();
-        int len = nl.getLength();
-        if (len == 0) return null;
-        ArrayList al = new ArrayList();
-        for (int i = 0; i < len; i++) {
-            Node n = nl.item(i);
-            switch (n.getNodeType()) {
-            case Node.TEXT_NODE:
-                al.add(n.getNodeValue());
-                break;
-            case Node.ELEMENT_NODE:
-                Element ce = (Element) n;
-                if ("ref".equals(ce.getLocalName())) {
-                    IQuery q = parseQuery((Element) n, parentQuery);
-                    al.add(q);
-                } else {
-                    error("Invalid element in text format:" + n.getNodeName());
-                }
-                break;
-            }
-        }
-        return al;
-    }
-
-    private FennecMetadata parseAltText(FennecMode mode, Element e, IQuery parentQuery) {
-        IQuery q = parseQuery(e, parentQuery);
-        if (q != null) parentQuery = q;
-        List l = parseTextFormat(e, parentQuery);
-        return FennecSimpleMetadata.newAltText(fennecService, q, mode, l);
-    }
-
-    private FennecMetadata parseDescription(FennecMode mode, Element e, IQuery parentQuery) {
-        IQuery q = parseQuery(e, parentQuery);
-        if (q != null) parentQuery = q;
-        List l = parseTextFormat(e, parentQuery);
-        return FennecSimpleMetadata.newDescription(fennecService, mode, q, l);
-    }
-
-    private boolean parseBoolean(String str) {
-        String str2 = str.trim();
-        if (str2.equals("0")) {
-            return false;
-        } else if (str2.equals("false")) {
-            return false;
-        } else if (str2.equals("1")) {
-            return true;
-        } else if (str2.equals("true")) {
-            return true;
-        }
-        error("Invalide boolean value:" + str2);
-        return false;
-    }
-
-    private int parseTrigger(String str) {
-        String str2 = str.trim();
-        if ("always".equals(str2)) {
-            return FennecMode.TRIGGER_ALWAYS;
-        } else if ("move".equals(str2)) {
-            return FennecMode.TRIGGER_MOVE;
-        } else if ("click".equals(str2)) {
-            return FennecMode.TRIGGER_CLICK;
-        } else if (str.length() == 0) {
-            return FennecMode.TRIGGER_ALWAYS;
-        } else {
-            error("Invalid trigger attribute:" + str2);
-        }
-        return FennecMode.TRIGGER_MOVE;
-    }
-
-    private FennecMetadata parseInternalForElement(FennecMode mode, Element e, IQuery parentQuery) {
-        String name = e.getLocalName();
-        if (name.equals("node")) {
-            return parseNode(mode, e, parentQuery);
-        } else if (name.equals("table")) {
-            // TODO
-        } else if (name.equals("ul")) {
-            // TODO
-        } else if (name.equals("ol")) {
-            // TODO
-        } else if (name.equals("h-")) {
-            return parseHeader(mode, e, (short) -1, parentQuery);
-        } else if (name.equals("h1")) {
-            return parseHeader(mode, e, (short) 1, parentQuery);
-        } else if (name.equals("h2")) {
-            return parseHeader(mode, e, (short) 2, parentQuery);
-        } else if (name.equals("h3")) {
-            return parseHeader(mode, e, (short) 3, parentQuery);
-        } else if (name.equals("h4")) {
-            return parseHeader(mode, e, (short) 4, parentQuery);
-        } else if (name.equals("h5")) {
-            return parseHeader(mode, e, (short) 5, parentQuery);
-        } else if (name.equals("h6")) {
-            return parseHeader(mode, e, (short) 6, parentQuery);
-        } else if (name.equals("altText")) {
-            return parseAltText(mode, e, parentQuery);
-        } else if (name.equals("description")) {
-            return parseDescription(mode, e, parentQuery);
-        } else if (name.equals("metadata")) {
-            // TODO
-        } else if (name.equals("keyDescription")) {
-            // TODO
-        } else if (name.equals("attach")) {
-            NodeList nl = e.getChildNodes();
-            IQuery q = parseQuery(e, parentQuery);
-            if (q == null) {
-                // TODO;
-            }
-
-            String triggerStr = e.getAttributeNS(null, "trigger");
-            int trigger = parseTrigger(triggerStr);
-
-            String autoStr = e.getAttributeNS(null, "auto");
-            boolean auto;
-            if (autoStr.length() == 0) {
-                auto = true;
-            } else {
-                auto = parseBoolean(autoStr);
-            }
-            String changelessStr = e.getAttributeNS(null, "changeless");
-            boolean changeless;
-            if (changelessStr.length() == 0) {
-                changeless = false;
-            } else {
-                changeless = parseBoolean(changelessStr);
-            }
-            String waitContentsStr = e.getAttributeNS(null, "waitContents");
-            boolean waitContents;
-            if (waitContentsStr.length() == 0) {
-                waitContents = false;
-            } else {
-                waitContents = parseBoolean(waitContentsStr);
-            }
-
-            FennecMode nextMode = new FennecMode(FennecMode.TYPE_ATTACH, trigger,
-                                             auto, changeless, waitContents);
-
-            FennecMetadata[] mds = parseInternal(nextMode, nl, q);
-            return FennecRecombinantMetadata.newAttach(fennecService, q, mode, nextMode, mds);
-        } else if (name.equals("unwrap")) {
-            NodeList nl = e.getChildNodes();
-            IQuery q = parseQuery(e, parentQuery);
-            if (q == null) {
-                // TODO;
-            }
-
-            String triggerStr = e.getAttributeNS(null, "trigger");
-            int trigger = parseTrigger(triggerStr);
-
-            FennecMode nextMode = new FennecMode(FennecMode.TYPE_UNWRAP, trigger, false, false, false);
-
-            FennecMetadata[] mds = parseInternal(nextMode, nl, q);
-            return FennecRecombinantMetadata.newUnwrap(fennecService, q, mode, nextMode, mds);
-        }
-        return null;
-    }
-
-    private FennecMetadata[] parseInternal(FennecMode mode, NodeList nl, IQuery parentQuery) {
-        ArrayList al = new ArrayList();
-        int len = nl.getLength();
-        for (int i = 0; i < len; i++) {
-            Node n = nl.item(i);
-            if (n.getNodeType() == Node.ELEMENT_NODE) {
-                String ns = n.getNamespaceURI();
-                if (ns.equals(Fennec_NAMESPACE_URI)) {
-                    Element e = (Element) n;
-                    FennecMetadata md = parseInternalForElement(mode, e, parentQuery);
-                    if (md != null) al.add(md);
-                }
-            }
-        }
-        return (FennecMetadata[]) al.toArray(new FennecMetadata[0]);
-    }
-
-    private FennecMetadata parseTop(Element e) {
-        String namespaceURI = e.getNamespaceURI();
-        if (!namespaceURI.equals(Fennec_NAMESPACE_URI)) {
-            error("The namespace URI of the document element must be " + Fennec_NAMESPACE_URI);
-            return null;
-        }
-        String localName = e.getLocalName();
-        if (!(Fennec_DOCUMENT_ELEMENT_NAME.equals(localName))) {
-            error("The document element is not fennec");
-        }
-        FennecMode rootMode = new FennecMode(FennecMode.TYPE_SIMPLE);
-
-        IQuery q = parseQuery(e, null);
-        FennecMetadata[] mds = parseInternal(rootMode, e.getChildNodes(), q);
-        if (mds.length == 0) {
-            return null;
-        }
-        
-        return new FennecGroupMetadata(fennecService, q, rootMode, mds);
-    }
-
-    public FennecMetadata parse(IFennecEntry entry) throws XMLStoreException {
-        FennecEntryImpl ei = (FennecEntryImpl) entry;
-        IXMLInfo info = ei.getIXMLInfo();
-        Node n = info.getRootNode();
-        Element e;
-        if (n instanceof Document) {
-            e = ((Document) n).getDocumentElement();
-        } else if (n instanceof Element) {
-            e = (Element) n;
-        } else {
-            throw new XMLStoreException("Failed to load Fennec.", null);
-        }
-        return parseTop(e);
-    }
-
-    FennecDOMReader(FennecServiceImpl fennecService) {
-        this.fennecService = fennecService;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecEntryImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecEntryImpl.java
deleted file mode 100644
index 83c4183..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecEntryImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.io.File;
-
-import org.eclipse.actf.ai.fennec.IFennecEntry;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
-
-
-
-
-public class FennecEntryImpl implements IFennecEntry {
-    private IXMLInfo info;
-
-    public String getDocumentation() {
-        return info.getDocumentation();
-    }
-
-    public boolean isUserEntry() {
-        return info.isUserEntry();
-    }
-        
-    public IXMLInfo getIXMLInfo() {
-        return info;
-    }
-
-    public FennecEntryImpl(IXMLInfo info) {
-        this.info = info;
-    }
-
-    public boolean export(File dest) {
-        return XMLStoreServiceUtil.getXMLStoreService().exportMetadata(info, dest);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGeneratedMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGeneratedMetadata.java
deleted file mode 100644
index 6aba7e7..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGeneratedMetadata.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.w3c.dom.Node;
-
-
-class FennecGeneratedMetadata extends FennecBundleMetadata {
-    private final Node node;
-    
-    @Override
-    public String getAltText(ITreeItem item) {
-        String r = super.getAltText(item);
-        if (r == null) return null;
-        if (r.length() > 0)
-            return r;
-        if (node instanceof INodeEx) {
-            return ((INodeEx) node).extractString();
-        }
-        return "";
-    }
-
-    @Override
-    public String getDescription(ITreeItem item) {
-        return super.getDescription(item);
-    }
-
-    public short getHeadingLevelByMetadata(ITreeItem item) {
-        return super.getHeadingLevel(item);
-    }
-
-    @Override
-    public short getHeadingLevel(ITreeItem item) {
-        short r = super.getHeadingLevel(item);
-        if (r > 0)
-            return r;
-        if (r == -1)
-            return -1;
-        if (node instanceof INodeEx) {
-            return ((INodeEx) node).getHeadingLevel();
-        }
-        return 0;
-    }
-
-    @Override
-    List expand(TreeItemFennec pItem, int trigger) throws FennecException {
-        ITreeItem[] childItems = pItem.getChildItems();
-        if (!mode.changed(pItem, trigger) && pItem.hasAlreadyChildRefreshed()) {
-            return Arrays.asList(childItems);
-        } else {
-            TreeItemFennec bItem = mode.buildItemContinued(node, pItem);
-            if ((bItem != null) && bItem.hasChild()) {
-                return Arrays.asList(bItem.getChildItems());
-            }
-        }
-        return null;
-    }
-
-    public static FennecGeneratedMetadata generate(FennecRecombinantMetadata metadata, FennecMode mode, Node node,
-            FennecMetadata[] childMds) {
-        return new FennecGeneratedMetadata(metadata.fennecService, mode, node, childMds);
-    }
-
-    private FennecGeneratedMetadata(FennecServiceImpl fennecService, FennecMode mode, Node node, FennecMetadata[] childMds) {
-        super(fennecService, mode, node, childMds);
-        this.node = node;
-    }
-
-    public static FennecMetadata generate(FennecGeneratedMetadata meta, FennecGeneratedMetadata meta2) {
-        FennecMetadata[] childMds = new FennecMetadata[meta.childMetadata.length+meta2.childMetadata.length];
-        for(int i=0; i<meta.childMetadata.length; i++)
-            childMds[i] = meta.childMetadata[i];
-        for(int i=0; i<meta2.childMetadata.length; i++)
-            childMds[meta.childMetadata.length+i] = meta2.childMetadata[i];
-        return new FennecGeneratedMetadata(meta.fennecService, meta.mode, meta.node, childMds);
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGroupMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGroupMetadata.java
deleted file mode 100644
index f30bb69..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecGroupMetadata.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.query.IQuery;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-
-
-class FennecGroupMetadata extends FennecBundleMetadata {
-    
-    public String getAltText(ITreeItem item) {
-        String r = super.getAltText(item);
-        if (r == null) return null;
-        if (r.length() > 0) return r;
-        // If not specified, extract some string from the node.
-        return NodeUtil.extractString(item);
-    }
-
-    public short getHeadingLevel(ITreeItem item) {
-        short r = super.getHeadingLevel(item);
-        if (r > 0) return r;
-        if (r == -1) return -1;
-        Object baseNode = item.getBaseNode();
-        if (baseNode instanceof INodeEx) {
-            return ((INodeEx) baseNode).getHeadingLevel();
-        }
-        return 0;
-    }
-
-    FennecGroupMetadata(FennecServiceImpl fennecService,
-                      IQuery q, FennecMode mode,
-                      FennecMetadata[] childMds) {
-        super(fennecService, q, mode, childMds);
-    }
-
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMetadata.java
deleted file mode 100644
index 97f438f..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMetadata.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.query.IQuery;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-abstract class FennecMetadata {
-    protected final FennecServiceImpl fennecService;
-    private final IQuery query;
-
-    private final boolean hasTarget;
-    public boolean hasTargets() {
-        return hasTarget;
-    }
-
-    private static class EmptyNodeList implements NodeList {
-        public Node item(int index) {
-            return null;
-        }
-
-        public int getLength() {
-            return 0;
-        }
-    }
-    private static final NodeList emptyNodeList = new EmptyNodeList();
-
-    NodeList query(IQuery q, Node baseNode) {
-        if ((q == null) || (!q.hasTarget())) return emptyNodeList;
-        return q.query(baseNode);
-    }
-
-    NodeList query(IQuery q, ITreeItem baseItem) {
-        if ((q == null) || (!q.hasTarget())) return emptyNodeList;
-        Node baseNode;
-        for (baseNode = null;
-            (baseItem != null) && (baseNode == null);
-             baseItem = baseItem.getParent()) {
-            baseNode = (Node) baseItem.getBaseNode();
-        }
-        if (baseNode == null) {
-            baseNode = fennecService.getDocumentElement();
-        }
-        if (baseNode == null) return emptyNodeList;
-        return q.query(baseNode);
-    }
-
-    NodeList query(Node baseNode) {
-        return query(this.query, baseNode);
-    }
-
-    NodeList query(ITreeItem baseItem) {
-        return query(this.query, baseItem);
-    }
-
-    protected final FennecMode mode;
-
-    public abstract String getAltText(ITreeItem item);
-    public abstract String getDescription(ITreeItem item);
-    public abstract short getHeadingLevel(ITreeItem item);
-
-    List buildItems(TreeItemFennec baseItem, Node baseNode, int trigger) throws FennecException {
-        if (hasTargets()) {
-            NodeList nl;
-            if (baseNode != null) {
-                nl = query(baseNode);
-            } else {
-                nl = query(baseItem);
-            }
-            int len = nl.getLength(); 
-            ArrayList result = new ArrayList(len);
-            for (int i = 0; i < len; i++) {
-                Node n = nl.item(i);
-                TreeItemFennec newItem = TreeItemFennec.newTreeItem(this, baseItem, n);
-                if (newItem != null) {
-                    result.add(newItem);
-                }
-            }
-            return result;
-        } else if (this instanceof FennecBundleMetadata) {
-            ArrayList result = new ArrayList(1);
-            TreeItemFennec newItem = TreeItemFennec.newTreeItem(this, baseItem, null);
-            if (newItem != null) {
-                result.add(newItem);
-            }
-            return result;
-        }
-        return null;
-    }
-
-    TreeItemFennec buildRootItem() throws FennecException {
-        List items = buildItems(null, null, FennecMode.TRIGGER_MOVE);
-        if ((items == null) || (items.size() == 0)) {
-            return null;
-        }
-        if (items.size() == 1) {
-            TreeItemFennec root = (TreeItemFennec) items.get(0);
-            return root.expand(FennecMode.TRIGGER_MOVE);
-        } else {
-            TreeItemFennec root = TreeItemFennec.newTreeItem(this, null, fennecService.getDocumentElement());
-            if (root == null) return null;
-            root.setChildItems(items);
-            return root;
-        }
-    }
-
-    abstract List expand(TreeItemFennec pItem, int trigger) throws FennecException;
-
-    protected FennecMetadata(FennecServiceImpl fennecService,
-                           IQuery q, FennecMode mode) {
-        this.fennecService = fennecService;
-        this.query = q;
-        if (q != null) {
-            this.hasTarget = q.hasTarget();
-        } else {
-            this.hasTarget = false;
-        }
-        this.mode = mode;
-        this.mode.addMetadata(this);
-    }
-
-    protected FennecMetadata(FennecServiceImpl fennecService,
-                           FennecMode mode,
-                           Node node) {
-        this.fennecService = fennecService;
-        this.query = null;
-        this.hasTarget = false;
-        this.mode = mode;
-        this.mode.addMetadata(this);
-    }
-
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMode.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMode.java
deleted file mode 100644
index 0026289..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecMode.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.FennecInterruptedException;
-import org.eclipse.actf.ai.fennec.autotranslator.AutoTranslator;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-// TODO I'd like to make it package-local.
-public class FennecMode {
-    static public final int TYPE_SIMPLE = 0;
-
-    static public final int TYPE_ATTACH = 1;
-
-    static public final int TYPE_UNWRAP = 2;
-
-    static public final int TYPE_BUILT = 2;
-
-    static public final int TRIGGER_MOVE = 1 << 0;
-
-    static public final int TRIGGER_CLICK = 1 << 1;
-
-    static public final int TRIGGER_KEEP = 1 << 2;
-
-    static public final int TRIGGER_WITHOUTCHANGE = 1 << 3;
-
-    static public final int TRIGGER_UNWRAP = 1 << 4;
-
-    static public final int TRIGGER_ALWAYS = (TRIGGER_MOVE
-                                              | TRIGGER_CLICK
-                                              | TRIGGER_KEEP
-                                              | TRIGGER_UNWRAP);
-
-    private final int type;
-
-    private final int trigger;
-
-    private final boolean automatic;
-
-    private final boolean changeless;
-
-    private final boolean waitContents;
-
-    private FennecRecombinantMetadata baseMetadata;
-
-    private List<FennecMetadata> belongingMetadata;
-
-    private HashMap<Node, ArrayList<FennecMetadata>> metadataMap;
-
-    void addMetadata(FennecMetadata md) {
-        if (false) {
-            // A mode manages its belonging metadata in order to manage substate, but
-            // currently it is not used...  So now this part is disabled.
-            if (belongingMetadata == null) {
-                belongingMetadata = new ArrayList<FennecMetadata>();
-            }
-            belongingMetadata.add(md);
-        }
-    }
-
-    void setBaseMetadata(FennecRecombinantMetadata md) {
-        this.baseMetadata = md;
-    }
-
-    boolean changed(TreeItemFennec pItem, int trigger) {
-        // TODO:
-        // return true;
-        if ((trigger & TRIGGER_WITHOUTCHANGE) != 0)
-            return false;
-        if (changeless)
-            return false;
-        return true;
-    }
-
-    private TreeItemFennec currentTopItem;
-
-    TreeItemFennec buildItem(Node n, TreeItemFennec pItem) {
-        currentTopItem = pItem;
-        TreeItemFennec item = AutoTranslator.translate(this, pItem, n);
-        if (pItem != null)
-            pItem.markRefreshedChild();
-        return item;
-    }
-
-    TreeItemFennec buildItemContinued(Node n, TreeItemFennec item) {
-        currentTopItem = null;
-        TreeItemFennec newItem = AutoTranslator.translateContinued(this, item, n);
-        if (newItem != null)
-            newItem.markRefreshedChild();
-        return newItem;
-    }
-
-    private FennecMetadata[] topMds;
-
-    private FennecMetadata[] initMetadataMap(FennecMetadata[] mds, Node n) {
-        if (topMds != null) return topMds;
-
-        metadataMap = new HashMap<Node, ArrayList<FennecMetadata>>();
-        ArrayList<FennecMetadata> mdList = new ArrayList<FennecMetadata>();
-        for (int i = 0; i < mds.length; i++) {
-            if (mds[i].hasTargets()) {
-                registMetadata(metadataMap, mds[i], n);
-            } else {
-                mdList.add(mds[i]);
-            }
-        }
-        topMds = mdList.toArray(new FennecMetadata[mdList.size()]);
-        return topMds;
-    }
-
-    public TreeItemFennec generateItem(TreeItemFennec pItem, Node n) {
-        FennecMetadata[] cmds = null;
-
-        FennecMetadata[] mds = baseMetadata.getChildMetadata();
-        if (mds != null) {
-            if (currentTopItem == pItem) {
-                // This item is top.
-                cmds = initMetadataMap(mds, n);
-            } else {
-                initMetadataMap(mds, n);
-                ArrayList<FennecMetadata> aMeta = metadataMap.get(n);
-                if (aMeta != null) {
-                    cmds = (FennecMetadata[]) aMeta.toArray(new FennecMetadata[aMeta.size()]);
-                }
-            }
-        }
-        FennecMetadata md = FennecGeneratedMetadata.generate(baseMetadata, this, n, cmds);
-
-        return TreeItemFennec.newTreeItem(md, pItem, n);
-    }
-
-    private void registMetadata(HashMap<Node, ArrayList<FennecMetadata>> metaMap, FennecMetadata meta, Node base) {
-        NodeList list = meta.query(base);
-        
-        for (int i = 0; i < list.getLength(); i++) {
-            Node node = list.item(i);
-            ArrayList<FennecMetadata> aMeta = metaMap.get(node);
-            if (aMeta == null) {
-                aMeta = new ArrayList<FennecMetadata>();
-                metaMap.put(node, aMeta);
-            }
-            if (meta instanceof FennecBundleMetadata) {
-                FennecMetadata[] m = ((FennecBundleMetadata) meta).childMetadata;
-                for (int j = 0; j < m.length; j++) {
-                    if (m[j].hasTargets()) {
-                        registMetadata(metaMap, m[j], node);
-                    } else {
-                        aMeta.add(m[j]);
-                    }
-                }
-            }
-        }
-    }
-
-    private List autoAttach(TreeItemFennec pItem, NodeList nl, int len, int trigger) throws FennecException {
-        List l = new ArrayList(len);
-
-        for (int i = 0; i < len; i++) {
-            Node n = nl.item(i);
-            /*
-             if (n instanceof CacheableNode) {
-             CachableNode cn = (CachableNode) cn;
-             if (!cn.isChanged()) {
-             } else {
-             }
-             }
-             */
-            TreeItemFennec newItem = buildItem(n, pItem);
-            if (newItem != null)
-                l.add(newItem);
-        }
-        if (l.size() == 0) {
-            if (this.trigger == TRIGGER_CLICK) {
-                throw new FennecInterruptedException("Could not attach the expected nodes.");
-            }
-            return null;
-        }
-        if (waitContents && (l.size() == 0)) {
-            throw new FennecInterruptedException("Contents have not been prepared yet.");
-        }
-        return l;
-    }
-
-    private List manualAttach(TreeItemFennec pItem, NodeList nl, int len, int trigger) throws FennecException {
-        List l = new ArrayList(len);
-
-        FennecMetadata[] childMds = baseMetadata.getChildMetadata();
-        for (int j = 0; j < len; j++) {
-            for (int i = 0; i < childMds.length; i++) {
-                FennecMetadata md = childMds[i];
-                List l2 = md.buildItems(pItem, nl.item(j), trigger);
-                if (l2 != null) {
-                    if (l2.size() > 0) {
-                        l.addAll(l2);
-                    } else if (waitContents) {
-                        throw new FennecInterruptedException("Contents have not been prepared yet.");
-                    }
-                }
-            }
-        }
-
-        return l;
-    }
-
-    private List unwrap(TreeItemFennec pItem, NodeList nl, int len, int trigger) {
-        //TODO
-        return null;
-    }
-
-    // TODO:
-    private HashMap cachedResult = new HashMap();
-
-    List expand(TreeItemFennec pItem, Node baseNode, int trigger) throws FennecException {
-        if ((trigger != TRIGGER_KEEP) && ((trigger & this.trigger) == 0)) {
-            return null;
-        }
-        Object key;
-        if (baseNode != null) {
-            key = baseNode;
-        } else if (pItem == null) {
-            key = null;
-        } else {
-            key = pItem.getBaseNode();
-        }
-        if (!changed(pItem, trigger)) {
-            List l = (List) cachedResult.get(key);
-            if (l != null)
-                return l;
-        }
-
-        NodeList nl;
-        if (baseNode != null) {
-            nl = baseMetadata.query(baseNode);
-        } else {
-            nl = baseMetadata.query(pItem);
-        }
-        int len = nl.getLength();
-        List result = null;
-        switch (type) {
-        case TYPE_ATTACH:
-            if (len == 0) {
-                if (this.trigger == TRIGGER_CLICK) {
-                    throw new FennecInterruptedException("Could not attach the expected nodes.");
-                }
-                return null;
-            }
-            if (automatic) {
-                result = autoAttach(pItem, nl, len, trigger);
-            } else {
-                result = manualAttach(pItem, nl, len, trigger);
-            }
-            cachedResult.put(key, result);
-            return result;
-        case TYPE_UNWRAP:
-            // TODO;
-        }
-
-        return result;
-    }
-
-    FennecMode(int type, int trigger, boolean automatic, boolean changeless, boolean waitContents) {
-        this.type = type;
-        this.trigger = trigger;
-        this.automatic = automatic;
-        this.changeless = changeless;
-        this.waitContents = waitContents;
-    }
-
-    FennecMode(int type) {
-        this.type = type;
-        this.trigger = TRIGGER_ALWAYS;
-        this.automatic = false;
-        this.changeless = false;
-        this.waitContents = false;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecRecombinantMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecRecombinantMetadata.java
deleted file mode 100644
index 8b077a4..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecRecombinantMetadata.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.query.IQuery;
-import org.w3c.dom.Node;
-
-
-class FennecRecombinantMetadata extends FennecBundleMetadata {
-    static public final int TYPE_SIMPLE = 0;
-    static public final int TYPE_ATTACH = 1;
-    static public final int TYPE_UNWRAP = 2;
-
-    private final int type;
-    private FennecMode nextMode;
-
-    public FennecMode getNextMode() {
-        return nextMode;
-    }
-
-    List expand(TreeItemFennec pItem, int trigger) throws FennecException {
-        return nextMode.expand(pItem, null, trigger);
-    }
-
-    List buildItems(TreeItemFennec baseItem, Node baseNode, int trigger) throws FennecException {
-        return nextMode.expand(baseItem, baseNode, trigger);
-    }
-
-    TreeItemFennec buildRootItem() throws FennecException {
-        TreeItemFennec root = super.buildRootItem();
-        if (root == null) {
-            throw new FennecException("Fennec.EMPTY_PAGE", null);            
-        }
-        return root;
-    }
-
-
-    static FennecRecombinantMetadata newAttach(FennecServiceImpl fennecService,
-                                             IQuery q, FennecMode mode,
-                                             FennecMode nextMode,
-                                             FennecMetadata[] mds) {
-        FennecRecombinantMetadata md = new FennecRecombinantMetadata(fennecService,
-                                                                 q, mode,
-                                                                 nextMode, mds,
-                                                                 TYPE_ATTACH);
-        return md;
-    }
-
-    static FennecRecombinantMetadata newUnwrap(FennecServiceImpl fennecService,
-                                             IQuery q, FennecMode mode,
-                                             FennecMode nextMode,
-                                             FennecMetadata[] mds) {
-        FennecRecombinantMetadata md = new FennecRecombinantMetadata(fennecService,
-                                                                 q, mode,
-                                                                 nextMode, mds,
-                                                                 TYPE_UNWRAP);
-        return md;
-    }
-
-    private FennecRecombinantMetadata(FennecServiceImpl fennecService,
-                                    IQuery q,
-                                    FennecMode mode,
-                                    FennecMode nextMode,
-                                    FennecMetadata[] mds,
-                                    int type) {
-        super(fennecService, q, mode, mds);
-        this.type = type;
-        this.nextMode = nextMode;
-        nextMode.setBaseMetadata(this);
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecServiceImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecServiceImpl.java
deleted file mode 100644
index 5fe20ec..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecServiceImpl.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.IFennecEntry;
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.FennecInterruptedException;
-import org.eclipse.actf.ai.fennec.treemanager.IAccessKeyList;
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerException;
-import org.eclipse.actf.ai.query.IQuery;
-import org.eclipse.actf.ai.query.QueryService;
-import org.eclipse.actf.model.dom.dombycom.AnalyzedResult;
-import org.eclipse.actf.model.dom.dombycom.IDocumentEx;
-import org.eclipse.actf.model.dom.dombycom.IFlashNode;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.eclipse.actf.util.vocab.IProposition;
-import org.eclipse.actf.util.vocab.Vocabulary;
-import org.w3c.dom.Element;
-
-
-public class FennecServiceImpl implements IFennecService {
-    private FennecMetadata rootMetadata;
-
-    private int status;
-
-    private TreeItemFennec lastItem;
-
-    private IDocumentEx document;
-
-    private Element root;
-
-    private AnalyzedResult analyzedResult;
-
-    Element getDocumentElement() {
-        return root;
-    }
-
-    private void initDefaultMetadata() {
-        FennecMode rootMode = new FennecMode(FennecMode.TYPE_SIMPLE);
-        FennecMode nextMode = new FennecMode(FennecMode.TYPE_ATTACH, FennecMode.TRIGGER_ALWAYS, true, false, false);
-        // /HTML/FRAMESET/FRAME/HTML/BODY
-        //IQuery q = QueryService.createFromXPath("/HTML/BODY|/HTML/FRAMESET//FRAME/HTML/BODY");
-        //IQuery q = QueryService.createFromXPath("//HTML/BODY");
-        IQuery q = QueryService.createFromXPath("/HTML");
-        FennecMetadata[] mds = new FennecMetadata[1];
-        mds[0] = FennecRecombinantMetadata.newAttach(this, q, rootMode, nextMode, null);
-        rootMetadata = new FennecGroupMetadata(this, null, rootMode, mds);
-    }
-
-    public FennecServiceImpl(IFennecEntry entry, IDocumentEx document) throws FennecException {
-        this.document = document;
-        this.root = document.getDocumentElement();
-        try {
-            FennecDOMReader reader = new FennecDOMReader(this);
-            rootMetadata = reader.parse(entry);
-            this.status = UNINIT;
-        } catch (Exception e) {
-            throw new FennecException("Failed to load Fennec data.", e);
-        }
-    }
-
-    public FennecServiceImpl(IDocumentEx document) {
-        this.document = document;
-        this.root = document.getDocumentElement();
-        initDefaultMetadata();
-    }
-
-    public int getStatus() {
-        return status;
-    }
-
-    public int analyze() throws FennecException {
-        analyzedResult = new AnalyzedResult();
-        if (root instanceof INodeEx) {
-            cachedVideoControl = null;
-            cachedSoundControl = null;
-            analyzedResult = ((INodeEx) root).analyze(analyzedResult);
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    private ISoundControl cachedSoundControl;
-
-    private IVideoControl cachedVideoControl;
-
-    private IAccessKeyList cachedAccessKeyList;
-    
-    private IFlashNode[] cachedFlashTopNodes;
-
-    public int initialize() throws FennecException {
-        if (analyzedResult == null) {
-            analyze();
-        }
-        lastItem = rootMetadata.buildRootItem();
-        if (lastItem == null) {
-            throw new FennecException("Failed to initialize", null);
-        }
-        status = NORMAL;
-        return ITreeManager.MOVED;
-    }
-
-    public ITreeItem getLastTreeItem() {
-        return lastItem;
-    }
-
-    private int update(ITreeItem target, int trigger) throws FennecException {
-        TreeItemFennec targetItem = (TreeItemFennec) target;
-        if (targetItem.getParent() == null) {
-            return initialize();
-        } else {
-            targetItem = targetItem.expand(trigger);
-            if (targetItem == null) {
-                return ITreeManager.NOACTION;
-            }
-        }
-        if (targetItem == null) {
-            status = UNINIT;
-            throw new FennecInterruptedException("Lost my way"); // $ NON-NLS-1
-        }
-        lastItem = targetItem;
-        return ITreeManager.MOVED;
-    }
-
-    public int moveUpdate(ITreeItem target) throws FennecException {
-        return update(target, FennecMode.TRIGGER_MOVE);
-    }
-
-    public int moveUpdate(ITreeItem target, boolean update) throws FennecException {
-        if (update) {
-            return update(target, FennecMode.TRIGGER_MOVE);
-        } else {
-            return update(target, FennecMode.TRIGGER_MOVE | FennecMode.TRIGGER_WITHOUTCHANGE);
-        }
-    }
-
-    public int clickUpdate(ITreeItem target) throws FennecException {
-        return update(target, FennecMode.TRIGGER_CLICK) | ITreeManager.CLICKED;
-    }
-
-    private int searchForwardChildren(int idx, TreeItemFennec item, IProposition proposition) throws FennecException {
-        int st;
-        item = item.expandChildItems(FennecMode.TRIGGER_KEEP);
-        ITreeItem[] childItems = item.getChildItems();
-        for (int i = idx; i < childItems.length; i++) {
-            TreeItemFennec cItem = (TreeItemFennec) childItems[i];
-            if (proposition.eval(cItem)) {
-                return moveUpdate(cItem) | ITreeManager.FOUND;
-            }
-            st = searchForwardChildren(0, cItem, proposition);
-            if ((st & ITreeManager.FOUND) != 0)
-                return st;
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    private int searchForwardInternal(int idx, TreeItemFennec item, IProposition proposition) throws FennecException {
-        int st = searchForwardChildren(idx, item, proposition);
-        if ((st & ITreeManager.FOUND) != 0)
-            return st;
-        TreeItemFennec pItem = (TreeItemFennec) item.getParent();
-        if (pItem == null)
-            return ITreeManager.NOACTION;
-        st = searchForwardInternal(item.getNth() + 1, pItem, proposition);
-        if ((st & ITreeManager.FOUND) != 0)
-            return st;
-
-        return ITreeManager.NOACTION;
-    }
-
-    public ITreeItem[] getSiblings() throws TreeManagerException {
-        ITreeItem parent = lastItem.getParent();
-        if (parent == null) {
-            ITreeItem[] itas = new ITreeItem[1];
-            itas[0] = lastItem;
-            return itas;
-        }
-        return parent.getChildItems();
-    }
-
-    public int searchForward(IProposition proposition) throws FennecException {
-        return searchForwardInternal(0, lastItem, proposition);
-    }
-
-    private int searchBackwardInternal(boolean first, TreeItemFennec item, IProposition proposition) throws FennecException {
-        TreeItemFennec pItem = (TreeItemFennec) item.getParent();
-        if (pItem == null)
-            return ITreeManager.NOACTION;
-        int nth = item.getNth() - 1;
-        if (nth < 0) {
-            if (proposition.eval(pItem)) {
-                return moveUpdate(pItem) | ITreeManager.FOUND;
-            }
-            return searchBackwardInternal(false, pItem, proposition);
-        }
-        if (first) {
-            pItem = pItem.expandChildItems(FennecMode.TRIGGER_KEEP);
-        }
-        ITreeItem[] siblings = pItem.getChildItems();
-        if (nth >= siblings.length) {
-            nth = siblings.length - 1;
-        }
-        item = (TreeItemFennec) siblings[nth];
-
-        while (true) {
-            item = item.expandChildItems(FennecMode.TRIGGER_KEEP);
-            ITreeItem[] childItems = item.getChildItems();
-            if (childItems.length == 0)
-                break;
-            item = (TreeItemFennec) childItems[childItems.length - 1];
-        }
-        if (proposition.eval(item)) {
-            return moveUpdate(item) | ITreeManager.FOUND;
-        }
-        return searchBackwardInternal(false, item, proposition);
-    }
-
-    public int searchBackward(IProposition predicate) throws FennecException {
-        return searchBackwardInternal(true, lastItem, predicate);
-    }
-
-    public ISoundControl getSoundControl() {
-        if (cachedSoundControl == null) {
-            cachedSoundControl = TreeItemSoundControl.newTreeItemSoundControl(analyzedResult);
-        }
-        return cachedSoundControl;
-    }
-
-    public IVideoControl getVideoControl() {
-        if (cachedVideoControl == null) {
-            cachedVideoControl = TreeItemVideoControl.newTreeItemVideoControl(analyzedResult, this);
-        }
-        return cachedVideoControl;
-    }
-    
-    public IAccessKeyList getAccessKeyList() {
-        if (cachedAccessKeyList == null) {
-            cachedAccessKeyList = TreeItemAccessKeyList.newAccessKeyList(analyzedResult);
-        }
-        return cachedAccessKeyList;
-    }
-
-    public IFlashNode[] getFlashTopNodes() {
-        if (cachedFlashTopNodes == null) {
-            cachedFlashTopNodes = analyzedResult.getFlashTopNodes();
-        }
-        return cachedFlashTopNodes;
-    }
-
-    private void expandWholeTreeInternal(TreeItemFennec item) throws FennecException {
-        item = item.expandChildItems(FennecMode.TRIGGER_KEEP);
-        ITreeItem[] childItems = item.getChildItems();
-        for (int i = 0; i < childItems.length; i++) {
-            expandWholeTreeInternal((TreeItemFennec) childItems[i]);
-        }
-    }
-
-    private int skipToNode(Element e) throws FennecException {
-        initialize();
-        return searchForward(Vocabulary.nodeLocation(e, false));
-    }
-
-    public int skipToAnchor(String target) throws FennecException {
-        Element el = document.getTargetElement(target);
-        if (el != null)
-            return skipToNode(el);
-        return ITreeManager.NOACTION;
-    }
-
-    public ITreeItem expandWholeTree() throws FennecException {
-        initialize();
-        if (lastItem instanceof TreeItemFennec) {
-            expandWholeTreeInternal((TreeItemFennec) lastItem);
-        }
-        return lastItem;
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecSimpleMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecSimpleMetadata.java
deleted file mode 100644
index 626955e..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecSimpleMetadata.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.query.IQuery;
-import org.w3c.dom.NodeList;
-
-
-class FennecSimpleMetadata extends FennecMetadata {
-    static public final int TYPE_ALT_TEXT = 1;
-    static public final int TYPE_DESCRIPTION = 2;
-    static public final int TYPE_HEADER = 3;
-
-    private short headingLevel;
-    private int type;
-
-    private List stringFormat;
-
-    public short getHeadingLevel(ITreeItem item) {
-        return headingLevel;
-    }
-    
-    public String getString(ITreeItem item) {
-        StringBuffer buf = new StringBuffer();
-        if (stringFormat == null) return null;
-        Iterator it = stringFormat.iterator();
-        while (it.hasNext()) {
-            Object o = it.next();
-            if (o instanceof String) {
-                buf.append((String) o);
-            } else if (o instanceof IQuery) {
-                IQuery q = (IQuery) o;
-                NodeList nl = query(q, item);
-                String str = NodeUtil.extractString(nl);
-                buf.append(str);
-            }
-        }
-        return buf.toString();
-    }
-
-    public String getAltText(ITreeItem item) {
-        if (type == TYPE_ALT_TEXT) return getString(item);
-        return "";
-    }
-
-    public String getDescription(ITreeItem item) {
-        if (type == TYPE_DESCRIPTION) return getString(item);
-        return "";
-    }
-
-    static FennecSimpleMetadata newHeader(FennecServiceImpl fennecService,
-                                        IQuery q, FennecMode mode, short level) {
-        FennecSimpleMetadata md = new FennecSimpleMetadata(fennecService, q, mode);
-        md.type = TYPE_HEADER;
-        md.headingLevel = level;
-        return md;
-    }
-
-    static FennecSimpleMetadata newAltText(FennecServiceImpl fennecService,
-                                         IQuery q, FennecMode mode, List stringFormat) {
-        FennecSimpleMetadata md = new FennecSimpleMetadata(fennecService, q, mode);
-        md.type = TYPE_ALT_TEXT;
-        md.stringFormat = stringFormat;
-        return md;
-    }
-
-    static FennecSimpleMetadata newDescription(FennecServiceImpl fennecService,
-                                             FennecMode mode, IQuery q, List stringFormat) {
-        FennecSimpleMetadata md = new FennecSimpleMetadata(fennecService, q, mode);
-        md.type = TYPE_DESCRIPTION;
-        md.stringFormat = stringFormat;
-        return md;
-    }
-
-    private FennecSimpleMetadata(FennecServiceImpl fennecService,
-                               IQuery q, FennecMode mode) {
-        super(fennecService, q, mode);
-    }
-
-    List expand(TreeItemFennec pItem, int trigger) throws FennecException {
-        return null;
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableMetadata.java
deleted file mode 100644
index a2befb7..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableMetadata.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.query.IQuery;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-
-
-class FennecTableMetadata extends FennecBundleMetadata {
-    private final FennecTableRowMetadata[] rowMds;
-
-    public int getRowSize() {
-        return rowMds.length;
-    }
-
-    public FennecTableRowMetadata getRow(int idx) {
-        return rowMds[idx];
-    }
-    
-    public String getAltText(ITreeItem item) {
-        String r = super.getAltText(item);
-        if (r.length() > 0) return r;
-        // If not specified, extract some string from the node.
-        return NodeUtil.extractString(item);
-    }
-
-    public short getHeadingLevel(ITreeItem item) {
-        short r = super.getHeadingLevel(item);
-        if (r > 0) return r;
-        if (r == -1) return -1;
-        Object baseNode = item.getBaseNode();
-        if (baseNode instanceof INodeEx) {
-            return ((INodeEx) baseNode).getHeadingLevel();
-        }
-        return 0;
-    }
-
-    FennecTableMetadata(FennecServiceImpl fennecService,
-                      IQuery q, FennecMode mode,
-                      FennecMetadata[] childMds,
-                      FennecTableRowMetadata[] rowMds) {
-        super(fennecService, q, mode, childMds);
-        this.rowMds = rowMds;
-    }
-
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableRowMetadata.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableRowMetadata.java
deleted file mode 100644
index f96c912..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/FennecTableRowMetadata.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.w3c.dom.Node;
-
-class FennecTableRowMetadata extends FennecBundleMetadata {
-
-	protected FennecTableRowMetadata(FennecServiceImpl fennecService,
-                                       FennecMode mode,
-                                       Node node,
-                                       FennecMetadata[] mds) {
-		super(fennecService, mode, node, mds);
-	}
-}
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/NodeUtil.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/NodeUtil.java
deleted file mode 100644
index e65e3a1..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/NodeUtil.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-
-
-public class NodeUtil {
-    private static StringBuffer extractNodeString(StringBuffer buf, Node n) {
-        if (n instanceof INodeEx) {
-            INodeEx n2 = (INodeEx) n;
-            
-            // TODO: should be rewritten!!
-            // changed by daisuke
-            String n2String = n2.extractString();
-            buf.append(n2String);
-            if (n2String != null && n2String.length() > 0) // if node has text
-                buf.append(" "); // insert default separator
-        }
-        NodeList nl = n.getChildNodes();
-        int len = nl.getLength();
-        for (int i = 0; i < len; i++) {
-            buf = extractNodeString(buf, nl.item(i));
-        }
-        return buf;
-    }
-
-    public static String extractString(NodeList nl) {
-        StringBuffer buf = new StringBuffer();
-        int len = nl.getLength();
-        for (int i = 0; i < len; i++) {
-            Node n = nl.item(i);
-            buf = extractNodeString(buf, n);
-        }
-        return buf.toString();
-    }
-
-    public static String extractString(Node n) {
-        StringBuffer buf = new StringBuffer();
-        buf = extractNodeString(buf, n);
-        return buf.toString();
-    }
-
-    public static String extractString(ITreeItem item) {
-        Node baseNode = (Node) item.getBaseNode();
-        if (baseNode != null) {
-            return extractString(baseNode);
-        }
-        return "";
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TableImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TableImpl.java
deleted file mode 100644
index c7c8532..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TableImpl.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITable;
-import org.eclipse.actf.ai.fennec.treemanager.ITableRow;
-
-
-
-public class TableImpl implements ITable {
-    private FennecTableMetadata tableMetadata;
-
-    public ITableRow getRow(int row) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public int getColumnSize() {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int getRowSize() {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public String getTableString() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemAccessKeyList.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemAccessKeyList.java
deleted file mode 100644
index b8d22c8..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemAccessKeyList.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.IAccessKeyList;
-import org.eclipse.actf.model.dom.dombycom.AnalyzedResult;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-
-
-
-
-public class TreeItemAccessKeyList implements IAccessKeyList {
-    INodeEx[] accessKeyNodes;
-
-    public TreeItemAccessKeyList(AnalyzedResult analyzedResult) {
-        accessKeyNodes = analyzedResult.getAccessKeyNodes();
-    }
-
-    public char getAccessKeyAt(int index) {
-        if (accessKeyNodes.length <= index)
-            return 0;
-        return accessKeyNodes[index].getAccessKey();
-    }
-
-    public String getUIStringAt(int index) {
-        // TODO
-        return "";
-    }
-
-    public int size() {
-        return accessKeyNodes.length;
-    }
-
-    public static IAccessKeyList newAccessKeyList(AnalyzedResult analyzedResult) {
-        return new TreeItemAccessKeyList(analyzedResult);
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemFennec.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemFennec.java
deleted file mode 100644
index be59fef..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemFennec.java
+++ /dev/null
@@ -1,490 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerException;
-import org.eclipse.actf.ai.query.QueryService;
-import org.eclipse.actf.model.dom.dombycom.IElementEx;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.eclipse.actf.model.dom.dombycom.ISelectElement;
-import org.eclipse.actf.model.dom.dombycom.IElementEx.Position;
-import org.eclipse.actf.util.vocab.AbstractTerms;
-import org.eclipse.actf.util.vocab.IEvalTarget;
-import org.eclipse.actf.util.vocab.Vocabulary;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-// TODO I'd like to make it package-local.
-public class TreeItemFennec implements ITreeItem {
-    static private final TreeItemFennec[] emptyChild = new TreeItemFennec[0];
-
-    private Node baseNode;
-
-    private ITreeItem parent;
-
-    private ITreeItem[] childItems;
-
-    private FennecMetadata metadata;
-
-    private boolean hasAlreadyChildRefreshed;
-
-    private int nth;
-
-    private TreeItemTerms terms;
-
-    // for terms
-    int distance = 0;
-    
-    public static TreeItemFennec newTreeItem(FennecMetadata metadata, ITreeItem parent, Node baseNode) {
-        if (baseNode == null) {
-            // TODO
-            return new TreeItemFennec(metadata, parent, null, new TreeItemTerms(null));
-        }
-        if (!(baseNode instanceof IEvalTarget)) return null;
-        IEvalTarget evalTarget = (IEvalTarget) baseNode;
-        return new TreeItemFennec(metadata, parent, baseNode, new TreeItemTerms(evalTarget)); 
-    }
-
-    protected TreeItemFennec(FennecMetadata metadata,
-                           ITreeItem parent, Node baseNode,
-                           TreeItemTerms terms) {
-        this.terms = terms;
-        this.metadata = metadata;
-        this.parent = parent;
-        this.baseNode = baseNode;
-        this.childItems = emptyChild;
-        this.nth = 0;
-    }
-    
-
-    public AbstractTerms getTerms() {
-        return terms;
-    }
-
-    public ITreeItem getParent() {
-        return parent;
-    }
-
-    public int getNth() {
-        return nth;
-    }
-
-    private void setAsRoot() {
-        this.parent = null;
-    }
-
-    private void setParent() {
-        for (int i = 0; i < childItems.length; i++) {
-            TreeItemFennec c = (TreeItemFennec) childItems[i];
-            c.parent = this;
-            c.nth = i;
-        }
-    }
-
-    public void setChildItems(List items) {
-        if (items == null) {
-            this.childItems = emptyChild;
-        } else {
-            this.childItems = (ITreeItem[]) items.toArray(emptyChild);
-        }
-        setParent();
-    }
-
-    public void setChildItems(ITreeItem[] items) {
-        if (items == null) {
-            this.childItems = emptyChild;
-        } else {
-            this.childItems = items;
-        }
-        setParent();
-    }
-
-    public void appendChildItems(ITreeItem[] items) {
-        if (items == null)
-            return;
-        ITreeItem[] newItems = new ITreeItem[childItems.length + items.length];
-        int i, j;
-        for (i = 0; i < childItems.length; i++) {
-            newItems[i] = childItems[i];
-        }
-        for (j = 0; j < items.length; i++, j++) {
-            TreeItemFennec c = (TreeItemFennec) items[j];
-            c.parent = this;
-            newItems[i] = c;
-        }
-        this.childItems = newItems;
-    }
-
-    public boolean hasChild() {
-        return (childItems.length > 0);
-    }
-
-    public void forceParent(ITreeItem parent) {
-        this.parent = parent;
-    }
-
-    void markRefreshedChild() {
-        hasAlreadyChildRefreshed = true;
-    }
-
-    boolean hasAlreadyChildRefreshed() {
-        return hasAlreadyChildRefreshed;
-    }
-
-    TreeItemFennec expandChildItems(int trigger) throws FennecException {
-        List newChildItems = metadata.expand(this, trigger);
-        setChildItems(newChildItems);
-        return this;
-    }
-
-    private Node getNearestNodeInternal(int idx) {
-        if (baseNode != null) return baseNode;
-        for (; idx < childItems.length; idx++) {
-            TreeItemFennec item = (TreeItemFennec) childItems[idx];
-            return item.getNearestNodeInternal(0);
-        }
-        if (parent == null) return null;
-        return ((TreeItemFennec) parent).getNearestNodeInternal(getNth());
-    }
-
-    Node getNearestNode() {
-        return getNearestNodeInternal(0);
-    }
-
-    private TreeItemFennec autoUnwrap(int trigger) throws FennecException {
-        TreeItemFennec item = this;
-
-        for (;;) {
-            TreeItemFennec parent = (TreeItemFennec) item.getParent();
-            if (parent == null) {
-                item.setChildItems(emptyChild);
-                return item;
-            }
-            int idx = item.getNth();
-            List newSiblings = parent.metadata.expand(parent, (FennecMode.TRIGGER_KEEP
-                                                               | FennecMode.TRIGGER_UNWRAP));
-            if (newSiblings != null) {
-                int newSize = newSiblings.size();
-                if (newSize > 0) {
-                    if (idx >= newSize) idx = newSize - 1;
-                    item = (TreeItemFennec) newSiblings.get(idx);
-
-                    item = item.expandChildItems(trigger);
-                    // success. Set parent's childItems.
-                    parent.setChildItems(newSiblings);
-                    return item;
-                }
-            }
-            item = parent;
-        }
-    }
-
-    TreeItemFennec expand(int trigger) throws FennecException {
-        TreeItemFennec parent = (TreeItemFennec) getParent();
-        if (parent != null) {
-            int idx = getNth();
-            List newSiblings = parent.metadata.expand(parent, FennecMode.TRIGGER_KEEP);
-            if (newSiblings == null) {
-                return parent.autoUnwrap(trigger);
-            }
-            int newSize = newSiblings.size();
-            if (newSize == 0) {
-                return parent.autoUnwrap(trigger);
-            }
-            if (idx >= newSize) {
-                idx = newSize - 1;
-            }
-            TreeItemFennec newTarget = (TreeItemFennec) newSiblings.get(idx);
-            newTarget = newTarget.expandChildItems(trigger);
-            // success. Set parent's childItems.
-            parent.setChildItems(newSiblings);
-            return newTarget;
-        } else {
-            List newChildItems = metadata.expand(this, trigger);
-            setChildItems(newChildItems);
-            this.setAsRoot();
-            return this;
-        }
-    }
-
-    public ITreeItem[] getChildItems() {
-        return childItems;
-    }
-
-    public String getUIString() {
-        if (metadata != null) {
-            String r = metadata.getAltText(this);
-            if (r == null)
-                return "";
-            if (r.length() > 0)
-                return r;
-        }
-        if (baseNode instanceof INodeEx) {
-            INodeEx node2 = (INodeEx) baseNode;
-            return node2.extractString();
-        }
-        return "";
-    }
-
-    public String getDescription() {
-        if (metadata != null) {
-            String r = metadata.getDescription(this);
-            if (r == null)
-                return "";
-            if (r.length() > 0)
-                return r;
-        }
-        return "";
-    }
-
-    public String getNodeString() {
-        if (baseNode != null) {
-            return baseNode.getNodeName();
-        }
-        return "No Node";
-    }
-
-    public short getHeadingLevel() {
-        if (metadata != null)
-            return metadata.getHeadingLevel(this);
-        else
-            return 0;
-    }
-
-    public String getLinkURI() {
-        if (baseNode instanceof INodeEx) {
-            INodeEx node2 = (INodeEx) baseNode;
-            return node2.getLinkURI();
-        }
-        return null;
-    }
-
-    public Object getBaseNode() {
-        return baseNode;
-    }
-    
-    public FennecMetadata getMetadata() {
-        return metadata;
-    }
-
-    public int doClick() throws TreeManagerException {
-        if (baseNode instanceof INodeEx) {
-            ((INodeEx) baseNode).doClick();
-            return ITreeManager.CLICKED;
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    public int stay() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int highlight() throws TreeManagerException {
-        if (baseNode instanceof INodeEx) {
-            ((INodeEx) baseNode).highlight();
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    public int unhighlight() throws TreeManagerException {
-        if (baseNode instanceof INodeEx) {
-            ((INodeEx) baseNode).unhighlight();
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    public boolean setFocus() {
-        if (baseNode instanceof INodeEx) {
-            ((INodeEx) baseNode).setFocus();
-        }
-        return false;
-    }
-
-    // !FN!
-    public boolean isInputable() {
-        if (baseNode instanceof IEvalTarget) {
-            return Vocabulary.isInputable().eval((IEvalTarget) baseNode);
-        }
-        return false;
-    }
-
-    // !FN!
-    public boolean isClickable() {
-        if (baseNode instanceof IEvalTarget) {
-            return Vocabulary.isClickable().eval((IEvalTarget) baseNode);
-        }
-        return false;
-    }
-
-    // !FN!
-    public boolean isImage() {
-        if (baseNode instanceof IEvalTarget) {
-            return Vocabulary.isImage().eval((IEvalTarget) baseNode);
-        }
-        return false;
-    }
-
-    // !FN!
-    public String[] getStillPictureData() {
-        if (!(baseNode instanceof INodeEx)) {
-            return new String[3];
-        }
-        return ((INodeEx) baseNode).getStillPictureData();
-    }
-
-    public int setText(String text) throws TreeManagerException {
-        if (baseNode instanceof INodeEx) {
-            ((INodeEx) baseNode).setText(text);
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    public String getText() throws TreeManagerException {
-        if (baseNode instanceof INodeEx) {
-            return ((INodeEx) baseNode).getText();
-        }
-        return "";
-    }
-
-    public void addMetadata(TreeItemFennec item) {
-        if (!(this.metadata instanceof FennecGeneratedMetadata))
-            return;
-        if (!(item.metadata instanceof FennecGeneratedMetadata))
-            return;
-
-        FennecGeneratedMetadata meta = (FennecGeneratedMetadata) this.metadata;
-        FennecGeneratedMetadata meta2 = (FennecGeneratedMetadata) item.metadata;
-
-        this.metadata = FennecGeneratedMetadata.generate(meta, meta2);
-    }
-
-    
-    private Position radioPosition;
-
-    private Position listPosition;
-
-    public int getRadioIndex() {
-        if (baseNode instanceof IElementEx) {
-            if (radioPosition == null)
-                radioPosition = ((IElementEx) baseNode).getRadioPosition();
-            if (radioPosition == null)
-                return 0;
-            return radioPosition.index;
-        }
-        return 0;
-    }
-
-    public int getRadioTotal() {
-        if (baseNode instanceof IElementEx) {
-            if (radioPosition == null)
-                radioPosition = ((IElementEx) baseNode).getRadioPosition();
-            if (radioPosition == null)
-                return 0;
-            return radioPosition.total;
-        }
-        return 0;
-    }
-
-    public int getListIndex() {
-        Node current = baseNode;
-        do {
-            if (current instanceof IElementEx) {
-                if (listPosition == null)
-                    listPosition = ((IElementEx) current).getListPosition();
-                if (listPosition == null)
-                    return 0;
-                return listPosition.index;
-            }
-            current = current.getParentNode();
-        } while (current != null);
-        return 0;
-    }
-
-    public int getListTotal() {
-        Node current = baseNode;
-        do {
-            if (current instanceof IElementEx) {
-                if (listPosition == null)
-                    listPosition = ((IElementEx) current).getListPosition();
-                if (listPosition == null)
-                    return 0;
-                return listPosition.total;
-            }
-            current = current.getParentNode();
-        } while (current != null);
-        return 0;
-    }
-
-    public String getFormLabel() {
-        if (!(baseNode instanceof IElementEx))
-            return "";
-        Element label = ((IElementEx) baseNode).getFormLabel();
-        if (label == null || !(label instanceof INodeEx))
-            return "";
-        NodeList nl = label.getChildNodes();
-        StringBuffer ret = new StringBuffer();
-        for (int i = 0; i < nl.getLength(); i++) {
-            Node node = nl.item(i);
-            if (node instanceof INodeEx)
-                ret.append(((INodeEx) node).extractString());
-        }
-        return ret.toString();
-    }
-
-    public void setSelectedIndices(int[] indices) {
-        if (baseNode instanceof ISelectElement) {
-            ((ISelectElement) baseNode).setSelectedIndices(indices);
-        }
-    }
-
-    public int[] getSelectedIndices() {
-        if (baseNode instanceof ISelectElement) {
-            return ((ISelectElement) baseNode).getSelectedIndices();
-        }
-        return null;
-    }
-
-    public int getOptionsCount() {
-        if (baseNode instanceof ISelectElement) {
-            return ((ISelectElement) baseNode).getOptionsCount();
-        }
-        return 0;
-    }
-
-    public String getOptionTextAt(int index) {
-        if (baseNode instanceof ISelectElement) {
-            return ((ISelectElement) baseNode).getOptionTextAt(index);
-        }
-        return "";
-    }
-
-    // For user annotation.
-    public Node serializeQuery(Node parent) {
-        if (baseNode == null)
-            return null;
-        return QueryService.serializeQuery(baseNode, parent);
-    }
-    
-    public char getAccessKey() {
-        if (baseNode instanceof INodeEx) {
-            return ((INodeEx) baseNode).getAccessKey();
-        }
-        return 0;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemMark.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemMark.java
deleted file mode 100644
index 9d9ca36..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemMark.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.List;
-
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.util.vocab.AbstractTerms;
-import org.eclipse.actf.util.vocab.IEvalTarget;
-
-
-
-
-public class TreeItemMark extends TreeItemFennec {
-    private static class TreeItemMarkTerms extends TreeItemTerms {
-        @Override
-        public boolean hasContent(IEvalTarget target) {
-            return true;
-        }
-
-        @Override
-        public boolean hasReadingContent(IEvalTarget target) {
-            return true;
-        }
-
-        @Override
-        public boolean isFlashLastNode(IEvalTarget node) {
-            if (node instanceof TreeItemMark) {
-                TreeItemMark mark = (TreeItemMark) node;
-                if (mark.getType() == MarkType.FLASH_END) 
-                    return true;
-            }
-            return false;
-        }
-
-        TreeItemMarkTerms() {
-            super(null);
-        }
-    }
-
-    private static TreeItemTerms treeItemMarkTermsInstance = new TreeItemMarkTerms();
-
-    public enum MarkType {
-        FLASH_END
-    }
-
-    @Override
-    public AbstractTerms getTerms() {
-        return treeItemMarkTermsInstance;
-    }
-    
-    private MarkType type;
-    
-    public TreeItemMark(ITreeItem parent, MarkType type) {
-        super(null, parent, null, treeItemMarkTermsInstance);
-        this.type = type;
-    }
-    
-    @Override
-    public String getUIString() {
-        return "";
-    }
-    
-    @Override
-    public String getNodeString() {
-        return "Mark";
-    }
-    
-    public MarkType getType() {
-        return type;
-    }
-    
-    @Override
-    TreeItemFennec expandChildItems(int trigger) throws FennecException {
-        setChildItems((List) null);
-        return this;
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemSoundControl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemSoundControl.java
deleted file mode 100644
index dc8c3d0..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemSoundControl.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.model.dom.dombycom.AnalyzedResult;
-import org.eclipse.actf.model.dom.dombycom.INodeExSound;
-
-
-
-public class TreeItemSoundControl implements ISoundControl {
-    private AnalyzedResult analyzedResult;
-
-    public boolean muteMedia() {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean r = true;
-        for (int i = 0; i < sounds.length; i++) {
-            boolean st = sounds[i].getMuteState();
-            r &= sounds[i].muteMedia(!st);
-        }
-        return r;
-    }
-
-    public VolumeState getVolumeState() {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean mute = true;
-        boolean max = true;
-        boolean min = true;
-        for (int i = 0; i < sounds.length; i++) {
-            mute &= sounds[i].getMuteState();
-            int vol = sounds[i].getVolume();
-            max &= (vol == INodeExSound.VOLUME_MAX);
-            min &= (vol == INodeExSound.VOLUME_MIN);
-        }
-        if (mute) return VolumeState.MUTE;
-        if (max) return VolumeState.MAX;
-        if (min) return VolumeState.MIN;
-
-        return VolumeState.OTHER;
-    }
-
-    private static final int VOLUME_TICK = 150;
-    private static final int VOLUME_TICK_MINIMAL = 10;
-
-    public boolean volumeDownMedia() {
-        return volumeDownMedia(VOLUME_TICK);
-    }
-    
-    public boolean minimalVolumeDownMedia() {
-        return volumeDownMedia(VOLUME_TICK_MINIMAL);
-    }
-    
-    private boolean volumeDownMedia(int tick) {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean r = true;
-        for (int i = 0; i < sounds.length; i++) {
-            int vol = sounds[i].getVolume();
-            if (vol < 0) {
-                return false;
-            } else if (vol < (INodeExSound.VOLUME_MIN + tick)) {
-                vol = INodeExSound.VOLUME_MIN;
-            } else {
-                vol -= tick;
-            }
-            r &= sounds[i].setVolume(vol);
-        }
-        return r;
-    }
-
-    public boolean volumeUpMedia() {
-        return volumeUpMedia(VOLUME_TICK);
-    }        
-    
-    public boolean minimalVolumeUpMedia() {
-        return volumeUpMedia(VOLUME_TICK_MINIMAL);
-    }
-
-    private boolean volumeUpMedia(int tick) {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean r = true;
-        for (int i = 0; i < sounds.length; i++) {
-            int vol = sounds[i].getVolume();
-            if (vol < 0) {
-                return false;
-            } else if (vol > (INodeExSound.VOLUME_MAX - tick)) {
-                vol = INodeExSound.VOLUME_MAX;
-            } else {
-                vol += tick;
-            }
-            r &= sounds[i].setVolume(vol);
-        }
-        return r;
-    }
-
-    public int getCount() {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        return sounds.length;
-    }
-
-    public static ISoundControl newTreeItemSoundControl(AnalyzedResult ar) {
-        return new TreeItemSoundControl(ar);
-    }
-
-    private TreeItemSoundControl(AnalyzedResult ar) {
-        this.analyzedResult = ar;
-    }
-
-    public int[] getVolumes(){
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean r = true;
-        int[] volumes = new int[sounds.length];
-        for (int i = 0; i < sounds.length; i++) {
-            volumes[i] = sounds[i].getVolume();
-            
-            if (volumes[i] < 0) {
-                volumes[i] = 0;
-            }
-        }
-        return volumes;
-    }
-
-    public boolean setVolumes(int[] volumes) {
-        INodeExSound[] sounds = analyzedResult.getSoundNodes();
-        boolean r = true;
-        for (int i = 0; i < sounds.length; i++) {
-            r &= sounds[i].setVolume(volumes[i]);
-        }
-        return r;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemTerms.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemTerms.java
deleted file mode 100644
index 39d31a1..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemTerms.java
+++ /dev/null
@@ -1,425 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.eclipse.actf.util.vocab.DelegationTerms;
-import org.eclipse.actf.util.vocab.IEvalTarget;
-import org.eclipse.actf.util.vocab.Vocabulary;
-import org.eclipse.swt.graphics.Rectangle;
-import org.w3c.dom.Node;
-
-
-
-
-public class TreeItemTerms extends DelegationTerms {
-
-    public TreeItemTerms(IEvalTarget delegationTarget) {
-        super(delegationTarget);
-    }
-
-    private boolean isSymbol(char c) {
-        int type = Character.getType(c);
-        if (type == Character.OTHER_SYMBOL || type == Character.MODIFIER_SYMBOL || type == Character.MATH_SYMBOL)
-            return true;
-        return false;
-    }
-
-    private boolean isSeparator(char c) {
-        switch (Character.getType(c)) {
-        case Character.SPACE_SEPARATOR:
-        case Character.LINE_SEPARATOR:
-        case Character.PARAGRAPH_SEPARATOR:
-        case Character.FORMAT:
-        case Character.CONTROL:
-            return true;
-        }
-        return false;
-    }
-
-    private boolean isPunctuation(char c) {
-        int type = Character.getType(c);
-        if (type == Character.CONNECTOR_PUNCTUATION || type == Character.DASH_PUNCTUATION
-                || type == Character.START_PUNCTUATION || type == Character.END_PUNCTUATION
-                || type == Character.INITIAL_QUOTE_PUNCTUATION || type == Character.FINAL_QUOTE_PUNCTUATION
-                || type == Character.OTHER_PUNCTUATION)
-            return true;
-        return false;
-    }
-
-    private enum ContentCheckResult {
-        TRUE, FALSE, UNKNOWN
-    }
-    private ContentCheckResult contentCommonCheck(ITreeItem item) {
-        Object baseNode = item.getBaseNode();
-        if (baseNode instanceof IEvalTarget) {
-            if (Vocabulary.hasContent().eval((IEvalTarget) baseNode)) {
-                return ContentCheckResult.TRUE;
-            }
-        }
-
-        if (!isVisibleNode(item))
-            return ContentCheckResult.FALSE;
-        if (Vocabulary.isSelectOption().eval(item))
-            return ContentCheckResult.FALSE;
-
-        return ContentCheckResult.UNKNOWN;
-    }
-
-    @Override
-    public boolean hasContent(IEvalTarget target) {
-        if (!(target instanceof ITreeItem))
-            return false;
-        ITreeItem item = (ITreeItem) target;
-        switch (contentCommonCheck(item)) {
-        case TRUE:
-            return true;
-        case FALSE:
-            return false;
-        }
-
-        String str = item.getUIString();
-        if (str.length() == 0)
-            return false;
-        return true;
-    }
-
-    @Override
-    public boolean hasReadingContent(IEvalTarget target) {
-        if (!(target instanceof ITreeItem))
-            return false;
-        ITreeItem item = (ITreeItem) target;
-        switch (contentCommonCheck(item)) {
-        case TRUE:
-            return true;
-        case FALSE:
-            return false;
-        }
-
-        String str = item.getUIString();
-        // remove only punctuation
-        if (str.length() == 0) return false;
-
-        if (Vocabulary.isLink().eval(item))
-            return true;
-        for (int i = 0; i < str.length(); i++) {
-            if (isSeparator(str.charAt(i)) || isPunctuation(str.charAt(i)) //
-                    || isSymbol(str.charAt(i)))
-                continue;
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean isVisibleNode(IEvalTarget target) {
-        return true;
-    }
-
-    @Override
-    public boolean isBlockJumpPointF(IEvalTarget node) {
-        return isBlockJumpPoint(false, node);
-    }
-
-    @Override
-    public boolean isBlockJumpPointB(IEvalTarget node) {
-        return isBlockJumpPoint(true, node);
-    }
-
-    public boolean isBlockJumpPoint(boolean back, IEvalTarget node) {
-        if (!(node instanceof TreeItemFennec))
-            return false;
-        TreeItemFennec item = (TreeItemFennec) node;
-
-        TreeItemFennec prev;
-        if (!back) {
-            if (item.getNth() > 0) {
-                prev = (TreeItemFennec) item.getParent().getChildItems()[item.getNth() - 1];
-                while (prev.hasChild()) {
-                    ITreeItem[] items = prev.getChildItems();
-                    prev = (TreeItemFennec) items[items.length - 1];
-                }
-            } else {
-                prev = (TreeItemFennec) item.getParent();
-            }
-        } else {
-            if (item.getNth() == item.getParent().getChildItems().length - 1) {
-                ITreeItem parent = item.getParent();
-                if (parent == null)
-                    return false;
-                while (parent.getNth() == parent.getParent().getChildItems().length - 1) {
-                    parent = parent.getParent();
-                    if (parent == null)
-                        return false;
-                }
-                prev = (TreeItemFennec) parent.getParent().getChildItems()[parent.getNth() + 1];
-            } else {
-                if (item.hasChild()) {
-                    prev = (TreeItemFennec) item.getChildItems()[0];
-                } else {
-                    prev = (TreeItemFennec) item.getParent().getChildItems()[item.getNth() + 1];
-                }
-            }
-        }
-        if (prev == null)
-            return false;
-
-        item.distance = prev.distance + 1;
-        prev.distance = 0;
-
-        if (!(item.getBaseNode() instanceof INodeEx))
-            return false;
-        if (!(prev.getBaseNode() instanceof INodeEx))
-            return false;
-
-        INodeEx nex = (INodeEx) item.getBaseNode();
-        INodeEx nex2 = (INodeEx) prev.getBaseNode();
-        if (nex == null || nex2 == null)
-            return false;
-
-        Rectangle r = nex.getLocation();
-        Rectangle r2 = nex2.getLocation();
-        if (r == null || r2 == null)
-            return false;
-
-        int dist = distance(r, r2);
-        item.distance += dist;
-
-        if (r.width < 20)
-            return false;
-        if (!Vocabulary.hasContent().eval(node))
-            return false;
-        if (!Vocabulary.hasReadingContent().eval(node))
-            return false;
-        if (Vocabulary.isClickable().eval(node))
-            return false;
-        if (item.getNth() > 2 && Vocabulary.isConnectable().eval(node))
-            return false;
-
-        if (item.distance > 800) {
-            item.distance = 0;
-            return true;
-        }
-
-        if (!back && !super.isBlockJumpPointF(node))
-            return false;
-        if (back && !super.isBlockJumpPointB(node))
-            return false;
-
-        if (item.distance > 200) {
-            item.distance = 0;
-            return true;
-        }
-        return false;
-    }
-
-    private int distance(Rectangle r, Rectangle r2) {
-        return (int) Math.sqrt(Math.abs(r.x - r2.x) * Math.abs(r.y - r2.y)) //
-                + Math.abs(r.x - r2.x) + Math.abs(r.y - r2.y);
-    }
-
-    @Override
-    public boolean isHeading(int level, IEvalTarget node) {
-        if (!(node instanceof ITreeItem))
-            return false;
-        ITreeItem item = (ITreeItem) node;
-        if (level == 0)
-            return (item.getHeadingLevel() > 0);
-        else
-            return item.getHeadingLevel() == level;
-    }
-
-    @Override
-    public boolean isHeadingJumpPoint(IEvalTarget node) {
-        if (!(node instanceof ITreeItem))
-            return false;
-        ITreeItem item = (ITreeItem) node;
-
-        ITreeItem current = item;
-        short r = 0;
-        do {
-            if (current == null)
-                return super.isHeadingJumpPoint(node);
-            FennecMetadata meta = ((TreeItemFennec) current).getMetadata();
-            if (meta instanceof FennecGeneratedMetadata) {
-                r = ((FennecGeneratedMetadata) meta).getHeadingLevelByMetadata(item);
-                if (r > 0)
-                    return true;
-                else if (r == -1)
-                    return false;
-                current = current.getParent();
-            } else
-                break;
-        } while (r == 0);
-
-        if (((TreeItemFennec) item).getMetadata() == null)
-            return false;
-        return ((TreeItemFennec) item).getMetadata().getHeadingLevel(item) > 0;
-    }
-
-    @Override
-    public boolean isConnectable(IEvalTarget node) {
-        if (!(node instanceof TreeItemFennec))
-            return false;
-        TreeItemFennec item = (TreeItemFennec) node;
-
-        if (item.hasChild())
-            return false;
-
-        int nth = item.getNth();
-        int nextNth = nth + 1;
-
-        ITreeItem parent = ((TreeItemFennec) node).getParent();
-        if (parent == null)
-            return false;
-
-        ITreeItem[] items = parent.getChildItems();
-        if (nextNth >= items.length)
-            return false;
-        
-        Object o = items[nextNth].getBaseNode();
-        if (o == null || !(o instanceof Node))
-            return false;
-        Node n = (Node) o;
-            
-        return Vocabulary.isReachable(n).eval(node);
-    }
-
-    @Override
-    public boolean find(String str, boolean exact, IEvalTarget node) {
-        if (!(node instanceof ITreeItem))
-            return false;
-
-        ITreeItem item = (ITreeItem) node;
-        String uiString = item.getUIString();
-
-        if (!exact) {
-            uiString = uiString.toLowerCase();
-            str = str.toLowerCase();
-        }
-
-        if (uiString.indexOf(str) != -1)
-            return true;
-
-        /*
-         for (int len = str.length() - 1; len > 0; len--) {
-         if (uiString.lastIndexOf(str.substring(0, len)) == uiString.length() - len) {
-         if (hasChild()) {
-         if(Vocabulary.startsWith(str.substring(len), exact).eval(getChildItems()[0])){
-         return true;
-         }
-         continue;
-         }
-
-         int nth = item.getNth();
-         ITreeItem parent = item.getParent();
-         while (parent != null) {
-         ITreeItem[] items = parent.getChildItems();
-         if (nth + 1 < items.length) {
-         if(Vocabulary.startsWith(str.substring(len), exact).eval(items[nth + 1])){
-         return true;
-         }
-         break;
-         }
-         nth = parent.getNth();
-         parent = parent.getParent();
-         }
-         }
-         }*/
-        return false;
-    }
-
-    @Override
-    public boolean startsWith(String str, boolean exact, IEvalTarget node) {
-        if (!(node instanceof TreeItemFennec))
-            return false;
-        TreeItemFennec item = (TreeItemFennec) node;
-        String uiString = item.getUIString();
-
-        if (!exact) {
-            uiString = uiString.toLowerCase();
-            str = str.toLowerCase();
-        }
-
-        if (uiString.length() < str.length()) {
-            if (str.startsWith(uiString)) {
-                int len = uiString.length();
-                if (item.hasChild()) {
-                    return Vocabulary.startsWith(str.substring(len), exact).eval(item.getChildItems()[0]);
-                }
-
-                int nth = item.getNth();
-                ITreeItem parent = item.getParent();
-                while (parent != null) {
-                    ITreeItem[] items = parent.getChildItems();
-                    if (nth + 1 < items.length) {
-                        return Vocabulary.startsWith(str.substring(len), exact).eval(items[nth + 1]);
-                    }
-                    nth = parent.getNth();
-                    parent = parent.getParent();
-                }
-            }
-        }
-
-        return uiString.startsWith(str);
-    }
-
-    @Override
-    public boolean nodeLocation(Node refNode, boolean backward, IEvalTarget node) {
-        if (!Vocabulary.hasContent().eval(node))
-            return false;
-        if (!(node instanceof TreeItemFennec))
-            return false;
-        TreeItemFennec item = (TreeItemFennec) node;
-
-        Node targetNode = item.getNearestNode();
-        if (targetNode == null) return false;
-
-        ArrayList<Node> refAncestors = getAncestors(refNode);
-        ArrayList<Node> ancestors = getAncestors(targetNode);
-        int i = refAncestors.size() - 1;
-        int j = ancestors.size() - 1;
-        while ((i >= 0) && (j >= 0)) {
-            Node refAncestor = refAncestors.get(i);
-            Node ancestor = ancestors.get(j);
-            if (!(ancestor.isSameNode(refAncestor))) {
-                if (!((ancestor instanceof INodeEx)) && (refAncestor instanceof INodeEx))
-                    return false;
-
-                int ancestorNth = ((INodeEx) ancestor).getNth();
-                int refAncestorNth = ((INodeEx) refAncestor).getNth();
-                if (ancestorNth == refAncestorNth)
-                    return true;
-                if (backward) {
-                    return (ancestorNth < refAncestorNth);
-                } else {
-                    return (ancestorNth > refAncestorNth);
-                }
-            }
-            i--;
-            j--;
-        }
-        return true;
-    }
-
-    private ArrayList<Node> getAncestors(Node n) {
-        ArrayList<Node> list = new ArrayList<Node>();
-        while (n != null) {
-            list.add(n);
-            n = n.getParentNode();
-        }
-        return list;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemVideoControl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemVideoControl.java
deleted file mode 100644
index 69763cc..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/impl/TreeItemVideoControl.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.impl;
-
-import java.util.ArrayList;
-
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.ai.fennec.treemanager.IMediaSyncEventListener;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.model.dom.dombycom.AnalyzedResult;
-import org.eclipse.actf.model.dom.dombycom.INodeEx;
-import org.eclipse.actf.model.dom.dombycom.INodeExVideo;
-import org.eclipse.actf.ui.util.timer.WeakSyncTimer;
-import org.eclipse.actf.util.vocab.IProposition;
-import org.eclipse.actf.util.vocab.Vocabulary;
-
-
-
-public class TreeItemVideoControl implements IVideoControl {
-    private final IFennecService fennecService;
-    private AnalyzedResult analyzedResult;
-
-    private INodeExVideo getCurrentNodeExVideo() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        if (videos.length == 0) return null;
-        if (videos.length == 1) return videos[0];
-
-        ITreeItem item = fennecService.getLastTreeItem();
-        for (int i = 0; i < videos.length; i++) {
-            INodeEx node = videos[i].getReferenceNode();
-            IProposition prop = Vocabulary.nodeLocation(node, true);
-            if (prop.eval(item)) return videos[i];
-        }
-        return videos[0];
-    }
-
-    public boolean previousTrack() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        boolean r = true;
-        for (int i = 0; i < videos.length; i++) {
-            r &= videos[i].previousTrack();
-        }
-        return r;
-    }
-
-    public boolean nextTrack() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        boolean r = true;
-        for (int i = 0; i < videos.length; i++) {
-            r &= videos[i].nextTrack();
-        }
-        return r;
-    }
-
-    public boolean stopMedia() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        boolean r = true;
-        for (int i = 0; i < videos.length; i++) {
-            r &= videos[i].stopMedia();
-        }
-        return r;
-    }
-
-    public boolean playMedia() {
-        INodeExVideo v = getCurrentNodeExVideo();
-
-        // Before playing the media, pause the other media to avoid audio interference.
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        for (int i = 0; i < videos.length; i++) {
-            if (videos[i] != v) {
-                videos[i].pauseMedia();
-            }
-        }
-        if (v != null) {
-            return v.playMedia();
-        } else {
-            return false;
-        }
-    }
-
-    public boolean pauseMedia() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        boolean pause = false;
-        for (int i = 0; i < videos.length; i++) {
-            INodeExVideo.VideoState st = videos[i].getCurrentState();
-            if ((st == INodeExVideo.VideoState.STATE_PLAY)
-                || (st == INodeExVideo.VideoState.STATE_UNKNOWN)) {
-                pause = true;
-                break;
-            }
-        }
-
-        if (pause) {
-            boolean r = true;
-            for (int i = 0; i < videos.length; i++) {
-                r &= videos[i].pauseMedia();
-            }
-            return r;
-        } else {
-            INodeExVideo v = getCurrentNodeExVideo();
-            if (v != null) {
-                return v.playMedia();
-            } else {
-                return false;
-            }
-        }
-    }
-
-    public IVideoControl.VideoState getVideoState() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        IVideoControl.VideoState st = IVideoControl.VideoState.STATE_OTHER;
-        for (int i = 0; i < videos.length; i++) {
-            INodeExVideo.VideoState stn = videos[i].getCurrentState();
-            switch (stn) {
-            case STATE_UNKNOWN:
-                break;
-            case STATE_PLAY:
-                st = IVideoControl.VideoState.STATE_PLAY;
-                break;
-            case STATE_STOP:
-                if (st == IVideoControl.VideoState.STATE_OTHER) {
-                    st = IVideoControl.VideoState.STATE_STOP;
-                }
-                break;
-            case STATE_PAUSE:
-                if (st == IVideoControl.VideoState.STATE_OTHER) {
-                    st = IVideoControl.VideoState.STATE_PAUSE;
-                }
-                break;
-            case STATE_WAITING:
-                if (st == IVideoControl.VideoState.STATE_OTHER) {
-                    st = IVideoControl.VideoState.STATE_WAITING;
-                }
-                break;
-            case STATE_FASTFORWARD:
-                if (st != IVideoControl.VideoState.STATE_PLAY) {
-                    st = IVideoControl.VideoState.STATE_FASTFORWARD;
-                }
-                break;
-            case STATE_FASTREVERSE:
-                if (st != IVideoControl.VideoState.STATE_PLAY) {
-                    st = IVideoControl.VideoState.STATE_FASTREVERSE;
-                }
-            }
-        }
-        return st;
-    }
-
-    public boolean fastReverse() {
-        INodeExVideo v = getCurrentNodeExVideo();
-        if (v != null) {
-            return v.fastReverse();
-        } else {
-            return false;
-        }
-    }
-
-    public boolean fastForward() {
-        INodeExVideo v = getCurrentNodeExVideo();
-        if (v != null) {
-            return v.fastForward();
-        } else {
-            return false;
-        }
-    }
-
-    public double getCurrentPosition() {
-        INodeExVideo v = getCurrentNodeExVideo();
-        if (v != null) {
-            return v.getCurrentPosition();
-        } else {
-            return 0;
-        }
-    }
-
-    public double getTotalLength() {
-        INodeExVideo v = getCurrentNodeExVideo();
-        if (v != null) {
-            return v.getTotalLength();
-        } else {
-            return 0;
-        }
-    }
-
-    public int getCount() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        return videos.length;
-    }
-
-    public int getIndex() {
-        INodeExVideo[] videos = analyzedResult.getVideoNodes();
-        if (videos.length == 0) return -1;
-        if (videos.length == 1) return 0;
-
-        ITreeItem item = fennecService.getLastTreeItem();
-        for (int i = 0; i < videos.length; i++) {
-            INodeEx node = videos[i].getReferenceNode();
-            IProposition prop = Vocabulary.nodeLocation(node, true);
-            if (prop.eval(item)) return i;
-        }
-        return 0;
-    }
-
-
-    public static IVideoControl newTreeItemVideoControl(AnalyzedResult ar,
-                                                        IFennecService fennecService) {
-        return new TreeItemVideoControl(ar, fennecService);
-    }
-
-    private TreeItemVideoControl(AnalyzedResult ar,
-                                 IFennecService fennecService) {
-        this.analyzedResult = ar;
-        this.fennecService = fennecService;
-    }
-
-    // This ArrayList ensures strong references of currently valid listeners.
-    private ArrayList<IMediaSyncEventListener> listeners;
-    public boolean addEventListener(IMediaSyncEventListener listener) {
-        WeakSyncTimer timer = WeakSyncTimer.getTimer();
-        timer.addEventListener(listener);
-        if (listeners == null) {
-            listeners = new ArrayList<IMediaSyncEventListener>(1);
-        }
-        listeners.add(listener);
-        
-        return true;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/mediator/FennecMediatorImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/mediator/FennecMediatorImpl.java
deleted file mode 100644
index 5a07264..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/mediator/FennecMediatorImpl.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.mediator;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.actf.ai.fennec.IFennecEntry;
-import org.eclipse.actf.ai.fennec.IFennecMediator;
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.ai.fennec.FennecServiceFactory;
-import org.eclipse.actf.ai.fennec.impl.FennecDOMReader;
-import org.eclipse.actf.ai.fennec.impl.FennecEntryImpl;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerFactory;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-import org.eclipse.actf.ai.xmlstore.IXMLStoreService;
-import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
-import org.eclipse.actf.model.dom.dombycom.IDocumentEx;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-
-
-
-
-public class FennecMediatorImpl implements IFennecMediator {
-    private final IWebBrowserACTF webBrowser;
-
-    public ITreeManager newTreeManager(IFennecEntry entry) {
-        IDocumentEx doc = (IDocumentEx) webBrowser.getLiveDocument();
-
-        IFennecService fennecService;
-        if (entry != null) {
-            try {
-                fennecService = FennecServiceFactory.newFennecService(entry, doc);
-            } catch (Exception e) {
-                fennecService = FennecServiceFactory.newFennecServiceWithDefaultMetadata(doc);
-            }
-        } else {
-            fennecService = FennecServiceFactory.newFennecServiceWithDefaultMetadata(doc);
-        }
-        return TreeManagerFactory.newITreeManager(fennecService);
-    }
-
-    private IXMLStore getFennecStore(String url) {
-        IXMLStoreService ss = XMLStoreServiceUtil.getXMLStoreService();
-        IXMLSelector selector = ss.getSelectorWithDocElem(FennecDOMReader.Fennec_DOCUMENT_ELEMENT_NAME,
-                                                          FennecDOMReader.Fennec_NAMESPACE_URI);
-        IXMLStore store = ss.getRootStore();
-        store = store.specify(selector);
-        if (store == null) return null;
-        selector = ss.getSelectorWithURI(url);
-        return store.specify(selector);
-    }
-
-    public IFennecEntry getDefaultFennecEntry() {
-        String url = webBrowser.getURL();
-        IXMLStore store = getFennecStore(url);
-        if (store == null) return null;
-        Iterator<IXMLInfo> it = store.getInfoIterator();
-        if (it == null) return null;
-        if (!it.hasNext()) return null;
-        IXMLInfo info = it.next();
-        return new FennecEntryImpl(info);
-    }
-
-    public IFennecEntry[] getFennecEntries() {
-        String url = webBrowser.getURL();
-        IXMLStore store = getFennecStore(url);
-        if (store == null) return null;
-        Iterator<IXMLInfo> it = store.getInfoIterator();
-        if (it == null) return null;
-        ArrayList<FennecEntryImpl> entries = new ArrayList<FennecEntryImpl>();
-        while (it.hasNext()) {
-            IXMLInfo info = it.next();
-            if (info == null) continue;
-            entries.add(new FennecEntryImpl(info));
-        }
-        IFennecEntry[] ea = new IFennecEntry[entries.size()];
-        ea = entries.toArray(ea);
-        return ea;
-    }
-
-    public void release() {
-        // this.dombycom.release();
-    }
-
-    public FennecMediatorImpl(IWebBrowserACTF webBrowser) {
-        this.webBrowser = webBrowser;
-    }
-}
-
-
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IAccessKeyList.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IAccessKeyList.java
deleted file mode 100644
index c9bbbf0..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IAccessKeyList.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * IAccessKeyList interface defines methods to be implemented by the collection
- * of the access keys in a document.
- */
-public interface IAccessKeyList {
-	/**
-	 * @return the size of the collection.
-	 */
-	int size();
-
-	/**
-	 * @param index
-	 *            the index of the access key.
-	 * @return the code of the access key specified by the index.
-	 */
-	char getAccessKeyAt(int index);
-
-	/**
-	 * @param index
-	 *            the index of the access key.
-	 * @return the text information of the element on which the access key is
-	 *         declared.
-	 */
-	String getUIStringAt(int index);
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ILocation.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ILocation.java
deleted file mode 100644
index 7e4863b..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ILocation.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * ILocation represents a location of the current position on the tree. This
- * interface is the place holder of the implementation. The implementation is
- * used only internal classes, but you can get a location and restore the
- * location through the ILocation.
- */
-public interface ILocation {
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IMediaSyncEventListener.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IMediaSyncEventListener.java
deleted file mode 100644
index c201113..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IMediaSyncEventListener.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-import org.eclipse.actf.ui.util.timer.SyncEventListener;
-
-/**
- * IMediaSyncEventListener is the place holder of the implementation of
- * {@link SyncEventListener} for media synchronization.
- * 
- * @see SyncEventListener
- */
-public interface IMediaSyncEventListener extends SyncEventListener {
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ISoundControl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ISoundControl.java
deleted file mode 100644
index 0a021a1..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ISoundControl.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * ISoundControl interface defines the method to be implemented by the
- * collection of sound objects in a document. It can manage the volume of the
- * sound objects.
- */
-public interface ISoundControl {
-	/**
-	 * The states of sound volume.
-	 */
-	public enum VolumeState {
-		/**
-		 * volume is minimum.
-		 */
-		MIN,
-		/**
-		 * volume is maximum.
-		 */
-		MAX,
-		/**
-		 * volume is not MIN, MAX, and MUTE.
-		 */
-		OTHER,
-		/**
-		 * sound is muted.
-		 */
-		MUTE
-	}
-
-	/**
-	 * It mutes all sounds in the document.
-	 * 
-	 * @return whether the muting was succeeded or not.
-	 */
-	boolean muteMedia();
-
-	/**
-	 * All sound objects have a same state then the state will be returned,
-	 * otherwise {@link VolumeState#OTHER} is returned.
-	 * 
-	 * @return the state of the volume.
-	 * @see VolumeState
-	 */
-	VolumeState getVolumeState();
-
-	/**
-	 * Volume down all sound objects in default step width.
-	 * @return whether the volume down was succeeded or not.
-	 */
-	boolean volumeDownMedia();
-
-	/**
-	 * Volume up all sound objects in default step width.
-	 * @return whether the volume up was succeeded or not.
-	 */
-	boolean volumeUpMedia();
-
-	/**
-	 * Volume down all sound objects in minimal step width.
-	 * @return whether the volume down was succeeded or not.
-	 */
-	boolean minimalVolumeDownMedia();
-
-	/**
-	 * Volume up all sound objects in minimal step width.
-	 * @return whether the volume up was succeeded or not.
-	 */
-	boolean minimalVolumeUpMedia();
-
-	/**
-	 * @return the number of the sound objects.
-	 */
-	int getCount();
-
-	/**
-	 * @return the values of all sound volume.
-	 */
-	int[] getVolumes();
-
-	/**
-	 * @param volumes the values to be set.
-	 * @return whether the setting was succeeded or not.
-	 */
-	boolean setVolumes(int[] volumes);
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITable.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITable.java
deleted file mode 100644
index 58482b9..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITable.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * ITable interface defines the methods to be implemented by the table
- * representation on the Fennec tree.
- */
-public interface ITable {
-	/**
-	 * @param idx
-	 *            the index of the row.
-	 * @return the row of the table specified the index.
-	 */
-	ITableRow getRow(int idx);
-
-	/**
-	 * @return the number of the columns of the table.
-	 */
-	int getColumnSize();
-
-	/**
-	 * @return the number of the rows of the table.
-	 */
-	int getRowSize();
-
-	/**
-	 * @return the text information of the table.
-	 */
-	String getTableString();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableCell.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableCell.java
deleted file mode 100644
index d124d98..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableCell.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * ITableCell interface defines the methods to be implemented by the table cell
- * representation on the Fennec tree.
- */
-public interface ITableCell {
-	/**
-	 * @return the column position in the table. 
-	 */
-	int getColumn();
-
-	/**
-	 * @return the row position in the table.
-	 */
-	int getRow();
-
-	/**
-	 * @return the ITreeItem object corresponding to the cell.
-	 */
-	ITreeItem getItem();
-
-	/**
-	 * @return whether the cell is connected with the upper cell or not.
-	 */
-	boolean isConnectedWithUpCell();
-
-	/**
-	 * @return whether the cell is connected with the left next cell or not.
-	 */
-	boolean isConnectedWithLeftCell();
-
-	/**
-	 * @return the ITreeItem object for the row header of the cell.
-	 */
-	ITreeItem getRowHeader();
-
-	/**
-	 * @return the ITreeItem object for the column header of the cell.
-	 */
-	ITreeItem getColumnHeader();
-
-	/**
-	 * @return whether the cell is a cell in the table header.
-	 */
-	boolean isHeader();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableRow.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableRow.java
deleted file mode 100644
index a386c48..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITableRow.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-
-
-/**
- * ITable interface defines the methods to be implemented by the table row
- * representation on the Fennec tree.
- */
-public interface ITableRow {
-    /**
-     * @return the all cells in the row.
-     */
-    ITableCell[] getTableCell();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeItem.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeItem.java
deleted file mode 100644
index 8bfdb79..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeItem.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-import org.eclipse.actf.util.vocab.AbstractTerms;
-import org.eclipse.actf.util.vocab.IEvalTarget;
-import org.w3c.dom.Node;
-
-/**
- * ITreeItem interface defines the methods to be implemented by the
- * representation of the tree node of the Fennec tree.
- */
-public interface ITreeItem extends IEvalTarget {
-	/**
-	 * Get the parent item. If this is the root, return null.
-	 * 
-	 * @return the parent ITreeItem.
-	 */
-	ITreeItem getParent();
-
-	/**
-	 * Get the child items. Even if it has no children, return an empty array
-	 * (size == 0) instead of null.
-	 * 
-	 * @return the array of the child ITreeItems.
-	 */
-	ITreeItem[] getChildItems();
-
-	/**
-	 * @return the nth of the children of this parent.
-	 */
-	int getNth();
-
-	/**
-	 * @return the short text of the item.
-	 */
-	String getUIString();
-
-	/**
-	 * @return the long descriptive text of the item.
-	 */
-	String getDescription();
-
-	/**
-	 * This text is inappropriate to be notified to users.
-	 * 
-	 * @return the text to represent the item.
-	 */
-	String getNodeString();
-
-	/**
-	 * Heading level. 0 means this node is not a heading.
-	 * 
-	 * @return the heading level of the item.
-	 */
-	short getHeadingLevel();
-
-	/**
-	 * @return the URI of the link of this tree item if it has a link.
-	 */
-	String getLinkURI();
-
-	/**
-	 * @deprecated This is a deprecated API. It may breaks independence on
-	 *             content types.
-	 * @return the base node of the item.
-	 */
-	Object getBaseNode();
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.util.vocab.IEvalTarget#getTerms()
-	 */
-	AbstractTerms getTerms();
-
-	// !FN!
-	/**
-	 * @return true if this item accepts some input.
-	 */
-	boolean isInputable();
-
-	// !FN!
-	/**
-	 * @return true if this item accepts click operations.
-	 */
-	boolean isClickable();
-
-	// !FN!
-	/**
-	 * @return true if this item contains some image.
-	 */
-	boolean isImage();
-
-	// !FN!
-	/**
-	 * @return [0]...mimetype [1]...URI [2] ... png clut URI
-	 */
-	String[] getStillPictureData();
-
-	/**
-	 * Click the item.
-	 * 
-	 * @return {@link ITreeManager#CLICKED} or {@link ITreeManager#NOACTION}
-	 * @throws TreeManagerException
-	 */
-	int doClick() throws TreeManagerException;
-
-	/**
-	 * Optional API. Do not use it currently.
-	 * 
-	 * @return
-	 * @throws TreeManagerException
-	 */
-	int stay() throws TreeManagerException;
-
-	/**
-	 * Highlight the item.
-	 * 
-	 * @return {@link ITreeManager#NOACTION}
-	 * @throws TreeManagerException
-	 */
-	int highlight() throws TreeManagerException;
-
-	/**
-	 * Unhighlight the item.
-	 * 
-	 * @return {@link ITreeManager#NOACTION}
-	 * @throws TreeManagerException
-	 */
-	int unhighlight() throws TreeManagerException;
-
-	/**
-	 * Set focus to this item. This method only sets the input focus if
-	 * possible.
-	 * 
-	 * @return
-	 */
-	boolean setFocus();
-
-	/**
-	 * Set the text to this item. (This method may be used for a text edit
-	 * widget)
-	 * 
-	 * @param text the text to be set.
-	 * @return {@link ITreeManager#NOACTION}
-	 * @throws TreeManagerException
-	 */
-	int setText(String text) throws TreeManagerException;
-
-	/**
-	 * Return the set text.
-	 * @return the text of the item.
-	 * @throws TreeManagerException
-	 */
-	String getText() throws TreeManagerException;
-
-	// Form
-	/**
-	 * @return the index of the item in the radio group. 
-	 */
-	int getRadioIndex();
-
-	/**
-	 * @return the total number of radio buttons in the radio group.
-	 */
-	int getRadioTotal();
-
-	/**
-	 * @param indices the indices to be set to the item.
-	 */
-	void setSelectedIndices(int[] indices);
-
-	/**
-	 * @return the indices of the item.
-	 */
-	int[] getSelectedIndices();
-
-	/**
-	 * @return the number of the options in the item.
-	 */
-	int getOptionsCount();
-
-	/**
-	 * @param index the index of the option.
-	 * @return the text of the option specified the index.
-	 */
-	String getOptionTextAt(int index);
-
-	/**
-	 * @return the index of the item in the list.
-	 */
-	int getListIndex();
-
-	/**
-	 * @return the number of the lists item in the list including the item.
-	 */
-	int getListTotal();
-
-	/**
-	 * @return the label text of the item.
-	 */
-	public String getFormLabel();
-
-	// User Annotation.
-	/**
-	 * @param parent the target node to be serialized.
-	 * @return the serialized result in form of Node.
-	 */
-	Node serializeQuery(Node parent);
-
-	/**
-	 * @return the code of the access key declared of the item.
-	 */
-	char getAccessKey();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeManager.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeManager.java
deleted file mode 100644
index 4b7dfd7..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/ITreeManager.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.util.vocab.IProposition;
-
-/**
- * ITreeManager interface defines high level methods of Fennec tree
- * representation. It is created using {@link IFennecService}, and it provides
- * function to manage the tree representation by using {@link IFennecService}
- * 
- * All goto**** methods are for updating the current position. These methods try
- * to update the current position to "****" which is readable by the
- * application. These method will return {@link ITreeManager#NOACTION} if the
- * updating is failed.
- */
-public interface ITreeManager {
-	// Status code.
-	/**
-	 * The tree is no changed, the tree did no action.
-	 */
-	int NOACTION = 0;
-	/**
-	 * The current position is moved.
-	 */
-	int MOVED = 1 << 0;
-	/**
-	 * The level of the current position is changed.
-	 */
-	int LEVEL_CHANGED = 1 << 1;
-	/**
-	 * It is not used.
-	 */
-	int TRANSFERRED = 1 << 2;
-	/**
-	 * The element of the current position is clicked.
-	 */
-	int CLICKED = 1 << 3;
-	/**
-	 * The element of the current position is changed.
-	 */
-	int CHANGED = 1 << 4;
-	/**
-	 * The parent of the element of the current position is changed.
-	 */
-	int PARENT_CHANGED = 1 << 5;
-	/**
-	 * An element is found in searching or something.
-	 */
-	int FOUND = 1 << 6;
-	/**
-	 * A {@link TreeManagerInterruptedException} is thrown.
-	 */
-	int UNDONE = 1 << 8;
-	/**
-	 * A {@link TreeManagerException} is thrown.
-	 */
-	int ERROR = 1 << 16;
-
-	// Status API
-	/**
-	 * @return the tree level of the current position.
-	 * @throws TreeManagerException
-	 */
-	int getLevel() throws TreeManagerException;
-
-	/**
-	 * @return the current item of the document.
-	 * @throws TreeManagerException
-	 */
-	ITreeItem getActiveItem() throws TreeManagerException;
-
-	/**
-	 * Used for media control. It will be subject to change.
-	 * 
-	 * @return
-	 * @throws TreeManagerException
-	 */
-	ISoundControl getSoundControl() throws TreeManagerException;
-
-	/**
-	 * Used for media control. It will be subject to change.
-	 * 
-	 * @return
-	 * @throws TreeManagerException
-	 */
-	IVideoControl getVideoControl() throws TreeManagerException;
-
-	/**
-	 * Used for access key.
-	 * 
-	 * @return
-	 * @throws TreeManagerException
-	 */
-	IAccessKeyList getAccessKeyList() throws TreeManagerException;
-
-	/**
-	 * @return the siblings of the current item.
-	 * @throws TreeManagerException
-	 */
-	ITreeItem[] getSiblings() throws TreeManagerException;
-
-	/**
-	 * initialize. API.
-	 * 
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int initialize() throws TreeManagerException;
-
-	// Action APIs
-
-	/**
-	 * Tentative API. Do not use it currently.
-	 * 
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int stay() throws TreeManagerException;
-
-	/**
-	 * @param doClick
-	 *            the children of the current item is updated when false. false
-	 *            is used when retrying because of interruption of operation.
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int click(boolean doClick) throws TreeManagerException;
-
-	// Tree Navigation API
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoParent() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoFirstChild() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoStartOfSiblings() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoEndOfSiblings() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoPreviousSibling() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoNextSibling() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoStartOfPage() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoEndOfPage() throws TreeManagerException;
-
-	/**
-	 * @param back
-	 *            the direction of the traversing. true = backward, false =
-	 *            forward.
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int traverse(boolean back) throws TreeManagerException;
-
-	// Search functions. (Extension)
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoPreviousLine() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoNextLine() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoStartOfLine() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoEndOfLine() throws TreeManagerException;
-
-	/**
-	 * It searches a element matched with the <i>proposition</i>. All tree
-	 * items after the current position is tested to be matched in forward
-	 * direction. If the element matched with the <i>proposition</i> is found
-	 * then the current position is changed to the element or the current
-	 * position is not changed. If the searching reaches the end of the page
-	 * then the searching continues from the start of the page to the current
-	 * position.
-	 * 
-	 * @param proposition
-	 *            the instance of IProposition to be used for searching.
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int findNext(IProposition proposition) throws TreeManagerException;
-
-	/**
-	 * This method is backward direction version of
-	 * {@link #findNext(IProposition)}.
-	 * 
-	 * @param proposition
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int findPrevious(IProposition proposition) throws TreeManagerException;
-
-	/**
-	 * @param target
-	 *            the anchor name to be searched.
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int skipToAnchor(String target) throws TreeManagerException;
-
-	// Table Navigation API.
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoLeftCell() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoRightCell() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoUpCell() throws TreeManagerException;
-
-	/**
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoDownCell() throws TreeManagerException;
-
-	/**
-	 * @return the information of the current table which includes the current
-	 *         position.
-	 * @throws TreeManagerException
-	 */
-	int getActiveTableInfo() throws TreeManagerException;
-
-	/**
-	 * @return the information of the current table cell.
-	 * @throws TreeManagerException
-	 */
-	int getActiveTableCellInfo() throws TreeManagerException;
-
-	// Optional API.
-	/**
-	 * @return the root item of the document.
-	 * @throws TreeManagerException
-	 */
-	ITreeItem getCurrentRootItem() throws TreeManagerException;
-
-	// Experimental API.
-	/**
-	 * This method is used when the analysis is failed because of load timing.
-	 * 
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int analyze() throws TreeManagerException;
-
-	/**
-	 * @return the ILocation instance of the current position. the instance will
-	 *         be used for {@link #moveToLocation(ILocation)}
-	 * @throws TreeManagerException
-	 */
-	ILocation getCurrentLocation() throws TreeManagerException;
-
-	/**
-	 * @param location
-	 *            the location to which the current position is moved.
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int moveToLocation(ILocation location) throws TreeManagerException;
-
-	// 
-	/**
-	 * All tree items of the tree representation by the Fennec metadata are
-	 * expanded at once.
-	 * 
-	 * @return the root item of the document.
-	 * @throws TreeManagerException
-	 */
-	ITreeItem expandWholeTree() throws TreeManagerException;
-
-	/**
-	 * Change the current position to the end of page without readable checking.
-	 * 
-	 * @return the status of this operation.
-	 * @throws TreeManagerException
-	 */
-	int gotoEndOfPageForFind() throws TreeManagerException;
-
-	/**
-	 * Execute the repairing function of the Flash objects.
-	 * 
-	 * @throws TreeManagerException
-	 */
-	void repairFlash() throws TreeManagerException;
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IVideoControl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IVideoControl.java
deleted file mode 100644
index 6f96350..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/IVideoControl.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * IVideoControl interface defines the method to be implemented by the
- * collection of video objects in a document. The implementation has a focused
- * video which is located after the current reading position.
- */
-public interface IVideoControl {
-	/**
-	 * @param listener
-	 *            the listener to be executed.
-	 * @return true if the adding was succeeded.
-	 * @see IMediaSyncEventListener
-	 */
-	boolean addEventListener(IMediaSyncEventListener listener);
-
-	/**
-	 * The states of videos.
-	 */
-	public enum VideoState {
-		/**
-		 * The state is not in the other state.
-		 */
-		STATE_OTHER,
-		/**
-		 * The video is playing.
-		 */
-		STATE_PLAY,
-		/**
-		 * The video is stopped.
-		 */
-		STATE_STOP,
-		/**
-		 * The video is paused.
-		 */
-		STATE_PAUSE,
-		/**
-		 * The video is in fast forwarding.
-		 */
-		STATE_FASTFORWARD,
-		/**
-		 * The video is in fast reversing.
-		 */
-		STATE_FASTREVERSE,
-		/**
-		 * The video is waiting to complete buffering.
-		 */
-		STATE_WAITING
-	}
-
-	/**
-	 * The video state of the videos in the document. If at least one of video
-	 * is playing then the state is STATE_PLAYING.
-	 * 
-	 * @return the video state.
-	 */
-	VideoState getVideoState();
-
-	/**
-	 * Change the track of the current video to the previous one.
-	 * 
-	 * @return whether the changing was succeeded or not.
-	 */
-	boolean previousTrack();
-
-	/**
-	 * Change the track of the current video to the next one.
-	 * 
-	 * @return whether the changing was succeeded or not.
-	 */
-	boolean nextTrack();
-
-	/**
-	 * Stop all videos in the document including the current video.
-	 * 
-	 * @return whether the stopping was succeeded or not.
-	 */
-	boolean stopMedia();
-
-	/**
-	 * Play the current video.
-	 * 
-	 * @return whether the playing was succeeded or not.
-	 */
-	boolean playMedia();
-
-	/**
-	 * Pause all videos in the document including the current video, or resume
-	 * the current video.
-	 * 
-	 * @return whether the pausing was succeeded or not.
-	 */
-	boolean pauseMedia();
-
-	/**
-	 * Fast-reverse the current video.
-	 * 
-	 * @return whether the reversing was succeeded or not.
-	 */
-	boolean fastReverse();
-
-	/**
-	 * Fast-forward the current video.
-	 * 
-	 * @return whether the forwarding was succeeded or not.
-	 */
-	boolean fastForward();
-
-	/**
-	 * @return the current position of the current video in second.
-	 */
-	double getCurrentPosition();
-
-	/**
-	 * @return the total length of the current video in second.
-	 */
-	double getTotalLength();
-
-	/**
-	 * @return the number of the videos in the document.
-	 */
-	int getCount();
-
-	/**
-	 * @return the index of the current videos in the document. If there is no
-	 *         video then it returns -1.
-	 */
-	int getIndex();
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerException.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerException.java
deleted file mode 100644
index 014d599..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerException.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * TreeManagerException is thrown when the operation in ITreeManager is failed.
- */
-public class TreeManagerException extends Exception {
-	private static final long serialVersionUID = -715217633494025285L;
-
-	private final int status;
-
-	/**
-	 * @return the status code of the exception.
-	 */
-	public int getStatus() {
-		return status;
-	}
-
-	/**
-	 * @param status
-	 *            the status code of the exception.
-	 * @param message
-	 * @param cause
-	 * @see Exception#Exception(String, Throwable)
-	 */
-	public TreeManagerException(int status, String message, Throwable cause) {
-		super(message, cause);
-		this.status = status;
-	}
-
-	/**
-	 * @param status
-	 * @param message
-	 * @see Exception#Exception(String)
-	 */
-	public TreeManagerException(int status, String message) {
-		super(message);
-		this.status = status;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerFactory.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerFactory.java
deleted file mode 100644
index 2cbdf4a..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.ai.fennec.treemanager.impl.TreeManagerImpl;
-
-/**
- * The factory class for ITreeManager.
- */
-public class TreeManagerFactory {
-	/**
-	 * It creates a new instance of ITreeManager from an IFennecService.
-	 * 
-	 * @param fennecService
-	 *            the instance of the IFennecService to be used in the tree
-	 *            manager.
-	 * @return new instance of the ITreeManager.
-	 */
-	public static ITreeManager newITreeManager(IFennecService fennecService) {
-		return new TreeManagerImpl(fennecService);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerInterruptedException.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerInterruptedException.java
deleted file mode 100644
index bc28b36..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerInterruptedException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-/**
- * TreeManagerInterruptedException is thrown when the tree operation is
- * interrupted by some reason.
- */
-public class TreeManagerInterruptedException extends TreeManagerException {
-	private static final long serialVersionUID = -1029176053941063206L;
-
-	/**
-	 * @param status
-	 * @param message
-	 * @param cause
-	 * @see TreeManagerException#TreeManagerException(int, String, Throwable)
-	 */
-	public TreeManagerInterruptedException(int status, String message,
-			Throwable cause) {
-		super(status, message, cause);
-	}
-
-	/**
-	 * @param status
-	 * @param message
-	 * @see TreeManagerException#TreeManagerException(int, String)
-	 */
-	public TreeManagerInterruptedException(int status, String message) {
-		super(status, message);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerPlugin.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerPlugin.java
deleted file mode 100644
index b870d11..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/TreeManagerPlugin.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager;
-
-import org.eclipse.core.runtime.Plugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class TreeManagerPlugin extends Plugin {
-
-	//The shared instance.
-	private static TreeManagerPlugin plugin;
-	
-	/**
-	 * The constructor.
-	 */
-	public TreeManagerPlugin() {
-		plugin = this;
-	}
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	@Override
-    public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	@Override
-    public void stop(BundleContext context) throws Exception {
-		super.stop(context);
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance.
-	 */
-	public static TreeManagerPlugin getDefault() {
-		return plugin;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/LocationImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/LocationImpl.java
deleted file mode 100644
index 69138fe..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/LocationImpl.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.fennec.treemanager.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ILocation;
-
-
-
-class LocationImpl implements ILocation {
-    private final int[] pos;
-    
-    int[] getPos() {
-        return pos;
-    }
-    
-    LocationImpl(int[] pos) {
-        this.pos = pos;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/TreeManagerImpl.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/TreeManagerImpl.java
deleted file mode 100644
index ed7b0de..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/fennec/treemanager/impl/TreeManagerImpl.java
+++ /dev/null
@@ -1,604 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.fennec.treemanager.impl;
-
-import java.util.ArrayList;
-
-import org.eclipse.actf.ai.fennec.IFennecService;
-import org.eclipse.actf.ai.fennec.FennecException;
-import org.eclipse.actf.ai.fennec.FennecInterruptedException;
-import org.eclipse.actf.ai.fennec.treemanager.IAccessKeyList;
-import org.eclipse.actf.ai.fennec.treemanager.ILocation;
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerException;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerInterruptedException;
-import org.eclipse.actf.model.dom.dombycom.IFlashNode;
-import org.eclipse.actf.util.vocab.IProposition;
-import org.eclipse.actf.util.vocab.Vocabulary;
-
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class TreeManagerImpl implements ITreeManager {
-    private IFennecService fennecService;
-
-    public TreeManagerImpl(IFennecService fennecService) {
-        this.fennecService = fennecService;
-    }
-
-    public int getLevel() throws TreeManagerException {
-        int i = 0;
-        ITreeItem ita = getActiveItem();
-        if (ita == null)
-            return 0;
-        while (true) {
-            ita = ita.getParent();
-            if (ita == null)
-                break;
-            i++;
-        }
-        return i;
-    }
-
-    public ITreeItem getActiveItem() throws TreeManagerException {
-        return fennecService.getLastTreeItem();
-    }
-
-    public ITreeItem[] getSiblings() throws TreeManagerException {
-        ITreeItem item = getActiveItem();
-        if (item == null)
-            return null;
-        ITreeItem parent = item.getParent();
-        if (parent == null) {
-            ITreeItem[] itas = new ITreeItem[1];
-            itas[0] = getActiveItem();
-            return itas;
-        }
-        return parent.getChildItems();
-    }
-
-    private void initFennecService() throws TreeManagerException {
-        if (fennecService.getStatus() == IFennecService.NORMAL)
-            return;
-        try {
-            fennecService.initialize();
-        } catch (FennecInterruptedException e) {
-            throw new TreeManagerInterruptedException(ITreeManager.UNDONE, e.getMessage(), e);
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, e.getMessage(), e);
-        }
-    }
-
-    public int initialize() throws TreeManagerException {
-        initFennecService();
-        return ITreeManager.NOACTION;
-    }
-
-    private int moveUpdate(ITreeItem target, boolean update) throws TreeManagerException {
-        try {
-            return fennecService.moveUpdate(target, update);
-        } catch (FennecInterruptedException e) {
-            throw new TreeManagerInterruptedException(ITreeManager.UNDONE, "Failed to update by move.", e);
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to update by move.", e);
-        }
-    }
-
-    private int clickUpdate(ITreeItem target) throws TreeManagerException {
-        try {
-            return fennecService.clickUpdate(target);
-        } catch (FennecInterruptedException e) {
-            throw new TreeManagerInterruptedException(ITreeManager.UNDONE, "Failed to update by click.", e);
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to update by click.", e);
-        }
-    }
-
-    private int gotoRoot() throws TreeManagerException {
-        ITreeItem parent = getActiveItem().getParent();
-        if (parent == null)
-            return ITreeManager.NOACTION;
-        while (gotoParent() != ITreeManager.NOACTION)
-            ;
-        return ITreeManager.MOVED | ITreeManager.LEVEL_CHANGED;
-    }
-
-    public int stay() throws TreeManagerException {
-        initFennecService();
-        return getActiveItem().stay();
-    }
-
-    public int click(boolean doClick) throws TreeManagerException {
-        initFennecService();
-        ITreeItem item = getActiveItem();
-        if (doClick)
-            item.doClick();
-        return clickUpdate(item);
-    }
-
-    public int gotoParent() throws TreeManagerException {
-        initFennecService();
-        ITreeItem parent = getActiveItem().getParent();
-        if (parent != null) {
-            int st = moveUpdate(parent, true);
-            if ((st & ITreeManager.MOVED) != 0)
-                st |= ITreeManager.LEVEL_CHANGED;
-            return st;
-        }
-        return ITreeManager.NOACTION;
-    }
-
-    public int gotoFirstChild() throws TreeManagerException {
-        initFennecService();
-        ITreeItem active = getActiveItem();
-        ITreeItem[] childItems = active.getChildItems();
-        if (childItems.length == 0)
-            return ITreeManager.NOACTION;
-        int st = moveUpdate(childItems[0], true);
-        if ((st & ITreeManager.MOVED) != 0)
-            st |= ITreeManager.LEVEL_CHANGED;
-        return st;
-    }
-
-    private int gotoLastChild() throws TreeManagerException {
-        initFennecService();
-        ITreeItem active = getActiveItem();
-        ITreeItem[] childItems = active.getChildItems();
-        if (childItems.length == 0)
-            return ITreeManager.NOACTION;
-        int st = moveUpdate(childItems[childItems.length - 1], true);
-        if ((st & ITreeManager.MOVED) != 0)
-            st |= ITreeManager.LEVEL_CHANGED;
-        return st;
-    }
-
-    private int gotoSiblingIndex(int idx) throws TreeManagerException {
-        initFennecService();
-        ITreeItem active = getActiveItem();
-        ITreeItem[] siblingItems = getSiblings();
-        if ((idx < 0) || (siblingItems.length <= idx) || (active.equals(siblingItems[idx])))
-            return ITreeManager.NOACTION;
-        int st = moveUpdate(siblingItems[idx], true);
-        return st;
-    }
-
-    private int getActiveIndex() throws TreeManagerException {
-        initFennecService();
-        return getActiveItem().getNth();
-    }
-
-    public int gotoStartOfSiblings() throws TreeManagerException {
-        return gotoSiblingIndex(0);
-    }
-
-    public int gotoEndOfSiblings() throws TreeManagerException {
-        initFennecService();
-        ITreeItem[] siblingItems = getSiblings();
-        int st = moveUpdate(siblingItems[siblingItems.length - 1], true);
-        return st | ITreeManager.MOVED;
-    }
-
-    public int gotoPreviousSibling() throws TreeManagerException {
-        int idx = getActiveIndex();
-        return gotoSiblingIndex(idx - 1);
-    }
-
-    public int gotoNextSibling() throws TreeManagerException {
-        int idx = getActiveIndex();
-        return gotoSiblingIndex(idx + 1);
-    }
-
-    public int gotoStartOfPage() throws TreeManagerException {
-        ITreeItem item = getCurrentRootItem();
-        int st;
-        st = moveUpdate(item, true);
-        return ITreeManager.NOACTION;
-
-        /*
-         ITreeItem[] childItems = item.getChildItems();
-         int st;
-         if ((childItems != null) && (childItems.length > 0)) {
-         st = moveUpdate(childItems[0], true);
-         } else {
-         st = moveUpdate(item, true);
-         }
-         if ((st & ITreeManager.MOVED) != 0)
-         st |= ITreeManager.LEVEL_CHANGED;
-         return st;*/
-    }
-
-    public int gotoEndOfPageForFind() throws TreeManagerException {
-        // TODO
-        int st;
-        this.gotoStartOfPage();
-        do {
-            st = this.gotoEndOfSiblings();
-        } while (this.gotoFirstChild() != ITreeManager.NOACTION);
-
-        if ((st & ITreeManager.MOVED) != 0)
-            st |= ITreeManager.LEVEL_CHANGED;
-        return st;
-    }
-
-    public int gotoEndOfPage() throws TreeManagerException {
-        // TODO
-        int st;
-        this.gotoStartOfPage();
-        do {
-            st = this.gotoEndOfSiblings();
-        } while (this.gotoFirstChild() != ITreeManager.NOACTION);
-
-        ITreeItem item = getActiveItem();
-        while (!Vocabulary.hasReadingContent().eval(item)) {
-            st = this.traverse(true);
-            item = getActiveItem();
-        }
-
-        if ((st & ITreeManager.MOVED) != 0)
-            st |= ITreeManager.LEVEL_CHANGED;
-        return st;
-    }
-
-    public int gotoPreviousLine() throws TreeManagerException {
-        // TODO
-        return ITreeManager.NOACTION;
-    }
-
-    public int gotoNextLine() throws TreeManagerException {
-        // TODO
-        return ITreeManager.NOACTION;
-    }
-
-    public int gotoStartOfLine() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int gotoEndOfLine() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    private int findItem(boolean back, IProposition proposition) throws TreeManagerException {
-        try {
-            ITreeItem item;
-            int[] pos = getActivePos();
-            int level = pos.length;
-            int rc;
-            if (back) {
-                // First, traverse to the next item in order to skip the items
-                // connectable with the current item.
-                rc = traverse(true);
-                item = getActiveItem();
-                if (proposition.eval(item)) {
-                    rc |= ITreeManager.FOUND;
-                } else {
-                    rc = fennecService.searchBackward(proposition);
-                }
-            } else {
-                // Likewise.
-                rc = traverse(false);
-                item = getActiveItem();
-                if (proposition.eval(item)) {
-                    rc |= ITreeManager.FOUND;
-                } else {
-                    rc = fennecService.searchForward(proposition);
-                }
-            }
-            if ((rc & ITreeManager.FOUND) == 0) {
-                setActivePos(pos);
-                return rc;
-            }
-            item = getActiveItem();
-            if (back) {
-                // Skip to the interval start.
-                ITreeItem siblings[] = getSiblings();
-                int idx = item.getNth();
-                int st = intervalStart(siblings, idx);
-                if (idx != st) {
-                    rc |= moveUpdate(siblings[st], false);
-                }
-                item = getActiveItem();
-            }
-            if (!Vocabulary.hasReadingContent().eval(item)) {
-                traverse(false);
-            }
-            if (level != getLevel()) {
-                rc |= ITreeManager.LEVEL_CHANGED;
-            }
-            return rc;
-        } catch (FennecInterruptedException e) {
-            throw new TreeManagerInterruptedException(ITreeManager.UNDONE, "Failed to search.", e);
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to search.", e);
-        }
-    }
-
-    private int[] getActivePos() throws TreeManagerException {
-        int[] ret = new int[getLevel()];
-        ITreeItem current = getActiveItem();
-        int count = ret.length;
-        while (count > 0) {
-            ret[count - 1] = current.getNth();
-            count--;
-            current = current.getParent();
-        }
-        return ret;
-    }
-
-    private int setActivePos(int[] indexes) throws TreeManagerException {
-        gotoRoot();
-        ITreeItem item;
-        int st = ITreeManager.NOACTION;
-        for (int i = 0; i < indexes.length; i++) {
-            item = getActiveItem();
-            ITreeItem[] children = item.getChildItems();
-            int idx = indexes[i];
-            if ((children == null) || (idx >= children.length))
-                break;
-            st |= moveUpdate(children[idx], true);
-        }
-        return st;
-    }
-
-    public int findNext(IProposition proposition) throws TreeManagerException {
-        return findItem(false, proposition);
-    }
-
-    public int findPrevious(IProposition proposition) throws TreeManagerException {
-        return findItem(true, proposition);
-    }
-
-    private int traverseForward(ITreeItem active) throws TreeManagerException {
-        ITreeItem[] childItems = active.getChildItems();
-        if (childItems.length != 0) {
-            int st = moveUpdate(childItems[0], false);
-            return st;
-        }
-        int idx = active.getNth();
-        ITreeItem[] siblings = getSiblings();
-        if ((idx >= 0) && ((idx + 1) < siblings.length)) {
-            int st = moveUpdate(siblings[idx + 1], false);
-            return st;
-        }
-
-        for (int upCount = 1;; upCount++) {
-            active = getActiveItem();
-            ITreeItem parent = active.getParent();
-            if (parent == null) {
-                for (; upCount > 0; upCount--) {
-                    gotoLastChild();
-                }
-                return ITreeManager.NOACTION;
-            }
-            if (moveUpdate(parent, false) == ITreeManager.NOACTION) {
-                throw new TreeManagerException(ITreeManager.ERROR, "Internal Error.");
-            }
-            idx = getActiveIndex();
-            siblings = getSiblings();
-            if ((idx >= 0) && ((idx + 1) < siblings.length)) {
-                int st = moveUpdate(siblings[idx + 1], false);
-                return st;
-            }
-        }
-    }
-
-    private int traverseBackward() throws TreeManagerException {
-        int idx = getActiveIndex();
-        if (idx <= 0) {
-            ITreeItem active = getActiveItem();
-            ITreeItem parent = active.getParent();
-            if (parent == null)
-                return ITreeManager.NOACTION;
-            int st = moveUpdate(parent, false);
-            return st;
-        }
-        ITreeItem[] siblings = getSiblings();
-        int st = moveUpdate(siblings[idx - 1], false);
-
-        for (;;) {
-            ITreeItem active = getActiveItem();
-            ITreeItem[] childItems = active.getChildItems();
-            if (childItems.length == 0)
-                break;
-            st |= moveUpdate(childItems[0], false) | ITreeManager.LEVEL_CHANGED;
-            siblings = getSiblings();
-            if (siblings.length > 1) {
-                st |= moveUpdate(siblings[siblings.length - 1], false);
-            }
-        }
-        return st;
-    }
-
-    private int intervalStart(ITreeItem[] siblings, int st) {
-        for (st = st - 1;; st--) {
-            if (st < 0)
-                return 0;
-            if (!Vocabulary.isConnectable().eval(siblings[st]))
-                return st + 1;
-        }
-    }
-
-    private int intervalEnd(ITreeItem[] siblings, int end) {
-        for (; end < siblings.length; end++) {
-            if (!Vocabulary.isConnectable().eval(siblings[end]))
-                return end;
-        }
-        return end - 1;
-    }
-
-    public int traverse(boolean back) throws TreeManagerException {
-        initFennecService();
-        ITreeItem orig = getActiveItem();
-        ITreeItem current = orig;
-        int level = getLevel();
-        int rc = ITreeManager.NOACTION;
-
-        if (back) {
-            do {
-                rc = traverseBackward();
-                current = getActiveItem();
-            } while ((rc != ITreeManager.NOACTION)
-                    && (!Vocabulary.hasReadingContent().eval(current)));
-            ITreeItem siblings[] = getSiblings();
-            int idx = current.getNth();
-            int st = intervalStart(siblings, idx);
-            if (idx != st) {
-                rc |= moveUpdate(siblings[st], false);
-            }
-        } else {
-            ITreeItem siblings[] = getSiblings();
-            int idx = current.getNth();
-            int end = intervalEnd(siblings, idx);
-            current = siblings[end];
-            do {
-                rc = traverseForward(current);
-                current = getActiveItem();
-            } while ((rc != ITreeManager.NOACTION)
-                    && (!Vocabulary.hasReadingContent().eval(current)));
-        }
-
-        if (!orig.equals(current)) {
-            // rc |= ITreeManager.MOVED;
-            if (level != getLevel()) {
-                rc |= ITreeManager.LEVEL_CHANGED;
-            }
-        }
-
-        return rc;
-    }
-
-    public String[] getActiveStrings() throws TreeManagerException {
-        initFennecService();
-        ArrayList al = new ArrayList();
-        ITreeItem[] siblings = getSiblings();
-        for (int i = getActiveIndex(); i < siblings.length; i++) {
-            ITreeItem current = siblings[i];
-            String str = current.getUIString();
-            if (str.length() > 0) {
-                al.add(str);
-            }
-            ITreeItem[] childItems = current.getChildItems();
-            if (childItems.length > 0)
-                break;
-        }
-        return (String[]) al.toArray(new String[0]);
-    }
-
-    public int gotoLeftCell() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int gotoRightCell() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int gotoUpCell() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int gotoDownCell() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int getActiveTableInfo() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public int getActiveTableCellInfo() throws TreeManagerException {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-    public ITreeItem getCurrentRootItem() throws TreeManagerException {
-        initFennecService();
-        ITreeItem parent, current;
-        current = getActiveItem();
-        while (true) {
-            parent = current.getParent();
-            if (parent == null)
-                break;
-            current = parent;
-        }
-        return current;
-    }
-
-    public ISoundControl getSoundControl() throws TreeManagerException {
-        initFennecService();
-        return fennecService.getSoundControl();
-    }
-
-    public IVideoControl getVideoControl() throws TreeManagerException {
-        initFennecService();
-        return fennecService.getVideoControl();
-    }
-
-    public IAccessKeyList getAccessKeyList() throws TreeManagerException {
-        initFennecService();
-        return fennecService.getAccessKeyList();
-    }
-
-    public int analyze() throws TreeManagerException {
-        initFennecService();
-        try {
-            return fennecService.analyze();
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to analyze", e);
-        }
-    }
-
-    public ILocation getCurrentLocation() throws TreeManagerException {
-        initFennecService();
-        return new LocationImpl(getActivePos());
-    }
-
-    public int moveToLocation(ILocation location) throws TreeManagerException {
-        initFennecService();
-        LocationImpl loc = (LocationImpl) location;
-        int[] pos = loc.getPos();
-        return setActivePos(pos);
-    }
-
-    public ITreeItem expandWholeTree() throws TreeManagerException {
-        initFennecService();
-        try {
-            return fennecService.expandWholeTree();
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to expand the whole tree", e);
-        }
-    }
-
-    public int skipToAnchor(String target) throws TreeManagerException {
-        initFennecService();
-        try {
-            return fennecService.skipToAnchor(target);
-        } catch (FennecException e) {
-            throw new TreeManagerException(ITreeManager.ERROR, "Failed to find the target in the anchors", e);
-        }
-    }
-    
-    public void repairFlash() throws TreeManagerException {
-        initFennecService();
-        IFlashNode[] node = fennecService.getFlashTopNodes();
-        for (int i = 0; i < node.length; i++) {
-            node[i].repairFlash();
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/internal/fennec/FennecPlugin.java b/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/internal/fennec/FennecPlugin.java
deleted file mode 100644
index 1dc866a..0000000
--- a/plugins/org.eclipse.actf.ai.fennec/src/org/eclipse/actf/ai/internal/fennec/FennecPlugin.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.internal.fennec;
-
-import org.eclipse.core.runtime.Plugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class FennecPlugin extends Plugin {
-
-	// The shared instance.
-	private static FennecPlugin plugin;
-
-	/**
-	 * The constructor.
-	 */
-	public FennecPlugin() {
-		plugin = this;
-	}
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		super.stop(context);
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance.
-	 */
-	public static FennecPlugin getDefault() {
-		return plugin;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/.classpath b/plugins/org.eclipse.actf.ai.key.keyui/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/.cvsignore b/plugins/org.eclipse.actf.ai.key.keyui/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/.project b/plugins/org.eclipse.actf.ai.key.keyui/.project
deleted file mode 100644
index dde0dad..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.key.keyui</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.key.keyui/META-INF/MANIFEST.MF
deleted file mode 100644
index f103847..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,13 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Key UI Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.key.keyui;singleton:=true
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.key.keyui.KeyUIPlugin
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.actf.ai.xmlstore,
- org.eclipse.ui,
- org.eclipse.actf.ai.navigator,
- org.eclipse.actf.util.win32.comclutch
-Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/about.html b/plugins/org.eclipse.actf.ai.key.keyui/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/build.properties b/plugins/org.eclipse.actf.ai.key.keyui/build.properties
deleted file mode 100644
index 8f739ba..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .,\
-               plugin.xml
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/plugin.xml b/plugins/org.eclipse.actf.ai.key.keyui/plugin.xml
deleted file mode 100644
index c64fb80..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/plugin.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   <extension
-         point="org.eclipse.actf.ai.navigator.Navigation">
-      <manipulator class="org.eclipse.actf.ai.key.keyui.impl.KeyUIImpl"/>
-   </extension>
-
-</plugin>
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/src/messages.properties b/plugins/org.eclipse.actf.ai.key.keyui/src/messages.properties
deleted file mode 100644
index e0ebc07..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/src/messages.properties
+++ /dev/null
@@ -1,239 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-openTab=Open
-closeTab=Close
-
-traverseDown=Next Node
-traverseUp=Previous Node
-click=Click
-nextLink=Next Link
-previousLink=Previous Link
-
-searchNext=Find Next
-searchPrevious=Find Previous
-
-treeTop=Top Node
-treeBottom=Last Node
-
-nextHeader=Next Header
-previousHeader=Previous Header
-nextObject=Next Object
-previousObject=Previous Object
-nextInputable=Next Inputable
-previousInputable=Previous Inputable
-
-nextListItem=Next Item of List
-previousListItem=Previous Item of List
-
-nextBlock=Next Text Block
-previousBlock=Previous Text Block
-
-selectNextFennec=Select Fennec data
-forceRestart=Content re-Aanalyse
-toggleDescriptionEnable=Audio Description On/Off
-  
-showAccessKeyList=Show Accesskey List
-speakCurrentStatus=Speak Current Status
-speakMediaStatus=Speak Media Status
-
-nextTab=Next Tab
-prevTab=Previous Tab
-
-playMedia=Play Video
-stopMedia=Stop Video
-pauseMedia=Pause Video
-  
-muteMedia=Mute Volume
-volumeDownMedia=Volume Down
-volumeUpMedia=Volume Up
-
-launchBrowser=Open in Default Browser
-toggleLeftViewsShowing=Open / Close Tree View
-speakAll=Say all
-
-importMetadata=Import Fennec data...
-exportMetadata=Export User Annotation...
-exportAllMetadata=Export All User Annotations...
-
-nextMedia=Next Media
-previousMedia=Previous Media
-
-saveUserInfo=Save Annotation
-removeUserInfo=Remove All Annotation
-editAltText=Edit Alt. Text
-makeLandmark=Set / Unset a Landmark
-nextAlterable=Next Alterable Item
-previousAlterable=Previous Alterable Item
-
-navigateRefresh=Refresh
-forward=Forward
-backward=Backward
-enterBrowserAddress=Enter Address
-
-nextHeader1=Next Header Level 1
-nextHeader2=Next Header Level 2
-nextHeader3=Next Header Level 3
-nextHeader4=Next Header Level 4
-nextHeader5=Next Header Level 5
-nextHeader6=Next Header Level 6
-
-previousHeader1=Previous Header Level 1
-previousHeader2=Previous Header Level 2
-previousHeader3=Previous Header Level 3
-previousHeader4=Previous Header Level 4
-previousHeader5=Previous Header Level 5
-previousHeader6=Previous Header Level 6
-
-minimalVolumeDownMedia=Volume Down (minimum step)
-minimalVolumeUpMedia=Volume Up (minimum step)
-speechSpeedDown=Speech Speed Down
-speechSpeedUp=Speech Speed Up
-
-repairFlash=Repair Flash content
-
-Key.OR=or
-
-
-CMD_PASSTHROUGH=Pass Through
-
-CMD_NOOP=No Operation
-
-CMD_MUTEMEDIA=Mute Volume
-
-CMD_VOLUMEDOWNMEDIA=Volume Down
-
-CMD_VOLUMEUPMEDIA=Volume Up
-
-CMD_PREVIOUSTRACK=Previous Track
-
-CMD_NEXTTRACK=Next Track
-
-CMD_STOPMEDIA=Stop Video
-
-CMD_PLAYMEDIA=Play Video
-
-CMD_PAUSEMEDIA=Pause Video
-
-CMD_FASTREVERSE=Rewind Video
-
-CMD_FASTFORWARD=Forward Video
-
-CMD_SPEECHSPEEDUP=Speed Up Speech
-
-CMD_SPEECHSPEEDDOWN=Speed Down Speech
-
-CMD_TREELEFT=Tree Left
-
-CMD_TREERIGHT=Tree Right
-
-CMD_TREEUP=Tree Up
-
-CMD_TREEDOWN=Tree Down
-
-CMD_TREETOP=Tree Top
-
-CMD_TREEBOTTOM=Tree Bottom
-
-CMD_TRAVERSENODEDOWN=Next Node
-
-CMD_TRAVERSENODEUP=Previous Node
-
-CMD_TRAVERSEDOWN=Next Item
-
-CMD_TRAVERSEUP=Previous Item
-
-CMD_CLICK=Click
-
-CMD_CELLLEFT=Cell Left
-
-CMD_CELLRIGHT=Cell Right
-
-CMD_CELLUP=Cell Up
-
-CMD_CELLDOWN=Cell Down
-
-CMD_STARTAUTOPLAY=Auto Play
-
-CMD_ENDAUTOPLAY=Stop Auto Play
-
-CMD_AUTOPLAYMINSPEED=Min Speed Auto Play
-
-CMD_AUTOPLAYMAXSPEED=Max Speed Auto Play
-
-CMD_AUTOPLAYDEFAULTSPEED=Default Speed Auto Play
-
-CMD_AUTOPLAYNOP=Auto Play No Operation
-
-CMD_AUTOPLAYSLOWER=Slower Auto Play
-
-CMD_AUTOPLAYFASTER=Faster Auto Play
-
-CMD_NEXTHEADER=Next Header
-
-CMD_PREVIOUSHEADER=Previous Header
-
-CMD_NEXTINPUTABLE=Next Input
-
-CMD_PREVIOUSINPUTABLE=Previous Input
-
-CMD_HOME=Go to top of page
-
-CMD_END=Go to end of page
-
-CMD_SELECTNEXTFennec=Select Fennec data
-
-CMD_ENTERBROWSERADDRESS=Edit Address
-
-CMD_FORCERESTART=Content re-Aanalyse
-
-CMD_NAVIGATEREFRESH=Refrefh
-
-CMD_SPEAKCURRENTSTATUS=Speak Current Status
-
-CMD_NEXTLINK=Next Link
-
-CMD_PREVIOUSLINK=Previous Link
-
-CMD_NEXTOBJECT=Next Object
-
-CMD_PREVIOUSOBJECT=Previous Object
-
-CMD_EXIT_FORM_MODE=Exit Form Mode
-
-CMD_FORM_IGNORE_KEY=Form Ignore Key
-
-CMD_FORM_SUBMIT=Form Submit
-
-CMD_TOGGLE_DESCRIPTION_ENABLE=Audio Description
-
-CMD_TAKE_BACK_CONTROL=Take Back Control
-
-CMD_CLOSETAB=Close Tab
-    
-CMD_NEXTTAB=Next Tab
-
-CMD_PREVTAB=Prev Tab
-    
-CMD_GO_FORWARD=Go Forward
-   
-CMD_GO_BACKWORD=Go Backward
-
-CMD_OPEN=Open
-
-CMD_SPEED_UP=Speed Up
-
-CMD_SPEED_DOWN=Speed Down
-
-CMD_PLAY_NEXT=Play Next
-
-CMD_PLAY_PREV=Play Prev
-    
-CMD_START_RECORDING=Start Recording
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/src/messages_ja.properties b/plugins/org.eclipse.actf.ai.key.keyui/src/messages_ja.properties
deleted file mode 100644
index 9bef2fb..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/src/messages_ja.properties
+++ /dev/null
@@ -1,239 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-openTab=\u958b\u304f
-closeTab=\u9589\u3058\u308b
-
-traverseDown=\u6b21\u306e\u9805\u76ee
-traverseUp=\u524d\u306e\u9805\u76ee
-click=\u30af\u30ea\u30c3\u30af
-nextLink=\u6b21\u306e\u30ea\u30f3\u30af
-previousLink=\u524d\u306e\u30ea\u30f3\u30af
-
-searchNext=\u6b21\u3092\u691c\u7d22
-searchPrevious=\u524d\u3092\u691c\u7d22
-
-treeTop=\u5148\u982d\u306e\u9805\u76ee\u3078
-treeBottom=\u6700\u5f8c\u306e\u9805\u76ee\u3078
-
-nextHeader=\u6b21\u306e\u898b\u51fa\u3057\u3078
-previousHeader=\u524d\u306e\u898b\u51fa\u3057\u3078
-nextObject=\u6b21\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3078
-previousObject=\u524d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3078
-nextInputable=\u6b21\u306e\u30d5\u30a9\u30fc\u30e0\u3078
-previousInputable=\u524d\u306e\u30d5\u30a9\u30fc\u30e0\u3078
-
-nextListItem=\u6b21\u306e\u30ea\u30b9\u30c8\u9805\u76ee\u3078
-previousListItem=\u524d\u306e\u30ea\u30b9\u30c8\u9805\u76ee\u3078
-
-nextBlock=\u6b21\u306e\u30c6\u30ad\u30b9\u30c8\u30d6\u30ed\u30c3\u30af\u3078
-previousBlock=\u524d\u306e\u30c6\u30ad\u30b9\u30c8\u30d6\u30ed\u30c3\u30af\u3078
-
-selectNextFennec=Fennec\u5916\u90e8\u60c5\u5831\u306e\u5207\u308a\u66ff\u3048
-forceRestart=\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u518d\u89e3\u6790
-toggleDescriptionEnable=\u97f3\u58f0\u89e3\u8aac\u306e\u30aa\u30f3\u30fb\u30aa\u30d5
-  
-showAccessKeyList=\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306e\u30ea\u30b9\u30c8\u3092\u8868\u793a
-speakCurrentStatus=\u73fe\u5728\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u8aad\u4e0a\u3052\u308b
-speakMediaStatus=\u30e1\u30c7\u30a3\u30a2\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u8aad\u4e0a\u3052\u308b
-
-nextTab=\u6b21\u306e\u30bf\u30d6
-prevTab=\u524d\u306e\u30bf\u30d6
-
-playMedia=\u30d3\u30c7\u30aa\u306e\u518d\u751f
-stopMedia=\u30d3\u30c7\u30aa\u306e\u505c\u6b62
-pauseMedia=\u30d3\u30c7\u30aa\u306e\u4e00\u6642\u505c\u6b62
-  
-muteMedia=\u6d88\u97f3
-volumeDownMedia=\u97f3\u91cf\u5c0f
-volumeUpMedia=\u97f3\u91cf\u5927
-
-launchBrowser=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u958b\u304f
-toggleLeftViewsShowing=\u30c4\u30ea\u30fc\u30d3\u30e5\u30fc\u3092\u958b\u304f\uff0f\u9589\u3058\u308b
-speakAll=\u5168\u3066\u8aad\u4e0a\u3052
-
-importMetadata=Fennec \u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f...
-exportMetadata=\u6ce8\u91c8\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u51fa\u3057...
-exportAllMetadata=\u5168\u3066\u306e\u6ce8\u91c8\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u51fa\u3057...
-
-nextMedia=\u6b21\u306e\u30e1\u30c7\u30a3\u30a2
-previousMedia=\u524d\u306e\u30e1\u30c7\u30a3\u30a2
-
-saveUserInfo=\u6ce8\u91c8\u306e\u30bb\u30fc\u30d6
-removeUserInfo=\u6ce8\u91c8\u3092\u5168\u3066\u524a\u9664
-editAltText=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u306e\u7de8\u96c6
-makeLandmark=\u3057\u304a\u308a\u306e\u8ffd\u52a0\uff0f\u524a\u9664
-nextAlterable=\u6b21\u306e\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u7de8\u96c6\u70b9
-previousAlterable=\u524d\u306e\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u7de8\u96c6\u70b9
-
-navigateRefresh=\u6700\u65b0\u306e\u60c5\u5831\u306b\u66f4\u65b0
-forward=\u9032\u3080
-backward=\u623b\u308b
-enterBrowserAddress=\u30a2\u30c9\u30ec\u30b9\u5165\u529b
-
-nextHeader1=\u6b21\u306e\u30ec\u30d9\u30eb\uff11\u306e\u898b\u51fa\u3057
-nextHeader2=\u6b21\u306e\u30ec\u30d9\u30eb\uff12\u306e\u898b\u51fa\u3057
-nextHeader3=\u6b21\u306e\u30ec\u30d9\u30eb\uff13\u306e\u898b\u51fa\u3057
-nextHeader4=\u6b21\u306e\u30ec\u30d9\u30eb\uff14\u306e\u898b\u51fa\u3057
-nextHeader5=\u6b21\u306e\u30ec\u30d9\u30eb\uff15\u306e\u898b\u51fa\u3057
-nextHeader6=\u6b21\u306e\u30ec\u30d9\u30eb\uff16\u306e\u898b\u51fa\u3057
-
-previousHeader1=\u524d\u306e\u30ec\u30d9\u30eb\uff11\u306e\u898b\u51fa\u3057
-previousHeader2=\u524d\u306e\u30ec\u30d9\u30eb\uff12\u306e\u898b\u51fa\u3057
-previousHeader3=\u524d\u306e\u30ec\u30d9\u30eb\uff13\u306e\u898b\u51fa\u3057
-previousHeader4=\u524d\u306e\u30ec\u30d9\u30eb\uff14\u306e\u898b\u51fa\u3057
-previousHeader5=\u524d\u306e\u30ec\u30d9\u30eb\uff15\u306e\u898b\u51fa\u3057
-previousHeader6=\u524d\u306e\u30ec\u30d9\u30eb\uff16\u306e\u898b\u51fa\u3057
-
-minimalVolumeDownMedia=\u97f3\u91cf\u5c0f\uff08\u6700\u5c0f\u5e45\uff09
-minimalVolumeUpMedia=\u97f3\u91cf\u5927\uff08\u6700\u5c0f\u5e45\uff09
-speechSpeedDown=\u8aad\u4e0a\u3052\u901f\u5ea6\u9045\u304f
-speechSpeedUp=\u8aad\u4e0a\u3052\u901f\u5ea6\u901f\u304f
-
-repairFlash=Flash\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u4fee\u5fa9
-
-Key.OR=\u3082\u3057\u304f\u306f
-
-CMD_PASSTHROUGH=\u901a\u904e
-
-CMD_NOOP=\u64cd\u4f5c\u306a\u3057
-
-CMD_MUTEMEDIA=\u6d88\u97f3
-
-CMD_VOLUMEDOWNMEDIA=\u97f3\u91cf\u5927
-
-CMD_VOLUMEUPMEDIA=\u97f3\u91cf\u5c0f
-
-CMD_PREVIOUSTRACK=\u524d\u306e\u30c8\u30e9\u30c3\u30af\u3078
-
-CMD_NEXTTRACK=\u6b21\u306e\u30c8\u30e9\u30c3\u30af\u3078
-
-CMD_STOPMEDIA=\u30d3\u30c7\u30aa\u505c\u6b62
-
-CMD_PLAYMEDIA=\u30d3\u30c7\u30aa\u518d\u751f
-
-CMD_PAUSEMEDIA=\u30d3\u30c7\u30aa\u4e00\u6642\u505c\u6b62
-
-CMD_FASTREVERSE=\u30d3\u30c7\u30aa\u5dfb\u304d\u623b\u3057
-
-CMD_FASTFORWARD=\u30d3\u30c7\u30aa\u65e9\u9001\u308a
-
-CMD_SPEECHSPEEDUP=\u8aad\u4e0a\u3052\u901f\u5ea6\u901f\u304f
-
-CMD_SPEECHSPEEDDOWN=\u8aad\u4e0a\u3052\u901f\u5ea6\u9045\u304f
-
-CMD_TREELEFT=\u30c4\u30ea\u30fc\u5de6\u3078
-
-CMD_TREERIGHT=\u30c4\u30ea\u30fc\u53f3\u3078
-
-CMD_TREEUP=\u30c4\u30ea\u30fc\u4e0a\u3078
-
-CMD_TREEDOWN=\u30c4\u30ea\u30fc\u4e0b\u3078
-
-CMD_TREETOP=\u30c4\u30ea\u30fc\u6700\u521d\u3078
-
-CMD_TREEBOTTOM=\u30c4\u30ea\u30fc\u6700\u5f8c\u3078
-
-CMD_TRAVERSENODEDOWN=\u6b21\u306e\u30ce\u30fc\u30c9\u3078
-
-CMD_TRAVERSENODEUP=\u524d\u306e\u30ce\u30fc\u30c9\u3078
-
-CMD_TRAVERSEDOWN=\u6b21\u306e\u9805\u76ee\u3078
-
-CMD_TRAVERSEUP=\u524d\u306e\u9805\u76ee\u3078
-
-CMD_CLICK=\u30af\u30ea\u30c3\u30af
-
-CMD_CELLLEFT=\u5de6\u306e\u30bb\u30eb\u3078
-
-CMD_CELLRIGHT=\u53f3\u306e\u30bb\u30eb\u3078
-
-CMD_CELLUP=\u4e0a\u306e\u30bb\u30eb\u3078
-
-CMD_CELLDOWN=\u4e0b\u306e\u30bb\u30eb\u3078
-
-CMD_STARTAUTOPLAY=\u81ea\u52d5\u8aad\u4e0a\u3052
-
-CMD_ENDAUTOPLAY=\u81ea\u52d5\u8aad\u4e0a\u3052\u505c\u6b62
-
-CMD_AUTOPLAYMINSPEED=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u6700\u5c0f\u901f\u5ea6
-
-CMD_AUTOPLAYMAXSPEED=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u6700\u5927\u901f\u5ea6
-
-CMD_AUTOPLAYDEFAULTSPEED=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u901a\u5e38\u901f\u5ea6
-
-CMD_AUTOPLAYNOP=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u64cd\u4f5c\u306a\u3057
-
-CMD_AUTOPLAYSLOWER=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u901f\u5ea6\u9045\u304f
-
-CMD_AUTOPLAYFASTER=\u81ea\u52d5\u8aad\u4e0a\u3052\u3001\u901f\u5ea6\u901f\u304f
-
-CMD_NEXTHEADER=\u6b21\u306e\u30d8\u30c3\u30c0\u30fc\u3078
-
-CMD_PREVIOUSHEADER=\u524d\u306e\u30d8\u30c3\u30c0\u30fc\u3078
-
-CMD_NEXTINPUTABLE=\u6b21\u306e\u30d5\u30a9\u30fc\u30e0\u3078
-
-CMD_PREVIOUSINPUTABLE=\u524d\u306e\u30d5\u30a9\u30fc\u30e0\u3078
-
-CMD_HOME=\u30da\u30fc\u30b8\u306e\u5148\u982d\u3078
-
-CMD_END=\u30da\u30fc\u30b8\u306e\u6700\u5f8c\u3078
-
-CMD_SELECTNEXTFennec=Fennec \u30c7\u30fc\u30bf\u306e\u5207\u308a\u66ff\u3048
-
-CMD_ENTERBROWSERADDRESS=\u30a2\u30c9\u30ec\u30b9\u5165\u529b
-
-CMD_FORCERESTART=\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u518d\u89e3\u6790
-
-CMD_NAVIGATEREFRESH=\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5
-
-CMD_SPEAKCURRENTSTATUS=\u73fe\u5728\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u8aad\u4e0a\u3052\u308b
-
-CMD_NEXTLINK=\u6b21\u306e\u30ea\u30f3\u30af\u3078
-
-CMD_PREVIOUSLINK=\u524d\u306e\u30ea\u30f3\u30af\u3078
-
-CMD_NEXTOBJECT=\u6b21\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3078
-
-CMD_PREVIOUSOBJECT=\u524d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3078
-
-CMD_EXIT_FORM_MODE=\u30d5\u30a9\u30fc\u30e0\u30e2\u30fc\u30c9\u7d42\u4e86
-
-CMD_FORM_IGNORE_KEY=Form Ignore Key
-
-CMD_FORM_SUBMIT=\u9001\u4fe1\u30dc\u30bf\u30f3
-
-CMD_TOGGLE_DESCRIPTION_ENABLE=\u97f3\u58f0\u89e3\u8aac
-
-CMD_TAKE_BACK_CONTROL=\u30c6\u30a4\u30af\u30d0\u30c3\u30af\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb
-
-CMD_CLOSETAB=\u30bf\u30d6\u3092\u9589\u3058\u308b
-    
-CMD_NEXTTAB=\u6b21\u306e\u30bf\u30d6\u3078
-
-CMD_PREVTAB=\u524d\u306e\u30bf\u30d6\u3078
-    
-CMD_GO_FORWARD=\u9032\u3080
- 
-CMD_GO_BACKWORD=\u623b\u308b
-
-CMD_OPEN=\u958b\u304f
-
-CMD_SPEED_UP=\u901f\u5ea6\u901f\u304f
-
-CMD_SPEED_DOWN=\u901f\u5ea6\u9045\u304f
-
-CMD_PLAY_NEXT=\u6b21\u3092\u518d\u751f
-
-CMD_PLAY_PREV=\u524d\u3092\u518d\u751f
-    
-CMD_START_RECORDING=\u9332\u97f3\u958b\u59cb
-
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/KeyUIPlugin.java b/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/KeyUIPlugin.java
deleted file mode 100644
index 8d60c3a..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/KeyUIPlugin.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.key.keyui;
-
-import org.eclipse.core.runtime.Plugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class KeyUIPlugin extends Plugin {
-
-    //The shared instance.
-    private static KeyUIPlugin plugin;
-	
-    /**
-     * The constructor.
-     */
-    public KeyUIPlugin() {
-        plugin = this;
-    }
-
-    /**
-     * This method is called upon plug-in activation
-     */
-    @Override
-    public void start(BundleContext context) throws Exception {
-        super.start(context);
-    }
-
-    /**
-     * This method is called when the plug-in is stopped
-     */
-    @Override
-    public void stop(BundleContext context) throws Exception {
-        super.stop(context);
-        plugin = null;
-    }
-
-    /**
-     * Returns the shared instance.
-     */
-    public static KeyUIPlugin getDefault() {
-        return plugin;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/Messages.java b/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/Messages.java
deleted file mode 100644
index 3982248..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/Messages.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Takashi ITOH - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.key.keyui;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-
-
-/**
- * This provides the resource string.
- */
-public class Messages {
-    private static final String BUNDLE_NAME = "messages"; //$NON-NLS-1$
-
-    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
-
-    private Messages() {
-    }
-    
-    /**
-     * @param key The name of the resouce string.
-     * @return The string specified the key.
-     */
-    public static String getString(String key) {
-        // TODO Auto-generated method stub
-        try {
-            return RESOURCE_BUNDLE.getString(key);
-        } catch (MissingResourceException e) {
-            return '!' + key + '!';
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/impl/KeyUIImpl.java b/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/impl/KeyUIImpl.java
deleted file mode 100644
index 336a543..0000000
--- a/plugins/org.eclipse.actf.ai.key.keyui/src/org/eclipse/actf/ai/key/keyui/impl/KeyUIImpl.java
+++ /dev/null
@@ -1,525 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.key.keyui.impl;
-
-import java.awt.event.KeyEvent;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.eclipse.actf.ai.key.keyui.Messages;
-import org.eclipse.actf.ai.key.keyui.impl.KeyUIImpl.KC.Type;
-import org.eclipse.actf.ai.navigator.IBrowserControl;
-import org.eclipse.actf.ai.navigator.IManipulator;
-import org.eclipse.actf.ai.navigator.INavigatorUI;
-import org.eclipse.actf.ai.navigator.ui.NavigatorUIUtil;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-import org.eclipse.actf.ai.xmlstore.IXMLStoreService;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
-import org.eclipse.actf.util.win32.comclutch.ComPlugin;
-import org.eclipse.actf.util.win32.keyhook.IKeyHook;
-import org.eclipse.actf.util.win32.keyhook.IKeyHookListener;
-import org.eclipse.actf.util.win32.keyhook.ISendEvent;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.Separator;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-
-
-public class KeyUIImpl implements IKeyHookListener, IManipulator {
-    private static boolean initialized = false;
-
-    public static final String PREFERENCES_NS = "http://www.ibm.com/xmlns/prod/AcTF/aiBrowser/preferences/1.0";
-
-    public static final int CMD_PASSTHROUGH = -1;
-
-    public static final int CMD_NOOP = 9999;
-
-    // for demo
-    public static final int CMD_SPEED_UP = 1300;
-
-    public static final int CMD_SPEED_DOWN = 1301;
-
-    public static final int CMD_PLAY_NEXT = 1302;
-
-    public static final int CMD_PLAY_PREV = 1303;
-
-    public static final int CMD_START_RECORDING = 1304;
-
-    private static final int VK_RETURN = 13;
-
-    private IManipulator.Mode mode = null;
-
-    private IBrowserControl browserControl;
-
-    private INavigatorUI navigatorUI;
-
-    private HashMap<KeyEntry, KC> keyConfigMapForTreeNavigation = new HashMap<KeyEntry, KC>();
-
-    private static IKeyHook keyHook;
-
-    private static ISendEvent sendEvent;
-
-    public KeyUIImpl() {
-        if (!initialized) {
-            initialized = true;
-            initialize();
-        }
-    }
-
-    public void initialize() {
-        keyHook = ComPlugin.getDefault().newKeyHook(this);
-        sendEvent = ComPlugin.getDefault().newSendEvent();
-
-        IXMLStoreService xmlStoreService = XMLStoreServiceUtil.getXMLStoreService();
-        IXMLSelector selector = xmlStoreService.getSelectorWithDocElem("UserPreferences", PREFERENCES_NS);
-        IXMLStore rootStore = xmlStoreService.getRootStore();
-        IXMLStore specifiedStroe = rootStore.specify(selector);
-        for (Iterator<IXMLInfo> i = specifiedStroe.getInfoIterator(); i.hasNext();) {
-            IXMLInfo info = i.next();
-            try {
-                read(info.getRootNode());
-            } catch (XMLStoreException e) {
-                e.printStackTrace();
-            }
-        }
-        
-        initAccessKey();
-    }
-    
-    private void initAccessKey() {
-        for (int i = 0; i < 10; i++) {
-            KC kc = new KC(KC.Type.ACCESSKEY, KeyEvent.VK_0 + i, KeyEvent.SHIFT_MASK | KeyEvent.ALT_MASK, null);
-            register(kc);
-        }
-        for (int i = 0; i < 26; i++) {
-            KC kc = new KC(KC.Type.ACCESSKEY, KeyEvent.VK_A + i, KeyEvent.SHIFT_MASK | KeyEvent.ALT_MASK, null);
-            register(kc);
-        }
-    }
-
-    private void read(Node rootNode) {
-        NodeList children = rootNode.getChildNodes();
-
-        for (int i = 0; i < children.getLength(); i++) {
-            Node commands = children.item(i);
-            KC.Type type = KC.Type.COMMAND;
-
-            if (commands.getNodeType() != Node.ELEMENT_NODE)
-                continue;
-
-            if (commands.getLocalName().equals("Commands")) {
-                type = KC.Type.COMMAND;
-            } else if (commands.getLocalName().equals("Functions")) {
-                type = KC.Type.FUNCTION;
-            } else {
-                continue;
-            }
-
-            NodeList commandList = commands.getChildNodes();
-
-            for (int j = 0; j < commandList.getLength(); j++) {
-                Node command = commandList.item(j);
-
-                if (command.getNodeType() != Node.ELEMENT_NODE)
-                    continue;
-
-                NodeList keyList = command.getChildNodes();
-
-                ArrayList<KC> array = new ArrayList<KC>();
-                for (int k = 0; k < keyList.getLength(); k++) {
-                    Node key = keyList.item(k);
-
-                    if (key.getNodeType() != Node.ELEMENT_NODE)
-                        continue;
-
-                    KC kc = createKC(type, command, key);
-                    register(kc);
-
-                    if (!"none".equals(((Element) key).getAttribute("display")))
-                        array.add(kc);
-                }
-                addMenu(commands, command, array);
-            }
-        }
-    }
-
-    private KC createKC(Type type, Node command, Node key) {
-        String name = command.getLocalName();
-        int vkey = 0;
-        int mod = 0;
-        if ("key".equals(key.getLocalName()) && PREFERENCES_NS.equals(key.getNamespaceURI())) {
-            String stroke = key.getTextContent();
-            stroke = stroke.trim();
-            String[] keys = stroke.split("[ \n\t\r]+");
-            for (int j = 0; j < keys.length; j++) {
-                try {
-                    if ("VK_RETURN".equals(keys[j])) {
-                        vkey = VK_RETURN;
-                    } else if (keys[j].startsWith("VK_")) {
-                        Field f = KeyEvent.class.getField(keys[j]);
-                        vkey = f.getInt(KeyEvent.class);
-                    } else if (keys[j].endsWith("_MASK")) {
-                        Field f = KeyEvent.class.getField(keys[j]);
-                        mod |= f.getInt(KeyEvent.class);
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-        return new KC(type, vkey, mod, name);
-    }
-
-    private void addMenu(Node commands, Node command, ArrayList<KC> kc) {
-        String menuName = ((Element) commands).getAttribute("menu");
-        if (menuName.length() == 0)
-            return;
-        String groupName = ((Element) commands).getAttribute("menuGroup");
-        if (groupName.length() == 0)
-            return;
-        String name = command.getLocalName();
-
-        IMenuManager menu = NavigatorUIUtil.menuManager;
-        IMenuManager menu2 = menu.findMenuUsingPath(menuName);
-
-        if ("separator".equals(name)) {
-            menu2.appendToGroup(groupName, new Separator());
-        } else {
-            menu2.appendToGroup(groupName, new KeyAction(name, kc));
-        }
-    }
-
-    static class KeyEntry {
-        int vkey;
-
-        int mod;
-
-        @Override
-        public int hashCode() {
-            return (vkey | mod << 16);
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (!(o instanceof KeyEntry))
-                return false;
-            KeyEntry e = (KeyEntry) o;
-            return ((e.vkey == vkey) && (e.mod == mod));
-        }
-
-        KeyEntry(int vkey, int mod) {
-            this.vkey = vkey;
-            this.mod = mod;
-        }
-    }
-
-    private void register(KC kc) {
-        keyConfigMapForTreeNavigation.put(new KeyEntry(kc.vkey, kc.mod), kc);
-        keyHook.registerHookedKey(kc.vkey, kc.mod);
-    }
-
-    static class KC {
-        enum Type {
-            COMMAND, FUNCTION, NOOP, ACCESSKEY
-        }
-
-        int vkey;
-
-        int mod;
-
-        Type type;
-
-        String name;
-        
-        enum Target {
-            INAVIGATORUI, IBROWSERCONTROL
-        }
-        
-        Target target;
-
-        Method method;
-
-        int command;
-        
-        KC(Type type, int vkey, int mod, String name) {
-            this.type = type;
-            this.vkey = vkey;
-            this.mod = mod;
-            this.name = name;
-
-            if (type == Type.FUNCTION) {
-            	try {
-            		method = INavigatorUI.class.getMethod(name);
-                    target = Target.INAVIGATORUI;
-            	} catch (Exception e) {
-            		method = null;
-            	}
-            	
-                if (method == null) {
-                	try {
-                		method = IBrowserControl.class.getMethod(name);
-                        target = Target.IBROWSERCONTROL;
-                	} catch (Exception e){
-                        System.err.println("No such method:" + name);
-                	}
-                }
-            } else if (type == Type.COMMAND) {
-                try {
-                    Field field = KeyUIImpl.class.getField("CMD_" + name);
-                    command = field.getInt(KeyUIImpl.class);
-                } catch (SecurityException e) {
-                    e.printStackTrace();
-                } catch (NoSuchFieldException e) {
-                    e.printStackTrace();
-                } catch (IllegalArgumentException e) {
-                    e.printStackTrace();
-                } catch (IllegalAccessException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-    }
-
-    public boolean hookedKey(int vkey, int modifier, boolean isUp) {
-        if (mode == IManipulator.TREE_NAVIGATION_MODE) {
-            KC kc = (KC) keyConfigMapForTreeNavigation.get(new KeyEntry(vkey, modifier));
-            if (kc != null) {
-                if (kc.type == KC.Type.COMMAND && kc.command == CMD_NOOP)
-                    return true;
-                if (kc.type != KC.Type.ACCESSKEY && kc.method == null)
-                    return false;
-                
-                /*
-                if (vkey == VK_RETURN) {
-                    if (!isUp)
-                        call(kc);
-                } else {
-                    if (isUp)
-                        call(kc);
-                }*/
-                if (!isUp)
-                    call(kc);
-
-                return true;
-            }
-        } else if (mode == IManipulator.FORM_INPUT_MODE) {
-            switch (vkey) {
-            case KeyEvent.VK_TAB:
-                break;
-            case VK_RETURN:
-                // navigatorUI.submitForm();
-                sendEvent.postKey(vkey, isUp);
-                break;
-            case KeyEvent.VK_ESCAPE:
-                navigatorUI.exitFormMode();
-                break;
-            default:
-                return false;
-            }
-            return true;
-        } else if (mode == IManipulator.KEYHOOK_DISABLED_MODE) {
-            return false;
-        }
-        return false;
-    }
-
-    private void call(KC kc) {
-        if (kc.type == KC.Type.COMMAND) {
-            switch (kc.command) {
-            // for demo
-            case CMD_SPEED_UP:
-                sendKey(KeyEvent.VK_UP, true);
-                break;
-            case CMD_SPEED_DOWN:
-                sendKey(KeyEvent.VK_DOWN, true);
-                break;
-            case CMD_PLAY_NEXT:
-                sendKey(KeyEvent.VK_RIGHT, false);
-                break;
-            case CMD_PLAY_PREV:
-                sendKey(KeyEvent.VK_LEFT, false);
-                break;
-            case CMD_START_RECORDING:
-                sendKey(KeyEvent.VK_S, true);
-                break;
-            case CMD_NOOP:
-            case CMD_PASSTHROUGH:
-                break;
-            }
-        } else if (kc.type == KC.Type.FUNCTION) {
-            try {
-                switch (kc.target) {
-                case IBROWSERCONTROL:
-                    if (browserControl != null)
-                        kc.method.invoke(browserControl, new Object[0]);
-                    break;
-                case INAVIGATORUI:
-                    if (navigatorUI != null)
-                        kc.method.invoke(navigatorUI, new Object[0]);
-                    break;
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        } else if (kc.type == KC.Type.ACCESSKEY) {
-            navigatorUI.jumpToAccessKey((char) kc.vkey);
-        }
-    }
-
-    private void sendKey(int key, boolean ctrlFlag) {
-        long h = sendEvent.findWindow("SWT_Window0", "Sound Controller");
-        if (ctrlFlag) {
-            sendEvent.postKeyToWindow(h, KeyEvent.VK_CONTROL, false);
-        }
-        sendEvent.postKeyToWindow(h, key, false);
-        sendEvent.postKeyToWindow(h, key, true);
-        if (ctrlFlag) {
-            sendEvent.postKeyToWindow(h, KeyEvent.VK_CONTROL, true);
-        }
-    }
-
-    public void setNavigator(INavigatorUI navigatorUI) {
-        this.navigatorUI = navigatorUI;
-    }
-
-    public void setBrowserControl(IBrowserControl browserControl) {
-        this.browserControl = browserControl;
-    }
-
-    public void dispose() {
-        keyHook.dispose();
-    }
-
-    public void setMode(Mode mode) {
-        this.mode = mode;
-        if (mode == IManipulator.FORM_INPUT_MODE) {
-            keyHook.hookAll(true);
-        } else if (mode == IManipulator.KEYHOOK_DISABLED_MODE) {
-            keyHook.hookAll(false);
-        } else {
-            keyHook.hookAll(false);
-        }
-    }
-
-    class KeyAction extends Action {
-        String name;
-
-        ArrayList<KC> kcs;
-
-        public KeyAction(String name, ArrayList<KC> kcs) {
-            super();
-            this.name = name;
-            this.kcs = kcs;
-
-            StringBuffer sb = new StringBuffer();
-            sb.append(Messages.getString(name));
-            if (kcs.size() > 0)
-                sb.append("    (" + getKey(kcs) + ")");
-
-            setText(sb.toString());
-        }
-
-        private String getKey(ArrayList<KC> kcs) {
-            StringBuffer sb = new StringBuffer();
-
-            for (int i = 0; i < kcs.size(); i++) {
-                if (i != 0)
-                    sb.append(" " + Messages.getString("Key.OR") + " ");
-
-                int vkey = kcs.get(i).vkey;
-                int mod = kcs.get(i).mod;
-
-                if (is(mod, KeyEvent.CTRL_MASK)) {
-                    sb.append("Ctrl+");
-                }
-                if (is(mod, KeyEvent.ALT_MASK)) {
-                    sb.append("Alt+");
-                }
-                if (is(mod, KeyEvent.SHIFT_MASK)) {
-                    sb.append("Shift+");
-                }
-                String key = "";
-                if (('0' <= vkey && vkey <= '9') || ('A' <= vkey && vkey <= 'Z')) {
-                    key = "" + (char) vkey;
-                } else if (KeyEvent.VK_F1 <= vkey && vkey <= KeyEvent.VK_F24) {
-                    key = "F" + (vkey - KeyEvent.VK_F1 + 1);
-                } else {
-                    switch (vkey) {
-                    case VK_RETURN:
-                        key = "Enter";
-                        break;
-                    case KeyEvent.VK_UP:
-                        key = "Up";
-                        break;
-                    case KeyEvent.VK_DOWN:
-                        key = "Down";
-                        break;
-
-                    case KeyEvent.VK_LEFT:
-                        key = "Left";
-                        break;
-                    case KeyEvent.VK_RIGHT:
-                        key = "Right";
-                        break;
-
-                    case KeyEvent.VK_HOME:
-                        key = "Home";
-                        break;
-                    case KeyEvent.VK_END:
-                        key = "End";
-                        break;
-                    case KeyEvent.VK_PAGE_UP:
-                        key = "PageUp";
-                        break;
-                    case KeyEvent.VK_PAGE_DOWN:
-                        key = "PageDown";
-                        break;
-
-                    case KeyEvent.VK_TAB:
-                        key = "Tab";
-                        break;
-                    case KeyEvent.VK_PAUSE:
-                        key = "Pause";
-                        break;
-                    case KeyEvent.VK_SPACE:
-                        key = "Space";
-                        break;
-                    }
-                }
-                sb.append(key);
-            }
-
-            return sb.toString();
-        }
-
-        private boolean is(int a, int b) {
-            return (a & b) == b;
-        }
-
-        @Override
-        public void run() {
-            if (kcs.size() > 0)
-                call(kcs.get(0));
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/.classpath b/plugins/org.eclipse.actf.ai.navigator/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.navigator/.cvsignore b/plugins/org.eclipse.actf.ai.navigator/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/plugins/org.eclipse.actf.ai.navigator/.project b/plugins/org.eclipse.actf.ai.navigator/.project
deleted file mode 100644
index 9821f58..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.navigator</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.navigator/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.actf.ai.navigator/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index e613298..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Wed Jun 06 23:23:23 JST 2007
-eclipse.preferences.version=1
-encoding//src/messages.properties=8859_1
diff --git a/plugins/org.eclipse.actf.ai.navigator/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.navigator/META-INF/MANIFEST.MF
deleted file mode 100644
index 0138ada..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,22 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Navigator Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.navigator;singleton:=true
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.internal.navigator.NavigatorPlugin
-Bundle-Vendor: Eclipse.org
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.ui,
- org.eclipse.actf.core,
- org.eclipse.actf.ai.fennec,
- org.eclipse.actf.util.vocab,
- org.eclipse.actf.model.ui,
- org.eclipse.actf.model.ui.editors.ie,
- org.eclipse.actf.ai.xmlstore,
- org.eclipse.actf.ai.audio.io,
- org.eclipse.actf.ai.voice,
- org.eclipse.actf.ui
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.actf.ai.navigator,
- org.eclipse.actf.ai.navigator.ui
diff --git a/plugins/org.eclipse.actf.ai.navigator/about.html b/plugins/org.eclipse.actf.ai.navigator/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.navigator/build.properties b/plugins/org.eclipse.actf.ai.navigator/build.properties
deleted file mode 100644
index bb3f22a..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/build.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .,\
-               plugin.xml,\
-               plugin.properties,\
-               plugin_ja.properties,\
-               icons/,\
-               waiting.wav
diff --git a/plugins/org.eclipse.actf.ai.navigator/icons/treex16.gif b/plugins/org.eclipse.actf.ai.navigator/icons/treex16.gif
deleted file mode 100644
index dd54021..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/icons/treex16.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.actf.ai.navigator/icons/treex48.gif b/plugins/org.eclipse.actf.ai.navigator/icons/treex48.gif
deleted file mode 100644
index ffe678f..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/icons/treex48.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.actf.ai.navigator/plugin.properties b/plugins/org.eclipse.actf.ai.navigator/plugin.properties
deleted file mode 100644
index 862084d..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/plugin.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Daisuke SATO - initial configuration.
-###############################################################################
-
-DeleteAction.name=Clear metadata cache
-DeleteAction.tip=Clear metadata cache
-
-NavigationTreeView.name=Navigation by Tree View
-UserAnnotation=User Annotation
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.navigator/plugin.xml b/plugins/org.eclipse.actf.ai.navigator/plugin.xml
deleted file mode 100644
index 9f782e2..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/plugin.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   <extension-point id="Navigation" name="Navigation" schema="schema/Navigation.exsd"/>
-   <extension-point id="ScreenReaderController" name="ScreenReaderController" schema="schema/ScreenReaderController.exsd"/>
-   <extension-point id="MediaControl" name="MediaControl" schema="schema/MediaControl.exsd"/>
-   <extension-point id="MetadataCacheCleaner" name="MetadataCacheCleaner" schema="schema/MetadataCacheCleaner.exsd"/>
-   <extension
-         point="org.eclipse.ui.views">
-      <view
-            category="org.eclipse.actf.ai.ui.views"
-            class="org.eclipse.actf.ai.navigator.views.NavigatorTreeView"
-            icon="icons/treex16.gif"
-            id="org.eclipse.actf.ai.navigator.views.NavigatorTreeView"
-            name="%NavigationTreeView.name"/>
-   </extension>
-   <extension
-         point="org.eclipse.actf.model.ui.webBrowserEventListener">
-      <listener
-            class="org.eclipse.actf.ai.navigator.impl.WebEventListener"/>
-   </extension>
-   <extension
-         point="org.eclipse.ui.preferencePages">
-      <page
-            category="org.eclipse.actf.ui.preferences.RootPreferencePage"
-            class="org.eclipse.actf.ai.navigator.preferences.UserInfoPreferencePage"
-            id="org.eclipse.actf.ai.navigator.preferences.UserInfoPreferencePage"
-            name="%UserAnnotation"/>
-   </extension>
-   <extension
-         point="org.eclipse.core.runtime.preferences">
-      <initializer class="org.eclipse.actf.ai.navigator.preferences.UserInfoPreferenceInitializer"/>
-   </extension>
-   <extension
-         point="org.eclipse.actf.ai.navigator.MetadataCacheCleaner">
-      <cleaner class="org.eclipse.actf.ai.navigator.impl.FennecEntryCacheCleaner"/>
-   </extension>
-
-</plugin>
diff --git a/plugins/org.eclipse.actf.ai.navigator/plugin_ja.properties b/plugins/org.eclipse.actf.ai.navigator/plugin_ja.properties
deleted file mode 100644
index d861478..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/plugin_ja.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Daisuke SATO - initial configuration.
-###############################################################################
-
-DeleteAction.name=\u30e1\u30bf\u30c7\u30fc\u30bf\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u524a\u9664
-DeleteAction.tip=\u30e1\u30bf\u30c7\u30fc\u30bf\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u524a\u9664\u3057\u307e\u3059
-
-NavigationTreeView.name=\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3\u30fb\u30c4\u30ea\u30fc\u30d3\u30e5\u30fc
-UserAnnotation=\u6ce8\u91c8
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.navigator/schema/MediaControl.exsd b/plugins/org.eclipse.actf.ai.navigator/schema/MediaControl.exsd
deleted file mode 100644
index 7d11d9d..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/schema/MediaControl.exsd
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.actf.ai.navigator">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.actf.ai.navigator" id="MediaControl" name="MediaControl"/>
-      </appInfo>
-      <documentation>
-         [Enter description of this extension point.]
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="controller"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="controller">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.actf.ai.navigator.IMediaControl"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         [Enter the first release in which this extension point appears.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         [Enter extension point usage example here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2007 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made
-available under the terms of the Eclipse Public License v1.0 which accompanies
-this distribution, and is available at &lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/plugins/org.eclipse.actf.ai.navigator/schema/MetadataCacheCleaner.exsd b/plugins/org.eclipse.actf.ai.navigator/schema/MetadataCacheCleaner.exsd
deleted file mode 100644
index 3914cac..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/schema/MetadataCacheCleaner.exsd
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.actf.ai.navigator">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.actf.ai.navigator" id="MetadataCacheClear" name="MetadataCacheClear"/>
-      </appInfo>
-      <documentation>
-         [Enter description of this extension point.]
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="cleaner"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="cleaner">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.actf.ai.navigator.IMetadataCacheCleaner"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         [Enter the first release in which this extension point appears.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         [Enter extension point usage example here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2007 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made
-available under the terms of the Eclipse Public License v1.0 which accompanies
-this distribution, and is available at &lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/plugins/org.eclipse.actf.ai.navigator/schema/Navigation.exsd b/plugins/org.eclipse.actf.ai.navigator/schema/Navigation.exsd
deleted file mode 100644
index 9041d45..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/schema/Navigation.exsd
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.actf.ai.navigator">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.actf.ai.navigator" id="Navigation" name="Navigation"/>
-      </appInfo>
-      <documentation>
-         [Enter description of this extension point.]
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="manipulator"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="manipulator">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.actf.ai.navigator.IManipulator"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         [Enter the first release in which this extension point appears.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         [Enter extension point usage example here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2007 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made
-available under the terms of the Eclipse Public License v1.0 which accompanies
-this distribution, and is available at &lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/plugins/org.eclipse.actf.ai.navigator/schema/ScreenReaderController.exsd b/plugins/org.eclipse.actf.ai.navigator/schema/ScreenReaderController.exsd
deleted file mode 100644
index 4e7894d..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/schema/ScreenReaderController.exsd
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.actf.ai.navigator">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.actf.ai.navigator" id="ScreenReaderController" name="ScreenReaderController"/>
-      </appInfo>
-      <documentation>
-         [Enter description of this extension point.]
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="controller"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="controller">
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  
-               </documentation>
-               <appInfo>
-                  <meta.attribute kind="java" basedOn="org.eclipse.actf.ai.navigator.IScreenReaderControl"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         [Enter the first release in which this extension point appears.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         [Enter extension point usage example here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         Copyright (c) 2007 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made
-available under the terms of the Eclipse Public License v1.0 which accompanies
-this distribution, and is available at &lt;a 
-href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/messages.properties b/plugins/org.eclipse.actf.ai.navigator/src/messages.properties
deleted file mode 100644
index de8d0fd..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/messages.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Daisuke SATO - initial configuration.
-###############################################################################
-
-NavigatorTreeView.property=Property
-NavigatorTreeView.value=Value
-
-DialogOpenURL.Open_URL_2=Open a page
-
-IManipulator.TreeNavigaion=Tree Navigation
-IManipulator.FormInput=Form Input
-IManipulator.Input=Input
-FormInputDialog.Textarea=Text Area Input
-FormInputDialog.Password=Password Input
-FormInputDialog.Text=Text Input
-FormInputDialog.Search=Find Text
-FormInputDialog.Forward=&Forward
-FormInputDialog.Backward=&Backward
-FormInputDialog.Exact=&Case Sensitive
-
-FormSelectDialog.Single=Select an option
-FormSelectDialog.Multiple=Select options
-
-AccessKeyListDialog.Title=Access Key List
-
-AltInputDialog.Text=Alt Text Input
-
-UserInfo.PREFERENCES_NAME=User Annotation Preferences
-UserInfo.SAVE_ANNOTATION=&Save annotation automatically
-UserInfo.REFRESH_TREEVIEW=&Refresh Tree View automatically
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/messages_ja.properties b/plugins/org.eclipse.actf.ai.navigator/src/messages_ja.properties
deleted file mode 100644
index 0bc0958..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/messages_ja.properties
+++ /dev/null
@@ -1,39 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Daisuke SATO - initial configuration.
-###############################################################################
-
-NavigatorTreeView.property=\u30d7\u30ed\u30d1\u30c6\u30a3
-NavigatorTreeView.value=\u5024
-
-DialogOpenURL.Open_URL_2=\u30da\u30fc\u30b8\u3092\u958b\u304f
-
-IManipulator.TreeNavigaion=\u30c4\u30ea\u30fc\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3
-IManipulator.FormInput=\u30d5\u30a9\u30fc\u30e0\u5165\u529b
-IManipulator.Input=\u5165\u529b
-
-FormInputDialog.Textarea=\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u306e\u5165\u529b
-FormInputDialog.Password=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5165\u529b
-FormInputDialog.Text=\u30c6\u30ad\u30b9\u30c8\u306e\u5165\u529b
-
-FormInputDialog.Search=\u6587\u5b57\u5217\u306e\u691c\u7d22
-FormInputDialog.Forward=\u4e0b\u3078(&F)
-FormInputDialog.Backward=\u4e0a\u3078(&B)
-FormInputDialog.Exact=\u5927\u6587\u5b57\u3068\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b(&C)
-
-FormSelectDialog.Single=\u9805\u76ee\u306e\u9078\u629e
-FormSelectDialog.Multiple=\u9805\u76ee\u306e\u8907\u6570\u9078\u629e
-
-AccessKeyListDialog.Title=\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306e\u30ea\u30b9\u30c8
-
-AltInputDialog.Text=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u306e\u5165\u529b
-
-UserInfo.PREFERENCES_NAME=\u6ce8\u91c8\u306e\u8a2d\u5b9a
-UserInfo.SAVE_ANNOTATION=\u81ea\u52d5\u7684\u306b\u6ce8\u91c8\u3092\u4fdd\u5b58\u3059\u308b(&S)
-UserInfo.REFRESH_TREEVIEW=\u81ea\u52d5\u7684\u306b\u30c4\u30ea\u30fc\u30d3\u30e5\u30fc\u3092\u66f4\u65b0\u3059\u308b(&R)
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/Messages.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/Messages.java
deleted file mode 100644
index a964d7c..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/Messages.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.internal.navigator;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-
-/**
- * This provides the resource string.
- */
-public class Messages {
-    private static final String BUNDLE_NAME = "messages"; //$NON-NLS-1$
-
-    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
-
-    private Messages() {
-    }
-
-    /**
-     * @param key The name of the resource string.
-     * @return The string specified the key.
-     */
-    public static String getString(String key) {
-        // TODO Auto-generated method stub
-        try {
-            return RESOURCE_BUNDLE.getString(key);
-        } catch (MissingResourceException e) {
-            return '!' + key + '!';
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/NavigatorPlugin.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/NavigatorPlugin.java
deleted file mode 100644
index 3e4a660..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/internal/navigator/NavigatorPlugin.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.internal.navigator;
-
-import org.eclipse.actf.ai.navigator.extension.MetadataCacheCleanerExtension;
-import org.eclipse.actf.ai.navigator.views.NavigatorTreeView;
-import org.eclipse.actf.ai.tts.AbstractUIPluginForTTS;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class NavigatorPlugin extends AbstractUIPluginForTTS {
-
-	public static final String ID = "org.eclipse.actf.ai.navigator";
-	// The shared instance.
-	private static NavigatorPlugin plugin;
-
-	/**
-	 * The constructor.
-	 */
-	public NavigatorPlugin() {
-		plugin = this;
-	}
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		super.stop(context);
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance.
-	 */
-	public static NavigatorPlugin getDefault() {
-		return plugin;
-	}
-
-	private NavigatorTreeView navigatorTreeView;
-
-	/**
-	 * To share the instance of the Navigator Tree View in this plug-in.
-	 * 
-	 * @param navigatorTreeView
-	 *            An instance of the Navigator Tree View.
-	 */
-	public void setNavigatorTreeView(NavigatorTreeView navigatorTreeView) {
-		this.navigatorTreeView = navigatorTreeView;
-	}
-
-	/**
-	 * @return The shared instance of the Navigator Tree View.
-	 */
-	public NavigatorTreeView getNavigatorTreeView() {
-		return navigatorTreeView;
-	}
-
-	/**
-	 * Clear the memory cache of the metadata.
-	 */
-	public void clearMetadataCache() {
-		MetadataCacheCleanerExtension.clearCache();
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IBrowserControl.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IBrowserControl.java
deleted file mode 100644
index 85aac28..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IBrowserControl.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator;
-
-
-/**
- * IBrowserControl defines the methods to be implemented on the top of the browser.
- * All functions are not bound together with one tab.
- * Although the forward and the backward action is bound to one tab in general, 
- * the forward and the backward operates the action over the tabs.
- */
-public interface IBrowserControl {
-    /**
-     * Forward to the next page.
-     */
-    void forward();
-    
-    /**
-     * Backward to the previous page.
-     */
-    void backward();
-    
-    /**
-     * Open the file dialog to import metadata files into the application storage.
-     */
-    void importMetadata();
-    
-    /**
-     * Open the file dialog to export all metadata files in the application storage.
-     */
-    void exportAllMetadata();
-
-    /**
-     * Open a new tab in the application.
-     */
-    void openTab();
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IManipulator.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IManipulator.java
deleted file mode 100644
index 44f195d..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IManipulator.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator;
-
-import org.eclipse.actf.ai.internal.navigator.Messages;
-
-
-/**
- * IManipulator interface defines the methods to be implemented by the "manipulator"
- * of the application. For example keyboard manipulator, joy stick manipulator, and so on.
- * IManipulator can obtain instances of IBrowserControl and INavigatorUI.
- */
-public interface IManipulator {
-    /**
-     * This Mode class represents modes of the application.
-     */
-    public static class Mode {
-        public final String name;
-        public final int code;
-        private Mode(String name, int code) {
-            this.name = name;
-            this.code = code;
-        }
-    }
-    
-    /**
-     * The code of the tree navigation mode.
-     */
-    int TREE_NAVIGATION_MODE_CODE = 0;
-    
-    /**
-     * The instance of the Mode of the tree navigation mode.
-     * This is the default mode of the application.
-     */
-    Mode TREE_NAVIGATION_MODE = new Mode(Messages.getString("IManipulator.TreeNavigaion"), TREE_NAVIGATION_MODE_CODE); //$NON-NLS-1$
-    
-    /**
-     * The code of the form input mode.
-     */
-    int FORM_INPUT_MODE_CODE = 1;
-    
-    /**
-     * The instance of the Mode of the form input mode.
-     * This mode is used during the users input information into HTML forms.
-     */
-    Mode FORM_INPUT_MODE = new Mode(Messages.getString("IManipulator.FormInput"), FORM_INPUT_MODE_CODE); //$NON-NLS-1$
-    
-    /**
-     * The code of the key hook disabled mode.
-     */
-    int KEYHOOK_DISABLED_MODE_CODE = 2;
-    
-    /**
-     * The instance of the Mode of the key hook disabled mode.
-     * This mode is used during a dialog is shown.
-     */
-    Mode KEYHOOK_DISABLED_MODE = new Mode(Messages.getString("IManipulator.Input"), KEYHOOK_DISABLED_MODE_CODE); //$NON-NLS-1$
-
-    /**
-     * @param browserControl The instance of the IBrowserControl to be controlled by the manipulator.
-     */
-    void setBrowserControl(IBrowserControl browserControl);
-    /**
-     * @param navigatorUI The instance of the INavigatorUI to be controlled by the manipulator.
-     */
-    void setNavigator(INavigatorUI navigatorUI);
-    
-    /**
-     * @param mode The mode to be set
-     */
-    void setMode(Mode mode);
-    
-    /**
-     *  It will be called when the manipulator is disposed.
-     */
-    void dispose();
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMediaControl.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMediaControl.java
deleted file mode 100644
index 6e79760..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMediaControl.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator;
-
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.ai.voice.IVoice;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-
-
-/**
- * IMediaControl interface defines the methods to be implemented by the 
- * user interfaces which controls browser, video, audio, and voice output.
- * Implementations of this interface are managed by MediaControl extension.
- */
-public interface IMediaControl {
-
-    /**
-     * The status code used by {@link #toggleEnabled()}
-     * The user interface function isn't able to use. There is no extension.
-     * This status code is only used in the extenstion manager.
-     */
-    int TOGGLE_FAIL = 1;
-    
-    /**
-     * The status code used by {@link #toggleEnabled()}
-     * The user interface function is enabled and the function is on.
-     */
-    int STATUS_ON = 2;
-    
-    /**
-     * The status code used by {@link #toggleEnabled()}
-     * The user interface function is enabled and the function is off.
-     */
-    int STATUS_OFF = 4;
-    
-    /**
-	 * The status code used by {@link #toggleEnabled()}
-	 * The user interface function is not enabled.
-     */
-    int STATUS_NOT_AVAILABLE = 8;
-    
-    /**
-     * An instance of IHandle has video, sound, browser, and voice controller.
-     */
-    public interface IHandle {
-        IVideoControl getVideoControl();
-        ISoundControl getSoundControl();
-        IWebBrowserACTF getWebBrowser();
-        IVoice getVoice();
-    }
-    
-    /**
-     * The implementation of this extension is started by this methods with IHandle.
-     * This method will be called when a focus of a browser is activated.
-     * The <i>handle</i> contains the browser instance.
-     * @param handle An instance of IHandle.
-     */
-    void start(IHandle handle);
-    
-    /**
-     * This method will be called when a focus of a browser is deactivated.
-     * @param handle An instance of IHandle.
-     */
-    void dispose(IHandle handle);
-
-    /**
-     * Toggle the enabled of the user interface.
-     * If the user interface can be used then the status will be STATUS_ON or STATUS_OFF.
-     * If the user interface can not be used then the status will be STATUS_NOT_AVAILABLE.
-     * @return The status of after the toggle.
-     */
-    int toggleEnabled();
-    
-    /**
-     * @return The availability of the user interface.
-     */
-    boolean isAvailable();
-    
-    /**
-     * After calling method the view is shown then it returns true.
-     * @return Whether the view is shown or not.
-     */
-    boolean toggleViewShowing();
-
-    /**
-     * @return Whether the user interface is enabled or not.
-     */
-    boolean isEnabled();
-
-    /**
-     * The user interface should speak the status information of itself using
-     * the voice engine.
-     * @param flush This is used for the argument of speak method of the voice engine.
-     */
-    void speakInfo(boolean flush);
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMetadataCacheCleaner.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMetadataCacheCleaner.java
deleted file mode 100644
index 165c8a6..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IMetadataCacheCleaner.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator;
-
-
-/**
- * IMetadataCacheCleaner interface defines a method to clear the memory cache of the metadata.
- * The instances are managed by extension manager. 
- */
-public interface IMetadataCacheCleaner {
-    /**
-     * Clear the memory cache of the metadata.
-     * The application will read metadata again from the disk.
-     */
-    void clearCache();
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/INavigatorUI.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/INavigatorUI.java
deleted file mode 100644
index d44597b..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/INavigatorUI.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator;
-
-/**
- * INavigatorUI represents a browser tab of the application.
- * This interface defines methods to control browsers from user interface part.
- */
-public interface INavigatorUI {
-    // Tree Navigation Mode
-    /**
-     * Mute the media volume.
-     */
-    void muteMedia();
-    /**
-     * Decrease the volume of the media which are included in the browser.
-     */
-    void volumeDownMedia();
-    /**
-     * Increase the volume of the media which are included in the browser.
-     */
-    void volumeUpMedia();
-    /**
-     * Decrease the volume of the media in minimal step.
-     */
-    void minimalVolumeDownMedia();
-    /**
-     * Increase the volume of the media in minimal step.
-     */
-    void minimalVolumeUpMedia();
-    
-    /**
-     * Change the audio track to the previous one.
-     */
-    void previousTrack();
-    /**
-     * Change the audio track to the next one.
-     */
-    void nextTrack();
-    /**
-     * Stop the media.
-     */
-    void stopMedia();
-    /**
-     * Play the media. The medias should be controllable from the out of the application.
-     * For example, shortcut key or something.
-     */
-    void playMedia();
-    /**
-     * Pause the media.
-     */
-    void pauseMedia();
-    /**
-     * Do fast reverse of the media.
-     */
-    void fastReverse();
-    /**
-     * Do fast forward of the media.
-     */
-    void fastForward();
-    
-    /**
-     * Stop the speaking of the voice engine.
-     */
-    void stopSpeak();
-
-    /**
-     * Set the speed of the voice engine to faster.
-     */
-    void speechSpeedUp();
-    /**
-     * Set the speed of the voice engine to slower.
-     */
-    void speechSpeedDown();
-    
-    /**
-     * Move the current position to the tree parent. 
-     */
-    void treeLeft();
-    /**
-     * Move the current position to the tree children.
-     */
-    void treeRight();
-    /**
-     * Move the current position the the previous sibling.
-     * If there is a previous sibling then the current position will be the sibling.
-     * If there is no previous sibling then the current position will be not changed.
-     */
-    void treeUp();
-    /**
-     * Move the current position to the next sibling
-     * If there is a next sibling then the current position will be the sibling.
-     * If there is no next sibling then the current position will be not changed.
-     */
-    void treeDown();
-
-    /**
-     * Move the current position to the top of the tree. First node of the tree.
-     */
-    void treeTop();
-    /**
-     * Move the current position to the bottom of the tree. Last node of the tree.
-     */
-    void treeBottom();
-
-    /**
-     * Move the current position to the next node which can be read.
-     * The traverse is executed in depth first strategy.
-     */
-    void traverseDown();
-    /**
-     * Move the current position to the previous node which can be read.
-     * The traverse is executed in opposite direction of {@link #traverseDown()}.
-     */
-    void traverseUp();
-
-    /**
-     * Send click event or command to the node of the current position.
-     * The user can click the element by alternative way. 
-     */
-    void click();
-    /**
-     * Speak the current status of the application.
-     */
-    void speakCurrentStatus();
-    /**
-     * Speak the media status of the browser.
-     */
-    void speakMediaStatus();
-
-    /**
-     * Move the current position to the next header element. It will stop at H1, H2, H3, H4 ,H5, H6, and headers defined by the metadata.
-     */
-    void nextHeader();
-    /**
-     * Move the current position to the previous header element. It will stop at H1, H2, H3, H4 ,H5, H6, and headers defined by the metadata.
-     */
-    void previousHeader();
-
-    /**
-     * Move the current position to the next inputable element. Text input, text area, select and so on.
-     */
-    void nextInputable();
-    /**
-     * Move the current position to the previous inputable element. Text input, text area, select and so on.
-     */
-    void previousInputable();
-    
-    /**
-     * Move the current position to the next link element.
-     */
-    void nextLink();
-    /**
-     * Move the current position to the previous link element.
-     */
-    void previousLink();
-
-    /**
-     * Move the current position to the next object element. Flash, Media Player, and so on.
-     */
-    void nextObject();
-    /**
-     * Move the current position to the previous object element. Flash, Media Player, and so on.
-     */
-    void previousObject();
-
-    /**
-     * Move the current position to the node of the left cell, if the current position is table cell. 
-     */
-    void cellLeft();
-    /**
-     * Move the current position to the node of the right cell, if the current position is table cell. 
-     */
-    void cellRight();
-    /**
-     * Move the current position to the node of the upper cell, if the current position is table cell. 
-     */
-    void cellUp();
-    /**
-     * Move the current position to the node of the lower cell, if the current position is table cell. 
-     */
-    void cellDown();
-
-    // Browser control
-    /**
-     * Refresh page of the current tab of the browser.
-     */
-    void navigateRefresh();
-    // void goForward();
-    // void goBackward();
-
-    // select Fennec;
-    /**
-     * Change the metadata to the next one.
-     * metadata1 -> metadata2 -> ... -> none -> matadata1 -> ...
-     */
-    void selectNextFennec();
-
-    // Form Mode;
-    /**
-     * The mode of application is changed from form mode to tree navigation mode.
-     */
-    void exitFormMode();
-    /**
-     * Do submit of the current form element.
-     */
-    void submitForm();
-
-    // browser address.
-    /**
-     * The keyboard focus is moved into the address bar of the application. 
-     */
-    void enterBrowserAddress();
-
-    // tab operations.
-    /**
-     * Close the current focused tab.
-     */
-    void closeTab();
-
-    /**
-     * Open the search dialog to search text in the browser.
-     * The option of the direction is set to forward.
-     */
-    void searchNext();
-    /**
-     * Open the search dialog to search text in the browser.
-     * The option of the direction is set to backward.
-     */
-    void searchPrevious();
-    
-    /**
-     * Move the current position to the next heading level 1 element. H1.
-     */
-    void nextHeader1();
-    /**
-     * Move the current position to the previous heading level 1 element. H1.
-     */
-    void previousHeader1();
-    /**
-     * Move the current position to the next heading level 2 element. H2.
-     */
-    void nextHeader2();
-    /**
-     * Move the current position to the previous heading level 2 element. H2.
-     */
-    void previousHeader2();
-    /**
-     * Move the current position to the next heading level 3 element. H3.
-     */
-    void nextHeader3();
-    /**
-     * Move the current position to the previous heading level 3 element. H3.
-     */
-    void previousHeader3();
-    /**
-     * Move the current position to the next heading level 4 element. H4.
-     */
-    void nextHeader4();
-    /**
-     * Move the current position to the previous heading level 4 element. H4.
-     */
-    void previousHeader4();
-    /**
-     * Move the current position to the next heading level 5 element. H5.
-     */
-    void nextHeader5();
-    /**
-     * Move the current position to the previous heading level 5 element. H5.
-     */
-    void previousHeader5();
-    /**
-     * Move the current position to the next heading level 6 element. H6.
-     */
-    void nextHeader6();
-    /**
-     * Move the current position to the previous heading level 6 element. H6.
-     */
-    void previousHeader6();
-    
-    /**
-     * Move the current position to the next list item.
-     */
-    void nextListItem();
-    /**
-     * Move the current position to the previous list item.
-     */
-    void previousListItem();
-    /**
-     * Move the current position to the next block.
-     * The block is defined by heuristic, it might be a proper size of information block.
-     */
-    void nextBlock();
-    /**
-     * Move the current position to the previous block.
-	 * @see #nextBlock();
-     */
-    void previousBlock();
-
-    /**
-     * Move the current position to the next media object. Flash, Video player, and so on.
-     */
-    void nextMedia();
-    /**
-     * Move the current position to the previous media object. Flash, Video player, and so on.
-     */
-    void previousMedia();
-    
-    /**
-     * Open the system default browser with the URL which is opened in the current focused browser.
-     */
-    void launchBrowser();
-    /**
-     * Toggle show/hide the views that are the left part of the application.
-     */
-    void toggleLeftViewsShowing();
-    /**
-     * Start the continuous speaking from the current position.
-     * The speaking can be stopped by using {@link #stopSpeak()}.
-     */
-    void speakAll();
-    
-    /**
-     * Open the file dialog to export the all metadata entry.
-     */
-    void exportMetadata();
-    
-    /**
-     * Move the current position to the node which has specified access key.
-     * @param key The key code of the access key.
-     */ 
-    void jumpToAccessKey(char key);
-    /**
-     * Open the dialog which shows the list of the access key in the page.
-     */
-    void showAccessKeyList();
-    
-    // force start.
-    /**
-     * Do restart the analyze of the page.
-     * It is used when the analyze is failed because of the timing or something.
-     */
-    void forceRestart();
-    /**
-     * Toggle enable/disable the audio description function.
-     */
-    void toggleDescriptionEnable();
-    /**
-     * Change the focus to the next tab.
-     */
-    void nextTab();
-    /**
-     * Change the focus to the previous tab.
-     */
-    void prevTab();
-
-    // User Annotation Extension.
-    /**
-     * Move the current position to the next "alterable" element.
-     * "Alterable" means that the text of the element can be replaced by the application.
-     * For example, image alternative text.
-     */
-    void nextAlterable();
-    /**
-     * Move the current position to the previous "alterable" element.
-	 * @see #nextAlterable();
-     */
-    void previousAlterable();
-    /**
-     * Open the dialog to edit the alternative text.
-     */
-    void editAltText();
-    /**
-     * Make a landmark for the current position.  
-     * If there is a landmark on the element of the current position, then the landmark will be removed.
-     */
-    void makeLandmark();
-    /**
-     * Save the information about the alternative text and the landmark (user annotation) into the file. 
-     */
-    void saveUserInfo();
-    /**
-     * Remove the user annotation which is provided for the current page.
-     */
-    void removeUserInfo();
-    
-    // repair
-    /**
-     * Do repair Flash content in the current page. This is a prototype function.
-     */
-    void repairFlash();
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IScreenReaderControl.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IScreenReaderControl.java
deleted file mode 100644
index 42f5007..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/IScreenReaderControl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator;
-
-
-
-
-/**
- * IScreenReaderControl interface defines methods to be implemented by the 
- * screen reader which conflicts with the application.
- * This interface provides functions to manage the screen reader behavior.
- */
-public interface IScreenReaderControl {
-    /**
-     * @return Whether the screen reader is available or not.
-     */
-    boolean isAvailable();
-
-    /**
-     * The screen reader should be activated.
-     */
-    void screenReaderOn();
-    
-    /**
-     * The screen reader should be deactivated, because the voice output from the application 
-     * conflicts with the screen reader voice output.
-     */
-    void screenReaderOff();
-    
-    /**
-     * This is a special method to get control of application from the screen reader.
-     */
-    void takeBackControl();
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/actions/DeleteCacheAction.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/actions/DeleteCacheAction.java
deleted file mode 100644
index 7061512..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/actions/DeleteCacheAction.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.actions;
-
-import org.eclipse.actf.ai.navigator.extension.MetadataCacheCleanerExtension;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;
-
-
-public class DeleteCacheAction implements IWorkbenchWindowActionDelegate {
-    
-	//private IWorkbenchWindow window;
-
-    public void init(IWorkbenchWindow window) {
-        //this.window = window;
-    }
-
-    public void dispose() {
-        
-    }
-
-    public void run(IAction action) {
-        MetadataCacheCleanerExtension.clearCache();
-    }
-
-    public void selectionChanged(IAction action, ISelection selection) {
-        
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/Mirror.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/Mirror.java
deleted file mode 100644
index fde9f29..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/Mirror.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.broker;
-
-
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-public class Mirror {
-    final private Class class1;
-    final private Object object;
-
-    public Object getObject() {
-        return object;
-    }
-
-    private Class[] parseMethodSignature(String params) {
-        String[] paramArray;
-
-        paramArray = params.split(", *");
-        Class[] cs = new Class[paramArray.length];
-        try {
-            for (int i = 0; i < paramArray.length; i++) {
-                if ("int".equals(paramArray[i])) {
-                    cs[i] = java.lang.Integer.TYPE;
-                } else if ("short".equals(paramArray[i])) {
-                    cs[i] = java.lang.Short.TYPE;
-                } else if ("long".equals(paramArray[i])) {
-                    cs[i] = java.lang.Long.TYPE;
-                } else if ("char".equals(paramArray[i])) {
-                    cs[i] = java.lang.Character.TYPE;
-                } else if ("boolean".equals(paramArray[i])) {
-                    cs[i] = java.lang.Boolean.TYPE;
-                } else if ("byte".equals(paramArray[i])) {
-                    cs[i] = java.lang.Byte.TYPE;
-                } else if ("float".equals(paramArray[i])) {
-                    cs[i] = java.lang.Float.TYPE;
-                } else if ("double".equals(paramArray[i])) {
-                    cs[i] = java.lang.Double.TYPE;
-                } else {
-                    cs[i] = Class.forName(paramArray[i], true, class1.getClassLoader());
-                }
-            }
-        } catch (ClassNotFoundException e) {
-            return null;
-        }
-
-        return cs;
-    }
-
-    public Method getMethod(String signature) {
-        String name;
-        Class[] params = null;
-        int posParam = signature.indexOf('(');
-        if (posParam == -1) {
-            name = signature;
-        } else {
-            name = signature.substring(0, posParam);
-            int posParamEnd = signature.lastIndexOf(')');
-            if (posParamEnd == -1) return null;
-            params = parseMethodSignature(signature.substring(posParam + 1, posParamEnd));
-            if (params == null) return null;
-        }
-
-        Method m = null;
-        for (Class c = class1; c != null; c = c.getSuperclass()) {
-            try {
-                if (params == null) {
-                    Method[] ms = c.getDeclaredMethods();
-                    for (int i = 0; i < ms.length; i++) {
-                        if (name.equals(ms[i].getName())) {
-                            m = ms[i];
-                        }
-                    }
-                } else {
-                    m = c.getDeclaredMethod(name, params);
-                }
-            } catch (SecurityException e) {
-                continue;
-            } catch (NoSuchMethodException e) {
-                continue;
-            }
-            if (m != null) {
-                m.setAccessible(true);
-                return m;
-            }
-        }
-
-        return null;
-    }
-
-    public Object invoke(String signature, Object[] params) throws Exception {
-        Method m = getMethod(signature);
-        return m.invoke(object, params);
-    }
-
-    public Field getField(String name) {
-        Field f;
-
-        for (Class c = class1; c != null; c = c.getSuperclass()) {
-            try {
-                f = c.getDeclaredField(name);
-            } catch (SecurityException e) {
-                continue;
-            } catch (NoSuchFieldException e) {
-                continue;
-            }
-            if (f != null) {
-                f.setAccessible(true);
-                return f;
-            }
-        }
-        return null;
-    }
-
-    public Object getFieldObject(String name) throws IllegalAccessException {
-        return getField(name).get(object);
-    }
-
-    static private boolean isParamAccept(Class cp, Class c) {
-        if (cp.isAssignableFrom(c)) return true;
-
-        if ((java.lang.Integer.TYPE == cp)
-            && java.lang.Integer.class.equals(c))
-            return true;
-        if ((java.lang.Short.TYPE == cp)
-            && java.lang.Short.class.equals(c))
-            return true;
-        if ((java.lang.Long.TYPE == cp)
-            && java.lang.Long.class.equals(c))
-            return true;
-        if ((java.lang.Character.TYPE == cp)
-            && java.lang.Character.class.equals(c))
-            return true;
-        if ((java.lang.Boolean.TYPE == cp)
-            && java.lang.Boolean.class.equals(c))
-            return true;
-        if ((java.lang.Byte.TYPE == cp)
-            && java.lang.Byte.class.equals(c))
-            return true;
-        if ((java.lang.Float.TYPE == cp)
-            && java.lang.Float.class.equals(c))
-        if ((java.lang.Double.TYPE == cp)
-            && java.lang.Double.class.equals(c))
-            return true;
-
-        return false;
-    }
-
-    @SuppressWarnings("unchecked")
-	public Constructor findConstructor(Object[] params) {
-        Constructor[] cs = class1.getDeclaredConstructors();
-
-        nextConstructor:
-        for (int i = 0; i < cs.length; i++) {
-            Class[] cParams = cs[i].getParameterTypes();
-            if (params == null) {
-                if (cParams.length == 0) return cs[i];
-                continue nextConstructor;
-            }
-            if (cParams.length != params.length) continue nextConstructor;;
-            for (int j = 0; j < params.length; j++) {
-                if (!isParamAccept(cParams[j], params[j].getClass())) continue nextConstructor;
-            }
-            return cs[i];
-        }
-
-        return null;
-    }
-
-    public Object newInstance(Object[] params)
-    	throws InvocationTargetException, IllegalAccessException, InstantiationException {
-        return findConstructor(params).newInstance(params);
-    }
-
-    public Mirror(String className) throws ClassNotFoundException {
-        this.class1 = Class.forName(className);
-        this.object = null;
-    }
-
-    public Mirror(Class cls) {
-        this.class1 = cls;
-        this.object = null;
-    }
-
-    public Mirror(Object object) {
-        this.class1 = object.getClass();
-        this.object = object;
-    }
-
-    public Mirror(String className, Object[] params)
-    	throws ClassNotFoundException,
-               InvocationTargetException, IllegalAccessException, InstantiationException {
-        this.class1 = Class.forName(className);
-        this.object = newInstance(params);
-    }
-
-    public static void main(String[] args) throws Exception {
-        Mirror miS = new Mirror("java.lang.String");
-
-        System.out.println("java.lang.String.charAt:"
-                           + miS.getMethod("charAt"));
-        System.out.println("java.lang.String.indexOf(int,int):"
-                           + miS.getMethod("indexOf(int, int)"));
-
-        Mirror miS2 = new Mirror("java.lang.String", new Object[]{"test string"});
-        System.out.println("String instanciation test:" + miS2.getObject());
-
-        Mirror miI = new Mirror("java.lang.Integer", new Object[]{new Integer(100)});
-        System.out.println("Integer instanciation test:" + miI.getObject());
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/RequestBroker.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/RequestBroker.java
deleted file mode 100644
index 4d50d1f..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/broker/RequestBroker.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.broker;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.navigator.impl.NavigatorImpl;
-import org.eclipse.actf.ai.navigator.impl.WebEventListener;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-import org.eclipse.actf.ui.util.timer.Yield;
-
-
-public class RequestBroker {
-    public static final int SHOW_STATUS = 100;
-	
-    public static final int EVENT_NEW_URL = 101;
-
-    public static final int EVENT_NEWPAGE_READY = 1000;
-	
-    public static final int EVENT_LOAD_STARTING = 1001;
-	
-    public static final int EVENT_WAIT_FOR_PROCESSING = 1200;
-	
-    public static final int EVENT_INFORMATION_UPDATED = 1201;
-
-    public static final int EVENT_TREE_MODIFIED = 1202;
-
-    public static final int EVENT_NOTIFICATION = 1203;
-	
-    public static final int EVENT_ALERT_MODAL = 1204;
-	
-    public static final int EVENT_AUTOMATIC_TRANSITION = 1205;
-	
-    private final WebEventListener webEventListener;
-    private NavigatorImpl navigator;
-    private IWebBrowserACTF webBrowser;
-
-    private boolean enabled;
-
-    private Method registerRequestBrokerMethod;
-    private Method sendEventMethod;
-
-    public void setNavigator(NavigatorImpl navigator, IWebBrowserACTF webBrowser) {
-        this.navigator = navigator;
-        this.webBrowser = webBrowser;
-    }
-
-    private void registerProxy() {
-        if (!enabled) return;
-        try {
-            Object o = Thread.currentThread();
-            registerRequestBrokerMethod.invoke(o, new Object[] { this });
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void sendEvent(int id, Object param) {
-        if (!enabled) return;
-        System.err.println("EventRP:" + id + " Param:" + param);
-        try {
-            Object o = Thread.currentThread();
-            sendEventMethod.invoke(o, new Object[] { new Integer(id), param });
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    public void newPageReady() {
-        sendEvent(EVENT_NEW_URL, webBrowser.getURL());
-        sendEvent(EVENT_NEWPAGE_READY, null);
-    }
-
-    public Object invokeNavigator(String signature, Object[] args) throws Exception {
-        Mirror m = new Mirror(navigator);
-        Method method = m.getMethod(signature);
-        return Yield.syncInvoke(method, navigator, args);
-    }
-
-    public Object invokeTreeManager(String signature, Object[] args) throws Exception {
-        ITreeManager treeManager = navigator.getTreeManager();
-        Mirror m = new Mirror(treeManager);
-        Method method = m.getMethod(signature);
-        return Yield.syncInvoke(method, treeManager, args);
-    }
-
-    public Object invokeITreeItem(Object item, String signature, Object[] args) throws Exception {
-        Mirror m = new Mirror(item);
-        Method method = m.getMethod(signature);
-        return Yield.syncInvoke(method, item, args);
-    }
-
-    private void initialize() {
-        Object o = Thread.currentThread();
-        Class c = o.getClass();
-        try {
-            registerRequestBrokerMethod = c.getMethod("registerRequestBroker", new Class[] { Object.class });
-            sendEventMethod = c.getMethod("sendEvent", new Class[] { java.lang.Integer.TYPE, Object.class });
-            enabled = true;
-        } catch (NoSuchMethodException e) {
-            enabled = false;
-        }
-    }
-
-    public RequestBroker(WebEventListener webEventListener) {
-    	this.webEventListener = webEventListener;
-        initialize();
-        registerProxy();
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/ManipulatorExtension.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/ManipulatorExtension.java
deleted file mode 100644
index a345671..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/ManipulatorExtension.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.extension;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.actf.ai.navigator.IBrowserControl;
-import org.eclipse.actf.ai.navigator.IManipulator;
-import org.eclipse.actf.ai.navigator.INavigatorUI;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.Platform;
-
-
-
-
-public class ManipulatorExtension {
-    private static final String TAG_MANIPULATOR = "manipulator";
-    private static final String ATTR_CLASS = "class";
-
-    private static ManipulatorExtension[] cachedExtensions;
-
-    public static ManipulatorExtension[] getExtensions() {
-        if (cachedExtensions != null) return cachedExtensions;
-
-        IExtension[] extensions = Platform.getExtensionRegistry()
-            .getExtensionPoint(NavigatorPlugin.ID, "Navigation")
-            .getExtensions();
-        List<ManipulatorExtension> l = new ArrayList<ManipulatorExtension>();
-        for (int i = 0; i < extensions.length; i++) {
-            IConfigurationElement[] configElements =
-                extensions[i].getConfigurationElements();
-            for (int j = 0; j < configElements.length; j++) {
-                ManipulatorExtension ex = parseExtension(configElements[j], l.size());
-                if (ex != null) l.add(ex);
-            }
-        }
-        cachedExtensions = l.toArray(new ManipulatorExtension[l.size()]);
-        return cachedExtensions;
-    }
-
-    private static ManipulatorExtension parseExtension(IConfigurationElement configElement, int idx) {
-        if (!configElement.getName().equals(TAG_MANIPULATOR))
-            return null;
-        try {
-            return new ManipulatorExtension(configElement);
-        } catch (Exception e) {
-        }
-        return null;
-    }
-
-    public static void disposeExtensions() {
-        if (cachedExtensions == null) return;
-        for (int i = 0; i < cachedExtensions.length; i++) {
-            cachedExtensions[i].dispose();
-        }
-        cachedExtensions = null;
-    }
-
-    public static void setBrowserControl(IBrowserControl browserControl) {
-        ManipulatorExtension[] exs = getExtensions();
-        if (exs == null) return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getManipulator().setBrowserControl(browserControl);
-        }
-    }
-
-    public static void setNavigator(INavigatorUI navigatorUI) {
-        ManipulatorExtension[] exs = getExtensions();
-        if (exs == null) return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getManipulator().setNavigator(navigatorUI);
-        }
-    }
-
-    public static void setMode(IManipulator.Mode mode) {
-        ManipulatorExtension[] exs = getExtensions();
-        if (exs == null) return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getManipulator().setMode(mode);
-        }
-    }
-
-    private final IConfigurationElement configElement;
-    private IManipulator manipulator;
-
-    private ManipulatorExtension(IConfigurationElement configElement) {
-        this.configElement = configElement;
-    }
-
-    private IManipulator getManipulator() {
-        if (manipulator != null) return manipulator;
-        try {
-            manipulator = (IManipulator) configElement.createExecutableExtension(ATTR_CLASS);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return manipulator;
-    }
-
-    private void dispose() {
-        if (manipulator == null) return;
-        manipulator.dispose();
-        manipulator = null;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MediaControlExtension.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MediaControlExtension.java
deleted file mode 100644
index be41408..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MediaControlExtension.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.extension;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.actf.ai.navigator.IMediaControl;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.Platform;
-
-
-
-
-public class MediaControlExtension {
-    private static final String TAG_CONTROLLER = "controller";
-
-    private static final String ATTR_CLASS = "class";
-
-    private static MediaControlExtension[] cachedExtensions;
-
-    public static MediaControlExtension[] getExtensions() {
-        if (cachedExtensions != null)
-            return cachedExtensions;
-
-        IExtension[] extensions = Platform.getExtensionRegistry().getExtensionPoint(NavigatorPlugin.ID, "MediaControl")
-                .getExtensions();
-        List<MediaControlExtension> l = new ArrayList<MediaControlExtension>();
-        for (int i = 0; i < extensions.length; i++) {
-            IConfigurationElement[] configElements = extensions[i].getConfigurationElements();
-            for (int j = 0; j < configElements.length; j++) {
-                MediaControlExtension ex = parseExtension(configElements[j], l.size());
-                if (ex != null)
-                    l.add(ex);
-            }
-        }
-        cachedExtensions = l.toArray(new MediaControlExtension[l.size()]);
-        return cachedExtensions;
-    }
-
-    private static MediaControlExtension parseExtension(IConfigurationElement configElement, int idx) {
-        if (!configElement.getName().equals(TAG_CONTROLLER))
-            return null;
-        try {
-            return new MediaControlExtension(configElement);
-        } catch (Exception e) {
-        }
-        return null;
-    }
-
-    public static void disposeExtensions() {
-        if (cachedExtensions == null)
-            return;
-        for (int i = 0; i < cachedExtensions.length; i++) {
-            cachedExtensions[i].dispose();
-        }
-        cachedExtensions = null;
-    }
-
-    public static void start(IMediaControl.IHandle handle) {
-        MediaControlExtension[] exs = getExtensions();
-        if (exs == null)
-            return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getMediaControl().start(handle);
-        }
-    }
-
-    public static void doDispose(IMediaControl.IHandle handle) {
-        MediaControlExtension[] exs = getExtensions();
-        if (exs == null)
-            return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getMediaControl().dispose(handle);
-        }
-    }
-
-    private final IConfigurationElement configElement;
-
-    private IMediaControl controller;
-
-    private MediaControlExtension(IConfigurationElement configElement) {
-        this.configElement = configElement;
-    }
-
-    private IMediaControl getMediaControl() {
-        if (controller != null)
-            return controller;
-        try {
-            controller = (IMediaControl) configElement.createExecutableExtension(ATTR_CLASS);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return controller;
-    }
-
-    private void dispose() {
-        if (controller == null)
-            return;
-        controller = null;
-    }
-
-    public static int toggleEnable() {
-        MediaControlExtension[] exs = getExtensions();
-        int result = 0;
-        if (exs == null)
-            return IMediaControl.TOGGLE_FAIL;
-        for (int i = 0; i < exs.length; i++) {
-            result |= exs[i].getMediaControl().toggleEnabled();
-        }
-        return result;
-    }
-    
-    public static boolean isAvailable(){
-        MediaControlExtension[] exs = getExtensions();
-        if (exs == null)
-            return false;
-        
-        boolean ret = false;
-        for (int i = 0; i < exs.length; i++) {
-            ret |= exs[i].getMediaControl().isAvailable();
-        }
-        return ret;
-    }
-
-    public static boolean toggleViewShowing() {
-        MediaControlExtension[] exs = getExtensions();
-        boolean result = true;
-        for (int i = 0; i < exs.length; i++) {
-            result = exs[i].getMediaControl().toggleViewShowing() && result;
-        }
-        return result;
-    }
-
-    public static boolean isEnabled() {
-        MediaControlExtension[] exs = getExtensions();
-        if (exs == null)
-            return false;
-        
-        boolean ret = false;
-        for (int i = 0; i < exs.length; i++) {
-            ret |= exs[i].getMediaControl().isEnabled();
-        }
-        return ret;
-    }
-
-    public static void speakInfo(boolean flush) {
-        MediaControlExtension[] exs = getExtensions();
-        if (exs == null)
-            return;
-
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getMediaControl().speakInfo(flush);
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MetadataCacheCleanerExtension.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MetadataCacheCleanerExtension.java
deleted file mode 100644
index 8102317..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/MetadataCacheCleanerExtension.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.extension;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.actf.ai.navigator.IMetadataCacheCleaner;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.Platform;
-
-
-
-
-public class MetadataCacheCleanerExtension {
-    private static final String TAG_CLEANER = "cleaner";
-    private static final String ATTR_CLASS = "class";
-
-    private static MetadataCacheCleanerExtension[] cachedExtensions;
-
-    public static MetadataCacheCleanerExtension[] getExtensions() {
-        if (cachedExtensions != null) return cachedExtensions;
-
-        IExtension[] extensions = Platform.getExtensionRegistry()
-            .getExtensionPoint(NavigatorPlugin.ID, "MetadataCacheCleaner")
-            .getExtensions();
-        List<MetadataCacheCleanerExtension> l = new ArrayList<MetadataCacheCleanerExtension>();
-        for (int i = 0; i < extensions.length; i++) {
-            IConfigurationElement[] configElements =
-                extensions[i].getConfigurationElements();
-            for (int j = 0; j < configElements.length; j++) {
-                MetadataCacheCleanerExtension ex = parseExtension(configElements[j], l.size());
-                if (ex != null) l.add(ex);
-            }
-        }
-        cachedExtensions = l.toArray(new MetadataCacheCleanerExtension[l.size()]);
-        return cachedExtensions;
-    }
-
-    private static MetadataCacheCleanerExtension parseExtension(IConfigurationElement configElement, int idx) {
-        if (!configElement.getName().equals(TAG_CLEANER))
-            return null;
-        try {
-            return new MetadataCacheCleanerExtension(configElement);
-        } catch (Exception e) {
-        }
-        return null;
-    }
-
-    public static void disposeExtensions() {
-        if (cachedExtensions == null) return;
-        for (int i = 0; i < cachedExtensions.length; i++) {
-            cachedExtensions[i].dispose();
-        }
-        cachedExtensions = null;
-    }
-    
-    public static void clearCache(){
-        MetadataCacheCleanerExtension[] exs = getExtensions();
-        if (exs == null) return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getMetadataCacheCleaner().clearCache();
-        }
-    }
-
-    private final IConfigurationElement configElement;
-    private IMetadataCacheCleaner cleaner;
-
-    private MetadataCacheCleanerExtension(IConfigurationElement configElement) {
-        this.configElement = configElement;
-    }
-
-    private IMetadataCacheCleaner getMetadataCacheCleaner() {
-        if (cleaner != null) return cleaner;
-        try {
-            cleaner = (IMetadataCacheCleaner) configElement.createExecutableExtension(ATTR_CLASS);
-        } catch (Exception e) {
-        }
-        return cleaner;
-    }
-
-    private void dispose() {
-        if (cleaner == null) return;
-        cleaner = null;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/ScreenReaderExtension.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/ScreenReaderExtension.java
deleted file mode 100644
index 262119a..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/extension/ScreenReaderExtension.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.extension;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.actf.ai.navigator.IScreenReaderControl;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.Platform;
-
-
-
-
-public class ScreenReaderExtension {
-    private static final String TAG_CONTROLLER = "controller";
-    private static final String ATTR_CLASS = "class";
-
-    private static ScreenReaderExtension[] cachedExtensions;
-
-    public static ScreenReaderExtension[] getExtensions() {
-        if (cachedExtensions != null) return cachedExtensions;
-
-        IExtension[] extensions = Platform.getExtensionRegistry()
-            .getExtensionPoint(NavigatorPlugin.ID, "ScreenReaderController")
-            .getExtensions();
-        List<ScreenReaderExtension> l = new ArrayList<ScreenReaderExtension>();
-        for (int i = 0; i < extensions.length; i++) {
-            IConfigurationElement[] configElements =
-                extensions[i].getConfigurationElements();
-            for (int j = 0; j < configElements.length; j++) {
-                ScreenReaderExtension ex = parseExtension(configElements[j], l.size());
-                if (ex != null) l.add(ex);
-            }
-        }
-        cachedExtensions = l.toArray(new ScreenReaderExtension[l.size()]);
-        return cachedExtensions;
-    }
-
-    private static ScreenReaderExtension parseExtension(IConfigurationElement configElement, int idx) {
-        if (!configElement.getName().equals(TAG_CONTROLLER))
-            return null;
-        try {
-            return new ScreenReaderExtension(configElement);
-        } catch (Exception e) {
-        }
-        return null;
-    }
-
-    public static void disposeExtensions() {
-        if (cachedExtensions == null) return;
-        for (int i = 0; i < cachedExtensions.length; i++) {
-            cachedExtensions[i].dispose();
-        }
-        cachedExtensions = null;
-    }
-
-    public static void screenReaderOn() {
-        ScreenReaderExtension[] exs = getExtensions();
-        if (exs == null) return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getScreenReaderControl().screenReaderOn();
-        }
-    }
-
-    public static void screenReaderOff() {
-        ScreenReaderExtension[] exs = getExtensions();
-        if (exs == null) return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getScreenReaderControl().screenReaderOff();
-        }
-    }
-
-    public static boolean isAvailable() {
-        ScreenReaderExtension[] exs = getExtensions();
-        if (exs == null) return false;
-        boolean result = false;
-        for (int i = 0; i < exs.length; i++) {
-            result |= exs[i].getScreenReaderControl().isAvailable();
-        }
-        return result;
-    }
-    
-    public static void takeBackControl(IWebBrowserACTF browser) {
-        ScreenReaderExtension[] exs = getExtensions();
-        if (exs == null) return;
-        for (int i = 0; i < exs.length; i++) {
-            exs[i].getScreenReaderControl().takeBackControl();
-        }
-    }
-
-    private final IConfigurationElement configElement;
-    private IScreenReaderControl controller;
-
-    private ScreenReaderExtension(IConfigurationElement configElement) {
-        this.configElement = configElement;
-    }
-
-    private IScreenReaderControl getScreenReaderControl() {
-        if (controller != null) return controller;
-        try {
-            controller = (IScreenReaderControl) configElement.createExecutableExtension(ATTR_CLASS);
-        } catch (Exception e) {
-        }
-        return controller;
-    }
-
-    private void dispose() {
-        if (controller == null) return;
-        controller = null;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/AccessKeyListDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/AccessKeyListDialog.java
deleted file mode 100644
index 88d30d5..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/AccessKeyListDialog.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.IAccessKeyList;
-import org.eclipse.actf.ai.internal.navigator.Messages;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.Shell;
-
-
-
-
-public class AccessKeyListDialog extends Dialog {
-    IAccessKeyList accessKeyList;
-
-    private char selectedKey = 0;
-
-    private String[] names;
-
-    List list;
-
-    @Override
-    protected void configureShell(Shell newShell) {
-        super.configureShell(newShell);
-        
-        newShell.setText(Messages.getString("AccessKeyListDialog.Title")); //$NON-NLS-1$
-
-    }
-
-    @Override
-    protected Control createDialogArea(Composite parent) {
-        Composite container = (Composite) super.createDialogArea(parent);
-        GridData gd;
-        gd = new GridData(GridData.FILL_BOTH);
-        gd.widthHint = 200;
-        gd.heightHint = 200;
-        gd.horizontalSpan = ((GridLayout) parent.getLayout()).numColumns;
-
-        list = new List(container, SWT.V_SCROLL | SWT.BORDER);
-
-        list.setLayoutData(gd);
-
-        for (int i = 0; i < accessKeyList.size(); i++) {
-            char key = accessKeyList.getAccessKeyAt(i);
-            String str = accessKeyList.getUIStringAt(i);
-            list.add(key+" "+str);
-        }
-
-        names = new String[list.getItemCount()];
-        for (int i = 0; i < names.length; i++)
-            names[i] = list.getItem(i);
-
-        list.addSelectionListener(new SelectionListener() {
-            public void widgetSelected(SelectionEvent e) {
-                selectedKey = accessKeyList.getAccessKeyAt(list.getSelectionIndex());
-            }
-
-            public void widgetDefaultSelected(SelectionEvent e) {
-                selectedKey = accessKeyList.getAccessKeyAt(list.getSelectionIndex());
-            }
-        });
-        return container;
-    }
-
-    AccessKeyListDialog(Shell parent, IAccessKeyList list) {
-        super(parent);
-        this.accessKeyList = list;
-    }
-
-    public char getSelectedKey() {
-        return selectedKey;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/BrowserControlImpl.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/BrowserControlImpl.java
deleted file mode 100644
index 7f4c73e..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/BrowserControlImpl.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.impl;
-
-import java.io.File;
-
-import org.eclipse.actf.ai.navigator.IBrowserControl;
-import org.eclipse.actf.ai.navigator.IManipulator;
-import org.eclipse.actf.ai.navigator.extension.ManipulatorExtension;
-import org.eclipse.actf.ai.navigator.util.URLOpenDialog;
-import org.eclipse.actf.ai.navigator.voice.VoiceManager;
-import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserNavigationEventListener;
-import org.eclipse.actf.model.ui.editor.browser.WebBrowserNavigationEvent;
-import org.eclipse.actf.model.ui.util.ModelServiceUtils;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-
-
-
-public class BrowserControlImpl implements IBrowserControl, IWebBrowserNavigationEventListener {
-    private final TripJournal tripJournal;
-
-    private final WebEventListener webEventListener;
-
-    private final VoiceManager voiceManager = new VoiceManager(null);
-
-    public void backward() {
-        tripJournal.backward(webEventListener.getFocused());
-    }
-
-    public void forward() {
-        tripJournal.forward(webEventListener.getFocused());
-    }
-
-    BrowserControlImpl(WebEventListener webEventListener, TripJournal tripJournal) {
-        this.tripJournal = tripJournal;
-        this.webEventListener = webEventListener;
-    }
-
-    public void goBack(WebBrowserNavigationEvent e) {
-        tripJournal.backward(webEventListener.getFocused());
-    }
-
-    public void goForward(WebBrowserNavigationEvent e) {
-        tripJournal.forward(webEventListener.getFocused());
-    }
-
-    public void refresh(WebBrowserNavigationEvent e) {
-        IWebBrowserACTF wb = e.getBrowser();
-        WebEventListener.BrowserState bs = webEventListener.getBrowserState(wb);
-        if (bs == null)
-            return;
-        bs.getNavigator().navigateRefresh();
-    }
-
-    public void stop(WebBrowserNavigationEvent e) {
-        IWebBrowserACTF wb = e.getBrowser();
-        wb.navigateStop();
-    }
-
-    public void exportAllMetadata() {
-        String[] ext = { "*.fnz" };
-
-        voiceManager.speakWithFormat("Navigator.EXPORT_ALL_ANNOTATIONS", true, true);
-        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-        FileDialog fileDialog = new FileDialog(shell, SWT.OPEN);
-        fileDialog.setFilterExtensions(ext);
-        String path = fileDialog.open();
-
-        if (path != null) {
-            if (!path.endsWith(".fnz")) {
-                path = path + ".fnz";
-            }
-            File dest = new File(path);
-            if (dest.exists()) {
-                String title = voiceManager.getMessageFormatter().mes("Navigator.OVERWRITE_CONFIRM");
-                String message = voiceManager.getMessageFormatter().mes("Navigator.OVERWRITE_MESSAGE", dest.getName());
-                boolean ret = MessageDialog.openQuestion(shell, title, message);
-                if (!ret)
-                    return;
-            }
-            if (XMLStoreServiceUtil.getXMLStoreService().exportAllAnnotations(dest)) {
-                voiceManager.speakWithFormat("Navigator.EXPORT_IS_SUCCEEDED", true, true);
-            } else {
-                voiceManager.speakWithFormat("Navigator.EXPORT_IS_FAILED", true, true);
-            }
-        }
-    }
-
-    public void importMetadata() {
-        String[] ext = { "*.fnc;*.fnz;*.xml" };
-
-        voiceManager.speakWithFormat("Navigator.IMPORT_FENNEC_FILE", true, true);
-        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-        FileDialog fileDialog = new FileDialog(shell, SWT.OPEN);
-        fileDialog.setFilterExtensions(ext);
-        String path = fileDialog.open();
-
-        if (path != null) {
-            File src = new File(path);
-
-            boolean r = XMLStoreServiceUtil.getXMLStoreService().importMetadata(src);
-            XMLStoreServiceUtil.getXMLStoreService().getRootStore().refleshAll();
-            NavigatorImpl navigator = webEventListener.getFocused();
-            if (navigator != null)
-                navigator.forceRestart();
-            if (r) {
-                voiceManager.speakWithFormat("Navigator.IMPORT_IS_SUCCEEDED", true, true);
-            } else {
-                voiceManager.speakWithFormat("Navigator.IMPORT_IS_FAILED", true, true);
-            }
-        }
-    }
-
-
-    public void openTab() {
-        voiceManager.stop();
-        
-        URLOpenDialog openURLDialog = new URLOpenDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
-        if (1 == openURLDialog.open()) {
-            ManipulatorExtension.setMode(IManipulator.FORM_INPUT_MODE);
-            String sUrl = openURLDialog.getUrl();
-            ModelServiceUtils.openInExistingEditor(sUrl);
-            ManipulatorExtension.setMode(IManipulator.TREE_NAVIGATION_MODE);
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FennecEntryCacheCleaner.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FennecEntryCacheCleaner.java
deleted file mode 100644
index 8a2902a..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FennecEntryCacheCleaner.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.impl;
-
-import org.eclipse.actf.ai.navigator.IMetadataCacheCleaner;
-
-
-
-public class FennecEntryCacheCleaner implements IMetadataCacheCleaner {
-
-    public void clearCache() {
-        //FennecPlugin.getDefault().initFennecEntry();
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormInputDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormInputDialog.java
deleted file mode 100644
index 06407ec..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormInputDialog.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.impl;
-
-import org.eclipse.actf.ai.internal.navigator.Messages;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-
-
-
-public class FormInputDialog extends Dialog {
-    private String formInputString;
-
-    private Text formInputField;
-
-    private boolean multi;
-
-    private boolean pass;
-
-    @Override
-    protected void configureShell(Shell newShell) {
-        super.configureShell(newShell);
-        
-        if(multi)
-            newShell.setText(Messages.getString("FormInputDialog.Textarea")); //$NON-NLS-1$
-        else if(pass)
-            newShell.setText(Messages.getString("FormInputDialog.Password")); //$NON-NLS-1$
-        else
-            newShell.setText(Messages.getString("FormInputDialog.Text")); //$NON-NLS-1$
-    }
-
-    @Override
-    protected Control createDialogArea(Composite parent) {
-        Composite container = (Composite) super.createDialogArea(parent);
-        GridData gd;
-        if (multi) {
-            formInputField = new Text(container, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
-            gd = new GridData(GridData.FILL_BOTH);
-            gd.widthHint = 400;
-            gd.heightHint = 200;
-
-            formInputField.addKeyListener(new KeyListener(){
-                public void keyPressed(KeyEvent e) {
-                    if (e.keyCode == java.awt.event.KeyEvent.VK_TAB) {
-                       formInputField.traverse(SWT.TRAVERSE_TAB_NEXT);
-                       e.doit = false;
-                    }
-                }
-                public void keyReleased(KeyEvent e) {
-                }
-            });
-        } else {
-            if (pass)
-                formInputField = new Text(container, SWT.BORDER | SWT.PASSWORD);
-            else
-                formInputField = new Text(container, SWT.BORDER);
-            gd = new GridData(GridData.FILL_HORIZONTAL);
-            gd.widthHint = 400;
-        }
-        gd.horizontalSpan = ((GridLayout) parent.getLayout()).numColumns;
-        formInputField.setLayoutData(gd);
-        formInputField.setText(formInputString);
-
-        formInputField.addModifyListener(new ModifyListener() {
-            public void modifyText(ModifyEvent e) {
-                formInputString = formInputField.getText();
-            }
-        });
-        return container;
-    }
-
-    String getResult() {
-        return formInputString;
-    }
-
-    FormInputDialog(Shell parent, String init, boolean multi, boolean pass){
-        super(parent);
-        this.formInputString = init;
-        this.multi = multi;
-        this.pass = pass;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormSelectDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormSelectDialog.java
deleted file mode 100644
index 07094b6..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/FormSelectDialog.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.internal.navigator.Messages;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.Shell;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-
-
-public class FormSelectDialog extends Dialog {
-    ITreeItem selectItem;
-
-    private int[] selectedIndices;
-    
-    private String[] names;
-    
-    boolean multiple;
-
-    List list;
-
-    @Override
-    protected void configureShell(Shell newShell) {
-        super.configureShell(newShell);
-
-        if (multiple) 
-            newShell.setText(Messages.getString("FormSelectDialog.Multiple")); //$NON-NLS-1$
-        else
-            newShell.setText(Messages.getString("FormSelectDialog.Single")); //$NON-NLS-1$
-    }
-
-    @Override
-    protected Control createDialogArea(Composite parent) {
-        Composite container = (Composite) super.createDialogArea(parent);
-        GridData gd;
-        gd = new GridData(GridData.FILL_BOTH);
-        gd.widthHint = 200;
-        gd.heightHint = 200;
-        gd.horizontalSpan = ((GridLayout) parent.getLayout()).numColumns;
-
-        if (multiple) 
-            list = new List(container, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER);
-        else  
-            list = new List(container, SWT.V_SCROLL | SWT.BORDER);
-
-        list.setLayoutData(gd);
-
-        Object base = selectItem.getBaseNode();
-        if (base instanceof Node) {
-            Node node = (Node) base;
-            NodeList nl = node.getChildNodes();
-            
-            for (int i = 0; i < nl.getLength(); i++) {
-                Node child = nl.item(i);
-                
-                if ("OPTION".equals(child.getNodeName())) {
-                    Node c = child.getFirstChild();
-                    String text = "";
-                    if (c != null)
-                        text = c.getNodeValue();
-                    list.add(text);
-                }
-            }
-        }
-        
-        names = new String[list.getItemCount()];
-        for (int i = 0; i < names.length; i++)
-            names[i] = list.getItem(i);
-
-        if (selectedIndices != null) {
-            list.select(selectedIndices);
-        }
-        
-        list.addSelectionListener(new SelectionListener(){
-            public void widgetSelected(SelectionEvent e) {
-                selectedIndices = list.getSelectionIndices();
-            }
-            public void widgetDefaultSelected(SelectionEvent e) {
-                
-                selectedIndices = list.getSelectionIndices();
-            }
-        });
-        return container;
-    }
-
-    FormSelectDialog(Shell parent, ITreeItem item, boolean multi) {
-        super(parent);
-        this.selectItem = item;
-        this.multiple = multi;
-        this.selectedIndices = item.getSelectedIndices();
-    }
-
-    public int[] getSelectedIndices() {
-        return selectedIndices;
-    }
-    
-    public String getTextAt(int index) {
-        if (0 <= index && index < names.length)
-            return names[index];
-        return "";
-    }
-
-    public int getLength() {
-        return names.length;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/NavigatorImpl.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/NavigatorImpl.java
deleted file mode 100644
index 73020cc..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/NavigatorImpl.java
+++ /dev/null
@@ -1,2227 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.impl;
-
-import java.awt.Toolkit;
-import java.io.File;
-import java.net.URL;
-
-import org.eclipse.actf.ai.audio.io.AudioFactory;
-import org.eclipse.actf.ai.audio.io.IAudioPipe;
-import org.eclipse.actf.ai.audio.io.IAudioReader;
-import org.eclipse.actf.ai.audio.io.IAudioWriter;
-import org.eclipse.actf.ai.fennec.IFennecEntry;
-import org.eclipse.actf.ai.fennec.IFennecMediator;
-import org.eclipse.actf.ai.fennec.treemanager.IAccessKeyList;
-import org.eclipse.actf.ai.fennec.treemanager.ILocation;
-import org.eclipse.actf.ai.fennec.treemanager.IMediaSyncEventListener;
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.ITreeManager;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerException;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerInterruptedException;
-import org.eclipse.actf.ai.fennec.treemanager.ISoundControl.VolumeState;
-import org.eclipse.actf.ai.fennec.treemanager.IVideoControl.VideoState;
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.actf.ai.navigator.IManipulator;
-import org.eclipse.actf.ai.navigator.IMediaControl;
-import org.eclipse.actf.ai.navigator.INavigatorUI;
-import org.eclipse.actf.ai.navigator.IMediaControl.IHandle;
-import org.eclipse.actf.ai.navigator.extension.ManipulatorExtension;
-import org.eclipse.actf.ai.navigator.extension.MediaControlExtension;
-import org.eclipse.actf.ai.navigator.extension.ScreenReaderExtension;
-import org.eclipse.actf.ai.navigator.util.MessageFormatter;
-import org.eclipse.actf.ai.navigator.views.NavigatorTreeView;
-import org.eclipse.actf.ai.navigator.voice.VoiceManager;
-import org.eclipse.actf.ai.voice.IVoice;
-import org.eclipse.actf.ai.voice.IVoiceEventListener;
-import org.eclipse.actf.model.ui.IModelServiceHolder;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-import org.eclipse.actf.ui.util.BrowserLaunch;
-import org.eclipse.actf.ui.util.PlatformUIUtil;
-import org.eclipse.actf.util.ApplicationArgumentUtil;
-import org.eclipse.actf.util.vocab.IProposition;
-import org.eclipse.actf.util.vocab.Vocabulary;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-
-
-public abstract class NavigatorImpl implements INavigatorUI, IVoiceEventListener {
-    private static boolean isDemo = ApplicationArgumentUtil.isAvailable("-demo");
-
-    // private final WebEventListener webEventListener;
-
-    private IWebBrowserACTF webBrowser;
-
-    private IFennecMediator fennecMediator;
-
-    private ITreeManager treeManager;
-
-    private final int maxRetry;
-
-    private final int retryInterval;
-
-    private Display display;
-
-    private IManipulator.Mode mode;
-    
-
-    public NavigatorImpl(WebEventListener webEventListener, IWebBrowserACTF webBrowser, int maxRetry, int retryInterval) {
-        // this.webEventListener = webEventListener;
-        this.webBrowser = webBrowser;
-        this.maxRetry = maxRetry;
-        this.retryInterval = retryInterval;
-        this.display = Display.getCurrent();
-    }
-
-    public ITreeManager getTreeManager() {
-        return treeManager;
-    }
-
-    private NavigatorTreeView getNavigatorTreeView() {
-        return NavigatorPlugin.getDefault().getNavigatorTreeView();
-    }
-
-    private void sleep(int interval) {
-        long startTime = System.currentTimeMillis();
-        while (true) {
-            boolean busy = display.readAndDispatch();
-            if (!busy)
-                display.sleep();
-            if ((System.currentTimeMillis() - startTime) > interval)
-                break;
-        }
-    }
-    
-    // -----------------------------------------------------------------------
-    // Sound Util
-    // -----------------------------------------------------------------------
-    
-    private void beep() {
-        Toolkit.getDefaultToolkit().beep();
-    }
-
-    private static IAudioPipe audio;
-
-    static {
-        if (true) {
-            // TODO replace audio file
-            URL url = NavigatorPlugin.getDefault().getBundle().getResource("waiting.wav");
-            IAudioReader reader = AudioFactory.createAudioReader(url);
-            IAudioWriter writer = AudioFactory.createDefaultWriter();
-            audio = AudioFactory.createLoopedAudioPipe(reader, writer);
-            audio.setBufferSize(100);
-            audio.setInterval(1);
-            audio.prepare();
-        }
-    }
-    
-    private void startProgress() {
-        startProgress(2000);
-    }
-    private void startProgress(int msec) {
-        audio.start(msec);
-    }
-    
-    private void endProgress() {
-        audio.stop();
-    }
-
-    // -----------------------------------------------------------------------
-    // Voice
-    // -----------------------------------------------------------------------
-
-    private final VoiceManager voiceManager = new VoiceManager(this);
-
-    protected MessageFormatter getMessageFormatter() {
-        return voiceManager.getMessageFormatter();
-    }
-
-    private VoiceManager getVoiceManager() {
-        return voiceManager;
-    }
-
-    public void indexReceived(int index) {
-        if (speakAllMode && (index == -1)) {
-            display.asyncExec(new Runnable() {
-                public void run() {
-                    traverseDownAll();
-                }
-            });
-        } else if (index == -2) {
-            display.asyncExec(new Runnable() {
-                public void run() {
-                    stopSpeak();
-                }
-            });
-        }
-    }
-    
-    // -----------------------------------------------------------------------
-    // Speak basic
-    // -----------------------------------------------------------------------
-
-    protected void speakWithFormat(String str) {
-        speakWithFormat(str, false);
-    }
-    
-    protected void speakWithFormat(String str, boolean flush) {
-        speak(getMessageFormatter().mes(str), flush, true);
-    }
-
-    protected void speak(String str, boolean flush) {
-        speak(str, flush, true);
-    }
-    
-    protected void speak(String str, boolean flush, boolean maleVoice) {
-        if (speakAllMode) {
-            getVoiceManager().speakWithCallback(str, flush, maleVoice);
-        } else {
-            getVoiceManager().speak(str, flush, maleVoice);
-        }
-    }
-    
-    private boolean speakAllMode = false;
-
-    private void stopSpeakAll() {
-        speakAllMode = false;
-    }
-
-    public void speakAll() {
-        speakAllMode = true;
-        try {
-            speakActiveItem(true, false, JumpMode.NONE);
-        } catch (TreeManagerException e) {
-            e.printStackTrace();
-        }
-    }
-
-    public void traverseDownAll() {
-        moveCmd(new Command() {
-            public int run(int r) throws TreeManagerException {
-                return treeManager.traverse(false);
-            }
-
-            public void after(int st) throws TreeManagerException {
-                afterMoveForSpeakAll(st, "Navigator.BOTTOM");
-            }
-        });
-    }
-
-    private void afterMoveForSpeakAll(int st, String notMoved) throws TreeManagerException {
-        if ((st & ITreeManager.CLICKED) != 0) {
-            speakWithFormat("Navigator.CLICK");
-        }
-        if ((st & ITreeManager.MOVED) != 0) {
-            speakActiveItem(true, false, JumpMode.NONE);
-            sayLevel();
-        } else {
-            speakAllMode = false;
-            sayLevel(notMoved);
-        }
-    }
-
-    public void stopSpeak() {
-        endProgress();
-        stopSpeakAll();
-        getVoiceManager().stop();
-    }
-
-
-    // -----------------------------------------------------------------------
-    // Say, speak
-    // -----------------------------------------------------------------------
-    
-    private void sayMode(IManipulator.Mode mode) {
-        speakWithFormat(mode.name + " mode");
-    }
-    
-    private void sayLevel(String prefix) throws TreeManagerException {
-        String mes = getMessageFormatter().mes(prefix);
-        speak(mes + " " + getLevelMessage(), true, true);
-    }
-    
-    private String getLevelMessage() throws TreeManagerException {
-        int level = treeManager.getLevel();
-        String mesLv;
-        if (level > 0) {
-            mesLv = getMessageFormatter().mes("Navigator.LEVEL", new Object[] { new Integer(level) });
-        } else {
-            mesLv = getMessageFormatter().mes("Navigator.TOP_LEVEL");
-        }
-        return mesLv;
-    }
-
-    private void sayLevel() throws TreeManagerException {
-        // speak(getLevelMessage(), false, true);
-    }
-
-    private void sayRetrial() {
-        speak(getMessageFormatter().mes("Navigator.UNDONE"), true, true);
-    }
-
-    private void speakVideoInfo(boolean flag) throws TreeManagerException {
-        IVideoControl vc = treeManager.getVideoControl();
-        if (flag || vcCount != vc.getCount()) {
-            vcCount = vc.getCount();
-            if (vcCount == 0) {
-                speakWithFormat("Navigator.NOVIDEO");
-            } else if (vcCount == 1) {
-                speakWithFormat("Navigator.SINGLEVIDEO");
-            } else {
-                String text = getMessageFormatter().mes("Navigator.VIDEOCOUNT", new Object[] { vcCount });
-                speak(text, false, false);
-            }
-        }
-    }
-
-    private void speakSoundInfo(boolean flag) throws TreeManagerException {
-        ISoundControl sc = treeManager.getSoundControl();
-        if (flag || scCount != sc.getCount()) {
-            scCount = sc.getCount();
-            if (scCount == 0) {
-                speakWithFormat("Navigator.NOSOUND");
-            } else if (scCount == 1) {
-                speakWithFormat("Navigator.SINGLESOUND");
-            } else {
-                String text = getMessageFormatter().mes("Navigator.SOUNDCOUNT", new Object[] { scCount });
-                speak(text, false, false);
-            }
-        }
-    }
-
-    private int vcCount, scCount;
-
-    //private boolean mcAvailable = false;
-
-    private void speakMediaInfo() throws TreeManagerException {
-        IVideoControl vc = treeManager.getVideoControl();
-
-        StringBuffer buf = new StringBuffer();
-        if (vc.getCount() > 0) {
-            buf.append(getMessageFormatter().mes("Navigator.VIDEO_AT", 
-                    formatTime(vc.getCurrentPosition())));
-        }
-        if (vc.getTotalLength() > 0) {
-            buf.append(getMessageFormatter().mes("Navigator.VIDEO_TOTAL", 
-                    formatTime(vc.getTotalLength())));
-        }
-
-        vcCount = vc.getCount();
-        if (vcCount == 0) {
-            speakWithFormat("Navigator.NOVIDEO");
-        } else if (vcCount == 1) {
-            speakWithFormat("Navigator.SINGLEVIDEO");
-        } else {
-            int index = vc.getIndex();
-            String text = getMessageFormatter().mes("Navigator.VIDEOINDEX", new Object[] { index, vcCount });
-            speak(text, false, false);
-        }
-
-        speak(buf.toString(), false, false);
-    }
-
-    private String formatTime(double currentPosition) {
-        int s = (int) currentPosition;
-        int m = s / 60;
-        s %= 60;
-        int h = s / 60;
-        m %= 60;
-        
-        if (h > 0) {
-            return getMessageFormatter().mes("Navigator.HH_MM_SS", new Object[] { s, m, h });
-        } else if (m > 0) {
-            return getMessageFormatter().mes("Navigator.MM_SS", new Object[] { s, m });
-        }
-        return getMessageFormatter().mes("Navigator.SS", new Object[] { s });
-    }
-    
-    private void speakPageInfo() {
-        try {
-            speakVideoInfo(false);
-            speakSoundInfo(false);
-
-            MediaControlExtension.speakInfo(false);
-            
-            /*
-            if (!mcAvailable && MediaControlExtension.isAvailable()) {
-                speakWithFormat("AudioDescription.available");
-                mcAvailable = true;
-            }*/
-
-        } catch (TreeManagerException e) {
-        }
-    }
-
-    private void sayFennecName(String fennecName, boolean flag) {
-        String text = getMessageFormatter().mes("Navigator.FENNEC_NAME",
-                                           new Object[] { fennecName });
-        speak(text, flag, true);
-    }
-
-    private void sayNoFennec(boolean flag) {
-        speakWithFormat("Navigator.NO_FENNEC", flag);
-    }
-
-    public void speakCurrentStatus() {
-        sayMode(mode);
-        try {
-            speakActiveItem(false, true, JumpMode.NONE);
-            speakPageInfo();
-        } catch (TreeManagerException e) {
-        }
-    }
-
-    public void speakMediaStatus() {
-        try {
-            speakMediaInfo();
-        } catch (TreeManagerException e) {
-        }
-    }
-
-    public void speakTab(boolean flush) {
-        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-        IWorkbenchPage page = window.getActivePage();
-        IEditorPart editor = page.getActiveEditor();
-
-        IEditorReference[] erefs = page.getEditorReferences();
-        boolean found = false;
-        int index = 0, total = 0;
-        for (int i = 0; i < erefs.length; i++) {
-            if (!found)
-                index++;
-            total++;
-            if (erefs[i].getEditor(false).equals(editor)) {
-                found = true;
-            }
-        }
-
-        String buf = "";
-        if (total == 1)
-            buf = editor.getTitle();
-        else
-            buf = getMessageFormatter().mes("Navigator.MOVE_TAB", editor.getTitle(), index, total);
-
-        speak(buf, flush, false);
-        stopSpeakAll();
-    }
-    
-
-    private ITreeItem lastHighlighted;
-
-    private void highlight(ITreeItem item) {
-        if (lastHighlighted != null) {
-            try {
-                lastHighlighted.unhighlight();
-            } catch (TreeManagerException e) {
-            }
-        }
-        try {
-            item.highlight();
-        } catch (TreeManagerException e) {
-        }
-        lastHighlighted = item;
-        sleep(1);
-    }
-    
-    protected enum JumpMode {
-        HEADING, 
-        LISTITEM_TOP, 
-        LINK, 
-        OBJECT, 
-        BLOCK, 
-        INPUT, 
-        LISTITEM_BOTTOM, 
-        ACCESSKEY, 
-        MEDIA,
-        ALTALABLE,
-        NONE,
-    }
-
-    private boolean listJumping = false;
-
-    private void speakActiveItem(boolean flush, boolean verbose, JumpMode jumpMode) throws TreeManagerException {
-        endProgress();
-        ITreeItem item = treeManager.getActiveItem();
-        ITreeItem[] siblings = treeManager.getSiblings();
-
-        final MessageFormatter mf = getMessageFormatter();
-        if (item == null)
-            return;
-        // update view
-        highlight(item);
-        getNavigatorTreeView().showItem(item);
-
-        // get item's UI string
-        int idx = item.getNth();
-        int st = intervalStart(siblings, idx);
-        int end = intervalEnd(siblings, idx);
-        StringBuffer bufUIStr = new StringBuffer();
-        for (int i = st; i <= end; i++) {
-            if (i < siblings.length)
-                bufUIStr.append(siblings[i].getUIString());
-            else
-                System.err.println("st " + st + ", end " + end + ", siblings.length " + siblings.length);
-        }
-        char accessKey = item.getAccessKey();
-
-        String uiStr = bufUIStr.toString();
-        String label = item.getFormLabel();
-        String speak = uiStr;
-
-        boolean isLink = Vocabulary.isLink().eval(item);
-        int hl = item.getHeadingLevel();
-        boolean isHeading = hl > 0;
-        boolean isListItem = Vocabulary.isListItem().eval(item);
-        boolean isListTop = Vocabulary.isListTop().eval(item);
-        boolean isCheckbox = Vocabulary.isCheckbox().eval(item);
-        boolean isRadio = Vocabulary.isRadio().eval(item);
-        boolean isCombobox = Vocabulary.isCombobox().eval(item);
-        //boolean isMultiSelectable = Vocabulary.isMultiSelectable().eval(item);
-        boolean isButton = Vocabulary.isButton().eval(item);
-        boolean isPassword = Vocabulary.isPassword().eval(item);
-        boolean isTextbox = Vocabulary.isTextbox().eval(item);
-        boolean isTextarea = Vocabulary.isMultilineEdit().eval(item);
-        boolean isFileEdit = Vocabulary.isFileEdit().eval(item);
-        boolean isChecked = Vocabulary.isChecked().eval(item);
-        boolean isClickable = Vocabulary.isClickable().eval(item);
-        boolean isFlashTopNode = Vocabulary.isFlashTopNode().eval(item);
-        boolean isFlashLastNode = Vocabulary.isFlashLastNode().eval(item);
-        boolean isMedia = Vocabulary.isMedia().eval(item);
-        
-        
-
-        if (isButton) {
-            String widget = mf.mes("Navigator.BUTTON");
-            if (uiStr.matches("[0-9]+")) {
-                speak = mf.concat(widget, uiStr);
-            } else {
-                speak = mf.concat(uiStr, widget);
-            }
-        } else if (isLink) {
-            boolean isVisitedLink = Vocabulary.isVisitedLink().eval(item);
-            String widget = mf.mes(isVisitedLink ? "Navigator.VISITED_LINK" : "Navigator.LINK");
-            if (jumpMode == JumpMode.LINK) {
-                speak = mf.concat(uiStr, widget);
-            } else {
-                speak = mf.concat(widget, uiStr);
-            }
-        } else if (isPassword) {
-            if (uiStr.length() > 0)
-                uiStr = mf.mes("Navigator.PASSWORD_STAR3");
-            String widget = mf.mes("Navigator.PASSWORD");
-            if (jumpMode == JumpMode.LINK) {
-                speak = mf.concat(label, widget, uiStr);
-            } else {
-                speak = mf.concat(uiStr, widget);
-            }
-        } else if (isFileEdit) {
-            String widget = mf.mes("Navigator.FILE_UPLOAD");
-            if (jumpMode == JumpMode.LINK) {
-                speak = mf.concat(label, widget, uiStr);
-            } else {
-                speak = mf.concat(widget, uiStr);
-            }
-        } else if (isTextarea) {
-            String widget = mf.mes((uiStr.length() == 0) ? "Navigator.TEXTAREA_EMPTY" : "Navigator.TEXTAREA");
-            if (jumpMode == JumpMode.LINK) {
-                speak = mf.concat(label, widget);
-            } else {
-                speak = widget;
-            }
-        } else if (isTextbox) {
-            String widget = mf.mes("Navigator.TEXTBOX");
-
-            if (jumpMode == JumpMode.LINK) {
-                speak = mf.concat(label, widget, uiStr);
-            } else {
-                speak = mf.concat(widget, uiStr);
-            }
-        } else if (isCheckbox) {
-            String widget = mf.mes("Navigator.CHECKBOX");
-            String checked = mf.mes(isChecked ? "Navigator.CHECKED" : "Navigator.NOT_CHECKED");
-
-            if (jumpMode == JumpMode.LINK) {
-                speak = mf.concat(label, widget, checked);
-            } else {
-                speak = mf.concat(widget, checked, label);
-            }
-        } else if (isRadio) {
-            String widget = mf.mes("Navigator.RADIO");
-            String checked = mf.mes(isChecked ? "Navigator.CHECKED" : "Navigator.NOT_CHECKED");
-
-            int index = item.getRadioIndex();
-            int total = item.getRadioTotal();
-            String nm = "";
-            if (index != 0 && total != 0) {
-                nm = mf.mes("Navigator.N_OF_M", index, total);
-            }
-
-            if (jumpMode == JumpMode.LINK) {
-                speak = mf.concat(label, widget, checked, nm);
-            } else {
-                speak = mf.concat(widget, checked, nm, label);
-            }
-        } else if (isCombobox) {
-            int[] indices = item.getSelectedIndices();
-            int total = item.getOptionsCount();
-
-            if (indices.length > 0) {
-                StringBuffer sb = new StringBuffer();
-                for (int i = 0; i < indices.length; i++) {
-                    sb.append(mf.mes("Navigator.COMBO_BOX") + " ");
-                    sb.append(item.getOptionTextAt(indices[i]));
-                    sb.append(" " + mf.mes("Navigator.N_OF_M", indices[i] + 1, total) + " ");
-                }
-                speak = mf.concat(uiStr, sb.toString());
-            } else {
-                speak = mf.concat(uiStr, mf.mes("Navigator.NO_SELECTION"));
-            }
-            if (jumpMode == JumpMode.LINK) {
-                speak = mf.concat(label, uiStr);
-            }
-        } else if (isFlashTopNode) {
-            boolean isMSAAFlash = Vocabulary.isMSAAFlash().eval(item);
-            if (isMSAAFlash)
-                speak = mf.concat(speak, mf.mes("Navigator.MSAA_FLASH_CONTENT"));
-            else
-                speak = mf.concat(speak, mf.mes("Navigator.FLASH_CONTENT"));
-        } else if (isFlashLastNode) {
-            speak = mf.mes("Navigator.FLASH_END");
-        }
-        if (speak.length() == 0) {
-            if (isClickable) {
-                speak = "Clickable";
-            }
-        }
-        if (isHeading) {
-            String widget = mf.mes("Navigator.HEADING");
-            String level = mf.mes("Navigator.LEVEL", hl);
-
-            if (jumpMode == JumpMode.HEADING) {
-                speak = mf.concat(speak, widget, level);
-            } else {
-                speak = mf.concat(widget, level, speak);
-            }
-        }
-
-        if (isMedia) {
-            String media = mf.mes("Navigator.MEDIA");
-            speak = mf.concat(media, speak);
-        }
-
-        if (isListItem) {
-            int index = item.getListIndex();
-            int total = item.getListTotal();
-            if (total > 1) {
-                String nm = mf.mes("Navigator.N_OF_M", index, total);
-                speak = mf.concat(speak, nm);
-                if (listJumping && ((jumpMode == JumpMode.LISTITEM_TOP && index == 1) //
-                        || (jumpMode == JumpMode.LISTITEM_BOTTOM && index == total))) {
-                    beep();
-                }
-                listJumping = true;
-            }
-        } else {
-            listJumping = false;
-        }
-        if (isListTop) {
-            ITreeItem[] children = item.getChildItems();
-            int n = 0;
-            for (int i = 0; i < children.length; i++) {
-                if (Vocabulary.isListItem().eval(children[i])) {
-                    n++;
-                }
-            }
-            speak = mf.concat(speak, uiStr, mf.mes("Navigator.LIST_TOP", n));
-        }
-        
-        if (accessKey != 0) {
-            speak = mf.concat(speak, mf.mes("Navigator.ACCESSKEY_GUIDE", accessKey));
-        }
-
-        if (verbose) {
-            String desc = item.getDescription();
-            if ((desc != null) && (desc.length() > 0)) {
-                speak = mf.concat(speak, desc);
-            }
-        }
-
-        speak(speak, flush, !isLink);
-    }
-
-    private int intervalStart(ITreeItem[] siblings, int st) {
-        if (siblings == null)
-            return 0;
-        for (st = st - 1;; st--) {
-            if (st < 0 || siblings.length <= st)
-                return 0;
-            if (!Vocabulary.isConnectable().eval(siblings[st]))
-                return st + 1;
-        }
-    }
-
-    private int intervalEnd(ITreeItem[] siblings, int end) {
-        if (siblings == null)
-            return 0;
-        for (; end < siblings.length; end++) {
-            if (!Vocabulary.isConnectable().eval(siblings[end]))
-                return end;
-        }
-        return end - 1;
-    }
-
-    // ---------------------------------------------------------------------
-    // Mode Control
-    // ---------------------------------------------------------------------
-    
-    // Used by NavigatorImplExSub
-    protected void setMode(IManipulator.Mode mode) {
-        if (this.mode == mode)
-            return;
-        if (this.mode != null) {
-            //sayMode(mode);
-        }
-        this.mode = mode;
-        ManipulatorExtension.setMode(mode);
-        getNavigatorTreeView().setMode(mode);
-        switch (mode.code) {
-        case IManipulator.TREE_NAVIGATION_MODE_CODE:
-            ScreenReaderExtension.screenReaderOff();
-            if (ScreenReaderExtension.isAvailable()) {
-                webBrowser.showAddressText(false);
-            }
-            break;
-        case IManipulator.FORM_INPUT_MODE_CODE:
-        default:
-            ScreenReaderExtension.screenReaderOn();
-            break;
-        }
-    }
-
-    private void enterFormInputMode(ITreeItem item) {
-        setMode(IManipulator.FORM_INPUT_MODE);
-        item.setFocus();
-    }
-
-    private void enterFormInputMode() {
-        setMode(IManipulator.FORM_INPUT_MODE);
-    }
-
-    // --------------------------------------------------------------------------------
-    // Fennec Control
-    // --------------------------------------------------------------------------------
-
-    private int currentFennecIdx = 1;
-    
-    private IFennecEntry currentEntry = null;
-    
-    protected IFennecEntry getCurrentEntry() {
-        return currentEntry;
-    }
-
-    private void selectFennec(boolean next, boolean flush) {
-        selectFennec(next, flush, true);
-    }
-    private void selectFennec(boolean next, boolean flush, boolean sayFlag) {
-        if (lastHighlighted != null) {
-            try {
-                lastHighlighted.unhighlight();
-            } catch (TreeManagerException e1) {
-            }
-        }
-
-        IFennecEntry[] entries = fennecMediator.getFennecEntries();
-        if (next) {
-            if (entries.length == 0) {
-                speakWithFormat("Navigator.NO_OTHER_FENNEC", true);
-                return;
-            }
-            currentFennecIdx++;
-        }
-        if (currentFennecIdx > entries.length)
-            currentFennecIdx = 0;
-        try {
-            restoreLocation(getLocation());
-            if (currentFennecIdx == 0) {
-                initFennec(null, flush, sayFlag);
-            } else {
-                initFennec(entries[currentFennecIdx - 1], flush, sayFlag);
-            }
-            speakActiveItem(false, false, JumpMode.NONE);
-        } catch (TreeManagerException e) {
-        }
-    }
-
-    protected void selectUserFennec() {
-        if (lastHighlighted != null) {
-            try {
-                lastHighlighted.unhighlight();
-            } catch (TreeManagerException e1) {
-            }
-        }
-
-        IFennecEntry[] entries = fennecMediator.getFennecEntries();
-        for (int i = 0; i < entries.length; i++) {
-            if (entries[i].isUserEntry()) {
-                try {
-                    restoreLocation(getLocation());
-                    initFennec(entries[i], true, true);
-                    speakActiveItem(false, false, JumpMode.NONE);
-                } catch (TreeManagerException e) {
-                }
-                return;
-            }
-        }
-        speakWithFormat("Navigator.NO_OTHER_FENNEC", true);
-        return;
-    }
-
-    public void selectNextFennec() {
-        selectFennec(true, true);
-    }
-    
-    void setFennecMediator(IFennecMediator fennecMediator) {
-        if (this.fennecMediator != null) {
-            this.fennecMediator.release();
-        }
-        this.fennecMediator = fennecMediator;
-        // TODO
-        this.treeManager = null;
-        this.lastHighlighted = null;
-        getNavigatorTreeView().clearItem();
-    }
-
-
-    private String getFennecName(IFennecEntry entry) {
-        if (entry == null)
-            return getMessageFormatter().mes("Navigator.NO_FENNEC_MESSAGE");
-        String text = entry.getDocumentation();
-        if ((text != null) && (text.length() > 0))
-            return text;
-        return getMessageFormatter().mes("Navigator.NO_FENNEC_NAME");
-    }
-
-    private void initFennec(IFennecEntry entry, boolean flag, boolean sayFlag) throws TreeManagerException {
-        currentEntry = entry;
-        treeManager = fennecMediator.newTreeManager(entry);
-        String fennecName = getFennecName(entry);
-        if (sayFlag) {
-            if (entry == null) {
-                sayNoFennec(flag);
-            } else {
-                sayFennecName(fennecName, flag);
-            }
-        }
-        getNavigatorTreeView().showFennecName(fennecName);
-        setMode(IManipulator.TREE_NAVIGATION_MODE);
-        try {
-            treeManager.initialize();
-            if (sayFlag)
-                speakPageInfo();
-        } catch (TreeManagerException e) {
-            if (sayFlag)
-                speakWithFormat(e.getMessage());
-        }
-
-        if (!skipToAnchor(webBrowser.getURL())) {
-            if (locationToBeRestored != null) {
-                try {
-                    treeManager.moveToLocation(locationToBeRestored);
-                } catch (TreeManagerException e) {
-                }
-                locationToBeRestored = null;
-            }
-        }
-    }
-
-    public void startNavigation(IWebBrowserACTF webBrowser) {
-        startNavigation(webBrowser, true);
-    }
-
-    public void startNavigation(IWebBrowserACTF webBrowser, boolean sayFlag) {
-        endProgress();
-        if (ScreenReaderExtension.isAvailable() && isLeftViewsShown() && !isDemo) {
-            toggleLeftViewsShowing();
-        }
-
-        if (sayFlag)
-            speakWithFormat("Navigator.STARTNAVIGATION");
-
-        try {
-            initFennec(fennecMediator.getDefaultFennecEntry(), false, sayFlag);
-            currentFennecIdx = 1;
-            if (sayFlag) {
-                speakActiveItem(false, false, JumpMode.NONE);
-            }
-        } catch (Exception e) {
-            // TODO Retry
-            e.printStackTrace();
-        }
-        ManipulatorExtension.setNavigator(this);
-        initializeMovieStartListener();
-    }
-
-    public void endNavigation() {
-        // TODO
-        ManipulatorExtension.disposeExtensions();
-    }
-
-    // --------------------------------------------------------------------------------
-    // Media Control
-    // --------------------------------------------------------------------------------
-
-    private ISoundControl prepareSoundControl() throws TreeManagerException {
-        ISoundControl sc = treeManager.getSoundControl();
-        if (sc.getCount() == 0) {
-            // say("Retry to control sound");
-            treeManager.analyze();
-            sc = treeManager.getSoundControl();
-        }
-        return sc;
-    }
-
-    private IVideoControl prepareVideoControl() throws TreeManagerException {
-        IVideoControl vc = treeManager.getVideoControl();
-        if (vc.getCount() == 0) {
-            // say("Retry to control video");
-            treeManager.analyze();
-            vc = treeManager.getVideoControl();
-        }
-        return vc;
-    }
-
-    public void muteMedia() {
-        ISoundControl sc;
-        try {
-            sc = prepareSoundControl();
-        } catch (TreeManagerException e) {
-            return;
-        }
-        if (sc == null)
-            return;
-        if (sc.getCount() == 0) {
-            speakWithFormat("Navigator.NOSOUND", true);
-            return;
-        }
-        sc.muteMedia();
-        if (sc.getVolumeState() == VolumeState.MUTE) {
-            speakWithFormat("Navigator.MUTEON", true);
-        } else {
-            speakWithFormat("Navigator.MUTEOFF", true);
-        }
-    }
-
-    public void volumeDownMedia() {
-        ISoundControl sc;
-        try {
-            sc = prepareSoundControl();
-        } catch (TreeManagerException e) {
-            return;
-        }
-        if (sc == null)
-            return;
-        if (sc.getCount() == 0) {
-            speakWithFormat("Navigator.NOSOUND", true);
-            return;
-        }
-        sc.volumeDownMedia();
-        if (sc.getVolumeState() == VolumeState.MIN || sc.getVolumeState() == VolumeState.MUTE) {
-            speakWithFormat("Navigator.VOLUMEMIN", true);
-        } else {
-            speakWithFormat("Navigator.VOLUMEDOWN", true);
-        }
-    }
-
-    public void minimalVolumeDownMedia() {
-        ISoundControl sc;
-        try {
-            sc = prepareSoundControl();
-        } catch (TreeManagerException e) {
-            return;
-        }
-        if (sc == null)
-            return;
-        if (sc.getCount() == 0) {
-            speakWithFormat("Navigator.NOSOUND", true);
-            return;
-        }
-        sc.minimalVolumeDownMedia();
-        if (sc.getVolumeState() == VolumeState.MIN || sc.getVolumeState() == VolumeState.MUTE) {
-            speakWithFormat("Navigator.VOLUMEMIN", true);
-        } else {
-            speakWithFormat("Navigator.VOLUMEDOWN", true);
-        }
-    }
-
-    public void volumeUpMedia() {
-        ISoundControl sc;
-        try {
-            sc = prepareSoundControl();
-        } catch (TreeManagerException e) {
-            return;
-        }
-        if (sc == null)
-            return;
-        if (sc.getCount() == 0) {
-            speakWithFormat("Navigator.NOSOUND", true);
-            return;
-        }
-        sc.volumeUpMedia();
-        if (sc.getVolumeState() == VolumeState.MAX) {
-            speakWithFormat("Navigator.VOLUMEMAX", true);
-        } else {
-            speakWithFormat("Navigator.VOLUMEUP", true);
-        }
-    }
-
-    public void minimalVolumeUpMedia() {
-        ISoundControl sc;
-        try {
-            sc = prepareSoundControl();
-        } catch (TreeManagerException e) {
-            return;
-        }
-        if (sc == null)
-            return;
-        if (sc.getCount() == 0) {
-            speakWithFormat("Navigator.NOSOUND", true);
-            return;
-        }
-        sc.minimalVolumeUpMedia();
-        if (sc.getVolumeState() == VolumeState.MAX) {
-            speakWithFormat("Navigator.VOLUMEMAX", true);
-        } else {
-            speakWithFormat("Navigator.VOLUMEUP", true);
-        }
-    }
-
-    private void sayVideoState(IVideoControl vc, boolean doPause, VideoState oldSt) {
-        VideoState st = vc.getVideoState();
-        switch (st) {
-        case STATE_PLAY:
-            if (doPause) {
-                if (oldSt == VideoState.STATE_PAUSE) {
-                    speakWithFormat("Navigator.RESUMEMEDIA");
-                } else if (oldSt == VideoState.STATE_PLAY) {
-                    speakWithFormat("Navigator.CANNOT_PAUSE");
-                }
-            } else {
-                speakWithFormat("Navigator.PLAYMEDIA");
-            }
-            break;
-        case STATE_STOP:
-            speakWithFormat("Navigator.STOPMEDIA");
-            break;
-        case STATE_PAUSE:
-            speakWithFormat("Navigator.PAUSEMEDIA");
-            break;
-        case STATE_WAITING:
-            speakWithFormat("Navigator.WAITINGMEDIA");
-            break;
-        case STATE_FASTFORWARD:
-            speakWithFormat("Navigator.FASTFORWARDMEDIA");
-            break;
-        case STATE_FASTREVERSE:
-            speakWithFormat("Navigator.FASTREVERSEMEDIA");
-            break;
-        case STATE_OTHER:
-            speakWithFormat("Navigator.NOT_AVAILABEL");
-            break;
-        }
-    }
-
-    public void previousTrack() {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void nextTrack() {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void stopMedia() {
-        try {
-            IVideoControl vc = prepareVideoControl();
-            VideoState st = vc.getVideoState();
-            vc.stopMedia();
-            sayVideoState(vc, false, st);
-        } catch (TreeManagerException e) {
-        }
-    }
-
-    public void playMedia() {
-        try {
-            IVideoControl vc = prepareVideoControl();
-            VideoState st = vc.getVideoState();
-            vc.playMedia();
-            sayVideoState(vc, false, st);
-        } catch (TreeManagerException e) {
-        }
-    }
-
-    public void pauseMedia() {
-        try {
-            IVideoControl vc = prepareVideoControl();
-            VideoState st = vc.getVideoState();
-            vc.pauseMedia();
-            sayVideoState(vc, true, st);
-        } catch (TreeManagerException e) {
-        }
-    }
-
-    public void fastReverse() {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void fastForward() {
-        // TODO Auto-generated method stub
-
-    }
-
-    // --------------------------------------------------------------------------------
-    // Tree Navigation
-    // --------------------------------------------------------------------------------
-
-
-    interface Command {
-        int run(int retry) throws TreeManagerException;
-        void after(int st) throws TreeManagerException;
-    }
-    
-    private void afterMove(int st, String notMoved) throws TreeManagerException {
-        afterMove(st, notMoved, null);
-    }
-
-    private void afterMove(int st, String notMoved, JumpMode jumpMode) throws TreeManagerException {
-        if ((st & ITreeManager.CLICKED) != 0) {
-            speakWithFormat("Navigator.CLICK");
-        }
-        else if ((st & ITreeManager.MOVED) != 0) {
-            speakActiveItem(true, false, jumpMode);
-            sayLevel();
-        } else {
-            sayLevel(notMoved);
-        }
-        speakAllMode = false;
-    }
-
-    private void moveCmd(Command cmd) {
-        if (treeManager == null)
-            return;
-        for (int i = 0; i < maxRetry; i++) {
-            try {
-                int st = cmd.run(i);
-                cmd.after(st);
-                return;
-            } catch (TreeManagerInterruptedException e) {
-                sayRetrial();
-                sleep(retryInterval);
-            } catch (TreeManagerException e) {
-            }
-        }
-        // navigationThread.sendCmd(cmd);
-    }
-    
-    private boolean skipToAnchor(String url) throws TreeManagerException {
-        int hashIdx = url.lastIndexOf('#');
-        if (hashIdx < 0)
-            return false;
-        hashIdx++;
-        if (hashIdx >= url.length())
-            return false;
-        String target = url.substring(hashIdx);
-        treeManager.skipToAnchor(target);
-        return true;
-    }
-
-    public void treeLeft() {
-        moveCmd(new Command() {
-            public int run(int r) throws TreeManagerException {
-                return treeManager.gotoParent();
-            }
-
-            public void after(int st) throws TreeManagerException {
-                afterMove(st, "Navigator.TOP");
-            }
-        });
-    }
-
-    public void treeRight() {
-        moveCmd(new Command() {
-            public int run(int r) throws TreeManagerException {
-                return treeManager.gotoFirstChild();
-            }
-
-            public void after(int st) throws TreeManagerException {
-                afterMove(st, "Navigator.NO_SUBITEMS");
-            }
-        });
-    }
-
-    public void treeUp() {
-        moveCmd(new Command() {
-            public int run(int r) throws TreeManagerException {
-                return treeManager.gotoPreviousSibling();
-            }
-
-            public void after(int st) throws TreeManagerException {
-                afterMove(st, "Navigator.TOP");
-            }
-        });
-    }
-
-    public void treeDown() {
-        moveCmd(new Command() {
-            public int run(int r) throws TreeManagerException {
-                return treeManager.gotoNextSibling();
-            }
-
-            public void after(int st) throws TreeManagerException {
-                afterMove(st, "Navigator.BOTTOM");
-            }
-        });
-    }
-
-    public void treeTop() {
-        moveCmd(new Command() {
-            public int run(int r) throws TreeManagerException {
-                return treeManager.gotoStartOfPage();
-            }
-
-            public void after(int st) throws TreeManagerException {
-                speakTab();
-                listJumping = false;
-                //afterMove(st, "Navigator.TOP");
-            }
-        });
-    }
-
-    public void treeBottom() {
-        moveCmd(new Command() {
-            public int run(int r) throws TreeManagerException {
-                return treeManager.gotoEndOfPage();
-            }
-
-            public void after(int st) throws TreeManagerException {
-                afterMove(st, "Navigator.BOTTOM");
-            }
-        });
-    }
-
-    public void traverseNodeDown() {
-        moveCmd(new Command() {
-            public int run(int r) throws TreeManagerException {
-                int moved;
-                int rFlag = 0;
-                do {
-                    moved = treeManager.traverse(false);
-                    rFlag |= moved;
-                } while (((moved & ITreeManager.LEVEL_CHANGED) == 0) && ((moved & ITreeManager.MOVED) != 0));
-                return moved | rFlag;
-            }
-
-            public void after(int st) throws TreeManagerException {
-                afterMove(st, "Navigator.BOTTOM");
-            }
-        });
-    }
-
-    public void traverseNodeUp() {
-        moveCmd(new Command() {
-            public int run(int r) throws TreeManagerException {
-                int moved;
-                int rFlag = 0;
-                do {
-                    moved = treeManager.traverse(true);
-                    rFlag |= moved;
-                } while (((moved & ITreeManager.LEVEL_CHANGED) == 0) && ((moved & ITreeManager.MOVED) != 0));
-                return moved | rFlag;
-            }
-
-            public void after(int st) throws TreeManagerException {
-                afterMove(st, "Navigator.TOP");
-            }
-        });
-    }
-
-    public void traverseDown() {
-        moveCmd(new Command() {
-            public int run(int r) throws TreeManagerException {
-                return treeManager.traverse(false);
-            }
-
-            public void after(int st) throws TreeManagerException {
-                if ((st & ITreeManager.MOVED) == 0) {
-                    beep();
-                    speak(getMessageFormatter().mes("Navigator.BOTTOM"), true, false);
-                    speakActiveItem(false, false, JumpMode.NONE);
-                } else {
-                    afterMove(st, "Navigator.BOTTOM");
-                }
-            }
-        });
-    }
-
-    public void traverseUp() {
-        moveCmd(new Command() {
-            public int run(int r) throws TreeManagerException {
-                return treeManager.traverse(true);
-            }
-
-            public void after(int st) throws TreeManagerException {
-                if ((st & ITreeManager.MOVED) == 0) {
-                    beep();
-                    speak(getMessageFormatter().mes("Navigator.TOP"), true, false);
-                    speakTab(false);
-                } else {
-                    afterMove(st, "Navigator.TOP");
-                }
-            }
-        });
-    }
-
-    public void click() {
-        try {
-            ITreeItem item = treeManager.getActiveItem();
-            if (item == null)
-                return;
-
-            // for restoring the class name of the item
-            item.unhighlight();
-
-            if (Vocabulary.isFileEdit().eval(item) || //
-                    Vocabulary.isCheckbox().eval(item) || //
-                    Vocabulary.isRadio().eval(item) || //
-                    !(Vocabulary.isInputable().eval(item) || Vocabulary.isSelectable().eval(item)) //
-            ) {
-                moveCmd(new Command() {
-                    public int run(int r) throws TreeManagerException {
-                        if (r == 0) {
-                            return treeManager.click(true);
-                        } else {
-                            return treeManager.click(false);
-                        }
-                    }
-
-                    public void after(int st) throws TreeManagerException {
-                        afterMove(st, "Navigator.CLICK");
-                    }
-                });
-                return;
-            }
-
-            if (false) {
-                enterFormInputMode(item);
-            } else {
-                setMode(IManipulator.KEYHOOK_DISABLED_MODE);
-                //item.setFocus();
-                Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-                boolean combo = Vocabulary.isCombobox().eval(item);
-
-                if (combo) {
-                    boolean multiple = Vocabulary.isMultiSelectable().eval(item);
-                    FormSelectDialog dialog = new FormSelectDialog(shell, item, multiple);
-
-                    if (dialog.open() == InputDialog.OK) {
-                        int[] indices = dialog.getSelectedIndices();
-                        int total = dialog.getLength();
-                        if (indices != null) {
-                            item.setSelectedIndices(indices);
-                            if (indices.length > 0) {
-                                StringBuffer sb = new StringBuffer();
-                                for (int i = 0; i < indices.length; i++) {
-                                    String text = dialog.getTextAt(indices[i]);
-                                    sb.append(text + " " + getMessageFormatter().mes("Navigator.N_OF_M", indices[i] + 1, total)
-                                              + " ");
-                                }
-                                speak(sb.toString(), true);
-                            } else {
-                                speakWithFormat("Navigator.COMBO_BOX_NOSELECTION");
-                            }
-                        }
-                    }
-                } else {
-                    boolean multiline = Vocabulary.isMultilineEdit().eval(item);
-                    boolean pass = Vocabulary.isPassword().eval(item);
-                    FormInputDialog dialog = new FormInputDialog(shell, item.getText(), multiline, pass);
-
-                    if (dialog.open() == InputDialog.OK) {
-                        String result = dialog.getResult();
-                        if (result != null) {
-                            item.setText(dialog.getResult());
-                            if (pass) {
-                                if (item.getText().length() > 0) {
-                                    speakWithFormat(getMessageFormatter().mes("Navigator.PASSWORD_STAR3"));
-                                }
-                            } else {
-                                speakWithFormat(item.getText());
-                            }
-                        }
-                    }
-                }
-                //item.setFocus();
-                setMode(IManipulator.TREE_NAVIGATION_MODE);
-            }
-
-            // for restoring the class name of the item
-            item.highlight();
-        } catch (TreeManagerException e) {
-            e.printStackTrace();
-        }
-    }
-
-    // --------------------------------------------------------------------------------
-    // Skip Navigation
-    // --------------------------------------------------------------------------------
-
-    // Used by NavigatorImplExSub
-    protected void findNext(final IProposition p, final JumpMode jumpMode) {
-        moveCmd(new Command() {
-            ILocation current;
-            public int run(int r) throws TreeManagerException {
-                startProgress();
-                current = getLocation();
-                return treeManager.findNext(p);
-            }
-
-            public void after(int st) throws TreeManagerException {
-                if ((st & ITreeManager.MOVED) == 0) {
-                    if (jumpMode != JumpMode.LISTITEM_TOP)
-                        beep();
-                    speak(getMessageFormatter().mes("Navigator.WRAPPING_TO_TOP"), true, false);
-                    moveCmd(new Command() {
-                        public int run(int r) throws TreeManagerException {
-                            treeManager.gotoStartOfPage();
-                            return treeManager.findNext(p);
-                        }
-
-                        public void after(int st) throws TreeManagerException {
-                            if ((st & ITreeManager.MOVED) == 0)
-                                treeManager.moveToLocation(current);
-                            afterFind(st, jumpMode);
-                            endProgress();
-                        }
-                    });
-                } else {
-                    afterMove(st, "Navigator.BOTTOM", jumpMode);
-                    endProgress();
-                }
-            }
-        });
-    }
-
-    private void afterFind(int st, JumpMode jumpMode) throws TreeManagerException {
-        afterFind(st, jumpMode, null);
-    }
-
-    private void afterFind(int st, JumpMode jumpMode, Object arg) throws TreeManagerException {
-        if ((st & ITreeManager.MOVED) != 0) {
-            speakActiveItem(false, false, jumpMode);
-        } else {
-            String buf = "";
-            if (jumpMode == JumpMode.HEADING)
-                buf = getMessageFormatter().mes("Navigator.NO_HEADING");
-            else if (jumpMode == JumpMode.BLOCK)
-                buf = getMessageFormatter().mes("Navigator.NO_BLOCK");
-            else if (jumpMode == JumpMode.INPUT)
-                buf = getMessageFormatter().mes("Navigator.NO_INPUT");
-            else if (jumpMode == JumpMode.LINK)
-                buf = getMessageFormatter().mes("Navigator.NO_LINK");
-            else if (jumpMode == JumpMode.LISTITEM_TOP || jumpMode == JumpMode.LISTITEM_BOTTOM)
-                buf = getMessageFormatter().mes("Navigator.NO_LISTITEM");
-            else if (jumpMode == JumpMode.OBJECT)
-                buf = getMessageFormatter().mes("Navigator.NO_OBJECT");
-            else if (jumpMode == JumpMode.MEDIA)
-                buf = getMessageFormatter().mes("Navigator.NO_MEDIA");
-            else if (jumpMode == JumpMode.ACCESSKEY)
-                buf = getMessageFormatter().mes("Navigator.NO_ACCESSKEY", arg);
-            else if (jumpMode == JumpMode.ALTALABLE)
-                buf = getMessageFormatter().mes("Navigator.NO_ALTALABLE");
-                
-
-            speak(buf, true, false);
-        }
-        speakAllMode = false;
-    }
-
-    // Used by NavigatorImplExSub
-    protected void findPrevious(final IProposition p, final JumpMode jumpMode) {
-        moveCmd(new Command() {
-            private ILocation current;
-            public int run(int r) throws TreeManagerException {
-                startProgress();
-                current = getLocation();
-                return treeManager.findPrevious(p);
-            }
-
-            public void after(int st) throws TreeManagerException {
-                if ((st & ITreeManager.MOVED) == 0) {
-                    if (jumpMode != JumpMode.LISTITEM_BOTTOM)
-                        beep();
-                    speak(getMessageFormatter().mes("Navigator.WRAPPING_TO_BOTTOM"), true, false);
-                    moveCmd(new Command() {
-                        public int run(int r) throws TreeManagerException {
-                            treeManager.gotoEndOfPageForFind();
-                            return treeManager.findPrevious(p);
-                        }
-
-                        public void after(int st) throws TreeManagerException {
-                            if ((st & ITreeManager.MOVED) == 0)
-                                treeManager.moveToLocation(current);
-                            afterFind(st, jumpMode);
-                            endProgress();
-                        }
-                    });
-                } else {
-                    afterMove(st, "Navigator.TOP", jumpMode);
-                    endProgress();
-                }
-            }
-        });
-    }
-
-    public void nextHeader() {
-        findNext(Vocabulary.isHeading(), JumpMode.HEADING);
-    }
-
-    public void previousHeader() {
-        findPrevious(Vocabulary.isHeading(), JumpMode.HEADING);
-    }
-
-    public void nextInputable() {
-        findNext(Vocabulary.or(Vocabulary.isInputable(), Vocabulary.isSelectable()), JumpMode.INPUT);
-    }
-
-    public void previousInputable() {
-        findPrevious(Vocabulary.or(Vocabulary.isInputable(), Vocabulary.isSelectable()), JumpMode.INPUT);
-    }
-
-    public void nextLink() {
-        findNext(Vocabulary.or(Vocabulary.isClickable(), Vocabulary.isInputable(), Vocabulary.isSelectable()),
-                JumpMode.LINK);
-    }
-
-    public void previousLink() {
-        findPrevious(Vocabulary.or(Vocabulary.isClickable(), Vocabulary.isInputable(), Vocabulary.isSelectable()),
-                JumpMode.LINK);
-    }
-
-    public void nextObject() {
-        findNext(Vocabulary.isEmbeddedObject(), JumpMode.OBJECT);
-    }
-
-    public void previousObject() {
-        findPrevious(Vocabulary.isEmbeddedObject(), JumpMode.OBJECT);
-    }
-
-    public void nextListItem() {
-        findNext(Vocabulary.isListItem(), JumpMode.LISTITEM_TOP);
-    }
-
-    public void previousListItem() {
-        findPrevious(Vocabulary.isListItem(), JumpMode.LISTITEM_BOTTOM);
-    }
-
-    public void nextBlock() {
-        findNext(Vocabulary.isBlockJumpPointF(), JumpMode.BLOCK);
-    }
-
-    public void previousBlock() {
-        findPrevious(Vocabulary.isBlockJumpPointB(), JumpMode.BLOCK);
-    }
-
-    public void nextMedia() {
-        findNext(Vocabulary.isMedia(), JumpMode.MEDIA);
-    }
-
-    public void previousMedia() {
-        findPrevious(Vocabulary.isMedia(), JumpMode.MEDIA);
-    }
-
-    public void nextHeader1() {
-        findNext(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading1()), JumpMode.HEADING);
-    }
-
-    public void nextHeader2() {
-        findNext(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading2()), JumpMode.HEADING);
-    }
-
-    public void nextHeader3() {
-        findNext(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading3()), JumpMode.HEADING);
-    }
-
-    public void nextHeader4() {
-        findNext(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading4()), JumpMode.HEADING);
-    }
-
-    public void nextHeader5() {
-        findNext(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading5()), JumpMode.HEADING);
-    }
-
-    public void nextHeader6() {
-        findNext(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading6()), JumpMode.HEADING);
-    }
-
-    public void previousHeader1() {
-        findPrevious(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading1()), JumpMode.HEADING);
-    }
-
-    public void previousHeader2() {
-        findPrevious(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading2()), JumpMode.HEADING);
-    }
-
-    public void previousHeader3() {
-        findPrevious(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading3()), JumpMode.HEADING);
-    }
-
-    public void previousHeader4() {
-        findPrevious(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading4()), JumpMode.HEADING);
-    }
-
-    public void previousHeader5() {
-        findPrevious(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading5()), JumpMode.HEADING);
-    }
-
-    public void previousHeader6() {
-        findPrevious(Vocabulary.and(Vocabulary.isHeading(), Vocabulary.isHeading6()), JumpMode.HEADING);
-    }
-    
-    public void jumpToAccessKey(final char key) {
-        moveCmd(new Command() {
-            ILocation current;
-            public int run(int r) throws TreeManagerException {
-                startProgress();
-                current = getLocation();
-                return treeManager.findNext(Vocabulary.isAccessKey(key));
-            }
-
-            public void after(int st) throws TreeManagerException {
-                if ((st & ITreeManager.MOVED) == 0) {
-                    moveCmd(new Command() {
-                        public int run(int r) throws TreeManagerException {
-                            treeManager.gotoStartOfPage();
-                            return treeManager.findNext(Vocabulary.isAccessKey(key));
-                        }
-
-                        public void after(int st) throws TreeManagerException {
-                            if ((st & ITreeManager.MOVED) == 0){
-                                treeManager.moveToLocation(current);
-                                afterFind(st, JumpMode.ACCESSKEY, key);
-                            }
-                            else
-                                afterAccessKeyJump(st);
-                            endProgress();
-                        }
-                    });
-                } else {
-                    afterAccessKeyJump(st);
-                    endProgress();
-                }
-            }
-        });
-    }
-
-    private void afterAccessKeyJump(int st) throws TreeManagerException {
-        ITreeItem item = treeManager.getActiveItem();
-
-        boolean isCheckbox = Vocabulary.isCheckbox().eval(item);
-        boolean isRadio = Vocabulary.isRadio().eval(item);
-
-        if (isRadio || isCheckbox) {
-            click();
-            speakActiveItem(true, false, JumpMode.NONE);
-        } else {
-            afterMove(st, "Navigator.BOTTOM", JumpMode.ACCESSKEY);
-        }
-    }
-
-    public void showAccessKeyList() {
-        try {
-            setMode(IManipulator.KEYHOOK_DISABLED_MODE);
-            IAccessKeyList list = treeManager.getAccessKeyList();
-            Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-
-            AccessKeyListDialog dialog = new AccessKeyListDialog(shell, list);
-
-            if (dialog.open() == InputDialog.OK) {
-                char key = dialog.getSelectedKey();
-                if (key != 0)
-                    jumpToAccessKey(key);
-            }
-            setMode(IManipulator.TREE_NAVIGATION_MODE);
-        } catch (TreeManagerException e) {
-            e.printStackTrace();
-        }
-    }
-    
-
-    public void searchNext() {
-        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-        SearchDialog dialog = new SearchDialog(shell);
-        dialog.setForward(true);
-        if (dialog.open() == Window.CANCEL || dialog.getString() == null || dialog.getString().length() == 0)
-            return;
-
-        moveCmd(new FindCommand(dialog.getString(), dialog.isForward(), dialog.isExact()));
-    }
-
-    public void searchPrevious() {
-        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-        SearchDialog dialog = new SearchDialog(shell);
-        dialog.setForward(false);
-        if (dialog.open() == Window.CANCEL || dialog.getString() == null || dialog.getString().length() == 0)
-            return;
-
-        moveCmd(new FindCommand(dialog.getString(), dialog.isForward(), dialog.isExact()));
-    }
-
-    class FindCommand implements Command {
-        private String str;
-
-        private boolean direction;
-
-        private boolean exact;
-
-        FindCommand(String str, boolean direction, boolean exact) {
-            this.str = str;
-            this.direction = direction;
-            this.exact = exact;
-        }
-
-        public int run(int r) throws TreeManagerException {
-            if (direction)
-                return treeManager.findNext(Vocabulary.find(str, exact));
-            else
-                return treeManager.findPrevious(Vocabulary.find(str, exact));
-        }
-
-        public void after(int st) throws TreeManagerException {
-            if (direction)
-                afterMove(st, "Navigator.BOTTOM");
-            else
-                afterMove(st, "Navigator.TOP");
-        }
-    }
-
-    // --------------------------------------------------------------------------------
-    // Table Navigation
-    // --------------------------------------------------------------------------------
-
-    public void cellLeft() {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void cellRight() {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void cellUp() {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void cellDown() {
-        // TODO Auto-generated method stub
-
-    }
-
-    // --------------------------------------------------------------------------------
-    // Speech Speed Control
-    // --------------------------------------------------------------------------------
-
-    private void saySpeechSpeed(int speed) {
-        String mes = getMessageFormatter().mes("Navigator.SPEECHSPEED",
-                                          new Object[] { new Integer(speed) });
-        speakWithFormat(mes, true);
-    }
-
-    public void speechSpeedUp() {
-        int nextSpeed = getVoiceManager().getSpeed() + 10;
-        if (IVoice.SPEED_MAX < nextSpeed) {
-            speakWithFormat("Navigator.SPEECHSPEEDMAX", true);
-        } else {
-            getVoiceManager().setSpeed(nextSpeed);
-            saySpeechSpeed(nextSpeed);
-        }
-    }
-
-    public void speechSpeedDown() {
-        int nextSpeed = getVoiceManager().getSpeed() - 10;
-        if (IVoice.SPEED_MIN > nextSpeed) {
-            speakWithFormat("Navigator.SPEECHSPEEDMIN", true);
-        } else {
-            getVoiceManager().setSpeed(nextSpeed);
-            saySpeechSpeed(nextSpeed);
-        }
-    }
-
-    // --------------------------------------------------------------------------------
-    // Form input mode.
-    // --------------------------------------------------------------------------------
-
-    public void exitFormMode() {
-        setMode(IManipulator.TREE_NAVIGATION_MODE);
-    }
-
-    public void submitForm() {
-        // TODO Auto-generated method stub
-    }
-
-
-    // --------------------------------------------------------------------------------
-    // Location Management
-    // --------------------------------------------------------------------------------
-
-    public ILocation getLocation() {
-        if (treeManager == null)
-            return null;
-        try {
-            return treeManager.getCurrentLocation();
-        } catch (TreeManagerException e) {
-            return null;
-        }
-    }
-
-    private ILocation locationToBeRestored;
-
-    public void restoreLocation(ILocation location) {
-        locationToBeRestored = location;
-    }
-
-    // --------------------------------------------------------------------------------
-    // IMediaControl.IHandle delegation class
-    // --------------------------------------------------------------------------------
-    private class MediaControlHandle implements IMediaControl.IHandle {
-        public ISoundControl getSoundControl() {
-            if (treeManager == null)
-                return null;
-            try {
-                return treeManager.getSoundControl();
-            } catch (TreeManagerException e) {
-                return null;
-            }
-        }
-
-        public IVideoControl getVideoControl() {
-            if (treeManager == null)
-                return null;
-            try {
-                return treeManager.getVideoControl();
-            } catch (TreeManagerException e) {
-                return null;
-            }
-        }
-
-        public IVoice getVoice() {
-            return NavigatorImpl.this.getVoiceManager();
-        }
-
-        public IWebBrowserACTF getWebBrowser() {
-            return webBrowser;
-        }
-    }
-
-    private MediaControlHandle handle = new MediaControlHandle();
-
-    IMediaControl.IHandle getMediaControlHandle() {
-        return handle;
-    }
-
-    public void toggleDescriptionEnable() {
-        int result = MediaControlExtension.toggleEnable();
-        switch (result) {
-        case IMediaControl.TOGGLE_FAIL:
-            speakWithFormat("AudioDescription.noExtension");
-            break;
-        case IMediaControl.STATUS_ON:
-            speakWithFormat("AudioDescription.on");
-            break;
-        case IMediaControl.STATUS_OFF:
-            speakWithFormat("AudioDescription.off");
-            break;
-        case IMediaControl.STATUS_NOT_AVAILABLE:
-            speakWithFormat("AudioDescription.notAvailable");
-            break;
-        }
-    }
-
-    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TODO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-    MovieStartListener listener = null;
-
-    private void initializeMovieStartListener() {
-        IHandle mediaControlHandle = getMediaControlHandle();
-        final IVideoControl video = mediaControlHandle.getVideoControl();
-        if (listener != null) {
-            listener.stop();
-        }
-        listener = new MovieStartListener(video);
-        if (video != null) {
-            video.addEventListener(listener);
-        }
-    }
-
-    class MovieStartListener implements IMediaSyncEventListener {
-        IVideoControl video;
-
-        public MovieStartListener(IVideoControl video) {
-            this.video = video;
-        }
-
-        private boolean stopFlag = false;
-
-        public void stop() {
-            stopFlag = true;
-        }
-
-        public double getInterval() {
-            return 0.1;
-        }
-
-        private boolean topFlag = true;
-
-        public void run() {
-            if (stopFlag)
-                return;
-            double time = video.getCurrentPosition();
-            if (topFlag) {
-                // Heuristic solution.
-                // "stop" operation might locates nearly 0.001?. 0.1 avoids this situnation.
-                // 3.0 is a sentinel for waiting the completion of reloading and analyzing page content.
-                if (0.1 < time && time < 3.0) {
-                    speakWithFormat("Navigator.MOVIE_START");
-                    topFlag = false;
-                }
-            } else {
-                if (time < 0.1) {
-                    topFlag = true;
-                }
-            }
-        }
-    }
-
-    // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TODO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-    public enum FocusTabResult {
-        STAY, CHANGED, NOTFOUND
-    }
-
-    public FocusTabResult focusTab() {
-        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-        IWorkbenchPage page = window.getActivePage();
-        IEditorReference[] erefs = page.getEditorReferences();
-        IEditorPart editor = page.getActiveEditor();
-
-        for (int i = 0; i < erefs.length; i++) {
-            IEditorPart part = erefs[i].getEditor(false);
-            IModelServiceHolder modelServiceHolder = (IModelServiceHolder) part;
-            IWebBrowserACTF wb = (IWebBrowserACTF) modelServiceHolder.getModelService();
-            if (wb == webBrowser) {
-                if (editor != part) {
-                    page.activate(part);
-                    return FocusTabResult.CHANGED;
-                }
-                return FocusTabResult.STAY;
-            }
-        }
-        return FocusTabResult.NOTFOUND;
-    }
-
-    public boolean isFocused() {
-        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-        IWorkbenchPage page = window.getActivePage();
-        IEditorReference[] erefs = page.getEditorReferences();
-        IEditorPart editor = page.getActiveEditor();
-
-        for (int i = 0; i < erefs.length; i++) {
-            IEditorPart part = erefs[i].getEditor(false);
-            IModelServiceHolder modelServiceHolder = (IModelServiceHolder) part;
-            IWebBrowserACTF wb = (IWebBrowserACTF) modelServiceHolder.getModelService();
-            if (wb == webBrowser) {
-                if (editor != part) {
-                    return false;
-                }
-                return true;
-            }
-        }
-        // Should be regarded as an error.
-        System.err.println("Internal Error: WebBrowser:" + webBrowser + " is not managed in the editor");
-        return false;
-    }
-
-    public String getCurrentURL() {
-        return webBrowser.getURL();
-    }
-
-    // ----------------------------------------------------------------
-    // Browser Control 
-    // ----------------------------------------------------------------
-
-    public void enterBrowserAddress() {
-        if (PlatformUIUtil.getActiveEditor() == null) {
-            speakWithFormat("Navigator.THERE_ARE_NO_TAB");
-            return;
-        }
-        
-        webBrowser.setFocusAddressText(true);
-        speakWithFormat("Navigator.ENTERBROWSERADDRESS", false);
-        enterFormInputMode();
-    }
-    
-    public void forceRestart(boolean flush) {
-        selectFennec(false, flush);
-        
-        // TODO
-        MediaControlExtension.doDispose(getMediaControlHandle());
-        MediaControlExtension.start(getMediaControlHandle());
-        initializeMovieStartListener();
-    }
-
-    public void forceRestart() {
-        forceRestart(true);
-    }
-    
-    public void navigateRefresh() {
-        startProgress();
-        String buf = getMessageFormatter().mes("Navigator.REFRESH");
-        speak(buf, true, false);
-        webBrowser.navigateRefresh();
-    }
-
-    public void closeTab() {
-        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-        IWorkbenchPage page = window.getActivePage();
-        IEditorPart editor = page.getActiveEditor();
-
-        if (editor != null && editor instanceof IModelServiceHolder) {
-            ManipulatorExtension.setNavigator(null);
-            page.closeEditor(editor, false);
-        }
-    }
-
-    public void nextTab() {
-        gotoTab(1);
-    }
-
-    public void prevTab() {
-        gotoTab(-1);
-    }
-
-    private void gotoTab(int n) {
-        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-        IWorkbenchPage page = window.getActivePage();
-        IEditorReference[] erefs = page.getEditorReferences();
-        IEditorPart editor = page.getActiveEditor();
-
-        for (int i = 0; i < erefs.length; i++) {
-            if (erefs[i].getEditor(false).equals(editor)) {
-                n += i;
-
-                IEditorPart part;
-                if (n >= erefs.length) {
-                    part = erefs[0].getEditor(false);
-                } else if (n < 0) {
-                    part = erefs[erefs.length - 1].getEditor(false);
-                } else {
-                    part = erefs[n].getEditor(false);
-                }
-                if (part != null) {
-                    page.activate(part);
-                }
-            }
-        }
-        speakTab();
-    }
-
-
-    public void goBackward() {
-        webBrowser.goBackward();
-    }
-
-    public void goForward() {
-        webBrowser.goForward();
-    }
-
-    // It is used by the bridge.
-    public boolean gotoUrl(String url) {
-        webBrowser.navigate(url);
-        return true;
-    }
-    
-    public void launchBrowser() {
-        BrowserLaunch.launch(webBrowser.getURL());
-        String buf = getMessageFormatter().mes("Navigator.LAUNCH_DEFAULT_BROWSER", webBrowser.getURL());
-        speak(buf, true, false);
-    }
-
-    public boolean isLeftViewsShown() {
-        return getNavigatorTreeView().isShown();
-    }
-
-    public void toggleLeftViewsShowing() {
-        boolean result = getNavigatorTreeView().toggleViewShowing();
-        boolean result2 = MediaControlExtension.toggleViewShowing();
-        while (result != result2)
-            result2 = MediaControlExtension.toggleViewShowing();
-
-        if (result)
-            speakWithFormat("Navigator.VIEWS_ARE_OPEND", true);
-        else
-            speakWithFormat("Navigator.VIEWS_ARE_CLOSED", true);
-    }
-    
-    public void exportMetadata() {
-        if (getCurrentEntry() == null) {
-            speakWithFormat("Navigator.NO_ANNOTATION");
-            return;
-        }
-        
-        String[] ext = { "*.fnc" };
-        speakWithFormat("Navigator.EXPORT_ANNOTATION");
-        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-        FileDialog fileDialog = new FileDialog(shell, SWT.OPEN);
-        fileDialog.setFilterExtensions(ext);
-        String path = fileDialog.open();
-
-        if (path != null) {
-            if (!path.endsWith(".fnc")) {
-                path = path+".fnc";
-            }
-            File dest = new File(path);
-            if (dest.exists()) {
-                String title = getMessageFormatter().mes("Navigator.OVERWRITE_CONFIRM");
-                String message = getMessageFormatter().mes("Navigator.OVERWRITE_MESSAGE", dest.getName());
-                boolean ret = MessageDialog.openQuestion(shell, title, message);
-                if (!ret)
-                    return;
-            }
-            if (getCurrentEntry().isUserEntry()) {
-                if (getCurrentEntry().export(dest)) {
-                    speakWithFormat("Navigator.EXPORT_IS_SUCCEEDED");
-                } else {
-                    speakWithFormat("Navigator.EXPORT_IS_FAILED");
-                }
-            }
-        }
-    }
-    
-    public void repairFlash() {
-        startProgress(0);
-        try {
-            treeManager.repairFlash();
-            speakWithFormat("Navigator.REPAIR_FINISHED");
-            restoreLocation(getLocation());
-            selectFennec(false, false, false);
-        } catch (TreeManagerException e) {
-            e.printStackTrace();
-        }
-        endProgress();
-    }
-    
-    // ---------------------------------------------------------------
-    // Web Event
-    // ---------------------------------------------------------------
-    
-    public void speakTitle(String title) {
-        try {
-           speak(title, true, true);
-        } catch (Exception e) {
-        }
-    }
-    
-    public void speakTab() {
-        speakTab(true);
-    }
-
-    public void speakOpenTab() {
-        speakWithFormat(getMessageFormatter().mes("Navigator.NEW_TAB"));
-    }
-
-    public void navigateComplete() {
-        startProgress();
-    }
-
-    public void speakCloseTab(String title) {
-        speak(getMessageFormatter().mes("Navigator.CLOSE_TAB", title), true, true);
-    }
-
-    private long progressTimer = 0;
-
-    private static final int progressInterval = 2000;
-
-    private int prevPercent = -4;
-
-    void beforeNavigation(String uri) {
-        prevPercent = -4;
-    }
-
-    void progressChange(int progress, int progressMax) {
-        if (progressMax == 0)
-            return;
-        if (progress == -1) {
-            progressTimer = 0;
-            return;
-        }
-        long current = System.currentTimeMillis();
-
-        if (current - progressTimer > progressInterval * 5) {
-            prevPercent = -4;
-        }
-
-        if (progressMax < 10000) {
-            progressMax = 1000;
-        }
-        progressMax = (int) Math.pow(10, ((int) Math.log10(progressMax)) + 1);
-
-        int percent = (progress * 100) / progressMax;
-        if (progress * 10 == progressMax) {
-            percent = 100;
-        }
-
-        if ((progressTimer == 0) || ((current - progressTimer) >= progressInterval)) {
-            if (5 < percent && percent < 100) {
-                if (percent - prevPercent >= 5 || (prevPercent - percent > 10)) { // && prevPercent - percent < 50)) {
-                    sayProgress(percent);
-
-                    // System.out.println("Say " + percent);
-                    prevPercent = percent;
-                    progressTimer = current;
-                }
-            }
-        }
-        // System.out.println(progress + " / " + progressMax + ", " + percent + ", " + prevPercent);
-    }
-
-    private void sayProgress(int percent) {
-        if (percent < 0)
-            percent = 0;
-        else if (percent > 100)
-            percent = 100;
-        String mes = getMessageFormatter().mes("Navigator.PROGRESS", new Object[] { new Integer(percent) });
-        speak(mes, true, true);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/NavigatorImplEx.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/NavigatorImplEx.java
deleted file mode 100644
index df132d1..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/NavigatorImplEx.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.fennec.treemanager.TreeManagerException;
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.actf.ai.navigator.IManipulator;
-import org.eclipse.actf.ai.navigator.preferences.UserInfoPreferenceConstants;
-import org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier;
-import org.eclipse.actf.ai.navigator.userinfo.IUserInfoGenerator;
-import org.eclipse.actf.ai.navigator.userinfo.impl.AltInputDialog;
-import org.eclipse.actf.ai.navigator.userinfo.impl.AltTextEditor;
-import org.eclipse.actf.ai.navigator.userinfo.impl.AltTextGuesser;
-import org.eclipse.actf.ai.navigator.userinfo.impl.BrowserObserver;
-import org.eclipse.actf.ai.navigator.userinfo.impl.HeadingCanceller;
-import org.eclipse.actf.ai.navigator.userinfo.impl.LandmarkMaker;
-import org.eclipse.actf.ai.navigator.userinfo.impl.MetaDataModifier;
-import org.eclipse.actf.ai.navigator.util.ContentShortener;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-import org.eclipse.actf.ui.util.PlatformUIUtil;
-import org.eclipse.actf.util.vocab.Vocabulary;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-
-
-public class NavigatorImplEx extends NavigatorImpl {
-    private final IPreferenceStore preferenceStore;
-
-    private final ContentShortener contentShortener;
-
-    private final BrowserObserver observer;
-
-    private IWebBrowserACTF webBrowser;
-
-    public NavigatorImplEx(WebEventListener webEventListener,
-                              IWebBrowserACTF webBrowser,
-                              int maxRetry, int retryInterval) {
-        super(webEventListener, webBrowser, maxRetry, retryInterval);
-
-        this.webBrowser = webBrowser;
-        this.preferenceStore = NavigatorPlugin.getDefault().getPreferenceStore();
-        this.contentShortener = new ContentShortener(32, getMessageFormatter());
-        this.observer = new BrowserObserver(webBrowser);
-    }
-
-    public void saveUserInfo() {
-        if (getCurrentEntry() != null && !getCurrentEntry().isUserEntry()) {
-            speakUnavailableUserInfo();
-            return;
-        }
-        try {
-            IMetaDataModifier modifier = new MetaDataModifier();
-            // modifier.setGenerator(null);
-            modifier.setSite(observer.getTargetFilter());
-            modifier.setPageTitle(PlatformUIUtil.getActiveEditor().getTitle());
-            modifier.commit(true);
-            speakWithFormat("Navigator.ANNOTATION_IS_SAVED", true);
-        } catch (XMLStoreException e) {
-            e.printStackTrace();
-        }
-    }
-
-    public void guessAltText() {
-        if (getCurrentEntry() != null && !getCurrentEntry().isUserEntry()) {
-            speakUnavailableUserInfo();
-            return;
-        }
-        try {
-            ITreeItem item = getTreeManager().getCurrentRootItem();
-            setMode(IManipulator.KEYHOOK_DISABLED_MODE);
-            item.setFocus();
-            int k = guessAltTextIter(item);
-            if (k > 0) {
-                String mes = getMessageFormatter().mes("Navigator.ALT_TEXT_WERE_GUESSED", k);
-                speak(mes, true);
-                if (preferenceStore.getBoolean(UserInfoPreferenceConstants.AUTO_SAVE))
-                    saveUserInfo();
-                if (preferenceStore.getBoolean(UserInfoPreferenceConstants.AUTO_REFRESH))
-                    refresh();
-            }
-            else {
-                speakWithFormat("Navigator.THERE_IS_NO_MISSING_ALT_TEXT", true);
-            }
-            item.setFocus();
-            setMode(IManipulator.TREE_NAVIGATION_MODE);
-        } catch (TreeManagerException e) {
-            e.printStackTrace();
-        } catch (XMLStoreException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private int guessAltTextIter(ITreeItem item) throws XMLStoreException {
-        int k = 0;
-        ITreeItem[] v = item.getChildItems();
-
-        for (int i = 0; i < v.length; i++) {
-            ITreeItem c = v[i];
-            k += guessAltTextIter(c);
-        }
-
-        if (!Vocabulary.isAlterable().eval(item)) {
-            return k;
-        }
-
-        if (isGoodAltText(item.getUIString())) {
-            return k;
-        }
-
-        AltTextGuesser guesser = new AltTextGuesser(webBrowser, item);
-        String newText = guesser.guessByContext();
-
-        if (newText == null || newText.length() == 0) {
-            return k;
-        }
-
-        IMetaDataModifier modifier = new MetaDataModifier();
-        modifier.setGenerator(new AltTextEditor());
-        modifier.setSite(observer.getTargetFilter());
-        modifier.setPageTitle(PlatformUIUtil.getActiveEditor().getTitle());
-        modifier.setItem(item);
-        
-        modifier.setText(getMessageFormatter().mes("Navigator.ANNOTATION_LINK_TO", newText));
-        IUserInfoGenerator.Result result = modifier.commit(false);
-
-        if (result != IUserInfoGenerator.Result.NOTHING)
-            ++k;
-
-        return k;
-    }
-
-    private boolean isGoodAltText(String s) {
-        return s.length() > 0;
-    }
-
-    public void nextAlterable() {
-        if (getCurrentEntry() != null && !getCurrentEntry().isUserEntry()) {
-            speakUnavailableUserInfo();
-            return;
-        }
-        findNext(Vocabulary.isAlterable(), JumpMode.ALTALABLE);
-    }
-
-    public void previousAlterable() {
-        if (getCurrentEntry() != null && !getCurrentEntry().isUserEntry()) {
-            speakUnavailableUserInfo();
-            return;
-        }
-        findPrevious(Vocabulary.isAlterable(), JumpMode.ALTALABLE);
-    }
-
-    public void editAltText() {
-        if (getCurrentEntry() != null && !getCurrentEntry().isUserEntry()) {
-            speakUnavailableUserInfo();
-            return;
-        }
-
-        try {
-//            refresh();
-            ITreeItem item = getTreeManager().getActiveItem();
-            if (item == null)
-                return;
-            if (Vocabulary.isAlterable().eval(item)) {
-                setMode(IManipulator.KEYHOOK_DISABLED_MODE);
-                Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-                // String oldText = item.getUIString();
-                // AltInputDialog dialog = new AltInputDialog(shell, oldText.length() > 0 ? oldText : "(no ALT text)");
-                AltInputDialog dialog = new AltInputDialog(shell, item.getUIString());
-
-                if (dialog.open() == InputDialog.OK) {
-                    String newText = dialog.getResult();
-                    if (newText != null) {
-                        IMetaDataModifier modifier = new MetaDataModifier();
-                        modifier.setGenerator(new AltTextEditor());
-                        modifier.setSite(observer.getTargetFilter());
-                        modifier.setPageTitle(PlatformUIUtil.getActiveEditor().getTitle());
-                        modifier.setItem(item);
-                        modifier.setText(newText);
-                        IUserInfoGenerator.Result result = modifier.commit(preferenceStore
-                                .getBoolean(UserInfoPreferenceConstants.AUTO_SAVE));
-//                        if (result != IUserInfoGenerator.Result.NOTHING) {
-                            if (preferenceStore.getBoolean(UserInfoPreferenceConstants.AUTO_REFRESH))
-                                refresh();
-                            speak(getMessageFormatter().mes(modifier.toString(result),
-                                                       newText),
-                                  true, false);
-//                        }
-                    }
-                }
-
-                setMode(IManipulator.TREE_NAVIGATION_MODE);
-            } else {
-                speakWithFormat("Navigator.ITEM_IS_NOT_AVAILABLE", true);
-            }
-        } catch (TreeManagerException e) {
-            e.printStackTrace();
-        } catch (XMLStoreException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void speakUnavailableUserInfo() {
-        speakWithFormat("Navigator.ANNOTATION_IS_NOT_AVAILABLE", true);
-    }
-
-    public void makeLandmark() {
-        if (getCurrentEntry() != null && !getCurrentEntry().isUserEntry()) {
-            speakUnavailableUserInfo();
-            return;
-        }
-        try {
-            ITreeItem item = getTreeManager().getActiveItem();
-            IMetaDataModifier modifier = new MetaDataModifier();
-            modifier.setGenerator(getHeadingLevelOf(item) > 0 ? new HeadingCanceller() : new LandmarkMaker());
-            //          modifier.setGenerator(Vocabulary.isHeading().eval(item) ? new HeadingCanceller() : new LandmarkMaker());
-            modifier.setSite(observer.getTargetFilter());
-            modifier.setPageTitle(PlatformUIUtil.getActiveEditor().getTitle());
-            modifier.setItem(item);
-            IUserInfoGenerator.Result result = modifier.commit(preferenceStore
-                                                               .getBoolean(UserInfoPreferenceConstants.AUTO_SAVE));
-            if (preferenceStore.getBoolean(UserInfoPreferenceConstants.AUTO_REFRESH))
-                refresh();
-
-            speak(getMessageFormatter().mes(modifier.toString(result),
-                                       contentShortener.getSummary(item, true)),
-                  true, false);
-        } catch (TreeManagerException e) {
-            e.printStackTrace();
-        } catch (XMLStoreException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private short getHeadingLevelOf(ITreeItem item) {
-        short level = 0;
-        for (ITreeItem i = item; i != null; i = i.getParent()) {
-            short k = i.getHeadingLevel();
-            if (k < 0)
-                return k;
-            if (k > 0)
-                level = k;
-        }
-        return level;
-    }
-
-    private void refresh() throws TreeManagerException {
-        selectUserFennec();
-    }
-    
-    public void removeUserInfo() {
-        if (getCurrentEntry() == null) {
-            speakWithFormat("Navigator.NO_ANNOTATION");
-            return;
-        }
-        
-        try {
-            Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-
-            String title = getMessageFormatter().mes("Navigator.USER_INFO_REMOVE_CONFIRM");
-            String message = getMessageFormatter().mes("Navigator.USER_INFO_REMOVE_MESSAGE");
-            boolean ret = MessageDialog.openQuestion(shell, title, message);
-            if (!ret)
-                return;
-            
-            IMetaDataModifier modifier = new MetaDataModifier();
-            modifier.setSite(observer.getTargetFilter());
-            modifier.setPageTitle(PlatformUIUtil.getActiveEditor().getTitle());
-            if (modifier.remove()) {
-                speakWithFormat("Navigator.ANNOTATION_IS_REMOVED", true);
-                forceRestart(false);
-            } else {
-                speakWithFormat("Navigator.NO_ANNOTATION", true);
-            }
-        } catch (XMLStoreException e) {
-            e.printStackTrace();
-        }
-    }
-    
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/SearchDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/SearchDialog.java
deleted file mode 100644
index a7adbf4..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/SearchDialog.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.impl;
-
-import org.eclipse.actf.ai.internal.navigator.Messages;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-
-
-
-public class SearchDialog extends Dialog {
-    private static String formInputString = "";
-
-    private Text searchField;
-    
-    private Button forwardRadio; 
-    
-    private Button backwardRadio; 
-    
-    private Button exactButton;
-    
-    private static boolean isForward = true;
-    
-    private static boolean exact = false;
-    
-    @Override
-    protected void configureShell(Shell newShell) {
-        super.configureShell(newShell);
-
-        newShell.setText(Messages.getString("FormInputDialog.Search"));
-    }
-
-    @Override
-    protected Control createDialogArea(Composite parent) {
-        Composite container = (Composite) super.createDialogArea(parent);
-        GridData gd;
-        searchField = new Text(container, SWT.BORDER);
-        gd = new GridData(GridData.FILL_HORIZONTAL);
-        gd.widthHint = 400;
-        gd.horizontalSpan = ((GridLayout) parent.getLayout()).numColumns;
-        searchField.setLayoutData(gd);
-        searchField.setText(formInputString);
-        searchField.addModifyListener(new ModifyListener() {
-            public void modifyText(ModifyEvent e) {
-                formInputString = searchField.getText();
-            }
-        });
-        
-        backwardRadio = new Button(container, SWT.RADIO);
-        backwardRadio.setSelection(!isForward);
-        backwardRadio.setText(Messages.getString("FormInputDialog.Backward"));
-        backwardRadio.addSelectionListener(new SelectionListener(){
-            public void widgetDefaultSelected(SelectionEvent e) {
-            }
-            public void widgetSelected(SelectionEvent e) {
-                isForward = false;
-            }
-        });
-        
-        forwardRadio = new Button(container, SWT.RADIO);
-        forwardRadio.setText(Messages.getString("FormInputDialog.Forward"));
-        forwardRadio.setSelection(isForward);
-        forwardRadio.addSelectionListener(new SelectionListener(){
-            public void widgetDefaultSelected(SelectionEvent e) {
-            }
-            public void widgetSelected(SelectionEvent e) {
-                isForward = true;
-            }
-        });
-
-        exactButton = new Button(container, SWT.CHECK);
-        exactButton.setSelection(exact);
-        exactButton.setText(Messages.getString("FormInputDialog.Exact"));
-        exactButton.addSelectionListener(new SelectionListener(){
-            public void widgetDefaultSelected(SelectionEvent e) {
-            }
-            public void widgetSelected(SelectionEvent e) {
-                exact = exactButton.getSelection();
-            }
-        });
-        searchField.setFocus();
-        searchField.setSelection(0, formInputString.length());
-        
-        return container;
-    }
-
-    String getString() {
-        return formInputString;
-    }
-    
-    boolean isForward(){
-        return isForward;
-    }
-    
-    boolean isExact(){
-        return exact;
-    }
-
-    SearchDialog(Shell parent) {
-        super(parent);
-    }
-
-    public void setForward(boolean b) {
-        isForward = b;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/TripJournal.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/TripJournal.java
deleted file mode 100644
index fa09c3f..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/TripJournal.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.impl;
-
-import org.eclipse.actf.ai.fennec.treemanager.ILocation;
-import org.eclipse.actf.ai.navigator.impl.NavigatorImpl.FocusTabResult;
-import org.eclipse.actf.ai.navigator.voice.VoiceManager;
-
-
-
-
-class TripJournal {
-    private static final boolean DEBUG = false;
-    private static final int JOURNAL_SIZE = 1024;
-
-    private static final VoiceManager voice = new VoiceManager(null);
-
-    private static class TripJournalItem {
-        final NavigatorImpl navigator;
-        final ILocation location;
-        final String url;
-
-        TripJournalItem(NavigatorImpl navigator,
-                        ILocation location,
-                        String url) {
-            this.navigator = navigator;
-            this.location = location;
-            this.url = url;
-        }
-    }
-
-    private int startIdx = 0;
-    private int endIdx = 0;
-    private int currentIdx = 0;
-    private int recordIdx = 0;
-    private TripJournalItem[] tripJournalItems = new TripJournalItem[JOURNAL_SIZE];
-
-    private boolean backwarding;
-    private boolean forwarding;
-    
-
-    private int incrementIdx(int idx) {
-        idx++;
-        if (idx == tripJournalItems.length) {
-            idx = 0;
-        }
-        return idx;
-    }
-
-    private int decrementIdx(int idx) {
-        if (idx == 0) {
-            idx = tripJournalItems.length;
-        }
-        return --idx;
-    }
-
-    private void recordInPlay(NavigatorImpl navigator,
-                              ILocation location,
-                              String url) {
-        TripJournalItem tjiOld = tripJournalItems[recordIdx];
-        if ((location == null) && (tjiOld != null)) {
-            location = tjiOld.location;
-        }
-        TripJournalItem tji = new TripJournalItem(navigator, location, url);
-        tripJournalItems[recordIdx] = tji;
-    }
-
-    public void recordJournal(NavigatorImpl navigator,
-                              ILocation location,
-                              String url,
-                              boolean init) {
-        if (init) {
-            if (DEBUG) System.err.println("Record-I");
-            currentIdx = incrementIdx(currentIdx);
-            endIdx = currentIdx;
-            tripJournalItems[currentIdx] = new TripJournalItem(navigator, location, url);
-            return;
-        }
-
-        if (!navigator.isFocused()) {
-            if (DEBUG) System.err.println("Not Recorded (out of focus)");
-            return;
-        }
-
-        if (backwarding) {
-            if (DEBUG) System.err.println("Record-B!");
-            recordInPlay(navigator, location, url);
-            backwarding = false;
-        } else if (forwarding) {
-            if (DEBUG) System.err.println("Record-F!");
-            recordInPlay(navigator, location, url);
-            forwarding = false;
-        } else {
-            if (DEBUG) System.err.println("Record!:" + url);
-            TripJournalItem tjiOld = tripJournalItems[currentIdx];
-            if (tjiOld != null) {
-                if (DEBUG) System.err.println("Old-URL:" + tjiOld.url);
-                if (url != null) {
-                    if (url.equals(tjiOld.url)) return;
-                }
-            }
-            TripJournalItem tji = new TripJournalItem(navigator, location, url);
-            tripJournalItems[currentIdx] = tji;
-            currentIdx = incrementIdx(currentIdx);
-            endIdx = currentIdx;
-            if (startIdx == endIdx) {
-                startIdx = incrementIdx(startIdx);
-            }
-        }
-    }
-
-    TripJournal() {
-    }
-
-    // --------------------------------------------------------------------------------
-    //  Browser Control
-    // --------------------------------------------------------------------------------
-
-    private void sayForward() {
-        voice.speakWithFormat("TripJournal.FORWARD", true, false);
-    }
-
-    private void sayForwardFailed() {
-        voice.speakWithFormat("TripJournal.FAILEDTOFORWARD", true, false);
-    }
-
-    public void forward(NavigatorImpl currentNavigartor) {
-        //if (backwarding || forwarding) return;
-        recordIdx = currentIdx;
-        int idxFwd = currentIdx;
-        for (;;) {
-            if (idxFwd == endIdx) {
-                sayForwardFailed();
-                return;
-            }
-            idxFwd = incrementIdx(idxFwd);
-            TripJournalItem tji = tripJournalItems[idxFwd];
-            if (tji == null) {
-                // This must not happen, but navigateComplete failed to record a trip log
-                // and the entry may be possibly missing.  So try to emulate the forwarding.
-                forwarding = true;
-                currentIdx = idxFwd;
-                currentNavigartor.goForward();
-                currentNavigartor.restoreLocation(null);
-                return;
-            }
-            switch (tji.navigator.focusTab()) {
-            case STAY:
-                // Notice that it will invoke recordJournal method;
-                forwarding = true;
-                currentIdx = idxFwd;
-                tji.navigator.goForward();
-                tji.navigator.restoreLocation(tji.location);
-                sayForward();
-                return;
-            case CHANGED:
-                currentIdx = idxFwd;
-                sayForward();
-                return;
-            case NOTFOUND:
-                break;
-            }
-        }
-    }
-
-    private void sayBackward() {
-        voice.speakWithFormat("TripJournal.BACKWARD", true, false);
-    }
-
-    private void sayBackwardFailed() {
-        voice.speakWithFormat("TripJournal.FAILEDTOBACKWARD", true, false);
-    }
-
-    public void backward(NavigatorImpl currentNavigator) {
-        //if (backwarding || forwarding) return;
-        recordIdx = currentIdx;
-        int idxBack = currentIdx;
-        if (DEBUG) System.err.println("back:" + currentIdx);
-        for (;;) {
-            if (idxBack == startIdx) {
-                sayBackwardFailed();
-                return;
-            }
-            idxBack = decrementIdx(idxBack);
-            TripJournalItem tji = tripJournalItems[idxBack];
-            if (tji == null) {
-                // Since the item was not recorded, focus the previous item.
-                if (idxBack == startIdx) {
-                    sayBackwardFailed();
-                    return;
-                }
-                currentIdx = idxBack;
-                idxBack = decrementIdx(idxBack);
-                tji = tripJournalItems[idxBack];
-                if (tji != null) {
-                    tji.navigator.focusTab();
-                }
-                sayBackward();
-                return;
-            }
-            switch (tji.navigator.focusTab()) {
-            case STAY:
-                // Notice that it will invoke recordJournal method;
-                backwarding = true;
-                currentIdx = idxBack;
-                tji.navigator.goBackward();
-                tji.navigator.restoreLocation(tji.location);
-                sayBackward();
-                return;
-            case CHANGED:
-                if (currentNavigator == null) {
-                    endIdx = idxBack;
-                } else {
-                    ILocation location = currentNavigator.getLocation();
-                    int idx = incrementIdx(idxBack);
-                    tripJournalItems[idx] = new TripJournalItem(currentNavigator,
-                                                                location,
-                                                                currentNavigator.getCurrentURL());
-                } 
-                currentIdx = idxBack;
-                sayBackward();
-                return;
-            case NOTFOUND:
-                break;
-            }
-        }
-    }
-
-    public void tripEnd() {
-        forwarding = false;
-        backwarding = false;
-    }
-
-    public void refreshEnd() {
-        TripJournalItem tji = tripJournalItems[currentIdx];
-        if (tji == null) return;
-        if (tji.navigator.focusTab() == FocusTabResult.STAY) {
-            tji.navigator.restoreLocation(tji.location);
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/WebEventListener.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/WebEventListener.java
deleted file mode 100644
index b5f9057..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/impl/WebEventListener.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.impl;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.HashMap;
-
-import org.eclipse.actf.ai.fennec.FennecMediatorFactory;
-import org.eclipse.actf.ai.fennec.IFennecMediator;
-import org.eclipse.actf.ai.fennec.treemanager.ILocation;
-import org.eclipse.actf.ai.navigator.broker.RequestBroker;
-import org.eclipse.actf.ai.navigator.extension.ManipulatorExtension;
-import org.eclipse.actf.ai.navigator.extension.MediaControlExtension;
-import org.eclipse.actf.ai.navigator.extension.ScreenReaderExtension;
-import org.eclipse.actf.model.ui.IModelServiceHolder;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTFEventListener;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF.WebBrowserNavigationEventListnerHolder;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-
-public class WebEventListener implements IWebBrowserACTFEventListener {
-
-	private static final String ABOUT_BLANK_URL = "about:blank";
-
-	// --------------------------------------------------------------------------------
-	// Browser State: It keeps the state of the browser by receiving Web Browser
-	// Events. In overall, we should encapsulate the stateful information around
-	// the browser
-	// into this class.
-	// --------------------------------------------------------------------------------
-	public class BrowserState {
-		public static final int STATE_NONE = -1;
-
-		public static final int STATE_UNINIT = 0;
-
-		public static final int STATE_PROGRESS = 1;
-
-		public static final int STATE_NAVIGATECOMPLETED = 3;
-
-		public static final int STATE_STARTED = 10;
-
-		boolean shouldRecord;
-		boolean initFlag;
-		ILocation savedLocation;
-		ILocation savedLocationForMyRefresh;
-
-		NavigatorImpl navigator;
-
-		public NavigatorImpl getNavigator() {
-			return navigator;
-		}
-
-		int state;
-
-		public int getState() {
-			return state;
-		}
-
-		void resetState() {
-			this.state = STATE_UNINIT;
-		}
-
-		void setNoState() {
-			this.state = STATE_NONE;
-		}
-
-		void forwardState(int newst) {
-			if (this.state < newst)
-				this.state = newst;
-		}
-
-		BrowserState(IWebBrowserACTF webBrowser) {
-			this.navigator = new NavigatorImplEx(WebEventListener.this,
-					webBrowser, 30, 1000);
-			this.state = STATE_NONE;
-		}
-	}
-
-	private HashMap<IWebBrowserACTF, BrowserState> browserStateMap;
-
-	private RequestBroker requestBroker;
-
-	private final TripJournal tripJournal;
-
-	private final BrowserControlImpl browserControl;
-
-	public WebEventListener() {
-		this.browserStateMap = new HashMap<IWebBrowserACTF, BrowserState>();
-		this.tripJournal = new TripJournal();
-		this.browserControl = new BrowserControlImpl(this, this.tripJournal);
-		WebBrowserNavigationEventListnerHolder.LISTENER = this.browserControl;
-		ManipulatorExtension.setBrowserControl(this.browserControl);
-
-		requestBroker = new RequestBroker(this);
-	}
-
-	public synchronized BrowserState getBrowserState(IWebBrowserACTF webBrowser) {
-		BrowserState bs = browserStateMap.get(webBrowser);
-		if (bs == null) {
-			bs = new BrowserState(webBrowser);
-			browserStateMap.put(webBrowser, bs);
-		}
-		return bs;
-	}
-
-	public void forceRestart(IWebBrowserACTF webBrowser) {
-		startNavigation(webBrowser, false);
-	}
-
-	public NavigatorImpl getFocused() {
-		IWorkbenchWindow window = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow();
-		IWorkbenchPage page = window.getActivePage();
-		IEditorPart editor = page.getActiveEditor();
-
-		if (editor == null)
-			return null;
-		IModelServiceHolder modelServiceHolder = (IModelServiceHolder) editor;
-		IWebBrowserACTF wb = (IWebBrowserACTF) modelServiceHolder
-				.getModelService();
-		BrowserState bs = browserStateMap.get(wb);
-		if (bs == null)
-			return null;
-
-		return bs.getNavigator();
-	}
-
-	// --------------------------------------------------------------------------------
-	// Event Handlers
-	// --------------------------------------------------------------------------------
-
-	private static final boolean EVENT_DEBUG = false;
-
-	private void startNavigation(IWebBrowserACTF webBrowser) {
-		startNavigation(webBrowser, false);
-	}
-
-	private void startNavigation(IWebBrowserACTF webBrowser, boolean isRefresh) {
-		tripJournal.tripEnd();
-		BrowserState bs = getBrowserState(webBrowser);
-		if (bs.state >= BrowserState.STATE_STARTED)
-			return;
-
-		if (EVENT_DEBUG)
-			System.err.println(webBrowser.getURL() + ", isRefresh=" + isRefresh
-					+ ", " + webBrowser);
-
-		if (bs.state == BrowserState.STATE_STARTED) {
-			MediaControlExtension.doDispose(bs.navigator
-					.getMediaControlHandle());
-		}
-		MediaControlExtension.start(bs.navigator.getMediaControlHandle());
-
-		IFennecMediator mediator = FennecMediatorFactory
-				.newFennecMediator(webBrowser);
-		bs.navigator.setFennecMediator(mediator);
-		bs.navigator.startNavigation(webBrowser, !isRefresh);
-		requestBroker.setNavigator(bs.navigator, webBrowser);
-
-		bs.forwardState(BrowserState.STATE_STARTED);
-		requestBroker.newPageReady();
-	}
-
-	private static final String FILE_SCHEME_SUFFIX = "file:///";
-
-	private String unifyURLFileScheme(String url) {
-		if (url.startsWith(FILE_SCHEME_SUFFIX)) {
-			url = url.substring(FILE_SCHEME_SUFFIX.length());
-			try {
-				url = URLDecoder.decode(url, "UTF-8");
-			} catch (UnsupportedEncodingException e) {
-				e.printStackTrace();
-			}
-			return url.replace('/', '\\');
-		}
-		return url;
-	}
-
-	private boolean urlEquals(String url1, String url2) {
-		if ((url1 == null) || (url2 == null))
-			return false;
-		return unifyURLFileScheme(url1).equals(unifyURLFileScheme(url2));
-	}
-
-	public void navigateComplete(IWebBrowserACTF webBrowser, String url) {
-		if (EVENT_DEBUG)
-			System.out.println("navigateComplete " + url + ", "
-					+ webBrowser.getURL() + " | " + webBrowser);
-
-		if (!urlEquals(url, webBrowser.getURL()))
-			return;
-
-		BrowserState bs = getBrowserState(webBrowser);
-		if ((bs.shouldRecord)
-				&& (bs.state < BrowserState.STATE_NAVIGATECOMPLETED)) {
-			tripJournal.recordJournal(bs.navigator, bs.savedLocation,
-					webBrowser.getURL(), bs.initFlag);
-		}
-		bs.forwardState(BrowserState.STATE_NAVIGATECOMPLETED);
-		bs.navigator.navigateComplete();
-	}
-
-	public void titleChange(IWebBrowserACTF webBrowser, String title) {
-		if (EVENT_DEBUG)
-			System.out.println("titleChange " + title + ", " + webBrowser);
-
-		IWorkbenchWindow window = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow();
-		IWorkbenchPage page = window.getActivePage();
-
-		IEditorPart editor = page.getActiveEditor();
-		if (editor instanceof IModelServiceHolder) {
-			if (webBrowser != ((IModelServiceHolder) editor).getModelService()) {
-				return;
-			}
-		}
-
-		setWindowTitle(title);
-	}
-
-	public void dispose() {
-	}
-
-	public void progressChange(IWebBrowserACTF webBrowser, int progress,
-			int progressMax) {
-		if (EVENT_DEBUG)
-			System.out.println("progressChange progress=" + progress
-					+ ", progressMax=" + progressMax + ", " + webBrowser);
-		BrowserState bs = getBrowserState(webBrowser);
-		bs.forwardState(BrowserState.STATE_PROGRESS);
-		bs.navigator.progressChange(progress, progressMax);
-	}
-
-	public void rootDocumentComplete(IWebBrowserACTF webBrowser) {
-		if (EVENT_DEBUG)
-			System.out.println("myDocumentComplete " + webBrowser);
-		BrowserState bs = getBrowserState(webBrowser);
-
-		if (!(ABOUT_BLANK_URL.equals(webBrowser.getURL()))) {
-			bs.navigator.speakTab(false);
-			startNavigation(webBrowser);
-		} else {
-			bs.setNoState();
-		}
-	}
-
-	public void getFocus(IWebBrowserACTF webBrowser) {
-		if (EVENT_DEBUG)
-			System.out.println("focusChange " + webBrowser);
-		BrowserState bs = getBrowserState(webBrowser);
-		ManipulatorExtension.setNavigator(bs.navigator);
-		requestBroker.setNavigator(bs.navigator, webBrowser);
-		MediaControlExtension.start(bs.navigator.getMediaControlHandle());
-		setWindowTitle();
-	}
-
-	private void setWindowTitle(String title) {
-		String productName = Platform.getProduct().getName();
-		PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()
-				.setText(title + " - " + productName);
-	}
-
-	private void setWindowTitle() {
-		IWorkbenchWindow window = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow();
-		IWorkbenchPage page = window.getActivePage();
-		String title = page.getActiveEditor().getTitle();
-		setWindowTitle(title);
-	}
-
-	public void beforeNavigate(IWebBrowserACTF webBrowser, String url,
-			String targetFrameName, boolean isInNavigation) {
-		if (EVENT_DEBUG)
-			System.out.println("beforeNavigate " + url + ", " + targetFrameName
-					+ ", isInNavigation=" + isInNavigation);
-		BrowserState bs = getBrowserState(webBrowser);
-		// if (isInNavigation) {
-		if (!url.startsWith("javascript")) {
-			if (!(ABOUT_BLANK_URL.equals(url))) {
-				if (bs.state == BrowserState.STATE_NONE) {
-					bs.initFlag = true;
-				} else {
-					bs.initFlag = false;
-				}
-				bs.shouldRecord = true;
-				bs.savedLocation = bs.navigator.getLocation();
-			} else {
-				bs.shouldRecord = false;
-			}
-			bs.resetState();
-			bs.navigator.beforeNavigation(webBrowser.getURL());
-		} else {
-			bs.shouldRecord = false;
-		}
-		ScreenReaderExtension.takeBackControl(webBrowser);
-	}
-
-	public void browserDisposed(IWebBrowserACTF webBrowser, String title) {
-		if (EVENT_DEBUG)
-			System.out.println("browserDisposed " + title);
-		BrowserState bs = getBrowserState(webBrowser);
-		bs.navigator.speakCloseTab(title);
-
-		IWorkbenchWindow window = PlatformUI.getWorkbench()
-				.getActiveWorkbenchWindow();
-		IWorkbenchPage page = window.getActivePage();
-		if ((page == null) || (page.getActiveEditor() == null)) {
-			setWindowTitle("No Tab");
-		}
-	}
-
-	public void refreshStart(IWebBrowserACTF webBrowser) {
-		if (EVENT_DEBUG)
-			System.out.println("myRefresh " + webBrowser);
-		BrowserState bs = getBrowserState(webBrowser);
-		bs.resetState();
-		bs.savedLocationForMyRefresh = bs.navigator.getLocation();
-		bs.navigator.beforeNavigation(webBrowser.getURL());
-	}
-
-	public void refreshComplete(IWebBrowserACTF webBrowser) {
-		if (EVENT_DEBUG)
-			System.out.println("Refresh Complete " + webBrowser);
-		BrowserState bs = getBrowserState(webBrowser);
-		bs.navigator.restoreLocation(bs.savedLocationForMyRefresh);
-		startNavigation(webBrowser, true);
-	}
-
-	public void navigateStop(IWebBrowserACTF webBrowser) {
-		if (EVENT_DEBUG)
-			System.out.println("navigateStop " + webBrowser);
-	}
-
-	public void focusGainedOfAddressText(IWebBrowserACTF webBrowser) {
-		if (EVENT_DEBUG)
-			System.out.println("focusGainedOfAddressText " + webBrowser);
-		BrowserState bs = getBrowserState(webBrowser);
-		bs.navigator.enterBrowserAddress();
-	}
-
-	public void focusLostOfAddressText(IWebBrowserACTF webBrowser) {
-		if (EVENT_DEBUG)
-			System.out.println("focusLostOfAddressText " + webBrowser);
-		BrowserState bs = getBrowserState(webBrowser);
-		bs.navigator.exitFormMode();
-	}
-
-	public void newWindow(IWebBrowserACTF webBrowser) {
-		if (EVENT_DEBUG)
-			System.out.println("newWindow " + webBrowser);
-		BrowserState bs = getBrowserState(webBrowser);
-		bs.navigator.speakOpenTab();
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/message/Speech.properties b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/message/Speech.properties
deleted file mode 100644
index b1f862d..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/message/Speech.properties
+++ /dev/null
@@ -1,179 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Hisashi MIYASHITA, Daisuke SATO - initial configuration.
-###############################################################################
-
-Navigator.LINK=Link
-Navigator.VISITED_LINK=Visited link
-Navigator.HEADING=Heading
-Navigator.LIST_TOP=List of {0} items
-Navigator.BUTTON=Button
-Navigator.TEXTBOX=Edit
-Navigator.TEXTAREA=Multiline edit contains text
-Navigator.TEXTAREA_EMPTY=Multiline edit
-Navigator.PASSWORD=password edit
-Navigator.FILE_UPLOAD=File upload edit
-Navigator.CHECKED=Checked
-Navigator.NOT_CHECKED=Not checked
-Navigator.CHECKBOX=Check box
-Navigator.RADIO=Radio button
-Navigator.COMBO_BOX=Combo box
-Navigator.COMBO_BOX_NOSELECTION=no selection
-
-Navigator.MEDIA=Multimedia
-
-Navigator.PASSWORD_STAR3=star star star
-Navigator.WRAPPING_TO_TOP=wrapping to top
-Navigator.WRAPPING_TO_BOTTOM=wrapping to top
-
-Navigator.NO_HEADING=No heading
-Navigator.NO_LISTITEM=No list item
-Navigator.NO_LINK=No link
-Navigator.NO_INPUT=No input
-Navigator.NO_BLOCK=No block
-Navigator.NO_OBJECT=No object
-Navigator.NO_SELECTION=No selection
-Navigator.NO_ACCESSKEY=No access key {0}
-Navigator.NO_ALTALABLE=No item needs alt text
-Navigator.NO_MEDIA=No multimedia object
-
-Navigator.MSAA_FLASH_CONTENT=Flash Content
-Navigator.FLASH_CONTENT=Windowless Flash Content
-Navigator.FLASH_END=Flash Content End
-
-Navigator.VIEWS_ARE_OPEND=Tree view is opend
-Navigator.VIEWS_ARE_CLOSED=Tree view is closed
-
-Navigator.LAUNCH_DEFAULT_BROWSER=Launch Default Browser. {0}
-Navigator.CLOSE_TAB={0} is closed.
-Navigator.NEW_TAB=New tab is opend.
-Navigator.MOVE_TAB={0} {1} of {2} tabs
-
-Navigator.ACCESSKEY_GUIDE=Access key is Alt Shift {0}
-
-Navigator.REFRESH=Refresh Page
-
-Navigator.PROGRESS=Loading {0} percent.
-Navigator.STARTNAVIGATION=Page is loaded.
-Navigator.FENNEC_NAME=Fennec {0} is used.
-Navigator.SUBITEMS={0} sub-items
-Navigator.N_OF_M={0} of {1}
-Navigator.NO_SUBITEMS=No sub-items
-Navigator.NO_CONTROLS=No controls
-Navigator.NOT_AVAILABLE={0} is not available
-Navigator.TOP=Top item
-Navigator.BOTTOM=Last item
-Navigator.INPUTABLE=Inputable
-Navigator.LEVEL=Level {0}
-Navigator.TOP_LEVEL=Level zero
-Navigator.CLICK=Click
-Navigator.PLAY_TIME=Play time {0}
-Navigator.HH_MM_SS={2} hour {1} minutes {0} seconds
-Navigator.MM_SS={1} minutes {0} seconds
-Navigator.SS={0} seconds
-Navigator.KEYBOARD_ON=Keyboard navigation start
-Navigator.KEYBOARD_OFF=Keyboard navigation end
-Navigator.NOT_TABLE=Not in the table
-Navigator.UNDONE=work in progress
-Navigator.SPEECHSPEED=speech speed is {0}
-Navigator.SPEECHSPEEDMAX=speech speed is max
-Navigator.SPEECHSPEEDMIN=speech speed is min
-Navigator.NO_OTHER_FENNEC=Fennec meta data is not available
-Navigator.NO_FENNEC=
-Navigator.ENTERBROWSERADDRESS=Enter URI
-
-Navigator.NO_FENNEC_MESSAGE=No Fennec
-Navigator.NO_FENNEC_NAME=Anonymous
-
-Navigator.STOPMEDIA=stop
-Navigator.PLAYMEDIA=play
-Navigator.PAUSEMEDIA=pause
-Navigator.RESUMEMEDIA=resume
-Navigator.WAITINGMEDIA=waiting for media
-Navigator.FASTFORWARDMEDIA=fast forward
-Navigator.FASTREVERSEMEDIA=fast reverse
-Navigator.VOLUMEUP=volume up
-Navigator.VOLUMEDOWN=volume down
-Navigator.VOLUMEMAX=maximum volume
-Navigator.VOLUMEMIN=minimum volume
-Navigator.MUTEON=mute
-Navigator.MUTEOFF=mute off
-Navigator.CANNOT_PAUSE=can not pause
-Navigator.MOVIE_START=movie start
-
-Navigator.NOT_AVAILABEL=not available
-
-Navigator.NOVIDEO=No video
-Navigator.SINGLEVIDEO=one video
-Navigator.VIDEOCOUNT={0} videos
-Navigator.NOSOUND=No sound
-Navigator.SINGLESOUND=one sound
-Navigator.SOUNDCOUNT={0} sound
-Navigator.VIDEOINDEX={0} of {1} videos
-
-Navigator.VIDEO_AT=at {0}
-Navigator.VIDEO_TOTAL=Total length is {0}
-
-Fennec.EMPTY_PAGE=The page is empty.
-
-ContentShortener.VerbalForm={0} bla bla bla
-ContentShortener.NonVerbalForm={0} ...
-
-LandmarkMaker.Result.CREATED=a landmark was added here : {0}
-LandmarkMaker.Result.REMOVED=the heading now gets effective : {0}
-LandmarkMaker.Result.ERROR=Failed to set a landmark here : {0} 
-LandmarkMaker.Result.NOTHING=a landmark is already added here : {0}
-
-HeadingCanceller.Result.CREATED=the heading was turned off : {0}
-HeadingCanceller.Result.REMOVED=the landmark was removed : {0}
-HeadingCanceller.Result.ERROR=Failed to remove the heading : {0}
-HeadingCanceller.Result.NOTHING=the heading is already turned off : {0}
-
-AltTextEditor.Result.CREATED=an alt text was added here : {0}
-AltTextEditor.Result.REMOVED=the alt text was removed
-AltTextEditor.Result.CHANGED=the alt text was edited : {0}
-AltTextEditor.Result.ERROR=Failed to edit the alt text
-
-AudioDescription.on=Audio Description is on
-AudioDescription.off=Audio Description is off
-AudioDescription.available=Audio Description is available
-AudioDescription.notAvailable=No Audio Description
-AudioDescription.noExtension=No Audio Description Extension
-
-Navigator.ANNOTATION_IS_NOT_AVAILABLE=Annotation function is not available
-Navigator.ANNOTATION_IS_SAVED=Annotation is saved
-Navigator.ALT_TEXT_WERE_GUESSED={0} ALT text were guessed
-Navigator.THERE_IS_NO_MISSING_ALT_TEXT=There is no missing ALT text
-Navigator.ANNOTATION_LINK_TO=Link to {0}
-Navigator.ITEM_IS_NOT_AVAILABLE=This item is not alterable
-Navigator.ANNOTATION_IS_REMOVED=All annotations are removed
-Navigator.NO_ANNOTATION=There is no annotation
-
-Navigator.USER_INFO_REMOVE_CONFIRM=Remove All User Annotation
-Navigator.USER_INFO_REMOVE_MESSAGE=Will you remove all user annotation from this page?
-
-Navigator.THERE_ARE_NO_TAB=There are no tabs, please use Control O.
-
-TripJournal.FORWARD=Forward
-TripJournal.FAILEDTOFORWARD=Cannot forward the page.
-TripJournal.BACKWARD=Backward
-TripJournal.FAILEDTOBACKWARD=Cannot backward the page.
-
-Navigator.EXPORT_ANNOTATION=Export annotations of current page.
-Navigator.EXPORT_ALL_ANNOTATIONS=Export all your annotations.
-Navigator.IMPORT_FENNEC_FILE=Import annotation file.
-Navigator.EXPORT_IS_SUCCEEDED=Export is succeeded.
-Navigator.EXPORT_IS_FAILED=Export is failed.
-Navigator.IMPORT_IS_SUCCEEDED=Import is succeeded.
-Navigator.IMPORT_IS_FAILED=Import is failed.
-Navigator.OVERWRITE_CONFIRM=Exporting...
-Navigator.OVERWRITE_MESSAGE={0} already exists. Do you want to replace it?
-
-Navigator.REPAIR_START=Execute Flash repair.
-Navigator.REPAIR_FINISHED=Flash Repair is finished.
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/message/Speech_ja.properties b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/message/Speech_ja.properties
deleted file mode 100644
index c6d526c..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/message/Speech_ja.properties
+++ /dev/null
@@ -1,179 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Hisashi MIYASHITA, Daisuke SATO - initial configuration.
-###############################################################################
-
-Navigator.LINK=\u30ea\u30f3\u30af
-Navigator.VISITED_LINK=\u65e2\u8aad\u30ea\u30f3\u30af
-Navigator.HEADING=\u898b\u51fa\u3057
-Navigator.LIST_TOP={0}\u9805\u76ee\u306e\u30ea\u30b9\u30c8
-Navigator.BUTTON=\u30dc\u30bf\u30f3
-Navigator.TEXTBOX=\u30c6\u30ad\u30b9\u30c8\u5165\u529b
-Navigator.TEXTAREA=\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u30c6\u30ad\u30b9\u30c8\u6709\u308a
-Navigator.TEXTAREA_EMPTY=\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2
-Navigator.PASSWORD=\u30d1\u30b9\u30ef\u30fc\u30c9\u5165\u529b\u30dc\u30c3\u30af\u30b9
-Navigator.FILE_UPLOAD=\u30d5\u30a1\u30a4\u30eb\u9078\u629e
-Navigator.CHECKED=\u30c1\u30a7\u30c3\u30af\u6709\u308a
-Navigator.NOT_CHECKED=\u30c1\u30a7\u30c3\u30af\u7121\u3057
-Navigator.CHECKBOX=\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9
-Navigator.RADIO=\u30e9\u30b8\u30aa\u30dc\u30bf\u30f3
-Navigator.COMBO_BOX=\u30b3\u30f3\u30dc\u30dc\u30c3\u30af\u30b9
-Navigator.COMBO_BOX_NOSELECTION=\u9078\u629e\u3055\u308c\u3066\u3044\u308b\u9805\u76ee\u306f\u3042\u308a\u307e\u305b\u3093
-
-Navigator.MEDIA=\u30de\u30eb\u30c1\u30e1\u30c7\u30a3\u30a2
-
-Navigator.PASSWORD_STAR3=\u30b9\u30bf\u30fc\u30b9\u30bf\u30fc\u30b9\u30bf\u30fc
-Navigator.WRAPPING_TO_TOP=\u5148\u982d\u306b\u623b\u3063\u3066
-Navigator.WRAPPING_TO_BOTTOM=\u6700\u5f8c\u306b\u623b\u3063\u3066
-
-Navigator.NO_HEADING=\u898b\u51fa\u3057\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.NO_LISTITEM=\u30ea\u30b9\u30c8\u9805\u76ee\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.NO_LINK=\u30ea\u30f3\u30af\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.NO_INPUT=\u30d5\u30a9\u30fc\u30e0\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.NO_BLOCK=\u30d6\u30ed\u30c3\u30af\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.NO_OBJECT=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.NO_SELECTION=\u9078\u629e\u9805\u76ee\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.NO_ACCESSKEY=\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.NO_ALTALABLE=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u304c\u5fc5\u8981\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.NO_MEDIA=\u30de\u30eb\u30c1\u30e1\u30c7\u30a3\u30a2\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3042\u308a\u307e\u305b\u3093
-
-Navigator.MSAA_FLASH_CONTENT=\u30d5\u30e9\u30c3\u30b7\u30e5\u30b3\u30f3\u30c6\u30f3\u30c4
-Navigator.FLASH_CONTENT=\u30a6\u30a3\u30f3\u30c9\u30a6\u30ec\u30b9\u30d5\u30e9\u30c3\u30b7\u30e5\u30b3\u30f3\u30c6\u30f3\u30c4
-Navigator.FLASH_END=\u30d5\u30e9\u30c3\u30b7\u30e5\u30b3\u30f3\u30c6\u30f3\u30c4\u7d42\u308f\u308a
-
-Navigator.VIEWS_ARE_OPEND=\u30c4\u30ea\u30fc\u30d3\u30e5\u30fc\u304c\u958b\u3044\u3066\u3044\u307e\u3059
-Navigator.VIEWS_ARE_CLOSED=\u30c4\u30ea\u30fc\u30d3\u30e5\u30fc\u306f\u9589\u3058\u3066\u3044\u307e\u3059
-
-Navigator.LAUNCH_DEFAULT_BROWSER=\u901a\u5e38\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u958b\u304d\u307e\u3059. {0}
-Navigator.CLOSE_TAB=\u30bf\u30d6\u3092\u9589\u3058\u307e\u3057\u305f {0}
-Navigator.NEW_TAB=\u65b0\u3057\u3044\u30bf\u30d6\u304c\u958b\u304d\u307e\u3057\u305f
-Navigator.MOVE_TAB={0} \u30bf\u30d6\u306e{1}\u500b\u4e2d{2}\u500b\u76ee
-
-Navigator.ACCESSKEY_GUIDE=\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306f\u30aa\u30eb\u30c8 \u30b7\u30d5\u30c8 {0}
-
-Navigator.REFRESH=\u6700\u65b0\u306e\u60c5\u5831\u306b\u66f4\u65b0
-
-Navigator.PROGRESS=\u30ed\u30fc\u30c9\u4e2d
-Navigator.STARTNAVIGATION=\u30ed\u30fc\u30c9\u5b8c\u4e86
-Navigator.FENNEC_NAME=\u5916\u90e8\u60c5\u5831 {0} \u3092\u9069\u7528\u3057\u307e\u3059
-Navigator.SUBITEMS={0}\u500b\u306e\u30b5\u30d6\u30a2\u30a4\u30c6\u30e0\u304c\u3042\u308a\u307e\u3059
-Navigator.N_OF_M={1}\u500b\u4e2d{0}\u500b\u76ee
-Navigator.NO_SUBITEMS=\u30b5\u30d6\u30a2\u30a4\u30c6\u30e0\u304c\u3042\u308a\u307e\u305b\u3093
-Navigator.NO_CONTROLS=\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u304c\u3042\u308a\u307e\u305b\u3093
-Navigator.NOT_AVAILABLE={0}\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093
-Navigator.TOP=\u5148\u982d\u3067\u3059
-Navigator.BOTTOM=\u6700\u5f8c\u3067\u3059
-Navigator.INPUTABLE=\u5165\u529b\u53ef\u80fd
-Navigator.LEVEL=\u30ec\u30d9\u30eb{0}
-Navigator.TOP_LEVEL=\u30ec\u30d9\u30eb0
-Navigator.CLICK=\u30af\u30ea\u30c3\u30af
-Navigator.PLAY_TIME=\u518d\u751f\u6642\u9593 {0}
-Navigator.HH_MM_SS={2}\u6642\u9593 {1}\u5206 {0}\u79d2
-Navigator.MM_SS={1}\u5206 {0}\u79d2
-Navigator.SS={0}\u79d2
-Navigator.KEYBOARD_ON=\u30ad\u30fc\u30dc\u30fc\u30c9\u4f7f\u7528\u958b\u59cb
-Navigator.KEYBOARD_OFF=\u30ad\u30fc\u30dc\u30fc\u30c9\u4f7f\u7528\u7d42\u4e86
-Navigator.NOT_TABLE=\u30c6\u30fc\u30d6\u30eb\u306e\u5916\u3067\u3059
-Navigator.UNDONE=\u51e6\u7406\u4e2d\u3067\u3059
-Navigator.SPEECHSPEED=\u30b9\u30d4\u30fc\u30c9{0}
-Navigator.SPEECHSPEEDMAX=\u6700\u9ad8\u30b9\u30d4\u30fc\u30c9\u3067\u3059
-Navigator.SPEECHSPEEDMIN=\u6700\u4f4e\u30b9\u30d4\u30fc\u30c9\u3067\u3059
-Navigator.NO_OTHER_FENNEC=\u5916\u90e8\u60c5\u5831\u3092\u5207\u308a\u66ff\u3048\u3089\u308c\u307e\u305b\u3093
-Navigator.NO_FENNEC=\u9069\u7528\u53ef\u80fd\u306a\u5916\u90e8\u60c5\u5831\u304c\u3042\u308a\u307e\u305b\u3093
-Navigator.ENTERBROWSERADDRESS=URI\u5165\u529b
-
-Navigator.NO_FENNEC_MESSAGE=Fennec\u7121\u52b9
-Navigator.NO_FENNEC_NAME=\u7121\u540d
-
-Navigator.STOPMEDIA=\u505c\u6b62
-Navigator.PLAYMEDIA=\u518d\u751f
-Navigator.PAUSEMEDIA=\u4e2d\u65ad
-Navigator.RESUMEMEDIA=\u518d\u958b
-Navigator.WAITINGMEDIA=\u5f85\u6a5f\u4e2d
-Navigator.FASTFORWARDMEDIA=\u65e9\u9001\u308a
-Navigator.FASTREVERSEMEDIA=\u5dfb\u304d\u623b\u3057
-Navigator.VOLUMEUP=\u97f3\u91cf\u5927
-Navigator.VOLUMEDOWN=\u97f3\u91cf\u5c0f
-Navigator.VOLUMEMAX=\u6700\u5927\u97f3\u91cf
-Navigator.VOLUMEMIN=\u97f3\u91cf\u7121\u3057
-Navigator.MUTEON=\u30df\u30e5\u30fc\u30c8
-Navigator.MUTEOFF=\u30df\u30e5\u30fc\u30c8\u30aa\u30d5
-Navigator.CANNOT_PAUSE=\u4e2d\u65ad\u3067\u304d\u307e\u305b\u3093
-Navigator.MOVIE_START=\u518d\u751f\u958b\u59cb
-
-Navigator.NOT_AVAILABEL=\u5229\u7528\u3067\u304d\u307e\u305b\u3093
-
-Navigator.NOVIDEO=\u52d5\u753b\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.SINGLEVIDEO=\u3072\u3068\u3064\u306e\u52d5\u753b
-Navigator.VIDEOCOUNT={0}\u500b\u306e\u52d5\u753b
-Navigator.NOSOUND=\u97f3\u6e90\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.SINGLESOUND=\u3072\u3068\u3064\u306e\u97f3\u6e90
-Navigator.SOUNDCOUNT={0}\u500b\u306e\u97f3\u6e90
-Navigator.VIDEOINDEX={1}\u500b\u4e2d{0}\u500b\u76ee\u306e\u30d3\u30c7\u30aa
-
-Navigator.VIDEO_AT={0}\u3092\u518d\u751f\u4e2d
-Navigator.VIDEO_TOTAL=\u5168\u4f53\u3067{0}
-
-Fennec.EMPTY_PAGE=\u304b\u3089\u306e\u30da\u30fc\u30b8\u3067\u3059\u3002
-
-ContentShortener.VerbalForm={0} \u4ee5\u4e0b\u7565
-ContentShortener.NonVerbalForm={0} ...
-
-LandmarkMaker.Result.CREATED=\u3057\u304a\u308a\u304c{0}\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f
-LandmarkMaker.Result.REMOVED=\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u305f\u898b\u51fa\u3057\u304c\u6709\u52b9\u306b\u306a\u308a\u307e\u3057\u305f : {0}
-LandmarkMaker.Result.ERROR=\u3057\u304a\u308a\u3092{0}\u306b\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f
-LandmarkMaker.Result.NOTHING=\u3057\u304a\u308a\u306f\u3059\u3067\u306b{0}\u306b\u3042\u308a\u307e\u3059
-
-HeadingCanceller.Result.CREATED=\u898b\u51fa\u3057\u3092\u7121\u52b9\u5316\u3057\u307e\u3057\u305f : {0}
-HeadingCanceller.Result.REMOVED=\u3057\u304a\u308a\u304c{0}\u304b\u3089\u53d6\u308a\u9664\u304b\u308c\u307e\u3057\u305f
-HeadingCanceller.Result.ERROR=\u898b\u51fa\u3057\u3092\u53d6\u308a\u9664\u3051\u307e\u305b\u3093\u3067\u3057\u305f : {0}
-HeadingCanceller.Result.NOTHING=\u898b\u51fa\u3057\u306f\u3059\u3067\u306b\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u307e\u3059 : {0}
-
-AltTextEditor.Result.CREATED=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u3092{0}\u3068\u8a2d\u5b9a\u3057\u307e\u3057\u305f
-AltTextEditor.Result.REMOVED=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u3092\u53d6\u308a\u9664\u304d\u307e\u3057\u305f
-AltTextEditor.Result.CHANGED=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u3092{0}\u306b\u5909\u66f4\u3057\u307e\u3057\u305f
-AltTextEditor.Result.ERROR=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u306e\u7de8\u96c6\u306b\u5931\u6557\u3057\u307e\u3057\u305f
-
-AudioDescription.on=\u97f3\u58f0\u89e3\u8aac\u30aa\u30f3
-AudioDescription.off=\u97f3\u58f0\u89e3\u8aac\u30aa\u30d5
-AudioDescription.available=\u97f3\u58f0\u89e3\u8aac\u6709\u308a
-AudioDescription.notAvailable=\u97f3\u58f0\u89e3\u8aac\u7121\u3057
-AudioDescription.noExtension=\u97f3\u58f0\u89e3\u8aac\u62e1\u5f35\u7121\u3057
-
-Navigator.ANNOTATION_IS_NOT_AVAILABLE=\u6ce8\u91c8\u6a5f\u80fd\u306f\u5229\u7528\u3067\u304d\u307e\u305b\u3093
-Navigator.ANNOTATION_IS_SAVED=\u6ce8\u91c8\u304c\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f
-Navigator.ALT_TEXT_WERE_GUESSED={0} \u500b\u306e\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u304c\u63a8\u6e2c\u3055\u308c\u307e\u3057\u305f
-Navigator.THERE_IS_NO_MISSING_ALT_TEXT=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u304c\u5fc5\u8981\u306a\u9805\u76ee\u306f\u3042\u308a\u307e\u305b\u3093
-Navigator.ANNOTATION_LINK_TO={0}\u3078\u306e\u30ea\u30f3\u30af
-Navigator.ITEM_IS_NOT_AVAILABLE=\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u3092\u4ed8\u3051\u3089\u308c\u306a\u3044\u9805\u76ee\u3067\u3059
-Navigator.ANNOTATION_IS_REMOVED=\u6ce8\u91c8\u3092\u5168\u3066\u524a\u9664\u3057\u307e\u3057\u305f
-Navigator.NO_ANNOTATION=\u6ce8\u91c8\u304c\u3042\u308a\u307e\u305b\u3093
-
-Navigator.USER_INFO_REMOVE_CONFIRM=\u6ce8\u91c8\u3092\u5168\u3066\u524a\u9664\u3057\u307e\u3059
-Navigator.USER_INFO_REMOVE_MESSAGE=\u3053\u306e\u30da\u30fc\u30b8\u306e\u5168\u3066\u306e\u6ce8\u91c8\u306e\u60c5\u5831\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f
-
-Navigator.THERE_ARE_NO_TAB=\u30bf\u30d6\u304c\u3042\u308a\u307e\u305b\u3093\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30ebO\u3092\u4f7f\u7528\u3057\u3066\u4e0b\u3055\u3044\u3002
-
-TripJournal.FORWARD=\u9032\u3080
-TripJournal.FAILEDTOFORWARD=\u6700\u5f8c\u3067\u3059
-TripJournal.BACKWARD=\u623b\u308b
-TripJournal.FAILEDTOBACKWARD=\u5148\u982d\u3067\u3059
-
-Navigator.EXPORT_ANNOTATION=\u73fe\u5728\u306e\u30da\u30fc\u30b8\u306e\u6ce8\u91c8\u3092\u66f8\u304d\u51fa\u3057\u307e\u3059
-Navigator.EXPORT_ALL_ANNOTATIONS=\u6ce8\u91c8\u30c7\u30fc\u30bf\u3092\u5168\u3066\u66f8\u304d\u51fa\u3057\u307e\u3059
-Navigator.IMPORT_FENNEC_FILE=\u6ce8\u91c8\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059
-Navigator.EXPORT_IS_SUCCEEDED=\u66f8\u304d\u51fa\u3057\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f
-Navigator.EXPORT_IS_FAILED=\u66f8\u304d\u51fa\u3057\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3057\u305f
-Navigator.IMPORT_IS_SUCCEEDED=\u8aad\u307f\u8fbc\u307f\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f
-Navigator.IMPORT_IS_FAILED=\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3057\u305f
-Navigator.OVERWRITE_CONFIRM=\u66f8\u304d\u51fa\u3057\u4e2d...
-Navigator.OVERWRITE_MESSAGE={0} \u306f\u65e2\u306b\u3042\u308a\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u3066\u7f6e\u304d\u63db\u3048\u307e\u3059\u304b\uff1f
-
-Navigator.REPAIR_START=Flash\u306e\u4fee\u5fa9\u3092\u958b\u59cb\u3057\u307e\u3059
-Navigator.REPAIR_FINISHED=Flash\u306e\u4fee\u5fa9\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferenceConstants.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferenceConstants.java
deleted file mode 100644
index b29b3db..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferenceConstants.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.preferences;
-
-/**
- * Constant definitions for plug-in preferences
- */
-public class UserInfoPreferenceConstants {
-
-	public static final String AUTO_SAVE = "autoSave";
-
-    public static final String AUTO_REFRESH = "autoRefresh";
-    
-    public static final String NONVERBAL_OVERVIEW = "nonverbalOverview";
-    
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferenceInitializer.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferenceInitializer.java
deleted file mode 100644
index e49f1b0..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferenceInitializer.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.preferences;
-
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-
-/**
- * Class used to initialize default preference values.
- */
-public class UserInfoPreferenceInitializer extends AbstractPreferenceInitializer {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
-	 */
-	@Override
-    public void initializeDefaultPreferences() {
-		IPreferenceStore store = NavigatorPlugin.getDefault().getPreferenceStore();
-		store.setDefault(UserInfoPreferenceConstants.AUTO_REFRESH, true);
-        store.setDefault(UserInfoPreferenceConstants.AUTO_SAVE, true);
-        store.setDefault(UserInfoPreferenceConstants.NONVERBAL_OVERVIEW, true);
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferencePage.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferencePage.java
deleted file mode 100644
index 8e87cea..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/preferences/UserInfoPreferencePage.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.preferences;
-
-import org.eclipse.actf.ai.internal.navigator.Messages;
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.jface.preference.BooleanFieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-
-/**
- * This class represents a preference page that
- * is contributed to the Preferences dialog. By 
- * subclassing <samp>FieldEditorPreferencePage</samp>, we
- * can use the field support built into JFace that allows
- * us to create a page that is small and knows how to 
- * save, restore and apply itself.
- * <p>
- * This page is used to modify preferences only. They
- * are stored in the preference store that belongs to
- * the main plug-in class. That way, preferences can
- * be accessed directly via the preference store.
- */
-
-public class UserInfoPreferencePage
-	extends FieldEditorPreferencePage
-	implements IWorkbenchPreferencePage {
-
-	public UserInfoPreferencePage() {
-		super(GRID);
-		setPreferenceStore(NavigatorPlugin.getDefault().getPreferenceStore());
-		setDescription(Messages.getString("UserInfo.PREFERENCES_NAME"));
-	}
-	
-	/**
-	 * Creates the field editors. Field editors are abstractions of
-	 * the common GUI blocks needed to manipulate various types
-	 * of preferences. Each field editor knows how to save and
-	 * restore itself.
-	 */
-	@Override
-    public void createFieldEditors() {
-        addField(
-                new BooleanFieldEditor(
-                    UserInfoPreferenceConstants.AUTO_SAVE,
-                    Messages.getString("UserInfo.SAVE_ANNOTATION"), 
-                    getFieldEditorParent()));
-
-        /*
-        addField(
-                new BooleanFieldEditor(
-                    UserInfoPreferenceConstants.AUTO_REFRESH,
-                    Messages.getString("UserInfo.REFRESH_TREEVIEW"), 
-
-                    getFieldEditorParent()));
-        */
-        
-        //addField(
-        //        new BooleanFieldEditor(
-        //            UserInfoPreferenceConstants.NONVERBAL_OVERVIEW,
-        //            "&Nonverbal Overview",
-        //            getFieldEditorParent()));
-                    
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
-	 */
-	public void init(IWorkbench workbench) {
-	}
-	
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/ui/ModeContribution.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/ui/ModeContribution.java
deleted file mode 100644
index 4916492..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/ui/ModeContribution.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.ui;
-
-import org.eclipse.jface.action.ControlContribution;
-import org.eclipse.jface.action.StatusLineLayoutData;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-
-
-
-/**
- * This shows the mode information of the navigator.
- */
-public class ModeContribution extends ControlContribution {
-
-    /**
-     * Default constructor.
-     */
-    public ModeContribution() {
-        super(MODE_CONTRIBUTION_ID);
-    }
-
-    /**
-     * The ID of this UI contribution.
-     */
-    public static final String MODE_CONTRIBUTION_ID = "navigator.mode";
-
-    private Composite c;
-
-    private Label fennec;
-    
-    private String metadataText;
-
-    private Label mode;
-    
-    private String modeText;
-
-    private StatusLineLayoutData data;
-
-    @Override
-    protected Control createControl(Composite parent) {
-        data = new StatusLineLayoutData();
-        data.heightHint = 18;
-        c = new Composite(parent, SWT.NULL);
-        c.setLayoutData(data);
-        RowLayout rl = new RowLayout();
-        rl.fill = true;
-        rl.justify = true;
-        rl.wrap = false;
-        c.setLayout(rl);
-
-        fennec = new Label(c, SWT.NONE);
-        if(metadataText != null)
-            fennec.setText(metadataText);
-        mode = new Label(c, SWT.NONE);
-        if(modeText != null)
-            mode.setText(modeText);
-        
-        return c;
-    }
-
-    /**
-     * <i>metadataText  [modeText]</i> will be shown.
-     * @param name The mode name.
-     */
-    public void setMode(String name) {
-        modeText = "  [" + name + "]";
-    }
-
-    /**
-     * <i>metadataText  [modeText]</i> will be shown.
-     * @param name The name of the metadata name.
-     */
-    public void showFennecName(String name) {
-        metadataText = name;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/ui/NavigatorUIUtil.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/ui/NavigatorUIUtil.java
deleted file mode 100644
index dfc881b..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/ui/NavigatorUIUtil.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Kentarou FUKUDA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.ui;
-
-import org.eclipse.jface.action.IMenuManager;
-
-/**
- * Utility class for Navigator UIs.
- */
-public class NavigatorUIUtil {
-
-	/**
-	 * The navigator related menus will be added to this IMenuManager.
-	 */
-	public static IMenuManager menuManager;
-
-	/**
-	 * The view ID of the Navigator Tree View.
-	 */
-	public static final String NAVIGATOR_TREE_VIEW_ID = "org.eclipse.actf.ai.navigator.views.NavigatorTreeView"; //$NON-NLS-1$
-
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/IMetaDataModifier.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/IMetaDataModifier.java
deleted file mode 100644
index db4eb90..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/IMetaDataModifier.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Masatomo KOBAYASHI - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.userinfo;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.navigator.userinfo.IUserInfoGenerator.Result;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-
-
-
-
-public interface IMetaDataModifier {
-
-    String toString(Result result);
-
-    Result commit(boolean save) throws XMLStoreException;
-
-    String getSite();
-
-    void setSite(String targetSite);
-
-    ITreeItem getItem();
-
-    void setItem(ITreeItem item);
-
-    String getText();
-
-    void setText(String text);
-
-    IUserInfoGenerator getGenerator();
-
-    void setGenerator(IUserInfoGenerator generator);
-
-    boolean remove() throws XMLStoreException;
-
-    void setPageTitle(String title);
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/IUserInfoConstants.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/IUserInfoConstants.java
deleted file mode 100644
index 32ba92a..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/IUserInfoConstants.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Masatomo KOBAYASHI - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.userinfo;
-
-
-
-public interface IUserInfoConstants {
-    public static final String DEFAULT_NAMESPACE = "http://www.ibm.com/xmlns/prod/aiBrowser/fennec";
-    public static final String LOC_NAMESPACE = "http://www.ibm.com/xmlns/prod/aiBrowser/fennec/xml-query";
-    public static final String FLQ_NAMESPACE = "http://www.ibm.com/xmlns/prod/aiBrowser/fennec/flash-query";
-    public static final String MSQ_NAMESPACE = "http://www.ibm.com/xmlns/prod/aiBrowser/fennec/msaa-query";
-}
-
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/IUserInfoGenerator.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/IUserInfoGenerator.java
deleted file mode 100644
index 50abf46..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/IUserInfoGenerator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Masatomo KOBAYASHI - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.userinfo;
-
-import org.w3c.dom.Node;
-
-
-public interface IUserInfoGenerator {
-    public static enum Result {
-        NOTHING,
-        CREATED,
-        REMOVED,
-        CHANGED,
-        ERROR,
-    }
-
-    String toString(Result result);
-//    Status addUserInfo(Node container, TargetNodeQuery paths, String altText);
-    Result addUserInfo(Node node, String altText);
-}
-
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltInputDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltInputDialog.java
deleted file mode 100644
index 08a4fe8..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltInputDialog.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Masatomo KOBAYASHI - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.userinfo.impl;
-
-import org.eclipse.actf.ai.internal.navigator.Messages;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-
-
-
-public class AltInputDialog extends Dialog {
-    
-    private String formInputString = "";
-
-    @Override
-    protected void configureShell(Shell newShell) {
-        super.configureShell(newShell);
-
-        newShell.setText(Messages.getString("AltInputDialog.Text"));
-    }
-
-    @Override
-    protected Control createDialogArea(Composite parent) {
-        Composite container = (Composite) super.createDialogArea(parent);
-        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-        gd.widthHint = 400;
-        gd.horizontalSpan = ((GridLayout) parent.getLayout()).numColumns;
-        
-        final Text formInputField = new Text(container, SWT.BORDER);
-        formInputField.setLayoutData(gd);
-        formInputField.setText(formInputString);
-        formInputField.selectAll();
-
-        formInputField.addModifyListener(new ModifyListener() {
-            public void modifyText(ModifyEvent e) {
-                formInputString = formInputField.getText();
-            }
-        });
-        return container;
-    }
-
-    public String getResult() {
-        return formInputString;
-    }
-
-    public AltInputDialog(Shell parent, String init) {
-        super(parent);
-        this.formInputString = init;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltTextEditor.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltTextEditor.java
deleted file mode 100644
index fc55875..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltTextEditor.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Masatomo KOBAYASHI - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.userinfo.impl;
-
-import org.eclipse.actf.ai.navigator.userinfo.IUserInfoConstants;
-import org.eclipse.actf.ai.navigator.userinfo.IUserInfoGenerator;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-
-
-
-public class AltTextEditor implements IUserInfoGenerator, IUserInfoConstants {
-    
-//    @Override
-//    public String toString() {
-//        return "ALT text";
-//    }
-
-    public String toString(Result result) {
-        switch (result) {
-        case CREATED:
-            return "AltTextEditor.Result.CREATED";
-        case REMOVED:
-            return "AltTextEditor.Result.REMOVED";
-        case CHANGED:
-            return "AltTextEditor.Result.CHANGED";
-        case ERROR:
-            return "AltTextEditor.Result.ERROR";
-        }
-        return "";
-    }
-    
-    private Node getExistingUserInfo(Node node) {
-        for (Node c = node.getFirstChild(); c != null; c = c.getNextSibling()) {
-            String ns = c.getNamespaceURI();
-            if ((ns == null) || (!ns.equals(DEFAULT_NAMESPACE))) continue;
-            String n = c.getLocalName();
-            if (n.equals("altText"))
-                return c;
-        }
-        return null;
-    }
-    
-    public Result addUserInfo(Node node, String text) {
-        Document doc = node.getOwnerDocument();
-        Node info = getExistingUserInfo(node);
-        if (text.length() > 0) {
-            if (info == null) {
-                info = node.appendChild(doc.createElementNS(DEFAULT_NAMESPACE, "altText"));
-                info.setTextContent(text);
-                return Result.CREATED;
-            }
-            else {
-                info.setTextContent(text);
-                return Result.CHANGED;
-            }
-        }   
-        // TODO ? which is better: "" -> remove the alt text added by the user or set an empty alt text
-        else if (info != null) {
-            node.removeChild(info);
-            return Result.REMOVED;
-        }
-        return Result.NOTHING;
-    }
-    
-//    public Status addUserInfo(Node parent, TargetNodeQuery paths, String text) {
-//        Document doc = parent.getOwnerDocument();
-//        Node node = paths.getNode(parent);
-//        Node info = getExistingUserInfo(node);
-//
-//        if (text.length() > 0) {
-//            if (info == null) {
-//                info = node.appendChild(doc.createElementNS(DEFAULT_NAMESPACE, "altText"));
-//                info.setTextContent(text);
-//                return Status.CREATED;
-//            }
-//            else {
-//                info.setTextContent(text);
-//                return Status.CHANGED;
-//            }
-//        }   
-//        
-//        // TODO ? which is better: "" -> remove the alt text added by the user or set an empty alt text
-//        
-//        if (info != null) {
-//            node.removeChild(info);
-//            if (!node.hasChildNodes())
-//                parent.removeChild(node);
-//            return Status.REMOVED;
-//        }
-//
-//        return Status.NOTHING;
-//    }
-
-//    @Override
-//    protected String buildXML(String attr, String base, String text) {
-//        StringBuffer ret = new StringBuffer();
-//        ret.append("<attach ");
-//        ret.append(attr);
-//        ret.append("=\"");
-//        ret.append(base);
-//        ret.append("\"");
-//        ret.append("><altText>");
-//        ret.append(text);
-//        ret.append("</altText></attach>");
-//        return ret.toString();
-//    }
-    
-//    @Override
-//    public String buildXML(Map<String, String> attr, String text) {
-//        StringBuffer ret = new StringBuffer();
-//        ret.append("<!--attach loc:path=\".\"--><group");
-//        for (Map.Entry<String, String> e : attr.entrySet()) {
-//            ret.append("\n  ");
-//            ret.append(e.getKey());
-//            ret.append("=\"");
-//            ret.append(e.getValue());
-//            ret.append("\"");
-//        }
-//        ret.append(">\n  <altText>");
-//        ret.append(text);
-//        ret.append("</altText>\n</group><!--/attach-->");
-//        return ret.toString();
-//    }
-    
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltTextGuesser.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltTextGuesser.java
deleted file mode 100644
index 6a20944..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/AltTextGuesser.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Masatomo KOBAYASHI - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.userinfo.impl;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-
-
-
-
-public class AltTextGuesser {
-    private final IWebBrowserACTF browser;
-    private final ITreeItem item;
-    
-    public AltTextGuesser(IWebBrowserACTF browser, ITreeItem item) {
-        this.browser = browser;
-        this.item = item;
-    }
-    
-    public String getDefaultText() {
-        return item.getUIString();
-    }
-    
-    public String guessByOCR() {
-        throw new RuntimeException("Not implemented.");
-    }
-    
-    public String guessByContext() {
-        return getContext(browser, getContext(item));
-    }
-    
-    private String getContext(ITreeItem item) {
-        Object o = item.getBaseNode();
-        if (!(o instanceof Node))
-            return null;
-        for (Node n = (Node) o; n != null; n = n.getParentNode()) {
-//            System.err.println(n.getClass());
-            if (n instanceof Document)
-                break;
-            String name = n.getLocalName();
-            // I'd like to use getLinkURI!!
-            if ("A".equals(name)) {
-//                System.out.println(n.getClass());
-                NamedNodeMap v = n.getAttributes();
-                if (v == null)
-                    continue;
-                
-                Node a = v.getNamedItem("href");
-                if (a == null)
-                    continue;
-                return a.getNodeValue();
-            }
-        }
-        return null;
-    }
-    
-    private String getContext(IWebBrowserACTF browser, String path) {
-        try {
-            URL url =  new URL(new URL(browser.getURL()), path);
-            String s = null;
-            String title = "", h1 = "";
-            Pattern pattern = Pattern.compile("<(?:(title)|(h1))[^>]*>([^<]*)</(?:title|h1)>" , Pattern.CASE_INSENSITIVE);
-            BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
-            while ((s = br.readLine()) != null) { // TODO ad-hoc
-                Matcher matcher = pattern.matcher(s);
-                if (!matcher.matches())
-                    continue;
-                if (matcher.group(1) != null)
-                    title = matcher.group(3);
-                if (matcher.group(2) != null)
-                    h1 = matcher.group(3);
-                if (title.length() > 0 && h1.length() > 0)
-                    break;
-            }
-            br.close();
-            System.out.println("URL\t" + url);
-            System.out.println("title\t" + title);
-            System.out.println("h1\t" + h1);
-            return title.length() > h1.length() ? title : h1;
-        } catch (MalformedURLException e) {
-//          e.printStackTrace();
-            return null;
-        } catch (IOException e) {
-//          e.printStackTrace();
-            return null;
-        }
-    }
-    
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/BrowserObserver.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/BrowserObserver.java
deleted file mode 100644
index 40533e2..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/BrowserObserver.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Masatomo KOBAYASHI - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.userinfo.impl;
-
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-
-
-
-public class BrowserObserver {
-    private IWebBrowserACTF webBrowser;
-    
-    public BrowserObserver(IWebBrowserACTF webBrowser) {
-        this.webBrowser = webBrowser;
-    }
-    
-    public String getTargetFilter() { // TODO
-        String s = webBrowser.getURL();
-        int i = s.indexOf('?');
-        if (i >= 0)
-            s = s.substring(0, i).concat("*");
-        return s;
-    }
-
-    public IWebBrowserACTF getWebBrowser() {
-        return webBrowser;
-    }
-
-    public void setWebBrowser(IWebBrowserACTF webBrowser) {
-        this.webBrowser = webBrowser;
-    }
-    
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/HeadingCanceller.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/HeadingCanceller.java
deleted file mode 100644
index 610ccad..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/HeadingCanceller.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Masatomo KOBAYASHI - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.userinfo.impl;
-
-import org.eclipse.actf.ai.navigator.userinfo.IUserInfoConstants;
-import org.eclipse.actf.ai.navigator.userinfo.IUserInfoGenerator;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-
-
-
-public class HeadingCanceller implements IUserInfoGenerator, IUserInfoConstants {
-
-//    @Override
-//    public String toString() {
-//        return "landmark";
-//    }
-    
-    public String toString(Result result) {
-        switch (result) {
-        case CREATED:
-            return "HeadingCanceller.Result.CREATED";
-        case REMOVED:
-            return "HeadingCanceller.Result.REMOVED";
-        case ERROR:
-            return "HeadingCanceller.Result.ERROR";
-        case NOTHING:
-            return "HeadingCanceller.Result.NOTHING";
-        }
-        return "";
-    }
-
-    private Node getExistingUserInfo(Node node) {
-        for (Node c = node.getFirstChild(); c != null; c = c.getNextSibling()) {
-            String ns = c.getNamespaceURI();
-            if ((ns == null) || (!ns.equals(DEFAULT_NAMESPACE))) continue;
-            String n = c.getLocalName();
-            if (n.equals("h1") || n.equals("h-"))
-                return c;
-        }
-        return null;
-    }
-    
-    public Result addUserInfo(Node node, String text) {
-        Document doc = node.getOwnerDocument();
-        Node info = getExistingUserInfo(node);
-        if (info != null) {
-            if (info.getNodeName().equals("h-"))
-                return Result.NOTHING;
-            node.removeChild(info);
-//          if (!node.hasChildNodes())
-//              parent.removeChild(node);
-            return Result.REMOVED;
-        }
-        node.appendChild(doc.createElementNS(DEFAULT_NAMESPACE, "h-"));
-//      node.appendChild(doc.createElementNS(DEFAULT_NAMESPACE, "altText")).appendChild(doc.createTextNode(text));
-        return Result.CREATED;
-    }
-    
-//    public Status addUserInfo(Node parent, TargetNodeQuery paths, String text) {
-//        Document doc = parent.getOwnerDocument();
-//        Node node = paths.getNode(parent);
-//        Node info = getExistingUserInfo(node);
-//        if (info != null) {
-//            node.removeChild(info);
-//            if (!node.hasChildNodes())
-//                parent.removeChild(node);
-//            return Status.REMOVED;
-//        }
-//        else {
-//            node.appendChild(doc.createElementNS(DEFAULT_NAMESPACE, "h-"));
-////          node.appendChild(doc.createElementNS(DEFAULT_NAMESPACE, "altText")).appendChild(doc.createTextNode(text));
-//            return Status.CREATED;
-//        }
-//    }
-    
-//    @Override
-//    protected String buildXML(String attr, String base, String text) {
-//        StringBuffer ret = new StringBuffer();
-//        ret.append("<attach ");
-//        ret.append(attr);
-//        ret.append("=\"");
-//        ret.append(base);
-//        ret.append("\"");
-//        ret.append("><h1/><altText>");
-//        ret.append(text);
-//        ret.append("</altText></attach>");
-//        return ret.toString();
-//    }
-    
-//    @Override
-//    public String buildXML(Map<String, String> attr, String text) {
-//        StringBuffer ret = new StringBuffer();
-//        ret.append("<!--attach loc:path=\".\"--><group");
-//        for (Map.Entry<String, String> e : attr.entrySet()) {
-//            ret.append("\n  ");
-//            ret.append(e.getKey());
-//            ret.append("=\"");
-//            ret.append(e.getValue());
-//            ret.append("\"");
-//        }
-//        ret.append(">\n  <h1/>\n  <altText>");
-//        ret.append(text);
-//        ret.append("</altText>\n</group><!--/attach-->");
-//        return ret.toString();
-//    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/LandmarkMaker.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/LandmarkMaker.java
deleted file mode 100644
index 1877fd4..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/LandmarkMaker.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Masatomo KOBAYASHI - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.userinfo.impl;
-
-import org.eclipse.actf.ai.navigator.userinfo.IUserInfoConstants;
-import org.eclipse.actf.ai.navigator.userinfo.IUserInfoGenerator;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-
-
-
-public class LandmarkMaker implements IUserInfoGenerator, IUserInfoConstants {
-
-//    @Override
-//    public String toString() {
-//        return "landmark";
-//    }
-    
-    public String toString(Result result) {
-        switch (result) {
-        case CREATED:
-            return "LandmarkMaker.Result.CREATED";
-        case REMOVED:
-            return "LandmarkMaker.Result.REMOVED";
-        case ERROR:
-            return "LandmarkMaker.Result.ERROR";
-        case NOTHING:
-            return "LandmarkMaker.Result.NOTHING";
-        }
-        return "";
-    }
-
-    private Node getExistingUserInfo(Node node) {
-        for (Node c = node.getFirstChild(); c != null; c = c.getNextSibling()) {
-            String ns = c.getNamespaceURI();
-            if ((ns == null) || (!ns.equals(DEFAULT_NAMESPACE))) continue;
-            String n = c.getLocalName();
-            if (n.equals("h-") || n.equals("h1"))
-                return c;
-        }
-        return null;
-    }
-    
-    public Result addUserInfo(Node node, String text) {
-        Document doc = node.getOwnerDocument();
-        Node info = getExistingUserInfo(node);
-        if (info != null) {
-            if (info.getNodeName().equals("h1"))
-                return Result.NOTHING;
-            node.removeChild(info);
-//          if (!node.hasChildNodes())
-//              parent.removeChild(node);
-            return Result.REMOVED;
-        }
-        node.appendChild(doc.createElementNS(DEFAULT_NAMESPACE, "h1"));
-//      node.appendChild(doc.createElementNS(DEFAULT_NAMESPACE, "altText")).appendChild(doc.createTextNode(text));
-        return Result.CREATED;
-    }
-    
-//    public Status addUserInfo(Node parent, TargetNodeQuery paths, String text) {
-//        Document doc = parent.getOwnerDocument();
-//        Node node = paths.getNode(parent);
-//        Node info = getExistingUserInfo(node);
-//        if (info != null) {
-//            node.removeChild(info);
-//            if (!node.hasChildNodes())
-//                parent.removeChild(node);
-//            return Status.REMOVED;
-//        }
-//        else {
-//            node.appendChild(doc.createElementNS(DEFAULT_NAMESPACE, "h1"));
-////          node.appendChild(doc.createElementNS(DEFAULT_NAMESPACE, "altText")).appendChild(doc.createTextNode(text));
-//            return Status.CREATED;
-//        }
-//    }
-    
-//    @Override
-//    protected String buildXML(String attr, String base, String text) {
-//        StringBuffer ret = new StringBuffer();
-//        ret.append("<attach ");
-//        ret.append(attr);
-//        ret.append("=\"");
-//        ret.append(base);
-//        ret.append("\"");
-//        ret.append("><h1/><altText>");
-//        ret.append(text);
-//        ret.append("</altText></attach>");
-//        return ret.toString();
-//    }
-    
-//    @Override
-//    public String buildXML(Map<String, String> attr, String text) {
-//        StringBuffer ret = new StringBuffer();
-//        ret.append("<!--attach loc:path=\".\"--><group");
-//        for (Map.Entry<String, String> e : attr.entrySet()) {
-//            ret.append("\n  ");
-//            ret.append(e.getKey());
-//            ret.append("=\"");
-//            ret.append(e.getValue());
-//            ret.append("\"");
-//        }
-//        ret.append(">\n  <h1/>\n  <altText>");
-//        ret.append(text);
-//        ret.append("</altText>\n</group><!--/attach-->");
-//        return ret.toString();
-//    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/MetaDataModifier.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/MetaDataModifier.java
deleted file mode 100644
index 4fa20ae..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/userinfo/impl/MetaDataModifier.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Masatomo KOBAYASHI - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.userinfo.impl;
-
-import java.util.Iterator;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier;
-import org.eclipse.actf.ai.navigator.userinfo.IUserInfoConstants;
-import org.eclipse.actf.ai.navigator.userinfo.IUserInfoGenerator;
-import org.eclipse.actf.ai.navigator.userinfo.IUserInfoGenerator.Result;
-import org.eclipse.actf.ai.xmlstore.IXMLEditableInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-import org.eclipse.actf.ai.xmlstore.IXMLStoreService;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-
-
-public class MetaDataModifier implements IUserInfoConstants, IMetaDataModifier {
-    private IUserInfoGenerator generator;
-    private ITreeItem item;
-    private String text;
-    private String site;
-    private String pageTitle;
-    
-//    @Override
-//    public String toString() {
-//        StringBuffer ret = new StringBuffer();
-//        String s = item.getUIString();
-//        ret.append(generator);
-//        ret.append(" : ");
-//        ret.append(s != null && s.length() > 0 ? s : "X");
-//        ret.append(" is ");
-//        ret.append(text);
-//        return ret.toString();
-//    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier#toString(org.eclipse.actf.ai.navigator.userinfo.IUserInfoConstants.Result)
-     */
-    public String toString(Result result) {
-        return generator.toString(result);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier#commit(boolean)
-     */
-    public Result commit(boolean save) throws XMLStoreException {
-        IXMLEditableInfo info = getUserInfo();
-        info.setPageTitle(pageTitle);
-        Result result = Result.NOTHING;
-        if (generator != null) {
-            if (item == null) return Result.ERROR;
-            Document infoDocument = info.getRootNode().getOwnerDocument();
-            Node parent = infoDocument.getElementsByTagNameNS(DEFAULT_NAMESPACE, "attach").item(0);
-//            TargetNodeQuery paths = getQueryPaths(parent.getOwnerDocument());
-//            result = generator.addUserInfo(parent, paths, text);
-//            Node node = getInfoNode(parent);
-            Node node = item.serializeQuery(parent);
-            if (node == null) return Result.ERROR;
-            result = generator.addUserInfo(node, text);
-            if (!node.hasChildNodes())
-                parent.removeChild(node);
-        }
-        if (save)
-            info.save();
-        return result;
-    }
-    
-    private IXMLEditableInfo getUserInfo() throws XMLStoreException {
-        IXMLStoreService service = XMLStoreServiceUtil.getXMLStoreService();
-        IXMLEditableInfo info = getStoredUserInfo(service);
-        if (info != null) {
-            return info;
-        } else {
-            return createNewUserInfo(service);
-        }
-    }
-    
-    private IXMLEditableInfo getStoredUserInfo(IXMLStoreService service) {
-        IXMLStore store0 = service.getRootStore();
-        IXMLSelector sel1 = service.getSelectorWithDocElem("fennec", DEFAULT_NAMESPACE);
-        IXMLStore store1 = store0.specify(sel1);
-        if (store1 == null)
-            return null;
-        IXMLSelector sel2 = service.getSelectorWithURI(site);
-        IXMLStore store2 = store1.specify(sel2);
-        if (store2 == null)
-            return null;
-        for (Iterator<IXMLInfo> i = store2.getInfoIterator(); i.hasNext(); ) {
-            IXMLInfo info = i.next();
-            if (info.isUserEntry() && (info instanceof IXMLEditableInfo)) {
-                //  System.out.println("open stored user info.");
-                return (IXMLEditableInfo) info;
-            }
-        }
-        return null;
-    }
-    
-    private IXMLEditableInfo createNewUserInfo(IXMLStoreService service) throws XMLStoreException {
-        IXMLEditableInfo info = service.newUserXML(DEFAULT_NAMESPACE, "fennec", site);
-        info.setPageTitle(pageTitle);
-        Node root = info.getRootNode();
-        Document doc = root.getOwnerDocument();
-        Element node = doc.createElementNS(DEFAULT_NAMESPACE, "attach");
-        node.setAttributeNS(LOC_NAMESPACE, "loc:path", ".");
-        root.appendChild(node);
-        //System.out.println("create new user info.");
-        return info;
-    }
-    
-    public boolean remove() throws XMLStoreException {
-        IXMLStoreService service = XMLStoreServiceUtil.getXMLStoreService();
-        IXMLEditableInfo info = getStoredUserInfo(service);
-
-        if (info == null) {
-            return false;
-        }
-        info.remove();
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier#getSite()
-     */
-    public String getSite() {
-        return site;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier#setSite(java.lang.String)
-     */
-    public void setSite(String targetSite) {
-        this.site = targetSite;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier#getItem()
-     */
-    public ITreeItem getItem() {
-        return item;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier#setItem(org.eclipse.actf.ai.fennec.treemanager.ITreeItem)
-     */
-    public void setItem(ITreeItem item) {
-        this.item = item;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier#getText()
-     */
-    public String getText() {
-        return text;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier#setText(java.lang.String)
-     */
-    public void setText(String text) {
-        this.text = text;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier#getGenerator()
-     */
-    public IUserInfoGenerator getGenerator() {
-        return generator;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.actf.ai.navigator.userinfo.IMetaDataModifier#setGenerator(org.eclipse.actf.ai.navigator.userinfo.IUserInfoGenerator)
-     */
-    public void setGenerator(IUserInfoGenerator generator) {
-        this.generator = generator;
-    }
-    
-    public void setPageTitle(String pageTitle) {
-        this.pageTitle = pageTitle;
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/ContentShortener.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/ContentShortener.java
deleted file mode 100644
index 28dbafe..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/ContentShortener.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Masatomo KOBAYASHI - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.util;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-
-
-
-public class ContentShortener {
-    private int limit;
-
-    public int getLimit() {
-        return limit;
-    }
-
-    public void setLimit(int max) {
-        this.limit = max;
-    }
-
-    private final MessageFormatter messageFormatter;
-    
-    public ContentShortener(int max,
-                            MessageFormatter messageFormatter) {
-        this.limit = max;
-        this.messageFormatter = messageFormatter;
-    }
-    
-    public String getSummary(ITreeItem item, boolean verbal) {
-        String s = item.getUIString();
-        if (s.length() <= limit) {
-            return s;
-        } else {
-            s = s.substring(0, limit);
-            if (verbal) {
-                return messageFormatter.mes("ContentShortener.VerbalForm", s);
-            } else {
-                return messageFormatter.mes("ContentShortener.NonVerbalForm", s);
-            }
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/MessageFormatter.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/MessageFormatter.java
deleted file mode 100644
index dad8664..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/MessageFormatter.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.util;
-
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-public class MessageFormatter {
-    private ResourceBundle resourceBundle = null;
-
-    private void setResourceBundle(String pkgName) {
-        try {
-            resourceBundle = ResourceBundle.getBundle(pkgName);
-        } catch (MissingResourceException e) {
-            resourceBundle = null;
-        }
-    }
-
-    public MessageFormatter(String pkgName) {
-        setResourceBundle(pkgName);
-    }
-
-    private String getFormat(String propName) {
-        if (resourceBundle == null) {
-            return propName;
-        }
-        String format;
-        try {
-            format = resourceBundle.getString(propName);
-        } catch (MissingResourceException e) {
-            return propName;
-        }
-        if (format != null)
-            return format;
-        return propName;
-    }
-
-    public String mes(String propName, Object[] args) {
-        String format = getFormat(propName);
-        String message = MessageFormat.format(format, args);
-        return message;
-    }
-
-    public String mes(String propName, Object obj1) {
-        return mes(propName, new Object[] { obj1 });
-    }
-
-    public String mes(String propName, Object obj1, Object obj2) {
-        return mes(propName, new Object[] { obj1, obj2 });
-    }
-
-    public String mes(String propName, Object obj1, Object obj2, Object obj3) {
-        return mes(propName, new Object[] { obj1, obj2, obj3 });
-    }
-
-    public String mes(String propName, Object obj1, Object obj2, Object obj3, Object obj4) {
-        return mes(propName, new Object[] { obj1, obj2, obj3, obj4 });
-    }
-
-    public String mes(String propName) {
-        return getFormat(propName);
-    }
-    
-    public String concat(String... args){
-        if (args.length == 0)
-            return "";
-        if (args.length == 1)
-            return args[0];
-        
-        StringBuffer buf = new StringBuffer();
-        for (int i = 0; i < args.length-1; i++) {
-            buf.append(args[i]);
-            buf.append(" ");
-        }
-        buf.append(args[args.length-1]);
-        return buf.toString();
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/URLOpenDialog.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/URLOpenDialog.java
deleted file mode 100644
index 918d226..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/util/URLOpenDialog.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.util;
-
-import org.eclipse.actf.ai.internal.navigator.Messages;
-import org.eclipse.actf.ui.util.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-
-
-
-/**
- * This is a dialog to ask the user to input URL.
- */
-public class URLOpenDialog {
-
-	private Shell _shell;
-
-	private Text _urlText;
-    
-    private String _url = "";
-
-	private int _returnCode = 0;
-
-	// Checked:030806
-	/**
-	 * Constructor.
-	 * @param shell The shell to be parent of the dialog.
-	 */
-	public URLOpenDialog(Shell shell) {
-		this._shell = new Shell(shell, SWT.DIALOG_TRIM | SWT.PRIMARY_MODAL);
-		this._shell.setLayout(new GridLayout());
-	}
-
-	// Checked:030806
-	private void createButtonControls() {
-		Composite composite = new Composite(this._shell, SWT.NULL);
-
-		GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.VERTICAL_ALIGN_END);
-		gridData.heightHint = 50;
-		composite.setLayoutData(gridData);
-
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 3;
-		layout.horizontalSpacing = 20;
-		layout.marginWidth = 20;
-		layout.marginHeight = 10;
-		composite.setLayout(layout);
-
-		Button okButton = new Button(composite, SWT.PUSH);
-		okButton.setText(IDialogConstants.OK); //$NON-NLS-1$
-		okButton.addSelectionListener(new SelectionAdapter() {
-			@Override
-            public void widgetSelected(SelectionEvent e) {
-				_returnCode = 1;
-                _url = _urlText.getText();
-//				BrowserEventListenerManager.getInstance().fireSetAddressTextString(_url);
-				_shell.close();
-			}
-		});
-
-		Button cancelButton = new Button(composite, SWT.PUSH);
-		cancelButton.setText(IDialogConstants.CANCEL); //$NON-NLS-1$
-		cancelButton.addSelectionListener(new SelectionAdapter() {
-			@Override
-            public void widgetSelected(SelectionEvent e) {
-				_returnCode = 0;
-				_shell.close();
-			}
-		});
-
-		this._shell.setDefaultButton(okButton);
-	}
-
-	// Checked:030806
-	private void createSettingControls() {
-		GridLayout gridLayout1;
-
-		Composite composite = new Composite(_shell, SWT.NULL);
-		composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		gridLayout1 = new GridLayout();
-		gridLayout1.numColumns = 2;
-		composite.setLayout(gridLayout1);
-
-		// information
-		Label infoLabel = new Label(composite, SWT.NONE);
-		infoLabel.setText(IDialogConstants.OPENFILE_INFO);
-		GridData gridData = new GridData();
-		gridData.horizontalSpan = 2;
-		infoLabel.setLayoutData(gridData);
-
-		// URL label
-		Label label1 = new Label(composite, SWT.NONE);
-		label1.setText("URL: ");
-
-		// Create the TextBox
-		_urlText = new Text(composite, SWT.SINGLE | SWT.BORDER);
-		_urlText.setText("");
-
-		gridData = new GridData();
-		gridData.widthHint = 300;
-		_urlText.setLayoutData(gridData);
-	}
-
-	// Checked:030806
-	/**
-	 * Open the dialog and return 1 or 0 when the user click OK button or cancel button respectively.
-	 * @return 1 (OK button), 0 (Cancel button)
-	 */
-	public int open() {
-		this._shell.setText(Messages.getString("DialogOpenURL.Open_URL_2"));
-
-		createSettingControls();
-
-		createButtonControls();
-		this._shell.setSize(375, 150);
-		this._shell.open();
-		this._shell.setLocation(100, 100);
-
-		Display display = _shell.getDisplay();
-		while (!_shell.isDisposed() || !display.readAndDispatch()) {
-			if (!display.readAndDispatch()) {
-				display.sleep();
-			}
-		}
-
-		return this._returnCode;
-	}
-    
-    /**
-     * @return The URL input by the user.
-     */
-    public String getUrl(){
-        return this._url;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/views/NavigatorTreeView.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/views/NavigatorTreeView.java
deleted file mode 100644
index 450c64b..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/views/NavigatorTreeView.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.navigator.views;
-
-import org.eclipse.actf.ai.fennec.treemanager.ITreeItem;
-import org.eclipse.actf.ai.internal.navigator.Messages;
-import org.eclipse.actf.ai.internal.navigator.NavigatorPlugin;
-import org.eclipse.actf.ai.navigator.IManipulator;
-import org.eclipse.actf.ai.navigator.ui.ModeContribution;
-import org.eclipse.actf.ai.navigator.ui.NavigatorUIUtil;
-import org.eclipse.actf.util.vocab.Vocabulary;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.ViewPart;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class NavigatorTreeView extends ViewPart {
-    private TreeViewer treeViewer;
-
-    private TableViewer tableViewer;
-
-    private boolean disposed;
-
-    static class ITreeItemLabelProvider extends LabelProvider {
-        @Override
-        public Image getImage(Object element) {
-            // TODO
-            return null;
-        }
-
-        @Override
-        public String getText(Object element) {
-            ITreeItem item = (ITreeItem) element;
-            String r = item.getUIString();
-            if (r.length() > 0)
-                return r;
-            r = item.getNodeString();
-            if (r == null)
-                return ""; //$NON-NLS-1$
-            return r;
-        }
-    }
-
-    static class ITreeItemContentProvider extends ArrayContentProvider implements ITreeContentProvider {
-
-        public Object[] getChildren(Object parentElement) {
-            ITreeItem item = (ITreeItem) parentElement;
-            return item.getChildItems();
-        }
-
-        public Object getParent(Object element) {
-            ITreeItem item = (ITreeItem) element;
-            return item.getParent();
-        }
-
-        public boolean hasChildren(Object element) {
-            ITreeItem item = (ITreeItem) element;
-            ITreeItem[] childItems = item.getChildItems();
-            if ((childItems != null) && (childItems.length > 0))
-                return true;
-            return false;
-        }
-
-        @Override
-        public Object[] getElements(Object input) {
-            return getChildren(input);
-        }
-    }
-
-    static class TreeItemDetailsContentProvider implements IStructuredContentProvider {
-        public void inputChanged(Viewer v, Object oldInput, Object newInput) {
-        }
-
-        public void dispose() {
-        }
-
-        private String calcPath(ITreeItem item) {
-            StringBuffer ret = new StringBuffer();
-            Object o = item.getBaseNode();
-            if (!(o instanceof Node))
-                return "#none"; //$NON-NLS-1$
-            for (Node n = (Node) o; n != null; n = n.getParentNode()) {
-                if (n instanceof Document)
-                    break;
-                ret.insert(0, n.getNodeName());
-                ret.insert(0, "/"); //$NON-NLS-1$
-            }
-            return ret.toString();
-        }
-
-        private String calcID(ITreeItem item) {
-            Object o = item.getBaseNode();
-            if (!(o instanceof Element))
-                return ""; //$NON-NLS-1$
-            Element e = (Element) o;
-            return e.getAttribute("id"); //$NON-NLS-1$
-        }
-
-        private String formatStringInHex(String str) {
-            StringBuffer ret = new StringBuffer();
-            for (int i = 0; i < str.length(); i++) {
-                char c = str.charAt(i);
-                ret.append(Integer.toHexString(c));
-                ret.append(" "); //$NON-NLS-1$
-            }
-            return ret.toString();
-        }
-
-        public Object[] getElements(Object obj) {
-            ITreeItem item = (ITreeItem) obj;
-            String[] uiStrings = { "UIString", item.getUIString() }; //$NON-NLS-1$
-            String[] uiStringsInHex = { "UIString (HEX)", formatStringInHex(item.getUIString()) }; //$NON-NLS-1$
-            String[] nodeStrings = { "Node", item.getNodeString() }; //$NON-NLS-1$
-            String[] path = { "Path", calcPath(item) }; //$NON-NLS-1$
-            String[] id = { "ID", calcID(item) }; //$NON-NLS-1$
-            String[] hasContent = { "hasContent", "" + Vocabulary.hasContent().eval(item)}; //$NON-NLS-1$ //$NON-NLS-2$
-            String[] heading = { "Heading", "" + item.getHeadingLevel() }; //$NON-NLS-1$ //$NON-NLS-2$
-            String[] nodeObject = { "NodeObject", "" + item.getBaseNode() }; //$NON-NLS-1$ //$NON-NLS-2$
-            String[] isInputable = { "isInputable", "" + item.isInputable() }; //$NON-NLS-1$ //$NON-NLS-2$
-            String[] isConnectable = { "isConnectable", "" + Vocabulary.isConnectable().eval(item) }; //$NON-NLS-1$ //$NON-NLS-2$
-            return new Object[] { uiStrings, uiStringsInHex, nodeStrings, path, id, hasContent, heading, nodeObject,
-                                  isInputable, isConnectable };
-        }
-    }
-
-    static class TreeItemDetailsLabelProvider extends LabelProvider implements ITableLabelProvider {
-        public String getColumnText(Object obj, int index) {
-            String[] prop = (String[]) obj;
-            if (index >= prop.length)
-                return null;
-            return prop[index];
-        }
-
-        public Image getColumnImage(Object obj, int index) {
-            return getImage(obj);
-        }
-
-        @Override
-        public Image getImage(Object obj) {
-            // TODO
-            return null;
-        }
-    }
-
-    class TreeItemViewerDoubleClickListener implements IDoubleClickListener {
-        public void doubleClick(DoubleClickEvent event) {
-            IStructuredSelection sel = (IStructuredSelection) event.getSelection();
-            Object obj = sel.getFirstElement();
-            tableViewer.setInput(obj);
-        }
-    }
-
-    @Override
-    public void dispose() {
-        super.dispose();
-        disposed = true;
-    }
-
-    void initView(Composite parent) {
-        Layout layout = new FillLayout(SWT.VERTICAL);
-        parent.setLayout(layout);
-        
-        SashForm sash = new SashForm(parent, SWT.VERTICAL);
-        
-        treeViewer = new TreeViewer(sash);
-        treeViewer.setLabelProvider(new ITreeItemLabelProvider());
-        treeViewer.setContentProvider(new ITreeItemContentProvider());
-        treeViewer.addDoubleClickListener(new TreeItemViewerDoubleClickListener());
-        // treeViewer.setAutoExpandLevel(0);
-
-        tableViewer = new TableViewer(sash, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
-        Table table = tableViewer.getTable();
-        table.setHeaderVisible(true);
-        table.setLinesVisible(true);
-        TableColumn tableColumnProperty = new TableColumn(table, SWT.LEFT);
-        tableColumnProperty.setText(Messages.getString("NavigatorTreeView.property")); //$NON-NLS-1$
-        tableColumnProperty.setWidth(70);
-        TableColumn tableColumnValue = new TableColumn(table, SWT.LEFT);
-        tableColumnValue.setText(Messages.getString("NavigatorTreeView.value")); //$NON-NLS-1$
-        tableColumnValue.setWidth(100);
-
-        tableViewer.setLabelProvider(new TreeItemDetailsLabelProvider());
-        tableViewer.setContentProvider(new TreeItemDetailsContentProvider());
-
-        sash.setWeights(new int[]{90, 10});
-    }
-
-    public NavigatorTreeView() {
-        super();
-    }
-
-    @Override
-    public void createPartControl(Composite parent) {
-        initView(parent);
-        NavigatorPlugin.getDefault().setNavigatorTreeView(this);
-    }
-
-    @Override
-    public void setFocus() {
-    }
-
-    private ITreeItem getRoot(ITreeItem item) {
-        for (ITreeItem parent = item.getParent(); parent != null; parent = item.getParent()) {
-            item = parent;
-        }
-        return item;
-    }
-
-    public void showItem(ITreeItem item) {
-        if (disposed) return;
-        if (treeViewer.getControl().isDisposed()) return;
-        treeViewer.setInput(getRoot(item));
-        treeViewer.reveal(item);
-        ISelection is = new StructuredSelection(item);
-        treeViewer.setSelection(is, true);
-    }
-
-    public void clearItem() {
-        if (disposed) return;
-        treeViewer.setInput(null);
-    }
-
-    public boolean isShown() {
-        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-        IViewPart part = page.findView(NavigatorUIUtil.NAVIGATOR_TREE_VIEW_ID);
-        return part != null;
-    }
-
-    public boolean toggleViewShowing() {
-        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-        IViewPart part = page.findView(NavigatorUIUtil.NAVIGATOR_TREE_VIEW_ID);
-
-        if (part != null) {
-            page.hideView(part);
-            return false;
-        } else {
-            try {
-                page.showView(NavigatorUIUtil.NAVIGATOR_TREE_VIEW_ID);
-                return true;
-            } catch (PartInitException e) {
-                e.printStackTrace();
-            }
-        }
-        return false;
-    }
-
-    private ModeContribution getModeContribution(String id) {
-        IViewSite viewSite = getViewSite();
-        IActionBars actionBars = viewSite.getActionBars();
-        IStatusLineManager manager = actionBars.getStatusLineManager();
-        return (ModeContribution) manager.find(id);
-    }
-    private void update(){
-        IViewSite viewSite = getViewSite();
-        IActionBars actionBars = viewSite.getActionBars();
-        IStatusLineManager manager = actionBars.getStatusLineManager();
-        manager.update(true);
-    }
-
-
-    public void setMode(IManipulator.Mode mode) {
-        ModeContribution mc = getModeContribution(ModeContribution.MODE_CONTRIBUTION_ID);
-        if (mc != null) {
-            mc.setMode(mode.name);
-            update();
-        }
-    }
-
-    public void showFennecName(String name) {
-        ModeContribution mc = getModeContribution(ModeContribution.MODE_CONTRIBUTION_ID);
-        if (mc != null) {
-            mc.showFennecName(name);
-            update();
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/voice/VoiceManager.java b/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/voice/VoiceManager.java
deleted file mode 100644
index caa7f96..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/src/org/eclipse/actf/ai/navigator/voice/VoiceManager.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.navigator.voice;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.NoSuchElementException;
-
-import org.eclipse.actf.ai.navigator.util.MessageFormatter;
-import org.eclipse.actf.ai.tts.ITTSEngine;
-import org.eclipse.actf.ai.voice.IVoice;
-import org.eclipse.actf.ai.voice.IVoiceEventListener;
-import org.eclipse.actf.ai.voice.VoiceUtil;
-
-
-
-
-public class VoiceManager implements IVoice {
-    // --------------------------------------------------------------------------------
-    // Singleton Class
-    // --------------------------------------------------------------------------------
-    // Later we should make it synchronized.
-    private static class SingletonVoice implements IVoiceEventListener {
-        final IVoice voice;
-        final LinkedList<VoiceManager> callbackQueue = new LinkedList<VoiceManager>();
-        VoiceManager lastVoiceManager;
-
-        public void indexReceived(int index) {
-            VoiceManager vm;
-            try {
-                if (index < 0) {
-                    vm = callbackQueue.removeFirst();
-                } else {
-                    vm = callbackQueue.getFirst();
-                }
-            } catch (NoSuchElementException e) {
-                return;
-            }
-            if ((vm != null) && (vm.eventListener != null)) {
-                vm.eventListener.indexReceived(index);
-            }
-        }
-
-        void manageCallback() {
-            Iterator<VoiceManager> it = callbackQueue.iterator();
-            while (it.hasNext()) {
-                VoiceManager vm = it.next();
-                if (vm.eventListener != null) {
-                    vm.eventListener.indexReceived(-1);
-                }
-            }
-            callbackQueue.clear();
-        }
-
-        void addEventQueue(VoiceManager vm) {
-            callbackQueue.add(vm);
-            lastVoiceManager = vm;
-        }
-
-        SingletonVoice() {
-            this.voice = VoiceUtil.getVoice();
-            this.voice.setEventListener(this);
-        }
-    }
-
-    private static SingletonVoice sv;
-
-    private SingletonVoice getSV() {
-        return sv;
-    }
-
-    private IVoice getVoice() {
-        return getSV().voice;
-    }
-
-    private void manageCallback() {
-        getSV().manageCallback();
-    }
-
-    private void addEventQueue() {
-        getSV().addEventQueue(this);
-    }
-
-    // --------------------------------------------------------------------------------
-    // MessageFormatter Service Function
-    // --------------------------------------------------------------------------------
-
-    private static final MessageFormatter messageFormatter = new MessageFormatter("org.eclipse.actf.ai.navigator.message.Speech");
-
-    public MessageFormatter getMessageFormatter() {
-        return messageFormatter;
-    }
-
-    // --------------------------------------------------------------------------------
-    // Instance Level Class Definition.
-    // --------------------------------------------------------------------------------
-    
-    private IVoiceEventListener eventListener;
-    private int currentIndex = 0;
-
-    private String speakString(String str, boolean maleVoice) {
-        // Currently do nothing.
-        if (false) {
-            if (maleVoice) {
-                str = "\\Vce=Gender=\"Male\"\\" + str;
-            } else {
-                str = "\\Vce=Gender=\"Female\"\\" + str;
-            }
-        }
-        return str;
-    }
-
-    public void speak(String str, boolean flush, boolean maleVoice) {
-        if (flush) manageCallback();
-        getVoice().speak(speakString(str, maleVoice), flush);
-    }
-
-    public void speakWithFormat(String str, boolean flush, boolean maleVoice) {
-        speak(getMessageFormatter().mes(str), flush, maleVoice);
-    }
-
-    public int getSpeed() {
-        return getVoice().getSpeed();
-    }
-
-    public void setSpeed(int speed) {
-        getVoice().setSpeed(speed);
-    }
-
-
-    public void speakWithCallback(String str, boolean flush, boolean maleVoice) {
-        if (flush) manageCallback();
-        if (str.length() > 0) {
-            addEventQueue();
-            getVoice().speak(speakString(str, maleVoice), flush, currentIndex);
-        } else {
-            if (eventListener != null) {
-                eventListener.indexReceived(-1);
-            }
-        }
-    }
-
-    public void stop() {
-        manageCallback();
-        getVoice().stop();
-    }
-
-    public VoiceManager(IVoiceEventListener listener) {
-        if (sv == null) {
-            sv = new SingletonVoice();
-        }
-        this.eventListener = listener;
-    }
-    
-    // --------------------------------------------------------
-    // For compatibility reason, we support IVoice functions.
-    // --------------------------------------------------------
-
-    public ITTSEngine getTTSEngine() {
-        return getVoice().getTTSEngine();
-    }
-
-    public void setEventListener(IVoiceEventListener eventListener) {
-        this.eventListener = eventListener;
-    }
-
-    public void speak(String text, boolean flush) {
-        speak(text, flush, true);
-    }
-
-    public void speak(String text, boolean flush, int index) {
-        currentIndex = index;
-        speakWithCallback(text, flush, true);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.navigator/waiting.wav b/plugins/org.eclipse.actf.ai.navigator/waiting.wav
deleted file mode 100644
index 6619bde..0000000
--- a/plugins/org.eclipse.actf.ai.navigator/waiting.wav
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.actf.ai.query/.classpath b/plugins/org.eclipse.actf.ai.query/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/plugins/org.eclipse.actf.ai.query/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.query/.cvsignore b/plugins/org.eclipse.actf.ai.query/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/plugins/org.eclipse.actf.ai.query/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/plugins/org.eclipse.actf.ai.query/.project b/plugins/org.eclipse.actf.ai.query/.project
deleted file mode 100644
index 6c8d5f2..0000000
--- a/plugins/org.eclipse.actf.ai.query/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.query</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.query/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.query/META-INF/MANIFEST.MF
deleted file mode 100644
index 35f5700..0000000
--- a/plugins/org.eclipse.actf.ai.query/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,13 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Query Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.query
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.internal.query.QueryPlugin
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.actf.model.dom.dombycom,
- org.eclipse.actf.util.vocab,
- org.eclipse.actf.core
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.actf.ai.query
diff --git a/plugins/org.eclipse.actf.ai.query/about.html b/plugins/org.eclipse.actf.ai.query/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.query/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.query/build.properties b/plugins/org.eclipse.actf.ai.query/build.properties
deleted file mode 100644
index 48fa51c..0000000
--- a/plugins/org.eclipse.actf.ai.query/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .
-source.. = src/
diff --git a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/internal/query/QueryPlugin.java b/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/internal/query/QueryPlugin.java
deleted file mode 100644
index 799af5a..0000000
--- a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/internal/query/QueryPlugin.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.internal.query;
-
-import org.eclipse.core.runtime.Plugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class QueryPlugin extends Plugin {
-
-	// The shared instance.
-	private static QueryPlugin plugin;
-
-	/**
-	 * The constructor.
-	 */
-	public QueryPlugin() {
-		plugin = this;
-	}
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		super.stop(context);
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance.
-	 */
-	public static QueryPlugin getDefault() {
-		return plugin;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/IQuery.java b/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/IQuery.java
deleted file mode 100644
index 402607e..0000000
--- a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/IQuery.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.query;
-
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * This represents a query object.
- */
-public interface IQuery {
-	/**
-	 * @param base
-	 *            the base node of the query.
-	 * @return the NodeList gathered by the query.
-	 */
-	NodeList query(Node base);
-
-	/**
-	 * @return whether the query has target attribute.
-	 */
-	boolean hasTarget();
-}
diff --git a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/QueryService.java b/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/QueryService.java
deleted file mode 100644
index 8bcc1a4..0000000
--- a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/QueryService.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.query;
-
-import org.eclipse.actf.ai.query.impl.QueryImpl;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * This class has factory methods for creating query objects.
- */
-public class QueryService {
-	/**
-	 * @param e
-	 *            the element to be parsed.
-	 * @param parentQuery
-	 *            the parent query of the query will be parsed.
-	 * @return new instance of query for "Fennec".
-	 */
-	public static IQuery parse(Element e, IQuery parentQuery) {
-		return QueryImpl.parse(e, parentQuery);
-	}
-
-	/**
-	 * @param xpath
-	 *            the XPath to be used in the query.
-	 * @return new instance of XPath query.
-	 */
-	public static IQuery createFromXPath(String xpath) {
-		return QueryImpl.parseXPath(xpath);
-	}
-
-	/**
-	 * @param domTarget
-	 *            the target DOM node to be queried by the created query.
-	 * @param usrParent
-	 *            the parent node of the created query.
-	 * @return new instance of query which returns the domTarget.
-	 */
-	public static Node serializeQuery(Node domTarget, Node usrParent) {
-		return QueryImpl.serializeQuery(domTarget, usrParent);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/FlashQueryImpl.java b/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/FlashQueryImpl.java
deleted file mode 100644
index 21539cd..0000000
--- a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/FlashQueryImpl.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.query.impl;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.actf.model.dom.dombycom.IFlashNode;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-
-public class FlashQueryImpl {
-    private static final String FLASH_QUERY_NS = "http://www.ibm.com/xmlns/prod/aiBrowser/fennec/flash-query";
-    private final String base;
-
-    private final Target[] targets;
-
-    private final boolean isFrameRangeSpecified;
-    private final int frameRangeMin;
-    private final int frameRangeMax;
-
-    private final boolean isDepthSpecified;
-    private final int depth;
-
-    private FlashQueryImpl(String base, List<Target> targetList,
-                           boolean isDepthSpecified, int depth,
-                           boolean isFrameRangeSpecified,
-                           int frameRangeMin, int frameRangeMax) {
-        this.base = base;
-        this.targets = targetList.toArray(new Target[targetList.size()]);
-        this.isDepthSpecified = isDepthSpecified;
-        this.depth = depth;
-        this.isFrameRangeSpecified = isFrameRangeSpecified;
-        this.frameRangeMin = frameRangeMin;
-        this.frameRangeMax = frameRangeMax;
-    }
-
-    static private abstract class Target {
-        protected boolean isRelative;
-        public abstract List<Node> query(IFlashNode fn, List<Node> r);
-    }
-
-    static private class SimpleTarget extends Target {
-        private final String path;
-
-        @Override
-        public List<Node> query(IFlashNode fn, List<Node> l) {
-            IFlashNode r;
-            if (isRelative) {
-                if (path.length() > 0) {
-                    r = fn.getNodeFromPath(fn.getTarget() + "." + path);
-                } else {
-                    r = fn;
-                }
-            } else {
-                r = fn.getNodeFromPath(path);
-            }
-            if (r != null) l.add(r);
-            return l;
-        }
-
-        SimpleTarget(String path) {
-            if (path.charAt(0) == '.') {
-                isRelative = true;
-                this.path = path.substring(1);
-            } else {
-                isRelative = false;
-                this.path = path;
-            }
-        }
-    }
-
-    static private class WildCardTarget extends Target {
-        private List<Object> pathSegments;
-
-        static private Pattern regExpQuote(String pat, char wildCardChar) {
-            StringBuffer r = new StringBuffer();
-            for (int i = 0; i < pat.length(); i++) {
-                char c = pat.charAt(i);
-                if (c == wildCardChar) {
-                    r.append(".*");
-                } else if (("\\?*+.[]{}()$^".indexOf(c) >= 0)) {
-                    r.append('\\');
-                    r.append(c);
-                } else {
-                    r.append(c);
-                }
-            }
-            return Pattern.compile(r.toString());
-        }
-
-        private boolean match(Pattern p, IFlashNode fn) {
-            String target = fn.getTarget();
-            int idx = target.lastIndexOf(".");
-            if (idx > 0) {
-                target = target.substring(idx + 1);
-            }
-            Matcher m = p.matcher(target);
-            return m.matches();
-        }
-
-        private ArrayList<Node> queryWC(IFlashNode fn, Pattern p, ArrayList<Node> l) {
-            IFlashNode[] fns = fn.getInnerNodes();
-            for (int i = 0; i < fns.length; i++) {
-                if (match(p, fns[i])) {
-                    l.add(fns[i]);
-                }
-            }
-            return l;
-        }
-
-        @Override
-        public List<Node> query(IFlashNode fn, List<Node> l) {
-            ArrayList<Node> cnl = new ArrayList<Node>();
-            Iterator<Object> it = pathSegments.iterator();
-            if (isRelative) {
-                cnl.add(fn);
-            } else {
-                if (!it.hasNext()) return l;
-                Object ps = it.next();
-                if (!(ps instanceof String)) return l;
-                IFlashNode fn2 = fn.getNodeFromPath((String) ps);
-                if (fn2 == null) return l;
-                cnl.add(fn2);
-            }
-            while (it.hasNext()) {
-                ArrayList<Node> cnl2 = new ArrayList<Node>();
-                Object ps = it.next();
-                if (ps instanceof String) {
-                    for (int i = 0; i < cnl.size(); i++) {
-                        IFlashNode fn2 = (IFlashNode) cnl.get(i);
-                        fn2 = fn2.getNodeFromPath(fn2.getTarget() + "." + ps);
-                        if (fn2 != null) cnl2.add(fn2);
-                    }
-                } else {
-                    for (int i = 0; i < cnl.size(); i++) {
-                        IFlashNode fn2 = (IFlashNode) cnl.get(i);
-                        cnl2 = queryWC(fn2, (Pattern) ps, cnl2);
-                    }
-                }
-                cnl = cnl2;
-                if (cnl.size() == 0) return l;
-            }
-            l.addAll(cnl);
-            return l;
-        }
-
-        WildCardTarget(String target, String base) {
-            pathSegments = new ArrayList<Object>();
-            char ct = target.charAt(0);
-            switch (ct) {
-            case '/':
-                isRelative = false;
-                target = target.substring(1);
-                break;
-            case '.':
-                isRelative = true;
-                target = target.substring(1);
-                break;
-            default:
-                isRelative = false;
-                target = base + "." + target;
-            }
-
-            StringBuffer buf = new StringBuffer();
-            String[] segs = target.split("\\.");
-            for (int i = 0; i < segs.length; i++) {
-                if (segs[i].indexOf('*') >= 0) {
-                    if (buf.length() > 0) {
-                        pathSegments.add(buf.toString());
-                        buf.setLength(0);
-                    }
-                    pathSegments.add(regExpQuote(segs[i], '*'));
-                } else {
-                    if (buf.length() > 0) {
-                        buf.append(".");
-                    }
-                    buf.append(segs[i]);
-                }
-            }
-            if (buf.length() > 0) {
-                pathSegments.add(buf.toString());
-            }
-        }
-    }
-
-    public boolean hasTarget() {
-        return targets.length > 0;
-    }
-
-    public List<Node> query(Node base) {
-        if (!(base instanceof IFlashNode)) return null;
-        IFlashNode fn = (IFlashNode) base;
-
-        List<Node> r = new ArrayList<Node>();
-        for (int i = 0; i < targets.length; i++) {
-            r = targets[i].query(fn, r);
-        }
-
-        if (isDepthSpecified) {
-            List<Node> r2 = new ArrayList<Node>();
-            Iterator<Node> it = r.iterator();
-            while (it.hasNext()) {
-                IFlashNode fn2 = (IFlashNode) it.next();
-                IFlashNode fnd = fn2.getNodeAtDepth(depth);
-                if (fnd != null) r2.add(fnd);
-            }
-            r = r2;
-        }
-        if (isFrameRangeSpecified) {
-            Iterator<Node> it = r.iterator();
-            while (it.hasNext()) {
-                IFlashNode fn2 = (IFlashNode) it.next();
-                int f = fn2.getCurrentFrame();
-                if (!((frameRangeMin <= f) && (f < frameRangeMax))) it.remove();
-            }
-        }
-
-        return r;
-    }
-
-    private static String computeBase(String path, String pbase) {
-        char ct = path.charAt(0);
-        switch (ct) {
-        case '/':
-            return path.substring(1);
-        case '.':
-            return path;
-        default:
-            if ((pbase.length() == 0) || (pbase.equals("."))) return path;
-            return pbase + "." + path;
-        }
-    }
-
-    static FlashQueryImpl parse(Element e, FlashQueryImpl parentQuery) {
-        String base = e.getAttributeNS(FLASH_QUERY_NS, "base");
-
-        String pbase = "";
-        if (parentQuery != null) {
-            pbase = parentQuery.base;
-        }
-        if (base.length() == 0) {
-            base = pbase;
-        } else {
-            base = computeBase(base, pbase);
-        }
-
-        String targetStr = e.getAttributeNS(FLASH_QUERY_NS, "targets");
-        ArrayList<Target> targetList = new ArrayList<Target>();
-        if (targetStr.length() > 0) {
-            String[] targets = targetStr.split("[ \t\r\n]");
-            for (int i = 0; i < targets.length; i++) {
-                if (targets[i].indexOf('*') >= 0) {
-                    targetList.add(new WildCardTarget(targets[i], base));
-                } else {
-                    targetList.add(new SimpleTarget(computeBase(targets[i], base)));
-                }
-            }
-        }
-
-        
-        String depthStr = e.getAttributeNS(FLASH_QUERY_NS, "depth");
-        boolean isDepthSpecified = false;
-        int depth = 0;
-        if (depthStr.length() > 0) {
-            try {
-                depth = Integer.parseInt(depthStr.trim());
-                isDepthSpecified = true;
-            } catch (NumberFormatException ex) {
-            }
-        }
-
-        boolean isFrameRangeSpecified = false;
-        int frameRangeMin = 0;
-        int frameRangeMax = 0;
-        String frameRangeStr = e.getAttributeNS(FLASH_QUERY_NS, "frameRange");
-        if (frameRangeStr.length() > 0) {
-            int pos = frameRangeStr.indexOf('-');
-            try {
-                if (pos < 0) {
-                    int m = Integer.parseInt(frameRangeStr.trim());
-                    frameRangeMin = m;
-                    frameRangeMax = m + 1;
-                } else {
-                    frameRangeMin = Integer.parseInt(frameRangeStr.substring(0, pos).trim());
-                    frameRangeMax = Integer.parseInt(frameRangeStr.substring(pos + 1).trim());
-                }
-                isFrameRangeSpecified = true;
-            } catch (NumberFormatException ex) {
-            }
-        }
-
-        FlashQueryImpl q = new FlashQueryImpl(base, targetList,
-                                              isDepthSpecified, depth,
-                                              isFrameRangeSpecified,
-                                              frameRangeMin,
-                                              frameRangeMax);
-
-        return q;
-    }
-
-    static Attr serializeQuery(Node domNode, Node usrNode) {
-        if (!(domNode instanceof IFlashNode))
-            return null;
-        Document doc = usrNode.getOwnerDocument();
-        String target = ((IFlashNode)domNode).getTarget();
-        if (target != null && target.length() > 0) {
-            Attr attr = doc.createAttributeNS(FLASH_QUERY_NS, "flq:targets");
-            attr.setNodeValue(target);
-            return attr;
-        }
-        return null;
-    }
-    
-}
diff --git a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/MSAAQueryImpl.java b/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/MSAAQueryImpl.java
deleted file mode 100644
index edc9503..0000000
--- a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/MSAAQueryImpl.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.query.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.model.dom.dombycom.IFlashMSAANode;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-
-public class MSAAQueryImpl {
-    private static final String MSAA_QUERY_NS = "http://www.ibm.com/xmlns/prod/aiBrowser/fennec/msaa-query";
-    private String[] ids;
-
-    private MSAAQueryImpl(String[] ids) {
-        this.ids = ids;
-    }
-    
-    public boolean hasTarget() {
-        return (ids != null);
-    }
-
-    public List<Node> query(Node base) {
-        if (ids == null) return null;
-        if (!(base instanceof IFlashMSAANode)) return null;
-        IFlashMSAANode mn = (IFlashMSAANode) base;
-
-        List<Node> r = new ArrayList<Node>();
-        for (int i = 0; i < ids.length; i++) {
-            IFlashMSAANode n = mn.searchByID(ids[i]);
-            if (n != null) r.add(n);
-        }
-        return r;
-    }
-
-    static MSAAQueryImpl parse(Element e, MSAAQueryImpl parentQuery) {
-        String[] ids = null;
-        String idrefs = e.getAttributeNS(MSAA_QUERY_NS, "idrefs");
-        if (idrefs.length() > 0) {
-            ids = idrefs.split("[ \r\n\t]");
-        }
-        return new MSAAQueryImpl(ids);
-    }
-    
-    static Attr serializeQuery(Node domNode, Node usrNode) {
-        if (!(domNode instanceof IFlashMSAANode))
-            return null;
-        Document doc = usrNode.getOwnerDocument();
-        String target = ((IFlashMSAANode)domNode).getID();
-        if (target != null && target.length() > 0) {
-            Attr attr = doc.createAttributeNS(MSAA_QUERY_NS, "msq:idrefs");
-            attr.setNodeValue(target);
-            return attr;
-        }
-        return null;
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/QueryImpl.java b/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/QueryImpl.java
deleted file mode 100644
index 1cb7adf..0000000
--- a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/QueryImpl.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.query.impl;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.actf.ai.query.IQuery;
-import org.eclipse.actf.model.dom.dombycom.IFlashNode;
-import org.eclipse.actf.model.dom.dombycom.IFlashMSAANode;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-
-public class QueryImpl implements IQuery {
-    private final XMLQueryImpl xmlQuery;
-
-    private final FlashQueryImpl flashQuery;
-
-    private final MSAAQueryImpl msaaQuery;
-
-    private QueryImpl(XMLQueryImpl xmlQuery,
-                      FlashQueryImpl flashQuery,
-                      MSAAQueryImpl msaaQuery) {
-        this.xmlQuery = xmlQuery;
-        this.flashQuery = flashQuery;
-        this.msaaQuery = msaaQuery;
-    }
-
-    public static QueryImpl parse(Element e, IQuery parentQuery) {
-        QueryImpl pq = null;
-        if (parentQuery == null) {
-            pq = null;
-        } else {
-            pq = (QueryImpl) parentQuery;
-        }
-
-        XMLQueryImpl xmlParentQuery;
-        if (pq == null) {
-            xmlParentQuery = null;
-        } else {
-            xmlParentQuery = pq.xmlQuery;
-        }
-        XMLQueryImpl xmlQuery = XMLQueryImpl.parse(e, xmlParentQuery);
-
-        FlashQueryImpl flashParentQuery;
-        if (pq == null) {
-            flashParentQuery = null;
-        } else {
-            flashParentQuery = pq.flashQuery;
-        }
-        FlashQueryImpl flashQuery = FlashQueryImpl.parse(e, flashParentQuery);
-
-        MSAAQueryImpl msaaParentQuery;
-        if (pq == null) {
-            msaaParentQuery = null;
-        } else {
-            msaaParentQuery = pq.msaaQuery;
-        }
-        MSAAQueryImpl msaaQuery = MSAAQueryImpl.parse(e, msaaParentQuery);
-
-        return new QueryImpl(xmlQuery, flashQuery, msaaQuery);
-    }
-
-    public static QueryImpl parseXPath(String xpath) {
-        XMLQueryImpl xmlQuery = XMLQueryImpl.parseXPath(xpath);
-        return new QueryImpl(xmlQuery, null, null);
-    }
-
-    private static class NodeListImpl implements NodeList {
-        private List<Node> nodeList;
-
-        public Node item(int index) {
-            if ((index < 0) || (index >= nodeList.size()))
-                return null;
-            return (Node) nodeList.get(index);
-        }
-
-        public int getLength() {
-            return nodeList.size();
-        }
-
-        NodeListImpl(List<Node> nodeList) {
-            if (nodeList == null) {
-                this.nodeList = new ArrayList<Node>(0);
-            } else {
-                this.nodeList = nodeList;
-            }
-        }
-    }
-
-    public boolean hasTarget() {
-        return (((xmlQuery != null) && xmlQuery.hasTarget()) || (flashQuery != null) && flashQuery.hasTarget());
-    }
-
-    public NodeList query(Node base) {
-        List<Node> result = null;
-        if ((xmlQuery != null) && (xmlQuery.hasTarget())) {
-            result = xmlQuery.query(base);
-        }
-        if ((flashQuery != null) && (flashQuery.hasTarget())) {
-            if (result == null) {
-                result = flashQuery.query(base);
-            } else {
-                List<Node> r = new ArrayList<Node>();
-                for (Iterator<Node> iter = result.iterator(); iter.hasNext();) {
-                    Node node = iter.next();
-                    if (!(node instanceof IFlashNode))
-                        continue;
-                    List<Node> list = flashQuery.query((IFlashNode)node);
-                    if (list != null)
-                        r.addAll(list);
-                }
-                result = r;
-            }
-        }
-        if ((msaaQuery != null) && (msaaQuery.hasTarget())) {
-            if (result == null) {
-                result = msaaQuery.query(base);
-            } else {
-                List<Node> r = new ArrayList<Node>();
-                for (Iterator<Node> iter = result.iterator(); iter.hasNext();) {
-                    Node node = iter.next();
-                    if (!(node instanceof IFlashNode))
-                        continue;
-                    List<Node> list = msaaQuery.query(((IFlashNode)node).getMSAA());
-                    if (list != null)
-                        r.addAll(list);
-                }
-                result = r;
-            }
-        }
-        return new NodeListImpl(result);
-    }
-
-    // --------------------------------------------------------------------------------
-    //  Query Serialization.
-    // --------------------------------------------------------------------------------
-    
-    public static final String Fennec_NAMESPACE_URI = "http://www.ibm.com/xmlns/prod/aiBrowser/fennec";
-    public static final String Fennec_NODE_ELEMENT_NAME = "node";
-    
-    public static Node serializeQuery(Node domTarget, Node usrParent) {
-        List<Attr> attrs = calcAttrs(domTarget, usrParent);
-        Node node = getNode(usrParent, attrs);
-        if (node != null) {
-            return node;
-        } else {
-            return createNode(usrParent, attrs);
-        }
-    }
-    
-    private static List<Attr> calcAttrs(Node domTarget, Node usrParent) {
-        List<Attr> attrs = new ArrayList<Attr>(2);
-        Node xmlNode;
-        Attr flashAttr;
-
-        if (domTarget instanceof IFlashNode) {
-            xmlNode = ((IFlashNode) domTarget).getBaseNode();
-            flashAttr = FlashQueryImpl.serializeQuery(domTarget, usrParent);
-        } else if (domTarget instanceof IFlashMSAANode) {
-            xmlNode = ((IFlashMSAANode) domTarget).getBaseNode();
-            flashAttr = MSAAQueryImpl.serializeQuery(domTarget, usrParent);
-        } else {
-            xmlNode = domTarget;
-            flashAttr = null;
-        }
-        Attr xmlAttr = XMLQueryImpl.serializeQuery(xmlNode, usrParent);
-        if (xmlAttr != null) attrs.add(xmlAttr);
-        if (flashAttr != null) attrs.add(flashAttr);
-
-        return attrs;
-    }
-
-    private static boolean match(Node node, List<Attr> attrs) {
-        NamedNodeMap map = node.getAttributes();
-        if (map == null)
-            return false;
-        for (Attr a : attrs) {
-             Node n = map.getNamedItemNS(a.getNamespaceURI(), a.getLocalName());
-             if (n == null)
-                 return false;
-             String s = a.getNodeValue();
-             String t = n.getNodeValue();
-             if (!s.equals(t))
-                 return false;
-        }
-        return true;
-    }
-    
-    private static Node getNode(Node parent, List<Attr> attrs) {
-        for (Node n = parent.getFirstChild(); n != null; n = n.getNextSibling()) {
-            if (match(n, attrs))
-                return n;
-        }
-        return null;
-    }
-    
-    private static Node createNode(Node parent, List<Attr> attrs) {
-        Document doc = parent.getOwnerDocument();
-        Node node = parent.insertBefore(doc.createElementNS(Fennec_NAMESPACE_URI, Fennec_NODE_ELEMENT_NAME), parent.getFirstChild());
-        NamedNodeMap map = node.getAttributes();
-        for (Attr a : attrs) {
-            map.setNamedItemNS(a);
-        }
-        return node;
-    }
-    
-}
diff --git a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/XMLQueryImpl.java b/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/XMLQueryImpl.java
deleted file mode 100644
index 4c07448..0000000
--- a/plugins/org.eclipse.actf.ai.query/src/org/eclipse/actf/ai/query/impl/XMLQueryImpl.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.query.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.model.dom.dombycom.IDocumentEx;
-import org.eclipse.actf.util.xpath.XPathService;
-import org.eclipse.actf.util.xpath.XPathServiceFactory;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-
-public class XMLQueryImpl {
-    private static final String XML_QUERY_NS = "http://www.ibm.com/xmlns/prod/aiBrowser/fennec/xml-query";
-    private static final XPathService xpathService = XPathServiceFactory.newService();
-    
-    private final String[] ids;
-
-    private Object compiledXPath;
-
-    private XMLQueryImpl(String[] ids, Object compiledXPath) {
-        this.ids = ids;
-        this.compiledXPath = compiledXPath;
-    }
-
-    public boolean hasTarget() {
-        return (ids != null) || (compiledXPath != null);
-    }
-
-    public List<Node> query(Node base) {
-        List<Node> result = null;
-
-        if (ids != null) {
-            if (result == null) {
-                result = new ArrayList<Node>();
-            }
-            Document doc = base.getOwnerDocument();
-            for (int i = 0; i < ids.length; i++) {
-                if (doc instanceof IDocumentEx) {
-                    List<Node> r = ((IDocumentEx) doc).getElementsByIdInAllFrames(ids[i]);
-                    result.addAll(r);
-                } else {
-                    Node n = doc.getElementById(ids[i]);
-                    if (n != null) result.add(n);
-                }
-            }
-
-        }
-        if (compiledXPath != null) {
-            NodeList nl = xpathService.evalForNodeList(compiledXPath, base);
-            if (nl != null) {
-                int len = nl.getLength();
-                if (len > 0) {
-                    if (result == null) {
-                        result = new ArrayList<Node>(len);
-                    }
-                    for (int i = 0; i < len; i++) {
-                        result.add(nl.item(i));
-                    }
-                }
-            }
-        }
-        return result;
-    }
-
-    static XMLQueryImpl parse(Element e, XMLQueryImpl parentQuery) {
-        String[] ids = null;
-        
-        String idrefs = e.getAttributeNS(XML_QUERY_NS, "idrefs");
-        if (idrefs.length() > 0) {
-            ids = idrefs.split("[ \r\n\t]");
-        }
-        String path = e.getAttributeNS(XML_QUERY_NS, "path");
-
-        Object compiled = null;
-        if (path.length() > 0) {
-            compiled = xpathService.compile(path);
-        }
-        return new XMLQueryImpl(ids, compiled);
-    }
-
-    // --------------------------------------------------------------------------------
-    //    XPath Query Service
-    // --------------------------------------------------------------------------------
-    static XMLQueryImpl parseXPath(String xpath) {
-        Object compiled = xpathService.compile(xpath);
-        return new XMLQueryImpl(null, compiled);
-    }
-
-    // --------------------------------------------------------------------------------
-    //    Query Serialization
-    // --------------------------------------------------------------------------------
-    
-    static Attr serializeQuery(Node domNode, Node usrNode) {
-        Document doc = usrNode.getOwnerDocument();
-        String id = getID(domNode);
-        if (id != null && id.length() > 0) {
-            Attr attr = doc.createAttributeNS(XML_QUERY_NS, "loc:idrefs");
-            attr.setNodeValue(id);
-            return attr;
-        }
-        String path = getXPath(domNode);
-        if (path != null && path.length() > 0) {
-            Attr attr = doc.createAttributeNS(XML_QUERY_NS, "loc:path");
-            attr.setNodeValue(path);
-            return attr;
-        }
-        return null;
-    }
-
-    private static String getID(Node node) {
-        if (!(node instanceof Element))
-            return null;
-        Element e = (Element) node;
-        return e.getAttribute("id");
-    }
-
-    private static String checkID(Node n) {
-        if (!(n instanceof Element)) return null;
-        Element e = (Element) n;
-        String id = e.getAttribute("id");
-        if (id == null) return null;
-        Document doc = e.getOwnerDocument();
-        Node e2 = doc.getElementById(id);
-        if (!e.isSameNode(e2)) return null;
-        // ':' is not allowed according to XML spec.
-        if (id.indexOf(':') >= 0) return null;
-        return id;
-    }
-    
-    private static String getXPath(Node node) {
-//      return XPathCreator.childPathSequence(n);
-        StringBuffer ret = new StringBuffer();
-        for (Node n = node; n != null; n = n.getParentNode()) {
-//          /* /HTML[1]/ -> ./ */
-//          if (node.getParentNode() instanceof Document) {
-//              ret.insert(0, '.');
-//              break;
-//          }
-            if (n instanceof Document) {
-                break;
-            }
-
-            String id = checkID(n);
-            // if (id != null) System.err.println("ID " + id + " is used");
-            if (id != null) {
-                ret.insert(0, "\")");
-                ret.insert(0, id);
-                ret.insert(0, "id(\"");
-                break;
-            }
-
-            String name = n.getNodeName();
-            int k = 1;
-            if (name.startsWith("#")) {
-//                ITreeItem a = item.getParent();
-//                Node p = node.getParentNode();
-//                if (a != null) {
-//                    for (ITreeItem c : a.getChildItems()) {
-//                        if (c == item)
-//                            break;
-//                        Object o = c.getBaseNode();
-//                        if (!(o instanceof Node))
-//                            continue;
-//                        Node n = (Node) o;
-//                        if (n.getParentNode() == p && n.getNodeName().equals(name))
-//                            ++k;
-//                    }
-//                }
-                /* currently text() is not supported */
-//              return calcPath(a); // query the parent node in the nav tree
-                continue;           // query the parent node in the DOM tree
-            }
-            else {
-                Node p = n.getParentNode();
-                if (p != null) {
-                    for (Node c = p.getFirstChild(); c != null; c = c.getNextSibling()) {
-                        if (c == n)
-                            break;
-                        if (c.getNodeName().equals(name))
-                            ++k;
-                    }
-                }
-            }
-            ret.insert(0, ']');
-            ret.insert(0, k);
-            ret.insert(0, '[');
-            ret.insert(0, getNodeNameForXPath(n.getNodeName()));
-            ret.insert(0, '/');
-        }
-        return ret.toString();
-    }
-
-    private static String getNodeNameForXPath(String s) {
-        if (s.startsWith("#"))
-            return s.substring(1) + "()";
-        else
-            return s;
-    }
-    
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/.classpath b/plugins/org.eclipse.actf.ai.screenreader.jaws/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/.cvsignore b/plugins/org.eclipse.actf.ai.screenreader.jaws/.cvsignore
deleted file mode 100644
index 0552078..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-Default.JKM
-jawsapi-bridge.ilk
-jawsapi-bridge.lib
-jawsapi-bridge.pdb
-jawsapi-bridge.exp
-build
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/.project b/plugins/org.eclipse.actf.ai.screenreader.jaws/.project
deleted file mode 100644
index 00ca2e9..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.screenreader.jaws</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.screenreader.jaws/META-INF/MANIFEST.MF
deleted file mode 100644
index 9829d1c..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Jaws Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.screenreader.jaws;singleton:=true
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.screenreader.jaws.JawsPlugin
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.actf.core,
- org.eclipse.actf.ai.navigator,
- org.eclipse.actf.ai.voice,
- org.eclipse.actf.model.ui
-Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/about.html b/plugins/org.eclipse.actf.ai.screenreader.jaws/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/build.properties b/plugins/org.eclipse.actf.ai.screenreader.jaws/build.properties
deleted file mode 100644
index 6fb66aa..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/build.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .,\
-               plugin.xml,\
-               jawsapi-bridge.dll
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/.cvsignore b/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/.cvsignore
deleted file mode 100644
index a80d792..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*.pdb
-org_eclipse_actf_ai_screenreader_jaws_JawsAPI.h
-org_eclipse_actf_ai_screenreader_jaws_JawsWindowUtil.h
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/Common.h b/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/Common.h
deleted file mode 100644
index e0f0f1c..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/Common.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-#ifndef __COMMON_H__
-#define __COMMON_H__
-extern void init_jaws_window(HWND top);
-extern void set_jaws_window_text(LPTSTR text);
-extern void reset_jaws_window();
-extern void attachThread();
-extern int callback(int param);
-#endif /* not __COMMON_H__ */
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/IEWindow.cpp b/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/IEWindow.cpp
deleted file mode 100644
index 227a923..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/IEWindow.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-#include <atlbase.h>
-#include <atlconv.h>
-#include <shlguid.h>
-#include <tchar.h>
-#include <windows.h>
-#include "org_eclipse_actf_ai_screenreader_jaws_JawsWindowUtil.h"
-
-WNDPROC original_winproc;
-
-static const TCHAR IE_window_class_name[] = _T("Internet Explorer_Server");
-static UINT wm_html_getobject_msgid;
-
-static HWND
-getBrowserHWND(IWebBrowser2* iwebUnk)
-{
-    IOleWindow* iOleWindow;
-    HWND hwnd;
-    HRESULT hr = iwebUnk->get_HWND((LONG_PTR*) &hwnd);
-    if (SUCCEEDED(hr)) return hwnd;
-    hr = iwebUnk->QueryInterface(IID_IOleWindow, (void **)&iOleWindow);
-    if (FAILED(hr)) return NULL;
-    hr = iOleWindow->GetWindow(&hwnd);
-    iOleWindow->Release();
-    if (FAILED(hr)) return NULL;
-    return hwnd;
-}
-
-static void walkThroughWindow(HWND top);
-static void overrideWindowProc(HWND hwnd);
-static LRESULT CALLBACK dummy_winproc(HWND hWnd, UINT cmd, WPARAM wParam, LPARAM lParam);
-
-static void checkIEWindow(HWND hwnd)
-{
-    TCHAR className[sizeof(IE_window_class_name) + 1 + 1];
-    if (GetClassName(hwnd, className, sizeof(className))) {
-#if 0
-	fprintf(stderr, "HWND:%x, %s\n", hwnd, className);
-	fflush(stderr);
-#endif
-	if (_tcscmp(IE_window_class_name, className) == 0) {
-	    overrideWindowProc(hwnd);
-	}
-    }
-    walkThroughWindow(hwnd);
-}
-
-static void overrideWindowProc(HWND ie_hWnd)
-{
-    if (!ie_hWnd) return;
-  
-    LONG_PTR ptr = GetWindowLongPtr(ie_hWnd, GWLP_WNDPROC);
-#if 0
-    printf("BEFORE : %x\n", ptr);
-#endif
-  
-    if (ptr != (LONG_PTR) dummy_winproc) {
-	if ((LONG_PTR) original_winproc != ptr) {
-	    original_winproc = (WNDPROC) ptr;
-	    WNDCLASS wc;
-	    wc.lpfnWndProc = dummy_winproc;
-	    wc.lpszClassName = _T("Eclipse ACTF Accessibility Internet Explorer_Server");
-	    RegisterClass(&wc);
-	}
-	SetWindowLongPtr(ie_hWnd, GWLP_WNDPROC, (LONG_PTR) dummy_winproc);
-    }
-  
-    ptr = GetWindowLongPtr(ie_hWnd, GWLP_WNDPROC);
-#if 0
-    printf("AFTER : %x\n", ptr);
-    fflush(stdout);
-#endif
-}
-
-static void
-walkThroughWindow(HWND top)
-{
-    HWND nextChild = GetWindow(top, GW_CHILD);
-    while (nextChild) {
-	checkIEWindow(nextChild);
-	nextChild = GetWindow(nextChild, GW_HWNDNEXT);
-    }
-}
-
-
-static LRESULT CALLBACK 
-dummy_winproc(HWND hWnd, UINT cmd, WPARAM wParam, LPARAM lParam)
-{
-    if (cmd == wm_html_getobject_msgid) {
-	// fprintf(stderr, "JAWS tries to bite!!\n");
-	// fflush(stderr);
-	return 0;
-    } else if (cmd == WM_GETOBJECT) {
-	return 0;
-    } else if (original_winproc) {
-	return CallWindowProc(original_winproc,
-			      hWnd, cmd, wParam,
-			      lParam);
-    }
-    return 0;
-}
-
-/*
- * Class:     org_eclipse_actf_ai_screenreader_jaws_JawsAPI
- * Method:    _TakeBackControl
- * Signature: (J)Z
- */
-jboolean JNICALL
-Java_org_eclipse_actf_ai_screenreader_jaws_JawsWindowUtil__1TakeBackControl
-(JNIEnv *env, jclass clazz, jlong browser)
-{
-    wm_html_getobject_msgid = RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));
-#if 0
-    HWND ie_hWnd = getBrowserHWND((IWebBrowser2 *) browser);
-    overrideWindowProc(HWND ie_hWnd);
-#else
-    walkThroughWindow((HWND) browser);
-#endif
-    return JNI_TRUE;
-}
-
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/JawsWindow.cpp b/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/JawsWindow.cpp
deleted file mode 100644
index 8949bd5..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/JawsWindow.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-#include <atlbase.h>
-#include <tchar.h>
-#include <windows.h>
-#include "common.h"
-
-static const TCHAR Jaws_window_class_name[] = _T("Jaws-aiBrowser-Communication");
-static HWND jaws_window;
-static HWND top;
-static HANDLE jaws_window_event_handle;
-static HANDLE jaws_window_thread;
-static UINT wm_jaws_aibrowser_msgid;
-
-static WNDPROC base_edit_proc;
-
-static int jaws_window_show_state;
-
-#define WM_JW_SETUP (WM_USER + 100)
-#define WM_JW_RESET (WM_USER + 101)
-
-static int
-adjust_jaws_window(HWND hwnd, int x, int y, int width, int height)
-{
-    if (!IsWindowVisible(hwnd)) {
-	ShowWindow(hwnd, SW_SHOW);
-	// -1 means the space for thickframe.
-	SetWindowPos(hwnd, HWND_TOP, 0, y, width - 1, height - 1, 0);
-    }
-    return 1;
-}
-
-static LRESULT CALLBACK 
-jaws_window_wndproc(HWND hWnd, UINT cmd, WPARAM wParam, LPARAM lParam)
-{
-    if (cmd == wm_jaws_aibrowser_msgid) {
-	//fprintf(stderr, "JAWS sent message, %d!!!\n", wParam);
-	//fflush(stderr);
-	callback((int) wParam);
-	return 1;
-    } else if (cmd == WM_JW_SETUP) {
-	RECT baserect;
-	if (!GetClientRect(top, &baserect)) return 0;
-	int width = baserect.right - baserect.left;
-	//int y = baserect.bottom - baserect.top - 200;
-	int y = 0;
-	int height = baserect.bottom - baserect.top;
-	return adjust_jaws_window(hWnd, 0, y, width, height);
-    } else if (cmd == WM_JW_RESET) {
-	if (IsWindowVisible(hWnd)) {
-	    ShowWindow(hWnd, SW_HIDE);
-	    return 1;
-	}
-	return 0;
-    }
-    return CallWindowProc(base_edit_proc, hWnd, cmd, wParam, lParam);
-}
-
-static DWORD WINAPI
-init_jaws_window_internal(LPVOID topwv)
-{
-    attachThread();
-    top = (HWND) topwv;
-    WNDCLASS wc;
-    // HINSTANCE hInst = (HINSTANCE) GetModuleHandle(0);
-    HINSTANCE hInst = NULL;
-
-#if 1
-    GetClassInfo(NULL, "Edit", &wc);
-
-    base_edit_proc = wc.lpfnWndProc;
-    wc.lpfnWndProc = jaws_window_wndproc;
-    wc.lpszClassName = Jaws_window_class_name;
-    wc.hInstance = hInst;
-    // wc.style &= (~CS_NOCLOSE);
-    // wc.style = 0;
-#else
-    wc.style = CS_BYTEALIGNCLIENT;
-    wc.lpfnWndProc = DefWindowProc;
-    wc.cbClsExtra = 0;
-    wc.cbWndExtra = 0;
-    wc.hInstance = hInst;
-    wc.hIcon = (HICON) NULL;
-    wc.hCursor = (HCURSOR) NULL;
-    wc.hbrBackground = (HBRUSH)(COLOR_BACKGROUND + 1);
-    wc.lpszMenuName = NULL;
-    wc.lpszClassName = Jaws_window_class_name;
-#endif
-
-    RegisterClass(&wc);
-
-    jaws_window = CreateWindowEx(
-	//WS_EX_TOPMOST | WS_EX_PALETTEWINDOW | WS_EX_OVERLAPPEDWINDOW,
-	0,
-	Jaws_window_class_name,
-	NULL,
-	ES_LEFT | ES_MULTILINE | ES_NOHIDESEL | ES_AUTOVSCROLL
-	| WS_CHILDWINDOW | WS_THICKFRAME,
-//	WS_CHILD,
-	0, 0, 1, 1,
-	top, NULL, hInst, NULL);
-    SetEvent(jaws_window_event_handle);
-    MSG msg;
-    while (GetMessage(&msg, NULL, 0, 0)) {
-	TranslateMessage(&msg);
-	DispatchMessage(&msg);
-    }
-    return 0;
-}
-
-void
-init_jaws_window(HWND top)
-{
-    wm_jaws_aibrowser_msgid = RegisterWindowMessage(_T("WM_JAWS_AIBROWSER_MESSAGE"));
-    jaws_window_event_handle = CreateEvent(NULL, TRUE, FALSE, NULL);
-    jaws_window_thread = CreateThread(NULL, 1024, init_jaws_window_internal, top, 0, NULL);
-}
-
-void
-set_jaws_window_text(LPTSTR text)
-{
-    while (!jaws_window) {
-	Sleep(1);
-    }
-    HWND hwnd = jaws_window;
-#if 1
-    SendMessage(hwnd, WM_JW_SETUP, 0, 0);
-    int len = lstrlen(text);
-    LPTSTR newtext = (LPTSTR) malloc(len * sizeof(TCHAR) + 20);
-    lstrcpy(newtext, "\r\n ");
-    lstrcat(newtext, text);
-    lstrcat(newtext, " \r\n\r\n");
-    SendMessage(hwnd, WM_SETTEXT, 0, (LPARAM) newtext);
-    SendMessage(hwnd, EM_SETSEL, 2, 2);
-    free(newtext);
-#else
-    SetWindowText(hwnd, text);
-#endif
-}
-
-void
-reset_jaws_window()
-{
-    while (!jaws_window) {
-	Sleep(1);
-    }
-    if (SendMessage(jaws_window, WM_JW_RESET, 0, 0)) {
-	SetFocus(top);
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/Makefile b/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/Makefile
deleted file mode 100644
index 0c01b9c..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     Hisashi MIYASHITA - initial API and implementation
-###############################################################################
-
-BASEPKG = org.eclipse.actf.ai.screenreader.jaws
-JAVAH = "$(JAVA_HOME:/=\)\bin\javah"
-JAVAH_FLAGS = -classpath ../bin
-JAVA_INC = "$(JAVA_HOME)/include"
-BLD = ..\build
-CC = cl.exe
-CFLAGS = -c -Zi -Od -I $(JAVA_INC)
-LINK = link.exe
-LDFLAGS = -debug -dll
-LIBS = User32.lib AdvAPI32.lib
-
-OBJS = $(BLD)\jawsapi-bridge.obj $(BLD)\IEWindow.obj $(BLD)\JawsWindow.obj
-DLL = ../jawsapi-bridge.dll
-
-all: init headers $(DLL)
-
-init:
-	-mkdir $(BLD)
-
-clean:
-	-rd /S/Q $(BLD)
-
-headers: 
-	$(JAVAH) $(JAVAH_FLAGS) $(BASEPKG).JawsAPI $(BASEPKG).JawsWindowUtil
-
-$(DLL): $(OBJS)
-	$(LINK) $(LDFLAGS) $(OBJS) -out:$(DLL) $(LIBS)
-
-.cpp{$(BLD)}.obj:
-	$(CC) $(CFLAGS) -Fo$(BLD)\ $<
-
-
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/jawsapi-bridge.cpp b/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/jawsapi-bridge.cpp
deleted file mode 100644
index 0b86151..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/cpp/jawsapi-bridge.cpp
+++ /dev/null
@@ -1,321 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *    Daisuke SATO
- *    Yevgen Borodin - [Bug 226468]
- *******************************************************************************/
-//#define UNICODE
-#include <stdlib.h>
-#include <malloc.h>
-#include <tchar.h>
-#include <windows.h>
-//#include "stdafx.h"
-#include "common.h"
-#include "org_eclipse_actf_ai_screenreader_jaws_JawsAPI.h"
-#include "org_eclipse_actf_ai_screenreader_jaws_JawsWindowUtil.h"
-
-typedef BOOL (WINAPI *JFWRunFunctionType)(LPCTSTR lpszFuncName);
-typedef BOOL (WINAPI *JFWSayStringType)(LPCTSTR lpszStringToSpeak,BOOL bInterrupt);
-typedef BOOL (WINAPI *JFWStopSpeechType)(void);
-typedef BOOL (WINAPI *JFWRunScriptType)(LPCTSTR lpszScriptName);
-
-static JFWRunFunctionType JFWRunFunctionProc;
-static JFWSayStringType JFWSayStringProc;
-static JFWStopSpeechType JFWStopSpeechProc;
-static JFWRunScriptType JFWRunScriptProc;
-
-static const TCHAR jaws_registry_path[] = "SOFTWARE\\Freedom Scientific\\JAWS";
-static const TCHAR jaws_api_dllname[] = "jfwapi.dll";
-
-static JavaVM *jvm;
-static jclass class_JawsWindowUtil;
-static jmethodID callBackMethodID;
-
-static LPTSTR
-findJFWAPIDLL()
-{
-    DWORD size;
-    HKEY hjawsKey, hjawsVerKey;
-    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, jaws_registry_path,
-		     0, KEY_READ, &hjawsKey) != ERROR_SUCCESS) {
-	return NULL;
-    }
-    TCHAR buf[MAX_PATH];
-    TCHAR verKeyPath[MAX_PATH];
-    verKeyPath[0] = '\0';
-    int i;
-    size = sizeof(buf) / sizeof(TCHAR);
-    for (i = 0; ; i++) {
-	if (RegEnumKeyEx(hjawsKey, i, buf, &size,
-			 NULL, NULL, NULL, NULL) != ERROR_SUCCESS) break;
-	//fprintf(stderr, "%s\n", buf);
-	if (_tcscmp(buf, verKeyPath) > 0) {
-	    _tcscpy(verKeyPath, buf);
-	}
-    }
-    LPTSTR verKeyFullPath = (LPTSTR) alloca(sizeof(TCHAR) * (size + 2) + sizeof(jaws_registry_path));
-    _tcscpy(verKeyFullPath, jaws_registry_path);
-    _tcscat(verKeyFullPath, "\\");
-    _tcscat(verKeyFullPath, verKeyPath);
-    //fprintf(stderr, "%s\n", verKeyFullPath);
-    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, verKeyFullPath,
-		     0, KEY_READ, &hjawsVerKey) != ERROR_SUCCESS) {
-	goto error;
-    }
-    DWORD dwType;
-    if (RegQueryValueEx(hjawsVerKey, "Target", NULL, &dwType, NULL, &size) != ERROR_SUCCESS) {
-	goto error2;
-    }
-    if (dwType != REG_SZ) {
-	goto error2;
-    }
-    LPTSTR ret = (LPTSTR) malloc((size + 1 + 1) * sizeof(TCHAR) + sizeof(jaws_api_dllname));
-    if (RegQueryValueEx(hjawsVerKey, "Target", NULL, &dwType, (LPBYTE) ret, &size) != ERROR_SUCCESS) {
-	free(ret);
-	goto error2;
-    }
-    int len = _tcslen(ret);
-    if (ret[len - 1] != '\\') {
-	_tcscat(ret, "\\");
-    }
-    _tcscat(ret, jaws_api_dllname);
-    // fprintf(stderr, "%s\n", ret);
-    RegCloseKey(hjawsVerKey);
-    RegCloseKey(hjawsKey);
-    return ret;
-
-error2:
-    RegCloseKey(hjawsVerKey);
-error:
-    RegCloseKey(hjawsKey);
-    return NULL;
-}
-
-static LPTSTR
-convertJavaString(JNIEnv* env, jstring jstr)
-{
-    int len = env->GetStringLength(jstr);
-    int bufsize = len * 2 + 10;
-    LPCWSTR wstr = (LPWSTR) env->GetStringChars(jstr, NULL);
-    LPTSTR tstr = (LPTSTR) malloc(bufsize);
-    int idx = WideCharToMultiByte(CP_ACP, 0, wstr, len, tstr, bufsize, NULL, NULL);
-    tstr[idx] = '\0';
-    env->ReleaseStringChars(jstr, (jchar*) wstr);
-#if 0
-    {
-	int i;
-	printf("%s\n", tstr);
-	for (i = 0; i < idx; i++) {
-	    int c = ((unsigned char*) tstr)[i];
-	    printf("%X ", c);
-	}
-	printf("\n", tstr[i]);
-    }
-#endif
-    return tstr;
-}
-
-
-/*
- * Class:     org_eclipse_actf_ai_screenreader_jaws_JawsWindowUtil
- * Method:    _initializeWindow
- * Signature: ()Z
- */
-jboolean JNICALL
-Java_org_eclipse_actf_ai_screenreader_jaws_JawsWindowUtil__1initializeWindow
-(JNIEnv* env, jclass jcls, jint topwnd)
-{
-    LPTSTR jfwapidllpath = findJFWAPIDLL();
-    if (!jfwapidllpath) {
-	fprintf(stderr, "Could not find out jfwapi.dll\n");
-	return JNI_FALSE;
-    }
-    
-    env->GetJavaVM(&jvm);
-    class_JawsWindowUtil = (jclass) env->NewGlobalRef(jcls);
-    callBackMethodID = env->GetStaticMethodID(class_JawsWindowUtil, "callBack", "(I)Z");
-
-    init_jaws_window((HWND) topwnd);
-    
-    return JNI_TRUE;
-}
-
-
-/*
- * Class:     org_eclipse_actf_ai_screenreader_jaws_JawsAPI
- * Method:    _initialize
- * Signature: ()Z
- */
-JNIEXPORT jboolean JNICALL Java_org_eclipse_actf_ai_screenreader_jaws_JawsAPI__1initialize
-(JNIEnv* env, jclass jcls)
-{
-    HMODULE h;
-    LPTSTR jfwapidllpath = findJFWAPIDLL();
-    if (!jfwapidllpath) {
-	fprintf(stderr, "Could not find out jfwapi.dll\n");
-	return JNI_FALSE;
-	
-    }
-    h = LoadLibrary(jfwapidllpath);
-    free(jfwapidllpath);
-	
-    if (!h) {
-        fprintf(stderr, "Can't load the \"jfwapi.dll\"\n");
-	return JNI_FALSE;
-    }
-    
-
-
-    JFWRunFunctionProc = (JFWRunFunctionType) GetProcAddress(h, "JFWRunFunction");
-    if (!JFWRunFunctionProc) {
-	fprintf(stderr, "Could not obtain JFWRunFunction entry pointer.\n");
-	//return JNI_FALSE;
-    }
-    JFWSayStringProc = (JFWSayStringType) GetProcAddress(h, "JFWSayString");
-    if (!JFWSayStringProc) {
-	fprintf(stderr, "Could not obtain JFWSayString entry pointer.\n");
-	//return JNI_FALSE;
-    }
-    JFWStopSpeechProc = (JFWStopSpeechType) GetProcAddress(h, "JFWStopSpeech");
-    if (!JFWStopSpeechProc) {
-	fprintf(stderr, "Could not obtain JFWStopSpeech entry pointer.\n");
-	//return JNI_FALSE;
-    }
-    JFWRunScriptProc = (JFWRunScriptType)  GetProcAddress(h, "JFWRunScript");
-    if (!JFWRunScriptProc) {
-	fprintf(stderr, "Could not obtain JFWRunScript entry pointer.\n");
-	//return JNI_FALSE;
-    }
-
-    return JNI_TRUE;
-}
-
-/*
- * Class:     org_eclipse_actf_ai_screenreader_jaws_JawsAPI
- * Method:    _isAvailable
- * Signature: ()Z
- */
-jboolean JNICALL
-Java_org_eclipse_actf_ai_screenreader_jaws_JawsAPI__1isAvailable
-(JNIEnv *, jclass)
-{
-    //HWND hwnd = FindWindow("JFWUI2", NULL);
-    HWND hwnd = FindWindow(NULL, "JAWS");
-    if (hwnd == NULL) return JNI_FALSE;
-    return JNI_TRUE;
-}
-
-/*
- * Class:     org_eclipse_actf_ai_screenreader_jaws_JawsAPI
- * Method:    _JawsRunFunction
- * Signature: (Ljava/lang/String;)Z
- */
-JNIEXPORT jboolean JNICALL Java_org_eclipse_actf_ai_screenreader_jaws_JawsAPI__1JawsRunFunction
-  (JNIEnv *env, jclass jcls, jstring jstringFuncName)
-{
-  if (!JFWRunFunctionProc) 
-    return JNI_FALSE;
-  LPTSTR str = convertJavaString(env, jstringFuncName);
-  jboolean b = (JFWRunFunctionProc)(str);
-  free(str);
-  return b;
-}
-
-/*
- * Class:     Java_org_eclipse_actf_ai_screenreader_jaws_JawsAPI_JawsRunFunction
- * Method:    JawsSayString
- * Signature: (Ljava/lang/String;Z)Z
- */
-jboolean JNICALL
-Java_org_eclipse_actf_ai_screenreader_jaws_JawsAPI__1JawsSayString
-(JNIEnv *env, jclass jcls, jstring jstringToSpeak, jboolean bInterrupt)
-{
-    if (!JFWSayStringProc)
-      return JNI_FALSE;
-    LPTSTR str = convertJavaString(env, jstringToSpeak);
-    jboolean b = (JFWSayStringProc)(str, bInterrupt);
-    free(str);
-    return b;
-}
-
-
-/*
- * Class:     Java_org_eclipse_actf_ai_screenreader_jaws_JawsAPI_JawsRunFunction
- * Method:    JawsStopSpeech
- * Signature: ()Z
- */
-jboolean JNICALL
-Java_org_eclipse_actf_ai_screenreader_jaws_JawsAPI__1JawsStopSpeech
-(JNIEnv *env, jclass jcls)
-{
-    if (!JFWStopSpeechProc)
-      return JNI_FALSE;
-    return (JFWStopSpeechProc)();
-}
-
-/*
- * Class:     Java_org_eclipse_actf_ai_screenreader_jaws_JawsAPI_JawsRunFunction
- * Method:    JawsRunScript
- * Signature: (Ljava/lang/String;)Z
- */
-jboolean JNICALL
-Java_org_eclipse_actf_ai_screenreader_jaws_JawsAPI__1JawsRunScript
-(JNIEnv *env, jclass jcls, jstring jscriptName)
-{
-    if (!JFWRunScriptProc)
-      return JNI_FALSE;
-    LPTSTR str = convertJavaString(env, jscriptName);
-    jboolean b = (JFWRunScriptProc)(str);
-    free(str);
-
-    return b;
-}
-
-/*
- * Class:     org_eclipse_actf_ai_screenreader_jaws_JawsWindowUtil
- * Method:    _setJawsWindowText
- * Signature: (Ljava/lang/String;)Z
- */
-jboolean JNICALL
-Java_org_eclipse_actf_ai_screenreader_jaws_JawsWindowUtil__1setJawsWindowText
-(JNIEnv *env, jclass jcls, jstring text)
-{
-    LPTSTR str = convertJavaString(env, text);
-    set_jaws_window_text(str);
-    free(str);
-    return JNI_TRUE;
-}
-
-/*
- * Class:     org_eclipse_actf_ai_screenreader_jaws_JawsWindowUtil
- * Method:    _resetJawsWindowText
- * Signature: ()Z
- */
-jboolean JNICALL
-Java_org_eclipse_actf_ai_screenreader_jaws_JawsWindowUtil__1resetJawsWindowText
-(JNIEnv *env, jclass jcls)
-{
-    reset_jaws_window();
-    return JNI_TRUE;
-}
-
-void attachThread()
-{
-    JNIEnv *env;
-    jvm->AttachCurrentThread((void**) &env, NULL);
-}
-
-int callback(int param)
-{
-    JNIEnv *env;
-    if (jvm->GetEnv((void**) &env, JNI_VERSION_1_2) != JNI_OK) return 0;
-    return env->CallStaticBooleanMethod(class_JawsWindowUtil,
-					callBackMethodID,
-					(jint) param);
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/jawsapi-bridge.dll b/plugins/org.eclipse.actf.ai.screenreader.jaws/jawsapi-bridge.dll
deleted file mode 100644
index 70a1515..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/jawsapi-bridge.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/plugin.xml b/plugins/org.eclipse.actf.ai.screenreader.jaws/plugin.xml
deleted file mode 100644
index 2e89226..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/plugin.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-   <extension
-         point="org.eclipse.actf.ai.voice.TTSEngine">
-      <engine
-            class="org.eclipse.actf.ai.screenreader.jaws.Jaws"
-            description="JAWS"
-            id="org.eclipse.actf.ai.screenreader.jaws.Jaws"
-            name="JAWS"
-            priority="1000"/>
-   </extension>
-   <extension
-         point="org.eclipse.actf.ai.navigator.ScreenReaderController">
-      <controller class="org.eclipse.actf.ai.screenreader.jaws.Jaws"/>
-   </extension>
-
-
-</plugin>
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jcf b/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jcf
deleted file mode 100644
index 7c238a8..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jcf
+++ /dev/null
@@ -1,107 +0,0 @@
-; --------------------------------------------------------------------------------

-; Copyright (c) 2007 IBM Corporation and others.

-; All rights reserved. This program and the accompanying materials

-; are made available under the terms of the Eclipse Public License v1.0

-; which accompanies this distribution, and is available at

-; http://www.eclipse.org/legal/epl-v10.html

-;

-; Contributors:

-;     Hisashi MIYASHITA - initial configuration.

-; --------------------------------------------------------------------------------

-

-[WindowClasses]

-Internet Explorer_Server=Irrelevant

-SysListView32=Irrelevant

-MacromediaFlashPlayerActiveX=Irrelevant

-

-[options]

-SayAllMode=2

-

-[KeyLabels]

-cancel=1|break

-back=1|Backspace

-tab=1|Tab

-clear=1|Clear

-return=1|Enter

-shift=1|Shift

-control=1|Control

-menu=1|Alt

-pause=0|Pause

-capital=1|Caps lock

-escape=1|Escape

-space=1|Space

-prior=1|Page up

-next=1|Page down

-end=1|End

-home=1|Home

-left=1|Left arrow

-up=1|Up arrow

-right=1|Right arrow

-down=1|Down arrow

-select=1|Select

-execute=1|Execute

-snapshot=1|Print screen

-insert=1|Insert

-delete=1|Delete

-help=1|Help

-numbers=1|Numbers

-letters=1|Letters

-lwin=1|windows

-rwin=1|windows

-apps=1|Applications

-numpad0=1|insert

-numpad1=1|end

-numpad2=1|Down arrow

-numpad3=1|Page down

-numpad4=1|Left arrow

-numpad5=1|5

-numpad6=1|Right arrow

-numpad7=1|home

-numpad8=1|Up arrow

-numpad9=1|Page up

-multiply=1|*

-add=1|+

-separator=1|Separator

-subtract=1|-

-decimal=1|Delete

-divide=1|/

-f1=1|F1

-f2=1|F2

-f3=1|F3

-f4=1|F4

-f5=1|F5

-f6=1|F6

-f7=1|F7

-f8=1|F8

-f9=1|F9

-f10=1|F10

-f11=1|F11

-f12=1|F12

-f13=1|F13

-f14=1|F14

-f15=1|F15

-f16=1|F16

-f17=1|F17

-f18=1|F18

-f19=1|F19

-f20=1|F20

-f21=1|F21

-f22=1|F22

-f23=1|F23

-f24=1|F24

-numlock=1|Num lock

-scroll=1|Scroll lock

-symbols=1|Symbols

-modifiedprintable=1|modified printable

-attn=1|Attention

-crsel=1|Crsel

-exsel=1|Exsel

-ereof=1|applications

-play=1|Play

-zoom=1|Zoom

-pa1=1|Pa1

-oem_clear=1|Clear

-print=1|Print Screen

-[HTML]

-ScreenFollowsVCursor=0

-PageRefreshFilter=-1

diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jkm b/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jkm
deleted file mode 100644
index 29c038e..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jkm
+++ /dev/null
@@ -1,86 +0,0 @@
-[Common keys]

-Alt=func_Alt

-Control+N=func_Control_N

-Control+Q=func_Control_Q

-Control=func_Control

-Control+Control=func_Control_Control

-Shift+Shift=func_Shift_Shift

-Control+RightArrow=func_Control_RightArrow

-Control+LeftArrow=func_Control_LeftArrow

-Control+UpArrow=func_Control_UpArrow

-Control+DownArrow=func_Control_DownArrow

-Control+O=func_Control_O

-Alt+Control+I=func_Alt_Control_I

-Control+I=func_Control_I

-Control+W=func_Control_W

-DownArrow=func_DownArrow

-UpArrow=func_UpArrow

-Alt+DownArrow=func_Alt_DownArrow

-Enter=func_Enter

-Space=func_Space

-Control+F=func_Control_F

-Control+R=func_Control_R

-Alt+Control+K=func_Alt_Control_K

-F4=func_F4

-Alt+Control+N=func_Alt_Control_N

-Alt+Control+A=func_Alt_Control_A

-Home=func_Home

-Control+Home=func_Control_Home

-End=func_End

-Control+End=func_Control_End

-RightArrow=func_RightArrow

-H=func_H

-Tab=func_Tab

-O=func_O

-F=func_F

-I=func_I

-N=func_N

-M=func_M

-A=func_A

-LeftArrow=func_LeftArrow

-Shift+H=func_Shift_H

-Shift+Tab=func_Shift_Tab

-Shift+O=func_Shift_O

-Shift+F=func_Shift_F

-Shift+I=func_Shift_I

-Shift+N=func_Shift_N

-Shift+M=func_Shift_M

-Shift+A=func_Shift_A

-1=func_1

-2=func_2

-3=func_3

-4=func_4

-5=func_5

-6=func_6

-Shift+1=func_Shift_1

-Shift+2=func_Shift_2

-Shift+3=func_Shift_3

-Shift+4=func_Shift_4

-Shift+5=func_Shift_5

-Shift+6=func_Shift_6

-Control+P=func_Control_P

-Control+S=func_Control_S

-Pause=func_Pause

-Control+Pause=func_Control_Pause

-Alt+Control+Shift+P=func_Alt_Control_Shift_P

-Control+M=func_Control_M

-Control+J=func_Control_J

-Control+K=func_Control_K

-Control+Shift+J=func_Control_Shift_J

-Control+Shift+K=func_Control_Shift_K

-Alt+Control+PageUp=func_Alt_Control_PageUp

-Alt+Control+PageDown=func_Alt_Control_PageDown

-Control+A=func_Control_A

-Control+H=func_Control_H

-Alt+Control+S=func_Alt_Control_S

-Alt+Control+R=func_Alt_Control_R

-F5=func_F5

-Alt+RightArrow=func_Alt_RightArrow

-Alt+LeftArrow=func_Alt_LeftArrow

-Alt+D=func_Alt_D

-Control+Tab=func_Control_Tab

-Control+Shift+Tab=func_Control_Shift_Tab

-S=func_S

-T=func_T

-Alt+Control+T=func_Alt_Control_T

-Backspace=func_Backspace

diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jsh b/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jsh
deleted file mode 100644
index 04311a9..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jsh
+++ /dev/null
@@ -1,5 +0,0 @@
-Globals

-  int g_aiBrowserFlag,

-  int g_aiBrowserSayAllFlag,

-  handle g_aiBrowserSayAllWindow,

-  int g_aiBrowserSayAllMessage

diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jss b/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jss
deleted file mode 100644
index bbb6765..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/script/aiBrowser.jss
+++ /dev/null
@@ -1,1549 +0,0 @@
-include "aiBrowser.jsh"

-

-Script JawsOn ()

-  let g_aiBrowserFlag = 1

-EndScript

-

-Script JawsOff ()

-  let g_aiBrowserFlag = 0

-EndScript

-

-;--------------------------------------------------------------------------------

-Script AiBrowserSayAllOff ()

-  If g_aiBrowserSayAllFlag Then

-    let g_aiBrowserSayAllFlag = 0

-    StopSpeech()

-    Delay(5, 1)

-  EndIf

-EndScript

-

-Void Function FocusChangedEvent(Handle hCurWin, Handle hPrevWin)

-If g_aiBrowserSayAllFlag Then

-    return

-  Else

-    FocusChangedEvent(hCurWin, hPrevWin)

-  EndIf

-EndFunction

-

-void function FocusChangedEventEx(Handle hwndFocus, int nObject, int nChild,

-                                  Handle hwndPrevFocus, int nPrevObject, int nPrevChild,

-	                          int nChangeDepth)

-  If g_aiBrowserSayAllFlag Then

-    return

-  Else

-    FocusChangedEventEx(hwndFocus, nObject, nChild, hwndPrevFocus, nPrevObject, nPrevChild, nChangeDepth)

-  EndIf

-EndFunction

-

-int function FocusRedirected(Handle focusWindow, Handle prevWindow)

-  If g_aiBrowserSayAllFlag Then

-    return 1

-  Else

-    FocusRedirected(focusWindow, prevWindow)

-  EndIf

-EndFunction

-

-Void Function SayTutorialHelp (int iObjType, int IsScriptKey)

-  If g_aiBrowserSayAllFlag Then

-    return

-  Else

-    SayTutorialHelp(iObjType, IsScriptKey)

-  EndIf

-EndFunction

-

-Void Function SendaiBrowserMessage (Int param)

-  SendMessage(g_aiBrowserSayAllWindow, g_aiBrowserSayAllMessage, param, 0);

-EndFunction

-

-Void Function SayAllStoppedEvent ()

-  PCCursor()

-  If (!SayAllInProgress()) Then

-    SendaiBrowserMessage(0)

-    PCCursor()

-  EndIf

-EndFunction

-

-Script JAWSCursor ()

-EndScript

-

-Script InvisibleCursor ()

-EndScript

-

-Void Function ObserveSpeechFunction ()

-    If (SayAllInProgress()) Then

-    Else

-      If g_aiBrowserSayAllFlag != 1 Then

-        let g_aiBrowserSayAllWindow = FindWindow(GetAppMainWindow(GetFocus()), "Jaws-aiBrowser-Communication", "")

-        ;SayInteger(g_aiBrowserSayAllWindow)

-        ;SetActiveCursor(1)

-        ;MoveToWindow(g_aiBrowserSayAllWindow)

-        let g_aiBrowserSayAllMessage = RegisterWindowMessage("WM_JAWS_AIBROWSER_MESSAGE")

-        let g_aiBrowserSayAllFlag = 1

-        PCCursor()

-        SetFocus(g_aiBrowserSayAllWindow)

-        PCCursor()

-        Delay(5, 0)

-      Else

-        If (GetFocus() != g_aiBrowserSayAllWindow) Then

-          SetFocus(g_aiBrowserSayAllWindow)

-        EndIf

-        PCCursor()

-      EndIf

-

-      PCCursor()

-      SayAll(0)

-      ;SkimRead()

-      PCCursor()

-    EndIf

-EndFunction

-

-Script ObserveSpeech ()

-  ObserveSpeechFunction()

-EndScript

-;--------------------------------------------------------------------------------

-

-

-Script func_Alt()

-  If g_aiBrowserFlag Then

-    SayString("Alt")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt")

-EndScript

-

-

-Script func_Control_N()

-  If g_aiBrowserFlag Then

-    SayString("Control+N")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+N")

-EndScript

-

-

-Script func_Control_Q()

-  If g_aiBrowserFlag Then

-    SayString("Control+Q")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+Q")

-EndScript

-

-

-Script func_Control()

-  If g_aiBrowserFlag Then

-    SayString("Control")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control")

-EndScript

-

-

-Script func_Control_Control()

-  If g_aiBrowserFlag Then

-    SayString("Control+Control")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control")

-EndScript

-

-

-Script func_Shift_Shift()

-  If g_aiBrowserFlag Then

-    SayString("Shift+Shift")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Shift")

-EndScript

-

-

-Script func_Control_RightArrow()

-  If g_aiBrowserFlag Then

-    PerformScript SayNextWord()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Control+RightArrow")

-  EndIf

-EndScript

-

-

-Script func_Control_LeftArrow()

-  If g_aiBrowserFlag Then

-    PerformScript SayPriorWord()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Control+LeftArrow")

-  EndIf

-EndScript

-

-

-Script func_Control_UpArrow()

-  If g_aiBrowserFlag Then

-    PerformScript ControlUpArrow()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Control+UpArrow")

-  EndIf

-EndScript

-

-

-Script func_Control_DownArrow()

-  If g_aiBrowserFlag Then

-    PerformScript ControlDownArrow()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Control+DownArrow")

-  EndIf

-EndScript

-

-

-Script func_Control_O()

-  If g_aiBrowserFlag Then

-    SayString("Control+O")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+O")

-EndScript

-

-

-Script func_Alt_Control_I()

-  If g_aiBrowserFlag Then

-    SayString("Alt+Control+I")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+Control+I")

-EndScript

-

-

-Script func_Control_I()

-  If g_aiBrowserFlag Then

-    SayString("Control+I")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+I")

-EndScript

-

-

-Script func_Control_W()

-  If g_aiBrowserFlag Then

-    SayString("Control+W")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+W")

-EndScript

-

-

-Script func_DownArrow()

-  If g_aiBrowserFlag Then

-    PerformScript SayNextLine()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("DownArrow")

-  EndIf

-EndScript

-

-

-Script func_UpArrow()

-  If g_aiBrowserFlag Then

-    PerformScript SayPriorLine()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("UpArrow")

-  EndIf

-EndScript

-

-

-Script func_Alt_DownArrow()

-  If g_aiBrowserFlag Then

-    PerformScript OpenListBox()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      return

-    EndIf

-    TypeKey("Alt+DownArrow")

-  EndIf

-EndScript

-

-

-Script Enter()

-  If g_aiBrowserFlag Then

-    PerformScript Enter()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Enter()

-  If g_aiBrowserFlag Then

-    SayString("Enter")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Enter")

-EndScript

-

-

-Script VirtualSpacebar()

-  If g_aiBrowserFlag Then

-    PerformScript VirtualSpacebar()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Space()

-  If g_aiBrowserFlag Then

-    SayString("Space")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Space")

-EndScript

-

-

-Script func_Control_F()

-  If g_aiBrowserFlag Then

-    SayString("Control+F")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+F")

-EndScript

-

-

-Script func_Control_R()

-  If g_aiBrowserFlag Then

-    SayString("Control+R")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+R")

-EndScript

-

-

-Script func_Alt_Control_K()

-  If g_aiBrowserFlag Then

-    SayString("Alt+Control+K")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+Control+K")

-EndScript

-

-

-Script func_F4()

-  If g_aiBrowserFlag Then

-    PerformScript UtilitySetFontMode()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("F4")

-  EndIf

-EndScript

-

-

-Script func_Alt_Control_N()

-  If g_aiBrowserFlag Then

-    SayString("Alt+Control+N")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+Control+N")

-EndScript

-

-

-Script func_Alt_Control_A()

-  If g_aiBrowserFlag Then

-    SayString("Alt+Control+A")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+Control+A")

-EndScript

-

-

-Script func_Home()

-  If g_aiBrowserFlag Then

-    PerformScript JAWSHome()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Home")

-  EndIf

-EndScript

-

-

-Script func_Control_Home()

-  If g_aiBrowserFlag Then

-    PerformScript TopOfFile()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Control+Home")

-  EndIf

-EndScript

-

-

-Script func_End()

-  If g_aiBrowserFlag Then

-    PerformScript JAWSEnd()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("End")

-  EndIf

-EndScript

-

-

-Script func_Control_End()

-  If g_aiBrowserFlag Then

-    PerformScript BottomOfFile()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Control+End")

-  EndIf

-EndScript

-

-

-Script func_RightArrow()

-  If g_aiBrowserFlag Then

-    PerformScript SayNextCharacter()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("RightArrow")

-  EndIf

-EndScript

-

-

-Script moveToNextHeading()

-  If g_aiBrowserFlag Then

-    PerformScript moveToNextHeading()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_H()

-  If g_aiBrowserFlag Then

-    SayString("H")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("H")

-EndScript

-

-

-Script func_Tab()

-  If g_aiBrowserFlag Then

-    PerformScript Tab()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Tab")

-  EndIf

-EndScript

-

-

-Script MoveToNextObject()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToNextObject()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_O()

-  If g_aiBrowserFlag Then

-    SayString("O")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("O")

-EndScript

-

-

-Script FocusToNextField()

-  If g_aiBrowserFlag Then

-    PerformScript FocusToNextField()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_F()

-  If g_aiBrowserFlag Then

-    SayString("F")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("F")

-EndScript

-

-

-Script MoveToNextListItem()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToNextListItem()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_I()

-  If g_aiBrowserFlag Then

-    SayString("I")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("I")

-EndScript

-

-

-Script MoveToNextNonLinkText()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToNextNonLinkText()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_N()

-  If g_aiBrowserFlag Then

-    SayString("N")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("N")

-EndScript

-

-

-Script MoveToNextFrame()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToNextFrame()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_M()

-  If g_aiBrowserFlag Then

-    SayString("M")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("M")

-EndScript

-

-

-Script MoveToNextAnchor()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToNextAnchor()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_A()

-  If g_aiBrowserFlag Then

-    SayString("A")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("A")

-EndScript

-

-

-Script func_LeftArrow()

-  If g_aiBrowserFlag Then

-    PerformScript SayPriorCharacter()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("LeftArrow")

-  EndIf

-EndScript

-

-

-Script moveToPriorHeading()

-  If g_aiBrowserFlag Then

-    PerformScript moveToPriorHeading()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Shift_H()

-  If g_aiBrowserFlag Then

-    SayString("Shift+H")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Shift+H")

-EndScript

-

-

-Script func_Shift_Tab()

-  If g_aiBrowserFlag Then

-    PerformScript ShiftTab()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Shift+Tab")

-  EndIf

-EndScript

-

-

-Script MoveToPriorObject()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToPriorObject()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Shift_O()

-  If g_aiBrowserFlag Then

-    SayString("Shift+O")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Shift+O")

-EndScript

-

-

-Script FocusToPriorField()

-  If g_aiBrowserFlag Then

-    PerformScript FocusToPriorField()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Shift_F()

-  If g_aiBrowserFlag Then

-    SayString("Shift+F")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Shift+F")

-EndScript

-

-

-Script MoveToPriorListItem()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToPriorListItem()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Shift_I()

-  If g_aiBrowserFlag Then

-    SayString("Shift+I")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Shift+I")

-EndScript

-

-

-Script MoveToPriorNonLinkText()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToPriorNonLinkText()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Shift_N()

-  If g_aiBrowserFlag Then

-    SayString("Shift+N")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Shift+N")

-EndScript

-

-

-Script MoveToPriorFrame()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToPriorFrame()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Shift_M()

-  If g_aiBrowserFlag Then

-    SayString("Shift+M")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Shift+M")

-EndScript

-

-

-Script MoveToPriorAnchor()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToPriorAnchor()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Shift_A()

-  If g_aiBrowserFlag Then

-    SayString("Shift+A")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Shift+A")

-EndScript

-

-

-Script MoveToNextHeadingLevelN(int n)

-  If g_aiBrowserFlag Then

-    PerformScript MoveToNextHeadingLevelN(n)

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_1()

-  If g_aiBrowserFlag Then

-    SayString("1")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script func_2()

-  If g_aiBrowserFlag Then

-    SayString("2")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script func_3()

-  If g_aiBrowserFlag Then

-    SayString("3")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script func_4()

-  If g_aiBrowserFlag Then

-    SayString("4")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script func_5()

-  If g_aiBrowserFlag Then

-    SayString("5")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script func_6()

-  If g_aiBrowserFlag Then

-    SayString("6")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script MoveToPriorHeadingLevelN(int n)

-  If g_aiBrowserFlag Then

-    PerformScript MoveToPriorHeadingLevelN(n)

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Shift_1()

-  If g_aiBrowserFlag Then

-    SayString("Shift+1")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script func_Shift_2()

-  If g_aiBrowserFlag Then

-    SayString("Shift+2")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script func_Shift_3()

-  If g_aiBrowserFlag Then

-    SayString("Shift+3")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script func_Shift_4()

-  If g_aiBrowserFlag Then

-    SayString("Shift+4")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script func_Shift_5()

-  If g_aiBrowserFlag Then

-    SayString("Shift+5")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script func_Shift_6()

-  If g_aiBrowserFlag Then

-    SayString("Shift+6")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeCurrentScriptKey()

-EndScript

-

-

-Script func_Control_P()

-  If g_aiBrowserFlag Then

-    SayString("Control+P")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+P")

-EndScript

-

-

-Script func_Control_S()

-  If g_aiBrowserFlag Then

-    SayString("Control+S")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+S")

-EndScript

-

-

-Script func_Pause()

-  If g_aiBrowserFlag Then

-    SayString("Pause")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+Control+Shift+P")

-EndScript

-

-

-Script func_Control_Pause()

-  If g_aiBrowserFlag Then

-    SayString("Control+Pause")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+Control+Shift+P")

-EndScript

-

-

-Script func_Alt_Control_Shift_P()

-  If g_aiBrowserFlag Then

-    SayString("Alt+Control+Shift+P")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+Control+Shift+P")

-EndScript

-

-

-Script func_Control_M()

-  If g_aiBrowserFlag Then

-    SayString("Control+M")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+M")

-EndScript

-

-

-Script JumpToTableCell()

-  If g_aiBrowserFlag Then

-    PerformScript JumpToTableCell()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Control_J()

-  If g_aiBrowserFlag Then

-    SayString("Control+J")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+J")

-EndScript

-

-

-Script DefineATempPlaceMarker()

-  If g_aiBrowserFlag Then

-    PerformScript DefineATempPlaceMarker()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Control_K()

-  If g_aiBrowserFlag Then

-    SayString("Control+K")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+K")

-EndScript

-

-

-Script JumpReturnFromTableCell()

-  If g_aiBrowserFlag Then

-    PerformScript JumpReturnFromTableCell()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Control_Shift_J()

-  If g_aiBrowserFlag Then

-    SayString("Control+Shift+J")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+Shift+J")

-EndScript

-

-

-Script SelectAPlaceMarker()

-  If g_aiBrowserFlag Then

-    PerformScript SelectAPlaceMarker()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_Control_Shift_K()

-  If g_aiBrowserFlag Then

-    SayString("Control+Shift+K")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+Shift+K")

-EndScript

-

-

-Script func_Alt_Control_PageUp()

-    PerformScript IncreaseVoiceRate()

-EndScript

-

-

-Script func_Alt_Control_PageDown()

-    PerformScript DecreaseVoiceRate()

-EndScript

-

-

-Script func_Control_A()

-  If g_aiBrowserFlag Then

-    PerformScript SelectAll()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Control+A")

-  EndIf

-EndScript

-

-

-Script func_Control_H()

-  If g_aiBrowserFlag Then

-    SayString("Control+H")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Control+H")

-EndScript

-

-

-Script func_Alt_Control_S()

-  If g_aiBrowserFlag Then

-    SayString("Alt+Control+S")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+Control+S")

-EndScript

-

-

-Script func_Alt_Control_R()

-  If g_aiBrowserFlag Then

-    SayString("Alt+Control+R")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+Control+R")

-EndScript

-

-

-Script func_F5()

-  If g_aiBrowserFlag Then

-    PerformScript UtilityInitializeHomeRowPosition()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("F5")

-  EndIf

-EndScript

-

-

-Script func_Alt_RightArrow()

-  If g_aiBrowserFlag Then

-    SayString("Alt+RightArrow")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+RightArrow")

-EndScript

-

-

-Script func_Alt_LeftArrow()

-  If g_aiBrowserFlag Then

-    SayString("Alt+LeftArrow")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+LeftArrow")

-EndScript

-

-

-Script func_Alt_D()

-  If g_aiBrowserFlag Then

-    SayString("Alt+D")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+D")

-EndScript

-

-

-Script func_Control_Tab()

-  If g_aiBrowserFlag Then

-    PerformScript NextDocumentWindow()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Control+Tab")

-  EndIf

-EndScript

-

-

-Script func_Control_Shift_Tab()

-  If g_aiBrowserFlag Then

-    PerformScript PreviousDocumentWindow()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Control+Shift+Tab")

-  EndIf

-EndScript

-

-

-Script MoveToNextSameElement()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToNextSameElement()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_S()

-  If g_aiBrowserFlag Then

-    SayString("S")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("S")

-EndScript

-

-

-Script MoveToNextTable()

-  If g_aiBrowserFlag Then

-    PerformScript MoveToNextTable()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeCurrentScriptKey()

-  EndIf

-EndScript

-

-

-Script func_T()

-  If g_aiBrowserFlag Then

-    SayString("T")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("T")

-EndScript

-

-

-Script func_Alt_Control_T()

-  If g_aiBrowserFlag Then

-    SayString("Alt+Control+T")

-  EndIf

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-  TypeKey("Alt+Control+T")

-EndScript

-

-

-Script func_Backspace()

-  If g_aiBrowserFlag Then

-    PerformScript JAWSBackspace()

-  Else

-    If g_aiBrowserSayAllFlag Then

-      PerformScript AiBrowserSayAllOff()

-      SendaiBrowserMessage(1)

-      Delay(5, 1)

-    EndIf

-    TypeKey("Backspace")

-  EndIf

-EndScript

-

-

diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/Jaws.java b/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/Jaws.java
deleted file mode 100644
index 25ed274..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/Jaws.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.screenreader.jaws;
-
-import org.eclipse.actf.ai.navigator.IScreenReaderControl;
-import org.eclipse.actf.ai.tts.ITTSEngine;
-import org.eclipse.actf.ai.voice.IVoiceEventListener;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-
-/**
- * The implementation of ITTSEngine to use JAWS as voice engine.
- */
-public class Jaws implements ITTSEngine, IScreenReaderControl {
-	public static final String JAWS_ON_SCRIPT = "JawsOn";
-
-	public static final String JAWS_OFF_SCRIPT = "JawsOff";
-
-	public static final String JAWS_OBSERVE_SPEECH = "ObserveSpeech";
-
-	public static final String SAYALLOFF = "AiBrowserSayAllOff";
-
-	JawsAPI jaws = JawsAPI.getInstance();
-	JawsWindowUtil util = JawsWindowUtil.getInstance();
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#dispose()
-	 */
-	public void dispose() {
-		// not supported
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#getSpeed()
-	 */
-	public int getSpeed() {
-		// not supported
-		return 0;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setEventListener(org.eclipse.actf.ai.voice.IVoiceEventListener)
-	 */
-	public void setEventListener(IVoiceEventListener eventListener) {
-		if (util != null)
-			util.setEventListener(eventListener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setLanguage(java.lang.String)
-	 */
-	public void setLanguage(String language) {
-		// not supported
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setSpeed(int)
-	 */
-	public void setSpeed(int speed) {
-		// not supported
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#speak(java.lang.String, int, int)
-	 */
-	public void speak(String text, int flags, int index) {
-		if (jaws == null || util == null)
-			return;
-		if (index < 0) {
-			jaws.JawsSayString(text, flags == TTSFLAG_FLUSH);
-		} else {
-			util.JawsShowTextToWindow(text, flags == TTSFLAG_FLUSH, index);
-			// Yield.forWhile(10);
-			jaws.JawsRunScript(JAWS_OBSERVE_SPEECH);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#stop()
-	 */
-	public void stop() {
-		if (jaws != null && util != null) {
-			jaws.JawsStopSpeech();
-			util.resetJawsWindowText();
-			jaws.JawsRunScript(SAYALLOFF);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.navigator.IScreenReaderControl#screenReaderOff()
-	 */
-	public void screenReaderOff() {
-		if (jaws != null) {
-			jaws.JawsRunScript(JAWS_OFF_SCRIPT);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.navigator.IScreenReaderControl#screenReaderOn()
-	 */
-	public void screenReaderOn() {
-		if (jaws != null) {
-			jaws.JawsRunScript(JAWS_ON_SCRIPT);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.navigator.IScreenReaderControl#takeBackControl()
-	 */
-	public void takeBackControl() {
-		if (util != null) {
-			util.TakeBackControl();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setGender(java.lang.String)
-	 */
-	public void setGender(String gender) {
-		// TODO Auto-generated method stub
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#isAvailable()
-	 */
-	public boolean isAvailable() {
-		if (jaws == null)
-			return false;
-		return jaws.isAvailable();
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/JawsAPI.java b/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/JawsAPI.java
deleted file mode 100644
index 962417e..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/JawsAPI.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *    Yevgen Borodin - [Bug 226468]
- *******************************************************************************/
-package org.eclipse.actf.ai.screenreader.jaws;
-
-/**
- * JawsAPI is the wrapper of "jawsapi-bridge.dll" library which is the wrapper
- * of "jfwapi.dll".
- */
-public class JawsAPI {
-	private static JawsAPI instance;
-	static {
-		try {
-			System.loadLibrary("jawsapi-bridge");
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private JawsAPI() {
-	}
-
-	/**
-	 * @return the singleton instance of JawsAPI.
-	 */
-	public static JawsAPI getInstance() {
-		if (instance == null) {
-			if (!_initialize())
-				return null;
-			instance = new JawsAPI();
-		}
-		return instance;
-	}
-
-	/**
-	 * Execute the JAWS function named <i>funcName</i>.
-	 * 
-	 * @param funcName
-	 *            the function name to be executed.
-	 * @return if the invocation is succeeded then true is returned.
-	 */
-	public boolean JawsRunFunction(String funcName) {
-		return _JawsRunFunction(funcName);
-	}
-
-	/**
-	 * Order to speak <i>stringToSpeak</i> to JAWS.
-	 * 
-	 * @param stringToSpeak
-	 *            the string to be spoken.
-	 * @param bInterrupt
-	 *            if this flag is true then JAWS is stopped speaking and speaks
-	 *            the string, Otherwise the string is buffered at the end of the
-	 *            speech.
-	 * @return if the invocation is succeeded then true is returned.
-	 */
-	public boolean JawsSayString(String stringToSpeak, boolean bInterrupt) {
-		if (bInterrupt)
-			_JawsStopSpeech();
-		return _JawsSayString(stringToSpeak, bInterrupt);
-	}
-
-	/**
-	 * Order to stop speaking to JAWS.
-	 * 
-	 * @return If the invocation is succeeded then true is returned.
-	 */
-	public boolean JawsStopSpeech() {
-		// JawsStopSpeech does not work well, so null string will be spoken with
-		// interrupt flag.
-		// return _JawsStopSpeech();
-		return _JawsSayString("", true);
-	}
-
-	/**
-	 * Execute the JAWS script named <i>funcName</i>.
-	 * 
-	 * @param scriptName
-	 *            the script name to be executed.
-	 * @return if the invocation is succeeded then true is returned.
-	 */
-	public boolean JawsRunScript(String scriptName) {
-		return _JawsRunScript(scriptName);
-	}
-
-	/**
-	 * @return if JAWS is running then it returns <i>true</i>.
-	 */
-	public boolean isAvailable() {
-		return _isAvailable();
-	}
-
-	private static native boolean _initialize();
-
-	private static native boolean _isAvailable();
-
-	private static native boolean _JawsRunFunction(String funcName);
-
-	private static native boolean _JawsSayString(String stringToSpeak,
-			boolean bInterrupt);
-
-	private static native boolean _JawsStopSpeech();
-
-	private static native boolean _JawsRunScript(String scriptName);
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/JawsPlugin.java b/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/JawsPlugin.java
deleted file mode 100644
index ad84c9c..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/JawsPlugin.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.screenreader.jaws;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class JawsPlugin extends AbstractUIPlugin {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.actf.ai.screenreader.jaws";
-
-	// The shared instance
-	private static JawsPlugin plugin;
-
-	/**
-	 * The constructor
-	 */
-	public JawsPlugin() {
-		plugin = this;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 * 
-	 * @return the shared instance
-	 */
-	public static JawsPlugin getDefault() {
-		return plugin;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/JawsWindowUtil.java b/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/JawsWindowUtil.java
deleted file mode 100644
index 26ab6c1..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/JawsWindowUtil.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.screenreader.jaws;
-
-import org.eclipse.actf.ai.voice.IVoiceEventListener;
-import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
-
-/**
- * JawsWindowUtil is an utility to control JAWS behavior. The strategy of this
- * utility is being subservient to JAWS.
- */
-public class JawsWindowUtil {
-	private static JawsAPI jaws = JawsAPI.getInstance();
-
-	private static IVoiceEventListener listener;
-
-	private static JawsWindowUtil instance;
-
-	/**
-	 * @return the singleton instance of JawsWindowUtil.
-	 */
-	public static JawsWindowUtil getInstance() {
-		if (instance == null) {
-			int handle = JawsPlugin.getDefault().getWorkbench()
-					.getActiveWorkbenchWindow().getShell().handle;
-			if (!_initializeWindow(handle))
-				return null;
-			instance = new JawsWindowUtil();
-		}
-		return instance;
-	}
-
-	private JawsWindowUtil() {
-
-	}
-
-	/**
-	 * This utility is handling the voice events occurred in this plug-in.
-	 * 
-	 * @param eventListener
-	 */
-	public void setEventListener(IVoiceEventListener eventListener) {
-		listener = eventListener;
-	}
-
-	/**
-	 * This is the wrapper method of native method to control say all mode of
-	 * JAWS. This method shows a white window which overlaps the window of
-	 * application.
-	 * 
-	 * @param stringToSpeak
-	 *            the string to be spoken.
-	 * @param bInterrupt
-	 *            if this flag is true then JAWS is stopped speaking and speaks
-	 *            the string, Otherwise the string is buffered at the end of the
-	 *            speech.
-	 * @param index
-	 *            the index to be used in voice events.
-	 * @return if the invocation is succeeded then true is returned.
-	 */
-	public boolean JawsShowTextToWindow(String stringToSpeak,
-			boolean bInterrupt, int index) {
-		boolean ret = _setJawsWindowText(stringToSpeak);
-		if (listener != null) {
-			listener.indexReceived(index);
-		}
-		return ret;
-	}
-
-	/**
-	 * This method is used for taking back control from JAWS.
-	 * 
-	 * @return if the invocation is succeeded then true is returned.
-	 */
-	public boolean TakeBackControl() {
-		int handle = JawsPlugin.getDefault().getWorkbench()
-				.getActiveWorkbenchWindow().getShell().handle;
-		return _TakeBackControl(handle);
-	}
-
-	/**
-	 * This call back method is invoked by native library. Don't call directory
-	 * in Java.
-	 * 
-	 * @param param
-	 * @return
-	 */
-	public static boolean callBack(int param) {
-		System.err.println("Callbacked!!!" + param);
-		if (listener == null)
-			return true;
-		if (param == 0) {
-			listener.indexReceived(-1);
-		} else if (param == 1) {
-			jaws.JawsStopSpeech();
-			getInstance().resetJawsWindowText();
-			jaws.JawsRunScript(Jaws.SAYALLOFF);
-			listener.indexReceived(-2);
-		}
-		return true;
-	}
-
-	/**
-	 * This method hides the white window shown by
-	 * {@link #JawsShowTextToWindow(String, boolean, int)}.
-	 */
-	public void resetJawsWindowText() {
-		_resetJawsWindowText();
-	}
-
-	private static native boolean _TakeBackControl(long browser);
-
-	private static native boolean _setJawsWindowText(String text);
-
-	private static native boolean _resetJawsWindowText();
-
-	private static native boolean _initializeWindow(int handle);
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/Key.java b/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/Key.java
deleted file mode 100644
index 06ea1c5..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/Key.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.screenreader.jaws.script;
-
-import java.awt.event.KeyEvent;
-import java.lang.reflect.Field;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class Key {
-    public int key;
-
-    public int modifier;
-
-    public Key jawsKey;
-
-    public boolean jawsHandle = false;
-
-    public boolean jawsSayAllStop = true;
-
-    public boolean jawsSayAllStopIgnore = false;
-    
-    public boolean currentScript = false;
-    
-    public boolean jawsScript = true;
-
-    public Key(Node keyNode, Element commandElement) {
-        this(keyNode.getTextContent().trim());
-        
-        if (keyNode instanceof Element) {
-            Element keyElem = (Element) keyNode;
-            String key = keyElem.getAttribute("jawskey");
-            if ((key != null) && (key.length() > 0)) {
-                jawsKey = new Key(key);
-            }
-            String jawsHandleVal = keyElem.getAttribute("jawshandle");
-            if (jawsHandleVal != null) {
-                if (jawsHandleVal.trim().equals("true")) {
-                    jawsHandle = true;
-                }
-            }
-            String jawsSayAllStopVal = keyElem.getAttribute("jawsSayAllStop");
-            if (jawsSayAllStopVal != null) {
-                if (jawsSayAllStopVal.trim().equals("false")) {
-                    jawsSayAllStop = false;
-                }
-            }
-            String jawsScriptVal = keyElem.getAttribute("jawsscript");
-            if (jawsScriptVal != null) {
-                if (jawsScriptVal.trim().equals("false")) {
-                    jawsScript = false;
-                }
-            }
-            if ("speakAll".equals(commandElement.getTagName())) {
-                jawsSayAllStopIgnore = true;
-            }
-        }
-    }
-
-    public Key(String keyStr) {
-        init(keyStr);
-    }
-
-    private void init(String keyStr) {
-        String keyStrs[] = keyStr.split("[ \t\r\n]");
-
-        if ("currentScript".equals(keyStr)){
-            currentScript = true;
-            return;
-        }
-        
-        modifier = 0;
-        for (int i = 0; i < keyStrs.length; i++) {
-            if (keyStrs[i].startsWith("VK_")) {
-                key = convertToInt(keyStrs[i]);
-            } else if (keyStrs[i].endsWith("_MASK")) {
-                modifier |= convertToInt(keyStrs[i]);
-            }
-        }
-        if(key == 0){
-            System.err.println("ERROR init "+keyStr);
-        }
-    }
-
-    @Override
-    public String toString() {
-        return KeyConverter.convert(key, modifier);
-    }
-
-    public String toTypeString() {
-        if (key == KeyEvent.VK_PAUSE)
-            return "Control+Alt+Shift+P";
-        return toString();
-    }
-
-    private int convertToInt(String code) {
-        code = code.trim();
-        try {
-            int i = Integer.parseInt(code);
-            return i;
-        } catch (java.lang.NumberFormatException e) {
-            //e.printStackTrace();
-        }
-
-        if (code.equals("VK_RETURN")) {
-            return 13;
-        }
-
-        try {
-            Class<java.awt.event.KeyEvent> c = java.awt.event.KeyEvent.class;
-            Field f = c.getField(code);
-            return ((Integer) f.get(null)).intValue();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        System.err.println("ERROR "+code);
-        return 0;
-    }
-
-    public String toFuncString() {
-        String temp = toString();
-        temp = temp.replaceAll("\\+", "_");
-        return "func_" + temp;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/KeyConverter.java b/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/KeyConverter.java
deleted file mode 100644
index 3ef419c..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/KeyConverter.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.screenreader.jaws.script;
-
-import java.awt.event.KeyEvent;
-import java.util.HashMap;
-import java.util.Iterator;
-
-public class KeyConverter {
-
-    private static HashMap<Integer, String> k2s = new HashMap<Integer, String>();
-
-    private static HashMap<String, Integer> s2k = new HashMap<String, Integer>();
-
-    static {
-        k2s.put(KeyEvent.VK_0, "0");
-        k2s.put(KeyEvent.VK_1, "1");
-        k2s.put(KeyEvent.VK_2, "2");
-        k2s.put(KeyEvent.VK_3, "3");
-        k2s.put(KeyEvent.VK_4, "4");
-        k2s.put(KeyEvent.VK_5, "5");
-        k2s.put(KeyEvent.VK_6, "6");
-        k2s.put(KeyEvent.VK_7, "7");
-        k2s.put(KeyEvent.VK_8, "8");
-        k2s.put(KeyEvent.VK_9, "9");
-        k2s.put(KeyEvent.VK_NUMPAD0, "NumPad0");
-        k2s.put(KeyEvent.VK_NUMPAD1, "NumPad1");
-        k2s.put(KeyEvent.VK_NUMPAD2, "NumPad2");
-        k2s.put(KeyEvent.VK_NUMPAD3, "NumPad3");
-        k2s.put(KeyEvent.VK_NUMPAD4, "NumPad4");
-        k2s.put(KeyEvent.VK_NUMPAD5, "NumPad5");
-        k2s.put(KeyEvent.VK_NUMPAD6, "NumPad6");
-        k2s.put(KeyEvent.VK_NUMPAD7, "NumPad7");
-        k2s.put(KeyEvent.VK_NUMPAD8, "NumPad8");
-        k2s.put(KeyEvent.VK_NUMPAD9, "NumPad9");
-        k2s.put(KeyEvent.VK_A, "A");
-        k2s.put(KeyEvent.VK_B, "B");
-        k2s.put(KeyEvent.VK_C, "C");
-        k2s.put(KeyEvent.VK_D, "D");
-        k2s.put(KeyEvent.VK_E, "E");
-        k2s.put(KeyEvent.VK_F, "F");
-        k2s.put(KeyEvent.VK_G, "G");
-        k2s.put(KeyEvent.VK_H, "H");
-        k2s.put(KeyEvent.VK_I, "I");
-        k2s.put(KeyEvent.VK_J, "J");
-        k2s.put(KeyEvent.VK_K, "K");
-        k2s.put(KeyEvent.VK_L, "L");
-        k2s.put(KeyEvent.VK_M, "M");
-        k2s.put(KeyEvent.VK_N, "N");
-        k2s.put(KeyEvent.VK_O, "O");
-        k2s.put(KeyEvent.VK_P, "P");
-        k2s.put(KeyEvent.VK_Q, "Q");
-        k2s.put(KeyEvent.VK_R, "R");
-        k2s.put(KeyEvent.VK_S, "S");
-        k2s.put(KeyEvent.VK_T, "T");
-        k2s.put(KeyEvent.VK_U, "U");
-        k2s.put(KeyEvent.VK_V, "V");
-        k2s.put(KeyEvent.VK_W, "W");
-        k2s.put(KeyEvent.VK_X, "X");
-        k2s.put(KeyEvent.VK_Y, "Y");
-        k2s.put(KeyEvent.VK_Z, "Z");
-        k2s.put(KeyEvent.VK_F1, "F1");
-        k2s.put(KeyEvent.VK_F2, "F2");
-        k2s.put(KeyEvent.VK_F3, "F3");
-        k2s.put(KeyEvent.VK_F4, "F4");
-        k2s.put(KeyEvent.VK_F5, "F5");
-        k2s.put(KeyEvent.VK_F6, "F6");
-        k2s.put(KeyEvent.VK_F7, "F7");
-        k2s.put(KeyEvent.VK_F8, "F8");
-        k2s.put(KeyEvent.VK_F9, "F9");
-        k2s.put(KeyEvent.VK_F10, "F10");
-        k2s.put(KeyEvent.VK_F11, "F11");
-        k2s.put(KeyEvent.VK_F12, "F12");
-        k2s.put(KeyEvent.VK_F13, "F13");
-        k2s.put(KeyEvent.VK_F14, "F14");
-        k2s.put(KeyEvent.VK_F15, "F15");
-        k2s.put(KeyEvent.VK_F16, "F16");
-        k2s.put(KeyEvent.VK_F17, "F17");
-        k2s.put(KeyEvent.VK_F18, "F18");
-        k2s.put(KeyEvent.VK_F19, "F19");
-        k2s.put(KeyEvent.VK_F20, "F20");
-        k2s.put(KeyEvent.VK_F21, "F21");
-        k2s.put(KeyEvent.VK_F22, "F22");
-        k2s.put(KeyEvent.VK_F23, "F23");
-        k2s.put(KeyEvent.VK_F24, "F24");
-        k2s.put(KeyEvent.VK_BACK_SPACE, "Backspace");
-        k2s.put(KeyEvent.VK_BACK_QUOTE, "`");
-        k2s.put(KeyEvent.VK_CLEAR, "Clear");
-        k2s.put(KeyEvent.VK_COLON, "Colon");
-        k2s.put(KeyEvent.VK_CLOSE_BRACKET, "]");
-        k2s.put(KeyEvent.VK_COMMA, ",");
-        k2s.put(KeyEvent.VK_DELETE, "Delete");
-        k2s.put(KeyEvent.VK_DOLLAR, "$");
-        k2s.put(KeyEvent.VK_DOWN, "DownArrow");
-        k2s.put(KeyEvent.VK_EQUALS, "Equals");
-        k2s.put(KeyEvent.VK_ESCAPE, "Escape");
-        k2s.put(KeyEvent.VK_ALT, "Alt");
-        k2s.put(13, "Enter");
-        k2s.put(KeyEvent.VK_END, "End");
-        k2s.put(KeyEvent.VK_HOME, "Home");
-        k2s.put(KeyEvent.VK_INSERT, "Insert");
-        k2s.put(KeyEvent.VK_LEFT, "LeftArrow");
-        k2s.put(KeyEvent.VK_MINUS, "-");
-        k2s.put(KeyEvent.VK_OPEN_BRACKET, "[");
-        k2s.put(KeyEvent.VK_PAUSE, "Pause");
-        k2s.put(KeyEvent.VK_PAGE_DOWN, "PageDown");
-        k2s.put(KeyEvent.VK_PAGE_UP, "PageUp");
-        k2s.put(KeyEvent.VK_PERIOD, ".");
-        k2s.put(KeyEvent.VK_PLUS, "+");
-        k2s.put(KeyEvent.VK_RIGHT, "RightArrow");
-        k2s.put(KeyEvent.VK_SEMICOLON, ";");
-        k2s.put(KeyEvent.VK_SEPARATER, "|");
-        k2s.put(KeyEvent.VK_SLASH, "/");
-        k2s.put(KeyEvent.VK_SPACE, "Space");
-        k2s.put(KeyEvent.VK_TAB, "Tab");
-        k2s.put(KeyEvent.VK_UNDERSCORE, "_");
-        k2s.put(KeyEvent.VK_UP, "UpArrow");
-        k2s.put(KeyEvent.VK_CONTROL, "Control");
-        k2s.put(KeyEvent.VK_SHIFT, "Shift");
-
-        for (Iterator<Integer> i = k2s.keySet().iterator(); i.hasNext();) {
-            int key = i.next();
-            s2k.put(k2s.get(key).toLowerCase(), key);
-        }
-        s2k.put("numpadplus", KeyEvent.VK_PLUS);
-        s2k.put("numpadminus", KeyEvent.VK_MINUS);
-        s2k.put("numpadslash", KeyEvent.VK_SLASH);
-        s2k.put("numpadstar", KeyEvent.VK_ASTERISK);
-        s2k.put("homerow", KeyEvent.VK_HOME);
-        s2k.put("extendedleftarrow", KeyEvent.VK_LEFT);
-        s2k.put("extendedrightarrow", KeyEvent.VK_RIGHT);
-        s2k.put("extendeduparrow", KeyEvent.VK_UP);
-        s2k.put("extendeddownarrow", KeyEvent.VK_DOWN);
-        s2k.put("comma", KeyEvent.VK_COMMA);
-        s2k.put("period", KeyEvent.VK_PERIOD);
-        s2k.put("apostrophe", KeyEvent.VK_QUOTE);
-        s2k.put("leftbracket", KeyEvent.VK_OPEN_BRACKET);
-        s2k.put("rightbracket", KeyEvent.VK_CLOSE_BRACKET);
-        s2k.put("semicolon", KeyEvent.VK_SEMICOLON);
-    }
-
-    public static boolean isIt(int value, int mask) {
-        return (value & mask) == mask;
-    }
-
-    public static int convert(String key) {
-        Integer i = s2k.get(key.toLowerCase());
-        if (i == null) {
-            return 0;
-        }
-        return i.intValue();
-    }
-
-    public static String convert(int key, int modifier) {
-        StringBuffer sb = new StringBuffer();
-
-        if (isIt(modifier, KeyEvent.ALT_MASK)) {
-            sb.append("Alt+");
-        }
-        if (isIt(modifier, KeyEvent.CTRL_MASK)) {
-            sb.append("Control+");
-        }
-        if (isIt(modifier, KeyEvent.SHIFT_MASK)) {
-            sb.append("Shift+");
-        }
-
-        String s = k2s.get(new Integer(key));
-        if (s == null) {
-            System.err.println("ERROR convert "+key);
-            System.exit(0);
-        }
-        sb.append(s);
-
-        return sb.toString();
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/KeybindScriptGenerator.java b/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/KeybindScriptGenerator.java
deleted file mode 100644
index 20a461a..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/KeybindScriptGenerator.java
+++ /dev/null
@@ -1,444 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.screenreader.jaws.script;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.util.HashSet;
-import java.util.Vector;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-
-public class KeybindScriptGenerator {
-    private String defaultPath = ".";
-
-    private String userPath = ".";
-
-    //private String userName = "";
-
-    private String appName;
-
-    private String flagName;
-
-    private String keySettingFile = "keysettings.xml";
-
-    private Vector<Key> keys = new Vector<Key>();
-
-    //private static final int TYPE_ALL = 7;
-
-    private static final int TYPE_COMMON = 1;
-
-    private static final int TYPE_QUICK = 2;
-
-    private static final int TYPE_VIRTUAL = 4;
-
-    private Vector<Keymap> keymaps_common = new Vector<Keymap>();
-
-    private Vector<Keymap> keymaps_quick = new Vector<Keymap>();
-
-    private Vector<Keymap> keymaps_virtual = new Vector<Keymap>();
-
-    public static void main(String args[]) {
-        KeybindScriptGenerator ksg = new KeybindScriptGenerator();
-
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].equals("-dp")) {
-                ksg.defaultPath = args[++i];
-            } else if (args[i].equals("-up")) {
-                ksg.userPath = args[++i];
-            } else if (args[i].equals("-name")) {
-                ksg.appName = args[++i];
-                ksg.flagName = "g_" + ksg.appName.replaceAll(" ", "") + "Flag";
-            } else if (args[i].equals("-key")) {
-                ksg.keySettingFile = args[++i];
-            }
-        }
-
-        ksg.generate();
-    }
-
-    public void generate() {
-        readKeySettings();
-        readDefaultKeymap();
-        writeScript();
-    }
-
-    private void readKeySettings() {
-        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        try {
-            DocumentBuilder builder = factory.newDocumentBuilder();
-            InputSource input = new InputSource(new FileInputStream(keySettingFile));
-            Document doc = builder.parse(input);
-
-            String[] tags = new String[] { "Commands", "Functions" };
-            for (int i = 0; i < tags.length; i++) {
-                NodeList commandsList = doc.getElementsByTagName(tags[i]);
-                for (int j = 0; j < commandsList.getLength(); j++) {
-                    Node commands = commandsList.item(j);
-                    NodeList commandList = commands.getChildNodes();
-                    for (int k = 0; k < commandList.getLength(); k++) {
-                        Node command = commandList.item(k);
-                        if (command.getNodeType() == Node.ELEMENT_NODE) {
-                            Element commandElement = (Element) command;
-                            NodeList keyList = command.getChildNodes();
-                            for (int l = 0; l < keyList.getLength(); l++) {
-                                Node keyNode = keyList.item(l);
-                                if ("key".equals(keyNode.getNodeName())) {
-                                    Key key = new Key(keyNode, commandElement);
-                                    keys.add(key);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void readDefaultKeymap() {
-        try {
-            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(defaultPath
-                    + "\\Default.JKM")));
-            String line;
-            boolean flag = false;
-            int type = TYPE_COMMON;
-
-            while ((line = br.readLine()) != null) {
-                if (line.length() > 0 && line.charAt(0) == '[') {
-                    if (line.toLowerCase().equals("[common keys]")) {
-                        flag = true;
-                        type = TYPE_COMMON;
-                    } else if (line.toLowerCase().equals("[quick navigation keys]")) {
-                        flag = true;
-                        type = TYPE_QUICK;
-                    } else if (line.toLowerCase().equals("[virtual keys]")) {
-                        flag = true;
-                        type = TYPE_VIRTUAL;
-                    } else
-                        flag = false;
-                }
-                if (line.length() > 0 && line.charAt(0) != ';' && line.charAt(0) != '[' && flag
-                        && !line.toLowerCase().startsWith("braille")) {
-
-                    Keymap keymap = new Keymap(line);
-                    switch (type) {
-                    case TYPE_COMMON:
-                        keymaps_common.add(keymap);
-                        break;
-                    case TYPE_QUICK:
-                        keymaps_quick.add(keymap);
-                        break;
-                    case TYPE_VIRTUAL:
-                        keymaps_virtual.add(keymap);
-                        break;
-                    }
-                }
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void writeScript() {
-        try {
-            File jss = new File(userPath + "\\" + appName + ".jss");
-            PrintWriter jssw = new PrintWriter(new FileOutputStream(jss));
-            writeFunctions(jssw);
-            jssw.close();
-
-            File jkm = new File(userPath + "\\" + appName + ".jkm");
-            PrintWriter jkmw = new PrintWriter(new FileOutputStream(jkm));
-            writeKeyMap(jkmw);
-            jkmw.close();
-
-            File jsh = new File(userPath + "\\" + appName + ".jsh");
-            PrintWriter jshw = new PrintWriter(new FileOutputStream(jsh));
-            writeGlobals(jshw);
-            jshw.close();
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void writeGlobals(PrintWriter pw) {
-        pw.println("Globals");
-        pw.println("  int " + flagName + ",");
-        pw.println("  int g_aiBrowserSayAllFlag,");
-        pw.println("  handle g_aiBrowserSayAllWindow,");
-        pw.println("  int g_aiBrowserSayAllMessage");
-    }
-
-    private void writeFixedCode(PrintWriter pw) {
-        pw.print(";--------------------------------------------------------------------------------\r\n"
-                 + "Script AiBrowserSayAllOff ()\r\n"
-                 + "  If g_aiBrowserSayAllFlag Then\r\n"
-                 + "    let g_aiBrowserSayAllFlag = 0\r\n"
-                 + "    StopSpeech()\r\n"
-                 + "    Delay(5, 1)\r\n"
-                 + "  EndIf\r\n"
-                 + "EndScript\r\n"
-                 + "\r\n"
-                 + "Void Function FocusChangedEvent(Handle hCurWin, Handle hPrevWin)\r\n"
-                 + "If g_aiBrowserSayAllFlag Then\r\n"
-                 + "    return\r\n"
-                 + "  Else\r\n"
-                 + "    FocusChangedEvent(hCurWin, hPrevWin)\r\n"
-                 + "  EndIf\r\n"
-                 + "EndFunction\r\n"
-                 + "\r\n"
-                 + "void function FocusChangedEventEx(Handle hwndFocus, int nObject, int nChild,\r\n"
-                 + "                                  Handle hwndPrevFocus, int nPrevObject, int nPrevChild,\r\n"
-                 + "	                          int nChangeDepth)\r\n"
-                 + "  If g_aiBrowserSayAllFlag Then\r\n"
-                 + "    return\r\n"
-                 + "  Else\r\n"
-                 + "    FocusChangedEventEx(hwndFocus, nObject, nChild, hwndPrevFocus, nPrevObject, nPrevChild, nChangeDepth)\r\n"
-                 + "  EndIf\r\n"
-                 + "EndFunction\r\n"
-                 + "\r\n"
-                 + "int function FocusRedirected(Handle focusWindow, Handle prevWindow)\r\n"
-                 + "  If g_aiBrowserSayAllFlag Then\r\n"
-                 + "    return 1\r\n"
-                 + "  Else\r\n"
-                 + "    FocusRedirected(focusWindow, prevWindow)\r\n"
-                 + "  EndIf\r\n"
-                 + "EndFunction\r\n"
-                 + "\r\n"
-                 + "Void Function SayTutorialHelp (int iObjType, int IsScriptKey)\r\n"
-                 + "  If g_aiBrowserSayAllFlag Then\r\n"
-                 + "    return\r\n"
-                 + "  Else\r\n"
-                 + "    SayTutorialHelp(iObjType, IsScriptKey)\r\n"
-                 + "  EndIf\r\n"
-                 + "EndFunction\r\n"
-                 + "\r\n"
-                 + "Void Function SendaiBrowserMessage (Int param)\r\n"
-                 + "  SendMessage(g_aiBrowserSayAllWindow, g_aiBrowserSayAllMessage, param, 0);\r\n"
-                 + "EndFunction\r\n"
-                 + "\r\n"
-                 + "Void Function SayAllStoppedEvent ()\r\n"
-                 + "  PCCursor()\r\n"
-                 + "  If (!SayAllInProgress()) Then\r\n"
-                 + "    SendaiBrowserMessage(0)\r\n"
-                 + "    PCCursor()\r\n"
-                 + "  EndIf\r\n"
-                 + "EndFunction\r\n"
-                 + "\r\n"
-                 + "Script JAWSCursor ()\r\n"
-                 + "EndScript\r\n"
-                 + "\r\n"
-                 + "Script InvisibleCursor ()\r\n"
-                 + "EndScript\r\n"
-                 + "\r\n"
-                 + "Void Function ObserveSpeechFunction ()\r\n"
-                 + "    If (SayAllInProgress()) Then\r\n"
-                 + "    Else\r\n"
-                 + "      If g_aiBrowserSayAllFlag != 1 Then\r\n"
-                 + "        let g_aiBrowserSayAllWindow = FindWindow(GetAppMainWindow(GetFocus()), \"Jaws-aiBrowser-Communication\", \"\")\r\n"
-                 + "        ;SayInteger(g_aiBrowserSayAllWindow)\r\n"
-                 + "        ;SetActiveCursor(1)\r\n"
-                 + "        ;MoveToWindow(g_aiBrowserSayAllWindow)\r\n"
-                 + "        let g_aiBrowserSayAllMessage = RegisterWindowMessage(\"WM_JAWS_AIBROWSER_MESSAGE\")\r\n"
-                 + "        let g_aiBrowserSayAllFlag = 1\r\n"
-                 + "        PCCursor()\r\n"
-                 + "        SetFocus(g_aiBrowserSayAllWindow)\r\n"
-                 + "        PCCursor()\r\n"
-                 + "        Delay(5, 0)\r\n"
-                 + "      Else\r\n"
-                 + "        If (GetFocus() != g_aiBrowserSayAllWindow) Then\r\n"
-                 + "          SetFocus(g_aiBrowserSayAllWindow)\r\n"
-                 + "        EndIf\r\n"
-                 + "        PCCursor()\r\n"
-                 + "      EndIf\r\n"
-                 + "\r\n"
-                 + "      PCCursor()\r\n"
-                 + "      SayAll(0)\r\n"
-                 + "      ;SkimRead()\r\n"
-                 + "      PCCursor()\r\n"
-                 + "    EndIf\r\n"
-                 + "EndFunction\r\n"
-                 + "\r\n"
-                 + "Script ObserveSpeech ()\r\n"
-                 + "  ObserveSpeechFunction()\r\n"
-                 + "EndScript\r\n"
-                 + ";--------------------------------------------------------------------------------\r\n"
-                 );
-    }
-
-    private void outputPerformScript(PrintWriter pw, String func, String funcExec) {
-        if (func.endsWith(")"))
-            pw.println("    PerformScript " + funcExec + "");
-        else
-            pw.println("    PerformScript " + func + "()");
-    }
-
-    private void outputJawsSayAllStop(PrintWriter pw, Key key) {
-        if (key.jawsSayAllStop) {
-            pw.println("    If g_aiBrowserSayAllFlag Then");
-            if (key.jawsSayAllStopIgnore) {
-                pw.println("      return");
-            } else {
-                pw.println("      PerformScript AiBrowserSayAllOff()");
-                pw.println("      SendaiBrowserMessage(1)");
-                pw.println("      Delay(5, 1)");
-            }
-            pw.println("    EndIf");
-        }
-    }
-
-    private void writeFunctions(PrintWriter pw) {
-        pw.println("include \"" + appName + ".jsh\"");
-        pw.println();
-        pw.println("Script JawsOn ()");
-        pw.println("  let " + flagName + " = 1");
-        pw.println("EndScript");
-        pw.println();
-        pw.println("Script JawsOff ()");
-        pw.println("  let " + flagName + " = 0");
-        pw.println("EndScript");
-        pw.println();
-        writeFixedCode(pw);
-        pw.println();
-        pw.println();
-
-        HashSet<String> generated = new HashSet<String>();
-        for (int i = 0; i < keys.size(); i++) {
-            Key key = keys.get(i);
-            
-            if (!key.jawsScript)
-                continue;
-            
-            String func = getFuncName(key, TYPE_COMMON);
-
-            if (func != null) {
-                pw.println("Script " + key.toFuncString() + "()");
-                if (key.jawsHandle) {
-                    outputPerformScript(pw, func, func);
-                } else {
-                    pw.println("  If " + flagName + " Then");
-                    outputPerformScript(pw, func, func);
-                    pw.println("  Else");
-                    outputJawsSayAllStop(pw, key);
-                    pw.println("    TypeKey(\"" + key.toTypeString() + "\")");
-                    pw.println("  EndIf");
-                }
-                pw.println("EndScript");
-                pw.println();
-                pw.println();
-                continue;
-            }
-
-            func = getFuncName(key, TYPE_COMMON | TYPE_QUICK | TYPE_VIRTUAL);
-            String funcName = "";
-            String funcExec = "";
-            if (func != null) {
-                funcName = func.replaceAll("\\([0-9]\\)", "(int n)");
-                funcExec = func.replaceAll("\\([0-9]\\)", "(n)");
-            }
-
-            if (!generated.contains(funcName)) {
-                generated.add(funcName);
-
-                if (func != null) {
-                    if (func.endsWith(")"))
-                        pw.println("Script " + funcName);
-                    else
-                        pw.println("Script " + func + "()");
-                    pw.println("  If " + flagName + " Then");
-                    outputPerformScript(pw, func, funcExec);
-                    pw.println("  Else");
-                    outputJawsSayAllStop(pw, key);
-                    pw.println("    TypeCurrentScriptKey()");
-                    pw.println("  EndIf");
-                    pw.println("EndScript");
-                    pw.println();
-                    pw.println();
-                }
-            }
-
-            pw.println("Script " + key.toFuncString() + "()");
-            pw.println("  If " + flagName + " Then");
-            pw.println("    SayString(\"" + key.toString() + "\")");
-            pw.println("  EndIf");
-            outputJawsSayAllStop(pw, key);
-            if (key.jawsKey != null) {
-                if (key.jawsKey.currentScript) {
-                    pw.println("  TypeCurrentScriptKey()");
-                } else {
-                    pw.println("  TypeKey(\"" + key.jawsKey.toTypeString() + "\")");
-                }
-            } else {
-                pw.println("  TypeKey(\"" + key.toTypeString() + "\")");
-            }
-            pw.println("EndScript");
-            pw.println();
-            pw.println();
-        }
-    }
-
-    private String getFuncName(Key key, int type) {
-        String ret;
-        if (isIt(type, TYPE_COMMON)) {
-            ret = getFucnName(keymaps_common, key);
-            if (ret != null)
-                return ret;
-        }
-        if (isIt(type, TYPE_QUICK)) {
-
-            ret = getFucnName(keymaps_quick, key);
-            if (ret != null)
-                return ret;
-        }
-        if (isIt(type, TYPE_VIRTUAL)) {
-            ret = getFucnName(keymaps_virtual, key);
-            if (ret != null)
-                return ret;
-        }
-        return null;
-    }
-
-    private boolean isIt(int type, int mask) {
-        return (type & mask) == mask;
-    }
-
-    private String getFucnName(Vector<Keymap> keymaps, Key key) {
-        for (int i = 0; i < keymaps.size(); i++) {
-            if (keymaps.get(i).equals(key)) {
-                return keymaps.get(i).scriptName;
-            }
-        }
-        return null;
-    }
-
-    private void writeKeyMap(PrintWriter pw) {
-        pw.println("[Common keys]");
-        for (int i = 0; i < keys.size(); i++) {
-            Key key = keys.get(i);
-            if (!key.jawsScript) continue;
-            pw.println(key.toString() + "=" + key.toFuncString());
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/Keymap.java b/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/Keymap.java
deleted file mode 100644
index 6f45f9f..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.jaws/src/org/eclipse/actf/ai/screenreader/jaws/script/Keymap.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.screenreader.jaws.script;
-
-import java.awt.event.KeyEvent;
-
-public class Keymap {
-	public int key;
-
-	public int modifier;
-
-	public boolean jaws;
-
-	public boolean windows;
-
-	public String scriptName;
-
-	public Keymap(String line) {
-		try {
-			int index = line.indexOf("=");
-
-			String keyStr = line.substring(0, index).trim();
-            if(keyStr.equals("JAWSKey+H")){
-                //int i = 1;
-            }
-			scriptName = line.substring(index + 1).trim();
-
-			String[] keyStrs = keyStr.split("[\\+]");
-			for (int i = 0; i < keyStrs.length; i++) {
-				String k = keyStrs[i].toLowerCase().replaceAll(" ","");
-				if (k.equals("control"))
-					modifier |= KeyEvent.CTRL_MASK;
-				else if (k.equals("shift"))
-					modifier |= KeyEvent.SHIFT_MASK;
-				else if (k.equals("alt"))
-					modifier |= KeyEvent.ALT_MASK;
-				else if (k.equals("jawskey") || k.equals("insert"))
-                    jaws = true;
-				else if (k.equals("windows"))
-					windows = true;
-				else
-					key = KeyConverter.convert(k);
-                
-			}
-		} catch (Exception e) {
-			e.printStackTrace(System.out);
-			System.out.println(line);
-		}
-	}
-
-	public String toString() {
-		return key+", "+modifier+", "+jaws+", "+windows+", "+scriptName;
-	}
-	
-	public boolean equals(Object o){
-		if(o instanceof Key){
-			Key k = (Key)o;
-			if(k.key == key && k.modifier == modifier &&
-					!jaws && !windows)
-				return true;
-		}
-		return false;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/.classpath b/plugins/org.eclipse.actf.ai.screenreader.windoweyes/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/.cvsignore b/plugins/org.eclipse.actf.ai.screenreader.windoweyes/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/.project b/plugins/org.eclipse.actf.ai.screenreader.windoweyes/.project
deleted file mode 100644
index 3694b53..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.screenreader.windoweyes</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.screenreader.windoweyes/META-INF/MANIFEST.MF
deleted file mode 100644
index e87e77d..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF Window-Eyes TTS Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.screenreader.windoweyes;singleton:=true
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.screenreader.windoweyes.Activator
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.actf.util.win32,
- org.eclipse.actf.ai.voice
-Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/about.html b/plugins/org.eclipse.actf.ai.screenreader.windoweyes/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/build.properties b/plugins/org.eclipse.actf.ai.screenreader.windoweyes/build.properties
deleted file mode 100644
index 8f739ba..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .,\
-               plugin.xml
diff --git a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/plugin.xml b/plugins/org.eclipse.actf.ai.screenreader.windoweyes/plugin.xml
deleted file mode 100644
index 9b46973..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/plugin.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-   <extension
-         point="org.eclipse.actf.ai.voice.TTSEngine">
-      <engine
-            class="org.eclipse.actf.ai.screenreader.windoweyes.engine.GWSpeak"
-            id="org.eclipse.actf.ai.screenreader.windoweyes.engine.GWSpeak"
-            name="Window-Eyes"
-            priority="999"/>
-   </extension>
-
-</plugin>
diff --git a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/src/org/eclipse/actf/ai/screenreader/windoweyes/Activator.java b/plugins/org.eclipse.actf.ai.screenreader.windoweyes/src/org/eclipse/actf/ai/screenreader/windoweyes/Activator.java
deleted file mode 100644
index 3a0ec5b..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/src/org/eclipse/actf/ai/screenreader/windoweyes/Activator.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Takashi ITOH - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.screenreader.windoweyes;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.actf.ai.screenreader.windoweyes";
-
-	// The shared instance
-	private static Activator plugin;
-
-	/**
-	 * The constructor
-	 */
-	public Activator() {
-		plugin = this;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 * 
-	 * @return the shared instance
-	 */
-	public static Activator getDefault() {
-		return plugin;
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/src/org/eclipse/actf/ai/screenreader/windoweyes/engine/GWSpeak.java b/plugins/org.eclipse.actf.ai.screenreader.windoweyes/src/org/eclipse/actf/ai/screenreader/windoweyes/engine/GWSpeak.java
deleted file mode 100644
index 595da36..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/src/org/eclipse/actf/ai/screenreader/windoweyes/engine/GWSpeak.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Takashi ITOH - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.screenreader.windoweyes.engine;
-
-import org.eclipse.actf.ai.tts.ITTSEngine;
-import org.eclipse.actf.ai.voice.IVoiceEventListener;
-import org.eclipse.actf.util.win32.COMUtil;
-import org.eclipse.actf.util.win32.MemoryUtil;
-import org.eclipse.swt.internal.win32.OS;
-import org.eclipse.swt.internal.win32.TCHAR;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * The implementation of ITTSEngine to use WindowEyes as voice engine.
- */
-public class GWSpeak implements ITTSEngine {
-
-	private IGWSpeak dispGWSpeak = null; // Instanceof GWSpeak.Speak ActiveX
-	private IVoiceEventListener eventListener = null;
-	private boolean notifyEndOfSpeech = false; // Invoke indexReceived() if
-												// true
-	private long lastNotificationTime = 0; // Last time of indexReceived()
-
-	// Constants
-	private static final int DELAY_FIRST = 500; // Delay on the first
-												// indexReceived()
-	private static final int DELAY_NEXT = 1000; // Delay on the subsequent
-												// indexReceived()
-	private static final TCHAR GWM_WINDOW_CLASS = new TCHAR(0,
-			"GWMExternalControl", true); //$NON-NLS-1$
-	private static final TCHAR GWM_WINDOW_NAME = new TCHAR(0,
-			"External Control", true); //$NON-NLS-1$
-
-	/**
-	 * Constructor
-	 */
-	public GWSpeak() {
-		// check to see if Window-Eyes is running
-		if (0 != OS.FindWindow(GWM_WINDOW_CLASS, GWM_WINDOW_NAME)) {
-			int pv = COMUtil.createDispatch(IGWSpeak.IID);
-			if (0 != pv) {
-				dispGWSpeak = new IGWSpeak(pv);
-				// Dispose GWSpeak just before the Display is disposed
-				Display.getCurrent().disposeExec(new Runnable() {
-					public void run() {
-						dispose();
-					}
-				});
-			}
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#dispose()
-	 */
-	public void dispose() {
-		if (null != dispGWSpeak) {
-			eventListener = null;
-			stop();
-			dispGWSpeak.Release();
-			dispGWSpeak = null;
-		}
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#isAvailable()
-	 */
-	public boolean isAvailable() {
-		return null != dispGWSpeak;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setEventListener(org.eclipse.actf.ai.voice.IVoiceEventListener)
-	 */
-	public void setEventListener(IVoiceEventListener eventListener) {
-		this.eventListener = eventListener;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#speak(java.lang.String, int, int)
-	 */
-	public void speak(String text, int flags, int index) {
-		if (null == dispGWSpeak)
-			return;
-		// System.out.println(text+" / "+flags+" / "+index); //$NON-NLS-1$
-		// //$NON-NLS-2$
-		boolean flushBeforeSpeak = 0 != (TTSFLAG_FLUSH & flags);
-		if (flushBeforeSpeak && 0 != lastNotificationTime) {
-			// Special handling on subsequent speak
-			if (index >= 0) {
-				// Do not flush during speak-all
-				flushBeforeSpeak = false;
-			} else {
-				// Do not flash on last text immediate after speak-all
-				// System.out.println(System.currentTimeMillis() -
-				// lastNotificationTime+"ms after notification"); //$NON-NLS-1$
-				flushBeforeSpeak = System.currentTimeMillis()
-						- lastNotificationTime > 200;
-			}
-		}
-		char[] data = (text + "\0").toCharArray(); //$NON-NLS-1$
-		int bstrText = MemoryUtil.SysAllocString(data);
-		try {
-			if (flushBeforeSpeak) {
-				dispGWSpeak.Silence();
-			}
-			dispGWSpeak.SpeakString(bstrText);
-			if (index >= 0 && null != eventListener) {
-				// Report dummy event since GWSpeak does not report
-				// end-of-speech
-				eventListener.indexReceived(index);
-				notifyEndOfSpeech = true;
-				int delay = 0 == lastNotificationTime ? DELAY_FIRST
-						: DELAY_NEXT;
-				Display.getCurrent().timerExec(delay, new Runnable() {
-					public void run() {
-						if (null != eventListener && notifyEndOfSpeech) {
-							eventListener.indexReceived(-1);
-							lastNotificationTime = System.currentTimeMillis();
-						}
-						notifyEndOfSpeech = false;
-					}
-				});
-			}
-			lastNotificationTime = 0;
-		} finally {
-			MemoryUtil.SysFreeString(bstrText);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#stop()
-	 */
-	public void stop() {
-		if (null == dispGWSpeak)
-			return;
-		notifyEndOfSpeech = false;
-		lastNotificationTime = 0;
-		dispGWSpeak.Silence();
-	}
-
-	/*
-	 * The following functions are not supported
-	 */
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#getSpeed()
-	 */
-	public int getSpeed() {
-		return 50;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setGender(java.lang.String)
-	 */
-	public void setGender(String gender) {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setLanguage(java.lang.String)
-	 */
-	public void setLanguage(String language) {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setSpeed(int)
-	 */
-	public void setSpeed(int speed) {
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/src/org/eclipse/actf/ai/screenreader/windoweyes/engine/IGWSpeak.java b/plugins/org.eclipse.actf.ai.screenreader.windoweyes/src/org/eclipse/actf/ai/screenreader/windoweyes/engine/IGWSpeak.java
deleted file mode 100644
index deaba60..0000000
--- a/plugins/org.eclipse.actf.ai.screenreader.windoweyes/src/org/eclipse/actf/ai/screenreader/windoweyes/engine/IGWSpeak.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Takashi ITOH - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.screenreader.windoweyes.engine;
-
-import org.eclipse.actf.util.win32.COMUtil;
-import org.eclipse.swt.internal.ole.win32.COM;
-import org.eclipse.swt.internal.ole.win32.GUID;
-import org.eclipse.swt.internal.ole.win32.IDispatch;
-
-/**
- * WindowEyes COM wrapper.
- */
-public class IGWSpeak extends IDispatch {
-
-	public static final GUID IID = COMUtil
-			.IIDFromString("{A42771AD-03C7-11D3-9F6E-00C095EE683F}"); //$NON-NLS-1$
-
-	private int address;
-
-	/**
-	 * Constructor
-	 * 
-	 * @param address
-	 *            native address of IDispatch
-	 */
-	public IGWSpeak(int address) {
-		super(address);
-		this.address = address;
-	}
-
-	/**
-	 * Speak a text
-	 * 
-	 * @param pStringAddress
-	 *            native BSTR address of text
-	 * @return S_OK if success
-	 */
-	public int SpeakString(int pStringAddress) {
-		return COMUtil.VtblCall(7, address, pStringAddress);
-	}
-
-	/**
-	 * @return S_OK if success
-	 */
-	public int Silence() {
-		return COM.VtblCall(8, address);
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/.classpath b/plugins/org.eclipse.actf.ai.tts.protalker/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/.cvsignore b/plugins/org.eclipse.actf.ai.tts.protalker/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/.project b/plugins/org.eclipse.actf.ai.tts.protalker/.project
deleted file mode 100644
index 5b9e47f..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.tts.protalker</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.tts.protalker/META-INF/MANIFEST.MF
deleted file mode 100644
index 341ca0d..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF ProTalker Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.tts.protalker;singleton:=true
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.tts.protalker.ProTalkerPlugin
-Bundle-Vendor: Eclipse.org
-Bundle-Localization: plugin
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.actf.ai.voice
-Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/about.html b/plugins/org.eclipse.actf.ai.tts.protalker/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/build.properties b/plugins/org.eclipse.actf.ai.tts.protalker/build.properties
deleted file mode 100644
index 4e2a259..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/build.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = META-INF/,\
-			   about.html,\
-               plugin.properties,\
-               plugin.xml,\
-               plugin_ja.properties,\
-               .
-jars.compile.order = .
-source.. = src/
-output.. = bin/
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/plugin.properties b/plugins/org.eclipse.actf.ai.tts.protalker/plugin.properties
deleted file mode 100644
index 9cc8852..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/plugin.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-ProTalkerPreferencePage.name=ProTalker
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/plugin.xml b/plugins/org.eclipse.actf.ai.tts.protalker/plugin.xml
deleted file mode 100644
index 77998b8..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/plugin.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   <extension
-         point="org.eclipse.actf.ai.voice.TTSEngine">
-         <engine
-               class="org.eclipse.actf.ai.tts.protalker.engine.ProTalker"
-               id="org.eclipse.actf.ai.tts.protalker.engine.ProTalker"
-               name="ProTalker"
-               priority="200"/>
-   </extension>
-
-   <extension
-         point="org.eclipse.ui.preferencePages">
-      <page
-            category="org.eclipse.actf.ai.voice.preferences.VoicePreferencePage"
-            class="org.eclipse.actf.ai.tts.protalker.preferences.ProTalkerPreferencePage"
-            id="org.eclipse.actf.ai.tts.protalker.preferences.ProTalkerPreferencePage"
-            name="%ProTalkerPreferencePage.name"/>
-   </extension>
-
-   <extension
-         point="org.eclipse.core.runtime.preferences">
-      <initializer class="org.eclipse.actf.ai.tts.protalker.preferences.ProTalkerPreferenceInitializer"/>
-   </extension>
-
-</plugin>
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/plugin_ja.properties b/plugins/org.eclipse.actf.ai.tts.protalker/plugin_ja.properties
deleted file mode 100644
index c365075..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/plugin_ja.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-ProTalkerPreferencePage.name=ProTalker\u8a2d\u5b9a
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/messages.properties b/plugins/org.eclipse.actf.ai.tts.protalker/src/messages.properties
deleted file mode 100644
index 71815f9..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/messages.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-tts.protalker.description=ProTalker Settings
-tts.protalker.voice=Voice Type:
-tts.protalker.male=Male
-tts.protalker.female=Female
-tts.protalker.notAvailable=ProTalker is not Available
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/messages_ja.properties b/plugins/org.eclipse.actf.ai.tts.protalker/src/messages_ja.properties
deleted file mode 100644
index 8497f0a..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/messages_ja.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-tts.protalker.description=ProTalker\u8a2d\u5b9a
-tts.protalker.voice=\u97f3\u58f0\u30bf\u30a4\u30d7:
-tts.protalker.male=\u8aad\u307f\u79c0\u541b
-tts.protalker.female=\u8aad\u307f\u5b50\u3061\u3083\u3093
-tts.protalker.notAvailable=ProTalker\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/Messages.java b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/Messages.java
deleted file mode 100644
index 3e78218..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/Messages.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Takashi ITOH - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.tts.protalker;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-/**
- * This provides the resource string.
- */
-public class Messages {
-	private static final String BUNDLE_NAME = "messages"; //$NON-NLS-1$
-
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
-
-	private Messages() {
-	}
-
-	/**
-	 * @param key
-	 *            the name of the resource string.
-	 * @return the string specified the key.
-	 */
-	public static String getString(String key) {
-		// TODO Auto-generated method stub
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/ProTalkerPlugin.java b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/ProTalkerPlugin.java
deleted file mode 100644
index 0c0f285..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/ProTalkerPlugin.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.tts.protalker;
-
-import org.eclipse.actf.ai.tts.AbstractUIPluginForTTS;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class ProTalkerPlugin extends AbstractUIPluginForTTS {
-
-	// The shared instance.
-	private static ProTalkerPlugin plugin;
-
-	/**
-	 * The constructor.
-	 */
-	public ProTalkerPlugin() {
-		plugin = this;
-	}
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	public void stop(BundleContext context) throws Exception {
-		super.stop(context);
-		plugin = null;
-	}
-
-	/**
-	 * Returns the shared instance.
-	 */
-	public static ProTalkerPlugin getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * Returns an image descriptor for the image file at the given plug-in
-	 * relative path.
-	 * 
-	 * @param path
-	 *            the path
-	 * @return the image descriptor
-	 */
-	public static ImageDescriptor getImageDescriptor(String path) {
-		return AbstractUIPlugin.imageDescriptorFromPlugin(
-				"org.eclipse.actf.ai.tts.protalker", path);
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/engine/ProTalker.java b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/engine/ProTalker.java
deleted file mode 100644
index 2d23530..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/engine/ProTalker.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.tts.protalker.engine;
-
-import org.eclipse.actf.ai.tts.ITTSEngine;
-import org.eclipse.actf.ai.tts.protalker.ProTalkerPlugin;
-import org.eclipse.actf.ai.voice.IVoiceEventListener;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * The implementation of ITTSEngine to use ProTalker.
- */
-public class ProTalker implements ITTSEngine, IPropertyChangeListener {
-
-	public static final String ID = "org.eclipse.actf.ai.tts.protalker.engine.ProTalker"; //$NON-NLS-1$
-
-	private ProTalkerBridge engine;
-
-	public ProTalker() {
-		engine = new ProTalkerBridge(Display.getDefault());
-		setVoice();
-		ProTalkerPlugin.getDefault().addPropertyChangeListener(this);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setEventListener(org.eclipse.actf.ai.voice.IVoiceEventListener)
-	 */
-	public void setEventListener(IVoiceEventListener eventListener) {
-		engine.addIndexListener(eventListener);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-	 */
-	public void propertyChange(PropertyChangeEvent event) {
-		if (ID.equals(event.getProperty())) {
-			stop();
-			setVoice();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#speak(java.lang.String, int, int)
-	 */
-	public void speak(String text, int flags, int index) {
-		engine.speak(text, flags, index);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#stop()
-	 */
-	public void stop() {
-		engine.reset();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#getSpeed()
-	 */
-	public int getSpeed() {
-		return engine.getSpeed();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setSpeed(int)
-	 */
-	public void setSpeed(int speed) {
-		engine.setSpeed(speed * 8 / 5 + 100);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setLanguage(java.lang.String)
-	 */
-	public void setLanguage(String language) {
-		// NOT AVAILABLE
-	}
-
-	private static IPreferenceStore preferenceStore = ProTalkerPlugin
-			.getDefault().getPreferenceStore();
-
-	private void setVoice() {
-		String voiceName = preferenceStore.getString(ID);
-		setVoice(voiceName);
-	}
-
-	/**
-	 * Set the voice type of the voice engine.
-	 * 
-	 * @param type
-	 *            "male" or "female".
-	 */
-	public void setVoice(String type) {
-		if (type.equals("male")) {
-			engine.setVoice(ProTalkerBridge.VOICE_MALE);
-		} else if (type.equals("female")) {
-			engine.setVoice(ProTalkerBridge.VOICE_FEMALE);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#setGender(java.lang.String)
-	 */
-	public void setGender(String gender) {
-		// Not available
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#isAvailable()
-	 */
-	public boolean isAvailable() {
-		return engine.isAvailable();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.actf.ai.tts.ITTSEngine#dispose()
-	 */
-	public void dispose() {
-
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/engine/ProTalkerBridge.java b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/engine/ProTalkerBridge.java
deleted file mode 100644
index 55759de..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/engine/ProTalkerBridge.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.tts.protalker.engine;
-
-import java.util.Enumeration;
-import java.util.Vector;
-
-import org.eclipse.actf.ai.tts.ITTSEngine;
-import org.eclipse.actf.ai.voice.IVoiceEventListener;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTException;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.ole.win32.OLE;
-import org.eclipse.swt.ole.win32.OleAutomation;
-import org.eclipse.swt.ole.win32.OleControlSite;
-import org.eclipse.swt.ole.win32.OleEvent;
-import org.eclipse.swt.ole.win32.OleFrame;
-import org.eclipse.swt.ole.win32.OleListener;
-import org.eclipse.swt.ole.win32.Variant;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * ProTalker COM wrapper
- */
-public class ProTalkerBridge implements OleListener {
-	public static final int VOICE_MALE = 0;
-
-	public static final int VOICE_FEMALE = 1;
-
-	private static final String SpeakWebText = "SpeakWebText";
-
-	private static final String AboutDlg = "AboutDlg";
-
-	private static final String GeneralDlg = "GeneralDlg";
-
-	private static final String Pause = "Pause";
-
-	private static final String Start = "Start";
-
-	private static final String Resume = "Resume";
-
-	private static final String Reset = "Reset";
-
-	private static final String Speak = "Speak";
-
-	private static final String SendText = "SendText";
-
-	private static final String AboutBox = "AboutBox";
-
-	private static final String Gender = "Gender";
-
-	private static final String Age = "Age";
-
-	private static final String ModeGuid = "ModeGuid";
-
-	private static final String Speed = "Speed";
-
-	private static final String Pitch = "Pitch";
-
-	private static final String Volume = "Volume";
-
-	private static final String UseButton = "UseButton";
-
-	private OleControlSite site = null;
-
-	private OleAutomation auto = null;
-
-	private OleFrame frame = null;
-
-	private Vector<IVoiceEventListener> indexListener = new Vector<IVoiceEventListener>();
-
-	ProTalkerBridge(Display display) {
-		Shell parent = new Shell();
-		parent.setLayout(new FillLayout());
-		frame = new OleFrame(parent, SWT.NONE);
-		try {
-			site = new OleControlSite(frame, SWT.NONE, "PTSVR.PtSvrCtrl.1");
-		} catch (SWTException e) {
-			site = null;
-			return;
-		}
-		auto = new OleAutomation(site);
-		site.doVerb(OLE.OLEIVERB_SHOW);
-		for (int i = 0; i < 10; i++) {
-			site.addEventListener(i, this);
-		}
-		setVoice(VOICE_MALE);
-	}
-
-	private Variant getProperty(String name) {
-		int id = auto.getIDsOfNames(new String[] { name })[0];
-		return auto.getProperty(id);
-	}
-
-	private void setProperty(String name, Variant value) {
-		int id = auto.getIDsOfNames(new String[] { name })[0];
-		auto.setProperty(id, value);
-	}
-
-	private int getInt(String name) {
-		return getProperty(name).getInt();
-	}
-
-	private void setInt(String name, int value) {
-		setProperty(name, new Variant(value));
-	}
-
-	private String getString(String name) {
-		return getProperty(name).getString();
-	}
-
-	private void setString(String name, String value) {
-		setProperty(name, new Variant(value));
-	}
-
-	private boolean getBoolean(String name) {
-		return getProperty(name).getBoolean();
-	}
-
-	private void setBoolean(String name, boolean value) {
-		setProperty(name, new Variant(value));
-	}
-
-	private void invoke(String name) {
-		invoke(name, new Variant[0]);
-	}
-
-	private void invoke(String name, final Variant[] arg) {
-		final int id = auto.getIDsOfNames(new String[] { name })[0];
-		auto.invoke(id, arg);
-	}
-
-	// properties
-	/**
-	 * @return the gender type of this engine.
-	 */
-	public int getGender() {
-		return getInt(Gender);
-	}
-
-	/**
-	 * @return the age property of this engine.
-	 */
-	public int getAge() {
-		return getInt(Age);
-	}
-
-	/**
-	 * @return the guid of the current mode.
-	 */
-	public String getModeGuid() {
-		return getString(ModeGuid);
-	}
-
-	/**
-	 * @param guid
-	 *            the guid to be set.
-	 */
-	public void setModeGuid(String guid) {
-		setString(ModeGuid, guid);
-	}
-
-	/**
-	 * @return the speed property of this engine.
-	 */
-	public int getSpeed() {
-		return getInt(Speed);
-	}
-
-	/**
-	 * Set the speed of this engine in the scale of this engine.
-	 * 
-	 * @param value
-	 *            the speed property to be set.
-	 */
-	public void setSpeed(int value) {
-		setInt(Speed, value);
-	}
-
-	/**
-	 * @return the pitch property of this engine.
-	 */
-	public int getPitch() {
-		return getInt(Pitch);
-	}
-
-	/**
-	 * @param value
-	 *            the pitch property to be set.
-	 */
-	public void setPitch(int value) {
-		setInt(Pitch, value);
-	}
-
-	/**
-	 * @return the volume property of this engine.
-	 */
-	public int getVolume() {
-		return getInt(Volume);
-	}
-
-	/**
-	 * @param value
-	 *            the volume property to be set.
-	 */
-	public void setVolume(int value) {
-		setInt(Volume, value);
-	}
-
-	/**
-	 * @return whether the GUI button is used or not.
-	 */
-	public boolean getUseButton() {
-		return getBoolean(UseButton);
-	}
-
-	/**
-	 * @param value
-	 *            the using button flag to be set.
-	 */
-	public void setUseButton(boolean value) {
-		setBoolean(UseButton, value);
-	}
-
-	// methods
-	/**
-	 * Invoke SpeakWebText method of this engine.
-	 */
-	public void speakWebText() {
-		invoke(SpeakWebText);
-	}
-
-	/**
-	 * Shows the about dialog.
-	 */
-	public void aboutDlg() {
-		invoke(AboutDlg);
-	}
-
-	/**
-	 * Shows the dialog of property settings.
-	 */
-	public void generalDlg() {
-		invoke(GeneralDlg);
-	}
-
-	/**
-	 * Pause the speech.
-	 */
-	public void pause() {
-		invoke(Pause);
-	}
-
-	/**
-	 * Start to speak.
-	 */
-	public void start() {
-		invoke(Start);
-	}
-
-	/**
-	 * Resume to speak.
-	 */
-	public void resume() {
-		invoke(Resume);
-	}
-
-	/**
-	 * Reset the state of this voice engine.
-	 */
-	public void reset() {
-		// It doesn't work well by invoking Reset method once.
-		invoke(Reset);
-		invoke(Speak, new Variant[] { new Variant(" ") });
-		invoke(Reset);
-		invoke(Speak, new Variant[] { new Variant(" ") });
-	}
-
-	/**
-	 * @param text
-	 *            the text to be spoken.
-	 */
-	public void sendText(String text) {
-		invoke(SendText, new Variant[] { new Variant(text) });
-	}
-
-	/**
-	 * Shows the about box.
-	 */
-	public void aboutBox() {
-		invoke(AboutBox);
-	}
-
-	/**
-	 * @param text
-	 *            the text to be spoken.
-	 * @param flags
-	 *            the flag of the voice engine behavior.
-	 * @param index
-	 *            the index mark to be set. The index will be returned with
-	 *            voice event.
-	 * @see ITTSEngine#TTSFLAG_DEFAULT
-	 * @see ITTSEngine#TTSFLAG_FLUSH
-	 */
-	public void speak(String text, int flags, int index) {
-		StringBuffer sb = new StringBuffer();
-		sb.append("\\Mrk=");
-		sb.append(index);
-		sb.append("\\");
-		sb.append(text);
-		sb.append("\\Mrk=-1\\");
-
-		if (flags == ITTSEngine.TTSFLAG_DEFAULT) {
-			invoke(Speak, new Variant[] { new Variant(sb.toString()) });
-		} else if (flags == ITTSEngine.TTSFLAG_FLUSH) {
-			reset();
-			invoke(Speak, new Variant[] { new Variant(sb.toString()) });
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.swt.ole.win32.OleListener#handleEvent(org.eclipse.swt.ole.win32.OleEvent)
-	 */
-	public void handleEvent(OleEvent event) {
-		if (event.type == 3) { // Bookmark
-			for (Enumeration<IVoiceEventListener> e = indexListener.elements(); e
-					.hasMoreElements();) {
-				e.nextElement().indexReceived(event.arguments[0].getInt());
-			}
-		}
-	}
-
-	/**
-	 * @param listener
-	 */
-	public void addIndexListener(IVoiceEventListener listener) {
-		indexListener.add(listener);
-	}
-
-	/**
-	 * @param listener
-	 */
-	public void removeIndexListener(IVoiceEventListener listener) {
-		indexListener.remove(listener);
-	}
-
-	/**
-	 * @param type
-	 *            the voice type of this engine.
-	 * @see #VOICE_MALE
-	 * @see #VOICE_FEMALE
-	 */
-	public void setVoice(int type) {
-		if (type == VOICE_MALE) {
-			setModeGuid("{904AAB60-5D94-11D0-830A-444553540000}");
-		} else if (type == VOICE_FEMALE) {
-			setModeGuid("{904AAB61-5D94-11d0-830A-444553540000}");
-		}
-	}
-
-	/**
-	 * @return whether this object can be used or not.
-	 */
-	public boolean isAvailable() {
-		return auto != null;
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerFieldEditor.java b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerFieldEditor.java
deleted file mode 100644
index 29c34c0..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerFieldEditor.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.tts.protalker.preferences;
-
-import org.eclipse.actf.ai.tts.ITTSEngine;
-import org.eclipse.actf.ai.tts.protalker.Messages;
-import org.eclipse.actf.ai.tts.protalker.engine.ProTalker;
-import org.eclipse.actf.ai.voice.VoiceUtil;
-import org.eclipse.actf.ai.voice.preferences.util.ComboButtonFieldEditor;
-import org.eclipse.jface.dialogs.DialogPage;
-import org.eclipse.swt.widgets.Composite;
-
-
-public class ProTalkerFieldEditor extends ComboButtonFieldEditor {
-
-	private static final String SAMPLE_TEXT = "Hello. This is test."; //$NON-NLS-1$
-
-	private static final String[][] VOICE_SELECTION = new String[][] {
-			{ Messages.getString("tts.protalker.male"), "male" }, { Messages.getString("tts.protalker.female"), "female" } }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-
-	private ProTalker proTalker;
-
-	public ProTalkerFieldEditor(String labelText, Composite parent) {
-		super(ProTalker.ID, labelText, null, parent);
-	}
-
-	protected void initLabelsAndValues(String[][] labelsAndValues) {
-		super.initLabelsAndValues(getVoiceNames());
-	}
-
-	private String[][] getVoiceNames() {
-		if (null == proTalker) {
-			try {
-				proTalker = new ProTalker();
-			}
-			catch( Exception e ) {
-			}
-		}
-		return null!=proTalker ? VOICE_SELECTION : new String[0][];
-	}
-
-	protected void testPressed(int index) {
-		if (index >= 0) {
-			proTalker.setVoice(value);
-			proTalker.setSpeed(VoiceUtil.getDefaultSpeed());
-			proTalker.speak(SAMPLE_TEXT, ITTSEngine.TTSFLAG_FLUSH, -1);
-		}
-	}
-
-	public void setPage(DialogPage dialogPage) {
-		super.setPage(dialogPage);
-		if( null == dialogPage && null != proTalker ) {
-			proTalker.dispose();
-			proTalker = null;
-		}
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerPreferenceInitializer.java b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerPreferenceInitializer.java
deleted file mode 100644
index b3376a2..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerPreferenceInitializer.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.tts.protalker.preferences;
-
-import org.eclipse.actf.ai.tts.protalker.ProTalkerPlugin;
-import org.eclipse.actf.ai.tts.protalker.engine.ProTalker;
-import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.jface.preference.IPreferenceStore;
-
-
-public class ProTalkerPreferenceInitializer extends AbstractPreferenceInitializer {
-
-	public void initializeDefaultPreferences() {
-		IPreferenceStore store = ProTalkerPlugin.getDefault().getPreferenceStore();
-		store.setDefault(ProTalker.ID, "male"); //$NON-NLS-1$
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerPreferencePage.java b/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerPreferencePage.java
deleted file mode 100644
index 50d6221..0000000
--- a/plugins/org.eclipse.actf.ai.tts.protalker/src/org/eclipse/actf/ai/tts/protalker/preferences/ProTalkerPreferencePage.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.tts.protalker.preferences;
-
-import org.eclipse.actf.ai.tts.TTSRegistry;
-import org.eclipse.actf.ai.tts.protalker.Messages;
-import org.eclipse.actf.ai.tts.protalker.ProTalkerPlugin;
-import org.eclipse.actf.ai.tts.protalker.engine.ProTalker;
-import org.eclipse.actf.ai.voice.preferences.util.GroupFieldEditorVoicePreferencePage;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-
-public class ProTalkerPreferencePage extends GroupFieldEditorVoicePreferencePage
-		implements IWorkbenchPreferencePage {
-
-	public ProTalkerPreferencePage() {
-		super();
-		setDescription(Messages.getString("tts.protalker.description")); //$NON-NLS-1$
-		setPreferenceStore(ProTalkerPlugin.getDefault().getPreferenceStore());
-	}
-
-	public void createFieldEditors() {
-        if(!TTSRegistry.isAvailable(ProTalker.ID)){
-            setMessage(Messages.getString("tts.protalker.notAvailable"));
-            return;
-        }
-
-		addField(new ProTalkerFieldEditor(Messages.getString("tts.protalker.voice"), getFieldEditorParent())); //$NON-NLS-1$
-	}
-
-	public void init(IWorkbench workbench) {
-	}
-
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/.classpath b/plugins/org.eclipse.actf.ai.xmlstore/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/.project b/plugins/org.eclipse.actf.ai.xmlstore/.project
deleted file mode 100644
index 85b40a7..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.actf.ai.xmlstore</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/META-INF/MANIFEST.MF b/plugins/org.eclipse.actf.ai.xmlstore/META-INF/MANIFEST.MF
deleted file mode 100644
index 4aae2e5..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse ACTF XML store Plug-in (Incubation)
-Bundle-SymbolicName: org.eclipse.actf.ai.xmlstore
-Bundle-Version: 0.5.0.qualifier
-Bundle-Activator: org.eclipse.actf.ai.internal.xmlstore.XMLStorePlugin
-Bundle-Vendor: Eclipse.org
-Require-Bundle: org.eclipse.core.runtime
-Eclipse-LazyStart: true
-Export-Package: org.eclipse.actf.ai.xmlstore
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/about.html b/plugins/org.eclipse.actf.ai.xmlstore/about.html
deleted file mode 100644
index 481dbcf..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/about.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor&rsquo;s license 
-that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/build.properties b/plugins/org.eclipse.actf.ai.xmlstore/build.properties
deleted file mode 100644
index 8f739ba..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-			   about.html,\
-               .,\
-               plugin.xml
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/plugin.xml b/plugins/org.eclipse.actf.ai.xmlstore/plugin.xml
deleted file mode 100644
index 33ca93c..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/plugin.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-
-</plugin>
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/internal/xmlstore/XMLStorePlugin.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/internal/xmlstore/XMLStorePlugin.java
deleted file mode 100644
index 685e3a1..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/internal/xmlstore/XMLStorePlugin.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.internal.xmlstore;
-
-import java.io.File;
-
-import org.eclipse.actf.ai.xmlstore.XMLStoreServiceUtil;
-import org.eclipse.actf.ai.xmlstore.local.UserXMLStore;
-import org.eclipse.actf.ai.xmlstore.local.XMLStoreLocal;
-import org.eclipse.actf.ai.xmlstore.spi.XMLStoreServiceImpl;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Plugin;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class XMLStorePlugin extends Plugin {
-
-	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.actf.ai.xmlstore";
-
-	// The shared instance
-	private static XMLStorePlugin plugin;
-
-	/**
-	 * The constructor
-	 */
-	public XMLStorePlugin() {
-		plugin = this;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-		initialize();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
-	 */
-	@Override
-	public void stop(BundleContext context) throws Exception {
-		plugin = null;
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance
-	 * 
-	 * @return the shared instance
-	 */
-	public static XMLStorePlugin getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * @param subDirectory
-	 *            the sub directory to be read.
-	 * @return the instance of the File which is the sub directory of the
-	 *         default user directory of the application.
-	 */
-	public File getLocalDir(String subDirectory) {
-		return new File(getLocalDir(), subDirectory);
-	}
-
-	private File getLocalDir() {
-		Bundle bundle = getBundle();
-		IPath stateLocationPath = Platform.getStateLocation(bundle);
-		return stateLocationPath.toFile();
-	}
-
-	private void initialize() {
-		XMLStoreServiceImpl.getInstance().setUserStore(
-				new UserXMLStore(getLocalDir(UserXMLStore.TEMP_DIR_NAME),
-						XMLStoreServiceUtil.XML_EXT));
-		XMLStoreServiceImpl.getInstance().addStore(
-				new XMLStoreLocal(getLocalDir(XMLStoreLocal.SYSTEM_DIR_NAME),
-						XMLStoreServiceUtil.XML_EXT));
-	}
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLEditableInfo.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLEditableInfo.java
deleted file mode 100644
index 135c1a2..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLEditableInfo.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore;
-
-import java.io.File;
-import java.util.zip.ZipOutputStream;
-
-/**
- * IXMLEditableInfo interface defines the method to be implemented by the
- * editable XML file implementation, which is used for user annotation.
- */
-public interface IXMLEditableInfo extends IXMLInfo {
-	/**
-	 * The XML file will be saved as the default name. The default name is
-	 * determined from the target URI pattern.
-	 */
-	void save();
-
-	/**
-	 * The XML file will be saved as the specified file.
-	 * 
-	 * @param file
-	 *            the destination.
-	 */
-	void save(File file);
-
-	/**
-	 * @param priority
-	 *            the priority value to be set in the meta information.
-	 */
-	void setPriority(int priority);
-
-	/**
-	 * @param documentation
-	 *            the documentation text to be set in the meta information.
-	 */
-	void setDocumentation(String documentation);
-
-	/**
-	 * @param pageTitle
-	 *            the page title to be set in the meta information.
-	 */
-	void setPageTitle(String pageTitle);
-
-	/**
-	 * @param authorName
-	 *            the author name to be set in the meta information.
-	 */
-	void setAuthorName(String authorName);
-
-	/**
-	 * The XML file will be deleted.
-	 */
-	void remove();
-
-	/**
-	 * The XML file will be saved in the zip output stream.
-	 * @param zos the destination to be used for save.
-	 */
-	void save(ZipOutputStream zos);
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLInfo.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLInfo.java
deleted file mode 100644
index e1d4ed3..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLInfo.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore;
-
-import org.w3c.dom.Node;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-
-/**
- * IXMLInfo represents a metadata or config XML file, which contains &lt;meta&gt;
- * information.
- */
-public interface IXMLInfo {
-	/**
-	 * @return the document element of the XML file.
-	 * @throws XMLStoreException
-	 */
-	Node getRootNode() throws XMLStoreException;
-
-	/**
-	 * @param handler the content handler to be used for parsing.
-	 */
-	void setContentHandler(ContentHandler handler);
-
-	/**
-	 * Starts SAX parsing using the content handler specified by {@link #setContentHandler(ContentHandler)}
-	 * @throws XMLStoreException
-	 * @throws SAXException
-	 */
-	void startSAX() throws XMLStoreException, SAXException;
-
-	/**
-	 * Reset the SAX parsing.
-	 * @throws XMLStoreException
-	 */
-	void reset() throws XMLStoreException;
-
-	/**
-	 * @return the documentation text declared in the &lt;meta&gt; information.
-	 */
-	String getDocumentation();
-
-	/**
-	 * @return whether the XML file is for user annotation or not.
-	 */
-	boolean isUserEntry();
-
-	/**
-	 * @return the priority value declared in the &lt;meta&gt; information.
-	 */
-	int getPriority();
-
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLSelector.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLSelector.java
deleted file mode 100644
index aded459..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLSelector.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore;
-
-/**
- * IXMLSelector interface defines the methods to get information for selecting
- * XML files from the IXMLStore.
- */
-public interface IXMLSelector {
-	/**
-	 * @return the name of the XML document element.
-	 */
-	String getDocumentElementName();
-
-	/**
-	 * @return the namespace of the XML document element.
-	 */
-	String getDocumentElementNS();
-
-	/**
-	 * @return the URI to be matched with the pattern declaration in the
-	 *         metadata file.
-	 */
-	String getURI();
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLStore.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLStore.java
deleted file mode 100644
index 406136d..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLStore.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore;
-
-import java.util.Iterator;
-
-/**
- * IXMLStore interface defines the methods to be implemented by the
- * implementation of the storage of the XML.
- */
-public interface IXMLStore {
-	/**
-	 * @param selector
-	 *            the selector to be used for selecting XML files from the
-	 *            storage.
-	 * @return new IXMLStore contains specified files.
-	 */
-	IXMLStore specify(IXMLSelector selector);
-
-	/**
-	 * Reload all files which is contained in the storage.
-	 */
-	void refleshAll();
-
-	/**
-	 * @return the Iterator of the XML files.
-	 */
-	Iterator<IXMLInfo> getInfoIterator();
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLStoreService.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLStoreService.java
deleted file mode 100644
index a4391e8..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/IXMLStoreService.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore;
-
-import java.io.File;
-
-/**
- * IXMLStoreService has factory methods and utility methods related to XML
- * store. The following is a sample usage. The root {@link IXMLStore} can be
- * obtained from the {@link IXMLStoreService}. {@link IXMLStore} has some XML
- * files and the files can be selected by an {@link IXMLSelector} and also the
- * files can be iterated by {@link IXMLStore#getInfoIterator()}.
- * 
- * 
- * <pre>
- * IXMLStoreService ss = XMLStorePlugin.getDefault().getXMLStoreService();
- * IXMLSelector selector = ss.getSelectorWithDocElem(&quot;fennec&quot;,
- * 		&quot;http://www.ibm.com/xmlns/prod/aiBrowser/fennec&quot;);
- * IXMLStore store = ss.getRootStore();
- * store = store.specify(selector);
- * </pre>
- */
-public interface IXMLStoreService {
-	/**
-	 * It creates an instance of IXMLSelector which selects the elements matched
-	 * with the <i>name</i> and the <i>iri</i>.
-	 * 
-	 * @param name
-	 *            the name of the element for selecting.
-	 * @param iri
-	 *            the namespace IRI of the element for selecting.
-	 * @return
-	 */
-	IXMLSelector getSelectorWithDocElem(String name, String iri);
-
-	/**
-	 * It creates an instance of IXMLSelector which selects the elements matched
-	 * with the <i>uri</i>.
-	 * 
-	 * @param uri
-	 *            the URI for selecting.
-	 * @return
-	 */
-	IXMLSelector getSelectorWithURI(String uri);
-
-	// IXMLSelector getSelectorWithXPath(String xpath);
-	/**
-	 * @return the root XML store instance.
-	 */
-	IXMLStore getRootStore();
-
-	/**
-	 * It creates an instance of {@link IXMLEditableInfo} for user annotation.
-	 * 
-	 * @param namespaceURI
-	 *            the default namespace of the document.
-	 * @param qualifiedName
-	 *            the name of the document element.
-	 * @param targetUriPattern
-	 *            the URI pattern to be used for the target site declaration.
-	 * @return new instance of {@link IXMLEditableInfo}
-	 * @throws XMLStoreException
-	 */
-	IXMLEditableInfo newUserXML(String namespaceURI, String qualifiedName,
-			String targetUriPattern) throws XMLStoreException;
-
-	/**
-	 * @param info
-	 *            the metadata to be exported.
-	 * @param file
-	 *            the destination of the export.
-	 * @return whether the export is succeeded or not.
-	 */
-	boolean exportMetadata(IXMLInfo info, File file);
-
-	/**
-	 * @param file
-	 *            the metadata file to be imported.
-	 * @return whether the import is succeeded or not.
-	 */
-	boolean importMetadata(File file);
-
-	/**
-	 * It exports all user annotations to the destination file <i>dest</i> in
-	 * format of zip file.
-	 * 
-	 * @param dest
-	 *            the destination of the export.
-	 * @return whether the export is succeeded or not.
-	 */
-	boolean exportAllAnnotations(File dest);
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/XMLStoreException.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/XMLStoreException.java
deleted file mode 100644
index aebd277..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/XMLStoreException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore;
-
-/**
- * XMLStoreException is thrown when a XML parsing is failed.
- */
-public class XMLStoreException extends Exception {
-    private static final long serialVersionUID = -4630681290620194750L;
-    
-    /**
-     * @param message
-     * @param cause
-     * @see Exception#Exception(String, Throwable)
-     */
-    public XMLStoreException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * @param message
-     * @see Exception#Exception(String)
-     */
-    public XMLStoreException(String message) {
-        super(message);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/XMLStoreServiceUtil.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/XMLStoreServiceUtil.java
deleted file mode 100644
index 69e025b..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/XMLStoreServiceUtil.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Kentarou FUKUDA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.xmlstore;
-
-import java.io.File;
-
-import org.eclipse.actf.ai.xmlstore.local.XMLStoreLocal;
-import org.eclipse.actf.ai.xmlstore.spi.XMLStoreServiceImpl;
-
-/**
- * Utility class for IXMLStoreService
- */
-public class XMLStoreServiceUtil {
-
-	/**
-	 * The extensions for the XML files used for addSystemStore method.
-	 */
-	public static final String[] XML_EXT = new String[] { ".xml", ".fnc" };
-
-	/**
-	 * The settings of the application should be contained in the system store.
-	 * 
-	 * @param location
-	 *            the location to be added for searching XML files.
-	 */
-	public static void addSystemStore(File location) {
-		XMLStoreServiceImpl.getInstance().addStore(
-				new XMLStoreLocal(location, XMLStoreServiceUtil.XML_EXT));
-	}
-
-	/**
-	 * @return the singleton instance of the IXMLStoreService.
-	 */
-	public static IXMLStoreService getXMLStoreService() {
-		return XMLStoreServiceImpl.getInstance();
-	}
-
-
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/SubStore.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/SubStore.java
deleted file mode 100644
index 6862096..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/SubStore.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation.
- *    Daisuke SATO - Created it as the distinct class.
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.local;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-
-class SubStore extends XMLFileListStore {
-    protected final XMLFileListStore baseStore;
-    protected final IXMLSelector selector;
-
-    static class InfoIterator implements Iterator<IXMLInfo> {
-        private int i;
-        private final ArrayList<XMLFile> list;
-        public boolean hasNext() {
-            if (i == list.size()) return false;
-            return true;
-        }
-
-        public IXMLInfo next() {
-            return list.get(i++); 
-        }
-
-        public void remove() {
-        }
-        
-        InfoIterator(ArrayList<XMLFile> list) {
-            this.i = 0;
-            this.list = list;
-        }
-    }
-    
-    public Iterator<IXMLInfo> getInfoIterator() {
-        return new InfoIterator(list);
-    }
-
-    public IXMLStore specify(IXMLSelector selector) {
-        return new SubStore(this, selector);
-    }
-    
-    protected void initSubStore() {
-        ArrayList<XMLFile> l = baseStore.list; 
-        int len = l.size();
-        this.list = new ArrayList<XMLFile>();
-        for (int i = 0; i < len; i++) {
-            XMLFile xf = l.get(i);
-            if (xf.getSelectorInfo().match(selector)) {
-                this.list.add(xf);
-            }
-        }
-    }
-
-    SubStore(XMLFileListStore baseStore, IXMLSelector selector) {
-        this.baseStore = baseStore;
-        this.selector = selector;
-        initSubStore();
-    }
-
-    public void refleshAll() {
-        baseStore.refleshAll();
-        initSubStore();
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/UserSubStore.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/UserSubStore.java
deleted file mode 100644
index 9f5f3b6..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/UserSubStore.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.local;
-
-import java.util.ArrayList;
-
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-
-
-public class UserSubStore extends SubStore {
-
-    UserSubStore(XMLFileListStore baseStore, IXMLSelector selector) {
-        super(baseStore, selector);
-    }
-
-    @Override
-    public IXMLStore specify(IXMLSelector selector) {
-        return new UserSubStore(this, selector);
-    }
-    
-    @Override
-    protected void initSubStore() {
-        ArrayList<XMLFile> l = baseStore.list;
-        int len = l.size();
-        this.list = new ArrayList<XMLFile>();
-        for (int i = 0; i < len; i++) {
-            XMLFile xf = l.get(i);
-            if (xf instanceof UserXML) {
-                UserXML ux = (UserXML) xf;
-                if (ux.match(selector)) {
-                    this.list.add(xf);
-                }
-            }
-        }
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/UserXML.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/UserXML.java
deleted file mode 100644
index 45b3dbd..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/UserXML.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.local;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.eclipse.actf.ai.xmlstore.IXMLEditableInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.eclipse.actf.ai.xmlstore.spi.XMLSelectorInfo;
-import org.w3c.dom.DOMImplementation;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-
-public class UserXML extends XMLFile implements IXMLEditableInfo {
-
-    private String namespaceURI;
-
-    private String qualifiedName;
-
-    private String documentation = "User Annotation";
-
-    private String targetUriPattern;
-
-    private Pattern uriPat;
-    
-    private String pageTitle;
-    
-    private String authorName;
-
-    private final boolean onlyInMemory;
-
-    private int priority;
-    
-    private boolean removed = false;
-
-    private static String getFileName(String targetURI) {
-        long time = System.currentTimeMillis();
-        String uri = targetURI.replaceAll("[\\/:*?\"<>|]", "-");
-        if (uri.length() > 200) 
-            uri = uri.substring(0, 200);
-        
-        return time + "-" + uri + ".fnc";
-    }
-
-    UserXML(File file) throws XMLStoreException {
-        super(file);
-        onlyInMemory = false;
-        targetUriPattern = getSelectorInfo().getURI();
-        documentation = getSelectorInfo().getDocumentation();
-        priority = getSelectorInfo().getPriority();
-        pageTitle = getSelectorInfo().getPageTitle();
-        authorName = getSelectorInfo().getAuthorName();
-    }
-
-    UserXML(String namespaceURI, String qualifiedName, String targetUriPattern, File dir) throws XMLStoreException {
-        //      super(new File(dir, getFileName()));
-        super(new File(dir, getFileName(targetUriPattern)), false);
-        this.namespaceURI = namespaceURI;
-        this.qualifiedName = qualifiedName;
-        this.onlyInMemory = true;
-        try {
-            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-            DocumentBuilder builder = factory.newDocumentBuilder();
-            DOMImplementation impl = builder.getDOMImplementation();
-            doc = impl.createDocument(namespaceURI, qualifiedName, null);
-            setTargetURIPattern(targetUriPattern);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-    
-    public String getTargetUriPattern() {
-        return targetUriPattern;
-    }
-
-    @Override
-    public String getDocumentation() {
-        return documentation;
-    }
-    
-    @Override
-    public boolean isUserEntry() {
-        return true;
-    }
-    
-    public String getPageTitle() {
-        return pageTitle;
-    }
-    
-    public String getAuthorName() {
-        return authorName;
-    }
-    
-
-    @Override
-    public int getPriority() {
-        return priority;
-    }
-
-    @Override
-    public Node getRootNode() throws XMLStoreException {
-        if (onlyInMemory)
-            return doc.getDocumentElement();
-        else
-            return super.getRootNode();
-    }
-
-    @Override
-    public void setContentHandler(ContentHandler h) {
-        if (!onlyInMemory)
-            super.setContentHandler(h);
-    }
-
-    @Override
-    public void startSAX() throws XMLStoreException, SAXException {
-        if (onlyInMemory)
-            throw new SAXException("not supported");
-        else
-            super.startSAX();
-    }
-    
-    @Override
-    public void reset() throws XMLStoreException {
-        if(!onlyInMemory)
-            super.reset();
-    }
-
-    public void save() {
-        save(doc, this.file);
-    }
-    
-    public void save(File file) {
-        save(doc, file);
-    }
-
-    private void save(Document doc, File file) {
-        try {
-            FileOutputStream fos = new FileOutputStream(file);
-            save(doc, fos);
-            fos.close();
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-    
-    private void save(Document doc, OutputStream stream) {
-        try {
-            //System.out.println("store into " + file.getAbsolutePath());
-            TransformerFactory factory = TransformerFactory.newInstance();
-            Transformer transformer = factory.newTransformer();
-            transformer.setOutputProperty("indent", "yes");
-            DOMSource source = new DOMSource(doc);
-            StreamResult result = new StreamResult(stream);
-            transformer.transform(source, result);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    public void setPriority(int priority) {
-        this.priority = priority;
-        resetMeta();
-    }
-
-    public void setDocumentation(String documentation) {
-        this.documentation = documentation;
-        resetMeta();
-    }
-
-    private void setTargetURIPattern(String targetUriPattern) {
-        this.targetUriPattern = targetUriPattern;
-        uriPat = Pattern.compile(quote(targetUriPattern, '*'));
-        resetMeta();
-    }
-    
-    public void setPageTitle(String pageTitle) {
-        this.pageTitle = pageTitle;
-        resetMeta();
-    }
-    
-    public void setAuthorName(String authorName) {
-        this.authorName = authorName;
-        resetMeta();
-    }
-
-    private void resetMeta() {
-        Element meta = getElement("meta", doc.getDocumentElement());
-        getElement("userEntry", meta);
-        Element target = getElement("targetSite", meta);
-        Element documentation = getElement("documentation", meta);
-        Element pageTitle = getElement("pageTitle", meta);
-        Element authorName = getElement("authorName", meta);
-
-        target.setAttribute("uri", getTargetUriPattern());
-        documentation.setTextContent(getDocumentation());
-        pageTitle.setTextContent(getPageTitle());
-        authorName.setTextContent(getAuthorName());
-    }
-
-    private Element getElement(String name, Node parent) {
-        NodeList list = doc.getElementsByTagNameNS(XMLSelectorInfo.SELECTOR_NS, name);
-        if (list.getLength() == 0) {
-            Element temp = doc.createElementNS(XMLSelectorInfo.SELECTOR_NS, name);
-            parent.insertBefore(temp, parent.getFirstChild());
-            return temp;
-        }
-        return (Element) list.item(0);
-    }
-
-    private String quote(String pat, char wildCardChar) {
-        StringBuffer r = new StringBuffer();
-        for (int i = 0; i < pat.length(); i++) {
-            char c = pat.charAt(i);
-            if (c == wildCardChar) {
-                r.append(".*");
-            } else if (("\\?*+.[]{}()$^".indexOf(c) >= 0)) {
-                r.append('\\');
-                r.append(c);
-            } else {
-                r.append(c);
-            }
-        }
-        return r.toString();
-    }
-
-    public boolean match(IXMLSelector selector) {
-        if (removed)
-            return false;
-        if (!onlyInMemory)
-            return super.getSelectorInfo().match(selector);
-        if (!matchDocumentElement(selector))
-            return false;
-        if (!matchURI(selector))
-            return false;
-        return true;
-    }
-
-    private boolean matchDocumentElement(IXMLSelector selector) {
-        if (selector.getDocumentElementName() != null) {
-            if (!namespaceURI.equals(selector.getDocumentElementNS()))
-                return false;
-            if (!qualifiedName.equals(selector.getDocumentElementName()))
-                return false;
-        }
-        return true;
-    }
-
-    private boolean matchURI(IXMLSelector selector) {
-        String uri = selector.getURI();
-        if (uri == null)
-            return true;
-
-        Matcher m = uriPat.matcher(uri);
-        if (m.matches())
-            return true;
-        return false;
-    }
-
-    public void remove() {
-        removed = true;
-        if (!file.exists())
-            return;
-        file.delete();
-    }
-
-    public void save(ZipOutputStream zos) {
-        try {
-            zos.putNextEntry(new ZipEntry(file.getName()));
-            getRootNode();
-            save(doc, zos);
-            zos.closeEntry();
-        } catch (IOException e) {
-            e.printStackTrace();
-        } catch (XMLStoreException e) {
-            e.printStackTrace();
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/UserXMLStore.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/UserXMLStore.java
deleted file mode 100644
index 453b8ad..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/UserXMLStore.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Daisuke SATO - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.local;
-
-import java.io.File;
-
-import org.eclipse.actf.ai.xmlstore.IXMLEditableInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-
-public class UserXMLStore extends XMLStoreLocal {
-    public static final String TEMP_DIR_NAME = "user";
-
-    IXMLSelector selector;
-
-    private File dir;
-
-    public UserXMLStore(File dir, String[] extensions) {
-        super(dir, extensions);
-        this.dir = dir;
-        dir.mkdirs();
-    }
-
-    @Override
-    protected void register(File file) {
-        try {
-            UserXML xf = new UserXML(file);
-            list.add(xf);
-        } catch (XMLStoreException e) {
-        }
-    }
-    
-    public IXMLEditableInfo newXML(String namespaceURI, String qualifiedName, String targetUriPattern) throws XMLStoreException {
-        UserXML ux = new UserXML(namespaceURI, qualifiedName, targetUriPattern, dir);
-        list.add(ux);
-        return ux;
-    }
-    
-    @Override
-    public IXMLStore specify(IXMLSelector selector) {
-        return new UserSubStore(this, selector);
-    }
-    
-    @Override
-    protected void registerDir(File dir) {
-        File[] fileList = dir.listFiles();
-        if (fileList == null) return;
-        for (int i = 0; i < fileList.length; i++) {
-            File f = fileList[i];
-            if (f.isDirectory()) {
-                registerDir(f);
-            } else if (isNotTemporal(f)){
-                register(f);
-            }
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/XMLFile.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/XMLFile.java
deleted file mode 100644
index 8c3bf2d..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/XMLFile.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.local;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-
-import javax.xml.parsers.DocumentBuilder;
-
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.eclipse.actf.ai.xmlstore.spi.XMLSelectorInfo;
-import org.eclipse.actf.ai.xmlstore.spi.XMLUtil;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-class XMLFile implements IXMLInfo {
-    protected final File file;
-
-    private XMLSelectorInfo selectorInfo;
-
-    private XMLReader reader;
-
-    protected Document doc;
-
-    XMLSelectorInfo getSelectorInfo() {
-        return selectorInfo;
-    }
-
-    private long lastModified;
-
-    XMLFile(File file) throws XMLStoreException {
-        this.file = file;
-        reset();
-    }
-
-    XMLFile(File file, boolean flag) throws XMLStoreException {
-        this.file = file;
-        if (flag)
-            reset();
-    }
-
-    private boolean isNotLatest() {
-        return (file.lastModified() > lastModified);
-    }
-
-    public String getDocumentation() {
-        return selectorInfo.getDocumentation();
-    }
-
-    public boolean isUserEntry() {
-        return selectorInfo.isUserEntry();
-    }
-
-    public int getPriority() {
-        return selectorInfo.getPriority();
-    }
-
-    private InputSource getInputSource() throws FileNotFoundException {
-        return new InputSource(new FileInputStream(file));
-    }
-
-    public Node getRootNode() throws XMLStoreException {
-        if (isNotLatest())
-            reset();
-        if (doc == null) {
-            DocumentBuilder builder;
-            try {
-                builder = XMLUtil.newDocumentBuilder();
-                InputSource is = getInputSource();
-                doc = builder.parse(is);
-            } catch (Exception e) {
-                throw new XMLStoreException("DOM initialization is failed.", e);
-            }
-        }
-        return doc.getDocumentElement();
-    }
-
-    private void initReader() throws SAXException {
-        if (reader == null) {
-            reader = XMLReaderFactory.createXMLReader();
-        }
-    }
-
-    public void setContentHandler(ContentHandler h) {
-        try {
-            initReader();
-        } catch (SAXException e) {
-            e.printStackTrace();
-            return;
-        }
-        reader.setContentHandler(h);
-    }
-
-    public void startSAX() throws XMLStoreException, SAXException {
-        try {
-            initReader();
-            InputSource is = getInputSource();
-            reader.parse(is);
-        } catch (SAXException e) {
-            throw e;
-        } catch (Exception e) {
-            throw new XMLStoreException("SAX startup is failed", e);
-        }
-    }
-
-    public void reset() throws XMLStoreException {
-        this.reader = null;
-        this.doc = null;
-        selectorInfo = XMLSelectorInfo.parse(this);
-        this.lastModified = file.lastModified();
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/XMLFileListStore.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/XMLFileListStore.java
deleted file mode 100644
index 526f2b1..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/XMLFileListStore.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.local;
-
-import java.util.ArrayList;
-
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-
-abstract class XMLFileListStore implements IXMLStore {
-    protected ArrayList<XMLFile> list;
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/XMLStoreLocal.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/XMLStoreLocal.java
deleted file mode 100644
index d1f460f..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/local/XMLStoreLocal.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.local;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.eclipse.actf.ai.xmlstore.local.SubStore.InfoIterator;
-
-public class XMLStoreLocal extends XMLFileListStore {
-    public static final String SYSTEM_DIR_NAME = "system";
-    
-    private final File directory;
-
-	private final String[] extensions;
-
-    protected void register(File file) {
-        try {
-            XMLFile xf = new XMLFile(file);
-            list.add(xf);
-        } catch (XMLStoreException e) {
-        }
-    }
-
-    protected void registerDir(File dir) {
-        if (!dir.isDirectory()) return;
-        
-        File[] fileList = dir.listFiles();
-        for (int i = 0; i < fileList.length; i++) {
-            File f = fileList[i];
-            if (f.isDirectory()) {
-                registerDir(f);
-            } else if (isNotTemporal(f) && matchExtension(f)){
-                register(f);
-            }
-        }
-    }
-    
-    protected boolean matchExtension(File f) {
-    	String name = f.getName();
-    	boolean result = false;
-        for (int i = 0; i < extensions.length; i++) {
-        	result = result || name.endsWith(extensions[i]);
-        }
-        return result;
-    }
-
-    protected boolean isNotTemporal(File f) {
-        String name = f.getName();
-        if (name.startsWith("#") && name.endsWith("#"))
-            return false;
-        if (name.endsWith("~"))
-            return false;
-        return true;
-    }
-
-    private void init() {
-        this.list = new ArrayList<XMLFile>();
-        
-        registerDir(directory);
-    }
-
-    public Iterator<IXMLInfo> getInfoIterator() {
-        return new InfoIterator(list);
-    }
-
-    public IXMLStore specify(IXMLSelector selector) {
-        return new SubStore(this, selector);
-    }
-
-    public void refleshAll() {
-        init();
-    }
-
-    public XMLStoreLocal(File directory, String[] extensions) {
-        this.directory = directory;
-        this.extensions = extensions;
-        init();
-    }
-
-    public static XMLFile newXMLFile(File file) throws XMLStoreException {
-        return new XMLFile(file);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/NVDLException.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/NVDLException.java
deleted file mode 100644
index 34b8040..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/NVDLException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl;
-
-/**
- * The <code>NVDLException</code> is the base exception class for NVDL.
- */
-public class NVDLException extends Exception {
-    private static final long serialVersionUID = 155415531522970901L;
-
-    private Exception e;
-
-    private Object[] messageArguments;
-
-    public Exception getException() {
-        return e;
-    }
-
-    public Object[] getMessageArguments() {
-        return messageArguments;
-    }
-
-    public NVDLException(String message, Object[] messageArguments) {
-        super(message);
-        this.messageArguments = messageArguments;
-    }
-
-    public NVDLException(String message) {
-        this(message, null);
-    }
-
-    public NVDLException(Exception e) {
-        super(e);
-        this.e = e;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/AllowValidatorHandler.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/AllowValidatorHandler.java
deleted file mode 100644
index 3690b3e..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/AllowValidatorHandler.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.dispatcher;
-
-import javax.xml.validation.TypeInfoProvider;
-import javax.xml.validation.ValidatorHandler;
-
-import org.w3c.dom.ls.LSResourceResolver;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-
-class AllowValidatorHandler extends ValidatorHandler {
-    private ErrorHandler errorHandler = null;
-    public void setErrorHandler(ErrorHandler errorHandler) {
-	this.errorHandler = errorHandler;
-    }
-
-    public ErrorHandler getErrorHandler() {
-	return errorHandler;
-    }
-
-    // private Locator loc;
-
-    public void setDocumentLocator(Locator loc) {
-	// this.loc = loc;
-    }
-
-    public void startDocument() throws SAXException {
-    }
-
-    public void endDocument() throws SAXException {
-    }
-    public void startPrefixMapping(String arg0, String arg1) throws SAXException {
-    }
-
-    public void endPrefixMapping(String arg0) throws SAXException {
-    }
-
-    public void startElement(String url,
-			     String localName,
-			     String qName,
-			     Attributes attrs) throws SAXException {
-    }
-
-    public void endElement(String uri, String localName, String qName) throws SAXException {
-    }
-
-    public void characters(char[] ch, int start, int length)
-	throws SAXException {
-    }
-
-    public void ignorableWhitespace(char[] ch,
-				    int start,
-				    int length) throws SAXException {
-    }
-
-    public void processingInstruction(String arg0, String arg1) throws SAXException {
-    }
-
-    public void skippedEntity(String arg0) throws SAXException {
-    }
-
-    public void setContentHandler(ContentHandler arg0) {
-    }
-
-    public ContentHandler getContentHandler() {
-	return null;
-    }
-
-    public void setResourceResolver(LSResourceResolver arg0) {
-    }
-
-    public LSResourceResolver getResourceResolver() {
-	return null;
-    }
-
-    public TypeInfoProvider getTypeInfoProvider() {
-	return null;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLAttributes.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLAttributes.java
deleted file mode 100644
index 533196f..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLAttributes.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.dispatcher;
-
-import java.util.ArrayList;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAttributeSection;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLElement;
-import org.xml.sax.Attributes;
-
-
-/**
- * The <code>NVDLAttributes</code> is the proxy class for SAX Attributes.
- */
-public class NVDLAttributes implements Attributes, NVDLAttributeSection {
-    /********************************************
-               Impl. for org.xml.sax.Attributes
-    ********************************************/
-    public int getLength() {
-        int len = indexes.size();
-        if (extAttrs == null) return len;
-        return len + extAttrs.size();
-    }
-
-    public String getURI(int index) {
-        if (isIndexBase(index)) {
-            return base.getURI(baseIdx(index));
-        } else if (isIndexExt(index)) {
-            ExtAttr ea = getExtAttr(index);
-            return ea.uri;
-        }
-        return null;
-    }
-
-    public String getLocalName(int index) {
-        if (isIndexBase(index)) {
-            return base.getLocalName(baseIdx(index));
-        } else if (isIndexExt(index)) {
-            ExtAttr ea = getExtAttr(index);
-            return ea.localName;
-        }
-        return null;
-    }
-
-    public String getQName(int index) {
-        if (isIndexBase(index)) {
-            return base.getQName(baseIdx(index));
-        } else if (isIndexExt(index)) {
-            ExtAttr ea = getExtAttr(index);
-            return ea.qName;
-        }
-        return null;
-    }
-
-    public String getType(int index) {
-        if (isIndexBase(index)) {
-            return base.getType(baseIdx(index));
-        } else if (isIndexExt(index)) {
-            return "CDATA";
-        }
-        return null;
-    }
-
-    public String getValue(int index) {
-        if (isIndexBase(index)) {
-            return base.getValue(baseIdx(index));
-        } else if (isIndexExt(index)) {
-            ExtAttr ea = getExtAttr(index);
-            return ea.value;
-        }
-        return null;
-    }
-
-    public int getIndex(String uri, String localName) {
-        int baseIdx = base.getIndex(uri, localName);
-        if (baseIdx >= 0) {
-            return getIdx(baseIdx);
-        }
-        int len = extAttrs.size();
-        for (int i = 0; i < len; i++) {
-            ExtAttr ea = extAttrs.get(i);
-            if (uri.equals(ea.uri) && localName.equals(ea.localName)) return indexes.size() + i;
-        }
-        return -1;
-    }
-
-    public int getIndex(String qName) {
-        int baseIdx = base.getIndex(qName);
-        if (baseIdx >= 0) {
-            return getIdx(baseIdx);
-        }
-        int len = extAttrs.size();
-        for (int i = 0; i < len; i++) {
-            ExtAttr ea = extAttrs.get(i);
-            if (qName.equals(ea.qName)) return indexes.size() + i;
-        }
-        return -1;
-    }
-
-    public String getType(String uri, String localName) {
-        int baseIdx = getIndex(uri, localName);
-        if (baseIdx < 0) return null;
-        return getType(baseIdx);
-    }
-
-    public String getType(String qName) {
-        int baseIdx = getIndex(qName);
-        if (baseIdx < 0) return null;
-        return getType(baseIdx);
-    }
-
-    public String getValue(String uri, String localName) {
-        int baseIdx = getIndex(uri, localName);
-        if (baseIdx < 0) return null;
-        return getValue(baseIdx);
-    }
-
-    public String getValue(String qName) {
-        int baseIdx = getIndex(qName);
-        if (baseIdx < 0) return null;
-        return getValue(baseIdx);
-    }
-
-    /********************************************
-               Impl. for NVDL
-    ********************************************/
-
-    // private NVDLMode mode;
-    private final String sectionNS;
-    private final NVDLElement baseElement;
-    private final Attributes base;
-    private final ArrayList<Integer> indexes = new ArrayList<Integer>();
-
-    private ArrayList<ExtAttr> extAttrs;
-
-    private static class ExtAttr {
-        final String uri;
-        final String localName;
-        final String qName;
-        final String value;
-        ExtAttr(String uri, String localName, String qName, String value) {
-            this.uri = uri;
-            this.localName = localName;
-            this.qName = qName;
-            this.value = value;
-        }
-    }
-
-    private int baseIdx(int idx) {
-        Integer iv = (Integer) indexes.get(idx);
-        return iv.intValue();
-    }
-
-    private boolean isIndexBase(int idx) {
-        return ((idx >= 0) && (idx < indexes.size()));
-    }
-
-    private boolean isIndexExt(int idx) {
-        if (extAttrs == null) return false;
-        int baseLen = indexes.size();
-        return ((idx >= baseLen) && (idx < baseLen + extAttrs.size()));
-    }
-
-    private ExtAttr getExtAttr(int index) {
-        return extAttrs.get(index - indexes.size());
-    }
-
-    private int getIdx(int i) {
-        return indexes.indexOf(new Integer(i));
-    }
-
-    void addAttribute(int i) {
-        indexes.add(new Integer(i));
-    }
-
-    void addAttributes(NVDLAttributes part) {
-        assert part.base == this.base;
-        int len = part.indexes.size();
-        for (int i = 0; i < len; i++) {
-            Integer idx = part.indexes.get(i);
-            indexes.add(idx);
-        }
-    }
-
-    public void addExtAttribute(String uri, String localName, String qName, String value) {
-        ExtAttr ea = new ExtAttr(uri, localName, qName, value);
-        if (extAttrs == null) extAttrs = new ArrayList<ExtAttr>();
-        extAttrs.add(ea);
-    }
-
-    // --------------------------------------------------------------------------------
-    //    NVDLAttributeSection interface impl.
-    // --------------------------------------------------------------------------------
-    
-    public String getNamespace() {
-        return sectionNS;
-    }
-
-    public NVDLElement getBaseElement() {
-        return baseElement;
-    }
-
-    // --------------------------------------------------------------------------------
-    //    Constructors.
-    // --------------------------------------------------------------------------------
-
-    public NVDLAttributes(NVDLElement baseElement, Attributes base) {
-        this.base = base;
-        this.baseElement = baseElement;
-        this.sectionNS = null;
-    }
-
-    NVDLAttributes(NVDLElement baseElement, Attributes base, String sectionNS) {
-        this.base = base;
-        this.baseElement = baseElement;
-        this.sectionNS = sectionNS;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLDispatcherException.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLDispatcherException.java
deleted file mode 100644
index 04e1ab8..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLDispatcherException.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.dispatcher;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.NVDLException;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLModel;
-
-/**
- * The <code>NVDLDispatcherException</code> is an exception class
- * for the dispatcher.
- */
-public class NVDLDispatcherException extends NVDLException {
-    private static final long serialVersionUID = -6745352761744925844L;
-
-    private final NVDLModel currentModel;
-
-    public NVDLModel getCurrentModel() {
-        return currentModel;
-    }
-
-    NVDLDispatcherException(Exception e, NVDLModel model) {
-        super(e);
-        this.currentModel = model;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLPlaceHolderAttributes.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLPlaceHolderAttributes.java
deleted file mode 100644
index e39ac10..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLPlaceHolderAttributes.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.dispatcher;
-
-import org.xml.sax.Attributes;
-
-/**
- * The <code>NVDLPlaceHolderAttributes</code> is the special
- * attribute class for placeholders.
- */
-class NVDLPlaceHolderAttributes implements Attributes {
-    private String ns;
-    private String localName;
-
-    public int getLength() {
-        // ns and localName
-        return 2;
-    }
-
-    public String getURI(int index) {
-        switch (index) {
-        case 0: case 1:
-            return "";
-        }
-        return null;
-    }
-
-    public String getLocalName(int index) {
-        switch (index) {
-        case 0:
-            return "ns";
-        case 1:
-            return "localName";
-        }
-        return null;
-    }
-
-    public String getQName(int index) {
-        return getLocalName(index);
-    }
-
-    public String getType(int index) {
-        switch (index) {
-        case 0: case 1:
-            return "CDATA";
-        }
-        return null;
-    }
-
-    public String getValue(int index) {
-        switch (index) {
-        case 0:
-            return ns;
-        case 1:
-            return localName;
-        }
-        return null;
-    }
-
-    public int getIndex(String uri, String localName) {
-        if ((uri == null) || (uri.length() != 0)) return -1;
-        if ("ns".equals(localName)) {
-            return 0;
-        } else if ("localName".equals(localName)) {
-            return 1;
-        }
-        return -1;
-    }
-
-    public int getIndex(String qName) {
-        if ("ns".equals(qName)) {
-            return 0;
-        } else if ("localName".equals(qName)) {
-            return 1;
-        }
-        return -1;
-    }
-
-    public String getType(String uri, String localName) {
-        return getType(getIndex(uri, localName));
-    }
-
-    public String getType(String qName) {
-        return getType(getIndex(qName));
-    }
-
-    public String getValue(String uri, String localName) {
-        if ((uri == null) || (uri.length() != 0)) return null;
-        if ("ns".equals(localName)) {
-            return ns;
-        } else if ("localName".equals(localName)) {
-            return localName;
-        }
-        return null;
-    }
-
-    public String getValue(String qName) {
-        if ("ns".equals(qName)) {
-            return ns;
-        } else if ("localName".equals(qName)) {
-            return localName;
-        }
-        return null;
-    }
-    
-    NVDLPlaceHolderAttributes(String ns, String localName) {
-        this.ns = ns;
-        this.localName = localName;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLSAXDispatcher.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLSAXDispatcher.java
deleted file mode 100644
index 89d20ef..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLSAXDispatcher.java
+++ /dev/null
@@ -1,737 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.dispatcher;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.xml.validation.Schema;
-import javax.xml.validation.TypeInfoProvider;
-import javax.xml.validation.ValidatorHandler;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.NVDLException;
-import org.eclipse.actf.ai.xmlstore.nvdl.fm.Interpretation;
-import org.eclipse.actf.ai.xmlstore.nvdl.fm.PDA;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAllowAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLConst;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLElement;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRejectAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRules;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLValidateAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.Log;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.PrefixMapper;
-import org.w3c.dom.ls.LSResourceResolver;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-
-/**
- * The <code>NVDLSAXDispatcher</code> is a dispatcher for SAX interface.
- */
-public class NVDLSAXDispatcher {
-    private NVDLRules rules;
-    private PDA pda;
-
-    private final boolean emitSectionID;
-
-    private PrefixMapper prefixMapper = new PrefixMapper();
-
-    // NVDLElement -> List of ActiveHandlers
-    private Map<NVDLElement, List<ActiveHandler>> activeHandlersMap = new HashMap<NVDLElement, List<ActiveHandler>>();
-    private Set<ActiveHandler> activeHandlers = new HashSet<ActiveHandler>();
-
-    private int errorCounter = 0;
-
-    public void reset() {
-        pda.reset();
-        prefixMapper.reset();
-        activeHandlersMap.clear();
-        activeHandlers.clear();
-        errorCounter = 0;
-        currentElement = null;
-        nextSectionIdx = 0;
-
-        idMap.clear();
-        asnIDCounter = 0;
-    }
-
-    private XMLReader reader;
-
-    public int getErrorCount() {
-        return errorCounter;
-    }
-
-    private void incrementErrorCounter() {
-        errorCounter++;
-    }
-
-    private void sendVirtualElement(ContentHandler ch,
-                                    String instancePrefix,
-                                    String qName,
-                                    Attributes attrs,
-                                    boolean requireDecl)
-        throws SAXException {
-        Object effectiveMapping = prefixMapper.startEffectivePrefixMappings(ch);
-        if (requireDecl) {
-            ch.startPrefixMapping(instancePrefix, NVDLConst.INSTANCE_NS);
-        }
-        ch.startElement(NVDLConst.INSTANCE_NS,
-                        NVDLConst.VIRTUALELEMENT_NAME,
-                        qName, attrs);
-        ch.endElement(NVDLConst.INSTANCE_NS,
-                      NVDLConst.VIRTUALELEMENT_NAME,
-                      qName);
-        if (requireDecl) {
-            ch.endPrefixMapping(instancePrefix);
-        }
-        prefixMapper.endEffectivePrefixMappings(effectiveMapping, ch);
-    }
-
-    private NVDLAttributes addASNIDAttribute(Interpretation ip,
-                                             ContentHandler h,
-                                             NVDLAttributes attr,
-                                             String asnID)
-    	throws SAXException {
-        if (h == null) return attr;
-        PrefixMapper.PrefixReturnVal prv = prefixMapper.uniquePrefix(NVDLConst.INSTANCE_REC_PREFIX_BASE,
-                                                                     NVDLConst.INSTANCE_REC_NS);
-        String qName = prv.prefix + ":" + NVDLConst.ASN_ID_ATTR;
-            
-        if (prv.requireDecl) {
-            h.startPrefixMapping(prv.prefix, NVDLConst.INSTANCE_REC_NS);
-            prefixMapper.startPrefixMapping(prv.prefix, NVDLConst.INSTANCE_REC_NS);
-            ip.setPrefix(prv.prefix);
-        }
-        attr.addExtAttribute(NVDLConst.INSTANCE_REC_NS,
-                             NVDLConst.ASN_ID_ATTR,
-                             qName, asnID);
-        return attr;
-        
-    }
-
-    private void dispatchAttributeSection(List<Interpretation> ips,
-                                          NVDLAttributes attrs,
-                                          String asnID)
-        throws SAXException {
-        Iterator<Interpretation> it = ips.iterator();
-        while (it.hasNext()) {
-            Interpretation ip = it.next();
-            if (!ip.isDispatch()) continue;
-
-            InterpretationSlot slot = setupInterpretationSlot(ip, currentElement, true);
-            ContentHandler h = slot.contentHandler;
-            ContentHandler dh = slot.contentHandlerForDebug;
-
-            PrefixMapper.PrefixReturnVal prv;
-            prv = prefixMapper.uniquePrefix(NVDLConst.INSTANCE_PREFIX_BASE,
-                                            NVDLConst.INSTANCE_NS);
-            String qName = prv.prefix + ":" + NVDLConst.VIRTUALELEMENT_NAME;
-            sendVirtualElement(h, prv.prefix, qName, attrs, prv.requireDecl);
-            if (dh != null) {
-                if (emitSectionID) {
-                    attrs = addASNIDAttribute(ip, dh, attrs, asnID);
-                }
-                sendVirtualElement(dh, prv.prefix, qName, attrs, prv.requireDecl);
-            }
-        }
-    }
-
-    private NVDLAttributes dispatchAttribute(Interpretation ip,
-                                             ContentHandler h,
-                                             Attributes attrs)
-    	throws SAXException {
-        Map<String, NVDLAttributes> attrsMap = new HashMap<String, NVDLAttributes>();
-        int len = attrs.getLength();
-        NVDLAttributes restAttributes = new NVDLAttributes(currentElement, attrs);
-        for (int i = 0; i < len; i++) {
-            String ns = attrs.getURI(i);
-            NVDLAttributes pa = attrsMap.get(ns);
-            if (pa == null) {
-                pa = new NVDLAttributes(currentElement, attrs, ns);
-                attrsMap.put(ns, pa);
-            }
-            pa.addAttribute(i);
-        }
-
-        Iterator<NVDLAttributes> it = attrsMap.values().iterator();
-        boolean isASNIDRequired = false;
-        String asnID = generateASNID();
-        while (it.hasNext()) {
-            NVDLAttributes pa = it.next();
-            List<Interpretation> ipAttrs = pda.getAttributeInterpretation(ip, pa);
-            if (pda.isAttributeAttached()) {
-                restAttributes.addAttributes(pa);
-            } else {
-                isASNIDRequired = emitSectionID;
-            }
-            dispatchAttributeSection(ipAttrs, pa, asnID);
-        }
-        if (isASNIDRequired) {
-            restAttributes = addASNIDAttribute(ip, h, restAttributes, asnID);
-        }
-        
-        return restAttributes;
-    }
-
-    private class InterpretationSlot implements ErrorHandler {
-        ContentHandler contentHandler;
-        ContentHandler contentHandlerForDebug;
-
-        String definedPrefix;
-        final Interpretation ip;
-
-        /********************************************************************************
-                      Error Handler Proxy
-         ********************************************************************************/
-        private final ErrorHandler errorHandler;
-
-        private SAXParseException encapsulateException(SAXParseException e) {
-            NVDLDispatcherException de = new NVDLDispatcherException(e.getException(),
-                                                                     ip.getAction());
-            return new SAXParseException(e.getMessage(),
-                                         e.getPublicId(),
-                                         e.getSystemId(),
-                                         e.getLineNumber(),
-                                         e.getColumnNumber(), de);
-        }
-        
-        public void warning(SAXParseException e)
-            throws SAXException {
-            if (errorHandler != null) 
-                errorHandler.warning(encapsulateException(e));
-        }
-
-        public void error(SAXParseException e)
-            throws SAXException {
-            incrementErrorCounter();
-            if (errorHandler != null) 
-                errorHandler.error(encapsulateException(e));
-        }
-
-        public void fatalError(SAXParseException e)
-            throws SAXException {
-            incrementErrorCounter();
-            if (errorHandler != null) 
-                errorHandler.fatalError(encapsulateException(e));
-        }
-
-        InterpretationSlot(Interpretation ip,
-                           ContentHandler contentHandler,
-                           ContentHandler contentHandlerForDebug) {
-            this.ip = ip;
-            this.contentHandler = contentHandler;
-            this.contentHandlerForDebug = contentHandlerForDebug;
-            errorHandler = validatorHandler.getErrorHandler();
-            if (contentHandler instanceof ValidatorHandler) {
-                ((ValidatorHandler) contentHandler).setErrorHandler(this);
-            }
-        }
-    }
-
-    private static class IDMapVal {
-        int sectionID;
-        int slotNodeID;
-    }
-
-    private int asnIDCounter;
-    private String generateASNID() {
-        return Integer.toString(asnIDCounter++);
-    }
-
-    private HashMap<String, IDMapVal> idMap = new HashMap<String, IDMapVal>();
-
-    private String generateID(Interpretation ip, boolean sectionID, boolean increment) {
-        String id = ip.getID();
-        String idForNum;
-        if (sectionID) {
-            idForNum = ip.getPrevID();
-        } else {
-            idForNum = id;
-        }
-        // System.err.println("!"+id+" / "+idForNum);
-        IDMapVal idVal = idMap.get(idForNum);
-        int idNum;
-        if (idVal == null) {
-            idNum = 0;
-            idMap.put(idForNum, new IDMapVal());
-        } else {
-            idNum = idVal.slotNodeID;
-            if (!sectionID && increment) {
-                idVal.slotNodeID++;
-            }
-        }
-        if (idNum == 0) {
-            return id;
-        } else {
-            return id + " " + idNum;
-        }
-    }
-
-    private InterpretationSlot setupInterpretationSlot(Interpretation ip,
-                                                       NVDLElement e,
-                                                       boolean forAttribute)
-        throws SAXException {
-        InterpretationSlot slot = (InterpretationSlot) ip.getSlot();
-        if (slot != null) return slot;
-
-        NVDLAction a = ip.getAction();
-        ContentHandler contentHandler = makeContentHandler(a, forAttribute);
-        ContentHandler contentHandlerForDebug = setupContentHandlerForDebug(generateID(ip, true, false), a);
-        if (contentHandler != null) {
-            startActiveHandler(contentHandler, e);
-        }
-        if (contentHandlerForDebug != null) {
-            startActiveHandler(contentHandlerForDebug, e);
-        }
-        slot = new InterpretationSlot(ip, contentHandler, contentHandlerForDebug);
-        ip.setSlot(slot);
-
-        return slot;
-    }
-
-    private InterpretationSlot getInterpretationSlot(Interpretation ip) {
-        return (InterpretationSlot) ip.getSlot();
-    }
-
-    // --------------------------------------------------------------------------------
-    // TODO: Debug SAX Handler
-    // --------------------------------------------------------------------------------
-    public interface DebugHandlerFactory {
-        ContentHandler createContentHandler(String id, NVDLAction action) throws SAXException;
-        void nextActionHandler(NVDLAction action, Locator locator);
-    }
-    DebugHandlerFactory debugHandlerFactory;
-    public void setDebugHandlerFactory(DebugHandlerFactory f) {
-        debugHandlerFactory = f;
-    }
-
-    private ContentHandler setupContentHandlerForDebug(String id, NVDLAction a) throws SAXException {
-        if (debugHandlerFactory == null) return null;
-        debugHandlerFactory.nextActionHandler(a, validatorHandler.locator);
-        ContentHandler h = debugHandlerFactory.createContentHandler(id, a);
-        if (h == null) return null;
-        if (validatorHandler.locator != null) {
-            h.setDocumentLocator(validatorHandler.locator);
-        }
-        return h;
-    }
-    // --------------------------------------------------------------------------------
-
-    private int nextSectionIdx;
-    private NVDLElement currentElement;
-
-    private NVDLElement createNVDLElement(String ns, String localName, NVDLElement parent) {
-        NVDLElement e = new NVDLElement(ns, localName, parent,
-                                        rules.getTriggerManager(),
-                                        nextSectionIdx);
-        if (e.isSectionHead()) nextSectionIdx++;
-        return e;
-    }
-
-    static class ActiveHandler {
-        ContentHandler handler;
-        NVDLElement rootElement;
-        Object effectiveMapping;
-    }
-
-    private ActiveHandler startActiveHandler(ContentHandler h,
-                                             NVDLElement e) 
-        throws SAXException {
-        ActiveHandler ah = new ActiveHandler();
-        ah.handler = h;
-        ah.rootElement = e;
-        h.startDocument();
-        ah.effectiveMapping = prefixMapper.startEffectivePrefixMappings(h);
-        activeHandlers.add(ah);
-        List<ActiveHandler> ahs = activeHandlersMap.get(e);
-        if (ahs == null) {
-            ahs = new ArrayList<ActiveHandler>();
-            activeHandlersMap.put(e, ahs);
-        }
-        ahs.add(ah);
-        return ah;
-    }
-
-    private void endActiveHandlers(NVDLElement e) throws SAXException {
-        List<ActiveHandler> ahs = activeHandlersMap.get(e);
-        if (ahs == null) return;
-        Iterator<ActiveHandler> it = ahs.iterator();
-        while (it.hasNext()) {
-            ActiveHandler ah = it.next();
-            prefixMapper.endEffectivePrefixMappings(ah.effectiveMapping, ah.handler);
-            ah.handler.endDocument();
-            activeHandlers.remove(ah);
-        }
-        activeHandlersMap.put(e, null);
-    }
-
-
-    private ContentHandler makeContentHandlerForValidateAction(NVDLValidateAction validateAction,
-                                                               boolean forAttribute)
-        throws SAXException {
-        Schema schema;
-        ValidatorHandler h;
-        try {
-            schema = validateAction.getSchema(forAttribute);
-        } catch (NVDLException e) {
-            if (e.getException() instanceof SAXException) {
-                throw (SAXException) e.getException();
-            }
-            throw new SAXException(e);
-        }
-        h = schema.newValidatorHandler();
-        // I think it's a bug of isorelax JARV bridge.
-        h.setContentHandler(null);
-        return h;
-    }
-
-    private ContentHandler makeContentHandler(NVDLAction a,
-                                              boolean forAttribute) throws SAXException {
-        ContentHandler contentHandler;
-        if (a instanceof NVDLValidateAction) {
-            NVDLValidateAction va = (NVDLValidateAction) a;
-            contentHandler = makeContentHandlerForValidateAction(va, forAttribute);
-        } else if (a instanceof NVDLAllowAction) {
-            contentHandler = new AllowValidatorHandler();
-        } else if (a instanceof NVDLRejectAction) {
-            contentHandler = new RejectValidatorHandler();
-        } else {
-            return null;
-        }
-        // TODO: redesign.
-        if (validatorHandler.locator != null) {
-            contentHandler.setDocumentLocator(validatorHandler.locator);
-        }
-        return contentHandler;
-    }
-
-    private class NVDLValidatorHandler extends ValidatorHandler {
-        private ContentHandler contentHandler = null;
-        public void setContentHandler(ContentHandler contentHandler) {
-            this.contentHandler = contentHandler;
-        }
-        public ContentHandler getContentHandler() {
-            return contentHandler;
-        }
-
-        private ErrorHandler errorHandler = null;
-        public void setErrorHandler(ErrorHandler errorHandler) {
-            this.errorHandler = errorHandler;
-        }
-        public ErrorHandler getErrorHandler() {
-            return errorHandler;
-        }
-
-        private LSResourceResolver resourceResolver = null;
-        public void setResourceResolver(LSResourceResolver resourceResolver) {
-            this.resourceResolver = resourceResolver;
-        }
-        public LSResourceResolver getResourceResolver() {
-            return resourceResolver;
-        }
-
-        public TypeInfoProvider getTypeInfoProvider() {
-            // TODO: we should appropriately forward type info requests.
-            return null;
-        }
-
-        Locator locator;
-        public void setDocumentLocator(Locator locator) {
-            this.locator = locator;
-            Iterator<ActiveHandler> it = activeHandlers.iterator();
-            while (it.hasNext()) {
-                ActiveHandler ah = it.next();
-                ah.handler.setDocumentLocator(locator);
-            }
-        }
-
-        public void startDocument() throws SAXException {
-            // Do nothing.
-        }
-
-        public void endDocument() throws SAXException {
-            Iterator<ActiveHandler> it = activeHandlers.iterator();
-            while (it.hasNext()) {
-                ActiveHandler ah = it.next();
-                Log.error("All handlers must be deactivated." + ah);
-                ah.handler.endDocument();
-            }
-            activeHandlers.clear();
-        }
-
-        public void startPrefixMapping(String prefix, String uri)
-            throws SAXException {
-            prefixMapper.startPrefixMapping(prefix, uri);
-            Iterator<ActiveHandler> it = activeHandlers.iterator();
-            while (it.hasNext()) {
-                ActiveHandler ah = it.next();
-                ah.handler.startPrefixMapping(prefix, uri);
-            }
-        }
-
-        public void endPrefixMapping(String prefix) throws SAXException {
-            prefixMapper.endPrefixMapping(prefix);
-            Iterator<ActiveHandler> it = activeHandlers.iterator();
-            while (it.hasNext()) {
-                ActiveHandler ah = it.next();
-                ah.handler.endPrefixMapping(prefix);
-            }
-        }
-
-        private void dispatchPlaceHolder(ContentHandler h,
-                                         String uri,
-                                         String localName) throws SAXException {
-            
-            Attributes ats = new NVDLPlaceHolderAttributes(uri, localName);
-            prefixMapper.sendEmptyElement(h,
-                                          NVDLConst.INSTANCE_NS,
-                                          NVDLConst.PLACEHOLDER_NAME,
-                                          NVDLConst.INSTANCE_PREFIX_BASE,
-                                          ats);
-        }
-
-        private void dispatchElementSlotNodeStart(Interpretation ip,
-                                                  ContentHandler h) throws SAXException {
-            Attributes ats = new NVDLSlotNodeAttributes(NVDLConst.SLOT_NODE_ID_ATTR,
-                                                        generateID(ip, false, false));
-            prefixMapper.sendEmptyElement(h,
-                                          NVDLConst.INSTANCE_REC_NS,
-                                          NVDLConst.SLOT_NODE_START_NAME,
-                                          NVDLConst.INSTANCE_REC_PREFIX_BASE,
-                                          ats);
-        }
-
-        private void dispatchElementSlotNodeEnd(Interpretation ip,
-                                                ContentHandler h) throws SAXException {
-            Attributes ats = new NVDLSlotNodeAttributes(NVDLConst.SLOT_NODE_ID_ATTR,
-                                                        generateID(ip, false, true));
-            prefixMapper.sendEmptyElement(h,
-                                          NVDLConst.INSTANCE_REC_NS,
-                                          NVDLConst.SLOT_NODE_END_NAME,
-                                          NVDLConst.INSTANCE_REC_PREFIX_BASE,
-                                          ats);
-        }
-
-        private void addSectionIDAttribute(Interpretation ip,
-                                           ContentHandler h,
-                                           NVDLAttributes attr) throws SAXException {
-            if (h == null) return;
-            PrefixMapper.PrefixReturnVal prv = prefixMapper.uniquePrefix(NVDLConst.INSTANCE_REC_PREFIX_BASE,
-                                                                         NVDLConst.INSTANCE_REC_NS);
-            String qName = prv.prefix + ":" + NVDLConst.SECTION_ID_ATTR;
-            
-            if (prv.requireDecl) {
-                h.startPrefixMapping(prv.prefix, NVDLConst.INSTANCE_REC_NS);
-                prefixMapper.startPrefixMapping(prv.prefix, NVDLConst.INSTANCE_REC_NS);
-                ip.setPrefix(prv.prefix);
-            }
-            attr.addExtAttribute(NVDLConst.INSTANCE_REC_NS,
-                                 NVDLConst.SECTION_ID_ATTR,
-                                 qName,
-                                 generateID(ip, true, true));
-        }
-
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attrs) throws SAXException {
-            currentElement = createNVDLElement(uri, localName, currentElement);
-            if (currentElement.isSectionHead()) {
-                List prevIps = pda.getCurrentInterpretations();
-                Iterator prevIt = prevIps.iterator();
-                while (prevIt.hasNext()) {
-                    Interpretation ip = (Interpretation) prevIt.next();
-                    // Interpretation ipHead = ip.getSectionHeadInterpretation();
-                    Interpretation ipHead = ip.getEffectiveInterpretation();
-                    if (ipHead == null) continue;
-                    if (!ipHead.isDispatch()) continue;
-                    InterpretationSlot slot = setupInterpretationSlot(ipHead, currentElement, false);
-                    ContentHandler dh = slot.contentHandlerForDebug;
-                    if (dh == null) continue;
-                    dispatchElementSlotNodeStart(ip, dh);
-                }
-            }
-            pda.startElement(currentElement);
-            List ips = pda.getCurrentInterpretations();
-            Iterator it = ips.iterator();
-
-            while (it.hasNext()) {
-                Interpretation ip = (Interpretation) it.next();
-                Interpretation ipDispatch = ip.getEffectiveInterpretation();
-                if (ipDispatch == null) continue;
-                InterpretationSlot slot = setupInterpretationSlot(ipDispatch, currentElement, false);
-                
-                ContentHandler h = slot.contentHandler;
-                ContentHandler dh = slot.contentHandlerForDebug;
-                if (ip.isAttachPlaceHolder()) {
-                    if (currentElement.isSectionHead()) {
-                        dispatchPlaceHolder(h, uri, localName);
-                        if (dh != null) {
-                            dispatchPlaceHolder(dh, uri, localName);
-                        }
-                    }
-                } else {
-                    NVDLAttributes rest = dispatchAttribute(ip, dh, attrs);
-                    h.startElement(uri, localName, qName, rest);
-                    if (dh != null) {
-                        if (emitSectionID && currentElement.isSectionHead()) {
-                            addSectionIDAttribute(ip, dh, rest);
-                        }
-                        dh.startElement(uri, localName, qName, rest);
-                    }
-                }
-            }
-        }
-
-        public void endElement(String uri, String localName, String qName)
-            throws SAXException {
-            List ips = pda.getCurrentInterpretations();
-            Iterator it = ips.iterator();
-            if (currentElement == null) {
-                Log.error("Something wrong happens.  Some tags are not balanced.");
-                return;
-            }
-
-            while (it.hasNext()) {
-                Interpretation ip = (Interpretation) it.next();
-                if (ip.isAttachPlaceHolder()) continue;
-                Interpretation ipDispatch = ip.getEffectiveInterpretation();
-                if (ipDispatch == null) continue;
-                InterpretationSlot slot = setupInterpretationSlot(ipDispatch, currentElement, false);
-
-                ContentHandler h = slot.contentHandler;
-                ContentHandler dh = slot.contentHandlerForDebug;
-                h.endElement(uri, localName, qName);
-                if (dh != null) {
-                    dh.endElement(uri, localName, qName);
-                    if (ip.getPrefix() != null) {
-                        prefixMapper.endPrefixMapping(ip.getPrefix());
-                        dh.endPrefixMapping(ip.getPrefix());
-                        ip.setPrefix(null);
-                    }
-                }
-            }
-            endActiveHandlers(currentElement);
-            pda.endElement();
-
-            if (currentElement.isSectionHead()) {
-                List prevIps = pda.getCurrentInterpretations();
-                Iterator prevIt = prevIps.iterator();
-                while (prevIt.hasNext()) {
-                    Interpretation ip = (Interpretation) prevIt.next();
-                    Interpretation ipHead = ip.getEffectiveInterpretation();
-                    if (ipHead == null) continue;
-                    if (!ipHead.isDispatch()) continue;
-                    InterpretationSlot slot = setupInterpretationSlot(ipHead, currentElement, false);
-                    ContentHandler dh = slot.contentHandlerForDebug;
-                    if (dh == null) continue;
-                    dispatchElementSlotNodeEnd(ip, dh);
-                }
-            }
-
-            currentElement = currentElement.parent;
-        }
-
-        public void characters(char[] ch, int start, int length)
-            throws SAXException {
-            List ips = pda.getCurrentInterpretations();
-            Iterator it = ips.iterator();
-
-            while (it.hasNext()) {
-                Interpretation ip = (Interpretation) it.next();
-                if (ip.isAttachPlaceHolder()) continue;
-                Interpretation ipDispatch = ip.getEffectiveInterpretation();
-                if (ipDispatch == null) continue;
-                InterpretationSlot slot = getInterpretationSlot(ipDispatch);
-
-                ContentHandler h = slot.contentHandler;
-                ContentHandler dh = slot.contentHandlerForDebug;
-                h.characters(ch, start, length);
-                if (dh != null) {
-                    dh.characters(ch, start, length);
-                }
-            }
-        }
-
-        public void ignorableWhitespace(char[] ch,
-                                        int start,
-                                        int length) throws SAXException {
-            List ips = pda.getCurrentInterpretations();
-            Iterator it = ips.iterator();
-
-            while (it.hasNext()) {
-                Interpretation ip = (Interpretation) it.next();
-                if (ip.isAttachPlaceHolder()) continue;
-                Interpretation ipDispatch = ip.getEffectiveInterpretation();
-                if (ipDispatch == null) continue;
-                InterpretationSlot slot = getInterpretationSlot(ipDispatch);
-
-                ContentHandler h = slot.contentHandler;
-                ContentHandler dh = slot.contentHandlerForDebug;
-                h.ignorableWhitespace(ch, start, length);
-                if (dh != null) {
-                    dh.ignorableWhitespace(ch, start, length);
-                }
-            }
-        }
-
-        public void processingInstruction(String target,
-                                          String data) throws SAXException {
-        }
-
-        public void skippedEntity(String name) throws SAXException {
-            // Currently do not dispatch.
-        }
-        
-    }
-
-    private final NVDLValidatorHandler validatorHandler = new NVDLValidatorHandler();
-
-    public ValidatorHandler getValidatorHandler() {
-        return validatorHandler;
-    }
-
-    public boolean validate(InputSource is, ErrorHandler eh)
-    	throws SAXException, IOException {
-        ValidatorHandler h = getValidatorHandler();
-        h.setErrorHandler(eh);
-        reader.setErrorHandler(eh);
-        reader.parse(is);
-        if (getErrorCount() > 0) return false;
-        return true;
-    }
-
-    public NVDLSAXDispatcher(NVDLRules rules, boolean emitSectionID) throws SAXException {
-        this.rules = rules;
-        this.pda = new PDA(rules);
-        this.emitSectionID = emitSectionID;
-        reader = XMLReaderFactory.createXMLReader();
-        reader.setFeature("http://xml.org/sax/features/namespaces", true);
-        reader.setFeature("http://xml.org/sax/features/namespace-prefixes", false);
-        ValidatorHandler h = getValidatorHandler();
-        reader.setContentHandler(h);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLSlotNodeAttributes.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLSlotNodeAttributes.java
deleted file mode 100644
index 0edc830..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/NVDLSlotNodeAttributes.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.dispatcher;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLConst;
-import org.xml.sax.Attributes;
-
-
-/**
- * The <code>NVDLSlotNodeAttributes</code> is the special
- * attribute class for slot-node.
- */
-class NVDLSlotNodeAttributes implements Attributes {
-    private final String id;
-    private final String qName;
-
-    public int getLength() {
-        // ns and localName
-        return 1;
-    }
-
-    public String getURI(int index) {
-        if (index == 0) {
-            // return NVDLConst.INSTANCE_REC_NS;
-            return "";
-        }
-        return null;
-    }
-
-    public String getLocalName(int index) {
-        if (index == 0) {
-            return NVDLConst.SLOT_NODE_ID_ATTR;
-        }
-        return null;
-    }
-
-    public String getQName(int index) {
-        if (index == 0) {
-            return qName;
-        }
-        return null;
-    }
-
-    public String getType(int index) {
-        if (index == 0) {
-            return "CDATA";
-        }
-        return null;
-    }
-
-    public String getValue(int index) {
-        if (index == 0) {
-            return id;
-        }
-        return null;
-    }
-
-    public int getIndex(String uri, String localName) {
-        if (!(NVDLConst.INSTANCE_REC_NS.equals(uri))) return -1;
-        if (NVDLConst.SLOT_NODE_ID_ATTR.equals(localName)) {
-            return 0;
-        }
-        return -1;
-    }
-
-    public int getIndex(String qName) {
-        if (this.qName.equals(qName)) {
-            return 0;
-        }
-        return -1;
-    }
-
-    public String getType(String uri, String localName) {
-        return getType(getIndex(uri, localName));
-    }
-
-    public String getType(String qName) {
-        return getType(getIndex(qName));
-    }
-
-    public String getValue(String uri, String localName) {
-        if (!(NVDLConst.INSTANCE_REC_NS.equals(uri))) return null;
-        if (NVDLConst.SLOT_NODE_ID_ATTR.equals(localName)) {
-            return id;
-        }
-        return null;
-    }
-
-    public String getValue(String qName) {
-        if (this.qName.equals(qName)) {
-            return id;
-        }
-        return null;
-    }
-    
-    NVDLSlotNodeAttributes(String qName, String id) {
-        this.qName = qName;
-        this.id = id;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/RejectValidatorHandler.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/RejectValidatorHandler.java
deleted file mode 100644
index 74ecd97..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/dispatcher/RejectValidatorHandler.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.dispatcher;
-
-import javax.xml.validation.TypeInfoProvider;
-import javax.xml.validation.ValidatorHandler;
-
-import org.w3c.dom.ls.LSResourceResolver;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-class RejectValidatorHandler extends ValidatorHandler {
-    private ErrorHandler errorHandler = null;
-    public void setErrorHandler(ErrorHandler errorHandler) {
-	this.errorHandler = errorHandler;
-    }
-
-    public ErrorHandler getErrorHandler() {
-	return errorHandler;
-    }
-
-    private Locator loc;
-
-    private void error(String disallowedThing) throws SAXException {
-	if (errorHandler != null) {
-	    errorHandler.error(new SAXParseException(disallowedThing + " is not allowed here.", loc));
-	}
-    }
-
-    public void setDocumentLocator(Locator loc) {
-	this.loc = loc;
-    }
-
-    public void startDocument() throws SAXException {
-    }
-
-    public void endDocument() throws SAXException {
-    }
-    public void startPrefixMapping(String arg0, String arg1) throws SAXException {
-    }
-
-    public void endPrefixMapping(String arg0) throws SAXException {
-    }
-
-    public void startElement(String url,
-			     String localName,
-			     String qName,
-			     Attributes attrs) throws SAXException {
-	error(qName);
-    }
-
-    public void endElement(String uri, String localName, String qName) throws SAXException {
-	error(qName);
-    }
-
-    public void characters(char[] ch, int start, int length)
-	throws SAXException {
-	error(new String(ch, start, length));
-    }
-
-    public void ignorableWhitespace(char[] ch,
-				    int start,
-				    int length) throws SAXException {
-	error(new String(ch, start, length));
-    }
-
-    public void processingInstruction(String arg0, String arg1) throws SAXException {
-    }
-
-    public void skippedEntity(String arg0) throws SAXException {
-    }
-
-    public void setContentHandler(ContentHandler arg0) {
-    }
-
-    public ContentHandler getContentHandler() {
-	return null;
-    }
-
-    public void setResourceResolver(LSResourceResolver arg0) {
-    }
-
-    public LSResourceResolver getResourceResolver() {
-	return null;
-    }
-
-    public TypeInfoProvider getTypeInfoProvider() {
-	return null;
-    }
-        
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/Benchmark.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/Benchmark.java
deleted file mode 100644
index cbabbfe..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/Benchmark.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-package org.eclipse.actf.ai.xmlstore.nvdl.driver;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAction;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.Locator;
-
-
-public class Benchmark extends ValidationDriver {
-    public long maxMemory;
-    private int counter;
-    public ContentHandler createContentHandler(NVDLAction action) {
-        //return super.createContentHandler(action);
-        return null;
-    }
-    public void nextActionHandler(NVDLAction action, Locator l) {
-        if (counter > 10) {
-            Runtime r = Runtime.getRuntime();
-            r.gc();
-            long inused = r.totalMemory() - r.freeMemory();
-            if (inused > maxMemory) maxMemory = inused;
-            super.nextActionHandler(action, l);
-            counter = 0;
-        } else {
-            counter++;
-        }
-    }
-    Benchmark(ErrorHandler eh, boolean debug, boolean quiet) throws Exception {
-        super(eh, debug, quiet);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/DispatchDriver.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/DispatchDriver.java
deleted file mode 100644
index feb340a..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/DispatchDriver.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.driver;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.util.Locale;
-
-import javax.xml.parsers.SAXParser;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.dispatcher.NVDLSAXDispatcher;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.Location;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLMessage;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRules;
-import org.eclipse.actf.ai.xmlstore.nvdl.reader.NVDLSAXReader;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.IRIUtil;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.Log;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.MessageFormatter;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.WritingContentHandler;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-
-
-/**
- * The <code>DispatchDriver</code> is a driver for validation.
- */
-public class DispatchDriver implements NVDLSAXDispatcher.DebugHandlerFactory {
-    private SAXParser parser;
-    private NVDLSAXReader nvdlReader;
-    private ErrorHandler eh;
-    private String targetDirectory;
-    private File instanceFile;
-    // private boolean debug;
-    private boolean quiet;
-
-    private String quoteID(String id) {
-        StringBuffer buf = new StringBuffer();
-        int len = id.length();
-        for (int i = 0; i < len; i++) {
-            char c = id.charAt(i);
-            switch (c) {
-            case '/':
-            case '\\':
-            case ' ':
-            case '*':
-            case '?':
-            case '>':
-            case '<':
-            case '|':
-                buf.append('_');
-                break;
-            default:
-                buf.append(c);
-                break;
-            }
-        }
-        return buf.toString();
-    }
-
-    private File generateFile(String id,
-                              NVDLAction action) {
-        String name = instanceFile.getName() + "-" + quoteID(id);
-        return new File(targetDirectory, name);
-    }
-
-    public ContentHandler createContentHandler(String id,
-                                               NVDLAction action) throws SAXException {
-        try {
-            FileOutputStream os = new FileOutputStream(generateFile(id, action));
-            return new WritingContentHandler(new OutputStreamWriter(os, "utf-8"));
-        } catch (FileNotFoundException e) {
-            throw new SAXException(e);
-        } catch (UnsupportedEncodingException e) {
-            throw new SAXException(e);
-        }
-    }
-	
-    public void nextActionHandler(NVDLAction action, Locator l) {
-        if (quiet) return;
-
-        NVDLMessage mes = action.getMessage();
-        String localeCode = Locale.getDefault().getLanguage();
-        Location location = new Location(l.getLineNumber(),
-                                         l.getColumnNumber(),
-                                         l.getSystemId());
-        String m = mes.getMessage(localeCode);
-        if (m != null) {
-            String r = MessageFormatter.locAndModel(location, action, m);
-            Log.info(r);
-        }
-    }
-
-    private void setupReader() throws Exception {
-        parser = NVDLSAXReader.newSAXParser();
-        parser.getXMLReader().setErrorHandler(eh);
-        nvdlReader = new NVDLSAXReader(parser, eh);
-    }
-
-    void dispatch(String nvdlFile, String instanceFilename, String targetDirectory)
-        throws Exception {
-        Log.info("ValidationDriver.OpenNVDLFile", new Object[] {nvdlFile});
-        this.instanceFile = new File(instanceFilename);
-        NVDLRules rules = nvdlReader.parse(IRIUtil.newInputSourceFromFilename(nvdlFile));
-        if (rules == null) return;
-
-        NVDLSAXDispatcher dispatcher = new NVDLSAXDispatcher(rules, true);
-
-        this.targetDirectory = targetDirectory;
-
-        dispatcher.setDebugHandlerFactory(this);
-        Log.info("ValidationDriver.ValidateInstanceFile", new Object[] {instanceFilename});
-        if (dispatcher.validate(IRIUtil.newInputSourceFromFilename(instanceFilename), eh)) {
-            Log.info("ValidationDriver.Success", new Object[] {instanceFilename});
-        } else {
-            Log.error("ValidationDriver.Error",
-                      new Object[] {
-                          new Integer(dispatcher.getErrorCount()),
-                          instanceFilename
-                      });
-        }
-    }
-
-    DispatchDriver(ErrorHandler eh,
-                   boolean debug,
-                   boolean quiet) throws Exception {
-        this.eh = eh;
-        // this.debug = debug;
-        this.quiet = quiet;
-        setupReader();
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/ReconstructionDriver.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/ReconstructionDriver.java
deleted file mode 100644
index 372dd22..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/ReconstructionDriver.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.driver;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-
-import javax.xml.parsers.SAXParser;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRules;
-import org.eclipse.actf.ai.xmlstore.nvdl.reader.NVDLSAXReader;
-import org.eclipse.actf.ai.xmlstore.nvdl.rec.SAXReconstructor;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.IRIUtil;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.Log;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.WritingContentHandler;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-
-/**
- * The <code>ReconstructionDriver</code> is a driver for reconstruction.
- */
-public class ReconstructionDriver {
-    private SAXParser parser;
-    private NVDLSAXReader nvdlReader;
-    private ErrorHandler eh;
-    // private boolean debug;
-    // private boolean quiet;
-
-    private static class InputThread extends Thread {
-        private XMLReader reader;
-        private InputSource inputSource;
-
-        public void run() { 
-            try {
-                reader.parse(inputSource);
-            } catch (IOException e) {
-                // TODO
-            } catch (SAXException e) {
-                e.printStackTrace();
-            }
-        }
-        
-        InputThread(XMLReader reader, File file) throws IOException {
-            super(file.getName());
-            this.reader = reader;
-            String path = file.getCanonicalPath();
-            this.inputSource = IRIUtil.newInputSourceFromFilename(path);
-        }
-    }
-
-    private void setInput(SAXReconstructor rec, File file) throws Exception {
-        XMLReader reader = XMLReaderFactory.createXMLReader();
-        reader.setFeature("http://xml.org/sax/features/namespaces", true);
-        reader.setContentHandler(rec.requestInput());
-        InputThread ithread = new InputThread(reader, file);
-        ithread.start();
-    }
-
-    private boolean setupInput(SAXReconstructor rec, File dir) throws Exception {
-        if (!dir.isDirectory()) {
-            throw new FileNotFoundException(dir + " is not a directory.");
-        }
-        File[] fileList = dir.listFiles();
-        for (int i = 0; i < fileList.length; i++) {
-            File file = fileList[i];
-            if (file.isFile() && file.canRead()) {
-                setInput(rec, file);
-            }
-        }
-        return true;
-    }
-
-    void reconstruct(String nvdlFile, String instanceFilename, String targetDirectory)
-        throws Exception {
-        Log.info("ValidationDriver.OpenNVDLFile", new Object[] {nvdlFile});
-        NVDLRules rules = nvdlReader.parse(IRIUtil.newInputSourceFromFilename(nvdlFile));
-        if (rules == null) return;
-
-        SAXReconstructor rec = new SAXReconstructor(rules);
-
-        File instanceFile = new File(instanceFilename);
-        FileOutputStream os = new FileOutputStream(instanceFile);
-        OutputStreamWriter w = new OutputStreamWriter(os, "utf-8");
-        rec.setOutput(new WritingContentHandler(w));
-
-        setupInput(rec, new File (targetDirectory));
-
-        rec.start();
-    }
-
-    private void setupReader() throws Exception {
-        parser = NVDLSAXReader.newSAXParser();
-        parser.getXMLReader().setErrorHandler(eh);
-        nvdlReader = new NVDLSAXReader(parser, eh);
-    }
-
-    ReconstructionDriver(ErrorHandler eh,
-                         boolean debug,
-                         boolean quiet) throws Exception {
-        this.eh = eh;
-        // this.debug = debug;
-        // this.quiet = quiet;
-        setupReader();
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/SnRNV.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/SnRNV.java
deleted file mode 100644
index 31f8654..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/SnRNV.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.driver;
-
-import java.util.Locale;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.util.Log;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.MessageErrorHandler;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.MessageFormatter;
-import org.xml.sax.ErrorHandler;
-
-
-/**
- * The <code>SnRNV</code> is a driver for command line interface.
- */
-public class SnRNV {
-    private static String targetDirectory = "";
-    private static boolean debug = false;
-    private static boolean quiet = false;
-    private static boolean dispatch = false;
-    private static boolean reconstruction = false;
-
-    static private void usage() {
-        Log.error("SnRNV.Usage");
-    }
-
-    static private void printException(Exception e) {
-        Log.error(MessageFormatter.exception(e));
-    }
-
-    static private void validate(String nvdlFile,
-                                 String instanceFile,
-                                 ErrorHandler eh) {
-        try {
-            ValidationDriver d = new ValidationDriver(eh, debug, quiet);
-            // ValidationDriver d = new Benchmark(eh, debug, quiet);
-            d.validate(nvdlFile, instanceFile);
-            // System.out.println("Used memory:" + ((Benchmark) d).maxMemory);
-        } catch (Exception e) {
-            printException(e);
-        }
-    }
-
-    static private void dispatch(String nvdlFile,
-                                 String instanceFile,
-                                 ErrorHandler eh) {
-        try {
-            DispatchDriver d = new DispatchDriver(eh, debug, quiet);
-            d.dispatch(nvdlFile, instanceFile, targetDirectory);
-        } catch (Exception e) {
-            printException(e);
-        }
-    }
-
-    static private void reconstruct(String nvdlFile,
-                                    String instanceFile,
-                                    ErrorHandler eh) {
-        try {
-            ReconstructionDriver d = new ReconstructionDriver(eh, debug, quiet);
-            d.reconstruct(nvdlFile, instanceFile, targetDirectory);
-        } catch (Exception e) {
-            printException(e);
-        }
-    }
-
-
-    static private int setTargetDirectory(String[] args, int i) {
-        if (i == (args.length - 1)) {
-            Log.error("SnRNV.TargetDirectoryNotSpecifiedError");
-            System.exit(255);
-        }
-        targetDirectory = args[++i];
-        return i;
-    }
-
-    static private int setLocale(String[] args, int i) {
-        if (i == (args.length - 1)) {
-            Log.error("SnRNV.LocaleRequireArgumentError");
-            System.exit(255);
-        }
-        Locale locale;
-        String iso646Code = args[++i];
-        int idx = iso646Code.indexOf('_');
-        if (idx > 0) {
-            String lang = iso646Code.substring(0, idx);
-            String country = iso646Code.substring(idx + 1);
-            locale = new Locale(lang, country);
-        } else {
-            locale = new Locale(iso646Code);
-        }
-        Locale.setDefault(locale);
-        // set the resource again.
-        MessageFormatter.setResourceBundle("org.eclipse.actf.ai.xmlstore.nvdl.driver.message.Messages");
-        return i;
-    }
-
-    static public void main(String[] args) {
-        ErrorHandler eh = new MessageErrorHandler();
-        int i;
-
-        MessageFormatter.setResourceBundle("org.eclipse.actf.ai.xmlstore.nvdl.driver.message.Messages");
-
-        for (i = 0; i < args.length; i++) {
-            if (args[i].charAt(0) == '-') {
-                if (args[i].equals("-d")) {
-                    Log.setLevel(Log.DEBUG);
-                    debug = true;
-                } else if (args[i].equals("-v")) {
-                    Log.setLevel(Log.INFO);
-                } else if (args[i].equals("-q")) {
-                    Log.setLevel(Log.WARN);
-                    quiet = true;
-                } else if (args[i].equals("-p")) {
-                    i = setTargetDirectory(args, i);
-                    dispatch = true;
-                } else if (args[i].equals("-r")) {
-                    i = setTargetDirectory(args, i);
-                    reconstruction = true;
-                } else if (args[i].equals("-locale")) {
-                    i = setLocale(args, i);
-                } else {
-                    Log.error("SnRNV.InvalidOptionError", new Object[] {args[i]});
-                    System.exit(255);
-                }
-            } else {
-                break;
-            }
-        }
-
-        if ((args.length - i) < 2) {
-            usage();
-            System.exit(255);
-        }
-
-        String nvdlFile = args[i];
-        String instanceFile = args[i + 1];
-
-        if (dispatch) {
-            dispatch(nvdlFile, instanceFile, eh);
-        } else if (reconstruction) {
-            reconstruct(nvdlFile, instanceFile, eh);
-        } else {
-            validate(nvdlFile, instanceFile, eh);
-        }
-
-        System.exit(0);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/TestDriver.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/TestDriver.java
deleted file mode 100644
index e2d3bd4..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/TestDriver.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.driver;
-
-import java.io.File;
-import java.io.FilenameFilter;
-
-import javax.xml.parsers.SAXParser;
-import javax.xml.validation.ValidatorHandler;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.NVDLException;
-import org.eclipse.actf.ai.xmlstore.nvdl.dispatcher.NVDLSAXDispatcher;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRules;
-import org.eclipse.actf.ai.xmlstore.nvdl.reader.NVDLSAXReader;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.DefaultErrorHandler;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.IRIUtil;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.Log;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-public class TestDriver {
-    SAXParser parser;
-    NVDLSAXReader r;
-
-    TestDriver() throws SAXException {
-        this.parser = NVDLSAXReader.newSAXParser();
-        parser.getXMLReader().setErrorHandler(DefaultErrorHandler.getErrorHandler());
-        this.r = new NVDLSAXReader(parser);
-    }
-
-    static public class TestSet {
-        boolean result;
-        String baseName;
-        String nvdlFilename;
-        Case[] cases;
-        public class Case {
-            boolean result;
-            String xmlFilename;
-        }
-        Case newCase() {
-            return new Case();
-        }
-    }
-
-    NVDLRules readTest(String path, boolean result) throws Exception {
-        InputSource is = IRIUtil.newInputSourceFromFilename(path);
-        if (!result) {
-            System.out.println("Interpret " + path
-                               + ", assuming it is invalid.");
-            try {
-                r.parse(is);
-            } catch (Exception e) {
-                return null;
-            }
-            throw new NVDLException("The test failed... ");
-        } else {
-            System.out.println("Interpret " + path
-                               + ", assuming it is valid.");
-            return r.parse(is);
-        }
-    }
-
-    void dispatchTest(XMLReader vr, File d, TestSet.Case c) throws Exception {
-        String path = d.getPath() + File.separator + c.xmlFilename;
-        InputSource is = IRIUtil.newInputSourceFromFilename(path);
-        if (!c.result) {
-            System.out.println("Validate " + path
-                               + ", assuming it is invalid.");
-            try {
-                vr.parse(is);
-            } catch (Exception e) {
-                return;
-            }
-            throw new NVDLException("The test failed... ");
-        } else {
-            System.out.println("Validate " + path
-                               + ", assuming it is valid.");
-            vr.parse(is);
-        }
-    }
-
-    void doTest(File d, TestSet ts) throws Exception {
-        NVDLRules rules = readTest(d.getPath() + File.separator
-                                   + ts.nvdlFilename, ts.result);
-        if (!ts.result) return;
-        NVDLSAXDispatcher dispatcher = new NVDLSAXDispatcher(rules, false);
-        ValidatorHandler h = dispatcher.getValidatorHandler();
-        XMLReader vr = XMLReaderFactory.createXMLReader();
-        vr.setFeature("http://xml.org/sax/features/namespaces", true);
-        vr.setFeature("http://xml.org/sax/features/namespace-prefixes", false);
-        h.setErrorHandler(DefaultErrorHandler.getErrorHandler());
-        vr.setContentHandler(h);
-        vr.setErrorHandler(DefaultErrorHandler.getErrorHandler());
-        for (int i = 0; i < ts.cases.length; i++) {
-            dispatchTest(vr, d, ts.cases[i]);
-            dispatcher.reset();
-        }
-    }
-
-    void invalidFilename(String filename) {
-        throw new IllegalArgumentException("Filename must be of the form of '<name>-<true/false>-<number>.<suffix>':" + filename);
-    }
-
-    static class BaseNameFilter implements FilenameFilter {
-        final String baseName;
-        public boolean accept(File dir, String name) {
-            if (!name.endsWith(".xml")) return false;
-            String[] parts = name.split("-");
-            if (parts.length != 3) return false;
-            if (!parts[0].equals(baseName)) return false;
-            return true;
-        }
-        BaseNameFilter(String baseName) {
-            this.baseName = baseName;
-        }
-    }
-
-    void testCaseSet(File base, TestSet ts) {
-        String[] fileList;
-        fileList = base.list(new BaseNameFilter(ts.baseName));
-        ts.cases = new TestSet.Case[fileList.length];
-        for (int i = 0; i < fileList.length; i++) {
-            String[] parts = fileList[i].split("-");
-            TestSet.Case cs = ts.newCase();
-            cs.xmlFilename = fileList[i];
-            if ("true".equals(parts[1])) {
-                cs.result = true;
-            } else if ("false".equals(parts[1])) {
-                cs.result = false;
-            } else {
-                invalidFilename(cs.xmlFilename);
-            }
-            ts.cases[i] = cs;
-        }
-    }
-
-    TestSet parseFilename(File base, String filename) {
-        String[] parts = filename.split("-");
-        if (parts.length != 3) {
-            invalidFilename(filename);
-        }
-        TestSet ts = new TestSet();
-        ts.nvdlFilename = filename;
-        ts.baseName = parts[0];
-        if ("true".equals(parts[1])) {
-            ts.result = true;
-            testCaseSet(base, ts);
-        } else if ("false".equals(parts[1])) {
-            ts.result = false;
-        } else {
-            invalidFilename(filename);
-        }
-
-        return ts;
-    }
-
-    void testDir(String dir) throws Exception {
-        File f = new File(dir);
-        if (!f.exists()) {
-            Log.error("Directory:" + dir + " does not exist.  Skip it.");
-            return;
-        }
-        if (!f.isDirectory()) {
-            Log.error(dir + " is not a directory.  Skip it.");
-            return;
-        }
-        
-        String[] fileList;
-        fileList = f.list(new FilenameFilter() {
-            public boolean accept(File dir, String name) {
-                if (!name.endsWith(".nvdl")) return false;
-                String[] parts = name.split("-");
-                if (parts.length != 3) return false;
-                return true;
-            }
-        });
-
-        for (int i = 0; i < fileList.length; i++) {
-            doTest(f, parseFilename(f, fileList[i]));
-        }
-    }
-
-    public static void main(String[] args) {
-        try {
-            TestDriver td = new TestDriver();
-            for (int i = 0; i < args.length; i++) {
-                td.testDir(args[i]);
-            }
-        } catch (Exception e) {
-            System.out.println(e.getMessage());
-            e.printStackTrace(System.out);
-            System.out.flush();
-            System.exit(255);
-        }
-        System.out.println("All tests are done.");
-        System.out.flush();
-        System.exit(0);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/ValidationDriver.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/ValidationDriver.java
deleted file mode 100644
index 778ea21..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/ValidationDriver.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.driver;
-
-import java.util.Locale;
-
-import javax.xml.parsers.SAXParser;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.dispatcher.NVDLSAXDispatcher;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.Location;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLMessage;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRules;
-import org.eclipse.actf.ai.xmlstore.nvdl.reader.NVDLSAXReader;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.ContentPrintHandler;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.IRIUtil;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.Log;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.MessageFormatter;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.Locator;
-
-
-/**
- * The <code>ValidationDriver</code> is a driver for validation.
- */
-public class ValidationDriver implements NVDLSAXDispatcher.DebugHandlerFactory {
-    private SAXParser parser;
-    private NVDLSAXReader nvdlReader;
-    private ErrorHandler eh;
-    private boolean debug;
-    private boolean quiet;
-
-    public ContentHandler createContentHandler(String id, NVDLAction action) {
-        if (debug) {
-            return new ContentPrintHandler(MessageFormatter.model(action, ""));
-        }
-        return null;
-    }
-	
-    public void nextActionHandler(NVDLAction action, Locator l) {
-        if (!quiet) {
-            NVDLMessage mes = action.getMessage();
-            String localeCode = Locale.getDefault().getLanguage();
-            Location location = new Location(l.getLineNumber(),
-                                             l.getColumnNumber(),
-                                             l.getSystemId());
-            String m = mes.getMessage(localeCode);
-            if (m != null) {
-                String r = MessageFormatter.locAndModel(location, action, m);
-                Log.info(r);
-            }
-        }
-    }
-
-    private void setupReader() throws Exception {
-        parser = NVDLSAXReader.newSAXParser();
-        parser.getXMLReader().setErrorHandler(eh);
-        nvdlReader = new NVDLSAXReader(parser, eh);
-    }
-
-    void validate(String nvdlFile, String instanceFile)
-        throws Exception {
-        Log.info("ValidationDriver.OpenNVDLFile", new Object[] {nvdlFile});
-        NVDLRules rules = nvdlReader.parse(IRIUtil.newInputSourceFromFilename(nvdlFile));
-        if (rules == null) return;
-        // NVDLModelPrint.printRules(rules);
-        NVDLSAXDispatcher dispatcher = new NVDLSAXDispatcher(rules, false);
-
-        dispatcher.setDebugHandlerFactory(this);
-        Log.info("ValidationDriver.ValidateInstanceFile", new Object[] {instanceFile});
-        if (dispatcher.validate(IRIUtil.newInputSourceFromFilename(instanceFile), eh)) {
-            Log.info("ValidationDriver.Success", new Object[] {instanceFile});
-        } else {
-            Log.error("ValidationDriver.Error",
-                      new Object[] {
-                          new Integer(dispatcher.getErrorCount()),
-                          instanceFile
-                      });
-        }
-    }
-
-    ValidationDriver(ErrorHandler eh, boolean debug,
-                     boolean quiet) throws Exception {
-        this.eh = eh;
-        this.debug = debug;
-        this.quiet = quiet;
-        setupReader();
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/message/Messages.properties b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/message/Messages.properties
deleted file mode 100644
index 5b576ee..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/message/Messages.properties
+++ /dev/null
@@ -1,130 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-#
-#  NVDLReader Error Messages
-#
-
-NVDLReader.XSDBooleanError=`{0}'' must be true (1) or false (0).
-
-NVDLReader.RuleConflictsError=The rule `{0}'' conflicts with `{1}''.
-
-NVDLReader.NestedModeAndUseModeError=The nested mode is not allowed \
-                                     when `useMode'' attribute is specified.
-
-NVDLReader.DuplicatedNestedModeError=The nested mode is defined duplicatedly.
-
-NVDLReader.InvalidMatchTargetError=The `match'' attribute:`{0}'' is invalid. \
-                                   It must consists of `elements'' or `attributes''.
-
-NVDLReader.WildCardOneCharError=The `wildCard'' attribute:`{0}'' is invalid. \
-                                It must be one character.
-
-NVDLReader.OneResultActionError={0} is not allowed here since \
-                                any result action (`attach'', `unwrap'', or `attachPlaceHolder'') \
-                                must be only one for each `namespace or `anyNamespace'' element.
-
-NVDLReader.CancelNestedActionsError=`{0}'' is not allowed here since `cancelNestedActions'' does not allow any other actions.
-
-NVDLReader.NoActionError=At least one action is required.
-
-NVDLReader.OptionBeforeSchemaError=The `option'' element must be put before `schema'', `mode'' or `context'' elements.
-
-NVDLReader.OptionHasNameError=The `option'' element must have `name'' attribute.
-
-NVDLReader.SchemaAttributeSpecifiedError=The `schema'' element is not allowed here since this `validate'' element has a `schema'' attribute.
-
-NVDLReader.SchemaBeforeModeOrContextError=`schema'' element must be put before `mode'' or `context'' elements.
-
-NVDLReader.ValidateHasSchemaError=`validate'' element must have `schema'' attribute or element.
-
-NVDLReader.MessageBeforeSchemaError=`message'' element must be put before `schema'', `mode'' or `context'' elements.
-
-NVDLReader.ModeBeforeContextError=`mode'' element must be put before `context'' elements.
-
-NVDLReader.SchemaReadError=Failed to interpret the schema specified.
-
-NVDLReader.ContextHasPathError=`context'' element must have one `path'' attribute.
-
-NVDLReader.ContextHasModeButUseModeIsSpecifiedError=`mode'' element is not allowed here \
-              since `useMode'' attribute is already specified in this `context'' element.
-
-NVDLReader.ContextHasUseModeOrModeError=`context'' element must have a `useMode'' attribute or `mode'' element.
-
-NVDLReader.TriggerHasNSError=`trigger'' element must has `ns'' attribute.
-
-NVDLReader.TriggerIsFirstErrorr=`trigger'' elements must be put first in `rules'' element.
-
-NVDLReader.ModeIsAfterRuleError=`mode'' element cannot be specified \
-                                after `namespace'' or `anyNamespace'' elements in `rules'' element.
-
-NVDLReader.RuleIsAfterModeError=`{0}'' element cannot be specified \
-                                after `mode'' elements in `rules'' element.
-
-NVDLReader.TriggerHasNameListError=`trigger'' element must has `nameList'' attribute.
-
-NVDLReader.StartModeError=When the `rules'' element has a `startMode'' attribute, \
-                          it must have no `namespace'' or `anyNamespace'' element directly.
-
-NVDLReader.ModeInRulesHasName=Any `mode'' element of `rules'' element must have `name'' attribute.
-
-NVDLReader.ModeNameConflictError=mode:`{0}'' has already been defined.
-
-NVDLReader.IncludedModeAfterRuleError=`mode'' in `mode'' element (included mode) must be put before `namespace'' or `anyNamespace'' elements.
-
-NVDLReader.DocumentElementIsRulesError=The document element must be `rules'' of NVDL namespace (http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0) but it is '{'{0}'}'{1}.
-
-NVDLReader.UnallowedElementError=The element '{'{0}'}'{1} is not allowed here.
-
-NVDLReader.UnallowedAttributeError=The attributes `{0}'' is not allowed here.
-
-NVDLReader.UnallowedCharactersError=The characters `{0}'' is not allowed here.
-
-NVDLReader.NVDLHasError=The NVDL file has {0,number,integer} error(s).
-
-NVDLReader.SchemaImplementationNotFoundError=No appropriate validator implementation for {0}
-
-NVDLSimplifier.ModeIsNotDefinedError=The mode `{0}'' is not defined.
-
-NVDLSimplifier.RulesHasNoStartModeError=`rules'' element must have `startMode'' attribute \
-                                        when it has no `namespace'' or `anyNamespace'' element.
-
-NVDLSimplifier.StartModeIsNotDefinedError=StartMode `{0}'' is not defined.
-
-SchemaLoader.OpenSchemaIOError=I/O error occured while trying to open a schema.\n\
-Reason: {0}
-
-SchemaLoader.SchemaTypeDetectionError=Failed to detect the schema type in {0}.
-
-#
-
-SnRNV.Usage=SnRNV: <options> <nvdl file> <instance XML file>\n\
-\ \ \ Options:\n\
-\ \ \ \ \ -p <DIRECTORY> : dispatch mode.  The validation candidates are saved in <DIRECTORY>.\n\
-\ \ \ \ \ -r <DIRECTORY> : reconstruction mode.\n\
-\ \ \ \ \ -q : quiet mode.  It outputs minimum messages.\n\
-\ \ \ \ \ -d : debug mode.  This prints dispatching details.\n\
-\ \ \ \ \ -locale <LOCALE> : Set the current locale to <LOCALE>\n\
-
-SnRNV.LocaleRequireArgumentError=-locale option requires a "locale" as an arguemnt \
-                                 (e.g. en, en_US).
-
-SnRNV.TargetDirectoryNotSpecifiedError=The target directory is not specified.
-
-SnRNV.InvalidOptionError=Invalid option: {0}
-
-ValidationDriver.OpenNVDLFile=Open the NVDL file: {0}
-
-ValidationDriver.ValidateInstanceFile=Validate the instance file: {0}
-
-ValidationDriver.Success={0} is a valid XML document.
-
-ValidationDriver.Error={0,number,integer} errors in {1}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/message/Messages_ja.properties b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/message/Messages_ja.properties
deleted file mode 100644
index d28804e..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/driver/message/Messages_ja.properties
+++ /dev/null
@@ -1,128 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-#
-#  NVDLReader Error Messages
-#
-
-NVDLReader.XSDBooleanError=\u771F\u507D\u5024\u3067\u3042\u308B`{0}''\u306Ftrue\u304B1 (\u771F)\u3001\u3082\u3057\u304F\u306F\u3001false\u304B0 (\u507D)\u3067\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002
-
-NVDLReader.RuleConflictsError=\u30EB\u30FC\u30EB `{0}'' \u306F\u30EB\u30FC\u30EB `{1}'' \u3068\u885D\u7A81\u3057\u307E\u3059\u3002
-
-NVDLReader.NestedModeAndUseModeError=`useMode''\u5C5E\u6027\u304C\u6307\u5B9A\u3055\u308C\u305F\u3068\u304D\u306B\u306F\u3001\
-                                     \u5165\u308C\u5B50\u306B\u306A\u3063\u305F\u30E2\u30FC\u30C9\u306F\u8A31\u3055\u308C\u307E\u305B\u3093\u3002
-
-NVDLReader.DuplicatedNestedModeError=\u5165\u308C\u5B50\u306B\u306A\u3063\u305F\u30E2\u30FC\u30C9\u3092\u8907\u6570\u56DE\u8A18\u8FF0\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
-
-NVDLReader.InvalidMatchTargetError=`match''\u5C5E\u6027:`{0}'' \u304C\u8AA4\u3063\u3066\u3044\u307E\u3059\u3002\
-                                   `elements''\u304B`attributes''\u304B\u3082\u3057\u304F\u306F\u4E21\u65B9\u306E\u307F\u304C\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002
-
-NVDLReader.WildCardOneCharError=`wildCard''\u5C5E\u6027\u306F\u3001\u4E00\u6587\u5B57\u3067\u306A\u304F\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002
-
-NVDLReader.OneResultActionError=`{0}''\u3092\u3053\u3053\u306B\u66F8\u304F\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002\
-      \u306A\u305C\u306A\u3089\u3001result\u30A2\u30AF\u30B7\u30E7\u30F3(`attach''\u3001`unwrap''\u3001\u3082\u3057\u304F\u306F`attachPlaceHolder''\u8981\u7D20)\u306F\u3001\
-      \u4E00\u3064\u306E`namespace''\u304B`anyNamespace''\u8981\u7D20\u306B\u5BFE\u3057\u3066\u305F\u3060\u4E00\u3064\u3057\u304B\u6307\u5B9A\u3067\u304D\u306A\u3044\u304B\u3089\u3067\u3059\u3002
-
-NVDLReader.CancelNestedActionsError=\
-`cancelNestedActions''\u8981\u7D20\u306B\u306F\u3044\u304B\u306A\u308B\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u8A18\u8FF0\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u305B\u3093\u3002\
-\u3057\u305F\u304C\u3063\u3066\u3001`{0}''\u3092\u3053\u3053\u306B\u66F8\u304F\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
-
-NVDLReader.NoActionError=\u5C11\u306A\u304F\u3068\u3082\u4E00\u3064\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u5FC5\u8981\u3067\u3059\u3002
-
-NVDLReader.OptionBeforeSchemaError=`option''\u8981\u7D20\u306F`schema''\u3001`mode''\u3001`context''\u8981\u7D20\
-\u3088\u308A\u3082\u524D\u306B\u8A18\u8FF0\u3057\u306A\u304F\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002
-
-NVDLReader.OptionHasNameError=`option''\u8981\u7D20\u306B\u306F`name''\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002
-
-NVDLReader.SchemaAttributeSpecifiedError=`validate''\u8981\u7D20\u4E2D\u3067\u306F\u3001`schema''\u5C5E\u6027\u3068`schema''\u8981\u7D20\u306E\u4E21\u65B9\u3092\u8A18\u8FF0\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
-
-NVDLReader.SchemaBeforeModeOrContextError=`schema''\u8981\u7D20\u306F\u3001`mode''\u8981\u7D20\u304B`context''\u8981\u7D20\u306E\u524D\u306B\u8A18\u8FF0\u3057\u306A\u304F\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002
-
-NVDLReader.ValidateHasSchemaError=`validate''\u8981\u7D20\u306B\u306F\u3001`schema''\u5C5E\u6027\u304B\u8981\u7D20\u306E\u3069\u3061\u3089\u304B\u3092\u8A18\u8FF0\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-
-NVDLReader.MessageBeforeSchemaError=`message''\u8981\u7D20\u306F\u3001`schema''\u3001`mode''\u3001`context''\u8981\u7D20\u306E\u524D\u306B\u8A18\u8FF0\u3057\u306A\u304F\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002
-
-NVDLReader.ModeBeforeContextError=`mode''\u8981\u7D20\u306F\u3001`context''\u8981\u7D20\u306E\u524D\u306B\u8A18\u8FF0\u3057\u306A\u304F\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002
-
-NVDLReader.SchemaReadError=\u6307\u5B9A\u3055\u308C\u305F\u30B9\u30AD\u30FC\u30DE\u306E\u89E3\u91C8\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002
-
-NVDLReader.ContextHasPathError=`context''\u8981\u7D20\u306B\u306F\u3001`path''\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002
-
-NVDLReader.ContextHasModeButUseModeIsSpecifiedError=\u3053\u306E`context''\u8981\u7D20\u3067\u306F\u3001`useMode''\u5C5E\u6027\u304C\u3059\u3067\u306B\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u306E\u3067\u3001\u3053\u3053\u3067`mode''\u8981\u7D20\u3092\u8A18\u8FF0\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
-
-NVDLReader.ContextHasUseModeOrModeError=`context''\u8981\u7D20\u306B\u306F\u3001`useMode''\u5C5E\u6027\u304B`mode''\u8981\u7D20\u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-
-NVDLReader.TriggerHasNSError=`trigger''\u8981\u7D20\u306B\u306F`ns''\u5C5E\u6027\u304C\u5FC5\u8981\u3067\u3059\u3002
-
-NVDLReader.TriggerIsFirstErrorr=`trigger''\u8981\u7D20\u306F`rules''\u8981\u7D20\u306E\u5148\u982D\u306B\u8A18\u8FF0\u3057\u306A\u304F\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002
-
-NVDLReader.ModeIsAfterRuleError=`mode''\u8981\u7D20\u306F\u3001`rules''\u8981\u7D20\u4E2D\u3067\u306F\u3001\
-`namespace''\u3084`anyNamespace''\u8981\u7D20\u306E\u5F8C\u306B\u8A18\u8FF0\u3057\u306A\u304F\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002
-
-NVDLReader.RuleIsAfterModeError=`{0}''\u8981\u7D20\u306F\u3001`rules''\u8981\u7D20\u4E2D\u3067\u306F\u3001\
-`mode''\u8981\u7D20\u306E\u5F8C\u306B\u8A18\u8FF0\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-
-NVDLReader.TriggerHasNameListError=`trigger''\u8981\u7D20\u306B\u306F`nameList''\u5C5E\u6027\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-
-NVDLReader.StartModeError=`rules''\u8981\u7D20\u304C`startMode''\u5C5E\u6027\u3092\u6301\u3064\u3068\u304D\u306B\u306F\u3001\
-                          `namespace''\u3082\u3057\u304F\u306F`anyNamespace''\u5C5E\u6027\u3092`rules''\u8981\u7D20\u306B\u76F4\u63A5\u8A18\u8FF0\u3067\u304D\u307E\u305B\u3093\u3002
-
-NVDLReader.ModeInRulesHasName=`rules''\u8981\u7D20\u4E2D\u306E`mode''\u5C5E\u6027\u306B\u306F\u3001
-\u5FC5\u305A`name''\u5C5E\u6027\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-
-NVDLReader.ModeNameConflictError=\u30E2\u30FC\u30C9 `{0}'' \u306F\u3059\u3067\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002
-
-NVDLReader.IncludedModeAfterRuleError=`mode''\u8981\u7D20\u306E\u4E2D\u3067\u306E`mode''\u8981\u7D20\u306F(included mode)\u3001\
-`namespace''\u3084`anyNamespace''\u8981\u7D20\u306E\u524D\u306B\u8A18\u8FF0\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-
-NVDLReader.DocumentElementIsRulesError=\u6587\u66F8\u8981\u7D20(\u30EB\u30FC\u30C8\u8981\u7D20)\u304C\u3001\
-NVDL\u540D\u524D\u7A7A\u9593(http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0)\u306E`rules''\u8981\u7D20\u3067\u306F\u306A\u304F\u3001\
-'{'{0}'}'{1}\u3068\u306A\u3063\u3066\u3044\u307E\u3059\u3002
-
-NVDLReader.UnallowedElementError=\u8981\u7D20 '{'{0}'}'{1} \u3092\u3001\u3053\u3053\u306B\u66F8\u304F\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
-
-NVDLReader.UnallowedAttributeError=\u5C5E\u6027 `{0}'' \u3092\u3001\u3053\u3053\u306B\u66F8\u304F\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
-
-NVDLReader.UnallowedCharactersError=\u6587\u5B57 `{0}'' \u3092\u3001\u3053\u3053\u306B\u66F8\u304F\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
-
-NVDLReader.NVDLHasError=NVDL\u30D5\u30A1\u30A4\u30EB\u306B{0,number,integer}\u500B\u306E\u30A8\u30E9\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002
-
-NVDLReader.SchemaImplementationNotFoundError={0}\u3068\u3044\u3046\u30B9\u30AD\u30FC\u30DE\u306B\u5BFE\u3059\u308B\u691C\u8A3C\u6A5F\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
-
-
-NVDLSimplifier.ModeIsNotDefinedError=\u30E2\u30FC\u30C9 `{0}'' \u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
-
-NVDLSimplifier.RulesHasNoStartModeError=`rules''\u8981\u7D20\u306B`namespace''\u3082\u3057\u304F\u306F`anyNamespace''\u8981\u7D20\u304C\
-\u8A18\u8FF0\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u306B\u306F\u3001`rules''\u8981\u7D20\u306B\u306F`startMode''\u5C5E\u6027\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-
-NVDLSimplifier.StartModeIsNotDefinedError=startMode `{0}'' \u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059\u304C\u3001\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
-
-#
-
-SnRNV.Usage=SnRNV: <\u30AA\u30D7\u30B7\u30E7\u30F3> <NVDL\u30D5\u30A1\u30A4\u30EB> <\u691C\u8A3C\u3059\u308BXML\u30D5\u30A1\u30A4\u30EB>\n\
-\ \ \ \u30AA\u30D7\u30B7\u30E7\u30F3:\n\
-\ \ \ \ \ -p <DIRECTORY> : \u914D\u9001\u30E2\u30FC\u30C9\u3067\u3059\u3002 \u691C\u8A3C\u5019\u88DC\u306F<DIRECTORY>\u306B\u30BB\u30FC\u30D6\u3055\u308C\u307E\u3059\u3002\n\
-\ \ \ \ \ -r <DIRECTORY> : \u518D\u69CB\u7BC9\u30E2\u30FC\u30C9\u3067\u3059\u3002\u518D\u69CB\u7BC9\u5019\u88DC\u3092<DIRECTORY>\u304B\u3089\u691C\u7D22\u3057\u307E\u3059\u3002\n\
-\ \ \ \ \ -q : quiet mode.  \u51FA\u529B\u3092\u6700\u5C0F\u9650\u306B\u3057\u307E\u3059\u3002\n\
-\ \ \ \ \ -d : debug mode.  \u914D\u9001\u306E\u8A73\u7D30\u3092\u8868\u793A\u3057\u307E\u3059\u3002\n\
-\ \ \ \ \ -locale <LOCALE> : \u30ED\u30B1\u30FC\u30EB\u3092<LOCALE>\u306B\u3057\u307E\u3059\u3002\n\
-
-SnRNV.LocaleRequireArgumentError=-locale\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u8A00\u8A9E\u6307\u5B9A\u304C\u5FC5\u8981\u3067\u3059(\u4F8B: ja_JP, ja, en)\u3002
-
-SnRNV.InvalidOptionError={0}\u306F\u8AA4\u3063\u305F\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u3059\u3002
-
-ValidationDriver.OpenNVDLFile=NVDL\u30D5\u30A1\u30A4\u30EB {0} \u3092\u958B\u3044\u3066\u3044\u307E\u3059\u3002
-
-ValidationDriver.ValidateInstanceFile=XML\u30D5\u30A1\u30A4\u30EB {0} \u3092\u691C\u8A3C\u3057\u307E\u3059\u3002
-
-ValidationDriver.Success={0}\u306F\u59A5\u5F53\u306AXML\u6587\u66F8\u3067\u3059\u3002
-
-ValidationDriver.Error={1}\u4E2D\u306B{0,number,integer}\u500B\u306E\u30A8\u30E9\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/fm/ActionList.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/fm/ActionList.java
deleted file mode 100644
index d5355e8..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/fm/ActionList.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.fm;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRules;
-
-
-/**
- * The <code>ActionList</code> encapsulates a sequence of NVDLActions
- * by which we handle the history of NVDL processings.
- */
-public class ActionList {
-    public static class InvalidIdException extends IllegalArgumentException {
-        private static final long serialVersionUID = 5426408147221128508L;
-        public final String id;
-        InvalidIdException(String id) {
-            this.id = id;
-        }
-    }
-
-    private final ArrayList<NVDLAction> actions = new ArrayList<NVDLAction>();
-    public List<NVDLAction> getActions() {
-        return actions;
-    }
-
-    private int count;
-    public int getCount() {
-        return count;
-    }
-
-    private void invalidId(String id) throws InvalidIdException {
-        actions.clear();
-        count = 0;
-        throw new InvalidIdException(id);
-    }
-
-    public int getPrecedence() {
-        // TODO!
-        return 0;
-    }
-
-    public boolean match (ActionList al) {
-        int size = actions.size();
-        if (size != al.actions.size()) return false;
-        for (int i = 0; i < size; i++) {
-            NVDLAction a1 = actions.get(i);
-            NVDLAction a2 = al.actions.get(i);
-            if (!a1.equals(a2)) return false;
-        }
-        return true;
-    }
-
-    public boolean equals(Object o) {
-        if (!(o instanceof ActionList)) return false;
-        ActionList al = (ActionList) o;
-        if (count != al.count) return false;
-        return match(al);
-    }
-
-    public int hashCode() {
-        int v = 0;
-        int size = actions.size();
-        for (int i = 0; i < size; i++) {
-            NVDLAction a = actions.get(i);
-            v ^= a.hashCode();
-        }
-        return v;
-    }
-    
-    public ActionList() {
-    }
-
-    public ActionList(NVDLRules rules, String id) throws InvalidIdException {
-        actions.clear();
-        String[] aids = id.split("[ \t\n\r]");
-        for (int i = 0; i < aids.length; i++) {
-            NVDLAction a = rules.getAction(aids[i]);
-            if (a != null) {
-                actions.add(a);
-                continue;
-            }
-            if (i != (aids.length - 1)) {
-                invalidId(id);
-            }
-            try {
-                count = Integer.parseInt(aids[i]);
-            } catch (NumberFormatException e) {
-                invalidId(id);
-            }
-        }
-    }
-
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-        int size = actions.size();
-        for (int i = 0; i < size; i++) {
-            NVDLAction a = actions.get(i);
-            buf.append(a.getName());
-            buf.append(' ');
-        }
-        buf.append(getCount());
-        return buf.toString();
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/fm/Interpretation.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/fm/Interpretation.java
deleted file mode 100644
index 5af79ad..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/fm/Interpretation.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.fm;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLElement;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLMode;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLNoResultAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLResultAction;
-
-public abstract class Interpretation {
-    private NVDLElement element;
-
-    // private slot --------------------------------------------------------------------------------
-    private Object slot;
-
-    public void setSlot(Object slot) {
-        this.slot = slot;
-    }
-    public Object getSlot() {
-        return slot;
-    }
-    // defined prefix ------------------------------------------------------------------------------
-    private String prefix;
-    public void setPrefix(String prefix) {
-        this.prefix = prefix;
-    }
-    public String getPrefix() {
-        return prefix;
-    }
-
-
-    private final NVDLAction action;
-    private final NVDLMode mode;
-    
-    private final boolean attach, unwrap;
-    private final boolean attachPlaceHolder;
-
-    public boolean isSectionHead() {
-        return (action != null);
-    }
-
-    public boolean isDispatch() {
-        return (action instanceof NVDLNoResultAction);
-    }
-
-    public boolean isAttach() {
-        return attach;
-    }
-
-    public boolean isUnwrap() {
-        return unwrap;
-    }
-
-    public boolean isAttachPlaceHolder() {
-        return attachPlaceHolder;
-    }
-    
-    public NVDLMode getMode() {
-        return mode;
-    }
-
-    public NVDLAction getAction() {
-        return action;
-    }
-
-    public NVDLElement getElement() {
-        return element;
-    }
-
-    public abstract Interpretation getParent();
-
-    private String id;
-
-    public String getID() {
-        if (id == null) {
-            this.id = generateID();
-        }
-        return id;
-    }
-
-    public String getPrevID() {
-        for (Interpretation ip = getParent(); ip != null; ip = ip.getParent()) {
-            if (ip.isSectionHead()) {
-            	return ip.getID();
-            }
-        }
-        return "";
-    }
-
-    private String generateID() {
-        StringBuffer buf = new StringBuffer();
-
-        for (Interpretation ip = this; ip != null; ip = ip.getParent()) {
-            if (!ip.isSectionHead()) continue;
-            if (buf.length() > 0) buf.insert(0, " ");
-            String name = ip.action.getName();
-            buf.insert(0, name);
-        }
-        return buf.toString();
-    }
-
-    public Interpretation getSectionHeadInterpretation() {
-        Interpretation ip;
-        for (ip = this; ; ip = ip.getParent()) {
-            if (ip == null) return null;
-            if (ip.isSectionHead()) break;
-        }
-        return ip;
-    }
-
-    public Interpretation getEffectiveInterpretation() {
-        Interpretation ip = getSectionHeadInterpretation();
-        if (ip == null) return null;
-        if (ip.isUnwrap()) return null;
-        if (ip.isDispatch()) return ip;
-        for (ip = ip.getParent(); ip != null; ip = ip.getParent()) {
-            if (ip.isDispatch()) return ip;
-            if (ip.isAttachPlaceHolder()) return null;
-        }
-        return null;
-    }
-
-    Interpretation(NVDLMode mode, NVDLAction action,
-                   NVDLElement element) {
-        this.mode = mode;
-        this.action = action;
-        this.element = element;
-        if (action instanceof NVDLResultAction) {
-            NVDLResultAction a = (NVDLResultAction) action;
-            switch (a.type) {
-            case NVDLResultAction.TYPE_UNWRAP:
-                this.attach = false;
-                this.unwrap = true;
-                this.attachPlaceHolder = false;
-                break;
-            case NVDLResultAction.TYPE_ATTACHPLACEHOLDER:
-                this.attach = false;
-                this.attachPlaceHolder = true;
-                this.unwrap = false;
-                break;
-            case NVDLResultAction.TYPE_ATTACH:
-                this.attach = true;
-                this.unwrap = false;
-                this.attachPlaceHolder = false;
-                break;
-            default:
-                this.attach = false;
-                this.unwrap = false;
-                this.attachPlaceHolder = false;
-            }
-        } else {
-            this.attach = false;
-            this.unwrap = false;
-            this.attachPlaceHolder = false;
-        }
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/fm/PDA.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/fm/PDA.java
deleted file mode 100644
index 6e93d41..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/fm/PDA.java
+++ /dev/null
@@ -1,485 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.fm;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLActionManager;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAttributeSection;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLElement;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLMode;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLNoResultAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLResultAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRule;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRules;
-
-
-/*
-  Moore PDA
- */
-
-public class PDA {
-    // Internal state -----------------------------------------------------------------
-    private ArrayList<StackElement> currentContext = new ArrayList<StackElement>();
-    private ArrayList<StackElement> nextContext = new ArrayList<StackElement>();
-    private boolean isAttributeAttached;
-
-    // --------------------------------------------------------------------------------
-
-    // Compiled Result -----------------------------------------------------------------
-    private final State initialState;
-    // --------------------------------------------------------------------------------
-
-    private static class StackElement extends Interpretation {
-        public final State state;
-        public final StackElement parent;
-        // To avoid duplicatedly merging branches.
-        public final boolean firstBranch;
-
-        public Interpretation getParent() {
-            return parent;
-        }
-        
-        private StackElement(NVDLMode mode, NVDLAction action,
-                             NVDLElement e, StackElement parent, State state,
-                             boolean firstBranch) {
-            super(mode, action, e);
-            this.parent = parent;
-            this.state = state;
-            this.firstBranch = firstBranch;
-        }
-
-        static StackElement newEffectiveStackElement(StackElement parent,
-                                                     State state, NVDLElement element,
-                                                     boolean firstBranch) {
-            return new StackElement(state.mode, state.action, element, parent, state,
-                                    firstBranch);
-        }
-
-        static StackElement newNoneffectiveStackElement(StackElement parent,
-                                                        NVDLElement element) {
-            return new StackElement(null, null, element, parent, parent.state, true);
-        }
-    }
-
-    private static class AttrInterpretation extends Interpretation {
-        public final StackElement parent;
-
-        public Interpretation getParent() {
-            return parent;
-        }
-        
-        private AttrInterpretation(NVDLMode mode, NVDLAction action,
-                                   StackElement parent) {
-            super(mode, action, null);
-            this.parent = parent;
-        }
-
-        static AttrInterpretation newAttrInterpretation(StackElement parent,
-                                                  State state) {
-            return new AttrInterpretation(state.mode, state.action, parent);
-        }
-    }
-
-    // E ~= {Q' -> 2^Q'}, e \in E = rule(q')
-    private static class Edge {
-        final NVDLAction.Context allowableContext;
-        final Mode nextMode;
-
-        static class Mode {
-            static class Dest {
-                final NVDLRule rule;
-                final State[] nextStates;
-                Dest(NVDLRule rule, State[] nextStates) {
-                    this.rule = rule;
-                    this.nextStates = nextStates;
-                }
-                public String toString() {
-                    return "Dest:" + rule.toString();
-                }
-            }
-            private Dest[] dests;
-            
-            public State[] nextStates(String ns, boolean isElement) {
-                for (int i = 0; i < dests.length; i++) {
-                    if (dests[i].rule.match(ns, isElement)) return dests[i].nextStates;
-                }
-                // notreachable
-                return null;
-            }
-        }
-
-        boolean match(NVDLElement e) {
-            return allowableContext.match(e);
-        }
-
-        Edge(NVDLAction.Context allowableContext, Mode nextMode) {
-            this.allowableContext = allowableContext;
-            this.nextMode = nextMode;
-        }
-
-        public String toString() {
-            String ret = "Edge:";
-            if (allowableContext != null)
-                return ret + allowableContext.toString();
-            else
-                return ret;
-        }
-    }
-
-    // Q' ~= Mode X Action
-    private static class State {
-        String id;
-
-        Edge defaultEdge;
-        Edge[] contextEdges;
-
-        private Edge.Mode nextMode(NVDLElement e) {
-            assert (e != null) || (contextEdges == null);
-            if (contextEdges != null) {
-                for (int i = 0; i < contextEdges.length; i++) {
-                    if (contextEdges[i].match(e)) return contextEdges[i].nextMode;
-                }
-            }
-            return defaultEdge.nextMode;
-        }
-        State[] next(NVDLElement e, String ns, boolean isElement) {
-            Edge.Mode nextMode = nextMode(e);
-            return nextMode.nextStates(ns, isElement);
-        }
-
-        final NVDLMode mode;
-        final NVDLAction action;
-        State(NVDLMode mode, NVDLAction action) {
-            this.mode = mode;
-            this.action = action;
-        }
-
-        String getID() {
-            return id;
-        }
-
-        public String toString() {
-            return ("PDA State-ID:" + id
-                    + " Mode:" + mode
-                    + " Action:" + action);
-        }
-    }
-
-    private void finishTransition() {
-        // ArrayList<StackElement> tmp = currentContext;
-        currentContext = nextContext;
-        nextContext = new ArrayList<StackElement>(currentContext.size());
-        // nextContext.clear();
-    }
-
-
-    private boolean nextStateTransition(StackElement stack, NVDLElement e) {
-        boolean firstBranch = true;
-        State[] nextStates = stack.state.next(e.parent, e.ns, true);
-        for (int i = 0; i < nextStates.length; i++) {
-            StackElement newStack = StackElement.newEffectiveStackElement(stack, nextStates[i],
-                                                                          e, firstBranch);
-            nextContext.add(newStack);
-            firstBranch = false;
-        }
-        return (nextStates.length > 0);
-    }
-
-    // --------------------------------------------------------------------------------
-    //    APIs
-    // --------------------------------------------------------------------------------
-
-    public boolean startElement(NVDLElement e) {
-        boolean flag = false;
-        int size = currentContext.size();
-        for (int i = 0; i < size; i++) {
-            StackElement stack = currentContext.get(i);
-            if (!e.isSectionHead()) {
-                // push current state.
-                StackElement se = StackElement.newNoneffectiveStackElement(stack, e);
-                nextContext.add(se);
-            } else {
-                flag = nextStateTransition(stack, e);
-            }
-        }
-        finishTransition();
-        return flag;
-    }
-
-    public boolean endElement() {
-        boolean flag = false;
-        int size = currentContext.size();
-        for (int i = 0; i < size; i++) {
-            StackElement stack = currentContext.get(i);
-            if (!stack.firstBranch) continue;
-            StackElement parent = stack.parent;
-            assert(parent != null);
-            if (parent.state != stack.state) {
-                flag = true;
-            }
-            nextContext.add(parent);
-        }
-        finishTransition();
-        return flag;
-    }
-
-    public boolean isAttributeAttached() {
-        return isAttributeAttached;
-    }
-
-    public List<Interpretation> getAttributeInterpretation(Interpretation current,
-                                                           NVDLAttributeSection as) {
-        StackElement stack = (StackElement) current;
-        isAttributeAttached = false;
-        List<Interpretation> result = new ArrayList<Interpretation>();
-
-        State[] nextStates = stack.state.next(as.getBaseElement(),
-                                              as.getNamespace(),
-                                              false);
-        for (int i = 0; i < nextStates.length; i++) {
-            AttrInterpretation ai = AttrInterpretation.newAttrInterpretation(stack, nextStates[i]);
-            if (ai.isDispatch()) {
-                result.add(ai);
-            }
-            if (ai.isAttach()) {
-                isAttributeAttached = true;
-            }
-        }
-        assert (isAttributeAttached || (result.size() > 0));
-        return result;
-    }
-
-    public List getCurrentInterpretations() {
-        return currentContext;
-    }
-
-    public enum MatchResult {
-        NOMATCH,
-        POSSIBLE,
-        MATCH
-    }
-
-    private boolean matchActionListWithStackElement(StackElement s,
-                                                    NVDLElement e,
-                                                    ActionList al) {
-        List<NVDLAction> l = al.getActions();
-        int lastIdx = l.size() - 1;
-        int idx = lastIdx - 1;
-        State state = s.state;
-        for (; s != null; s = s.parent) {
-            NVDLAction a = s.getAction();
-            if (a == null) continue;
-            if (idx < 0) return false;
-            NVDLAction a2 = l.get(idx);
-            if (!a.equals(a2)) return false;
-            idx--;
-        }
-        NVDLAction a2 = l.get(lastIdx);
-        State[] states = state.next(e.parent, e.ns, true);
-        for (int i = 0; i < states.length; i++) {
-            if (a2.equals(states[i].action)) return true;
-        }
-        return false;
-    }
-
-    public MatchResult matchActionList(NVDLElement nextElement,
-                                       ActionList al) {
-        int size = currentContext.size();
-        for (int i = 0; i < size; i++) {
-            StackElement s = currentContext.get(i);
-            if (matchActionListWithStackElement(s, nextElement, al))
-                return MatchResult.MATCH;
-        }
-        return MatchResult.NOMATCH;
-    }
-
-    public void reset() {
-        currentContext.clear();
-        nextContext.clear();
-        isAttributeAttached = false;
-        StackElement initialStack = StackElement.newEffectiveStackElement(null, initialState, null, true);
-        currentContext.add(initialStack);
-    }
-
-    public PDA(NVDLRules rules) {
-        NVDLMode startMode = rules.getStartMode();
-        Compiler compiler = new Compiler();
-        this.initialState = compiler.compile(startMode);
-        reset();
-    }
-
-    public PDA(PDA base) {
-        this.initialState = base.initialState;
-        reset();
-    }
-
-    // --------------------------------------------------------------------------------
-    // compilation part
-    // --------------------------------------------------------------------------------
-
-    private static class Compiler {
-        static class StateDicKey {
-            private NVDLMode mode;
-            private NVDLAction action;
-            public boolean equals(Object o) {
-                if (!(o instanceof StateDicKey)) return false;
-                StateDicKey s = (StateDicKey) o;
-                return mode.equals(s.mode) && action.equals(s.action);
-                
-            }
-            public int hashCode() {
-                if (action == null) {
-                    return mode.hashCode();
-                } else {
-                    return mode.hashCode() ^ action.hashCode();
-                }
-            }
-            StateDicKey(NVDLMode mode, NVDLAction action) {
-                this.mode = mode;
-                this.action = action;
-            }
-        }
-        // StateDicKey -> State
-        private HashMap<StateDicKey, State> stateDic = new HashMap<StateDicKey, State>();
-
-        private State getState(StateDicKey k) {
-            return stateDic.get(k);
-        }
-
-        private State newState(StateDicKey k) {
-            State s = new State(k.mode, k.action);
-            stateDic.put(k, s);
-            return s;
-        }
-
-        private Edge.Mode.Dest compileRule(NVDLRule rule, NVDLMode m) {
-            NVDLActionManager am = rule.getActionManager();
-            ArrayList<State> states = new ArrayList<State>();
-
-            NVDLResultAction ra = am.getResultAction();
-            if (ra != null) states.add(compileToState(ra, m));
-            List nras = am.getNoResultActions();
-            Iterator it = nras.iterator();
-            while (it.hasNext()) {
-                NVDLNoResultAction nra = (NVDLNoResultAction) it.next();
-                states.add(compileToState(nra, m));
-            }
-
-            return new Edge.Mode.Dest(rule,
-                                      states.toArray(new State[states.size()]));
-        }
-
-        private Edge.Mode compileToMode(NVDLMode m) {
-            Edge.Mode em = new Edge.Mode();
-
-            NVDLRule rule;
-            ArrayList<Edge.Mode.Dest> dests = new ArrayList<Edge.Mode.Dest>();
-            Iterator it = m.notAnyNamespaceRuleIterator();
-            while (it.hasNext()) {
-                rule = (NVDLRule) it.next();
-                Edge.Mode.Dest d = compileRule(rule, m);
-                dests.add(d);
-            }
-            rule = m.getAnyNamespaceRuleForAttribute();
-            if (rule != null) {
-                Edge.Mode.Dest d = compileRule(rule, m);
-                dests.add(d);
-            }
-            rule = m.getAnyNamespaceRuleForElement();
-            if (rule != null) {
-                Edge.Mode.Dest d = compileRule(rule, m);
-                dests.add(d);
-            }
-            em.dests = (Edge.Mode.Dest[]) dests.toArray(new Edge.Mode.Dest[dests.size()]);
-            return em;
-        }
-
-        private Edge compileToDefaultEdge(NVDLMode m) {
-            Edge e = new Edge(null, compileToMode(m));
-            return e;
-        }
-
-        private Edge[] compileToContextEdges(NVDLAction a) {
-            List<NVDLAction.Context> contextsList = a.getContextsList();
-            Edge[] contextEdges = new Edge[contextsList.size()];
-            int i = 0;
-            Iterator<NVDLAction.Context> it = contextsList.iterator();
-            while (it.hasNext()) {
-                NVDLAction.Context c = it.next();
-                contextEdges[i++] = new Edge(c, compileToMode(c.useMode));
-            }
-            return contextEdges;
-        }
-
-        private State compileToState(NVDLAction a, NVDLMode m) {
-            StateDicKey k = new StateDicKey(m, a);
-            State s = getState(k);
-            if (s != null) return s;
-            s = newState(k);
-
-            if (a == null) {
-                s.defaultEdge = compileToDefaultEdge(m);
-            } else {
-                s.contextEdges = compileToContextEdges(a);
-                s.defaultEdge = compileToDefaultEdge(a.getUseMode());
-            }
-            return s;
-        }
-
-        State compile(NVDLMode startMode) {
-            return compileToState(null, startMode);
-        }
-    }
-
-    private void dumpDest(Edge.Mode.Dest d, Set<State> traversed) {
-        System.out.println(d.toString());
-        for (int i = 0; i < d.nextStates.length; i++) {
-            dumpState(d.nextStates[i], traversed);
-        }
-    }
-
-    private void dumpMode(Edge.Mode em, Set<State> traversed) {
-        for (int i = 0; i < em.dests.length; i++) {
-            dumpDest(em.dests[i], traversed);
-        }
-    }
-
-    private void dumpEdge(Edge edge, Set<State> traversed) {
-        System.out.println(edge.toString());
-        dumpMode(edge.nextMode, traversed);
-    }
-
-    private void dumpState(State state, Set<State> traversed) {
-        System.out.println(state.toString());
-        if (!(traversed.contains(state))) {
-            traversed.add(state);
-            dumpEdge(state.defaultEdge, traversed);
-            
-            for (int i = 0; i < state.contextEdges.length; i++) {
-                dumpEdge(state.contextEdges[i], traversed);
-            }
-        }
-        System.out.println("--------------------");
-    }
-
-    public void dump() {
-        dumpState(initialState, new HashSet<State>());
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/Location.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/Location.java
deleted file mode 100644
index 47e70e7..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/Location.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.util.IRIUtil;
-
-/**
- * The <code>Location</code> encapsulates the origin of each model.
- */
-public class Location {
-    public final int line;
-    public final int pos;
-    public final String iri;
-
-    public String toString() {
-        StringBuffer r = new StringBuffer(IRIUtil.IRIToFilename(iri));
-        r.append("(");
-        if (line > 0) {
-            r.append(line);
-        } else {
-            r.append("NoLine");
-        }
-        if (pos > 0) {
-            r.append(":" + pos);
-        }
-        r.append(")");
-
-        return r.toString();
-    }
-
-    public Location() {
-        line = -1;
-        pos = -1;
-        iri = "";
-    }
-    public Location(int line) {
-        this.line = line;
-        this.pos = -1;
-        this.iri = "";
-    }
-    public Location(int line, int pos) {
-        this.line = line;
-        this.pos = pos;
-        this.iri = "";
-    }
-    public Location(int line, int pos, String iri) {
-        this.line = line;
-        this.pos = pos;
-        if (iri == null)
-            this.iri = "";
-        else
-            this.iri = iri;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLAction.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLAction.java
deleted file mode 100644
index 7835fca..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLAction.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.NVDLException;
-
-
-/**
- * The <code>NVDLAction</code> is the base abstract class for NVDL action.
- */
-public abstract class NVDLAction extends NVDLModel {
-    private String useModeName;
-    private NVDLMode useMode;
-    private List<Context> contexts = new ArrayList<Context>();
-    private final String name;
-
-    public String getName() {
-        return name;
-    }
-
-    public String getUseModeName() {
-        return useModeName;
-    }
-
-    public List<Context> getContextsList() {
-        return contexts;
-    }
-
-    public NVDLMode getUseMode() {
-        return useMode;
-    }
-
-    public void setUseMode(NVDLMode useMode) {
-        this.useMode = useMode;
-        useModeName = useMode.name;
-    }
- 
-    private NVDLMessage message;
-    public NVDLMessage getMessage() {
-        if (message == null) {
-            message = new NVDLMessage();
-        }
-        return message;
-    }
-
-    private NVDLRule belongingRule;
-    public NVDLRule getBelongingRule() {
-        return belongingRule;
-    }
-
-    public static class Context {
-        public final String path;
-        static class Path {
-            final String[] pathElems;
-            final boolean isAbsolute;
-            Path(String[] pathElems, boolean isAbsolute) {
-                this.pathElems = pathElems;
-                this.isAbsolute = isAbsolute;
-            }
-        }
-        public final Path[] pathExps;
-
-        public final String useModeName;
-        public NVDLMode useMode;
-
-        public boolean match(LinkedList elemStack) {
-            for (int i = 0; i < pathExps.length; i++) {
-                int sectionIdx = -1;
-                ListIterator it = elemStack.listIterator(elemStack.size());
-                Path p = pathExps[i];
-                for (int j = p.pathElems.length - 1; ; j--) {
-                    if (!it.hasPrevious()) {
-                        if (j >= 0) break;
-                        return true;
-                    }
-                    NVDLElement e = (NVDLElement) it.previous();
-                    if (sectionIdx < 0) {
-                        sectionIdx = e.sectionIdx;
-                    } else if (e.sectionIdx != sectionIdx) {
-                        if (j >= 0) break;
-                        return true;
-                    }
-                    if (j < 0) {
-                        if (p.isAbsolute) break;
-                        return true;
-                    }
-                    if (!p.pathElems[j].equals(e.localName)) break;
-                }
-            }
-            return false;
-        }
-
-        public boolean match(NVDLElement e) {
-            for (int i = 0; i < pathExps.length; i++) {
-                Path p = pathExps[i];
-                for (int j = p.pathElems.length - 1; ; j--) {
-                    if (j < 0) {
-                        if (p.isAbsolute) break;
-                        return true;
-                    }
-                    if (!p.pathElems[j].equals(e.localName)) break;
-                    if (e.isSectionHead()) {
-                        if (j > 0) break;
-                        return true;
-                    }
-                    e = e.parent;
-                }
-            }
-            return false;
-        }
-
-        private int extractPathElement(int i, String path, StringBuffer ret) {
-            boolean startPath = false;
-            boolean slashAppeared = false;
-            boolean endPath = false;
-            ret.delete(0, ret.length());
-            while (i < path.length()) {
-                switch (path.charAt(i)) {
-                case '|':
-                    return i;
-                case '/':
-                    if (startPath) return i;
-                    if (slashAppeared) return -1;
-                    slashAppeared = true;
-                    ret.append(path.charAt(i++));
-                    break;
-                case ' ': case '\r': case '\n': case '\t':
-                    if (startPath) endPath = true;
-                    i++;
-                    break;
-                default:
-                    if (endPath) return -1;
-                    startPath = true;
-                    ret.append(path.charAt(i++));
-                    continue;
-                }
-            }
-            return i;
-        }
-
-        private void invalidPath(String path) throws NVDLException {
-            throw new NVDLException("Invalid Path:" + path);
-        }
-
-        private Context.Path[] parsePath(String path) throws NVDLException {
-            StringBuffer buf = new StringBuffer();
-            ArrayList<String> paths = new ArrayList<String>();
-            ArrayList<Context.Path> pathExps = new ArrayList<Context.Path>();
-            boolean isAbsolute = false;
-            int len = path.length();
-            int i = 0;
-            while (i < len) {
-                paths.clear();
-                i = extractPathElement(i, path, buf);
-                if (i < 0) invalidPath(path);
-                if (i < len && path.charAt(i) == '|') invalidPath(path);
-                if (buf.charAt(0) == '/') {
-                    isAbsolute = true;
-                    paths.add(buf.substring(1, buf.length()));
-                } else {
-                    isAbsolute = false;
-                    if (buf.length() == 0) invalidPath(path);
-                    paths.add(buf.toString());
-                }
-                if (i < len) {
-                    for (;;) {
-                        i = extractPathElement(i, path, buf);
-                        if (i < 0) invalidPath(path);
-                        if (buf.charAt(0) == '/') {
-                            if (buf.length() == 1) invalidPath(path);
-                            paths.add(buf.substring(1, buf.length()));
-                        } else {
-                            paths.add(buf.toString());
-                        }
-                        if (i < len) {
-                            if (path.charAt(i) == '|') {
-                                i++;
-                                break;
-                            }
-                        } else {
-                            break;
-                        }
-                    }
-                }
-                int pathElems = paths.size();
-                if (pathElems == 0) invalidPath(path);
-                Context.Path cpath = new Context.Path((String[]) paths.toArray(new String[pathElems]),
-                                                      isAbsolute);
-                pathExps.add(cpath);
-            }
-            return pathExps.toArray(new Context.Path[pathExps.size()]);
-        }
-
-        Context(String path, String useModeName, NVDLMode useMode) throws NVDLException {
-            this.path = path;
-            this.pathExps = parsePath(path);
-            this.useModeName = useModeName;
-            this.useMode = useMode;
-        }
-    }
-
-    public void addContext(String path, String useModeName) throws NVDLException {
-        contexts.add(new Context(path, useModeName, null));
-    }
-
-    public void addContext(String path, NVDLMode useMode) throws NVDLException {
-        contexts.add(new Context(path, useMode.name, useMode));
-    }
-
-    public NVDLMode nextMode(LinkedList elemStack) {
-        int size = contexts.size();
-        for (int i = 0; i < size; i++) {
-            Context c = contexts.get(i);
-            if (c.match(elemStack)) return c.useMode;
-        }
-        return useMode;
-    }
-
-    NVDLAction(String name, String useModeName, NVDLRule belongingRule) {
-        this.name = name;
-        this.useModeName = useModeName;
-        this.belongingRule = belongingRule;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLActionManager.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLActionManager.java
deleted file mode 100644
index be21c2f..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLActionManager.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * The <code>NVDLActionManager</code> manages actions for a NVDL rule.
- */
-public class NVDLActionManager {
-    private boolean isCancelAction;
-    private NVDLResultAction resultAction = null;;
-    private List<NVDLNoResultAction> noResultActions;
-    
-    public boolean isCancelAction() {
-    	return isCancelAction;
-    }
-
-    public void setCancelAction() {
-    	this.isCancelAction = true;
-    }
-
-    public void setResultAction(NVDLResultAction resultAction) {
-        this.resultAction = resultAction;
-    }
-
-    public NVDLResultAction getResultAction() {
-        return resultAction;
-    }
-
-    public void addNoResultAction(NVDLNoResultAction noResultAction) {
-        noResultActions.add(noResultAction);
-    }
-
-    public List getNoResultActions() {
-        return noResultActions;
-    }
-
-    public NVDLActionManager() {
-        noResultActions = new ArrayList<NVDLNoResultAction>(0);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLAllowAction.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLAllowAction.java
deleted file mode 100644
index c23cc5e..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLAllowAction.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-
-/**
- * The <code>NVDLAllowAction</code> is for NVDL `allow' action.
- */
-public class NVDLAllowAction extends NVDLNoResultAction {
-    public String toString() {
-        return "Allow";
-    }
-
-    public NVDLAllowAction(String name, String useModeName, NVDLRule belongingRule) {
-        super(name, useModeName, belongingRule);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLAttributeSection.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLAttributeSection.java
deleted file mode 100644
index 808932f..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLAttributeSection.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-/**
- * The <code>NVDLAttributeSection</code> represents an attribute section.
- */
-public interface NVDLAttributeSection {
-    String getNamespace();
-    NVDLElement getBaseElement();
-}
-
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLConst.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLConst.java
deleted file mode 100644
index 7862d37..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLConst.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-/**
- * The <code>NVDLConst</code> class holds constants defined in NVDL.
- */
-public class NVDLConst {
-    static public final String NVDL_NS = "http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0";
-
-    static public final String INSTANCE_NS_COMMON = "http://purl.oclc.org/dsdl/nvdl/ns/instance";
-
-    static public final String INSTANCE_NS = "http://purl.oclc.org/dsdl/nvdl/ns/instance/1.0";
-    static public final String INSTANCE_PREFIX_BASE = "nvdlinstance";
-    static public final String VIRTUALELEMENT_NAME = "virtualElement";
-    static public final String PLACEHOLDER_NAME = "placeholder";
-
-    static public final String INSTANCE_REC_NS = "http://purl.oclc.org/dsdl/nvdl/ns/instance/2.0";
-    static public final String INSTANCE_REC_PREFIX_BASE = "nir";
-    static public final String SLOT_NODE_START_NAME = "slot-node";
-    static public final String SLOT_NODE_END_NAME = "slot-node-end";
-    static public final String SLOT_NODE_ID_ATTR = "slot-node-id";
-    static public final String ASN_ID_ATTR = "asn-id";
-    static public final String SECTION_ID_ATTR = "sect-id";
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLElement.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLElement.java
deleted file mode 100644
index d364e40..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLElement.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-/**
- * The <code>NVDLElement</code> represents an XML element.
- * This class also holds an element section index that identifies the
- @ belonging element section.
- */
-public class NVDLElement {
-    public final String ns;
-    public final String localName;
-    public final NVDLElement parent;
-    public final int sectionIdx;
-
-    private final boolean isSectionHead;
-
-    public boolean isSectionHead() {
-        return isSectionHead;
-    }
-
-    private boolean initSectionHeadFlag(NVDLTriggerManager triggerManager) {
-        if (parent == null) return true;
-        if (!(ns.equals(parent.ns))) return true;
-        if (triggerManager == null) return false;
-        return triggerManager.match(this, parent);
-    }
-
-
-    public NVDLElement(String ns, String localName, NVDLElement parent,
-                       NVDLTriggerManager triggerManager, int nextSectionIdx) {
-        this.ns = ns;
-        this.localName = localName;
-        this.parent = parent;
-
-        this.isSectionHead = initSectionHeadFlag(triggerManager);
-        if (isSectionHead()) {
-            this.sectionIdx = nextSectionIdx;
-        } else {
-            this.sectionIdx = parent.sectionIdx;
-        }
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLMessage.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLMessage.java
deleted file mode 100644
index ed7abde..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLMessage.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * The <code>NVDLMessage</code> holds messages in NVDL scripts.
- */
-public class NVDLMessage {
-    private String defMessage;
-    // lang -> message;
-    private HashMap<String, String> langMessage;
-
-    public void addMessage(String lang, String message) {
-        if (lang == null) {
-            defMessage = message;
-        } else {
-            langMessage.put(lang, message);
-        }
-    }
-
-    public String getMessage(String lang) {
-        if (lang == null) return defMessage;
-        String message = langMessage.get(lang);
-        if (message == null) return defMessage;
-        return message;
-    }
-
-    public String toString() {
-        StringBuffer r = new StringBuffer();
-        if (defMessage != null) {
-        	r.append(defMessage);
-        	r.append(";");
-        }
-        Iterator it = langMessage.entrySet().iterator();
-        while (it.hasNext()) {
-            Map.Entry entry = (Map.Entry) it.next();
-            r.append("Lang:");
-            r.append(entry.getKey());
-            r.append("->");
-            r.append(entry.getValue());
-            r.append(";");
-        }
-        return r.toString();
-    }
-
-    public NVDLMessage() {
-        langMessage = new HashMap<String, String>(0);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLMode.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLMode.java
deleted file mode 100644
index 857792b..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLMode.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * The <code>NVDLMode</code> class is for NVDL mode.
- */
-public class NVDLMode extends NVDLModel {
-    public final String name;
-
-    private NVDLRule anyNamespaceRuleForAttribute = null;
-    private NVDLRule anyNamespaceRuleForElement = null;
-    private List<NVDLRule> rules = new ArrayList<NVDLRule>();
-
-    public NVDLRule getAnyNamespaceRuleForAttribute() {
-        return anyNamespaceRuleForAttribute;
-    }
-
-    public NVDLRule getAnyNamespaceRuleForElement() {
-        return anyNamespaceRuleForElement;
-    }
-
-    private void addRuleInternal(NVDLRule rule) {
-        if (rule.isAnyNamespace()) {
-            if (rule.isTargetElement()) {
-                assert anyNamespaceRuleForElement == null;
-                anyNamespaceRuleForElement = rule;
-            }
-            if (rule.isTargetAttribute()) {
-                assert anyNamespaceRuleForAttribute == null;
-                anyNamespaceRuleForAttribute = rule;
-            }
-        } else {
-            rules.add(rule);
-        }
-    }
-
-    private NVDLRule getConflictRule(NVDLRule rule) {
-        if (rule.isAnyNamespace()) {
-            if (rule.isTargetElement()) {
-                return anyNamespaceRuleForElement;
-            }
-            if (rule.isTargetAttribute()) {
-                return anyNamespaceRuleForAttribute;
-            }
-        }
-        for (int i = 0; i < rules.size(); i++) {
-            NVDLRule r = rules.get(i);
-            if (r.isConflicted(rule)) return r;
-        }
-        return null;
-    }
-
-    // Returns a conflicted rule if it exists.
-    public NVDLRule addRule(NVDLRule rule) {
-        // Simplification 6.4.11
-        NVDLRule r = getConflictRule(rule);
-        if (r != null) return r;
-        addRuleInternal(rule);
-        return null;
-    }
-
-    public Iterator notAnyNamespaceRuleIterator() {
-        return rules.iterator();
-    }
-
-    public NVDLRule chooseRule(String ns, boolean element) {
-        Iterator it = notAnyNamespaceRuleIterator();
-        while (it.hasNext()) {
-            NVDLRule rule = (NVDLRule) it.next();
-            if (rule.match(ns, element)) {
-                return rule;
-            }
-        }
-        if (element) {
-            return anyNamespaceRuleForElement;
-        } else {
-            return anyNamespaceRuleForAttribute;
-        }
-    }
-
-    public NVDLModel visitModel(NVDLModelVisitor v)
-        throws NVDLModelException {
-        return v.visitNVDLMode(this);
-    }
-
-    public String toString() {
-        StringBuffer r = new StringBuffer();
-        if (name != null) {
-            r.append(name);
-            r.append(";");
-        }
-        Iterator it = notAnyNamespaceRuleIterator();
-        while (it.hasNext()) {
-            NVDLRule rule = (NVDLRule) it.next();
-            r.append(rule.toString());
-            r.append(";");
-        }
-        if (anyNamespaceRuleForElement != null) {
-            r.append(anyNamespaceRuleForElement.toString());
-            r.append(";");
-        }
-        if (anyNamespaceRuleForAttribute != null) {
-            r.append(anyNamespaceRuleForAttribute.toString());
-            r.append(";");
-        }
-        return r.toString();
-    }
-    
-    public NVDLMode(String name) {
-        this.name = name;
-    }
-
-    /**********************************************************************
-                             Mode Inclusion
-     **********************************************************************/
-
-    private List<NVDLMode> includedModes = null;
-    private void includeMode(NVDLMode childMode) {
-        // Simplification 6.4.10
-        if ((childMode.anyNamespaceRuleForAttribute != null)
-            && (anyNamespaceRuleForAttribute == null)) {
-            addRule(childMode.anyNamespaceRuleForAttribute);
-        }
-        if ((childMode.anyNamespaceRuleForElement != null)
-            && (anyNamespaceRuleForElement == null)) {
-            addRule(childMode.anyNamespaceRuleForElement);
-        }
-        child:
-        for (int i = 0; i < childMode.rules.size(); i++) {
-            NVDLRule cr = (NVDLRule) childMode.rules.get(i);
-            for (int j = 0; j < rules.size(); j++) {
-                NVDLRule r = (NVDLRule) rules.get(j);
-                if (cr.isOverridden(r)) continue child;
-            }
-            addRule(cr);
-        }
-    }
-    
-    public void addIncludedMode(NVDLMode mode) {
-        if (includedModes == null) {
-            includedModes = new ArrayList<NVDLMode>(1);
-        }
-        includedModes.add(mode);
-    }
-    
-    private void removeCancelActionRules() {
-        // Simplification 6.4.10
-        if (anyNamespaceRuleForAttribute != null) {
-            if (anyNamespaceRuleForAttribute.getActionManager()
-                .isCancelAction()) {
-                anyNamespaceRuleForAttribute = null;
-            }
-        }
-        if (anyNamespaceRuleForElement != null) {
-            if (anyNamespaceRuleForElement.getActionManager()
-                .isCancelAction()) {
-                anyNamespaceRuleForElement = null;
-            }
-        }
-        int i = 0;
-        while (i < rules.size()) {
-            NVDLRule r = (NVDLRule) rules.get(i);
-            if (r.getActionManager().isCancelAction()) {
-                rules.remove(i);
-            } else {
-                i++;
-            }
-        }
-    }
-
-    public void simplifyInclusion() {
-        if (includedModes == null) return;
-        Iterator it = includedModes.iterator();
-        while (it.hasNext()) {
-            NVDLMode child = (NVDLMode) it.next();
-            includeMode(child);
-        }
-        removeCancelActionRules();
-        includedModes = null;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModel.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModel.java
deleted file mode 100644
index 03b2707..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModel.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-/**
- * The <code>NVDLModel</code> is the base abstract class for any NVDL model.
- */
-public abstract class NVDLModel {
-    public abstract NVDLModel visitModel(NVDLModelVisitor v) throws NVDLModelException;
-
-    private Location loc = null;
-    public void setLocation(Location loc) {
-        this.loc = loc;
-    }
-    public Location getLocation() {
-        return loc;
-    }
-    public void copyLocation(NVDLModel src) {
-        this.loc = src.loc;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModelException.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModelException.java
deleted file mode 100644
index 3bbf51f..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModelException.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.NVDLException;
-
-/**
- * The <code>NVDLModelException</code> is an exception class
- * for NVDL model processings.
- */
-public class NVDLModelException extends NVDLException {
-    private static final long serialVersionUID = -3285734522668289094L;
-	
-    public NVDLModelException(String message) {
-        super(message);
-    }
-    public NVDLModelException(Exception e) {
-        super(e);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModelTraverse.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModelTraverse.java
deleted file mode 100644
index 6c55c4f..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModelTraverse.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-/**
- * The <code>NVDLModelTraverse</code> is a utility for traversing
- * all reachable models in a depth-first manner.
- */
-public class NVDLModelTraverse implements NVDLModelVisitor {
-    private Set<NVDLModel> traversed = new HashSet<NVDLModel>();
-
-    private boolean checkTraversedInternal(NVDLModel m) {
-        if (traversed.contains(m)) return true;
-        traversed.add(m);
-        return false;
-    }
-
-    protected boolean checkTraversed(NVDLModel m) {
-        if (traversed.contains(m)) return true;
-        return false;
-    }
-    
-    public void traverse(NVDLModel m) throws NVDLModelException {
-    	traversed.clear();
-        m.visitModel(this);
-    }
-
-    private NVDLModel visit(NVDLModel m) throws NVDLModelException {
-    	if (m == null) return null;
-        return m.visitModel(this);
-    }
-
-    public NVDLModel visitNVDLMode(NVDLMode mode) throws NVDLModelException {
-        if (checkTraversedInternal(mode)) return null;
-        NVDLRule rule;
-        rule = mode.getAnyNamespaceRuleForAttribute();
-        if (rule != null) visit(rule);
-        rule = mode.getAnyNamespaceRuleForElement();
-        if (rule != null) visit(rule);
-        Iterator it = mode.notAnyNamespaceRuleIterator();
-        while (it.hasNext()) {
-            rule = (NVDLRule) it.next();
-            visit(rule);
-        }
-        return null;
-    }
-
-    private void traverseAction(NVDLAction a) throws NVDLModelException {
-        visit(a.getUseMode());
-        List contexts = a.getContextsList();
-        Iterator it = contexts.iterator();
-        while (it.hasNext()) {
-            NVDLAction.Context c = (NVDLAction.Context) it.next();
-            visit(c.useMode);
-        }
-    }
-
-    public NVDLModel visitNVDLNoResultAction(NVDLNoResultAction action) throws NVDLModelException {
-        if (checkTraversedInternal(action)) return null;
-        traverseAction(action);
-        return null;
-    }
-
-    public NVDLModel visitNVDLResultAction(NVDLResultAction action) throws NVDLModelException {
-        if (checkTraversedInternal(action)) return null;
-        traverseAction(action);
-        return null;
-    }
-
-    public NVDLModel visitNVDLRule(NVDLRule rule) throws NVDLModelException {
-        if (checkTraversedInternal(rule)) return null;
-        NVDLActionManager am = rule.getActionManager();
-        NVDLResultAction ra = am.getResultAction();
-        if (ra != null) visit(ra);
-        List nras = am.getNoResultActions();
-        Iterator it = nras.iterator();
-        while (it.hasNext()) {
-            NVDLNoResultAction nra = (NVDLNoResultAction) it.next();
-            visit(nra);
-        }
-        return null;
-    }
-
-    public NVDLModel visitNVDLRules(NVDLRules rules) throws NVDLModelException {
-        if (checkTraversedInternal(rules)) return null;
-        visit(rules.getStartMode());
-        return null;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModelVisitor.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModelVisitor.java
deleted file mode 100644
index 560f9ae..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLModelVisitor.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-/**
- * The <code>NVDLModelVisitor</code> interface is for visitor pattern.
- */
-public interface NVDLModelVisitor {
-    NVDLModel visitNVDLMode(NVDLMode mode) throws NVDLModelException;
-    NVDLModel visitNVDLNoResultAction(NVDLNoResultAction action) throws NVDLModelException;
-    NVDLModel visitNVDLResultAction(NVDLResultAction action) throws NVDLModelException;
-    NVDLModel visitNVDLRule(NVDLRule rule) throws NVDLModelException;
-    NVDLModel visitNVDLRules(NVDLRules rules) throws NVDLModelException;
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLNoResultAction.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLNoResultAction.java
deleted file mode 100644
index 452ac27..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLNoResultAction.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-
-/**
- * The <code>NVDLNoResultAction</code> is a base abstract class
- * for NVDL `NoResultAction.'
- */
-public abstract class NVDLNoResultAction extends NVDLAction {
-    public NVDLModel visitModel(NVDLModelVisitor v)
-        throws NVDLModelException {
-        return v.visitNVDLNoResultAction(this);
-    }
-
-    NVDLNoResultAction(String name, String useModeName, NVDLRule belongingRule) {
-        super(name, useModeName, belongingRule);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLRejectAction.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLRejectAction.java
deleted file mode 100644
index 04d279e..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLRejectAction.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-
-/**
- * The <code>NVDLRejectAction</code> is for NVDL `reject' action.
- */
-public class NVDLRejectAction extends NVDLNoResultAction {
-    public String toString() {
-        return "Reject";
-    }
-
-    public NVDLRejectAction(String name, String useModeName, NVDLRule belongingRule) {
-        super(name, useModeName, belongingRule);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLResultAction.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLResultAction.java
deleted file mode 100644
index 93f8500..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLResultAction.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-/**
- * The <code>NVDLResultAction</code> encapsulates all kinds of
- * NVDL `ResultAction.'
- */
-public class NVDLResultAction extends NVDLAction {
-    public static final int TYPE_ATTACH = 1;
-    public static final int TYPE_ATTACHPLACEHOLDER = 2;
-    public static final int TYPE_UNWRAP = 3;
-
-    public final int type;
-
-    public NVDLModel visitModel(NVDLModelVisitor v)
-        throws NVDLModelException {
-        return v.visitNVDLResultAction(this);
-    }
-    
-    public String toString() {
-        switch (type) {
-        case TYPE_ATTACH:
-            return "Attach:";
-        case TYPE_ATTACHPLACEHOLDER:
-            return "AttachPlaceHolder:";
-        case TYPE_UNWRAP:
-            return "Unwrap:";
-        }
-        return "";
-    }
-
-    public NVDLResultAction(String name, String useModeName, int type,
-                            NVDLRule belongingRule) {
-        super(name, useModeName, belongingRule);
-        this.type = type;
-        assert (type >= TYPE_ATTACH) && (type <= TYPE_UNWRAP);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLRule.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLRule.java
deleted file mode 100644
index 28b6fe7..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLRule.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * The <code>NVDLRule</code> is a model class for NVDL `rule'.
- */
-public class NVDLRule extends NVDLModel {
-    private final boolean anyNamespace;
-    public boolean isAnyNamespace() {
-        return anyNamespace;
-    }
-    private final String ns;
-    private final Pattern nsPattern;
-    private final char wildCardChar;
-
-    private final boolean targetElement;
-    public boolean isTargetElement() {
-        return targetElement;
-    }
-    private final boolean targetAttribute;
-    public boolean isTargetAttribute() {
-        return targetAttribute;
-    }
-
-    private NVDLActionManager actionManager = new NVDLActionManager();
-
-    public boolean isConflicted(NVDLRule rule) {
-        // Case 0
-        if (anyNamespace || rule.anyNamespace) {
-            if (anyNamespace == rule.anyNamespace) {
-                //
-                if ((isTargetElement() == rule.isTargetElement())
-                    || (isTargetAttribute() == rule.isTargetAttribute()))
-                    return true;
-            }
-            return false;
-        }
-        // TODO! intersection of two automaton...
-        return false;
-    }
-
-    public boolean isOverridden(NVDLRule rule) {
-        if (((targetElement != rule.targetElement)
-             || (targetAttribute != rule.targetAttribute)))
-            return false;
-        if (isAnyNamespace()) {
-            return rule.isAnyNamespace();
-        }
-        return (wildCardChar == rule.wildCardChar) && ns.equals(rule.ns);
-    }
-
-    public boolean match(String ns, boolean targetElement) {
-        if (targetElement) {
-            if (!isTargetElement()) return false;
-        } else {
-            if (!isTargetAttribute()) return false;
-        }
-        if (anyNamespace) return true;
-        if (nsPattern == null) {
-            return this.ns.equals(ns);
-        }
-        Matcher m = nsPattern.matcher(ns);
-        return m.matches();
-    }
-
-    public NVDLModel visitModel(NVDLModelVisitor v) throws NVDLModelException {
-        return v.visitNVDLRule(this);
-    }
-
-    public NVDLActionManager getActionManager() {
-        return actionManager;
-    }
-
-    public String toString() {
-        StringBuffer r = new StringBuffer();
-        if (anyNamespace) {
-            r.append("AnyNamespace");
-        } else {
-            r.append("NS={");
-            r.append(ns);
-            r.append("},W=");
-            r.append(wildCardChar);
-        }
-        return r.toString();
-    }
-
-    private String quote(String pat, char wildCardChar) {
-        StringBuffer r = new StringBuffer();
-        for (int i = 0; i < pat.length(); i++) {
-            char c = pat.charAt(i);
-            if (c == wildCardChar) {
-                r.append(".*");
-            } else if (("\\?*+.[]{}()$^".indexOf(c) >= 0)) {
-                r.append('\\');
-                r.append(c);
-            } else {
-                r.append(c);
-            }
-        }
-        return r.toString();
-    }
-
-    public NVDLRule(boolean anyNamespace, String ns, char wildCardChar,
-                    boolean targetElement, boolean targetAttribute) {
-        assert (targetElement || targetAttribute);
-
-        this.anyNamespace = anyNamespace;
-        if (!anyNamespace) {
-        	this.ns = ns;
-        	if (ns.indexOf(wildCardChar) > 0) {
-        		nsPattern = Pattern.compile(quote(ns, wildCardChar));
-        	} else {
-        		nsPattern = null;
-        	}
-        } else {
-        	this.ns = null;
-        	this.nsPattern = null;
-        }
-        this.wildCardChar = wildCardChar;
-        this.targetElement = targetElement;
-        this.targetAttribute = targetAttribute;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLRules.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLRules.java
deleted file mode 100644
index 2a1eae7..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLRules.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * The <code>NVDLRules</code> is a model class for NVDL `rules'.
- */
-public class NVDLRules extends NVDLModel {
-    private final String schemaType;
-    public String getSchmaType() {
-        return schemaType;
-    }
-
-    private final String startModeName;
-    public String getStartModeName() {
-        return startModeName;
-    }
-    private NVDLMode startMode;
-    public NVDLMode getStartMode() {
-        return startMode;
-    }
-    public void setStartMode(NVDLMode mode) {
-        this.startMode = mode;
-    }
-
-    // Trigger
-
-    private NVDLTriggerManager triggerMan = new NVDLTriggerManager();
-    public NVDLTriggerManager getTriggerManager() {
-        return triggerMan;
-    }
-
-    // Mode
-    private Map<String, NVDLMode> modes = new HashMap<String, NVDLMode>();
-
-    public NVDLMode getMode(String name) {
-        return modes.get(name);
-    }
-    public void putMode(NVDLMode mode) {
-        modes.put(mode.name, mode);
-    }
-
-    // Action
-    private HashMap<String, NVDLAction> actionMap = new HashMap<String, NVDLAction>();
-    public NVDLAction getAction(String name) {
-        return actionMap.get(name);
-    }
-    public void putAction(NVDLAction action) {
-        actionMap.put(action.getName(), action);
-    }
-    
-    // Visitor Handler
-    public NVDLModel visitModel(NVDLModelVisitor v) throws NVDLModelException {
-        return v.visitNVDLRules(this);
-    }
-
-    public NVDLRules(String schemaType, String startModeName) {
-        this.schemaType = schemaType;
-        this.startModeName = startModeName;
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLTriggerManager.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLTriggerManager.java
deleted file mode 100644
index d5f2096..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLTriggerManager.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * The <code>NVDLTriggerManager</code> manages when to fire 'triggers'.
- */
-public class NVDLTriggerManager {
-    static private class Trigger {
-        final String ns;
-        final String[] localNames;
-
-        public String toString() {
-            return "{" + ns + "}" + localNames;
-        }
-
-        public boolean match(String ns, String localName) {
-            if (this.ns.equals(ns)) {
-                for (int i = 0; i < localNames.length; i++) {
-                    if (localNames[i].equals(localName)) return true;
-                }
-            }
-            return false;
-        }
-
-        Trigger(String ns, String[] localNames) {
-            this.ns = ns;
-            this.localNames = localNames;
-        }
-    }
-    List<Trigger> triggers = new ArrayList<Trigger>(0);
-
-    public NVDLTriggerManager() {
-    }
-
-    public void addTrigger(String ns, String[] localNames) {
-        Trigger t = new Trigger(ns, localNames);
-        triggers.add(t);
-    }
-
-    public String toString() {
-        StringBuffer r = new StringBuffer("Triggers:");
-        for (Iterator<Trigger> it = triggers.iterator();
-             it.hasNext();) {
-            Trigger trigger = it.next();
-            r.append(trigger);
-            r.append(";");
-        }
-        return r.toString();
-    }
-
-    public boolean match(String ns, String localName, LinkedList elemStack) {
-        if (elemStack.isEmpty()) return false;
-        NVDLElement parent = (NVDLElement) elemStack.getLast();
-
-        for (int i = 0; i < triggers.size(); i++) {
-            Trigger t = triggers.get(i);
-            if (t.match(ns, localName)
-                && !t.match(parent.ns, parent.localName)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    public boolean match(NVDLElement e, NVDLElement parent) {
-        for (int i = 0; i < triggers.size(); i++) {
-            Trigger t = (Trigger) triggers.get(i);
-            if (t.match(e.ns, e.localName)
-                && !t.match(parent.ns, parent.localName)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLValidateAction.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLValidateAction.java
deleted file mode 100644
index b86d685..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/model/NVDLValidateAction.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.validation.Schema;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.NVDLException;
-
-
-/**
- * The <code>NVDLValidateAction</code> class represents
- * NVDL `validate' and the schema defined in it.
- */
-public class NVDLValidateAction extends NVDLNoResultAction {
-    private static class Option {
-        final String name;
-        final String arg;
-        final boolean mustSupport;
-        Option(String name, String arg, boolean mustSupport) {
-            this.name = name;
-            this.arg = arg;
-            this.mustSupport = mustSupport;
-        }
-    }
-    private List<Option> options = new ArrayList<Option>(0);
-    public void addOption(String name, String arg, boolean mustSupport) {
-        options.add(new Option(name, arg, mustSupport));
-    }
-
-    private String schemaType = null;
-    public String getSchemaType() {
-        return schemaType;
-    }
-    public void setSchemaType(String schemaType) {
-        this.schemaType = schemaType;
-    }
-    private String schemaIRI = null;
-    public String getSchemaIRI() {
-        return schemaIRI;
-    }
-    public void setSchemaIRI(String schemaIRI) {
-        this.schemaIRI = schemaIRI;
-    }
-
-    private Schema schema;
-    private Schema schemaForAttribute;
-
-    private SchemaLoader loader;
-    public Schema getSchema(boolean forAttribute) throws NVDLException {
-        if (forAttribute) {
-            if (schemaForAttribute != null) return schemaForAttribute;
-            schemaForAttribute = loader.load(this, true);
-            return schemaForAttribute;
-        } else {
-            if (schema != null) return schema;
-            schema = loader.load(this, false);
-            return schema;
-        }
-    }
-
-    public interface SchemaLoader {
-        Schema load(NVDLValidateAction action,
-                    boolean forAttribute) throws NVDLException;
-    }
-    public void setSchemaLoader(SchemaLoader loader) {
-        this.loader = loader;
-    }
-
-    public void setSchema(Schema schema, boolean forAttribute) {
-        if (forAttribute) {
-            this.schemaForAttribute = schema;
-        } else {
-            this.schema = schema;
-        }
-    }
-
-    public boolean isSchamaSpecified() {
-        return ((schema != null)
-                || (schemaForAttribute != null)
-                || (getSchemaIRI() != null));
-    }
-
-    public String toString() {
-        StringBuffer r = new StringBuffer();
-            r.append("Validate");
-            if (schemaIRI != null) {
-                r.append("(");
-                r.append(schemaIRI);
-                r.append(")");
-            }
-        return r.toString();
-    }
-
-    public NVDLValidateAction(String name, String useModeName,
-                              NVDLRule belongingRule) {
-        super(name, useModeName, belongingRule);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/DTDSchemaLoader.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/DTDSchemaLoader.java
deleted file mode 100644
index 666b854..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/DTDSchemaLoader.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.reader;
-
-import java.io.IOException;
-
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.validation.Schema;
-import javax.xml.validation.Validator;
-import javax.xml.validation.ValidatorHandler;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLValidateAction;
-import org.w3c.dom.ls.LSResourceResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-
-
-/**
- * The <code>DTDSchemaLoader</code> is a special schema loader class for DTD.
- */
-class DTDSchemaLoader implements NVDLValidateAction.SchemaLoader {
-    // private final String baseIRI;
-    // private Location loc;
-
-    static class DTDValidatorImpl extends Validator {
-        public void reset() {
-        }
-
-        public void validate(Source source,
-                             Result result)
-            throws SAXException, IOException {
-        }
-
-        public void setErrorHandler(ErrorHandler errorHandler) {
-        }
-
-        public ErrorHandler getErrorHandler() {
-            return null;
-        }
-
-        public void setResourceResolver(LSResourceResolver lsResourceResolver) {
-        }
-
-        public LSResourceResolver getResourceResolver() {
-            return null;
-        }
-    }
-
-    static class DTDSchemaImpl extends Schema {
-
-        public Validator newValidator() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-
-        public ValidatorHandler newValidatorHandler() {
-            // TODO Auto-generated method stub
-            return null;
-        }
-        
-    }
-    public Schema load(NVDLValidateAction validateAction, boolean forAttribute) {
-        return null;
-        // XMLReader reader = XMLReaderFactory.createXMLReader();
-        // reader.setFeature("http://xml.org/sax/features/validation", true);
-
-        // It's not allowed to put SAX into XMLReader.
-        // We can't help transforming it into stream.
-        // StringWriter writer = new 
-    }
-
-    DTDSchemaLoader() {
-    	// this.baseIRI = null;
-        // this.baseIRI = baseIRI;
-        // this.loc = loc;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/NVDLReaderException.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/NVDLReaderException.java
deleted file mode 100644
index 801215a..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/NVDLReaderException.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.reader;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.NVDLException;
-
-/**
- * The <code>NVDLReaderException</code> is an exception class
- * for NVDL reader.
- */
-public class NVDLReaderException extends NVDLException {
-    private static final long serialVersionUID = 3266774582350581335L;
-
-    public NVDLReaderException(String message) {
-        super(message);
-    }
-
-    public NVDLReaderException(String message, Object[] args) {
-        super(message, args);
-    }
-
-    public NVDLReaderException(Exception e) {
-        super(e);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/NVDLSAXReader.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/NVDLSAXReader.java
deleted file mode 100644
index bf2addd..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/NVDLSAXReader.java
+++ /dev/null
@@ -1,1176 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.reader;
-
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import javax.xml.validation.SchemaFactory;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.NVDLException;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.Location;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAllowAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLConst;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLMessage;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLMode;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLModel;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLModelException;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRejectAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLResultAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRule;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRules;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLValidateAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.DefaultErrorHandler;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.Log;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.PrefixMapper;
-import org.xml.sax.Attributes;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.DefaultHandler;
-
-
-/**
- * The <code>NVDLSAXReader</code> is a reader for NVDL scripts using SAX.
- */
-public class NVDLSAXReader {
-    private NVDLRules rules;
-
-    private ErrorHandler eh;
-
-    private Locator locator;
-
-    private int errorCounter;
-
-    private Location newLocation() {
-        return new Location(locator.getLineNumber(),
-                            locator.getColumnNumber(),
-                            locator.getSystemId());
-    }
-
-    private void setLocation(NVDLModel m) {
-        m.setLocation(newLocation());
-    }
-
-    private XMLReader reader;
-
-    private void error(NVDLReaderException e) throws SAXException {
-        if (eh != null)
-            eh.error(new SAXParseException(e.getMessage(), locator, e));
-    }
-
-    private void readUnknownError(String mes, Object[] args) throws SAXException {
-        errorCounter++;
-        error(new NVDLReaderException(mes, args));
-    }
-
-    private void readInvalidError(String mes) throws SAXException {
-        readInvalidError(mes, new Object[0]);
-    }
-
-    private void readInvalidError(String mes, Object[] args) throws SAXException {
-        errorCounter++;
-        error(new NVDLReaderException(mes, args));
-    }
-
-    private boolean isForeign(String iri) {
-        return !NVDLConst.NVDL_NS.equals(iri);
-    }
-
-    private boolean isLocal(String iri) {
-        return (iri.length() == 0);
-    }
-
-    private static final String NSNAME = "xmlns";
-    private boolean isNSDecl(String qName) {
-        if (!qName.startsWith(NSNAME)) return false;
-        if (qName.length() == NSNAME.length()) return true;
-        if (qName.charAt(NSNAME.length()) == ':') return true;
-        return false;
-    }
-
-    private void setHandler(BaseHandler h) {
-        reader.setContentHandler(h);
-    }
-
-    /*
-      Whitespace
-     */
-    private StringBuffer removeLeadingAndTrailingSpaces(StringBuffer sb) {
-        int len = sb.length();
-        int s, e;
-        ex1: for (s = 0; s < len; s++) {
-            char c = sb.charAt(s);
-            switch (c) {
-            case ' ': case '\r': case '\n': case '\t':
-                break;
-            default:
-                break ex1;
-            }
-        }
-        if (s == (len - 1)) {
-            sb.delete(0, s);
-            return sb;
-        }
-        ex2: for (e = len - 1; s >= 0; s--) {
-            char c = sb.charAt(e);
-            switch (c) {
-            case ' ': case '\r': case '\n': case '\t':
-                break;
-            default:
-                break ex2;
-            }
-        }
-
-        if (s > 0) {
-            sb.delete(0, s);
-        }
-        if (e < (len - 1)) {
-            sb.delete(e, len - 1);
-        }
-        return sb;
-    }
-
-    private String[] splitList(String s) {
-        return s.split("[ \r\n\t]");
-    }
-
-    private boolean checkWhiteSpace(char[] ch, int start, int length) {
-        for (int i = 0; i < length; i++) {
-            switch (ch[start + i]) {
-            case ' ': case '\r': case '\n':	case '\t':
-                break;
-            default:
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /*
-      xsd:boolean
-     */
-
-    private boolean parseXSDBoolean(String s, boolean defaultValue)
-        throws SAXException {
-        if (s == null) return defaultValue;
-        StringBuffer sb = removeLeadingAndTrailingSpaces(new StringBuffer(s));
-        String s2 = sb.toString();
-        if (s2.equals("0")) return false;
-        if (s2.equals("false")) return false;
-        if (s2.equals("1")) return true;
-        if (s2.equals("true")) return true;
-        readInvalidError("NVDLReader.XSDBooleanError", new Object[] {s});
-        return false;
-    }
-
-    /*
-      Attribute
-     */
-    static class AtRet {
-        String name;
-        String value;
-        AtRet(String name) {
-            this.name = name;
-            this.value = null;
-        }
-    }
-
-    private void getAttrs(Attributes attr, AtRet[] ars) throws SAXException {
-        int len = attr.getLength();
-        for (int i = 0; i < len; i++) {
-            String iri = attr.getURI(i);
-            if (!isLocal(iri)) continue;
-            String localName = attr.getLocalName(i);
-            String qName = attr.getQName(i);
-            if (isNSDecl(qName)) continue;
-            for (int j = 0; ; j++) {
-                if (j >= ars.length) {
-                    readUnknownError("NVDLReader.UnallowedAttributeError",
-                                     new Object[] {localName});
-                }
-                if (ars[j].name.equals(localName)) {
-                    ars[j].value = attr.getValue(i);
-                    break;
-                }
-            }
-        }
-    }
-
-    private void checkAttrs(Attributes attr) throws SAXException {
-        int len = attr.getLength();
-        for (int i = 0; i < len; i++) {
-            String iri = attr.getURI(i);
-            String localName = attr.getLocalName(i);
-            if (isLocal(iri)) {
-                readUnknownError("NVDLReader.UnallowedAttributeError",
-                                 new Object[] {localName});
-            }
-        }
-    }
-
-    /*
-      id
-     */
-
-    private String getXMLID(Attributes attrs) throws SAXException {
-        return attrs.getValue("id");
-    }
-
-    /*
-      Rule
-    */
-    private void addRule(NVDLMode mode, NVDLRule rule)
-        throws SAXException {
-        NVDLRule conflictedRule = mode.addRule(rule);
-        if (conflictedRule != null) {
-            readInvalidError("NVDLReader.RuleConflictsError",
-                             new Object[] {rule.toString(), conflictedRule.toString()});
-        }
-    }
-
-    /*
-      Mode Helper
-    */
-
-    private void checkNestedMode(NVDLAction action) throws SAXException {
-        if (action.getUseModeName() != null) {
-            readInvalidError("NVDLReader.NestedModeAndUseModeError");
-        }
-        if (action.getUseMode() != null) {
-            readInvalidError("NVDLReader.DuplicatedNestedModeError");
-        }
-    }
-
-    private String uniqueModeName() {
-        StringBuffer name = new StringBuffer("mode-");
-        name.append(locator.getLineNumber());
-        name.append("-");
-        name.append(locator.getColumnNumber());
-        name.append("-");
-        String fname;
-        for (int i = 1; ; i++) {
-            fname = name.toString() + i;
-            if (rules.getMode(fname) == null) break;
-        }
-        return fname;
-    }
-
-    private String uniqueActionID(Attributes attrs) throws SAXException {
-        String id = getXMLID(attrs);
-        if ((id == null) || (id.length() == 0)) {
-            for (int i = 1; ; i++) {
-                id = "A" + i;
-                if (rules.getAction(id) == null) break;
-            }
-        }
-        return id;
-    }
-
-    /*
-       PrefixMapper
-     */
-    private PrefixMapper prefixMapper = new PrefixMapper();
-
-    /* 
-       Handlers
-    */
-
-    private class BaseHandler extends DefaultHandler {
-        private final BaseHandler ph;
-
-        public void startPrefixMapping(String prefix,
-                                       String uri)
-            throws SAXException {
-            prefixMapper.startPrefixMapping(prefix, uri);
-        }
-
-        public void endPrefixMapping(String prefix) throws SAXException {
-            prefixMapper.endPrefixMapping(prefix);
-        }
-
-        public void characters(char[] ch, int start, int length)
-            throws SAXException {
-            readUnknownError("NVDLReader.UnallowedCharactersError",
-                             new Object[] {new String(ch, start, length)});
-        }
-
-        public void setDocumentLocator(Locator locator) {
-            NVDLSAXReader.this.locator = locator;
-        }
-
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attributes) throws SAXException {
-            readUnknownError("NVDLReader.UnallowedElementError",
-                             new Object[] {uri, qName});
-        }
-        public void endElement(String uri,
-                               String localName,
-                               String qName) throws SAXException {
-            if (ph != null) setHandler(ph);
-        }
-
-        BaseHandler(BaseHandler prev) {
-            this.ph = prev;
-        }
-    }
-
-    private class ForeignSkipHandler extends BaseHandler {
-        private int level;
-        public void characters(char[] ch, int start, int length)
-            throws SAXException {
-            return;
-        }
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attributes) throws SAXException {
-            level++;
-        }
-        public void endElement(String uri,
-                               String localName,
-                               String qName) throws SAXException {
-            level--;
-            if (level <= 0)
-                super.endElement(uri, localName, qName);
-        }
-        ForeignSkipHandler(BaseHandler bh) {
-            super(bh);
-            level = 1;
-        }
-    }
-
-    private class WSSkipHandler extends BaseHandler {
-        public void characters(char[] ch, int start, int length)
-            throws SAXException {
-            if (!checkWhiteSpace(ch, start, length)) {
-                readUnknownError("NVDLReader.UnallowedCharactersError",
-                                 new Object[] {new String(ch, start, length)});
-            }
-        }
-        WSSkipHandler(BaseHandler bh) {
-            super(bh);
-        }
-    }
-
-    private class InitialHandler extends WSSkipHandler {
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attrs) throws SAXException {
-            if (isForeign(uri)
-                || !localName.equals("rules")) {
-                readUnknownError("NVDLReader.DocumentElementIsRulesError",
-                                 new Object[] {uri, qName});
-                return;
-            }
-            AtRet[] ars = new AtRet[2];
-            ars[0] = new AtRet("schemaType");
-            ars[1] = new AtRet("startMode");
-            getAttrs(attrs, ars);
-            rules = new NVDLRules(ars[0].value, ars[1].value);
-            setLocation(rules);
-            setHandler(new RulesHandler(this));
-        }
-        InitialHandler() {
-            super(null);
-        }
-    }
-
-    private abstract class RuleHandler extends WSSkipHandler {
-        private boolean targetElement = false;
-        private boolean targetAttribute = false;
-        private void parseMatchTarget(String mt) throws SAXException {
-            if (mt.equals("elements")) {
-                targetElement = true;
-            } else if (mt.equals("attributes")) {
-                targetAttribute = true;
-            } else {
-                readInvalidError("NVDLReader.InvalidMatchTargetError", new Object[] {mt});
-            }
-        }
-        private NVDLRule createRuleModel(boolean any,
-                                         String ns,
-                                         char wildCard,
-                                         String target)
-            throws SAXException {
-            targetElement = targetAttribute = false;
-            if (target == null) {
-                // Simplification 6.4.9
-                targetElement = true;
-            } else {
-                String[] targets = splitList(target);
-                if (targets.length == 0) {
-                    // Simplification 6.4.9
-                    targetElement = true;
-                } else if (targets.length == 1) {
-                    parseMatchTarget(targets[0]);
-                } else if (targets.length == 2) {
-                    parseMatchTarget(targets[0]);
-                    parseMatchTarget(targets[1]);
-                } else {
-                    readInvalidError("NVDLReader.InvalidMatchTargetError", new Object[] {target});
-                }
-            }
-            NVDLRule rule = new NVDLRule(any, ns, wildCard,
-                                         targetElement, targetAttribute);
-            setLocation(rule);
-            return rule;
-        }
-
-        protected NVDLRule parseRule(String localName,
-                                     Attributes attrs) throws SAXException {
-            if (localName.equals("namespace")) {
-                AtRet[] ars = new AtRet[3];
-                ars[0] = new AtRet("ns");
-                ars[1] = new AtRet("wildCard");
-                ars[2] = new AtRet("match");
-                getAttrs(attrs, ars);
-                // Simplification 6.4.9
-                char wildCardChar = '*';
-                if (ars[1].value == null) {
-                } else if (ars[1].value.length() == 0) {
-                    wildCardChar = '\u0000';
-                } else if (ars[1].value.length() == 1) {
-                    wildCardChar = ars[1].value.charAt(0);
-                } else {
-                    readInvalidError("NVDLReader.WildCardOneCharError",
-                                     new Object[] {ars[1].value});
-                }
-                NVDLRule rule = createRuleModel(false, ars[0].value,
-                                                wildCardChar, ars[2].value);
-                parseRuleActions(this, rule);
-                return rule;
-            } else if (localName.equals("anyNamespace")) {
-                AtRet[] ars = new AtRet[1];
-                ars[0] = new AtRet("match");
-                getAttrs(attrs, ars);
-                NVDLRule rule = createRuleModel(true, null, ' ', ars[0].value);
-                parseRuleActions(this, rule);
-                return rule;
-            }
-            return null;
-        }
-
-        RuleHandler(BaseHandler bh) {
-            super(bh);
-        }
-    }
-
-    private void parseRuleActions(BaseHandler bh, NVDLRule rule) {
-        setHandler(new ActionsHandler(bh, rule));
-    }
-    private class ActionsHandler extends WSSkipHandler {
-        private final NVDLRule baseRule;
-        private boolean cancelNestedActions = false;
-        private boolean noResultAction = false;
-        private boolean resultAction = false;
-        private void checkResultAction(String localName) throws SAXException {
-            if (resultAction) {
-                readInvalidError("NVDLReader.OneResultActionError",
-                                 new Object[] {localName});
-            }
-        }
-
-        private void parseValidate(Attributes attrs) throws SAXException {
-            AtRet[] ars = new AtRet[5];
-            ars[0] = new AtRet("useMode");
-            ars[1] = new AtRet("message");
-            ars[2] = new AtRet("schemaType");
-            ars[3] = new AtRet("schema");
-            ars[4] = new AtRet("id");
-            getAttrs(attrs, ars);
-            String id = uniqueActionID(attrs);
-            NVDLValidateAction action = new NVDLValidateAction(id, ars[0].value, baseRule);
-            rules.putAction(action);
-            setLocation(action);
-            baseRule.getActionManager().addNoResultAction(action);
-            if (ars[2].value != null) action.setSchemaType(ars[2].value);
-            if (ars[3].value != null) action.setSchemaIRI(ars[3].value);
-
-            if (ars[1].value != null) {
-                action.getMessage().addMessage(null, ars[2].value);
-            }
-
-            action.setSchemaLoader(newSchemaLoader(action.getSchemaType()));
-
-            setHandler(new ValidateHandler(this, action));
-        }
-
-        private AtRet[] parseBaseActionAttributes(Attributes attrs)
-            throws SAXException {
-            AtRet[] ars = new AtRet[3];
-            ars[0] = new AtRet("useMode");
-            ars[1] = new AtRet("message");
-            ars[2] = new AtRet("id");
-            getAttrs(attrs, ars);
-            return ars;
-        }
-
-        private void parseActionBase(NVDLAction action,
-                                     String message) {
-            rules.putAction(action);
-            setLocation(action);
-            if (message != null) {
-                action.getMessage().addMessage(null, message);
-            }
-            setHandler(new ActionBaseHandler(this, action));
-        }
-
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attrs) throws SAXException {
-            if (isForeign(uri)) {
-                setHandler(new ForeignSkipHandler(this));
-                return;
-            }
-            if (cancelNestedActions) {
-                readInvalidError("NVDLReader.CancelNestedActionsError",
-                                 new Object[] {localName});
-            }
-            if (localName.equals("cancelNestedActions")) {
-                cancelNestedActions = true;
-                checkAttrs(attrs);
-                baseRule.getActionManager().setCancelAction();
-                setHandler(new WSSkipHandler(this));
-            } else if (localName.equals("validate")) {
-                noResultAction = true;
-                parseValidate(attrs);
-            } else if (localName.equals("allow")) {
-                noResultAction = true;
-                AtRet[] atr = parseBaseActionAttributes(attrs);
-                String id = uniqueActionID(attrs);
-                NVDLAllowAction a = new NVDLAllowAction(id, atr[0].value, baseRule);
-                baseRule.getActionManager().addNoResultAction(a);
-                parseActionBase(a, atr[1].value);
-            } else if (localName.equals("reject")) {
-                noResultAction = true;
-                AtRet[] atr = parseBaseActionAttributes(attrs);
-                String id = uniqueActionID(attrs);
-                NVDLRejectAction a = new NVDLRejectAction(id, atr[0].value, baseRule);
-                baseRule.getActionManager().addNoResultAction(a);
-                parseActionBase(a, atr[1].value);
-            } else if (localName.equals("attach")) {
-                checkResultAction(localName);
-                resultAction = true;
-                AtRet[] atr = parseBaseActionAttributes(attrs);
-                String id = uniqueActionID(attrs);
-                NVDLResultAction a = new NVDLResultAction(id, atr[0].value,
-                                                          NVDLResultAction.TYPE_ATTACH,
-                                                          baseRule);
-                baseRule.getActionManager().setResultAction(a);
-                parseActionBase(a, atr[1].value);
-            } else if (localName.equals("attachPlaceHolder")) {
-                checkResultAction(localName);
-                resultAction = true;
-                AtRet[] atr = parseBaseActionAttributes(attrs);
-                String id = uniqueActionID(attrs);
-                NVDLResultAction a = new NVDLResultAction(id, atr[0].value,
-                                                          NVDLResultAction.TYPE_ATTACHPLACEHOLDER,
-                                                          baseRule);
-                baseRule.getActionManager().setResultAction(a);
-                parseActionBase(a, atr[1].value);
-            } else if (localName.equals("unwrap")) {
-                checkResultAction(localName);
-                resultAction = true;
-                AtRet[] atr = parseBaseActionAttributes(attrs);
-                String id = uniqueActionID(attrs);
-                NVDLResultAction a = new NVDLResultAction(id, atr[0].value,
-                                                          NVDLResultAction.TYPE_UNWRAP,
-                                                          baseRule);
-                baseRule.getActionManager().setResultAction(a);
-                parseActionBase(a, atr[1].value);
-            } else {
-                super.startElement(uri, localName, qName, attrs);
-            }
-        }
-        public void endElement(String namespaceURI,
-                               String localName, String qName) throws SAXException {
-            super.endElement(namespaceURI, localName, qName);
-            if (!cancelNestedActions && !noResultAction && !resultAction) {
-                readInvalidError("NVDLReader.NoActionError");
-            }
-        }
-        ActionsHandler(BaseHandler bh, NVDLRule baseRule) {
-            super(bh);
-            this.baseRule = baseRule;
-        }
-    }
-
-    private SchemaLoader newSchemaLoader(String schemaType) {
-        return new SchemaLoader(locator.getSystemId(), newLocation());
-    }
-
-    private class ValidateHandler extends ActionBaseHandler {
-        private final NVDLValidateAction validateAction;
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attrs) throws SAXException {
-            if (isForeign(uri)) {
-                super.startElement(uri, localName, qName, attrs);
-            } else if (localName.equals("option")) {
-                if (actionBaseState > MESSAGE_OPTION_APPEARED) {
-                    readInvalidError("NVDLReader.OptionBeforeSchemaError");
-                }
-                actionBaseState = MESSAGE_OPTION_APPEARED;
-                AtRet[] ars = new AtRet[3];
-                ars[0] = new AtRet("name");
-                ars[1] = new AtRet("arg");
-                ars[2] = new AtRet("mustSupport");
-                getAttrs(attrs, ars);
-                if (ars[0].value == null) {
-                    readInvalidError("NVDLReader.OptionHasNameError");
-                }
-                // Simplification 6.4.5
-                boolean mustSupport = parseXSDBoolean(ars[2].value, false);
-                validateAction.addOption(ars[0].value, ars[1].value, mustSupport);
-                setHandler(new WSSkipHandler(this));
-            } else if (localName.equals("schema")) {
-                if (validateAction.getSchemaIRI() != null) {
-                    readInvalidError("NVDLReader.SchemaAttributeSpecifiedError");
-                }
-                if (actionBaseState > SCHEMA_APPEARED) {
-                    readInvalidError("NVDLReader.SchemaBeforeModeOrContextError");
-                }
-                actionBaseState = SCHEMA_APPEARED;
-                parseSchema(this, validateAction, attrs);
-            } else {
-                super.startElement(uri, localName, qName, attrs);
-            }
-        }
-
-        public void endElement(String namespaceURI,
-                               String localName, String qName) throws SAXException {
-            super.endElement(namespaceURI, localName, qName);
-            // schema element or attribute check.
-            if (!validateAction.isSchamaSpecified()) {
-                readInvalidError("NVDLReader.ValidateHasSchemaError");
-            }
-        }
-
-        ValidateHandler(BaseHandler bh, NVDLValidateAction action) {
-            super(bh, action);
-            this.validateAction = action;
-        }
-    }
-
-    private class ActionBaseHandler extends WSSkipHandler {
-        private final NVDLAction action;
-
-        protected static final int INITIAL = 0;
-        protected static final int MESSAGE_OPTION_APPEARED = 1;
-        protected static final int SCHEMA_APPEARED = 2;
-        protected static final int MODEUSAGE1_APPEARED = 3;
-        protected static final int CONTEXT_APPEARED = 4;
-        protected int actionBaseState = INITIAL;
-
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attrs) throws SAXException {
-            if (isForeign(uri)) {
-                setHandler(new ForeignSkipHandler(this));
-                return;
-            }
-            if (localName.equals("message")) {
-                if (actionBaseState > MESSAGE_OPTION_APPEARED) {
-                    readInvalidError("NVDLReader.MessageBeforeSchemaError");
-                }
-                actionBaseState = MESSAGE_OPTION_APPEARED;
-                parseMessage(this, action.getMessage(), attrs);
-            } else if (localName.equals("mode")) {
-                checkNestedMode(action);
-                if (actionBaseState > MODEUSAGE1_APPEARED) {
-                    readInvalidError("NVDLReader.ModeBeforeContextError");
-                }
-                actionBaseState = MODEUSAGE1_APPEARED;
-                action.setUseMode(parseNestedMode(this, attrs));
-            } else if (localName.equals("context")) {
-                actionBaseState = CONTEXT_APPEARED;
-                parseContext(this, action, attrs);
-            } else {
-                super.startElement(uri, localName, qName, attrs);
-            }
-        }
-
-        ActionBaseHandler(BaseHandler bh, NVDLAction action) {
-            super(bh);
-            this.action = action;
-        }
-    }
-
-    private void parseMessage(BaseHandler bh,
-                              NVDLMessage nm, Attributes attrs) {
-        String lang = attrs.getValue("xml:lang");
-        setHandler(new MessageHandler(bh, nm, lang));
-    }
-    private class MessageHandler extends BaseHandler {
-        private final NVDLMessage nm;
-        private final String lang;
-        private StringBuffer buf = new StringBuffer();
-
-        public void characters(char[] ch, int start, int length)
-            throws SAXException {
-            buf.append(ch, start, length);
-        }
-
-        public void endElement(String namespaceURI,
-                               String localName, String qName) throws SAXException {
-            super.endElement(namespaceURI, localName, qName);
-            nm.addMessage(lang, buf.toString());
-        }
-
-        MessageHandler(BaseHandler bh, NVDLMessage nm, String lang) {
-            super(bh);
-            this.nm = nm;
-            this.lang = lang;
-        }
-    }
-
-    private void parseSchema(BaseHandler bh,
-                             NVDLValidateAction action,
-                             Attributes attrs) throws SAXException {
-        checkAttrs(attrs);
-        setHandler(new SchemaHandler(bh, action));
-    }
-    private class SchemaHandler extends WSSkipHandler {
-        private NVDLValidateAction action;
-        private int level;
-        private SchemaFactory schemaFactory;
-        private SchemaReaderProxy proxyForSchemaAttribute;
-        private SchemaReaderProxy proxyForSchemaElement;
-
-        public void setDocumentLocator(Locator locator) {
-            if (proxyForSchemaAttribute != null) {
-                proxyForSchemaAttribute.setDocumentLocator(locator);
-            }
-            if (proxyForSchemaElement != null) {
-                proxyForSchemaElement.setDocumentLocator(locator);
-            }
-            super.setDocumentLocator(locator);
-        }
-
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attributes) throws SAXException {
-            if (level == 0) {
-                Log.debug("Try to create schemaFactory for " + uri);
-                try {
-                    schemaFactory = SchemaFactory.newInstance(uri);
-                    schemaFactory.setErrorHandler(eh);
-                } catch (IllegalArgumentException e){
-                    readInvalidError("NVDLReader.SchemaImplementationNotFoundError",
-                                     new Object[] {uri});
-                    return;
-                }
-                if (proxyForSchemaAttribute != null) {
-                    proxyForSchemaAttribute.begin(schemaFactory,
-                                                  new InputSource(locator.getSystemId()),
-                                                  uri, true);
-                }
-                if (proxyForSchemaElement != null) {
-                    proxyForSchemaElement.begin(schemaFactory,
-                                                new InputSource(locator.getSystemId()),
-                                                uri, false);
-                }
-            }
-                if (proxyForSchemaAttribute != null) {
-                    proxyForSchemaAttribute.startElement(uri, localName, qName, attributes);
-                }
-                if (proxyForSchemaElement != null) {
-                    proxyForSchemaElement.startElement(uri, localName, qName, attributes);
-                }
-            level++;
-        }
-
-        public void characters(char[] ch,
-                               int start,
-                               int length)
-            throws SAXException {
-            if (proxyForSchemaAttribute != null) {
-                proxyForSchemaAttribute.characters(ch, start, length);
-            }
-            if (proxyForSchemaElement != null) {
-                proxyForSchemaElement.characters(ch, start, length);
-            }
-        }
-
-        public void endElement(String uri,
-                               String localName,
-                               String qName) throws SAXException {
-            if (level == 0) {
-                if (proxyForSchemaAttribute != null) {
-                    proxyForSchemaAttribute.end();
-                    if (proxyForSchemaAttribute.getSchema() == null) {
-                        readInvalidError("NVDLReader.SchemaReadError");
-                    }
-                    action.setSchema(proxyForSchemaAttribute.getSchema(), true);
-                }
-                if (proxyForSchemaElement != null) {
-                    proxyForSchemaElement.end();
-                    if (proxyForSchemaElement.getSchema() == null) {
-                        readInvalidError("NVDLReader.SchemaReadError");
-                    }
-                    action.setSchema(proxyForSchemaElement.getSchema(), false);
-                }
-                super.endElement(uri, localName, qName);
-            } else {
-                if (proxyForSchemaAttribute != null) {
-                    proxyForSchemaAttribute.endElement(uri, localName, qName);
-                }
-                if (proxyForSchemaElement != null) {
-                    proxyForSchemaElement.endElement(uri, localName, qName);
-                }
-                level--;
-            }
-        }
-
-        public void startPrefixMapping(String prefix,
-                                       String uri)
-            throws SAXException {
-            super.startPrefixMapping(prefix, uri);
-            if (proxyForSchemaAttribute != null) {
-                proxyForSchemaAttribute.startPrefixMapping(prefix, uri);
-            }
-            if (proxyForSchemaElement != null) {
-                proxyForSchemaElement.startPrefixMapping(prefix, uri);
-            }
-        }
-        public void endPrefixMapping(String prefix) throws SAXException {
-            super.endPrefixMapping(prefix);
-            if (proxyForSchemaAttribute != null) {
-                proxyForSchemaAttribute.endPrefixMapping(prefix);
-            }
-            if (proxyForSchemaElement != null) {
-                proxyForSchemaElement.endPrefixMapping(prefix);
-            }
-        }
-
-        public void processingInstruction(String target,
-                                          String data)
-            throws SAXException {
-            if (proxyForSchemaAttribute != null) {
-                proxyForSchemaAttribute.processingInstruction(target, data);
-            }
-            if (proxyForSchemaElement != null) {
-                proxyForSchemaElement.processingInstruction(target, data);
-            }
-        }
-
-    	SchemaHandler(BaseHandler bh,
-                      NVDLValidateAction action) {
-            super(bh);
-            this.action = action;
-            level = 0;
-
-            if (action.getBelongingRule().isTargetAttribute()) {
-                this.proxyForSchemaAttribute = SchemaReaderProxy.newProxy(locator, prefixMapper);
-                this.proxyForSchemaAttribute.setErrorHandler(eh);
-            }
-            if (action.getBelongingRule().isTargetElement()) {
-                this.proxyForSchemaElement = SchemaReaderProxy.newProxy(locator, prefixMapper);
-                this.proxyForSchemaElement.setErrorHandler(eh);
-            }
-    	}
-    }
-
-    private void parseContext(BaseHandler bh,
-                              NVDLAction action, Attributes attrs)
-        throws SAXException{
-        AtRet[] ars = new AtRet[2];
-        ars[0] = new AtRet("path");
-        ars[1] = new AtRet("useMode");
-        getAttrs(attrs, ars);
-        if (ars[0].value == null) {
-            readInvalidError("NVDLReader.ContextHasPathError");
-        }
-        setHandler(new ContextHandler(bh, action, ars[0].value, ars[1].value));
-    }
-    private class ContextHandler extends WSSkipHandler {
-        private final NVDLAction action;
-        private NVDLMode mode;
-        private final String useModeName;
-        private final String path;
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attrs) throws SAXException {
-            if (isForeign(uri)) {
-                setHandler(new ForeignSkipHandler(this));
-                return;
-            }
-            if (localName.equals("mode")) {
-                if (useModeName != null) {
-                    readInvalidError("NVDLReader.ContextHasModeButUseModeIsSpecifiedError");
-                }
-                mode = parseNestedMode(this, attrs);
-            } else {
-                super.startElement(uri, localName, qName, attrs);
-            }
-        }
-
-        public void endElement(String namespaceURI,
-                               String localName, String qName) throws SAXException {
-            super.endElement(namespaceURI, localName, qName);
-            try {
-                if (mode == null) {
-                    if (useModeName == null) {
-                        readInvalidError("NVDLReader.ContextHasUseModeOrModeError");
-                    }
-                    action.addContext(path, useModeName);
-                } else {
-                    action.addContext(path, mode);
-                }
-            } catch (NVDLException e) {
-                readInvalidError(e.getMessage());
-            }
-        }
-
-        ContextHandler(BaseHandler bh, NVDLAction action,
-                       String path, String useModeName) {
-            super(bh);
-            this.action = action;
-            this.path = path;
-            this.useModeName = useModeName;
-        }
-    }
-
-
-    private class RulesHandler extends RuleHandler {
-        private static final int INITIAL = 0;
-        private static final int TRIGGER_APPEARED = 1;
-        private static final int RULE_APPEARED = 2;
-        private static final int MODE_APPEARED = 3;
-        private int rulesState = INITIAL;
-
-        private void parseTrigger(Attributes attrs) throws SAXException {
-            AtRet[] ars = new AtRet[2];
-            ars[0] = new AtRet("ns");
-            ars[1] = new AtRet("nameList");
-            getAttrs(attrs, ars);
-            if (ars[0].value == null) {
-                readInvalidError("NVDLReader.TriggerHasNSError");
-            }
-            if (ars[1].value == null) {
-                readInvalidError("NVDLReader.TriggerHasNameListError");
-            }
-            rules.getTriggerManager().addTrigger(ars[0].value,
-                                                 splitList(ars[1].value));
-            // empty element.
-            setHandler(new WSSkipHandler(this));
-        }
-
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attrs) throws SAXException {
-            if (isForeign(uri)) {
-                setHandler(new ForeignSkipHandler(this));
-                return;
-            }
-            if (localName.equals("trigger")) {
-                if (rulesState > TRIGGER_APPEARED) {
-                    readInvalidError("NVDLReader.TriggerIsFirstError");
-                }
-                rulesState = TRIGGER_APPEARED;
-                parseTrigger(attrs);
-            } else if (localName.equals("mode")) {
-                if (rulesState == RULE_APPEARED) {
-                    readInvalidError("NVDLReader.ModeIsAfterRuleError");
-                }
-                rulesState = MODE_APPEARED;
-               	parseMode(this, attrs);
-            } else {
-                // Simplification 6.4.7
-                NVDLRule rule = parseRule(localName, attrs);
-                if (rule == null) {
-                    super.startElement(uri, localName, qName, attrs);
-                    return;
-                }
-                if (rulesState == MODE_APPEARED) {
-                    readInvalidError("NVDLReader.RuleIsAfterModeError",
-                                     new Object[] {localName});
-                }
-                rulesState = RULE_APPEARED;
-                if (rules.getStartModeName() != null) {
-                    readInvalidError("NVDLReader.StartModeError");
-                }
-                NVDLMode mode = rules.getStartMode();
-                if (mode == null) {
-                    mode = new NVDLMode("nested start mode ");
-                    mode.setLocation(rule.getLocation());
-                    rules.setStartMode(mode);
-                }
-                addRule(mode, rule);
-            }
-        }
-
-        RulesHandler(BaseHandler bh) {
-            super(bh);
-        }
-    }
-
-    // must have name;
-    private NVDLMode parseMode(BaseHandler ph, Attributes attrs)
-        throws SAXException {
-        AtRet[] ars = new AtRet[1];
-        ars[0] = new AtRet("name");
-        getAttrs(attrs, ars);
-        if (ars[0].value == null) {
-            readInvalidError("NVDLReader.ModeInRulesHasName");
-        }
-        NVDLMode mode = new NVDLMode(ars[0].value);
-        setLocation(mode);
-        if (rules.getMode(mode.name) != null) {
-            readInvalidError("NVDLReader.ModeNameConflictError",
-                             new Object[] {mode.name});
-        }
-        setHandler(new ModeHandler(ph, mode));
-        rules.putMode(mode);
-
-        return mode;
-    }
-    // optionally has name
-    private NVDLMode parseIncludedMode(BaseHandler ph, Attributes attrs,
-                                       NVDLMode parentMode)
-        throws SAXException {
-        AtRet[] ars = new AtRet[1];
-        ars[0] = new AtRet("name");
-        getAttrs(attrs, ars);
-        NVDLMode mode = new NVDLMode(ars[0].value);
-        setLocation(mode);
-        setHandler(new ModeHandler(ph, mode));
-        parentMode.addIncludedMode(mode);
-        return mode;
-    }
-    // has no name.
-    private NVDLMode parseNestedMode(BaseHandler ph, Attributes attrs)
-        throws SAXException {
-        checkAttrs(attrs);
-        NVDLMode mode = new NVDLMode(uniqueModeName());
-        setLocation(mode);
-        setHandler(new ModeHandler(ph, mode));
-        return mode;
-    }
-    private class ModeHandler extends RuleHandler {
-        private final NVDLMode mode;
-        private static final int INITIAL = 0;
-        private static final int INCLUDEDMODE_APPEARED = 1;
-        private static final int RULE_APPEARED = 2;
-        private int modeState = INITIAL;
-
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attrs) throws SAXException {
-            if (isForeign(uri)) {
-                setHandler(new ForeignSkipHandler(this));
-                return;
-            }
-            if (localName.equals("mode")) {
-                if (modeState > INCLUDEDMODE_APPEARED) {
-                    readInvalidError("NVDLReader.IncludedModeAfterRuleError");
-                }
-                parseIncludedMode(this, attrs, mode);
-                modeState = INCLUDEDMODE_APPEARED;
-            } else {
-                NVDLRule rule = parseRule(localName, attrs);
-                if (rule == null) {
-                    super.startElement(uri, localName, qName, attrs);
-                } else {
-                    addRule(mode, rule);
-                    modeState = RULE_APPEARED;
-                }
-            }
-        }
-
-        ModeHandler(BaseHandler bh, NVDLMode mode) {
-            super(bh);
-            this.mode = mode;
-        }
-    }
-
-    public NVDLRules parse(InputSource is) throws NVDLReaderException, IOException {
-        this.errorCounter = 0;
-        try {
-            reader.parse(is);
-            if (errorCounter > 0) {
-                readInvalidError("NVDLReader.NVDLHasError",
-                                 new Object[] {new Integer(errorCounter)});
-                return null;
-            }
-            NVDLSimplifier simplifier = new NVDLSimplifier(rules, eh);
-            try {
-                simplifier.traverse(rules);
-            } catch (NVDLModelException e) {
-                throw new NVDLReaderException(e);
-            }
-            if (simplifier.getErrorCount() > 0) {
-                readInvalidError("NVDLReader.NVDLHasError",
-                                 new Object[] {new Integer(simplifier.getErrorCount())});
-                return null;
-            }
-        } catch (SAXException e) {
-            Exception ei = e.getException();
-            if (ei instanceof NVDLReaderException) {
-                throw (NVDLReaderException) ei;
-            }
-            throw new NVDLReaderException(e);
-        }
-        return rules;
-    }
-
-    public static SAXParser newSAXParser() throws SAXException {
-        SAXParserFactory pf = SAXParserFactory.newInstance();
-        try {
-			pf.setFeature("http://xml.org/sax/features/namespaces", true);
-	        pf.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
-	        pf.setXIncludeAware(true);
-	        return pf.newSAXParser();
-		} catch (ParserConfigurationException e) {
-			e.printStackTrace();
-			return null;
-		}
-    }
-
-    public NVDLSAXReader(SAXParser parser) throws SAXException {
-        this(parser, null);
-    }
-
-    public NVDLSAXReader(ErrorHandler eh) throws SAXException {
-        this(newSAXParser(), eh);
-    }
-	
-    public NVDLSAXReader(SAXParser parser, ErrorHandler eh) throws SAXException {
-        this.reader = parser.getXMLReader();
-        if (eh != null) {
-            this.eh = eh;
-        } else {
-            this.eh = DefaultErrorHandler.getErrorHandler();
-        }
-       setHandler(new InitialHandler());
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/NVDLSimplifier.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/NVDLSimplifier.java
deleted file mode 100644
index e197b4c..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/NVDLSimplifier.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.reader;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.model.Location;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLActionManager;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLMode;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLModel;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLModelException;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLModelTraverse;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLNoResultAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRejectAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLResultAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRule;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRules;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-
-/**
- * The <code>NVDLSimplifier</code> deals with the simplification of NVDL.
- */
-public class NVDLSimplifier extends NVDLModelTraverse {
-    private NVDLRules rules;
-    private NVDLMode currentMode;
-    private ErrorHandler eh;
-    private int errorCounter;
-
-    private void error(NVDLModel m, String mes) throws NVDLModelException {
-        error(m, mes, new Object[0]);
-    }
-
-    private void error(NVDLModel m, String mes, Object[] args) throws NVDLModelException {
-        error(m, new NVDLReaderException(mes, args));
-    }
-
-    private void error(NVDLModel m, NVDLReaderException e) throws NVDLModelException {
-        errorCounter++;
-        Location l = m.getLocation();
-        try {
-            eh.error(new SAXParseException(e.getMessage(),
-                                           "", l.iri, l.line, l.pos, e));
-        } catch (SAXException se) {
-            throw new NVDLModelException(se);
-        }
-    }
-
-    private String generateUniqueActionID() {
-        String id;
-        for (int i = 1; ; i++) {
-            id = "N" + i;
-            if (rules.getAction(id) == null) break;
-        }
-        return id;
-    }
-
-
-    // Simplification 6.4.12
-    private void addDefaultAnyNamespace(NVDLMode mode) {
-        if (mode.getAnyNamespaceRuleForElement() == null) {
-            NVDLRule r = new NVDLRule(true, "", ' ', true, false);
-            NVDLActionManager am = r.getActionManager();
-            String id = generateUniqueActionID();
-            NVDLNoResultAction a = new NVDLRejectAction(id, mode.name, r);
-            r.copyLocation(mode);
-            a.copyLocation(mode);
-            a.setUseMode(mode);
-            am.addNoResultAction(a);
-            mode.addRule(r);
-        }
-        if (mode.getAnyNamespaceRuleForAttribute() == null) {
-            NVDLRule r = new NVDLRule(true, "", ' ', false, true);
-            NVDLActionManager am = r.getActionManager();
-            String id = generateUniqueActionID();
-            NVDLResultAction a = new NVDLResultAction(id, mode.name,
-                                                      NVDLResultAction.TYPE_ATTACH, r);
-            r.copyLocation(mode);
-            a.copyLocation(mode);
-            a.setUseMode(mode);
-            am.setResultAction(a);
-            mode.addRule(r);
-        }
-    }
-
-    public NVDLModel visitNVDLMode(NVDLMode mode)
-        throws NVDLModelException {
-        if (checkTraversed(mode)) return null;
-        currentMode = mode;
-        mode.simplifyInclusion();
-        addDefaultAnyNamespace(mode);
-        return super.visitNVDLMode(mode);
-    }
-
-    private void setUseMode(NVDLAction action) throws NVDLModelException {
-        if (action.getUseMode() == null) {
-            String useModeName = action.getUseModeName();
-            if (useModeName == null) {
-                // Simplification 6.4.14
-                action.setUseMode(currentMode);
-            } else {
-                NVDLMode mode = rules.getMode(useModeName);
-                if (mode == null) {
-                    error(action, "NVDLSimplifier.ModeIsNotDefinedError",
-                          new Object[] {useModeName});
-                }
-                action.setUseMode(mode);
-            }
-        }
-        List contexts = action.getContextsList();
-        Iterator it = contexts.iterator();
-        while (it.hasNext()) {
-            NVDLAction.Context c = (NVDLAction.Context) it.next();
-            if (c.useMode == null) {
-                assert c.useModeName != null;
-                NVDLMode mode = rules.getMode(c.useModeName);
-                if (mode == null) {
-                    error(action, "NVDLSimplifier.ModeIsNotDefinedError",
-                          new Object[] {c.useModeName});
-                }
-                c.useMode = mode;
-            }
-        }
-        
-    }
-
-    public NVDLModel visitNVDLNoResultAction(NVDLNoResultAction action)
-        throws NVDLModelException {
-        if (checkTraversed(action)) return null;
-        setUseMode(action);
-        return super.visitNVDLNoResultAction(action);
-    }
-
-    public NVDLModel visitNVDLResultAction(NVDLResultAction action)
-        throws NVDLModelException {
-        if (checkTraversed(action)) return null;
-        setUseMode(action);
-        return super.visitNVDLResultAction(action);
-    }
-
-    public NVDLModel visitNVDLRules(NVDLRules rules)
-        throws NVDLModelException {
-        if (rules.getStartMode() == null) {
-            String name = rules.getStartModeName();
-            if (name == null) {
-                error(rules, "NVDLSimplifier.RulesHasNoStartModeError");
-            } else {
-                NVDLMode mode = rules.getMode(name);
-                if (mode == null) {
-                    error(rules, "NVDLSimplifier.StartModeIsNotDefinedError",
-                          new Object[] {name});
-                }
-                rules.setStartMode(mode);
-            }
-        }
-        return super.visitNVDLRules(rules);
-    }
-
-    public int getErrorCount() {
-        return errorCounter;
-    }
-
-    public NVDLSimplifier(NVDLRules rules, ErrorHandler eh) {
-        this.rules = rules;
-        this.eh = eh;
-        this.errorCounter = 0;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/RELAXNGAttributeSchemaRewriter.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/RELAXNGAttributeSchemaRewriter.java
deleted file mode 100644
index 02b5308..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/RELAXNGAttributeSchemaRewriter.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.reader;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.util.EmptyAttributes;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.PrefixMapper;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-
-public class RELAXNGAttributeSchemaRewriter implements SchemaRewriter {
-    private static final String RELAX_NG_DEFAULT_PREFIX = "relaxnginstanceForSchemaRewriter";
-    public static final String RELAX_NG_NAMESPACE_URI = "http://relaxng.org/ns/structure/1.0";
-
-    private ContentHandler h;
-    private PrefixMapper prefixMapper;
-
-    private PrefixMapper.StartElementToken setFor1stElement;
-
-    private int level = 0;
-
-    public void setup(ContentHandler h,
-                      PrefixMapper prefixMapper) {
-        this.h = h;
-        this.prefixMapper = prefixMapper;
-    }
-
-    public void startElement(String uri,
-                             String localName,
-                             String qName,
-                             Attributes attrs) throws SAXException {
-        if (level == 0) {
-            setFor1stElement =
-                prefixMapper.sendStartElement(h,
-                                              RELAX_NG_NAMESPACE_URI,
-                                              "element",
-                                              RELAX_NG_DEFAULT_PREFIX,
-                                              EmptyAttributes.getInstance());
-            prefixMapper.sendEmptyElement(h,
-                                          RELAX_NG_NAMESPACE_URI,
-                                          "anyName",
-                                          RELAX_NG_DEFAULT_PREFIX,
-                                          EmptyAttributes.getInstance());
-        }
-        h.startElement(uri, localName, qName, attrs);
-        level++;
-    }
-
-    public void endElement(String uri,
-                           String localName,
-                           String qName) throws SAXException {
-        h.endElement(uri, localName, qName);
-        level--;
-        if (level == 0) {
-            prefixMapper.sendEndElement(h, setFor1stElement);
-        }
-        return;
-    }
-
-    public void characters(char[] ch,
-                           int start,
-                           int length)
-        throws SAXException {
-        h.characters(ch, start, length);
-    }
-
-    public void endDocument() throws SAXException {
-        h.endDocument();
-    }
-
-    public void endPrefixMapping(String prefix)
-        throws SAXException {
-        h.endPrefixMapping(prefix);
-    }
-
-    public void ignorableWhitespace(char[] ch,
-                                    int start,
-                                    int length)
-        throws SAXException {
-        h.ignorableWhitespace(ch, start, length);
-    }
-
-    public void processingInstruction(String target,
-                                      String data) throws SAXException {
-        h.processingInstruction(target, data);
-    }
-
-    public void setDocumentLocator(Locator l) {
-        h.setDocumentLocator(l);
-    }
-
-    public void skippedEntity(String name) throws SAXException {
-        h.skippedEntity(name);
-    }
-
-    public void startDocument() throws SAXException {
-        h.startDocument();
-    }
-
-    public void startPrefixMapping(String prefix, String uri)
-        throws SAXException {
-        h.startPrefixMapping(prefix, uri);
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/SchemaLoader.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/SchemaLoader.java
deleted file mode 100644
index 48f9301..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/SchemaLoader.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.reader;
-
-import java.io.IOException;
-import java.net.URL;
-
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.NVDLException;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.Location;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLValidateAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.Log;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.PrefixMapper;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-
-/**
- * The <code>SchemaLoader</code> is a schema loader class.
- */
-class SchemaLoader implements NVDLValidateAction.SchemaLoader {
-    private final String baseIRI;
-    private String schemaNS;
-    // private Location loc;
-
-    private void detectSchema(URL schemaURL) throws NVDLException {
-        try {
-            schemaNS = null;
-            XMLReader r = XMLReaderFactory.createXMLReader();
-            r.setContentHandler(new DefaultHandler() {
-                public void startElement(String uri,
-                                         String localName,
-                                         String qName,
-                                         Attributes attributes)
-                    throws SAXException {
-                    schemaNS = uri;
-                    throw new SAXException("stop");
-                }
-            });
-            r.parse(schemaURL.toString());
-        } catch (Exception e) {
-            if (e instanceof IOException) {
-                throw new NVDLException("SchemaLoader.OpenSchemaIOError",
-                                        new Object[] {e.getLocalizedMessage()});
-            }
-        }
-        if (schemaNS == null) {
-            throw new NVDLException("SchemaLoader.SchemaTypeDetectionError",
-                                    new Object[] {schemaURL});
-        }
-        Log.debug("Detected the schema type:" + schemaNS + " in " + schemaURL);
-    }
-
-    private static class SAXLoader implements ContentHandler {
-        private final SchemaReaderProxy schemaReaderProxy;
-
-        Schema getSchema(SchemaFactory sf, URL schemaURL, String schemaNS, boolean forAttribute)
-            throws SAXException, IOException {
-            String systemId = schemaURL.toString();
-            schemaReaderProxy.begin(sf, new InputSource(systemId), schemaNS, forAttribute);
-            XMLReader r = XMLReaderFactory.createXMLReader();
-            r.setFeature("http://xml.org/sax/features/namespaces", true);
-            r.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
-            r.setContentHandler(this);
-            r.parse(systemId);
-            schemaReaderProxy.end();
-            return schemaReaderProxy.getSchema();
-        }
-
-        SAXLoader(SchemaReaderProxy proxy) {
-            this.schemaReaderProxy = proxy;
-        }
-
-        public void characters(char[] ch,
-                               int start,
-                               int length)
-            throws SAXException {
-            schemaReaderProxy.characters(ch, start, length);
-        }
-
-        public void endDocument() throws SAXException {
-        }
-
-        public void endElement(String uri,
-                               String localName,
-                               String qName) throws SAXException {
-            schemaReaderProxy.endElement(uri, localName, qName);
-        }
-
-        public void endPrefixMapping(String prefix)
-            throws SAXException {
-            schemaReaderProxy.endPrefixMapping(prefix);
-        }
-
-        public void ignorableWhitespace(char[] arg0, int arg1, int arg2)
-            throws SAXException {
-        }
-
-        public void processingInstruction(String target,
-                                          String data) 
-            throws SAXException {
-            schemaReaderProxy.processingInstruction(target, data);
-        }
-
-        public void setDocumentLocator(Locator locator) {
-            schemaReaderProxy.setDocumentLocator(locator);
-        }
-
-        public void skippedEntity(String arg0) throws SAXException {
-        }
-
-        public void startDocument() throws SAXException {
-        }
-
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attributes) throws SAXException {
-            schemaReaderProxy.startElement(uri, localName, qName, attributes);
-        }
-
-        public void startPrefixMapping(String prefix,
-                                       String uri) 
-            throws SAXException {
-            schemaReaderProxy.startPrefixMapping(prefix, uri);
-        }
-    }
-
-    public Schema load(NVDLValidateAction validateAction, boolean forAttribute)
-        throws NVDLException {
-        String schemaIRI = validateAction.getSchemaIRI();
-        // String schemaType = validateAction.getSchemaType();
-        if (schemaIRI == null) return null;
-        URL schemaURL;
-        try {
-            URL baseURL = new URL(baseIRI);
-            schemaURL = new URL(baseURL, schemaIRI);
-
-            detectSchema(schemaURL);
-            SchemaFactory sf = SchemaFactory.newInstance(schemaNS);
-            Log.debug("Try to open schema:" + schemaURL);
-
-            PrefixMapper prefixMapper = new PrefixMapper();
-            SchemaReaderProxy schemaReaderProxy = SchemaReaderProxy.newProxy(null, prefixMapper);
-
-            SAXLoader loader = new SAXLoader(schemaReaderProxy);
-            
-            return loader.getSchema(sf, schemaURL, schemaNS, forAttribute);
-        } catch (Exception e) {
-            if (e instanceof IllegalArgumentException) {
-                throw new NVDLException("No appropriate validator implementation for "
-                                        + schemaNS);
-            } else {
-                throw new NVDLException(e);
-            }
-        }
-    }
-
-    SchemaLoader(String baseIRI, Location loc) {
-        this.baseIRI = baseIRI;
-        // this.loc = loc;
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/SchemaReaderProxy.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/SchemaReaderProxy.java
deleted file mode 100644
index 6507c98..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/SchemaReaderProxy.java
+++ /dev/null
@@ -1,441 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.reader;
-
-import java.io.IOException;
-
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.util.PrefixMapper;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.DTDHandler;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
-import org.xml.sax.XMLReader;
-
-
-/**
- * The <code>SchemaReaderProxy</code> works as a proxy to
- * delegate SAX events to SchemaFactory's source.
- */
-class SchemaReaderProxy
-    extends Thread implements XMLReader {
-
-    /**************************************************
-                    XMLReader Proxy
-    **************************************************/
-
-    public boolean getFeature(String name)
-        throws SAXNotRecognizedException, SAXNotSupportedException {
-        return false;
-    }
-    public void setFeature(String name, boolean value)
-        throws SAXNotRecognizedException, SAXNotSupportedException {
-    }
-
-    public Object getProperty(String name)
-        throws SAXNotRecognizedException, SAXNotSupportedException {
-        return null;
-    }
-
-    public void setProperty(String name, Object value)
-        throws SAXNotRecognizedException, SAXNotSupportedException {
-    }
-
-    public void setEntityResolver(EntityResolver resolver) {
-    }
-
-    public EntityResolver getEntityResolver() {
-        return null;
-    }
-
-    public void setDTDHandler(DTDHandler handler) {
-    }
-
-    public DTDHandler getDTDHandler() {
-        return null;
-    }
-
-    ContentHandler h;
-    synchronized public void setContentHandler(ContentHandler h) {
-        this.h = h;
-        if (schemaRewriter != null) {
-            schemaRewriter.setup(h, prefixMapper);
-        }
-    }
-
-    public ContentHandler getContentHandler() {
-        return h;
-    }
-
-    ErrorHandler schemaReaderProxyErrorHandler = null;
-    public void setErrorHandler(ErrorHandler eh) {
-        if (eh == null) throw new NullPointerException();
-        this.schemaReaderProxyErrorHandler = eh;
-    }
-
-    public ErrorHandler getErrorHandler() {
-        return schemaReaderProxyErrorHandler;
-    }
-
-    public void parse(InputSource input)
-        throws IOException, SAXException {
-        startParse();
-    }
-
-    public void parse(String systemId)
-        throws IOException, SAXException {
-        startParse();            
-    }
-
-    /**************************************************
-                            Proxy Handler
-    **************************************************/
-    static private final int CMD_SETDOCUMENTLOCATOR = 1;
-    static private final int CMD_STARTELEMENT = 2;
-    static private final int CMD_ENDELEMENT = 3;
-    static private final int CMD_CHARACTERS = 4;
-    static private final int CMD_STARTPREFIXMAPPING = 5;
-    static private final int CMD_ENDPREFIXMAPPING = 6;
-    static private final int CMD_PROCESSINGINSTRUCTION = 7;
-    static private final int CMD_END = 8;
-
-    private int command;
-    private int exitStatus;
-    private boolean started = false;
-
-    private SAXException exception;
-    private Locator locator;
-    private PrefixMapper prefixMapper;
-
-    private SchemaRewriter schemaRewriter;
-
-    private SchemaFactory schemaFactory;
-    private Schema schema;
-
-    public Schema getSchema() {
-        return schema;
-    }
-
-    private String uri;
-    private String localName;
-    private String qName;
-    private Attributes attributes;
-    private char[] ch;
-    private int start;
-    private int length;
-    private String prefix;
-    private String target;
-    private String data;
-
-    synchronized private void sendCmd(int cmd) {
-        if (!started) return;
-        if (exception != null) return;
-        command = cmd;
-        exitStatus = 0;
-        notify();
-        while (exitStatus == 0) {
-            try {
-                wait();
-            } catch (InterruptedException e) {
-                continue;
-            }
-        }
-    }
-
-    private void checkException() throws SAXException {
-        if (exception != null) throw exception;
-    }
-
-    public void setDocumentLocator(Locator locator) {
-        this.locator = locator;
-        sendCmd(CMD_SETDOCUMENTLOCATOR);
-    }
-
-    public void startElement(String uri,
-                             String localName,
-                             String qName,
-                             Attributes attributes) throws SAXException {
-        this.uri = uri;
-        this.localName = localName;
-        this.qName = qName;
-        this.attributes = attributes;
-        sendCmd(CMD_STARTELEMENT);
-        checkException();
-    }
-
-    public void characters(char[] ch,
-                           int start,
-                           int length)
-        throws SAXException {
-        this.ch = ch;
-        this.start = start;
-        this.length = length;
-        sendCmd(CMD_CHARACTERS);
-        checkException();
-    }
-
-    public void endElement(String uri,
-                           String localName,
-                           String qName) throws SAXException {
-        this.uri = uri;
-        this.localName = localName;
-        this.qName = qName;
-        sendCmd(CMD_ENDELEMENT);
-        checkException();
-    }
-
-    public void startPrefixMapping(String prefix,
-                                   String uri)
-        throws SAXException {
-        this.prefix = prefix;
-        this.uri = uri;
-        sendCmd(CMD_STARTPREFIXMAPPING);
-        checkException();
-    }
-
-    public void endPrefixMapping(String prefix)
-        throws SAXException {
-        this.prefix = prefix;
-        sendCmd(CMD_ENDPREFIXMAPPING);
-        checkException();
-    }
-
-    public void processingInstruction(String target,
-                                      String data)
-        throws SAXException {
-        this.target = target;
-        this.data = data;
-        sendCmd(CMD_PROCESSINGINSTRUCTION);
-        checkException();
-    }
-
-
-    // --------------------------------------------------------------------------------
-    // Proxy Content Handlers (private)
-    // --------------------------------------------------------------------------------
-
-    private void startElementI(String uri,
-                               String localName,
-                               String qName,
-                               Attributes attrs) throws SAXException {
-        if (schemaRewriter == null) {
-            h.startElement(uri, localName, qName, attrs);
-        } else {
-            schemaRewriter.startElement(uri, localName, qName, attrs);
-        }
-    }
-
-    private void endElementI(String uri,
-                             String localName,
-                             String qName) throws SAXException {
-        if (schemaRewriter == null) {
-            h.endElement(uri, localName, qName);
-        } else {
-            schemaRewriter.endElement(uri, localName, qName);
-        }
-    }
-
-    private void charactersI(char[] ch,
-                             int start,
-                             int length)
-        throws SAXException {
-        if (schemaRewriter == null) {
-            h.characters(ch, start, length);
-        } else {
-            schemaRewriter.characters(ch, start, length);
-        }
-    }
-
-    private void endDocumentI() throws SAXException {
-        if (schemaRewriter == null) {
-            h.endDocument();
-        } else {
-            schemaRewriter.endDocument();
-        }
-    }
-
-    private void endPrefixMappingI(String prefix)
-        throws SAXException {
-        if (schemaRewriter == null) {
-            h.endPrefixMapping(prefix);
-        } else {
-            schemaRewriter.endPrefixMapping(prefix);
-        }
-    }
-
-    @SuppressWarnings("unused")
-    private void ignorableWhitespaceI(char[] ch,
-                                      int start,
-                                      int length)
-        throws SAXException {
-        if (schemaRewriter == null) {
-            h.ignorableWhitespace(ch, start, length);
-        } else {
-            schemaRewriter.ignorableWhitespace(ch, start, length);
-        }
-    }
-
-    private void processingInstructionI(String target,
-                                        String data) throws SAXException {
-        if (schemaRewriter == null) {
-            h.processingInstruction(target, data);
-        } else {
-            schemaRewriter.processingInstruction(target, data);
-        }
-    }
-
-    private void setDocumentLocatorI(Locator l) {
-        if (schemaRewriter == null) {
-            h.setDocumentLocator(l);
-        } else {
-            schemaRewriter.setDocumentLocator(l);
-        }
-    }
-
-    @SuppressWarnings("unused")
-    private void skippedEntityI(String name) throws SAXException {
-        if (schemaRewriter == null) {
-            h.skippedEntity(name);
-        } else {
-            schemaRewriter.skippedEntity(name);
-        }
-    }
-
-    private void startDocumentI() throws SAXException {
-        if (schemaRewriter == null) {
-            h.startDocument();
-        } else {
-            schemaRewriter.startDocument();
-        }
-    }
-
-    private void startPrefixMappingI(String prefix, String uri)
-        throws SAXException {
-        if (schemaRewriter == null) {
-            h.startPrefixMapping(prefix, uri);
-        } else {
-            schemaRewriter.startPrefixMapping(prefix, uri);
-        }
-    }
-
-    // --------------------------------------------------------------------------------
-    // Input side 
-    // --------------------------------------------------------------------------------
-
-    synchronized private void startParse() throws SAXException {
-        if (h == null) throw new SAXException("Internal Error");
-        if (locator != null) setDocumentLocatorI(locator);
-        startDocumentI();
-        Object effectivePrefixMapping = prefixMapper.startEffectivePrefixMappings(h);
-        mainloop:
-        for (;;) {
-            while (exitStatus != 0) {
-                try {
-                    wait();
-                } catch (InterruptedException e) {
-                    continue;
-                }
-            }
-            try {
-                switch (command) {
-                case CMD_STARTELEMENT:
-                    startElementI(uri, localName, qName, attributes);
-                    break;
-                case CMD_ENDELEMENT:
-                    endElementI(uri, localName, qName);
-                    break;
-                case CMD_CHARACTERS:
-                    charactersI(ch, start, length);
-                    break;
-                case CMD_STARTPREFIXMAPPING:
-                    startPrefixMappingI(prefix, uri);
-                    break;
-                case CMD_ENDPREFIXMAPPING:
-                    endPrefixMappingI(prefix);
-                    break;
-                case CMD_PROCESSINGINSTRUCTION:
-                    processingInstructionI(target, data);
-                    break;
-                case CMD_SETDOCUMENTLOCATOR:
-                    setDocumentLocatorI(locator);
-                    break;
-                case CMD_END:
-                    break mainloop;
-                }
-            } catch (SAXException e) {
-                exception = e;
-            }
-            exitStatus = 1;
-            notify();
-        }
-        prefixMapper.endEffectivePrefixMappings(effectivePrefixMapping, h);
-        endDocumentI();
-    }
-
-    /**************************************************
-                     Thread Entry and Control Interface
-    **************************************************/
-    private SAXSource source;
-            
-    public void run() {
-        synchronized (this) {
-            try {
-                schema = schemaFactory.newSchema(source);
-            } catch (SAXException e) {
-                exception = e;
-            }
-            exitStatus = 2;
-            notify();
-        }
-    }
-
-    void begin(SchemaFactory schemaFactory, InputSource is,
-               String ns, boolean forAttribute) {
-        this.schemaFactory = schemaFactory;
-        source = new SAXSource(this, is);
-
-        if (forAttribute
-            && RELAXNGAttributeSchemaRewriter.RELAX_NG_NAMESPACE_URI.equals(ns)) {
-            schemaRewriter = new RELAXNGAttributeSchemaRewriter();
-        }
-
-        start();
-        started = true;
-    }
-
-    void end() throws SAXException {
-        sendCmd(CMD_END);
-        started = false;
-        checkException();
-    }
-
-    private SchemaReaderProxy(Locator locator, PrefixMapper prefixMapper) {
-        super("SchemaReaderProxy");
-        this.locator = locator;
-        this.schema = null;
-        this.prefixMapper = prefixMapper;
-    }
-
-    public static SchemaReaderProxy newProxy(Locator locator,
-                                             PrefixMapper prefixMapper) {
-        return new SchemaReaderProxy(locator, prefixMapper);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/SchemaRewriter.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/SchemaRewriter.java
deleted file mode 100644
index 5a86e3c..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/reader/SchemaRewriter.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.reader;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.util.PrefixMapper;
-import org.xml.sax.ContentHandler;
-
-
-
-
-public interface SchemaRewriter extends ContentHandler {
-    void setup(ContentHandler h,
-               PrefixMapper prefixMapper);
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/rec/NVDLReconstructionException.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/rec/NVDLReconstructionException.java
deleted file mode 100644
index f58415d..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/rec/NVDLReconstructionException.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.rec;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.NVDLException;
-
-/**
- * The <code>NVDLException</code> is the base exception class for NVDL.
- */
-public class NVDLReconstructionException extends NVDLException {
-    private static final long serialVersionUID = -3293151852894650069L;
-
-    public NVDLReconstructionException(String message) {
-        super(message);
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/rec/SAXReconstructor.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/rec/SAXReconstructor.java
deleted file mode 100644
index 9d4d65e..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/rec/SAXReconstructor.java
+++ /dev/null
@@ -1,529 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.rec;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.dispatcher.NVDLAttributes;
-import org.eclipse.actf.ai.xmlstore.nvdl.fm.ActionList;
-import org.eclipse.actf.ai.xmlstore.nvdl.fm.PDA;
-import org.eclipse.actf.ai.xmlstore.nvdl.fm.ActionList.InvalidIdException;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLConst;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLElement;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRules;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.PrefixMapper;
-import org.eclipse.actf.ai.xmlstore.nvdl.util.PrefixMapper.PrefixReturnVal;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.ext.LexicalHandler;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * The <code>NVDLSAXReconstructor</code> is a reconstructor for SAX interface.
- */
-
-public class SAXReconstructor {
-    private final NVDLRules rules;
-    private final PDA pda;
-    private ContentHandler output;
-
-    public void reset() {
-        currentElement = null;
-        pda.reset();
-    }
-
-    private ArrayList<Input> inputs = new ArrayList<Input>();
-
-    private NVDLElement currentElement;
-
-    private ActionList requestActionList;
-
-    private String waitingASNID;
-    private ArrayList<Attr> resultASNAttributes;
-
-    private NVDLElement createNVDLElement(String ns, String localName) {
-        return new NVDLElement(ns, localName,
-                               currentElement,
-                               rules.getTriggerManager(),
-                               0);
-    }
-
-    private PrefixMapper prefixMapper = new PrefixMapper();
-
-    private Input responsedInput;
-
-    private boolean finished;
-
-    private boolean checkAndWaitInactive() {
-        int size = inputs.size();
-        for (int i = 0; i < size; i++) {
-            Input input = inputs.get(i);
-            if (input.active) {
-                try {
-                    wait();
-                } catch (InterruptedException e) {
-                }
-                return false;
-            }
-        }
-        return true;
-    }
-
-    private synchronized void waitForInputReady() {
-        for (;;) {
-            if (checkAndWaitInactive()) return;
-        }
-    }
-
-    private Input selectInput() {
-        int size = inputs.size();
-        Input selectedInput = null;
-        int score = -1;
-        for (int i = 0; i < size; i++) {
-            Input input = inputs.get(i);
-
-            if (waitingASNID != null) {
-                if (!waitingASNID.equals(input.getExposingASNID())) continue;
-                resultASNAttributes = input.getASNAttributes();
-                waitingASNID = null;
-                // TODO: score!
-                return responsedInput;
-            }
-
-            ActionList al = input.getActionList();
-            if (al == null) continue;
-
-            if (requestActionList != null) {
-                if (requestActionList.getCount() != al.getCount()) continue;
-            }
-
-            NVDLElement tryElement = input.retrieveNextElement();
-            PDA.MatchResult mr = pda.matchActionList(tryElement, al);
-            if (mr == PDA.MatchResult.MATCH) {
-                int cscore = al.getPrecedence();
-                if (score < cscore) {
-                    selectedInput = input;
-                    score = cscore;
-                    // TODO
-                    System.err.println("Select(" + tryElement.ns + "):" + tryElement.localName);
-                    System.err.println(al);
-                    break;
-                }
-            }
-        }
-        return selectedInput;
-    }
-
-    // Stack list for currently active inputs.
-    private ArrayList<Input> activeInputList = new ArrayList<Input>();
-
-    private Input popActiveInput() {
-        int idx = activeInputList.size();
-        if (idx == 1) return null;
-        idx--;
-        activeInputList.remove(idx);
-        idx--;
-        return activeInputList.get(idx);
-    }
-
-    private Input getLastActiveInput() {
-        int idx = activeInputList.size();
-        if (idx == 0) return null;
-        return activeInputList.get(0);
-    }
-
-    private synchronized void startWorkerManage() throws NVDLReconstructionException {
-        for (;;) {
-            Input input;
-            if (finished) {
-                input = popActiveInput();
-            } else {
-                input = selectInput();
-                if (input != null) {
-                    activeInputList.add(input);
-                } else {
-                    StringBuffer buf = new StringBuffer("No Reconstruction Candidate:");
-
-                    if (requestActionList != null) {
-                        buf.append(requestActionList.toString());
-                    }
-                    System.err.println(buf);
-                    if (output instanceof LexicalHandler) {
-                        char[] bufch = buf.toString().toCharArray();
-                        try {
-                            ((LexicalHandler) output).comment(bufch, 0, bufch.length);
-                        } catch (SAXException e) {
-                        }
-                    }
-                    // throw new NVDLReconstructionException(buf.toString());
-                    input = getLastActiveInput();
-                }
-            }
-            if (input == null) return;
-
-            input.notifyActivation(true);
-            responsedInput = null;
-            do {
-                try {
-                    wait();
-                } catch (InterruptedException e) {
-                }
-            } while (responsedInput == null);
-        }
-    }
-
-    private synchronized void notifyCompletion(Input input,
-                                               boolean finished) {
-        this.finished = finished;
-        this.responsedInput = input;
-        notify();
-    }
-
-    private class Attr {
-        final String ns;
-        final String prefix;
-        final String localName;
-        final String value;
-        Attr(String ns, String qName, String value) {
-            this.ns = ns;
-            this.value = value;
-            int idx = qName.indexOf(':');
-            if (idx < 0) {
-                this.localName = qName;
-                this.prefix = "";
-            } else {
-                this.localName = qName.substring(idx + 1);
-                this.prefix = qName.substring(0, idx);
-            }
-        }
-    }
-
-    private class PrefixEntry {
-        final String prefix;
-        final String ns;
-        final PrefixEntry prev;
-        PrefixEntry(PrefixEntry prev, String prefix, String ns) {
-            this.prev = prev;
-            this.prefix = prefix;
-            this.ns = ns;
-        }
-        PrefixEntry(PrefixEntry prev) {
-            this.prev = prev;
-            this.prefix = null;
-            this.ns = null;
-        }
-    }
-
-    private class Input extends DefaultHandler {
-        // This is an internal variable
-        private boolean skipToNextElement;
-
-        // Temporary space for creating the next NVDL element.
-        private String nextNS;
-        private String localName;
-        private void setupNextElement(String ns, String localName) {
-            this.nextNS = ns;
-            this.localName = localName;
-        }
-
-        // accessed.
-        public NVDLElement retrieveNextElement() {
-            return createNVDLElement(nextNS, localName);
-        }
-
-        private PrefixEntry prefixList = null;
-        private void storePrefixMapping(String prefix, String ns) {
-            prefixMapper.startPrefixMapping(prefix, ns);
-            prefixList = new PrefixEntry(prefixList, prefix, ns);
-        }
-        private void sendStartPrefixMapping() throws SAXException {
-            PrefixEntry pe = prefixList;
-            prefixList = new PrefixEntry(prefixList);
-            for (; pe != null; pe = pe.prev) {
-                if (pe.prefix == null) return;
-                output.startPrefixMapping(pe.prefix, pe.ns);
-            }
-        }
-        private void sendEndPrefixMapping() throws SAXException {
-            for (PrefixEntry pe = prefixList; pe != null; pe = pe.prev) {
-                if (pe.prefix == null) {
-                    prefixList = pe.prev;
-                    return;
-                }
-                prefixMapper.endPrefixMapping(pe.prefix);
-                output.endPrefixMapping(pe.prefix);
-            }
-            prefixList = null;
-        }
-        
-        private void notifyCompletion(boolean finished) {
-            SAXReconstructor.this.notifyCompletion(this, finished);
-        }
-        
-        private boolean active = true;
-        private boolean finish;
-        // Internal variable used for notifying the activation.
-        private boolean activationFlag;
-        private synchronized boolean block(boolean finished) throws SAXException {
-            active = false; 
-            notifyCompletion(finished);
-            do {
-                try {
-                    wait();
-                } catch (InterruptedException e) {
-                }
-                if (finish) {
-                    throw new SAXException("Finished");
-                }
-            } while (!active);
-            return activationFlag;
-        }
-
-        synchronized void notifyActivation(boolean flag) {
-            this.active = true;
-            this.activationFlag = flag;
-            notify();
-        }
-
-        synchronized void notifyFinish() {
-            this.finish = true;
-            notify();
-        }
-
-
-        private ActionList actionList;
-        // accessed.
-        public ActionList getActionList() {
-            return actionList;
-        }
-
-        private String exposingASNID;
-        // accessed.
-        public String getExposingASNID() {
-            return exposingASNID;
-        }
-        private ArrayList<Attr> asnAttributes;
-        // accessed.
-        public ArrayList<Attr> getASNAttributes() {
-            return asnAttributes;
-        }
-
-        private ArrayList<Attr> waitASNAttributes(String asnID) throws SAXException {
-            waitingASNID = asnID;
-            if (!block(false)) return null;
-            return resultASNAttributes;
-        }
-
-        private String lastID;
-        private boolean isInSlotNode;
-        private int secLevel;
-        private ArrayList<Integer> secLevelStack = new ArrayList<Integer>();
-
-        private void pushSecLevel() {
-            secLevelStack.add(secLevel);
-        }
-
-        private void popSecLevel() {
-            int idx = secLevelStack.size() - 1;
-            secLevel = secLevelStack.get(idx);
-            secLevelStack.remove(idx);
-        }
-
-        private void setASNAttributes(Attributes attrs) {
-            String asnID = attrs.getValue(NVDLConst.INSTANCE_REC_NS,
-                                         NVDLConst.ASN_ID_ATTR);
-            if (asnID == null) return;
-            this.exposingASNID = asnID;
-            asnAttributes = new ArrayList<Attr>();
-            int len = attrs.getLength();
-            for (int i = 0; i < len; i++) {
-                String ns = attrs.getURI(i);
-                // Skip attributes derived from the NVDL instance namespaces.
-                if (ns.startsWith(NVDLConst.INSTANCE_NS_COMMON)) continue;
-                String qName = attrs.getQName(i);
-                String value = attrs.getValue(i);
-                Attr a = new Attr(ns, qName, value);
-                asnAttributes.add(a); 
-            }
-        }
-
-        private void emitStartElement(NVDLElement base,
-                                      String uri,
-                                      String localName,
-                                      String qName,
-                                      Attributes attrs) throws SAXException {
-            String asnID = attrs.getValue(NVDLConst.INSTANCE_REC_NS,
-                                          NVDLConst.ASN_ID_ATTR);
-            if (asnID != null) {
-                ArrayList<Attr> as = waitASNAttributes(asnID);
-                NVDLAttributes newAttrs = new NVDLAttributes(base, attrs);
-                Iterator<Attr> it = as.iterator();
-                while (it.hasNext()) {
-                    Attr a = it.next();
-                    PrefixReturnVal prv = prefixMapper.uniquePrefix(a.prefix, a.ns);
-                    if (prv.requireDecl) {
-                        storePrefixMapping(prv.prefix, a.ns);
-                    }
-                    String qNameA = prv.prefix + ":" + a.localName;
-                    newAttrs.addExtAttribute(a.ns, a.localName, qNameA, a.value);
-                }
-                attrs = newAttrs;
-            }
-            sendStartPrefixMapping();
-            output.startElement(uri, localName, qName, attrs);
-        }
-
-        private void skippingElement() throws SAXException {
-            if (skipToNextElement) {
-                this.actionList = null;
-                block(false);
-                skipToNextElement = false;
-            }
-        }
-
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attrs) throws SAXException {
-            if (!active) return;
-            if (uri.equals(NVDLConst.INSTANCE_REC_NS)) {
-                if (NVDLConst.SLOT_NODE_START_NAME.equals(localName)) {
-                    String id = attrs.getValue("", NVDLConst.SLOT_NODE_ID_ATTR);
-                    if (id != null) {
-                        lastID = id;
-                    }
-                    isInSlotNode = true;
-                }
-            } else if (NVDLConst.INSTANCE_NS.equals(uri)
-                       && NVDLConst.VIRTUALELEMENT_NAME.equals(localName)) {
-                setASNAttributes(attrs);
-                active = false;
-                notifyCompletion(false);
-            } else {
-                skippingElement();
-                String id = attrs.getValue(NVDLConst.INSTANCE_REC_NS,
-                                           NVDLConst.SECTION_ID_ATTR);
-                if (id != null) {
-                    try {
-                        this.actionList = new ActionList(rules, id);
-                    } catch (InvalidIdException e) {
-                        throw new SAXException(e);
-                    }
-                    setupNextElement(uri, localName);
-                    if (block(false)) {
-                        requestActionList = null;
-                        currentElement = retrieveNextElement();
-                        emitStartElement(currentElement, uri, localName, qName, attrs);
-                        // System.err.println("Output: " + qName);
-                        pushSecLevel();
-                        secLevel = 0;
-                        pda.startElement(currentElement);
-                    }
-                    return;
-                } else {
-                    currentElement = createNVDLElement(uri, localName);
-                    emitStartElement(currentElement, uri, localName, qName, attrs);
-                    // System.err.println("Output: " + qName);
-                    secLevel++;
-                    return;
-                }
-            }
-        }
-
-        public void endElement(String uri, String localName, String qName)
-            throws SAXException {
-            if (!active) return;
-            if (uri.equals(NVDLConst.INSTANCE_REC_NS)) {
-                if (NVDLConst.SLOT_NODE_START_NAME.equals(localName)) {
-                    skippingElement();
-                    try {
-                        requestActionList = new ActionList(rules, lastID);
-                    } catch (InvalidIdException e) {
-                        throw new SAXException(e);
-                    }
-                    skipToNextElement = true;
-                    skippingElement();
-                }
-            } else {
-                skippingElement();
-                output.endElement(uri, localName, qName);
-                sendEndPrefixMapping();
-                if (secLevel == 0) {
-                    // System.err.println("EndElement: " + qName);
-                    pda.endElement();
-                    currentElement = currentElement.parent;
-                    popSecLevel();
-                    block(true);
-                } else {
-                    currentElement = currentElement.parent;
-                    secLevel--;
-                }
-            }
-        }
-        
-        public void characters(char[] ch, int start, int length)
-            throws SAXException {
-            if (!active) return;
-            if (skipToNextElement) return;
-            output.characters(ch, start, length);
-        }
-        public void ignorableWhitespace(char[] ch,
-                                        int start,
-                                        int length) throws SAXException {
-            if (!active) return;
-            if (skipToNextElement) return;
-            output.ignorableWhitespace(ch, start, length);
-        }
-
-        @Override
-        public void endDocument() throws SAXException {
-            if (active) {
-                notifyCompletion(true);
-            }
-        }
-
-        @Override
-        public void startPrefixMapping(String prefix, String ns) throws SAXException {
-            storePrefixMapping(prefix, ns);
-        }
-
-        @Override
-        public void endPrefixMapping(String prefix) throws SAXException {
-        }
-    }
-
-    public ContentHandler requestInput() {
-        Input input = new Input();
-        inputs.add(input);
-        return input;
-    }
-
-    public void setOutput(ContentHandler output) {
-        this.output = output;
-    }
-
-    public void start() throws NVDLReconstructionException, SAXException {
-        output.startDocument();
-        waitForInputReady();
-        startWorkerManage();
-        output.endDocument();
-    }
-
-    public SAXReconstructor(NVDLRules rules) {
-        this.rules = rules;
-        this.pda = new PDA(rules);
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/ContentPrintHandler.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/ContentPrintHandler.java
deleted file mode 100644
index ba306e6..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/ContentPrintHandler.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.util;
-
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.text.MessageFormat;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * The <code>ContentPrintHandler</code> is a SAX content handler that dumps
- * all SAX events.
- */
-public class ContentPrintHandler extends DefaultHandler {
-    public final String name;
-
-    private final PrintWriter out;
-    private Locator locator;
-    private int number;
-
-    private void output(String mes) {
-        out.println(mes);
-        out.flush();
-    }
-
-    private String formatLocator() {
-        number++;
-        if (locator == null) {
-            return "Locator:null";
-        } else {
-            String r;
-            String systemId = locator.getSystemId();
-            if (systemId != null) {
-                r = MessageFormat.format("{0}|{1,number,integer}/{2}, Line:{3,number,integer}, Col:{4,number,integer}", 
-                                         new Object[] {name,
-                                                       new Integer(number),
-                                                       locator.getSystemId(),
-                                                       new Integer(locator.getLineNumber()),
-                                                       new Integer(locator.getColumnNumber())});
-            } else {
-                r = MessageFormat.format("{0}|{1,number,integer}/Line:{2,number,integer}, Col:{3,number,integer}", 
-                                         new Object[] {name,
-                                                       new Integer(number),
-                                                       new Integer(locator.getLineNumber()),
-                                                       new Integer(locator.getColumnNumber())});
-            }
-            return r;
-        }
-    }
-
-    private String formatAttribute(Attributes attrs, int i) {
-        String uri = attrs.getURI(i);
-        if (uri.length() > 0) {
-            return MessageFormat.format("{0}/'{'{1}'}'{2}({3})={4},{5}",
-                                        new Object[] {new Integer(i),
-                                                      uri,
-                                                      attrs.getLocalName(i),
-                                                      attrs.getQName(i),
-                                                      attrs.getValue(i),
-                                                      attrs.getType(i)});
-        } else {
-            return MessageFormat.format("{0}/{1}({2})={3},{4}",
-                                        new Object[] {new Integer(i),
-                                                      attrs.getLocalName(i),
-                                                      attrs.getQName(i),
-                                                      attrs.getValue(i),
-                                                      attrs.getType(i)});
-        }
-    }
-
-    public void setDocumentLocator(Locator locator) {
-        this.locator = locator;
-        output(formatLocator() + ": setDocumentLocator");
-    }
-
-    public void startDocument() throws SAXException {
-        output(formatLocator() + ": startDocument");
-    }
-
-    public void endDocument() throws SAXException {
-        output(formatLocator() + ": endDocument");
-    }
-
-    public void startPrefixMapping(String prefix, String uri) throws SAXException {
-        output(formatLocator() + ": startPrefixMapping {" + prefix + "=" + uri + "}");
-    }
-
-    public void endPrefixMapping(String prefix) throws SAXException {
-        output(formatLocator() + ": endPrefixMapping {" + prefix + "}");
-    }
-
-    public void startElement(String uri,
-                             String localName,
-                             String qName,
-                             Attributes attrs) throws SAXException {
-        output(formatLocator() + ": startElement {" + uri + "}" + localName + "(" + qName + ") ");
-        if (attrs.getLength() > 0) {
-            output("  Attributes:");
-            for(int i = 0; i < attrs.getLength(); i++){
-                output("    " + formatAttribute(attrs, i));
-            }
-        }
-    }
-    
-
-    public void endElement(String uri,
-                           String localName,
-                           String qName) throws SAXException {
-        output(formatLocator() + ": endElement {" + uri + "}" + localName + "(" + qName + ") ");
-    }
-    
-    public void characters(char ch[], int start, int length) throws SAXException {
-        output(formatLocator() + ": characters [" + new String(ch, start, length) + "]");
-    }
-    
-    public void ignorableWhitespace(char ch[], int start, int length) throws SAXException {
-        output(formatLocator() + ": ignorableWhitespace [" + new String(ch, start, length) + "]");
-    }
-    
-    public void processingInstruction(String target, String data) throws SAXException {
-        output(formatLocator() + ": processingInstruction [" + target + "=" + data + "]");
-    }
-
-    public void skippedEntity(String name) throws SAXException {
-        output(formatLocator() + ": skippedEntity [" + name + "]");
-    }
-
-    public ContentPrintHandler(String name) {
-        this(name, System.out);
-    }
-
-    public ContentPrintHandler(String name, OutputStream os) {
-        this(name, new PrintWriter(os));
-    }
-
-    public ContentPrintHandler(String name, PrintWriter out) {
-        this.name = name;
-        this.out = out;
-        this.number = 0;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/DefaultErrorHandler.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/DefaultErrorHandler.java
deleted file mode 100644
index dfc7887..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/DefaultErrorHandler.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.util;
-
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * The <code>DefaultErrorHandler</code> class is an ErrorHandler just
- * throwing any error or warning.
- */
-public class DefaultErrorHandler implements ErrorHandler {
-    static private DefaultErrorHandler defaultErrorHandlerInstance;
-    static public ErrorHandler getErrorHandler() {
-        if (defaultErrorHandlerInstance == null) {
-            defaultErrorHandlerInstance = new DefaultErrorHandler();
-        }
-        return defaultErrorHandlerInstance;
-    }
-	
-    public void warning(SAXParseException e) throws SAXException {
-        throw e;
-    }
-
-    public void error(SAXParseException e) throws SAXException {
-        throw e;
-    }
-
-    public void fatalError(SAXParseException e) throws SAXException {
-        throw e;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/EmptyAttributes.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/EmptyAttributes.java
deleted file mode 100644
index 76dd5de..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/EmptyAttributes.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.util;
-
-import org.xml.sax.Attributes;
-
-/**
- * The <code>EmptyAttributes</code> is the special
- * attribute class to descrive empty attributes.
- */
-public class EmptyAttributes implements Attributes {
-    private static final EmptyAttributes instance = new EmptyAttributes();
-    public static EmptyAttributes getInstance() {
-        return instance;
-    }
-
-    public int getLength() {
-        return 0;
-    }
-
-    public String getURI(int index) {
-        return null;
-    }
-
-    public String getLocalName(int index) {
-        return null;
-    }
-
-    public String getQName(int index) {
-        return null;
-    }
-
-    public String getType(int index) {
-        return null;
-    }
-
-    public String getValue(int index) {
-        return null;
-    }
-
-    public int getIndex(String uri, String localName) {
-        return -1;
-    }
-
-    public int getIndex(String qName) {
-        return -1;
-    }
-
-    public String getType(String uri, String localName) {
-        return null;
-    }
-
-    public String getType(String qName) {
-        return null;
-    }
-
-    public String getValue(String uri, String localName) {
-        return null;
-    }
-
-    public String getValue(String qName) {
-        return null;
-    }
-    
-    private EmptyAttributes() {
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/IRIUtil.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/IRIUtil.java
deleted file mode 100644
index 4b4a5bf..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/IRIUtil.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.util;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import org.xml.sax.InputSource;
-
-/**
- * The <code>IRIUtil</code> is a utility class for IRI.
- */
-public class IRIUtil {
-    static public final String fileSchema = "file:";
-
-    static public InputSource newInputSourceFromFilename(String fileName)
-    	throws FileNotFoundException {
-        InputSource is = new InputSource(new FileInputStream(fileName));
-        is.setSystemId(fileSchema + fileName);
-        return is;
-    }
-
-    static public String IRIToFilename(String iri) {
-        if (iri.startsWith(fileSchema)) {
-            iri = iri.substring(fileSchema.length());
-            URI uri;
-            try {
-                uri = new URI(iri);
-            } catch (URISyntaxException e) {
-                return iri;
-            }
-            return uri.getPath().replace('/', File.separatorChar);
-        }
-        return iri;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/Log.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/Log.java
deleted file mode 100644
index 5b248a4..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/Log.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.util;
-
-import java.io.PrintStream;
-
-/**
- * The <code>Log</code> is a singleton class for logging.
- */
-public class Log {
-    public static final int FATAL = 0;
-    public static final int ERROR = 1;
-    public static final int WARN = 2;
-    public static final int INFO = 3;
-    public static final int DEBUG = 4;
-
-    private static final Object[] defArg = new Object[0];
-
-    private static int logLevel = INFO;
-
-
-    private static void print(int lv, String mes, Object[] args) {
-        if (lv <= logLevel) {
-            PrintStream w;
-            String outstr = MessageFormatter.mes(mes, args);
-            if (lv <= ERROR) {
-                w = System.err;
-            } else {
-                w = System.out;
-            }
-            w.println(outstr);
-        }
-    }
-
-    private static void print(int lv, String mes) {
-        print(lv, mes, defArg);
-    }
-
-    public static void setLevel(int lv) {
-        logLevel = lv;
-    }
-
-    public static void debug(String mes) {
-        print(DEBUG, mes);
-    }
-    public static void debug(String mes, Object[] args) {
-        print(DEBUG, mes, args);
-    }
-    public static void info(String mes) {
-        print(INFO, mes);
-    }
-    public static void info(String mes, Object[] args) {
-        print(INFO, mes, args);
-    }
-    public static void warn(String mes) {
-        print(WARN, mes);
-    }
-    public static void warn(String mes, Object[] args) {
-        print(WARN, mes, args);
-    }
-    public static void error(String mes) {
-        print(ERROR, mes);
-    }
-    public static void error(String mes, Object[] args) {
-        print(ERROR, mes, args);
-    }
-    public static void fatal(String mes) {
-        print(FATAL, mes);
-    }
-    public static void fatal(String mes, Object[] args) {
-        print(FATAL, mes, args);
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/MessageErrorHandler.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/MessageErrorHandler.java
deleted file mode 100644
index 0998bf3..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/MessageErrorHandler.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.util;
-
-import java.io.OutputStream;
-import java.io.PrintWriter;
-
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * The <code>MessageErrorHandler</code> class is an ErrorHandler printing
- * fancy error messages.
- */
-public class MessageErrorHandler implements ErrorHandler {
-    private final PrintWriter out;
-
-    private void output(String mes) {
-        out.println(mes);
-        out.flush();
-    }
-
-    public void warning(SAXParseException e)
-        throws SAXException {
-        output(MessageFormatter.exception(e));
-    }
-
-    public void error(SAXParseException e)
-        throws SAXException {
-        output(MessageFormatter.exception(e));
-    }
-
-    public void fatalError(SAXParseException e)
-        throws SAXException {
-        output(MessageFormatter.exception(e));
-        throw e;
-    }
-
-    public MessageErrorHandler() {
-        this(System.err);
-    }
-
-    public MessageErrorHandler(OutputStream os) {
-        this(new PrintWriter(os));
-    }
-
-    public MessageErrorHandler(PrintWriter out) {
-        this.out = out;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/MessageFormatter.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/MessageFormatter.java
deleted file mode 100644
index c0ed6b5..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/MessageFormatter.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.util;
-
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.NVDLException;
-import org.eclipse.actf.ai.xmlstore.nvdl.dispatcher.NVDLDispatcherException;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.Location;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLModel;
-import org.xml.sax.SAXParseException;
-
-
-/**
- * The <code>MessageFormatter</code> class formats output messages.
- */
-public class MessageFormatter {
-    static ResourceBundle resourceBundle = null;
-
-    static public void setResourceBundle(String pkgName) {
-        try {
-            resourceBundle = ResourceBundle.getBundle(pkgName);
-        } catch (MissingResourceException e) {
-            resourceBundle = null;
-        }
-    }
-
-    static private String getFormat(String propName) {
-        if (resourceBundle == null) {
-            return propName;
-        }
-        String format;
-        try {
-            format = resourceBundle.getString(propName);
-        } catch (MissingResourceException e) {
-            return propName;
-        }
-        if (format != null) return format;
-        return propName;
-    }
-
-    static public String model(NVDLModel model, String message) {
-        Location modelLocation = model.getLocation();
-        if (modelLocation == null) {
-            return MessageFormat.format("{0} : {1}",
-                                        new Object[] {model.toString(),
-                                                      message});
-        } else {
-            return MessageFormat.format("{0}#{1}, Line:{2,number,integer}, Col:{3,number,integer} : {4}",
-                                        new Object[] {model.toString(),
-                                                      modelLocation.iri,
-                                                      new Integer(modelLocation.line),
-                                                      new Integer(modelLocation.pos),
-                                                      message});
-        }
-    }
-
-    static public String locAndModel(Location location, NVDLModel model,
-                                     String message) {
-        Location modelLocation = model.getLocation();
-        if (modelLocation == null) {
-            return MessageFormat.format("{0} Line:{1,number,integer}, Col:{2,number,integer}, ({3} ): {4}",
-                                        new Object[] {location.iri,
-                                                      new Integer(location.line),
-                                                      new Integer(location.pos),
-                                                      model.toString(),
-                                                      message});
-        } else {
-            return MessageFormat.format("{0} Line:{1,number,integer}, Col:{2,number,integer}, ({3} {4}, Line:{5,number,integer}, Col:{6,number,integer}): {7}",
-                                        new Object[] {location.iri,
-                                                      new Integer(location.line),
-                                                      new Integer(location.pos),
-                                                      model.toString(),
-                                                      modelLocation.iri,
-                                                      new Integer(modelLocation.line),
-                                                      new Integer(modelLocation.pos),
-                                                      message});
-        }
-    }
-
-    static public String loc(Location location, String message) {
-        return MessageFormat.format("{0} Line:{1,number,integer}, Col:{2,number,integer}: {3}",
-                                    new Object[] {location.iri,
-                                                  new Integer(location.line),
-                                                  new Integer(location.pos),
-                                                  message});
-    }
-
-    static public String mes(String propName) {
-        return getFormat(propName);
-    }
-
-    static public String mes(String propName, Object[] args) {
-        String format = getFormat(propName);
-        String message = MessageFormat.format(format, args);
-        return message;
-    }
-
-    static public String exception(Exception e) {
-        Location loc = null;
-        NVDLModel model = null;
-        Object[] args = null;
-        String message;
-        Exception messageException = e;
-        if (e instanceof SAXParseException) {
-            SAXParseException se = (SAXParseException) e;
-            int line = se.getLineNumber();
-            int col = se.getColumnNumber();
-            String systemId = se.getSystemId();
-            if (line > 0) {
-                loc = new Location(line, col, systemId);
-            }
-            e = se.getException();
-            if (e == null) e = se;
-        }
-        if (e instanceof NVDLException) {
-            NVDLException ne = (NVDLException) e;
-            args = ne.getMessageArguments();
-            if (e instanceof NVDLDispatcherException) {
-                NVDLDispatcherException nvdlDispatcherException = (NVDLDispatcherException) e;
-                model = nvdlDispatcherException.getCurrentModel();
-            }
-        }
-        if (args != null) {
-            message = mes(messageException.getMessage(), args);
-        } else {
-            message = messageException.getLocalizedMessage();
-            if (message == null) {
-                message = messageException.getMessage();
-            }
-            if (message == null) {
-            	message = messageException.toString();
-            }
-        }
-        if (loc != null) {
-            if (model != null) {
-                message = locAndModel(loc, model, message);
-            } else {
-                message = loc(loc, message);
-            }
-        } else if (model != null) {
-            message = model(model, message);
-        }
-        return message;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/NVDLModelPrint.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/NVDLModelPrint.java
deleted file mode 100644
index 2be37a5..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/NVDLModelPrint.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.util;
-
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLMode;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLModel;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLModelException;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLModelTraverse;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLNoResultAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLResultAction;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRule;
-import org.eclipse.actf.ai.xmlstore.nvdl.model.NVDLRules;
-
-/**
- * The <code>NVDLModelPrint</code> is a utility class for dumping
- * NVDL models by traversing them.
- */
-public class NVDLModelPrint extends NVDLModelTraverse {
-    private void println(Object o) {
-        System.out.println(o);
-    }
-
-    public NVDLModel visitNVDLMode(NVDLMode mode) throws NVDLModelException {
-        println("Mode " + mode.name + " " + mode.getLocation() + ":");
-        return super.visitNVDLMode(mode);
-    }
-
-    private void printNVDLAction(NVDLAction action) {
-        StringBuffer r = new StringBuffer(action.toString());
-        if (action.getMessage() != null) {
-            r.append("Message:");
-            r.append(action.getMessage().toString());
-        }
-        r.append("useMode:");
-        if (action.getUseModeName() != null) {
-            r.append(action.getUseModeName());
-        }
-        println(r);
-    }
-
-    public NVDLModel visitNVDLNoResultAction(NVDLNoResultAction action)
-        throws NVDLModelException {
-        printNVDLAction(action);
-        return super.visitNVDLNoResultAction(action);
-    }
-    public NVDLModel visitNVDLResultAction(NVDLResultAction action)
-        throws NVDLModelException {
-        printNVDLAction(action);
-        return super.visitNVDLResultAction(action);
-    }
-
-    public NVDLModel visitNVDLRule(NVDLRule rule)
-        throws NVDLModelException {
-        println(rule);
-        return super.visitNVDLRule(rule);
-    }
-
-    public NVDLModel visitNVDLRules(NVDLRules rules) throws NVDLModelException {
-        println("Rules " + rules.getLocation() + ":");
-        println("  SchemaType:" + rules.getSchmaType());
-        println("  StartMode:"); println(rules.getStartMode().name);
-        println(rules.getTriggerManager());
-        println("  Defined modes:");
-        return super.visitNVDLRules(rules);
-    }
-
-    public static void printRules(NVDLRules r) {
-        NVDLModelPrint v = new NVDLModelPrint();
-        try {
-            r.visitModel(v);
-        } catch (NVDLModelException e) {
-            System.out.println("Received NVDLModelException:" + e);
-            e.printStackTrace();
-        }
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/PrefixMapper.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/PrefixMapper.java
deleted file mode 100644
index fffe67e..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/PrefixMapper.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.util;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-
-
-/**
- * The <code>PrefixMapper</code> is a utility class that remembers
- * effective prefix mappings and properly dispatch startPrefixMappings
- * and endPrefixMappings.
- */
-public class PrefixMapper {
-    private class PrefixDef {
-        PrefixDef next;
-        PrefixDef previous;
-        final String prefix;
-        final String uri;
-
-        PrefixDef(String prefix, String uri, PrefixDef next) {
-            this.prefix = prefix;
-            this.uri = uri;
-            this.next = next;
-            if (next != null) {
-                next.previous = this;
-            }
-        }
-    }
-
-    private PrefixDef latest;
-    private PrefixDef oldest;
-
-    public void reset() {
-        latest = oldest = null;
-    }
-
-    public void startPrefixMapping(String prefix, String uri) {
-        PrefixDef pd = new PrefixDef(prefix, uri, latest);
-        latest = pd;
-        if (oldest == null) {
-            oldest = pd;
-        }
-        assert (oldest == null) || (oldest.next == null);
-    }
-
-    public void endPrefixMapping(String prefix) {
-        for (PrefixDef pd = latest; pd != null; pd = pd.next) {
-            if (pd.prefix.equals(prefix)) {
-                if (pd.previous == null) {
-                    latest = pd.next;
-                    if (latest == null) {
-                        oldest = null;
-                    }
-                } else if (pd.next == null) {
-                    pd.previous.next = null;
-                    oldest = pd.previous;
-                } else {
-                    pd.previous.next = pd.next;
-                    pd.next.previous = pd.previous;
-                }
-                break;
-            }   
-        }
-        assert (oldest == null) || (oldest.next == null);
-    }
-
-    public static class PrefixReturnVal {
-        public final String prefix;
-        public final boolean requireDecl;
-        PrefixReturnVal(String prefix, boolean requireDecl) {
-            this.prefix = prefix;
-            this.requireDecl = requireDecl;
-        }
-    }
-
-    public PrefixReturnVal uniquePrefix(String prefixBase, String ns) {
-        String tryPrefix = prefixBase;
-        int tryCount = 0;
-        retry:
-        for (;;) {
-            for (PrefixDef pd = oldest; pd != null; pd = pd.previous) {
-                if (pd.uri.equals(ns)) {
-                    return new PrefixReturnVal(pd.prefix, false);
-                }
-                if (pd.prefix.equals(tryPrefix)) {
-                    tryCount++;
-                    tryPrefix = prefixBase + tryCount;
-                    continue retry;
-                }
-            }
-            return new PrefixReturnVal(tryPrefix, true);
-        }
-    }
-
-    public Object startEffectivePrefixMappings(ContentHandler h)
-        throws SAXException {
-        PrefixDef last = null;
-        for (PrefixDef pd = oldest; pd != null; pd = pd.previous) {
-            h.startPrefixMapping(pd.prefix, pd.uri);
-            last = pd;
-        }
-        return last;
-    }
-
-    public void endEffectivePrefixMappings(Object effectiveMapping,
-                                           ContentHandler h)
-        throws SAXException {
-        for (PrefixDef pd = (PrefixDef) effectiveMapping;
-             pd != null;
-             pd = pd.next) {
-            h.endPrefixMapping(pd.prefix);
-        }
-    }
-
-    public static class StartElementToken {
-        final String localName;
-        final String ns;
-        final String qName;
-        final String prefix;
-        final boolean requireDecl;
-
-        StartElementToken(String localName,
-                          String ns,
-                          String qName,
-                          String prefix,
-                          boolean requireDecl) {
-            this.localName = localName;
-            this.ns = ns;
-            this.qName = qName;
-            this.prefix = prefix;
-            this.requireDecl = requireDecl;
-        }
-    }
-
-    public StartElementToken sendStartElement(ContentHandler h,
-                                              String ns,
-                                              String localName,
-                                              String preferredPrefix,
-                                              Attributes attrs) throws SAXException {
-        PrefixReturnVal prv = uniquePrefix(preferredPrefix, ns);
-        if (prv.requireDecl) {
-            h.startPrefixMapping(prv.prefix, ns);
-        }
-        String qName = prv.prefix + ":" + localName;
-        h.startElement(ns, localName, qName, attrs);
-        return new StartElementToken(localName, ns, qName,
-                                     prv.prefix, prv.requireDecl);
-    }
-
-    public void sendEndElement(ContentHandler h,
-                               StartElementToken set) throws SAXException {
-        h.endElement(set.ns, set.localName, set.qName);
-        if (set.requireDecl) {
-            h.endPrefixMapping(set.prefix);
-        }
-    }
-
-    public void sendEmptyElement(ContentHandler h,
-                                 String ns,
-                                 String localName,
-                                 String preferredPrefix,
-                                 Attributes attrs) throws SAXException {
-        PrefixReturnVal prv = uniquePrefix(preferredPrefix, ns);
-        if (prv.requireDecl) {
-            h.startPrefixMapping(prv.prefix, ns);
-        }
-        String qName = prv.prefix + ":" + localName;
-        h.startElement(ns, localName, qName, attrs);
-        h.endElement(ns, localName, qName);
-        if (prv.requireDecl) {
-            h.endPrefixMapping(prv.prefix);
-        }
-    }
-
-    public PrefixMapper() {
-        this.latest = this.oldest = null;
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/WritingContentHandler.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/WritingContentHandler.java
deleted file mode 100644
index 7d13345..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/nvdl/util/WritingContentHandler.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.nvdl.util;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.nio.charset.Charset;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.ext.DefaultHandler2;
-
-/**
- * The <code>ContentPrintHandler</code> is a SAX content handler that dumps
- * all SAX events.
- */
-public class WritingContentHandler extends DefaultHandler2 {
-    private final Writer out;
-    private final boolean requireClose;
-    // private Locator locator;
-    private final HashMap<String, String> prefixMapping = new HashMap<String, String>();
-
-    private void outputEscape(char[] ch, int start, int length) throws IOException {
-        int end = start + length;
-        for ( ; start < end; start++) {
-            char c = ch[start];
-            switch (c) {
-            case '<':
-                out.append("&lt;");
-                break;
-            case '>':
-                out.append("&gt;");
-                break;
-            case '&':
-                out.append("&amp;");
-                break;
-            default:
-                out.append(c);
-            }
-        }
-    }
-
-    private void outputEscapeAttrVal(String val) throws IOException {
-        int len = val.length();
-        int i, j;
-
-        outer:
-        for (i = 0; i < len; i = j) {
-            for (j = i; j < len; j++) {
-                char c = val.charAt(j);
-                switch (c) {
-                case '<':
-                    out.append(val, i, j);
-                    out.append("&lt;");
-                    continue outer;
-                case '>':
-                    out.append(val, i, j);
-                    out.append("&gt;");
-                    continue outer;
-                case '&':
-                    out.append(val, i, j);
-                    out.append("&amp;");
-                    continue outer;
-                case '\'':
-                    out.append(val, i, j);
-                    out.append("&apos;");
-                    continue outer;
-                }
-            }
-            out.append(val, i, j);
-        }
-    }
-
-    public void setDocumentLocator(Locator locator) {
-        // this.locator = locator;
-    }
-
-    public void startDocument() throws SAXException {
-        try {
-            if (out instanceof OutputStreamWriter) {
-                Charset encoding = Charset.forName(((OutputStreamWriter) out).getEncoding());
-                out.append("<?xml version=\"1.0\" encoding=\"");
-                out.append(encoding.name());
-                out.append("\"?>\n");
-            }
-        } catch (IOException e) {
-            throw new SAXException(e);
-        }
-    }
-
-    public void endDocument() throws SAXException {
-        try {
-            if (requireClose) out.close();
-        } catch (IOException e) {
-            throw new SAXException(e);
-        }
-    }
-
-    public void startPrefixMapping(String prefix, String uri) throws SAXException {
-        prefixMapping.put(prefix, uri);
-    }
-
-    public void endPrefixMapping(String prefix) throws SAXException {
-    }
-
-    public void startElement(String uri,
-                             String localName,
-                             String qName,
-                             Attributes attrs) throws SAXException {
-        boolean firstAttr = true;
-        try {
-            out.append('<');
-            out.append(qName);
-            Iterator<String> it = prefixMapping.keySet().iterator();
-            while (it.hasNext()) {
-                String key = it.next();
-                String aName;
-                if (key.length() > 0) {
-                    aName = "xmlns:" + key;
-                } else {
-                    aName = "xmlns";
-                }
-                if (attrs.getIndex(aName) >= 0) continue;
-                if (firstAttr) {
-                    out.append(' ');
-                    firstAttr = false;
-                }
-                out.append(aName);
-                out.append("=\"");
-                out.append(prefixMapping.get(key));
-                out.append("\" ");
-            }
-            prefixMapping.clear();
-
-            int len = attrs.getLength();
-            for (int i = 0; i < len; i++) {
-                String qNameA = attrs.getQName(i);
-                String value = attrs.getValue(i);
-                if (firstAttr) {
-                    out.append(' ');
-                    firstAttr = false;
-                }
-                out.append(qNameA);
-                out.append("=\"");
-                outputEscapeAttrVal(value);
-                out.append("\" ");
-            }
-            out.append('>');
-        } catch (IOException e) {
-            throw new SAXException(e);
-        }
-    }
-    
-
-    public void endElement(String uri,
-                           String localName,
-                           String qName) throws SAXException {
-        try {
-            out.append("</");
-            out.append(qName);
-            out.append('>');
-        } catch (IOException e) {
-            throw new SAXException(e);
-        }
-    }
-    
-    public void characters(char[] ch, int start, int length) throws SAXException {
-        try {
-            outputEscape(ch, start, length);
-        } catch (IOException e) {
-            throw new SAXException(e);
-        }
-    }
-    
-    public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {
-        try {
-            out.write(ch, start, length);
-        } catch (IOException e) {
-            throw new SAXException(e);
-        }
-    }
-    
-    public void processingInstruction(String target, String data) throws SAXException {
-        try {
-            out.append("<?");
-            out.append(target);
-            out.append(' ');
-            out.append(data);
-        } catch (IOException e) {
-            throw new SAXException(e);
-        }
-    }
-
-    public void skippedEntity(String name) throws SAXException {
-    }
-    
-    @Override
-	public void comment(char[] ch, int start, int length) throws SAXException {
-        try {
-        	out.append("<!-- ");
-        	outputEscape(ch, start, length);
-        	out.append("-->");
-        } catch (IOException e) {
-            throw new SAXException(e);
-        }
-	}
-
-	public WritingContentHandler(String name) {
-        this.out = new OutputStreamWriter(System.out);
-        this.requireClose = false;
-    }
-
-    public WritingContentHandler(OutputStream os) {
-        this.out = new OutputStreamWriter(os);
-        this.requireClose = true;
-    }
-
-    public WritingContentHandler(Writer out) {
-        this.out = out;
-        this.requireClose = true;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLSelectorDefault.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLSelectorDefault.java
deleted file mode 100644
index b8348d4..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLSelectorDefault.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.spi;
-
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-
-public abstract class XMLSelectorDefault implements IXMLSelector {
-    public String getDocumentElementName() {
-        return null;
-    }
-
-    public String getDocumentElementNS() {
-        return null;
-    }
-
-    public String getURI() {
-        return null;
-    }
-}
-
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLSelectorInfo.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLSelectorInfo.java
deleted file mode 100644
index d1e495f..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLSelectorInfo.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.spi;
-
-import java.util.ArrayList;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-public class XMLSelectorInfo implements IXMLSelector {
-    public static final String SELECTOR_NS = "http://www.ibm.com/xmlns/prod/AcTF/aiBrowser/selector/1.0";
-
-    private static final int DEFAULT_PRIORITY = 0;
-    
-    // --------------------------------------------------------------------------------
-    //            Parser
-    // --------------------------------------------------------------------------------
-
-    private interface FinishHandler {
-        void set(String s);
-    }
-
-    private static abstract class BaseHandler extends DefaultHandler {
-        private IXMLInfo info;
-        protected void setHandler(BaseHandler h) {
-            info.setContentHandler(h);
-        }
-        protected BaseHandler(IXMLInfo info) {
-            this.info = info;
-        }
-        protected BaseHandler(BaseHandler base) {
-            this.info = base.info;
-        }
-    }
-
-    private static class TextContentHandler extends BaseHandler {
-        private StringBuffer buf = new StringBuffer();
-        private int level;
-        private final BaseHandler prevHandler;
-        private final FinishHandler finishHandler;
-
-        @Override
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attributes) throws SAXException {
-            level++;
-        }
-
-        @Override
-        public void characters(char[] ch, int start, int length)
-            throws SAXException {
-            buf.append(ch, start, length);
-        }
-
-        @Override
-        public void endElement(String namespaceURI,
-                               String localName, String qName) throws SAXException {
-            level--;
-            if (level < 0) {
-                finishHandler.set(buf.toString());
-                setHandler(prevHandler);
-            }
-        }
-        TextContentHandler(BaseHandler handler, FinishHandler fh) {
-            super(handler);
-            level = 0;
-            finishHandler = fh;
-            prevHandler = handler;
-        }
-    }
-
-    private static class SelectorHandler extends BaseHandler {
-        private XMLSelectorInfo selectorInfo;
-        public XMLSelectorInfo getXMLSelectorInfo() {
-            return selectorInfo;
-        }
-
-        private boolean rootFlag;
-        
-        private boolean metaFlag;
-
-        private String quote(String pat, char wildCardChar) {
-            StringBuffer r = new StringBuffer();
-            for (int i = 0; i < pat.length(); i++) {
-                char c = pat.charAt(i);
-                if (c == wildCardChar) {
-                    r.append(".*");
-                } else if (("\\?*+.[]{}()$^".indexOf(c) >= 0)) {
-                    r.append('\\');
-                    r.append(c);
-                } else {
-                    r.append(c);
-                }
-            }
-            return r.toString();
-        }
-
-        private void parseTargetSite(Attributes attributes) {
-            String targetURI = attributes.getValue("", "uri");
-            if (targetURI != null) {
-                selectorInfo.targetURIs.add(targetURI);
-                selectorInfo.targetURIPatterns.add(Pattern.compile(quote(targetURI, '*')));
-            }
-        }
-
-        @Override
-        public void startElement(String uri,
-                                 String localName,
-                                 String qName,
-                                 Attributes attributes) throws SAXException {
-            if (!rootFlag) {
-                selectorInfo.documentElementNS = uri;
-                selectorInfo.documentElementName = localName;
-                rootFlag = true;
-                return;
-            }
-            if (!(SELECTOR_NS.equals(uri))) return;
-            if (metaFlag) {
-                if ("targetSite".equals(localName)) {
-                    parseTargetSite(attributes);
-                    
-                } else if ("documentation".equals(localName)) {
-                    setHandler(new TextContentHandler(this, new FinishHandler() {
-                        public void set(String s) {
-                            selectorInfo.documentation = s;
-                        }
-                    }));
-                } else if ("userEntry".equals(localName)) {
-                    selectorInfo.isUserEntry = true;
-                } else if ("pageTitle".equals(localName)) {
-                    setHandler(new TextContentHandler(this, new FinishHandler() {
-                        public void set(String s) {
-                            selectorInfo.pageTitle = s;
-                        }
-                    }));
-                } else if ("authorName".equals(localName)) {
-                    setHandler(new TextContentHandler(this, new FinishHandler() {
-                        public void set(String s) {
-                            selectorInfo.authorName = s;
-                        }
-                    }));                   
-                }
-            } else if ("meta".equals(localName)) {
-                metaFlag = true;
-                return;
-            }
-        }
-
-        public static class FinishedException extends SAXException {
-            private static final long serialVersionUID = -7213987482937237478L;
-
-            FinishedException() {
-                super("Finished");
-            }
-        }
-
-        @Override
-        public void endElement(String uri,
-                               String localName,
-                               String qName) throws SAXException {
-            if (!(SELECTOR_NS.equals(uri))) return;
-            if (metaFlag) {
-                if ("meta".equals(localName)) {
-                    throw new FinishedException();
-                }
-            }
-        }
-
-        SelectorHandler(IXMLInfo info) {
-            super(info);
-            this.selectorInfo = new XMLSelectorInfo();
-        }
-    }
-
-    static public XMLSelectorInfo parse(IXMLInfo info) throws XMLStoreException {
-        SelectorHandler sh = new SelectorHandler(info);
-        try {
-            info.setContentHandler(sh);
-            info.startSAX();
-        } catch (SelectorHandler.FinishedException e) {
-        } catch (Exception e) {
-            throw new XMLStoreException("XMLSelectorInfo parse failed.");
-        }
-        return sh.getXMLSelectorInfo();
-    }
-    
-    // --------------------------------------------------------------------------------
-    //            Meta Information.
-    // --------------------------------------------------------------------------------
-
-    private String documentElementName;
-    private String documentElementNS;
-
-    public String getDocumentElementName() {
-        return documentElementName;
-    }
-
-    public String getDocumentElementNS() {
-        return documentElementNS;
-    }
-
-    private String documentation;
-
-    public String getDocumentation() {
-        return documentation;
-    }
-    
-    private boolean isUserEntry = false;
-
-    public boolean isUserEntry() {
-        return isUserEntry;
-    }
-    
-    private String pageTitle;
-
-    public String getPageTitle() {
-        return pageTitle;
-    }
-    
-    private String authorName;
-    
-    public String getAuthorName() {
-        return authorName;
-    }
-
-
-    public String getURI() {
-        return "";
-    }
-
-    private int priority = DEFAULT_PRIORITY;
-
-    public int getPriority() {
-        return priority;
-    }
-
-    private ArrayList<Pattern> targetURIPatterns;
-    private ArrayList<String> targetURIs;
-
-    private boolean matchDocumentElement(IXMLSelector selector) {
-        if (selector.getDocumentElementNS() != null) {
-            if (!documentElementNS.equals(selector.getDocumentElementNS())) return false;
-        }
-        if (selector.getDocumentElementName() != null) {
-            if (!documentElementName.equals(selector.getDocumentElementName())) return false;
-        }
-        return true;
-    }
-
-    private boolean matchURI(IXMLSelector selector) {
-        String uri = selector.getURI();
-        if (uri == null) return true;
-
-        int size = targetURIPatterns.size();
-        if (size == 0) return false;
-        for (int i = 0; i < size; i++) {
-            Pattern pat = targetURIPatterns.get(i);
-            Matcher m = pat.matcher(uri);
-            if (m.matches()) return true;
-        }
-        return false;
-    }
-
-    public boolean match(IXMLSelector selector) {
-        if (!matchDocumentElement(selector)) return false;
-        if (!matchURI(selector)) return false;
-        return true;
-    }
-
-    private XMLSelectorInfo() {
-        targetURIPatterns = new ArrayList<Pattern>();
-        targetURIs = new ArrayList<String>();
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLStoreAggregator.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLStoreAggregator.java
deleted file mode 100644
index b72c196..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLStoreAggregator.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.spi;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-
-public class XMLStoreAggregator implements IXMLStore {
-    private final ArrayList<IXMLStore> stores;
-
-    public IXMLStore specify(IXMLSelector selector) {
-        int len = stores.size();
-        ArrayList<IXMLStore> newStores = new ArrayList<IXMLStore>(len);
-        for (int i = 0; i < len; i++) {
-            IXMLStore st = stores.get(i);
-            IXMLStore st2 = st.specify(selector);
-            if (st2 != null) {
-                newStores.add(st2);
-            }
-        }
-        if (newStores.size() > 0) {
-            return new XMLStoreAggregator(newStores);
-        } else {
-            return null;
-        }
-    }
-
-    public void refleshAll() {
-        int len = stores.size();
-        for (int i = 0; i < len; i++) {
-            IXMLStore st = stores.get(i);
-            st.refleshAll();
-        }
-    }
-
-    public void addStore(IXMLStore store) {
-        stores.add(store);
-    }
-    
-    private XMLStoreAggregator(ArrayList<IXMLStore> stores) {
-        this.stores = stores;
-    }
-    
-    XMLStoreAggregator() {
-        this.stores = new ArrayList<IXMLStore>();
-    }
-
-    private class AggregatorIterator implements Iterator<IXMLInfo> {
-        private int idx;
-        private Iterator<IXMLInfo> currentIterator;
-        private IXMLInfo next;
-
-        private void setNext(){
-            if (currentIterator != null) {
-                if (currentIterator.hasNext()){
-                    this.next = currentIterator.next();
-                    return;
-                }
-            }
-            
-            int size = stores.size();
-            if (idx < size) {
-                IXMLStore store = stores.get(idx);
-                currentIterator = store.getInfoIterator();
-                idx++;
-                setNext();
-                return;
-            }
-            this.next = null;
-            return;
-        }
-        
-
-        AggregatorIterator() {
-            this.idx = 0;
-            setNext();
-        }
-
-        public boolean hasNext() {
-            return (next != null);
-        }
-
-        public IXMLInfo next() {
-            IXMLInfo ret = next;
-            setNext();
-            return ret;
-        }
-
-        public void remove() {
-            // Do nothing;
-        }
-    }
-
-    public Iterator<IXMLInfo> getInfoIterator() {
-        return new AggregatorIterator();
-    }
-
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLStoreServiceImpl.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLStoreServiceImpl.java
deleted file mode 100644
index f8588f0..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLStoreServiceImpl.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.spi;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-import org.eclipse.actf.ai.internal.xmlstore.XMLStorePlugin;
-import org.eclipse.actf.ai.xmlstore.IXMLEditableInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLInfo;
-import org.eclipse.actf.ai.xmlstore.IXMLSelector;
-import org.eclipse.actf.ai.xmlstore.IXMLStore;
-import org.eclipse.actf.ai.xmlstore.IXMLStoreService;
-import org.eclipse.actf.ai.xmlstore.XMLStoreException;
-import org.eclipse.actf.ai.xmlstore.local.UserXMLStore;
-import org.eclipse.actf.ai.xmlstore.local.XMLStoreLocal;
-
-public class XMLStoreServiceImpl implements IXMLStoreService {
-    public IXMLStore getRootStore() {
-        return rootStore;
-    }
-
-    private static class XMLSelectorWithDocElem extends XMLSelectorDefault {
-        private String name;
-
-        private String iri;
-
-        @Override
-        public String getDocumentElementName() {
-            return name;
-        }
-
-        @Override
-        public String getDocumentElementNS() {
-            return iri;
-        }
-
-        XMLSelectorWithDocElem(String name, String iri) {
-            this.name = name;
-            this.iri = iri;
-        }
-    }
-
-    public IXMLSelector getSelectorWithDocElem(String name, String iri) {
-        return new XMLSelectorWithDocElem(name, iri);
-    }
-
-    private static class XMLSelectorWithIRI extends XMLSelectorDefault {
-        private String iri;
-
-        @Override
-        public String getURI() {
-            return iri;
-        }
-
-        XMLSelectorWithIRI(String iri) {
-            this.iri = iri;
-        }
-    }
-
-    public IXMLSelector getSelectorWithURI(String iri) {
-        return new XMLSelectorWithIRI(iri);
-    }
-
-    // -----------------------------------------------------------
-
-    private XMLStoreAggregator rootStore;
-
-    private XMLStoreServiceImpl() {
-        XMLStoreAggregator store = new XMLStoreAggregator();
-        rootStore = store;
-    }
-    
-    public void addStore(IXMLStore store) {
-        rootStore.addStore(store);
-    }
-    
-    public void setUserStore(UserXMLStore store) {
-        this.userStore = store;
-        rootStore.addStore(store);
-    }
-
-    private static XMLStoreServiceImpl instance = new XMLStoreServiceImpl();
-
-    public static XMLStoreServiceImpl getInstance() {
-        return instance;
-    }
-
-    private UserXMLStore userStore;
-
-    public IXMLEditableInfo newUserXML(String namespaceURI, String qualifiedName, String targetUriPattern) throws XMLStoreException {
-        return userStore.newXML(namespaceURI, qualifiedName, targetUriPattern);
-    }
-    
-    /*********************************
-     * Import and Export
-     *********************************/
-
-    public boolean exportMetadata(IXMLInfo info, File dest) {
-        try {
-            if (info instanceof IXMLEditableInfo) {
-                ((IXMLEditableInfo) info).save(dest);
-                return true;
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-    public boolean importMetadata(File src) {
-        try {
-            if (importZippedMetadata(src))
-                return true;
-            return importFile(src);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-    private boolean importFile(File src) {
-        XMLSelectorInfo info;
-        try {
-            info = XMLSelectorInfo.parse(XMLStoreLocal.newXMLFile(src));
-        } catch (XMLStoreException e1) {
-            return false;
-        }
-        
-        if (info.getDocumentElementName() == null)
-            return false;
-
-        String docElementName = info.getDocumentElementName();
-        String childDirName;
-        if (info.isUserEntry()) {
-            childDirName = UserXMLStore.TEMP_DIR_NAME;
-        } else {
-            childDirName = XMLStoreLocal.SYSTEM_DIR_NAME;
-        }
-        File destBaseDir = XMLStorePlugin.getDefault().getLocalDir(childDirName);
-        destBaseDir = new File(destBaseDir, docElementName);
-        File dest = new File(destBaseDir, src.getName());
-        
-        if (src.equals(dest)) return true;
-        
-        destBaseDir.mkdirs();
-        
-        FileInputStream fis = null;
-        FileOutputStream fos = null;
-        try {
-            fis = new FileInputStream(src);
-            fos = new FileOutputStream(dest);
-            byte[] buff = new byte[4096];
-            while (true) {
-                int read = fis.read(buff);
-                if (read >= 0) {
-                    fos.write(buff, 0, read);
-                } else {
-                    break;
-                }
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        } finally {
-            if (fis != null) {
-                try {
-                    fis.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
-            if (fos != null) {
-                try {
-                    fos.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-        return true;
-    }
-
-    private boolean importZippedMetadata(File src) {
-        try {
-            ZipInputStream zis = new ZipInputStream(new FileInputStream(src));
-            ZipEntry entry;
-            byte[] buffer = new byte[4096];
-            String destDir = XMLStorePlugin.getDefault().getStateLocation().toOSString();
-            boolean flag = true;
-            while ((entry = zis.getNextEntry()) != null) {
-                File f = new File(destDir + "\\" + entry.getName());
-                FileOutputStream fos = new FileOutputStream(f);
-                int len = 0;
-                while ((len = zis.read(buffer)) > 0) {
-                    fos.write(buffer, 0, len);
-                }
-                zis.closeEntry();
-                fos.close();
-                importFile(f);
-                f.delete();
-                flag = false;
-            }
-            zis.close();
-            if (flag)
-                return false;
-            return true;
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-    public static final String Fennec_NAMESPACE_URI = "http://www.ibm.com/xmlns/prod/aiBrowser/fennec";
-
-    public static final String Fennec_DOCUMENT_ELEMENT_NAME = "fennec";
-
-    public boolean exportAllAnnotations(File dest) {
-        try {
-            IXMLSelector selector = getSelectorWithDocElem(Fennec_DOCUMENT_ELEMENT_NAME, Fennec_NAMESPACE_URI);
-            IXMLStore store = getRootStore().specify(selector);
-
-            ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(dest));
-            for (Iterator<IXMLInfo> i = store.getInfoIterator(); i.hasNext();) {
-                IXMLInfo info = i.next();
-                if (info instanceof IXMLEditableInfo) {
-                    IXMLEditableInfo eInfo = (IXMLEditableInfo) info;
-                    eInfo.save(zos);
-                }
-            }
-            zos.close();
-            return true;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
-}
diff --git a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLUtil.java b/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLUtil.java
deleted file mode 100644
index 3dada3f..0000000
--- a/plugins/org.eclipse.actf.ai.xmlstore/src/org/eclipse/actf/ai/xmlstore/spi/XMLUtil.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and Others
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Hisashi MIYASHITA - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.actf.ai.xmlstore.spi;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-public class XMLUtil {
-    private static DocumentBuilderFactory domFactory;
-    public static DocumentBuilder newDocumentBuilder() throws ParserConfigurationException {
-        if (domFactory == null) {
-            domFactory = DocumentBuilderFactory.newInstance();
-            domFactory.setNamespaceAware(true);            
-        }
-        return domFactory.newDocumentBuilder();
-    }
-
-    public static XMLReader newXMLReader() throws SAXException {
-        return XMLReaderFactory.createXMLReader();
-    }
-}