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 17:21:14 UTC

svn commit: r1152822 [2/3] - in /uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions: ./ META-INF/ bin/ icons/ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/uima/ src/main/jav...

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamTableContentProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamTableContentProvider.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamTableLabelProvider.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamTableLabelProvider.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamTableLabelProvider.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamTableLabelProvider.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,64 @@
+package org.apache.uima.tm.textmarker.cev.explain.basic;
+
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.swt.SWT;
+
+public class BasicTokenStreamTableLabelProvider {
+
+  public void createColumns(TableViewer viewer) {
+    String[] titles = { "Begin", "End", "Typ", "Text" };
+    int[] bounds = { 50, 50, 70, 200 };
+
+    int i = 0;
+    TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
+    column.getColumn().setWidth(bounds[i]);
+    column.getColumn().setText(titles[i]);
+    column.getColumn().setMoveable(true);
+    column.setLabelProvider(new ColumnLabelProvider() {
+      @Override
+      public String getText(Object element) {
+        return "" + ((BasicTokenEntry) element).getAnnotation().getBegin();
+      }
+    });
+
+    i++;
+    column = new TableViewerColumn(viewer, SWT.NONE);
+    column.getColumn().setWidth(bounds[i]);
+    column.getColumn().setText(titles[i]);
+    column.getColumn().setMoveable(true);
+    column.setLabelProvider(new ColumnLabelProvider() {
+      @Override
+      public String getText(Object element) {
+        return "" + ((BasicTokenEntry) element).getAnnotation().getEnd();
+      }
+    });
+
+    i++;
+    column = new TableViewerColumn(viewer, SWT.NONE);
+    column.getColumn().setWidth(bounds[i]);
+    column.getColumn().setText(titles[i]);
+    column.getColumn().setMoveable(true);
+    column.setLabelProvider(new ColumnLabelProvider() {
+
+      @Override
+      public String getText(Object element) {
+        return ((BasicTokenEntry) element).getTyp();
+      }
+    });
+
+    i++;
+    column = new TableViewerColumn(viewer, SWT.NONE);
+    column.getColumn().setWidth(bounds[i]);
+    column.getColumn().setText(titles[i]);
+    column.getColumn().setMoveable(true);
+    column.setLabelProvider(new ColumnLabelProvider() {
+
+      @Override
+      public String getText(Object element) {
+        return ((BasicTokenEntry) element).getText();
+      }
+    });
+  }
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamTableLabelProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamTableLabelProvider.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamView.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamView.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,23 @@
+package org.apache.uima.tm.textmarker.cev.explain.basic;
+
+import org.apache.uima.tm.cev.views.CEVPageBookView;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+//import org.apache.uima.tm.cas.ui.views.CASAnnotationTreeViewPage;
+
+public class BasicTokenStreamView extends CEVPageBookView {
+
+  public BasicTokenStreamView() {
+    super();
+
+  }
+
+  @Override
+  protected PageRec doCreatePage(IWorkbenchPart part) {
+
+    return doCreatePage(part, IBasicTokenStreamViewPage.class);
+
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamView.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamView.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewFactory.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewFactory.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.textmarker.cev.explain.basic;
+
+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 BasicTokenStreamViewFactory implements ICEVViewFactory {
+
+  public BasicTokenStreamViewFactory() {
+  }
+
+  public ICEVView createView(CEVViewer viewer, CEVDocument cevDocument, int index) {
+    return new BasicTokenStreamViewPage(viewer, cevDocument, index);
+  }
+
+  public Class<?> getAdapterInterface() {
+    return IBasicTokenStreamViewPage.class;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewFactory.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewPage.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewPage.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,128 @@
+package org.apache.uima.tm.textmarker.cev.explain.basic;
+
+import java.util.List;
+
+import org.apache.uima.cas.Type;
+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.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.part.Page;
+
+
+public class BasicTokenStreamViewPage extends Page implements IBasicTokenStreamViewPage, ICEVView,
+        IDoubleClickListener {
+
+  private TableViewer tableViewer;
+
+  private CEVViewer casViewer;
+
+  private CEVDocument casDoc;
+
+  private int current = 0;
+
+  private BasicTokenStreamTableContentProvider provider;
+
+  public BasicTokenStreamViewPage(CEVViewer casViewer, CEVDocument casDoc, int index) {
+    this.casDoc = casDoc;
+    this.casViewer = casViewer;
+    this.current = index;
+  }
+
+  @Override
+  public void createControl(Composite parent) {
+    tableViewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL
+            | SWT.FULL_SELECTION);
+    provider = new BasicTokenStreamTableContentProvider(getCurrentCEVData());
+    tableViewer.setContentProvider(provider);
+    BasicTokenStreamTableLabelProvider columnLabels = new BasicTokenStreamTableLabelProvider();
+    columnLabels.createColumns(tableViewer);
+    // Set the header to visible
+    tableViewer.getTable().setHeaderVisible(true);
+    // Set the line of the table visible
+    tableViewer.getTable().setLinesVisible(true);
+    tableViewer.setInput(getSite());
+    tableViewer.addDoubleClickListener(this);
+  }
+
+  @Override
+  public Control getControl() {
+    return tableViewer.getControl();
+  }
+
+  public CEVData getCurrentCEVData() {
+    return casDoc.getCASData(current);
+  }
+
+  @Override
+  public void setFocus() {
+    tableViewer.getControl().setFocus();
+  }
+
+  public TableViewer getViewer() {
+    return this.tableViewer;
+  }
+
+  public void newSelection(int offset) {
+    Object obj = getElementAt(offset);
+    StructuredSelection selection = new StructuredSelection(obj);
+    tableViewer.setSelection(selection, true);
+  }
+
+  private Object getElementAt(int offset) {
+    if (provider != null) {
+      return provider.getEntryAt(offset);
+    }
+    return null;
+  }
+
+  public void viewChanged(int newIndex) {
+    getCurrentCEVData().removeAnnotationListener(this);
+    current = newIndex;
+    getCurrentCEVData().addAnnotationListener(this);
+    provider.init(getCurrentCEVData());
+    tableViewer.refresh();
+  }
+
+  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 doubleClick(DoubleClickEvent event) {
+    if (event.getSelection() != null && event.getSelection() instanceof IStructuredSelection) {
+      Object entry = ((IStructuredSelection) event.getSelection()).getFirstElement();
+      if (entry instanceof BasicTokenEntry) {
+        casViewer.moveToAnnotation(((BasicTokenEntry) entry).getAnnotation());
+      }
+    }
+  }
+
+  public void casChanged(CEVDocument casDocument) {
+    this.casDoc = casDocument;
+  }
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/BasicTokenStreamViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/IBasicTokenStreamViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/IBasicTokenStreamViewPage.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/IBasicTokenStreamViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/IBasicTokenStreamViewPage.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,7 @@
+package org.apache.uima.tm.textmarker.cev.explain.basic;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+public interface IBasicTokenStreamViewPage extends ICEVViewPage {
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/IBasicTokenStreamViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/basic/IBasicTokenStreamViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeContentProvider.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeContentProvider.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeContentProvider.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeContentProvider.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,44 @@
+package org.apache.uima.tm.textmarker.cev.explain.element;
+
+import org.apache.uima.tm.textmarker.cev.explain.tree.IExplainTreeNode;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+
+public class ElementTreeContentProvider implements ITreeContentProvider {
+
+  public Object[] getChildren(Object parentElement) {
+    if (parentElement instanceof IExplainTreeNode) {
+      IExplainTreeNode debugNode = (IExplainTreeNode) parentElement;
+      return debugNode.getChildren().toArray();
+    }
+    return null;
+  }
+
+  public Object getParent(Object element) {
+    if (element instanceof IExplainTreeNode) {
+      return ((IExplainTreeNode) element).getParent();
+    }
+    return null;
+
+  }
+
+  public Object[] getElements(Object element) {
+    return getChildren(element);
+  }
+
+  public boolean hasChildren(Object parentElement) {
+    if (parentElement instanceof IExplainTreeNode) {
+      IExplainTreeNode debugNode = (IExplainTreeNode) parentElement;
+      return debugNode.hasChildren();
+    }
+    return false;
+  }
+
+  public void dispose() {
+  }
+
+  public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeContentProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeContentProvider.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeLabelProvider.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeLabelProvider.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeLabelProvider.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeLabelProvider.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,79 @@
+package org.apache.uima.tm.textmarker.cev.explain.element;
+
+import org.apache.uima.cas.Feature;
+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.textmarker.cev.TextMarkerCEVPlugin;
+import org.apache.uima.tm.textmarker.cev.explain.tree.ConditionNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.ExplainTree;
+import org.apache.uima.tm.textmarker.cev.explain.tree.IExplainTreeNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.RuleElementMatchNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.RuleElementMatchesNode;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+
+public class ElementTreeLabelProvider extends LabelProvider implements ILabelProvider {
+
+  private ElementViewPage owner;
+
+  public ElementTreeLabelProvider(ElementViewPage owner) {
+    super();
+    this.owner = owner;
+  }
+
+  @Override
+  public Image getImage(Object element) {
+    if (element instanceof RuleElementMatchNode) {
+      RuleElementMatchNode rem = (RuleElementMatchNode) element;
+      boolean matched = rem.matched();
+      return owner.getImage(TextMarkerCEVPlugin.RULE_ELEMENT_MATCH_TYPE + matched);
+    } else if (element instanceof RuleElementMatchesNode) {
+      RuleElementMatchesNode rems = (RuleElementMatchesNode) element;
+      boolean matched = rems.matched();
+      return owner.getImage(TextMarkerCEVPlugin.RULE_ELEMENT_MATCHES_TYPE + matched);
+    } else if (element instanceof ConditionNode) {
+      ConditionNode rems = (ConditionNode) element;
+      boolean matched = rems.matched();
+      return owner.getImage(TextMarkerCEVPlugin.EVAL_CONDITION_TYPE + matched);
+    }
+    return owner.getImage("element");
+  }
+
+  @Override
+  public String getText(Object element) {
+    if (element instanceof IExplainTreeNode) {
+      IExplainTreeNode debugNode = (IExplainTreeNode) element;
+      TypeSystem ts = debugNode.getTypeSystem();
+
+      if (element instanceof RuleElementMatchesNode) {
+        Type type = ts.getType(TextMarkerCEVPlugin.RULE_ELEMENT_MATCHES_TYPE);
+        FeatureStructure fs = debugNode.getFeatureStructure();
+        Feature f = type.getFeatureByBaseName(ExplainTree.ELEMENT);
+        if (f != null) {
+          String v = fs.getStringValue(f);
+          return v;
+        }
+      } else if (element instanceof RuleElementMatchNode) {
+        FeatureStructure fs = debugNode.getFeatureStructure();
+        if (fs instanceof AnnotationFS) {
+          String s = ((AnnotationFS) fs).getCoveredText();
+          s = s.replaceAll("[\\n\\r]", "");
+          return s;
+        }
+      } else if (element instanceof ConditionNode) {
+        Type type = ts.getType(TextMarkerCEVPlugin.EVAL_CONDITION_TYPE);
+        FeatureStructure fs = debugNode.getFeatureStructure();
+        Feature f = type.getFeatureByBaseName(ExplainTree.ELEMENT);
+        if (f != null) {
+          String v = fs.getStringValue(f);
+          return v;
+        }
+      }
+    }
+    return element.toString();
+  }
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeLabelProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementTreeLabelProvider.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementView.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementView.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,18 @@
+package org.apache.uima.tm.textmarker.cev.explain.element;
+
+import org.apache.uima.tm.cev.views.CEVPageBookView;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+public class ElementView extends CEVPageBookView {
+
+  public ElementView() {
+    super();
+  }
+
+  @Override
+  protected PageRec doCreatePage(IWorkbenchPart part) {
+    return doCreatePage(part, IElementViewPage.class);
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementView.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementView.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewFactory.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewFactory.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.textmarker.cev.explain.element;
+
+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 ElementViewFactory implements ICEVViewFactory {
+
+  public ElementViewFactory() {
+  }
+
+  public ICEVView createView(CEVViewer viewer, CEVDocument cevDocument, int index) {
+    return new ElementViewPage(viewer, cevDocument, index);
+  }
+
+  public Class<?> getAdapterInterface() {
+    return IElementViewPage.class;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewFactory.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewPage.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewPage.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,198 @@
+package org.apache.uima.tm.textmarker.cev.explain.element;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.uima.cas.Type;
+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.ICEVAnnotationNode;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.apache.uima.tm.textmarker.cev.TextMarkerCEVPlugin;
+import org.apache.uima.tm.textmarker.cev.explain.tree.IExplainTreeNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.RuleElementRootNode;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+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 ElementViewPage extends Page implements IElementViewPage, ICEVView,
+        IDoubleClickListener {
+
+  private IExplainTreeNode node;
+
+  // private CheckboxTreeViewer treeView;
+  private TreeViewer treeView;
+
+  private CEVDocument casDoc;
+
+  private int current;
+
+  private CEVViewer casViewer;
+
+  private Map<String, Image> images;
+
+  public ElementViewPage(CEVViewer casViewer, CEVDocument casDoc, int index) {
+    super();
+    this.casViewer = casViewer;
+    this.casDoc = casDoc;
+    this.current = index;
+  }
+
+  @Override
+  public void dispose() {
+    super.dispose();
+    if (images != null) {
+      for (Image each : images.values()) {
+        each.dispose();
+      }
+    }
+  }
+
+  private void initImages() {
+    images = new HashMap<String, Image>();
+    ImageDescriptor desc;
+    Image image;
+    String name;
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/chart_organisation_add.png");
+    image = desc.createImage();
+    name = TextMarkerCEVPlugin.RULE_ELEMENT_MATCHES_TYPE + "true";
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/chart_organisation_delete.png");
+    image = desc.createImage();
+    name = TextMarkerCEVPlugin.RULE_ELEMENT_MATCHES_TYPE + "false";
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/chart_organisation_delete.png");
+    image = desc.createImage();
+    name = "element";
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/font_add.png");
+    image = desc.createImage();
+    name = TextMarkerCEVPlugin.RULE_ELEMENT_MATCH_TYPE + "true";
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/font_delete.png");
+    image = desc.createImage();
+    name = TextMarkerCEVPlugin.RULE_ELEMENT_MATCH_TYPE + "false";
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/accept.png");
+    image = desc.createImage();
+    name = TextMarkerCEVPlugin.EVAL_CONDITION_TYPE + "true";
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/cancel.png");
+    image = desc.createImage();
+    name = TextMarkerCEVPlugin.EVAL_CONDITION_TYPE + "false";
+    images.put(name, image);
+
+  }
+
+  public Image getImage(String name) {
+    if (images == null) {
+      initImages();
+    }
+    return images.get(name);
+  }
+
+  @Override
+  public void createControl(Composite parent) {
+    // treeView = new CheckboxTreeViewer(parent, SWT.SINGLE | SWT.H_SCROLL
+    // | SWT.V_SCROLL);
+    treeView = new TreeViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
+    treeView.setContentProvider(new ElementTreeContentProvider());
+    treeView.setLabelProvider(new ElementTreeLabelProvider(this));
+    treeView.setInput(node);
+    // treeView.addCheckStateListener(getCurrentCEVData());
+    treeView.addDoubleClickListener(this);
+  }
+
+  public void doubleClick(DoubleClickEvent event) {
+    if (event.getSelection() != null && event.getSelection() instanceof ITreeSelection) {
+      Object treeNode = ((ITreeSelection) event.getSelection()).getFirstElement();
+      if (treeNode instanceof ICEVAnnotationNode) {
+        casViewer.moveToAnnotation(((ICEVAnnotationNode) treeNode).getAnnotation());
+      }
+    }
+  }
+
+  public CEVData getCurrentCEVData() {
+    return casDoc.getCASData(current);
+  }
+
+  @Override
+  public Control getControl() {
+    return treeView.getControl();
+  }
+
+  @Override
+  public void setFocus() {
+    treeView.getControl().setFocus();
+  }
+
+  public void inputChange(Object newInput) {
+    if (treeView == null) {
+      return;
+    }
+    Object oldInput = treeView.getInput();
+    if ((oldInput == null && newInput == null) || (oldInput != null && oldInput.equals(newInput)))
+      return;
+
+    if (newInput != null && newInput instanceof RuleElementRootNode) {
+      treeView.setInput(newInput);
+      treeView.expandAll();
+      treeView.refresh();
+    } else {
+      treeView.setInput(null);
+    }
+  }
+
+  public void viewChanged(int newIndex) {
+    getCurrentCEVData().removeAnnotationListener(this);
+    current = newIndex;
+    getCurrentCEVData().addAnnotationListener(this);
+    inputChange(null);
+  }
+
+  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 newSelection(int offset) {
+
+  }
+
+  public void casChanged(CEVDocument casDocument) {
+    this.casDoc = casDocument;
+  }
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/ElementViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/IElementViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/IElementViewPage.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/IElementViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/IElementViewPage.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,7 @@
+package org.apache.uima.tm.textmarker.cev.explain.element;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+public interface IElementViewPage extends ICEVViewPage {
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/IElementViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/element/IElementViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeContentProvider.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeContentProvider.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeContentProvider.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeContentProvider.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,50 @@
+package org.apache.uima.tm.textmarker.cev.explain.failed;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.uima.tm.textmarker.cev.explain.tree.IExplainTreeNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.RuleMatchNode;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+
+public class FailedTreeContentProvider implements ITreeContentProvider {
+
+  public Object[] getChildren(Object parentElement) {
+    if (parentElement instanceof IExplainTreeNode) {
+      List<Object> result = new ArrayList<Object>();
+      IExplainTreeNode debugNode = (IExplainTreeNode) parentElement;
+      for (IExplainTreeNode each : debugNode.getChildren()) {
+        if (each instanceof RuleMatchNode) {
+          result.add(each);
+        }
+      }
+      return result.toArray();
+    }
+    return null;
+  }
+
+  public Object getParent(Object element) {
+    if (element instanceof IExplainTreeNode) {
+      return ((IExplainTreeNode) element).getParent();
+    }
+    return null;
+
+  }
+
+  public Object[] getElements(Object element) {
+    return getChildren(element);
+  }
+
+  public boolean hasChildren(Object parentElement) {
+    return false;
+  }
+
+  public void dispose() {
+  }
+
+  public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeContentProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeContentProvider.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeLabelProvider.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeLabelProvider.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeLabelProvider.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeLabelProvider.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,47 @@
+package org.apache.uima.tm.textmarker.cev.explain.failed;
+
+import org.apache.uima.cas.FeatureStructure;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.tm.textmarker.cev.explain.tree.RuleMatchNode;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+
+public class FailedTreeLabelProvider extends LabelProvider implements ILabelProvider {
+
+  private FailedViewPage owner;
+
+  public FailedTreeLabelProvider(FailedViewPage owner) {
+    super();
+    this.owner = owner;
+  }
+
+  @Override
+  public Image getImage(Object element) {
+    if (element instanceof RuleMatchNode) {
+      RuleMatchNode ruleMatchNode = (RuleMatchNode) element;
+      FeatureStructure fs = ruleMatchNode.getFeatureStructure();
+      if (fs != null) {
+        String name = fs.getType().getName();
+        return owner.getImage(name);
+      }
+    }
+    return null;
+  }
+
+  @Override
+  public String getText(Object element) {
+    if (element instanceof RuleMatchNode) {
+      RuleMatchNode debugNode = (RuleMatchNode) element;
+      FeatureStructure fs = debugNode.getFeatureStructure();
+      if (fs != null) {
+        String s = ((AnnotationFS) fs).getCoveredText();
+        s = s.replaceAll("[\\n\\r]", "");
+        return s;
+      }
+    }
+
+    return element.toString();
+  }
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeLabelProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedTreeLabelProvider.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedView.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedView.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,18 @@
+package org.apache.uima.tm.textmarker.cev.explain.failed;
+
+import org.apache.uima.tm.cev.views.CEVPageBookView;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+public class FailedView extends CEVPageBookView {
+
+  public FailedView() {
+    super();
+  }
+
+  @Override
+  protected PageRec doCreatePage(IWorkbenchPart part) {
+    return doCreatePage(part, IFailedViewPage.class);
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedView.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedView.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewFactory.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewFactory.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.textmarker.cev.explain.failed;
+
+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 FailedViewFactory implements ICEVViewFactory {
+
+  public FailedViewFactory() {
+  }
+
+  public ICEVView createView(CEVViewer viewer, CEVDocument cevDocument, int index) {
+    return new FailedViewPage(viewer, cevDocument, index);
+  }
+
+  public Class<?> getAdapterInterface() {
+    return IFailedViewPage.class;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewFactory.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewPage.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewPage.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,195 @@
+package org.apache.uima.tm.textmarker.cev.explain.failed;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.uima.cas.Type;
+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.ICEVAnnotationNode;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.apache.uima.tm.textmarker.cev.TextMarkerCEVPlugin;
+import org.apache.uima.tm.textmarker.cev.explain.element.ElementViewPage;
+import org.apache.uima.tm.textmarker.cev.explain.element.IElementViewPage;
+import org.apache.uima.tm.textmarker.cev.explain.tree.FailedRootNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.IExplainTreeNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.RuleMatchNode;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+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 FailedViewPage extends Page implements IFailedViewPage, ICEVView,
+        IDoubleClickListener, ISelectionChangedListener {
+
+  private IExplainTreeNode node;
+
+  private CheckboxTreeViewer treeView;
+
+  private CEVDocument casDoc;
+
+  private int current;
+
+  private CEVViewer casViewer;
+
+  private Map<String, Image> images;
+
+  public FailedViewPage(CEVViewer casViewer, CEVDocument casDoc, int index) {
+    super();
+    this.casViewer = casViewer;
+    this.casDoc = casDoc;
+    this.current = index;
+  }
+
+  @Override
+  public void dispose() {
+    super.dispose();
+    if (images != null) {
+      for (Image each : images.values()) {
+        each.dispose();
+      }
+    }
+  }
+
+  private void initImages() {
+    images = new HashMap<String, Image>();
+    ImageDescriptor desc;
+    Image image;
+    String name;
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/accept.png");
+    image = desc.createImage();
+    name = "matched";
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/cancel.png");
+    image = desc.createImage();
+    name = "failed";
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/font_add.png");
+    image = desc.createImage();
+    name = TextMarkerCEVPlugin.MATCHED_RULE_MATCH_TYPE;
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/font_delete.png");
+    image = desc.createImage();
+    name = TextMarkerCEVPlugin.FAILED_RULE_MATCH_TYPE;
+    images.put(name, image);
+  }
+
+  public Image getImage(String name) {
+    if (images == null) {
+      initImages();
+    }
+    return images.get(name);
+  }
+
+  @Override
+  public void createControl(Composite parent) {
+    treeView = new CheckboxTreeViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
+    treeView.setContentProvider(new FailedTreeContentProvider());
+    treeView.setLabelProvider(new FailedTreeLabelProvider(this));
+    treeView.setInput(node);
+    treeView.addCheckStateListener(getCurrentCEVData());
+    treeView.addSelectionChangedListener(this);
+    treeView.addDoubleClickListener(this);
+  }
+
+  public void doubleClick(DoubleClickEvent event) {
+    if (event.getSelection() != null && event.getSelection() instanceof ITreeSelection) {
+      Object treeNode = ((ITreeSelection) event.getSelection()).getFirstElement();
+      if (treeNode instanceof ICEVAnnotationNode) {
+        casViewer.moveToAnnotation(((ICEVAnnotationNode) treeNode).getAnnotation());
+      }
+    }
+  }
+
+  public CEVData getCurrentCEVData() {
+    return casDoc.getCASData(current);
+  }
+
+  @Override
+  public Control getControl() {
+    return treeView.getControl();
+  }
+
+  @Override
+  public void setFocus() {
+    treeView.getControl().setFocus();
+  }
+
+  public void inputChange(Object newInput) {
+    if (newInput != null && newInput instanceof FailedRootNode && treeView != null) {
+      this.treeView.setInput(newInput);
+      this.treeView.refresh();
+    }
+    Object elementPage = casViewer.getAdapter(IElementViewPage.class);
+    if (elementPage instanceof ElementViewPage) {
+      ((ElementViewPage) elementPage).inputChange(null);
+    }
+  }
+
+  public void viewChanged(int newIndex) {
+    getCurrentCEVData().removeAnnotationListener(this);
+    current = newIndex;
+    getCurrentCEVData().addAnnotationListener(this);
+    inputChange(null);
+  }
+
+  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 newSelection(int offset) {
+
+  }
+
+  public void selectionChanged(SelectionChangedEvent event) {
+    ISelection selection = event.getSelection();
+    if (selection instanceof ITreeSelection) {
+      ITreeSelection struct = (ITreeSelection) selection;
+      Object firstElement = struct.getFirstElement();
+      if (firstElement instanceof RuleMatchNode) {
+        RuleMatchNode node = (RuleMatchNode) firstElement;
+        Object elementPage = casViewer.getAdapter(IElementViewPage.class);
+        if (elementPage instanceof ElementViewPage && node.hasChildren()) {
+          ((ElementViewPage) elementPage).inputChange(node.getChildren().get(0));
+        }
+      }
+    }
+  }
+
+  public void casChanged(CEVDocument casDocument) {
+    this.casDoc = casDocument;
+  }
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/FailedViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/IFailedViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/IFailedViewPage.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/IFailedViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/IFailedViewPage.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,7 @@
+package org.apache.uima.tm.textmarker.cev.explain.failed;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+public interface IFailedViewPage extends ICEVViewPage {
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/IFailedViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/failed/IFailedViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/IMatchedViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/IMatchedViewPage.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/IMatchedViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/IMatchedViewPage.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,7 @@
+package org.apache.uima.tm.textmarker.cev.explain.matched;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+public interface IMatchedViewPage extends ICEVViewPage {
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/IMatchedViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/IMatchedViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeContentProvider.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeContentProvider.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeContentProvider.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeContentProvider.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,59 @@
+package org.apache.uima.tm.textmarker.cev.explain.matched;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.uima.tm.textmarker.cev.explain.tree.IExplainTreeNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.RuleMatchNode;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+
+public class MatchedTreeContentProvider implements ITreeContentProvider {
+
+  public Object[] getChildren(Object parentElement) {
+    if (parentElement instanceof IExplainTreeNode) {
+      List<Object> result = new ArrayList<Object>();
+      IExplainTreeNode debugNode = (IExplainTreeNode) parentElement;
+      for (IExplainTreeNode each : debugNode.getChildren()) {
+        if (each instanceof RuleMatchNode) {
+          result.add(each);
+        }
+      }
+      return result.toArray();
+    }
+    return null;
+  }
+
+  public Object getParent(Object element) {
+    if (element instanceof IExplainTreeNode) {
+      return ((IExplainTreeNode) element).getParent();
+    }
+    return null;
+
+  }
+
+  public Object[] getElements(Object element) {
+    return getChildren(element);
+  }
+
+  public boolean hasChildren(Object parentElement) {
+
+    // if (parentElement instanceof IExplainTreeNode) {
+    // IExplainTreeNode debugNode = (IExplainTreeNode) parentElement;
+    // for (Object each : debugNode.getChildren()) {
+    // if(!(each instanceof ExplainRootNode)) {
+    // return true;
+    // }
+    // }
+    // }
+    return false;
+  }
+
+  public void dispose() {
+  }
+
+  public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeContentProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeContentProvider.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeLabelProvider.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeLabelProvider.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeLabelProvider.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeLabelProvider.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,47 @@
+package org.apache.uima.tm.textmarker.cev.explain.matched;
+
+import org.apache.uima.cas.FeatureStructure;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.tm.textmarker.cev.explain.tree.RuleMatchNode;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+
+public class MatchedTreeLabelProvider extends LabelProvider implements ILabelProvider {
+
+  private MatchedViewPage owner;
+
+  public MatchedTreeLabelProvider(MatchedViewPage owner) {
+    super();
+    this.owner = owner;
+  }
+
+  @Override
+  public Image getImage(Object element) {
+    if (element instanceof RuleMatchNode) {
+      RuleMatchNode ruleMatchNode = (RuleMatchNode) element;
+      FeatureStructure fs = ruleMatchNode.getFeatureStructure();
+      if (fs != null) {
+        String name = fs.getType().getName();
+        return owner.getImage(name);
+      }
+    }
+    return null;
+  }
+
+  @Override
+  public String getText(Object element) {
+    if (element instanceof RuleMatchNode) {
+      RuleMatchNode debugNode = (RuleMatchNode) element;
+      FeatureStructure fs = debugNode.getFeatureStructure();
+      if (fs != null) {
+        String s = ((AnnotationFS) fs).getCoveredText();
+        s = s.replaceAll("[\\n\\r]", "");
+        return s;
+      }
+    }
+
+    return element.toString();
+  }
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeLabelProvider.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedTreeLabelProvider.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedView.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedView.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,18 @@
+package org.apache.uima.tm.textmarker.cev.explain.matched;
+
+import org.apache.uima.tm.cev.views.CEVPageBookView;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+public class MatchedView extends CEVPageBookView {
+
+  public MatchedView() {
+    super();
+  }
+
+  @Override
+  protected PageRec doCreatePage(IWorkbenchPart part) {
+    return doCreatePage(part, IMatchedViewPage.class);
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedView.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedView.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewFactory.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewFactory.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.textmarker.cev.explain.matched;
+
+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 MatchedViewFactory implements ICEVViewFactory {
+
+  public MatchedViewFactory() {
+  }
+
+  public ICEVView createView(CEVViewer viewer, CEVDocument cevDocument, int index) {
+    return new MatchedViewPage(viewer, cevDocument, index);
+  }
+
+  public Class<?> getAdapterInterface() {
+    return IMatchedViewPage.class;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewFactory.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewPage.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewPage.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,198 @@
+package org.apache.uima.tm.textmarker.cev.explain.matched;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.uima.cas.Type;
+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.ICEVAnnotationNode;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.apache.uima.tm.textmarker.cev.TextMarkerCEVPlugin;
+import org.apache.uima.tm.textmarker.cev.explain.element.ElementViewPage;
+import org.apache.uima.tm.textmarker.cev.explain.element.IElementViewPage;
+import org.apache.uima.tm.textmarker.cev.explain.tree.IExplainTreeNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.MatchedRootNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.RuleMatchNode;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+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 MatchedViewPage extends Page implements IMatchedViewPage, ICEVView,
+        IDoubleClickListener, ISelectionChangedListener {
+
+  private IExplainTreeNode node;
+
+  // private CASViewer casViewer;
+  private CheckboxTreeViewer treeView;
+
+  // private Tree tree;
+  private CEVDocument casDoc;
+
+  private int current;
+
+  private CEVViewer casViewer;
+
+  private Map<String, Image> images;
+
+  public MatchedViewPage(CEVViewer casViewer, CEVDocument casDoc, int index) {
+    super();
+    this.casViewer = casViewer;
+    this.casDoc = casDoc;
+    this.current = index;
+  }
+
+  @Override
+  public void dispose() {
+    super.dispose();
+    if (images != null) {
+      for (Image each : images.values()) {
+        each.dispose();
+      }
+    }
+  }
+
+  private void initImages() {
+    images = new HashMap<String, Image>();
+    ImageDescriptor desc;
+    Image image;
+    String name;
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/accept.png");
+    image = desc.createImage();
+    name = "matched";
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/cancel.png");
+    image = desc.createImage();
+    name = "failed";
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/font_add.png");
+    image = desc.createImage();
+    name = TextMarkerCEVPlugin.MATCHED_RULE_MATCH_TYPE;
+    images.put(name, image);
+
+    desc = TextMarkerCEVPlugin.getImageDescriptor("/icons/font_delete.png");
+    image = desc.createImage();
+    name = TextMarkerCEVPlugin.FAILED_RULE_MATCH_TYPE;
+    images.put(name, image);
+  }
+
+  public Image getImage(String name) {
+    if (images == null) {
+      initImages();
+    }
+    return images.get(name);
+  }
+
+  @Override
+  public void createControl(Composite parent) {
+    treeView = new CheckboxTreeViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
+    treeView.setContentProvider(new MatchedTreeContentProvider());
+    treeView.setLabelProvider(new MatchedTreeLabelProvider(this));
+    treeView.setInput(node);
+    treeView.addCheckStateListener(getCurrentCEVData());
+    treeView.addSelectionChangedListener(this);
+    treeView.addDoubleClickListener(this);
+  }
+
+  public CEVData getCurrentCEVData() {
+    return casDoc.getCASData(current);
+  }
+
+  public void doubleClick(DoubleClickEvent event) {
+    if (event.getSelection() != null && event.getSelection() instanceof ITreeSelection) {
+      Object treeNode = ((ITreeSelection) event.getSelection()).getFirstElement();
+      if (treeNode instanceof ICEVAnnotationNode) {
+        casViewer.moveToAnnotation(((ICEVAnnotationNode) treeNode).getAnnotation());
+      }
+    }
+  }
+
+  @Override
+  public Control getControl() {
+    return treeView.getControl();
+  }
+
+  @Override
+  public void setFocus() {
+    treeView.getControl().setFocus();
+  }
+
+  public void inputChange(Object newInput) {
+    if (newInput != null && newInput instanceof MatchedRootNode && treeView != null) {
+      this.treeView.setInput(newInput);
+      this.treeView.refresh();
+    }
+    Object elementPage = casViewer.getAdapter(IElementViewPage.class);
+    if (elementPage instanceof ElementViewPage) {
+      ((ElementViewPage) elementPage).inputChange(null);
+    }
+  }
+
+  public void viewChanged(int newIndex) {
+    getCurrentCEVData().removeAnnotationListener(this);
+    current = newIndex;
+    getCurrentCEVData().addAnnotationListener(this);
+    inputChange(null);
+  }
+
+  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 newSelection(int offset) {
+
+  }
+
+  public void selectionChanged(SelectionChangedEvent event) {
+    ISelection selection = event.getSelection();
+    if (selection instanceof ITreeSelection) {
+      ITreeSelection struct = (ITreeSelection) selection;
+      Object firstElement = struct.getFirstElement();
+      if (firstElement instanceof RuleMatchNode) {
+        RuleMatchNode node = (RuleMatchNode) firstElement;
+        Object elementPage = casViewer.getAdapter(IElementViewPage.class);
+        if (elementPage instanceof ElementViewPage && node.hasChildren()) {
+          ((ElementViewPage) elementPage).inputChange(node.getChildren().get(0));
+        }
+      }
+    }
+  }
+
+  public void casChanged(CEVDocument casDocument) {
+    this.casDoc = casDocument;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/matched/MatchedViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/IRuleListViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/IRuleListViewPage.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/IRuleListViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/IRuleListViewPage.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,7 @@
+package org.apache.uima.tm.textmarker.cev.explain.rulelist;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+public interface IRuleListViewPage extends ICEVViewPage {
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/IRuleListViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/IRuleListViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListSelectionView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListSelectionView.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListSelectionView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListSelectionView.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,17 @@
+package org.apache.uima.tm.textmarker.cev.explain.rulelist;
+
+import org.apache.uima.tm.cev.views.CEVPageBookView;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+public class RuleListSelectionView extends CEVPageBookView {
+
+  public RuleListSelectionView() {
+    super();
+  }
+
+  @Override
+  protected PageRec doCreatePage(IWorkbenchPart part) {
+    return doCreatePage(part, IRuleListViewPage.class);
+  }
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListSelectionView.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListSelectionView.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewFactory.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewFactory.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.textmarker.cev.explain.rulelist;
+
+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 RuleListViewFactory implements ICEVViewFactory {
+
+  public RuleListViewFactory() {
+  }
+
+  public ICEVView createView(CEVViewer viewer, CEVDocument cevDocument, int index) {
+    return new RuleListViewPage(viewer, cevDocument, index);
+  }
+
+  public Class<?> getAdapterInterface() {
+    return IRuleListViewPage.class;
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewFactory.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewPage.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewPage.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,155 @@
+package org.apache.uima.tm.textmarker.cev.explain.rulelist;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.uima.cas.Feature;
+import org.apache.uima.cas.Type;
+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.textmarker.cev.TextMarkerCEVPlugin;
+import org.apache.uima.tm.textmarker.cev.explain.apply.ApplyTreeContentProvider;
+import org.apache.uima.tm.textmarker.cev.explain.apply.ApplyTreeLabelProvider;
+import org.apache.uima.tm.textmarker.cev.explain.apply.ApplyViewPage;
+import org.apache.uima.tm.textmarker.cev.explain.tree.ApplyRootNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.ExplainTree;
+import org.apache.uima.tm.textmarker.cev.explain.tree.IExplainTreeNode;
+import org.apache.uima.tm.textmarker.cev.explain.tree.RuleApplyNode;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+
+
+public class RuleListViewPage extends ApplyViewPage implements IRuleListViewPage, Listener {
+
+  protected Text filterTextField;
+
+  protected String manualFilter = "";
+
+  private Composite overlay;
+
+  private int offset = -1;
+
+  public RuleListViewPage(CEVViewer casViewer, CEVDocument casDoc, int index) {
+    super(casViewer, casDoc, index);
+  }
+
+  @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);
+
+    viewer = new CheckboxTreeViewer(overlay, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+    gd = new GridData(GridData.FILL_BOTH);
+    viewer.getTree().setLayoutData(gd);
+    viewer.setContentProvider(new ApplyTreeContentProvider());
+    viewer.setLabelProvider(new ApplyTreeLabelProvider(this));
+    viewer.addDoubleClickListener(this);
+    viewer.addSelectionChangedListener(this);
+    viewer.setInput(new ApplyRootNode(null, getCurrentCEVData().getCAS().getTypeSystem()));
+  }
+
+  public void viewChanged(int newIndex) {
+    getCurrentCEVData().removeAnnotationListener(this);
+    current = newIndex;
+    getCurrentCEVData().addAnnotationListener(this);
+    newSelection(offset);
+  }
+
+  public CEVData getCurrentCEVData() {
+    return casDoc.getCASData(current);
+  }
+
+  public void newSelection(int offset) {
+    this.offset = offset;
+
+    if (offset >= 0) {
+      ExplainTree tree = new ExplainTree(getCurrentCEVData(), offset, true);
+      filterTree(tree);
+      viewer.setInput(tree.getRoot());
+      viewer.refresh();
+    }
+  }
+
+  private void filterTree(ExplainTree tree) {
+    Type ruleType = getCurrentCEVData().getCAS().getTypeSystem().getType(
+            TextMarkerCEVPlugin.RULE_APPLY_TYPE);
+    IExplainTreeNode root = tree.getRoot();
+    List<IExplainTreeNode> children = new ArrayList<IExplainTreeNode>(root.getChildren());
+    for (IExplainTreeNode each : children) {
+      if (each instanceof RuleApplyNode) {
+        RuleApplyNode ran = (RuleApplyNode) each;
+        Feature f = ruleType.getFeatureByBaseName(ExplainTree.ELEMENTS);
+        if (f != null) {
+          String v = ran.getFeatureStructure().getStringValue(f);
+          if (manualFilter != null && !"".equals(manualFilter) && v.indexOf(manualFilter) == -1) {
+            root.removeChild(ran);
+          }
+        }
+      }
+    }
+  }
+
+  public void handleEvent(Event event) {
+    if (event.widget == filterTextField && event.type == SWT.Modify) {
+      manualFilter = filterTextField.getText();
+      newSelection(offset);
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#dispose()
+   */
+  @Override
+  public void dispose() {
+    super.dispose();
+    overlay.dispose();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#getControl()
+   */
+  @Override
+  public Control getControl() {
+    return overlay;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#setFocus()
+   */
+  @Override
+  public void setFocus() {
+    overlay.setFocus();
+  }
+
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/rulelist/RuleListViewPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/selection/ExplainSelectionView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/selection/ExplainSelectionView.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/selection/ExplainSelectionView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/selection/ExplainSelectionView.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,17 @@
+package org.apache.uima.tm.textmarker.cev.explain.selection;
+
+import org.apache.uima.tm.cev.views.CEVPageBookView;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+public class ExplainSelectionView extends CEVPageBookView {
+
+  public ExplainSelectionView() {
+    super();
+  }
+
+  @Override
+  protected PageRec doCreatePage(IWorkbenchPart part) {
+    return doCreatePage(part, IExplainSelectionViewPage.class);
+  }
+}

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/selection/ExplainSelectionView.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/selection/ExplainSelectionView.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/selection/ExplainSelectionViewFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/selection/ExplainSelectionViewFactory.java?rev=1152822&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/selection/ExplainSelectionViewFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.textmarker.cev.extensions/src/main/java/org/apache/uima/tm/textmarker/cev/explain/selection/ExplainSelectionViewFactory.java Mon Aug  1 15:20:50 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.textmarker.cev.explain.selection;
+
+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 ExplainSelectionViewFactory implements ICEVViewFactory {
+
+  public ExplainSelectionViewFactory() {
+  }
+
+  public ICEVView createView(CEVViewer viewer, CEVDocument cevDocument, int index) {
+    return new ExplainSelectionViewPage(viewer, cevDocument, index);
+  }
+
+  public Class<?> getAdapterInterface() {
+    return IExplainSelectionViewPage.class;
+  }
+
+}