You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by jo...@apache.org on 2011/08/01 15:54:22 UTC

svn commit: r1152774 [5/6] - in /uima/sandbox/trunk/TextMarker: org.apache.uima.tm.cev.feature/ org.apache.uima.tm.cev.html.feature/ org.apache.uima.tm.cev.html/ org.apache.uima.tm.cev.html/META-INF/ org.apache.uima.tm.cev.html/bin/ org.apache.uima.tm....

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,566 @@
+package org.apache.uima.tm.cev.views;
+
+import java.util.HashSet;
+import java.util.List;
+
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.tm.cev.CEVPlugin;
+import org.apache.uima.tm.cev.data.CEVData;
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.data.ICEVAnnotationListener;
+import org.apache.uima.tm.cev.data.tree.CEVAnnotationTreeNode;
+import org.apache.uima.tm.cev.data.tree.CEVFeatureTreeNode;
+import org.apache.uima.tm.cev.data.tree.CEVTypeTreeNode;
+import org.apache.uima.tm.cev.data.tree.ICEVRootTreeNode;
+import org.apache.uima.tm.cev.data.tree.ICEVTreeNode;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.apache.uima.tm.cev.preferences.CEVPreferenceConstants;
+import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.ColorDialog;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.part.IPageSite;
+import org.eclipse.ui.part.Page;
+
+
+/**
+ * TreeViewPage mit ToolTip-Unterstuetzung
+ * 
+ * @author Marco Nehmeier
+ */
+public abstract class CEVAnnotationTreeViewPage extends Page implements ICEVViewPage,
+        ICEVAnnotationListener, MouseListener, IDoubleClickListener, IPropertyChangeListener,
+        ICEVView, Listener {
+
+  /**
+   * ToolTip-Listener
+   * 
+   * @author Marco Nehmeier
+   */
+  private class ToolTipListener implements Listener {
+
+    private static final String TOOLTIP_TEXT_END = "\nEnd: ";
+
+    private static final String TOOLTIP_TEXT_BEGIN = "Begin: ";
+
+    private Shell tip = null;
+
+    private Label label = null;
+
+    private Tree tree;
+
+    /**
+     * Konstruktor
+     * 
+     * @param tree
+     *          zugrundeliegender Tree
+     */
+    private ToolTipListener(Tree tree) {
+      this.tree = tree;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets .Event)
+     */
+    public void handleEvent(Event event) {
+      switch (event.type) {
+        case SWT.Dispose:
+        case SWT.KeyDown:
+          // beim Verlassen Tip wieder freigeben
+        case SWT.MouseMove: {
+          if (tip == null)
+            break;
+          tip.dispose();
+          tip = null;
+          label = null;
+          break;
+        }
+          // ToolTip anzeigen
+        case SWT.MouseHover: {
+          // TreeItem bestimmen
+          TreeItem item = tree.getItem(new Point(event.x, event.y));
+
+          if (item != null && item.getData() instanceof CEVAnnotationTreeNode) {
+            // Alten Tip freigeben
+            if (tip != null && !tip.isDisposed())
+              tip.dispose();
+
+            // Tip erzeugen
+            tip = new Shell(Display.getCurrent().getActiveShell(), SWT.ON_TOP | SWT.NO_FOCUS
+                    | SWT.TOOL);
+
+            // Farben setzen
+            tip.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
+            FillLayout layout = new FillLayout();
+            layout.marginWidth = 2;
+            tip.setLayout(layout);
+
+            // Lable
+            label = new Label(tip, SWT.NONE);
+            label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
+            label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
+
+            AnnotationFS annot = ((CEVAnnotationTreeNode) item.getData()).getAnnotation();
+
+            // Text setzten
+            label
+                    .setText(TOOLTIP_TEXT_BEGIN + annot.getBegin() + TOOLTIP_TEXT_END
+                            + annot.getEnd());
+
+            // Zeichnen
+            Point size = tip.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+            Rectangle rect = item.getBounds(0);
+            Point pt = tree.toDisplay(rect.x, rect.y);
+            tip.setBounds(pt.x, pt.y, size.x, size.y);
+            tip.setVisible(true);
+          }
+        }
+      }
+    }
+  }
+
+  protected CEVViewer casView;
+
+  private CheckboxTreeViewer treeView;
+
+  private CEVDocument casDocument;
+
+  private CEVData casData;
+
+  private CEVAnnotationTreeViewLableProvider lableProvider;
+
+  protected Text filterTextField;
+
+  protected String manualTypeFilter = "";
+
+  private Composite overlay;
+
+  /**
+   * Konstruktor
+   * 
+   * @param casView
+   *          CASViewer
+   * @param casData
+   *          CASData
+   */
+  public CEVAnnotationTreeViewPage(CEVViewer casView, CEVDocument casDocument, int index) {
+    super();
+    this.casView = casView;
+    this.casDocument = casDocument;
+
+    this.casData = casDocument.getCASData(index);
+    casData.addAnnotationListener(this);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#init(org.eclipse.ui.part.IPageSite)
+   */
+  @Override
+  public void init(IPageSite pageSite) {
+    super.init(pageSite);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#createControl(org.eclipse.swt.widgets.Composite)
+   */
+  @Override
+  public void createControl(Composite parent) {
+    this.overlay = new Composite(parent, SWT.NONE);
+    GridLayout layout = new GridLayout();
+    layout.horizontalSpacing = 0;
+    layout.verticalSpacing = 0;
+    layout.marginWidth = 0;
+    layout.marginHeight = 0;
+    // FillLayout layout = new FillLayout(SWT.VERTICAL);
+    overlay.setLayout(layout);
+
+    filterTextField = new Text(overlay, SWT.SINGLE | SWT.BORDER);
+    GridData gd = new GridData();
+    gd.grabExcessHorizontalSpace = true;
+    gd.horizontalAlignment = GridData.FILL;
+    gd.horizontalSpan = 1;
+    filterTextField.setLayoutData(gd);
+    filterTextField.setToolTipText("Retain types that contain...");
+    filterTextField.addListener(SWT.KeyUp, this);
+    filterTextField.addListener(SWT.MouseUp, this);
+    filterTextField.addListener(SWT.Modify, this);
+
+    treeView = new CheckboxTreeViewer(overlay, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+    gd = new GridData(GridData.FILL_BOTH);
+    treeView.getTree().setLayoutData(gd);
+    treeView.setContentProvider(new CEVAnnotationTreeViewContentProvider());
+    lableProvider = new CEVAnnotationTreeViewLableProvider(casData);
+    treeView.setLabelProvider(lableProvider);
+    // Listender registrieren
+    treeView.addCheckStateListener(casData);
+    treeView.addDoubleClickListener(this);
+    treeView.getTree().addMouseListener(this);
+
+    // ToolTip Listener
+    ToolTipListener tl = new ToolTipListener(treeView.getTree());
+
+    treeView.getTree().addListener(SWT.Dispose, tl);
+    treeView.getTree().addListener(SWT.KeyDown, tl);
+    treeView.getTree().addListener(SWT.MouseMove, tl);
+    treeView.getTree().addListener(SWT.MouseHover, tl);
+    int ops = DND.DROP_COPY | DND.DROP_MOVE;
+    Transfer[] transfers = new Transfer[] { TextTransfer.getInstance() };
+    treeView.addDragSupport(ops, transfers, new CEVAnnotationTreeViewDragListener(treeView));
+
+    CEVPlugin.getDefault().getPluginPreferences().addPropertyChangeListener(this);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#dispose()
+   */
+  @Override
+  public void dispose() {
+    super.dispose();
+    overlay.dispose();
+    CEVPlugin.getDefault().getPluginPreferences().removePropertyChangeListener(this);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#getControl()
+   */
+  @Override
+  public Control getControl() {
+    return overlay;
+  }
+
+  /**
+   * Gibt den TreeView zurueck
+   * 
+   * @return TreeView
+   */
+  public CheckboxTreeViewer getTreeViewer() {
+    return treeView;
+  }
+
+  /**
+   * Gibt die CASData zurueck
+   * 
+   * @return CASData
+   */
+  public CEVData getCasData() {
+    return casData;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#setFocus()
+   */
+  @Override
+  public void setFocus() {
+    overlay.setFocus();
+  }
+
+  /**
+   * CAS-View hat sich geaendert
+   * 
+   * @param index
+   *          Index des Views
+   */
+  public void viewChanged(int newIndex) {
+    treeView.removeCheckStateListener(casData);
+    casData.removeAnnotationListener(this);
+    casData = casDocument.getCASData(newIndex);
+    treeView.addCheckStateListener(casData);
+    casData.addAnnotationListener(this);
+    lableProvider.setCASData(casData);
+    treeView.setInput(null);
+
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.uniwue.casviewer.data.ICASAnnotationStateListener#annotationStateChanged
+   * (org.apache.uima.cas.Type)
+   */
+  public void annotationStateChanged(Type type) {
+    if (treeView.getInput() == null)
+      return;
+
+    // Selektionen verwalten
+    Object input = treeView.getInput();
+
+    if (input instanceof ICEVRootTreeNode)
+      for (ICEVTreeNode n : ((ICEVRootTreeNode) input).getNodes(type))
+        if (n instanceof CEVAnnotationTreeNode)
+          treeView.setChecked(n, casData.isChecked(((CEVAnnotationTreeNode) n).getAnnotation()));
+        else if (n instanceof CEVTypeTreeNode) {
+          treeView.setGrayed(n, casData.isGrayed(type));
+          treeView.setChecked(n, casData.isChecked(type));
+        }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.uniwue.casviewer.data.ICASAnnotationStateListener#annotationStateChanged
+   * (org.apache.uima.cas.text.AnnotationFS)
+   */
+  public void annotationStateChanged(AnnotationFS annot) {
+    if (treeView.getInput() == null)
+      return;
+
+    // Selektionen verwalten
+    Object input = treeView.getInput();
+
+    if (input instanceof ICEVRootTreeNode)
+      for (ICEVTreeNode n : ((ICEVRootTreeNode) input).getNodes(annot.getType())) {
+        if (n instanceof CEVAnnotationTreeNode
+                && ((CEVAnnotationTreeNode) n).getAnnotation() == annot) {
+          treeView.setChecked(n, casData.isChecked(annot));
+
+        } else if (n instanceof CEVTypeTreeNode && annot.getType() == n.getType()) {
+          if (casData.isGrayed(n.getType()))
+            treeView.setGrayChecked(n, true);
+          else if (casData.isChecked(n.getType())) {
+            treeView.setGrayed(n, false);
+            treeView.setChecked(n, true);
+          } else {
+            treeView.setGrayChecked(n, false);
+          }
+        }
+      }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse
+   * .jface.viewers.DoubleClickEvent)
+   */
+  public void doubleClick(DoubleClickEvent event) {
+    // An Position im Dokument springen
+    if (event.getSelection() != null && event.getSelection() instanceof ITreeSelection) {
+      Object treeNode = ((ITreeSelection) event.getSelection()).getFirstElement();
+      if (treeNode instanceof CEVAnnotationTreeNode) {
+        casView.moveToAnnotation(((CEVAnnotationTreeNode) treeNode).getAnnotation());
+      }
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.uniwue.casviewer.data.ICASAnnotationColorListener#colorChanged(org
+   * .apache.uima.cas.Type)
+   */
+  public void colorChanged(Type type) {
+    treeView.refresh();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.swt.events.MouseListener#mouseDoubleClick(org.eclipse.swt .events.MouseEvent)
+   */
+  public void mouseDoubleClick(MouseEvent e) {
+  }
+
+  public void deleteSelectedAnnotations() {
+    if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Confirm Delete",
+            "Are you sure you want to delete these items?")) {
+
+      TreeItem[] items = treeView.getTree().getSelection();
+      HashSet<AnnotationFS> annots = new HashSet<AnnotationFS>();
+
+      // Annot selektieren
+      for (TreeItem it : items) {
+        if (it.getData() instanceof CEVAnnotationTreeNode) {
+          CEVAnnotationTreeNode annot = (CEVAnnotationTreeNode) it.getData();
+          annots.add(annot.getAnnotation());
+        } else if (it.getData() instanceof CEVTypeTreeNode) {
+          CEVTypeTreeNode type = (CEVTypeTreeNode) it.getData();
+
+          for (Object child : type.getChildren()) {
+            if (child instanceof CEVAnnotationTreeNode) {
+              CEVAnnotationTreeNode annot = (CEVAnnotationTreeNode) child;
+              annots.add(annot.getAnnotation());
+            }
+          }
+        }
+      }
+
+      // Loeschen
+      casData.removeAnnotations(annots.toArray(new AnnotationFS[annots.size()]));
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.swt.events.MouseListener#mouseDown(org.eclipse.swt.events .MouseEvent)
+   */
+  public void mouseDown(final MouseEvent mouseEvent) {
+    // Kontext-Menue anzeigen
+    if (mouseEvent.button == 3) {
+      Display display = Display.getCurrent();
+      Menu menu = new Menu(display.getActiveShell(), SWT.POP_UP);
+      MenuItem itemFgC = new MenuItem(menu, SWT.PUSH);
+
+      // Schriftfarbe
+      itemFgC.setText("Change Font Color");
+      itemFgC.addListener(SWT.Selection, new Listener() {
+        public void handleEvent(Event e) {
+          TreeItem item = treeView.getTree().getItem(new Point(mouseEvent.x, mouseEvent.y));
+
+          if (item != null && item.getData() instanceof ICEVTreeNode) {
+            Type type = ((ICEVTreeNode) item.getData()).getType();
+            ColorDialog cd = new ColorDialog(Display.getCurrent().getActiveShell());
+            cd.setRGB(casData.getForegroundColor(type).getRGB());
+
+            RGB rgb = cd.open();
+
+            if (rgb != null)
+              casData.setForegroundColor(type, new Color(Display.getCurrent(), rgb));
+          }
+        }
+      });
+
+      // Hintergrundfarbe
+      MenuItem itemBgC = new MenuItem(menu, SWT.PUSH);
+      itemBgC.setText("Change Background Color");
+      itemBgC.addListener(SWT.Selection, new Listener() {
+        public void handleEvent(Event e) {
+          TreeItem item = treeView.getTree().getItem(new Point(mouseEvent.x, mouseEvent.y));
+
+          if (item != null && item.getData() instanceof ICEVTreeNode) {
+            Type type = ((ICEVTreeNode) item.getData()).getType();
+
+            ColorDialog cd = new ColorDialog(Display.getCurrent().getActiveShell());
+            cd.setRGB(casData.getBackgroundColor(type).getRGB());
+
+            RGB rgb = cd.open();
+
+            if (rgb != null)
+              casData.setBackgroundColor(type, new Color(Display.getCurrent(), rgb));
+          }
+        }
+      });
+
+      // Nur wenn Typ oder Annotation ausgewaehlt Menupunkte anzeigen
+      TreeItem item = treeView.getTree().getItem(new Point(mouseEvent.x, mouseEvent.y));
+      if (item != null && item.getData() instanceof CEVFeatureTreeNode) {
+        itemBgC.setEnabled(false);
+        itemFgC.setEnabled(false);
+      }
+
+      new MenuItem(menu, SWT.SEPARATOR);
+
+      // Annot loeschen
+      MenuItem itemDelA = new MenuItem(menu, SWT.PUSH);
+      itemDelA.setText("Delete selected Items");
+      itemDelA.addListener(SWT.Selection, new Listener() {
+        public void handleEvent(Event e) {
+          deleteSelectedAnnotations();
+        }
+      });
+
+      // Pruefen ob ueberhaupt etwas (Typ und/oder Annot) zum Loeschen
+      // selektiert => anzeigen des Menupunktes
+      itemDelA.setEnabled(false);
+      TreeItem[] items = treeView.getTree().getSelection();
+      for (TreeItem ti : items)
+        if (!(ti.getData() instanceof CEVFeatureTreeNode)) {
+          itemDelA.setEnabled(true);
+          break;
+        }
+
+      menu.setVisible(true);
+
+      while (!menu.isDisposed() && menu.isVisible()) {
+        if (!display.readAndDispatch())
+          display.sleep();
+      }
+      menu.dispose();
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @seeorg.eclipse.swt.events.MouseListener#mouseUp(org.eclipse.swt.events. MouseEvent)
+   */
+  public void mouseUp(MouseEvent e) {
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.data.ICEVAnnotationListener#annotationAdded(org.apache
+   * .uima.cas.text.AnnotationFS)
+   */
+  public abstract void annotationsAdded(List<AnnotationFS> annots);
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.data.ICEVAnnotationListener#annotationRemoved(org.apache
+   * .uima.cas.text.AnnotationFS)
+   */
+  public abstract void annotationsRemoved(List<AnnotationFS> annots);
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.core.runtime.Preferences$IPropertyChangeListener#propertyChange
+   * (org.eclipse.core.runtime.Preferences.PropertyChangeEvent)
+   */
+  public void propertyChange(PropertyChangeEvent event) {
+    if (event.getProperty().equals(CEVPreferenceConstants.P_ANNOTATION_REPR)) {
+      lableProvider.setTextRepr();
+      treeView.refresh();
+    }
+  }
+
+  public void casChanged(CEVDocument casDocument) {
+    this.casDocument = casDocument;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,116 @@
+package org.apache.uima.tm.cev.views;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.internal.views.ViewsPlugin;
+import org.eclipse.ui.part.IPage;
+import org.eclipse.ui.part.IPageBookViewPage;
+import org.eclipse.ui.part.MessagePage;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.ui.part.PageBookView;
+
+/**
+ * Abstrakter PageBookView fuer den AnnotationBrowser und den SelectionView.
+ * 
+ * @author Marco Nehmeier
+ */
+public abstract class CEVPageBookView extends PageBookView {
+
+  /**
+   * Text wenn kein View vom Editor zur Verfuegung gestellt wird.
+   */
+  private static final String VIEW_IS_NOT_AVAILABLE = "View is not available.";
+
+  // private PageRec last = null;
+
+  /**
+   * Defaultkonstruktor.
+   */
+  public CEVPageBookView() {
+    super();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#createDefaultPage(org.eclipse.ui.part.PageBook)
+   */
+  @Override
+  protected IPage createDefaultPage(PageBook book) {
+    // MessagePage wenn der View nicht zur Verfuegung steht
+    MessagePage page = new MessagePage();
+    initPage(page);
+    page.createControl(book);
+    page.setMessage(VIEW_IS_NOT_AVAILABLE);
+    return page;
+  }
+
+  /**
+   * Erzeugt die jeweilige Page
+   * 
+   * @param part
+   *          zugrundeliegender WorkbenchPart
+   * @param clazz
+   *          Klasse der Page
+   * @return PageRec
+   */
+  protected PageRec doCreatePage(IWorkbenchPart part, final Class<?> clazz) {
+    Object obj = ViewsPlugin.getAdapter(part, clazz, false);
+    if (obj instanceof ICEVViewPage) {
+      ICEVViewPage page = (ICEVViewPage) obj;
+      if (page instanceof IPageBookViewPage) {
+        initPage(page);
+      }
+      page.createControl(getPageBook());
+      PageRec pageRec = new PageRec(part, page);
+      // last = pageRec;
+      return pageRec;
+    } else {
+      return null;
+    }
+  }
+
+  //
+  // public void dispose() {
+  // last.dispose();
+  // super.dispose();
+  // }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#doDestroyPage(org.eclipse.ui.IWorkbenchPart,
+   * org.eclipse.ui.part.PageBookView.PageRec)
+   */
+  @Override
+  protected void doDestroyPage(IWorkbenchPart part, PageRec pageRecord) {
+    pageRecord.page.dispose();
+    pageRecord.dispose();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#getBootstrapPart()
+   */
+  @Override
+  protected IWorkbenchPart getBootstrapPart() {
+    IWorkbenchPage page = getSite().getPage();
+    if (page != null) {
+      return page.getActiveEditor();
+    }
+
+    return null;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#isImportant(org.eclipse.ui.IWorkbenchPart)
+   */
+  @Override
+  protected boolean isImportant(IWorkbenchPart part) {
+    return (part instanceof IEditorPart);
+  }
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,11 @@
+package org.apache.uima.tm.cev.views;
+
+import org.eclipse.ui.part.IPageBookViewPage;
+
+/**
+ * Interface fuer die PageBookViews fuer Views von CASViewer
+ * 
+ * @author Marco Nehmeier
+ */
+public interface ICEVViewPage extends IPageBookViewPage {
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,24 @@
+package org.apache.uima.tm.cev.views;
+
+public class TextUtils {
+
+  public static String shrinkNamespace(String namespace) {
+    String result = "";
+    if (namespace != null) {
+      String[] split = namespace.split("[.]");
+      for (int i = 0; i < split.length - 1; i++) {
+        if (split[i].length() != 0) {
+          result += split[i].charAt(0);
+          result += ".";
+        }
+      }
+      if (split.length == 0) {
+        return namespace;
+      } else {
+        result += split[split.length - 1];
+      }
+    }
+    return result;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,275 @@
+package org.apache.uima.tm.cev.views.annotationBrowser;
+
+import java.util.List;
+
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.tm.cev.CEVPlugin;
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.data.tree.CEVAnnotationTreeNode;
+import org.apache.uima.tm.cev.data.tree.CEVTypeTreeNode;
+import org.apache.uima.tm.cev.data.tree.ICEVRootTreeNode;
+import org.apache.uima.tm.cev.data.tree.ICEVTreeNode;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.preferences.CEVPreferenceConstants;
+import org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+
+
+/**
+ * Page fuer den AnnotationBrowserView
+ * 
+ * @author Marco Nehmeier
+ */
+public class CEVAnnotationBrowserPage extends CEVAnnotationTreeViewPage implements
+        ICEVAnnotationBrowserPage {
+
+  // Enum fuer den Zustand des Baums
+  private enum State {
+    // Nach Anfangs und Endposition dern Annotation
+    AnnotationOrdered,
+    // Nach Annotations-Typen
+    TypeOrdered
+  }
+
+  // Zustand des Baums
+  private State state;
+
+  // Icon der Action
+  private Image icon;
+
+  /**
+   * Konstruktor
+   * 
+   * @param casView
+   *          CASViewer
+   * @param casData
+   *          CASData
+   */
+  public CEVAnnotationBrowserPage(CEVViewer casView, CEVDocument casDocument, int index) {
+    super(casView, casDocument, index);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.uniwue.casviewer.views.CASAnnotationTreeViewPage#createControl(org
+   * .eclipse.swt.widgets.Composite)
+   */
+  @Override
+  public void createControl(Composite parent) {
+    super.createControl(parent);
+
+    // Annotationen im Baum anzeigen .... TypeOrdered und Zustand setzen
+    getTreeViewer().setInput(getCasData().getTypeOrderedTree(""));
+
+    getTreeViewer().getControl().addKeyListener(new KeyAdapter() {
+
+      @Override
+      public void keyPressed(KeyEvent e) {
+        int keyCode = e.keyCode;
+        // backspace or delete
+        if (keyCode == SWT.BS || keyCode == SWT.DEL) {
+          deleteSelectedAnnotations();
+        }
+      }
+
+    });
+
+    setTreeOrder();
+
+    List<Type> initialVisibleTypes = casView.getInitialVisibleTypes();
+    for (Type type : initialVisibleTypes) {
+      this.annotationStateChanged(type);
+    }
+  }
+
+  /**
+   * Baumordnung festlegen
+   */
+  private void setTreeOrder() {
+    IPreferenceStore store = CEVPlugin.getDefault().getPreferenceStore();
+    String treeOrder = store.getString(CEVPreferenceConstants.P_ANNOTATION_BROWSER_TREE_ORDER);
+
+    if (treeOrder.equals(CEVPreferenceConstants.P_ANNOTATION_BROWSER_TREE_ORDER_TYPE))
+      state = State.TypeOrdered;
+    else if (treeOrder.equals(CEVPreferenceConstants.P_ANNOTATION_BROWSER_TREE_ORDER_ANNOT))
+      state = State.AnnotationOrdered;
+    else
+      state = State.TypeOrdered;
+  }
+
+  /**
+   * Aus Performance-gruenden abgeschaltet
+   */
+  // /*
+  // * (non-Javadoc)
+  // *
+  // * @see org.eclipse.ui.part.Page#setActionBars(org.eclipse.ui.IActionBars)
+  // */
+  // public void setActionBars(IActionBars actionBars) {
+  // // Action zum Baumveraendern erzeugen
+  // Action treeChangeAction = new Action() {
+  // public void run() {
+  // // Baum umsortieren
+  // if (state == State.TypeOrdered) {
+  // // getTreeViewer().setInput(getCasData().getAnnotationOrderedTree());
+  // state = State.AnnotationOrdered;
+  // } else if (state == State.AnnotationOrdered) {
+  // // getTreeViewer().setInput(getCasData().getTypeOrderedTree());
+  // state = State.TypeOrdered;
+  // }
+  //
+  // // updateSelektion();
+  // reloadTree();
+  // }
+  // };
+  //
+  // // ToolTip
+  // treeChangeAction.setToolTipText("Change TreeView-Order");
+  //
+  // // Icon laden
+  // InputStream in = getClass().getResourceAsStream(
+  // "/icons/hierarchicalLayout.gif");
+  // if (in != null) {
+  // try {
+  // icon = new Image(Display.getCurrent(), in);
+  // } catch (SWTException e) {
+  // if (e.code != SWT.ERROR_INVALID_IMAGE) {
+  // throw e;
+  // // fall through otherwise
+  // }
+  // } finally {
+  // try {
+  // in.close();
+  // } catch (IOException e) {
+  // }
+  // }
+  // }
+  //
+  // // Icon setzen
+  // treeChangeAction.setImageDescriptor(
+  // ImageDescriptor.createFromImage(icon));
+  //
+  // // Action in die ToolBar setzen
+  // actionBars.getToolBarManager().add(treeChangeAction);
+  // }
+  /**
+   * Selektion aktuallisieren
+   */
+  private void updateSelection() {
+    // Selektionen aktuallisieren
+    Object input = getTreeViewer().getInput();
+
+    if (input instanceof ICEVRootTreeNode)
+      for (ICEVTreeNode n : ((ICEVRootTreeNode) input).getNodes())
+        if (n instanceof CEVAnnotationTreeNode) {
+          boolean checked = getCasData().isChecked(((CEVAnnotationTreeNode) n).getAnnotation());
+          if (checked) {
+            getTreeViewer().setChecked(n, true);
+          }
+        } else if (n instanceof CEVTypeTreeNode) {
+          if (getCasData().isGrayed(n.getType()))
+            getTreeViewer().setGrayChecked(n, true);
+          else if (getCasData().isChecked(n.getType())) {
+            getTreeViewer().setGrayed(n, false);
+            getTreeViewer().setChecked(n, true);
+          } else {
+            getTreeViewer().setGrayChecked(n, false);
+          }
+        }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#casDataChanged(int)
+   */
+  @Override
+  public void viewChanged(int index) {
+    super.viewChanged(index);
+    reloadTree();
+  }
+
+  /**
+   * Baum neu laden
+   */
+  private void reloadTree() {
+    if (state == State.TypeOrdered) {
+      getTreeViewer().setInput(getCasData().getTypeOrderedTree(manualTypeFilter));
+    } else if (state == State.AnnotationOrdered) {
+      getTreeViewer().setInput(getCasData().getAnnotationOrderedTree(manualTypeFilter));
+    }
+    updateSelection();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.uniwue.casviewer.views.CASAnnotationTreeViewPage#dispose()
+   */
+  @Override
+  public void dispose() {
+    // Icon freigeben
+    if (icon != null)
+      icon.dispose();
+
+    super.dispose();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#annotationAdded(org.
+   * apache.uima.cas.text.AnnotationFS)
+   */
+  @Override
+  public void annotationsAdded(List<AnnotationFS> annots) {
+    reloadTree();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#annotationRemoved(org
+   * .apache.uima.cas.text.AnnotationFS)
+   */
+  @Override
+  public void annotationsRemoved(List<AnnotationFS> annots) {
+    reloadTree();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#propertyChange(org.eclipse
+   * .core.runtime.Preferences.PropertyChangeEvent)
+   */
+  @Override
+  public void propertyChange(PropertyChangeEvent event) {
+    super.propertyChange(event);
+    if (event.getProperty().equals(CEVPreferenceConstants.P_ANNOTATION_BROWSER_TREE_ORDER)) {
+      setTreeOrder();
+      reloadTree();
+    }
+  }
+
+  public void newSelection(int offset) {
+
+  }
+
+  public void handleEvent(Event event) {
+    if (event.widget == filterTextField && event.type == SWT.Modify) {
+      manualTypeFilter = filterTextField.getText();
+      reloadTree();
+    }
+  }
+
+}
\ No newline at end of file

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,22 @@
+package org.apache.uima.tm.cev.views.annotationBrowser;
+
+import org.apache.uima.tm.cev.views.CEVPageBookView;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+public class CEVAnnotationBrowserView extends CEVPageBookView {
+  public CEVAnnotationBrowserView() {
+    super();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#doCreatePage(org.eclipse.ui.IWorkbenchPart)
+   */
+  @Override
+  protected PageRec doCreatePage(IWorkbenchPart part) {
+    return doCreatePage(part, ICEVAnnotationBrowserPage.class);
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,22 @@
+package org.apache.uima.tm.cev.views.annotationBrowser;
+
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.apache.uima.tm.cev.extension.ICEVViewFactory;
+
+public class CEVAnnotationBrowserViewFactory implements ICEVViewFactory {
+
+  public CEVAnnotationBrowserViewFactory() {
+  }
+
+  public ICEVView createView(CEVViewer viewer, CEVDocument cevDocument, int index) {
+    CEVAnnotationBrowserPage page = new CEVAnnotationBrowserPage(viewer, cevDocument, index);
+    return page;
+  }
+
+  public Class<?> getAdapterInterface() {
+    return ICEVAnnotationBrowserPage.class;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,6 @@
+package org.apache.uima.tm.cev.views.annotationBrowser;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+public interface ICEVAnnotationBrowserPage extends ICEVViewPage {
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.cev.views.editor;
+
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVEditor;
+import org.apache.uima.tm.cev.extension.ICEVEditorFactory;
+
+public class CEVAnnotationEditorFactory implements ICEVEditorFactory {
+
+  public CEVAnnotationEditorFactory() {
+  }
+
+  public ICEVEditor createEditor(CEVViewer viewer, CEVDocument cevDocument, int index) {
+    return new CEVAnnotationEditorPage(viewer, cevDocument, index);
+  }
+
+  public Class<?> getAdapterInterface() {
+    return ICEVAnnotationEditorPage.class;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,755 @@
+package org.apache.uima.tm.cev.views.editor;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.tm.cev.CEVPlugin;
+import org.apache.uima.tm.cev.data.CEVData;
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVEditor;
+import org.apache.uima.tm.cev.preferences.CEVPreferenceConstants;
+import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.custom.StyleRange;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+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.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Widget;
+import org.eclipse.ui.part.IPageSite;
+import org.eclipse.ui.part.Page;
+import org.htmlparser.util.ParserUtils;
+import org.htmlparser.util.Translate;
+
+
+public class CEVAnnotationEditorPage extends Page implements ICEVAnnotationEditorPage,
+        MouseListener, SelectionListener, IPropertyChangeListener, ICEVEditor, Listener {
+
+  private enum Drag {
+    start, end, none
+  }
+
+  private class Selection {
+    private int start;
+
+    private int end;
+
+    public Selection(int start, int end) {
+      this.start = start;
+      this.end = end;
+    }
+
+    public int getStart() {
+      return start;
+    }
+
+    public void setStart(int start) {
+      this.start = start;
+    }
+
+    public int getEnd() {
+      return end;
+    }
+
+    public void setEnd(int end) {
+      this.end = end;
+    }
+  }
+
+  private Composite pane;
+
+  private List<Selection> selections;
+
+  private StyledText textView;
+
+  private Table table;
+
+  private CEVDocument casDocument;
+
+  private Button createButton;
+
+  private Drag dragState;
+
+  private boolean text_repr;
+
+  private int current;
+
+  private Text typeFilterText;
+
+  private Table typeTable;
+
+  private List<String> types;
+
+  private List<String> selected;
+
+  /**
+   * Konstruktor
+   * 
+   * @param casView
+   *          CASViewer
+   * @param casData
+   *          CASData
+   */
+  public CEVAnnotationEditorPage(CEVViewer casView, CEVDocument casDocument, int index) {
+    super();
+    current = index;
+    // Textrep. setzen
+    setTextRepr();
+
+    // cas setzen
+    this.casDocument = casDocument;
+    selections = new ArrayList<Selection>();
+  }
+
+  /**
+   * Textdarstellung aus den Preferences auslesen
+   */
+  private void setTextRepr() {
+    IPreferenceStore store = CEVPlugin.getDefault().getPreferenceStore();
+    String repr = store.getString(CEVPreferenceConstants.P_ANNOTATION_REPR);
+
+    if (repr.equals(CEVPreferenceConstants.P_ANNOTATION_REPR_TEXT))
+      text_repr = true;
+    else if (repr.equals(CEVPreferenceConstants.P_ANNOTATION_REPR_HTML))
+      text_repr = false;
+    else
+      text_repr = true;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#init(org.eclipse.ui.part.IPageSite)
+   */
+  @Override
+  public void init(IPageSite pageSite) {
+    super.init(pageSite);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#createControl(org.eclipse.swt.widgets.Composite)
+   */
+  @Override
+  public void createControl(Composite parent) {
+    pane = new Composite(parent, SWT.NONE);
+
+    FormLayout formLayout = new FormLayout();
+    FormData formData;
+    pane.setLayout(formLayout);
+
+    /*
+     * Label label = new Label(pane, SWT.CENTER); label.setText("Type:"); formData = new FormData();
+     * formData.left = new FormAttachment(0, 5); formData.bottom = new FormAttachment(100, -5);
+     * label.setLayoutData(formData);
+     */
+
+    /*
+     * combo = new Combo(pane, SWT.READ_ONLY | SWT.DROP_DOWN); formData = new FormData();
+     * formData.left = new FormAttachment(label, 5); formData.bottom = new FormAttachment(100, -5);
+     * formData.width = 300; combo.setLayoutData(formData);
+     */
+
+    createButton = new Button(pane, SWT.PUSH);
+    createButton.addSelectionListener(this);
+    createButton.setText("Create Annotations");
+    formData = new FormData();
+    formData.left = new FormAttachment(null, 5);
+    formData.bottom = new FormAttachment(100, -5);
+    createButton.setLayoutData(formData);
+
+    /*
+     * composite = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout();
+     * gridLayout.numColumns = 2; composite.setLayout(gridLayout); formData = new FormData();
+     * formData.top = new FormAttachment(0, 0); formData.left = new FormAttachment(0, 0);
+     * formData.right = new FormAttachment(100, 0); composite.setLayoutData(formData); GridData
+     * gridData;
+     */
+
+    SashForm sashForm2 = new SashForm(pane, SWT.HORIZONTAL);
+    formData = new FormData();
+    formData.top = new FormAttachment(0, 0);
+    formData.left = new FormAttachment(0, 0);
+    formData.right = new FormAttachment(100, 0);
+    formData.bottom = new FormAttachment(createButton);
+    sashForm2.setLayoutData(formData);
+
+    SashForm sashForm = new SashForm(sashForm2, SWT.VERTICAL);
+    formData = new FormData();
+    formData.top = new FormAttachment(0, 0);
+    formData.left = new FormAttachment(0, 0);
+    formData.right = new FormAttachment(100, 0);
+    formData.bottom = new FormAttachment(createButton);
+    sashForm.setLayoutData(formData);
+
+    table = new Table(sashForm, SWT.SINGLE | SWT.BORDER);
+    table.addSelectionListener(this);
+    table.addMouseListener(this);
+
+    TableColumn tableColumn = new TableColumn(table, SWT.BORDER);
+    textView = new StyledText(sashForm, SWT.READ_ONLY | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+    textView.addMouseListener(this);
+
+    // Label placeHolder = new Label(sashForm2, SWT.FILL);
+    // placeHolder.setText("under construction");
+
+    // sc = new ScrolledComposite(sashForm2, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+    // compi = new Composite(sc, SWT.NONE);
+    // compi.setLayout(new GridLayout());
+    // // GridData gridData = new GridData();
+    //
+    // compi.addMouseListener(this);
+    // sc.setExpandHorizontal(true);
+    // sc.setExpandVertical(true);
+    // sc.setMinSize(compi.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+    // sc.setContent(compi);
+
+    // final int maxTitleLength = updateTypes();
+    // updateControl(maxTitleLength);
+
+    selected = new ArrayList<String>();
+    types = new ArrayList<String>(Arrays.asList(getCurrentCEVData().getTypeNames()));
+    Collections.sort(types);
+
+    Composite typeComposite = new Composite(sashForm2, SWT.NONE);
+    GridLayout layout = new GridLayout();
+    layout.marginHeight = 0;
+    layout.marginWidth = 0;
+    layout.verticalSpacing = 0;
+    layout.horizontalSpacing = 0;
+    typeComposite.setLayout(layout);
+    typeComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+    typeFilterText = newText(typeComposite, SWT.SINGLE, "Specify the type name");
+    typeFilterText.addListener(SWT.Modify, this);
+    typeTable = newTable(typeComposite, SWT.CHECK);
+    ((GridData) typeTable.getLayoutData()).heightHint = 250;
+    ((GridData) typeTable.getLayoutData()).minimumHeight = 100;
+    typeFilterText.addListener(SWT.CHECK, this);
+    displayFilteredTypes("");
+    //
+    // Point computeSize = typeComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+    // typeComposite.setSize(computeSize);
+    // System.out.println(computeSize);
+
+    sashForm.setWeights(new int[] { 1, 1 });
+    sashForm2.setWeights(new int[] { 2, 1 });
+    casDataChanged();
+    tableColumn.setWidth(1280);
+
+    CEVPlugin.getDefault().getPluginPreferences().addPropertyChangeListener(this);
+
+  }
+
+  private void displayFilteredTypes(String aTypeName) {
+    typeTable.setRedraw(false);
+    typeTable.removeAll();
+    String topEntry = "";
+    aTypeName = aTypeName.toLowerCase();
+    for (String type : types) {
+      String candidateTypeName = type.toLowerCase();
+      if (aTypeName.trim().equals("") || candidateTypeName.indexOf(aTypeName) != -1) {
+
+        if (topEntry.equals("")) {
+          topEntry = type;
+        }
+        TableItem item = new TableItem(typeTable, SWT.NULL);
+        item.setText(type);
+        if (selected.contains(item.getText())) {
+          item.setChecked(true);
+        }
+
+      }
+    }
+    typeTable.setRedraw(true);
+  }
+
+  protected Table newTable(Composite parent, int style) {
+    Table table = new Table(parent, style | SWT.BORDER);
+    GridData gd = new GridData(GridData.FILL_BOTH);
+    table.setLayoutData(gd);
+    table.addListener(SWT.Selection, this);
+    table.addListener(SWT.KeyUp, this);
+    return table;
+  }
+
+  protected Text newText(Composite parent, int style, String tip) {
+    Text t = new Text(parent, style | SWT.BORDER);
+    t.setToolTipText(tip);
+    t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+    t.addListener(SWT.KeyUp, this);
+    t.addListener(SWT.MouseUp, this);
+    return t;
+  }
+
+  /**
+   * CAS hat sich geaendert
+   * 
+   * @param casData
+   *          CAS
+   */
+  public void casDataChanged() {
+    table.removeAll();
+    selections.clear();
+    dragState = Drag.none;
+    if (getCurrentCEVData() != null) {
+      if (getCurrentCEVData().getDocumentText() != null)
+        textView.setText(getCurrentCEVData().getDocumentText());
+      else
+        textView.setText("");
+    }
+  }
+
+  /**
+   * Selektion anzeigen
+   * 
+   * @param start
+   *          Startpos
+   * @param end
+   *          Endpos
+   */
+  public void textSelected(int start, int end) {
+
+    String text = getCurrentCEVData().getDocumentText().substring(start, end);
+    IPreferenceStore store = CEVPlugin.getDefault().getPreferenceStore();
+    boolean trim = store.getBoolean(CEVPreferenceConstants.P_ANNOTATION_EDITOR_TRIM);
+
+    if (trim) {
+      String trimmed = text.trim();
+
+      int indexOf = text.indexOf(trimmed);
+
+      int trimmedStart = start + indexOf;
+      int trimmedEnd = end - (text.length() - (indexOf + trimmed.length()));
+
+      start = trimmedStart;
+      end = trimmedEnd;
+      text = getCurrentCEVData().getDocumentText().substring(start, end);
+    }
+
+    // Selektion vermerken
+    selections.add(new Selection(start, end));
+    TableItem item = new TableItem(table, SWT.NONE);
+    // Selektierten Text in Tabelle aufnehmen
+
+    // und wenn noetig HTML-Tags filtern
+    if (text_repr)
+      text = ParserUtils.trimSpacesBeginEnd(ParserUtils.trimAllTags(Translate.decode(text), false),
+              "");
+    item.setText(text);
+    // table.getColumn(0).pack();
+  }
+
+  /**
+   * Selektion anzeigen
+   */
+  private void paintSelection() {
+    int index = table.getSelectionIndex();
+
+    // Wenn in der Tabelle was ausgewaehlt
+    if (index >= 0) {
+      Selection sel = selections.get(index);
+      if (sel.getStart() >= 0 && sel.getStart() <= sel.getEnd()
+              && sel.getEnd() < textView.getCharCount()) {
+        // Stylerange anzeigen
+        textView.setStyleRanges(new int[] { sel.getStart(), sel.getEnd() - sel.getStart() },
+                new StyleRange[] { new StyleRange(sel.getStart(), sel.getEnd() - sel.getStart(),
+                        Display.getCurrent().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT), Display
+                                .getCurrent().getSystemColor(SWT.COLOR_LIST_SELECTION)) });
+
+        textView.setSelection(sel.getStart(), sel.getEnd());
+      } else {
+        textView.setStyleRanges(new StyleRange[0]);
+        textView.setSelection(textView.getCaretOffset());
+      }
+    }
+  }
+
+  /**
+   * alle Selektionen loeschen
+   */
+  private void clearAll() {
+    casDataChanged();
+  }
+
+  /**
+   * aktive Selektion entfernen
+   */
+  private void deleteSelected() {
+    int index = table.getSelectionIndex();
+
+    if (index >= 0) {
+      selections.remove(index);
+      table.remove(index);
+
+      if (table.getItemCount() > 0) {
+        index = index < table.getItemCount() ? index : index - 1;
+
+        table.setSelection(index);
+
+        dragState = Drag.none;
+
+        paintSelection();
+      } else
+        casDataChanged();
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#dispose()
+   */
+  @Override
+  public void dispose() {
+    super.dispose();
+    pane.dispose();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#getControl()
+   */
+  @Override
+  public Control getControl() {
+    return pane;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#setFocus()
+   */
+  @Override
+  public void setFocus() {
+    pane.setFocus();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.swt.events.MouseListener#mouseDoubleClick(org.eclipse.swt .events.MouseEvent)
+   */
+  public void mouseDoubleClick(MouseEvent e) {
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.swt.events.MouseListener#mouseDown(org.eclipse.swt.events .MouseEvent)
+   */
+  public void mouseDown(MouseEvent event) {
+    // rechte Maustaste in Tabelle => Kontextmenu
+    if (event.getSource() == table && event.button == 3) {
+      Display display = Display.getCurrent();
+      Menu menu = new Menu(display.getActiveShell(), SWT.POP_UP);
+
+      // aktive Selektion loeschen
+      MenuItem itemFgDeleteSelected = new MenuItem(menu, SWT.PUSH);
+
+      itemFgDeleteSelected.setText("Delete Selection");
+      itemFgDeleteSelected.addListener(SWT.Selection, new Listener() {
+        public void handleEvent(Event e) {
+          deleteSelected();
+        }
+      });
+
+      // alle Selektionen loeschen
+      MenuItem itemFgClearAll = new MenuItem(menu, SWT.PUSH);
+
+      itemFgClearAll.setText("Clear All");
+      itemFgClearAll.addListener(SWT.Selection, new Listener() {
+        public void handleEvent(Event e) {
+          clearAll();
+        }
+      });
+
+      menu.setVisible(true);
+
+      while (!menu.isDisposed() && menu.isVisible()) {
+        if (!display.readAndDispatch())
+          display.sleep();
+      }
+      menu.dispose();
+
+      // Selektion in der Detailansicht veraendern
+    } else if (event.getSource() == textView && event.button == 1 && table.getSelectionIndex() >= 0) {
+      Selection sel = selections.get(table.getSelectionIndex());
+
+      try {
+        // Anhand der Mausposition feststellen ob Anfang oder Ender der
+        // Selektion veraendert wird
+        int pos = textView.getOffsetAtLocation(new Point(event.x, event.y));
+        if (pos == sel.getStart())
+          dragState = Drag.start;
+        else if (pos == sel.getEnd())
+          dragState = Drag.end;
+      } catch (IllegalArgumentException e) {
+        dragState = Drag.none;
+      }
+    } else {
+      dragState = Drag.none;
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @seeorg.eclipse.swt.events.MouseListener#mouseUp(org.eclipse.swt.events. MouseEvent)
+   */
+  public void mouseUp(MouseEvent event) {
+    // Veraendern der Selektionen
+    if (event.getSource() == textView) {
+      if (event.button == 1 && dragState != Drag.none) {
+        Selection sel = selections.get(table.getSelectionIndex());
+
+        try {
+          int pos = textView.getOffsetAtLocation(new Point(event.x, event.y));
+
+          // Start der Selektion wurde veraendert
+          if (dragState == Drag.start && pos >= 0 && pos < sel.getEnd()) {
+            sel.setStart(pos);
+
+            String text = getCurrentCEVData().getDocumentText().substring(sel.getStart(),
+                    sel.getEnd());
+
+            // HTML-Tags filtern
+            if (text_repr)
+              text = ParserUtils.trimSpacesBeginEnd(ParserUtils.trimAllTags(Translate.decode(text),
+                      false), "");
+
+            table.getItem(table.getSelectionIndex()).setText(text);
+            // table.getColumn(0).pack();
+
+            // Ender der Selektion wurde veraendert
+          } else if (dragState == Drag.end && pos > sel.getStart() && pos < textView.getCharCount()) {
+            sel.setEnd(pos);
+
+            String text = getCurrentCEVData().getDocumentText().substring(sel.getStart(),
+                    sel.getEnd());
+
+            // HTML-Tags filtern
+            if (text_repr)
+              text = ParserUtils.trimSpacesBeginEnd(ParserUtils.trimAllTags(Translate.decode(text),
+                      false), "");
+
+            table.getItem(table.getSelectionIndex()).setText(text);
+            // table.getColumn(0).pack();
+          }
+        } catch (IllegalArgumentException e) {
+        }
+      }
+      dragState = Drag.none;
+      paintSelection();
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse
+   * .swt.events.SelectionEvent)
+   */
+  public void widgetDefaultSelected(SelectionEvent e) {
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
+   * .events.SelectionEvent)
+   */
+  public void widgetSelected(SelectionEvent e) {
+    // Auswahl in der Tabelle
+    if (e.getSource() == table) {
+      dragState = Drag.none;
+
+      // aktive Selektion anzeigen
+      paintSelection();
+
+      // Annotationen erzeugen
+    } else if (e.getSource() == createButton) {
+      for (String each : selected) {
+        Type t = getCurrentCEVData().getCAS().getTypeSystem().getType(each);
+        for (Selection s : selections) {
+          boolean update = selected.indexOf(each) >= selected.size();
+          getCurrentCEVData().addAnnotation(t, s.getStart(), s.getEnd(), update);
+        }
+
+      }
+      // Iterator<AnnotationTypeCheckButtonPanel> buttonIter = toggleButtons.listIterator();
+      // while (buttonIter.hasNext()) {
+      // AnnotationTypeCheckButtonPanel buttonPanel = buttonIter.next();
+      // if (buttonPanel.getButton().getSelection() == true) {
+      // }
+      // }
+      /*
+       * Iterator<Type> iter = types.iterator();
+       * 
+       * while (iter.hasNext()) { Type t = iter.next(); for (Selection s : selections)
+       * casData.addAnnotation(t, s.getStart(), s.getEnd(), !iter.hasNext()); }
+       */
+      /*
+       * Type t = casData.getTypeByIndex(combo.getSelectionIndex());
+       * 
+       * for (Selection s : selections) casData.addAnnotation(t, s.getStart(), s.getEnd());
+       */
+      clearAll();
+    }
+
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.core.runtime.Preferences$IPropertyChangeListener#propertyChange
+   * (org.eclipse.core.runtime.Preferences.PropertyChangeEvent)
+   */
+  public void propertyChange(PropertyChangeEvent event) {
+    if (event.getProperty().equals(CEVPreferenceConstants.P_ANNOTATION_REPR)) {
+      setTextRepr();
+    }
+  }
+
+  // private int updateTypes() {
+  // // int maxTitleLength = 0;
+  // // int size = casData.getTypeNames().length;
+  // // for (int i =0; i < size; i++) {
+  // // String typeName = casData.getTypeByIndex(i).getName();
+  // // if (!(type.getName().startsWith(
+  // // "de.uniwue.tm.textmarker.kernel.type")
+  // // || type.getName().startsWith("de.uniwue.tm.type")
+  // // || type.getName().startsWith("uima.cas") || type.getName()
+  // // .startsWith("uima.tcas"))) {
+  // // types.add(casData.getTypeByIndex(i));
+  // // if (maxTitleLength < typeName.length()) {
+  // // maxTitleLength = typeName.length();
+  // // }
+  // // }
+  // //
+  //
+  // if (this.getCurrentCEVData() == null) {
+  // return 0;
+  // }
+  // // Iterator ueber types holen
+  // Iterator typeIterator = this.getCurrentCEVData().getCAS().getTypeSystem().getTypeIterator();
+  // // maximale Titellaenge
+  // int maxTitleLength = 0;
+  // // Liste leeren und mit aktuellen, relevanten types neu befuellen, sowie
+  // // laengsten titel finden:
+  // types.clear();
+  //
+  // while (typeIterator.hasNext()) {
+  // Type type = (Type) typeIterator.next();
+  // if (!(type.getName().startsWith("de.uniwue.tm.textmarker.kernel.type")
+  // || type.getName().startsWith("de.uniwue.tm.type")
+  // || type.getName().startsWith("uima.cas") || type.getName().startsWith("uima.tcas"))) {
+  // types.add(type);
+  // // maxTitelSuche:
+  // int typeShortName = type.getShortName().length();
+  // if (typeShortName > maxTitleLength) {
+  // maxTitleLength = typeShortName;
+  // }
+  // }
+  //
+  // }
+  // // Liste sortieren
+  // Collections.sort(types, new TypeComparator());
+  // return maxTitleLength;
+  // }
+
+  // private void updateControl(int maxTitleLength) {
+  // // toggleButton Liste leeren, vorsicht - richtig aushaengen
+  // for (AnnotationTypeCheckButtonPanel it : toggleButtons) {
+  // it.dispose();
+  // }
+  // toggleButtons.clear();
+  // // button-liste neu erstellen
+  // for (Iterator<Type> iterator = types.iterator(); iterator.hasNext();) {
+  // toggleButtons.add(new AnnotationTypeCheckButtonPanel(compi, iterator.next(), maxTitleLength));
+  // }
+  // compi.layout(true);
+  // sc.setContent(compi);
+  // sc.setMinSize(compi.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+  //
+  // }
+
+  protected CEVData getCurrentCEVData() {
+    return casDocument.getCASData(current);
+  }
+
+  public void viewChanged(int newIndex) {
+    current = newIndex;
+    casDataChanged();
+  }
+
+  public void annotationsAdded(List<AnnotationFS> annots) {
+
+  }
+
+  public void annotationsRemoved(List<AnnotationFS> annots) {
+
+  }
+
+  public void annotationStateChanged(Type type) {
+
+  }
+
+  public void annotationStateChanged(AnnotationFS annot) {
+
+  }
+
+  public void colorChanged(Type type) {
+
+  }
+
+  public void casChanged(CEVDocument casDocument) {
+    this.casDocument = casDocument;
+  }
+
+  @Override
+  public void handleEvent(Event event) {
+    if (event.widget == typeFilterText && event.type == SWT.Modify) {
+      displayFilteredTypes(typeFilterText.getText());
+    } else if (event.widget == typeTable) {
+      Widget item = event.item;
+      if (item instanceof TableItem) {
+        TableItem ti = (TableItem) item;
+        if (ti.getChecked()) {
+          selected.add(ti.getText());
+        } else {
+          selected.remove(ti.getText());
+        }
+      }
+    }
+
+  }
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,107 @@
+package org.apache.uima.tm.cev.views.editor;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.internal.views.ViewsPlugin;
+import org.eclipse.ui.part.IPage;
+import org.eclipse.ui.part.MessagePage;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.ui.part.PageBookView;
+
+
+/**
+ * CEVAnnotationEditorView des CASViewer
+ * 
+ * @author Marco Nehmeier
+ */
+public class CEVAnnotationEditorView extends PageBookView {
+
+  /**
+   * Text wenn kein View vom Editor zur Verfuegung gestellt wird.
+   */
+  private static final String VIEW_IS_NOT_AVAILABLE = "View is not available.";
+
+  /**
+   * Defaultkonstruktor.
+   */
+  public CEVAnnotationEditorView() {
+    super();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#createDefaultPage(org.eclipse.ui.part .PageBook)
+   */
+  @Override
+  protected IPage createDefaultPage(PageBook book) {
+    // MessagePage wenn der View nicht zur Verfuegung steht
+    MessagePage page = new MessagePage();
+    initPage(page);
+    page.createControl(book);
+    page.setMessage(VIEW_IS_NOT_AVAILABLE);
+    return page;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#doCreatePage(org.eclipse.ui.IWorkbenchPart )
+   */
+  @Override
+  protected PageRec doCreatePage(IWorkbenchPart part) {
+    // vom Plugin holen
+    Object obj = ViewsPlugin.getAdapter(part, ICEVAnnotationEditorPage.class, false);
+
+    // Wenn ICASViewPage
+    if (obj instanceof ICEVViewPage) {
+      ICEVViewPage page = (ICEVViewPage) obj;
+
+      // Control erzeugen
+      page.createControl(getPageBook());
+      return new PageRec(part, page);
+    }
+
+    return null;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#doDestroyPage(org.eclipse.ui.IWorkbenchPart ,
+   * org.eclipse.ui.part.PageBookView.PageRec)
+   */
+  @Override
+  protected void doDestroyPage(IWorkbenchPart part, PageRec pageRecord) {
+    pageRecord.page.dispose();
+    pageRecord.dispose();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#getBootstrapPart()
+   */
+  @Override
+  protected IWorkbenchPart getBootstrapPart() {
+    IWorkbenchPage page = getSite().getPage();
+    if (page != null) {
+      return page.getActiveEditor();
+    }
+
+    return null;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#isImportant(org.eclipse.ui.IWorkbenchPart )
+   */
+  @Override
+  protected boolean isImportant(IWorkbenchPart part) {
+    return (part instanceof IEditorPart);
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,12 @@
+package org.apache.uima.tm.cev.views.editor;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+/**
+ * Interface fuer eine EditorPage im CASViewer
+ * 
+ * @author Marco Nehmeier
+ */
+public interface ICEVAnnotationEditorPage extends ICEVViewPage {
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,165 @@
+package org.apache.uima.tm.cev.views.fsBrowser;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.FSIterator;
+import org.apache.uima.cas.FeatureStructure;
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.TypeSystem;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.tm.cev.data.CEVData;
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.data.tree.CEVTypeOrderedRootTreeNode;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.apache.uima.tm.cev.views.CEVAnnotationTreeViewContentProvider;
+import org.apache.uima.tm.cev.views.CEVAnnotationTreeViewLableProvider;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.part.Page;
+
+
+public class CEVFSBrowserPage extends Page implements ICEVFSBrowserPage, ICEVView {
+
+  private Image icon;
+
+  private CEVViewer casView;
+
+  private CEVDocument casDocument;
+
+  private CEVData casData;
+
+  private CheckboxTreeViewer treeView;
+
+  private CEVAnnotationTreeViewLableProvider lableProvider;
+
+  public CEVFSBrowserPage(CEVViewer casView, CEVDocument casDocument, int index) {
+    super();
+    this.casView = casView;
+    this.casDocument = casDocument;
+
+    this.casData = casDocument.getCASData(index);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.uniwue.casviewer.views.CASAnnotationTreeViewPage#createControl(org
+   * .eclipse.swt.widgets.Composite)
+   */
+  @Override
+  public void createControl(Composite parent) {
+    treeView = new CheckboxTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+
+    treeView.setContentProvider(new CEVAnnotationTreeViewContentProvider());
+    lableProvider = new CEVAnnotationTreeViewLableProvider(casData);
+    treeView.setLabelProvider(lableProvider);
+
+    treeView.addCheckStateListener(casData);
+    treeView.setInput(getFSTree());
+  }
+
+  private Object getFSTree() {
+    CEVTypeOrderedRootTreeNode root = new CEVTypeOrderedRootTreeNode();
+    Collection<FeatureStructure> fss = getFSs();
+    for (FeatureStructure each : fss) {
+      root.insertFS(each);
+    }
+    root.sort();
+    return root;
+  }
+
+  private Collection<FeatureStructure> getFSs() {
+    Collection<FeatureStructure> result = new ArrayList<FeatureStructure>();
+    CAS cas = casData.getCAS();
+    TypeSystem typeSystem = cas.getTypeSystem();
+    Type annotationBaseType = typeSystem.getType("uima.cas.AnnotationBase");
+    List<?> types = typeSystem.getProperlySubsumedTypes(typeSystem.getTopType());
+    for (Object object : types) {
+      if (object instanceof Type) {
+        Type type = (Type) object;
+        if (!typeSystem.subsumes(cas.getAnnotationType(), type)
+                && !typeSystem.subsumes(annotationBaseType, type)) {
+          FSIterator iterator = cas.getIndexRepository().getAllIndexedFS(type);
+          while (iterator.isValid()) {
+            FeatureStructure fs = iterator.get();
+            result.add(fs);
+            iterator.moveToNext();
+          }
+        }
+      }
+    }
+    return result;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#casDataChanged(int)
+   */
+  public void viewChanged(int index) {
+    casData = casDocument.getCASData(index);
+    reloadTree();
+  }
+
+  /**
+   * Baum neu laden
+   */
+  private void reloadTree() {
+    treeView.setInput(getFSTree());
+    treeView.refresh();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.uniwue.casviewer.views.CASAnnotationTreeViewPage#dispose()
+   */
+  @Override
+  public void dispose() {
+    // Icon freigeben
+    if (icon != null)
+      icon.dispose();
+
+    super.dispose();
+  }
+
+  public void newSelection(int offset) {
+
+  }
+
+  @Override
+  public Control getControl() {
+    return treeView.getControl();
+  }
+
+  @Override
+  public void setFocus() {
+    getControl().setFocus();
+  }
+
+  public void casChanged(CEVDocument casDocument) {
+    this.casDocument = casDocument;
+  }
+
+  public void annotationsAdded(List<AnnotationFS> annots) {
+  }
+
+  public void annotationsRemoved(List<AnnotationFS> annots) {
+  }
+
+  public void annotationStateChanged(Type type) {
+  }
+
+  public void annotationStateChanged(AnnotationFS annot) {
+  }
+
+  public void colorChanged(Type type) {
+  }
+}
\ No newline at end of file

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,23 @@
+package org.apache.uima.tm.cev.views.fsBrowser;
+
+import org.apache.uima.tm.cev.views.CEVPageBookView;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+public class CEVFSBrowserView extends CEVPageBookView {
+
+  public CEVFSBrowserView() {
+    super();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#doCreatePage(org.eclipse.ui.IWorkbenchPart)
+   */
+  @Override
+  protected PageRec doCreatePage(IWorkbenchPart part) {
+    return doCreatePage(part, ICEVFSBrowserPage.class);
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.cev.views.fsBrowser;
+
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.apache.uima.tm.cev.extension.ICEVViewFactory;
+
+public class CEVFSBrowserViewFactory implements ICEVViewFactory {
+
+  public CEVFSBrowserViewFactory() {
+  }
+
+  public ICEVView createView(CEVViewer viewer, CEVDocument cevDocument, int index) {
+    return new CEVFSBrowserPage(viewer, cevDocument, index);
+  }
+
+  public Class<?> getAdapterInterface() {
+    return ICEVFSBrowserPage.class;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,6 @@
+package org.apache.uima.tm.cev.views.fsBrowser;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+public interface ICEVFSBrowserPage extends ICEVViewPage {
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.cev.views.palette;
+
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVEditor;
+import org.apache.uima.tm.cev.extension.ICEVEditorFactory;
+
+public class CEVAnnotationMarkerPaletteFactory implements ICEVEditorFactory {
+
+  public CEVAnnotationMarkerPaletteFactory() {
+  }
+
+  public ICEVEditor createEditor(CEVViewer viewer, CEVDocument cevDocument, int index) {
+    return new CEVAnnotationMarkerPalettePage(viewer, cevDocument, index);
+  }
+
+  public Class<?> getAdapterInterface() {
+    return ICEVAnnotationMarkerPalettePage.class;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain