<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"[
<!ENTITY imgroot "images/tools/tm/workbench/" >
<!ENTITY % uimaents SYSTEM "../../target/docbook-shared/entities.ent" >  
%uimaents;
]>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<section id="section.ugr.tools.tm.workbench.install">
  <title>Installation</title>
  <para>

    Do the installation of the TextMarker workbench as follows:
    <orderedlist numeration="arabic">
      <listitem>
        <para>
          Download, install and start an Eclipse instance in version
          3.7.
          Eclipse can be obtained
          from the
          <ulink
            url="http://www.eclipse.org/downloads/packages/release/indigo/sr2">eclipse.org</ulink>
          download site.
        </para>
      </listitem>
      <listitem>
        <para>
          Add the Apache UIMA update site (
          <ulink url="http://www.apache.org/dist/uima/eclipse-update-site/">http://www.apache.org/dist/uima/eclipse-update-site/
          </ulink>
          ) to the available
          software sites in your Eclipse installation.
          To do
          so, click
          <quote>Help &rarr;
            Install New Software
          </quote>
          and add each site. This opens the install wizard which can be
          seen
          in
          <xref linkend='figure.ugr.tools.tm.workbench.install.update' />
        </para>
      </listitem>
      <listitem>
        <para>
          Enter the TextMarker update site in field
          <quote>Work with:</quote>
          and press
          <quote>Enter</quote>
          .
        </para>
      </listitem>
      <listitem>
        <para>
          The
          <quote>Apache UIMA TextMarker
            Eclipse tooling and runtime support
          </quote>
          feature will be displayed. Select
          it by clicking into the related checkbox.
        </para>
      </listitem>
      <listitem>
        <para>
          Also select
          <quote>Contact all update
            sites during install to find required software
          </quote>
          and click on
          <quote>
            Next
          </quote>
          .
        </para>
      </listitem>
      <listitem>
        <para>
          On the next page click
          <quote>Next</quote>
          again. Now, the license
          agreement site is diplayed. To install TextMarker read the license and
          choose
          <quote>I accept the ...</quote>
          if you agree to it. If you agreed,
          click on
          <quote>Finish</quote>
        </para>
      </listitem>
    </orderedlist>
  </para>
  <para>
    <figure id="figure.ugr.tools.tm.workbench.install.update">
      <title> Eclipse update site
      </title>
      <mediaobject>
        <imageobject role="html">
          <imagedata width="300px" format="PNG" align="center"
            fileref="&imgroot;install/update.png" />
        </imageobject>
        <imageobject role="fo">
          <imagedata width="5.0in" format="PNG" align="center"
            fileref="&imgroot;install/update.png" />
        </imageobject>
        <textobject>
          <phrase>
            Eclipse update site.
          </phrase>
        </textobject>
      </mediaobject>
    </figure>
  </para>
  <para>
    Now, TextMarker is going to be installed.
    After the successful
    installation, switch to the TextMarker
    perspective. To get an overview
    see
    <xref linkend='section.ugr.tools.tm.workbench.overview' />
    .
  </para>
  <para>
    Several times within this chapter we use a TextMarker example
    project
    to illustrate the use of the TextMarker workbench.
    The example project
    can be downloaded per
    <emphasis>svn</emphasis>
    from
    <ulink
      url="https://svn.apache.org/repos/asf/uima/sandbox/trunk/TextMarker/example-projects/">https://svn.apache.org/repos/asf/uima/sandbox/trunk/TextMarker/example-projects/
    </ulink>
    .
  </para>
  <para>
    To import this project into the workbench do
    <quote>File &rarr;
      Import...
    </quote>
    . Select
    <quote>Existing Projects into Workspace</quote>
    under
    <quote>General</quote>
    . Select the
    <quote>ExampleProject</quote>
    directory
    in your file system as root directory and click on
    <quote>Finish</quote>
    . The
    example project is now available in your workspace.
  </para>
</section>