Slate v0.11.10!

Welcome to Slate

Server Setup

Setting up Slate is fairly easy. Basically you need to:

  1. Install Tomcat 5.x or 6.x
  2. Replace the webapps/ROOT/ folder with the contents of the war package (the war package must be built first; see "Building Slate below").
  3. Run the SLATE_SCHEMA.sql file once as root (sudo) to create the DB and DB user
  4. Start up Tomcat and hit it in web browser to configure (e.g. http://localhost:8080/)

Necessary Software

Make sure the following are installed/present on your system:

Initialising the DB: the SLATE_SCHEMA.sql file

NOTE: Versions of MySQL newer than 5.5.x are not supported by Slate at this time.

This file creates a slate2 database, along with a slate user with full privileges on that database. To run the DB init script, execute the following command from a terminal window (assuming you are in the slate/sql directory):

sudo mysql < SLATE_SCHEMA.sql
Changing the database name

If you want to change the DB name that is used, you need to modify two places.

  1. Change the SLATE_SCHEMA.sql file (rename slate2 to whatever you want)
  2. If you are editing an active installation, open war/WEB-INF/classes/hibernate.cfg.xml and rename the DB connection string, replacing slate2 with whatever you used in 1; if you are editing source (and will build after), modify src/main/wibernate.cfg.xml and then build with ant.

Building Slate

From the command line

In order to build Slate from the command line you will need the following packages:

(Put these someplace and edit the build.xml file to point to them (or place them in the same directory as Slate in the folders ant, gwt and junit))

You can build Slate as a directory or as a .war file.

(The following assumes ant is in your path; if it is not, replace ant below with the full path/to/ant.)

  1. Change the properties that point to jUnit and GWT SDKs inside the build.xml file.
  2. Build as a directory.
    1. Run ant build to build the project
    2. After the project has built, the application files can be found in war/.
  3. Run ant war to build and package the project as a war file.

From within Eclipse

If you are using Eclipse, you can import the project folder as an existing project (there is a .project file), or using the build.xml (not recommended).

GWT 2.4 and Eclipse

GWT 2.4 uses annotation processors that are required to run the app. Make sure you follow these instructions to enable it or the project will not run (though it will start up): http://code.google.com/p/google-web-toolkit/wiki/RequestFactoryInterfaceValidation

Running Tomcat

The Slate system runs on top of Tomcat, a java-based web server; to use Slate you must start Tomcat first.

You may need to change permissions on the bin directory:

> cd path/to/tomcat/bin
> chmod +x *.sh

Then, to start up Tomcat run the startup.sh script within bin: ./startup.sh

First time initialization

When you access slate in a web browser for the first time, it will show you a screen for creating the master (root) user. Don't forget the password you enter here or you will not be able to login to create other users.

Supported browsers

  • Firefox NOT supported
  • Chrome/Safari supported
  • On linux, need to set the default font for characters to display properly.

Flash player is needed for the annotation screen


Slate has a number of easily extensible points to allow you to customize its behavior.

  1. Importer/Exporter API
  2. Annotation Screen Controls Panel

Importer/Exporter API

Slate has the ability to use custom importers / exporters if they properly follow a defined standard. On start up the system scans the war/WEB-INF/lib/plugins/ folder (this folder is copied from lib/plugins at build time). Under src/ there are two plugin related subfolders, plugins/ to plugins-api, containing built-in IO plugins (and concrete framework implementations) and the public plugin framework API, respectively. When an administrator tries to import/export data, the plugin framework is used to generate the UI to let the user configure how data is treated; then the plugin is used to transform the data. Both importer and exporter classes are POJOs with annotations marking methods for the framework to call. It functions similarly to jUnit, so if you are familiar with this then plugin creation should be a breeze. In order to create an importer/exporter you need to understand the Slate data model. See the WIKI for more info.

Annotation Screen Controls Panel

The annotation screen has a panel on the side where controls exist that the user can interact with ("controls panel"). These can be customized (new ones added) if you need to customize the system for a specific project. Essentially, any GWT widget can be added to the controls panel. If you want this control to interact with a server-side data service, simply make your widget do this. When segments are selected/created/deleted/changed events are dispatched, which can also be hooked into if necessary. See the WIKI for more info.

Revision history

The following is a list of bugs fixed, enhancements added for each release.


  • Can now toggle visibility of tags, and these settings persist across sessions
  • Added SciXML (AZ) importer plugin


  • ENH #122: Adjusting lines of segment using keys


  • ENH #116: Fix CSS styles in Firefox and IE


  • BUG #115: MS Windows does not always display annotations properly within the Flash annotation screen
  • Further extended ENH #114 by pulling flash related SLAC code into its own package


  • BUG #113: Attributes with spaces in their names break annotation screen interface
  • ENH #114: SlacWidget must be an interface so the Flash implementation can be easily replaced


  • BUG #110: Deleting document set now will succeed even with documents inside
  • ENH #109: Added document name to Slat exports
  • Reformatting of palette widget
  • Updating flash copy script to allow for copying release and debug builds
  • UI updates for buttons.
  • Fixing bug where two documents could have different IDs but the same title/text and therefore be considered equal
  • Fixing bug where clicking "export from project" on project details screen takes the user to the export screen with the project pre-selected, but the corpus versions list empty
  • Fixing issue where segment deletion while attached to a link causes annotation screen to break. This makes all attached links auto delete when the segment is deleted.


  • Clicking "Add value" now focuses on the newly added field
  • Adding hibernate annotations so deletes will cascade properly (including deletion of corpus versions)
  • Added more styling to the "Working…" status display at top of screen
  • Modifications to how text offsets are calculated and rendered
  • Changing settings from sliders to drop downs. Adding font name setting
  • Added "delete" button to annotation list, and its functionality
  • Added delete button for links on annotation list
  • Fix for copying corpus versions. Was not properly setting segments for links
  • UI tweaks


  • UI tweaks
  • Fixing NPE for segments without string content
  • Moved editors to their own package (ui.editors) and modified css a bit
  • Flash changes for supporting tracking layout changes
  • Fix for key commands using newer browsers. No more dups!
  • Modifying import/export framework to produce more immediate messages


  • ENH #81: Fix popup selectors.
  • ENH #89: Create user settings mechanism.
  • ENH #87: When controls panel is hidden and a new tag def is selected, briefly show this info as a overlay.
  • ENH #88: Add shortcuts for rotating through all tag definitions.
  • ENH #90: SLAT importer/exporter should use CDATA for wrapping textual data.
  • BUG #91: SLAT Importer can no longer import configurations.
  • ENH #92: Make import messages more user friendly.
  • ENH #93: Add whitespace/end-char-offset options to SLAT exporter.
  • BUG #94: Unable to load all document sets' documents on the assigned work screen.
  • ENH #95: Make tags ordered alphabetically in tag selector panel
  • BUG #97: Files beginning with . (dot) imported via zips are not ignored
  • ENH #98: Deleting document should not delete document set
  • ENH #99: Document search should also search names and comments
  • ENH #100: Annotation screen "settings" panel settings should persist
  • ENH #101: Assigned work screen should reopen selector tree and select last selected document
  • BUG #102: String in <content> element for <segment> during export has one too many characters
  • ENH #86: Move import popup to its own activity
  • ENH #85: Move export popup to its own activity


  • TSK #47: Update to GWT 2.4.
  • Fixed CellTable conflicting styles issue.


  • TSK #69: Create /lib folder and make sure all libraries are within it instead of war/
  • TSK #70: Confirm project can be checked out on another computer and built/run


Performed major overall of annotation screen. Extracted annotation canvas (SLAC) from flash, and made it a stand-alone component. Also added very basic layered corpora support (import/export won't function properly related to them, probably).

  • ENH #55: Pull out Slate Annotation Canvas (SLAC) and create GWT widget with it
  • ENH #60: Slac: Create needed controls for new screen
  • ENH #80: Slac controls: palette (tag def selector)
  • BUG #76: Properly handle link references to reference corpus versions on save
  • ENH #79: Slac controls: segments/links list
  • ENH #77: Slac controls: doc info panel
  • ENH #82: Create internal structures for referencing multiple corpus versions
  • ENH #78: Slac controls: settings panel
  • ENH #59: Slac: Create new Activity / Place (screen) for Slac Annotator
  • ENH #62: Add selector to project details screen for selecting reference project/corpus version
  • ENH #75: Show Slac preview of document on selection screen
  • TSK #54: Merge Flash and GWT repositories
  • ENH #57: Slac: Strip down flash to be a stand-alone panel
  • ENH #61: Slac: Add support for read-only segments/links
  • ENH #58: Slac: Create GWT wrapper classes for interacting with Slac SWF


  • ??: Changing some popup-selectors to use regular select boxes.


  • BUG #52: Corpus version creation was not saving segment end chars properly.


  • ENH #3: Zero-length segment support in annotator.
  • ENH #34: Character offset handling options for SLAT importer.
  • ENH #19: Attributes on links.
  • BUG #48: Show source/dest segment info for links in inspector.
  • ENH #49: Add attributes for links to inspector.


  • BUG #42: Corpus Creation stopped working properly with moving to one-tx-per-request
  • ENH #43: Add ability to "su" to other users
  • BUG #44: Hide settings screen until it's actually functional
  • ENH #45: Show Version/Login Info in Page Footer
  • Merged create new/add to existing buttons on documents screen
  • BUG #46: User Details page now has proper, browser navigable URL.


  • Fixed issue with uploaded text documents on document screen