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 [6/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/palette/CEVAnnotationMarkerPalettePage.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/CEVAnnotationMarkerPalettePage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPalettePage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPalettePage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,522 @@
+package org.apache.uima.tm.cev.views.palette;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+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.jface.preference.IPreferenceStore;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.PaletteData;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.layout.RowData;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.part.IPageSite;
+import org.eclipse.ui.part.Page;
+
+
+/**
+ * CEVAnnotationMarkerPalettePage
+ * 
+ * @author Martin Toepfer
+ */
+public class CEVAnnotationMarkerPalettePage extends Page implements
+        ICEVAnnotationMarkerPalettePage, ICEVEditor {
+
+  /**
+   * Wrapperklasse fuer Typ-Buttons.
+   * 
+   * @author Felix
+   * 
+   */
+  private class AnnotationTypeButtonPanel {
+    private Composite composite;
+
+    private Button button;
+
+    private Type type;
+
+    private static final int LETTER_WIDTH_FACTOR = 8;
+
+    private static final int BUTTON_WIDTH_OFFSET = 25;
+
+    private static final int ICON_SIZE = 10;
+
+    private static final int MAX_TITLE_LENGTH = 40;
+
+    /**
+     * Konstruktor.
+     * 
+     * @param parent
+     * @param type
+     */
+    private AnnotationTypeButtonPanel(Composite parent, Type type) {
+      this(parent, type, MAX_TITLE_LENGTH);
+    }
+
+    /**
+     * Konstruktor.
+     * 
+     * @param parent
+     * @param type
+     */
+    private AnnotationTypeButtonPanel(Composite parent, Type type, int maxTitleLenght) {
+      // type merken
+      this.type = type;
+      // composite zusammensetzen
+      composite = new Composite(parent, SWT.NULL | SWT.LEFT);
+      composite.setLayout(new RowLayout(SWT.HORIZONTAL));
+      // toggleButton, text links ausrichten:
+      button = new Button(composite, SWT.TOGGLE | SWT.LEFT);
+      // Text des Buttons setzen:
+      button.setText(type.getShortName());
+      final int width = BUTTON_WIDTH_OFFSET + maxTitleLenght * LETTER_WIDTH_FACTOR;
+      // initiale breite setzen:
+      button.setLayoutData(new RowData(width, SWT.DEFAULT));
+      button.setAlignment(SWT.LEFT);
+      // Farbe setzen
+      updateColor();
+
+      composite.layout(true);
+    }
+
+    private void updateColor() {
+      Color bgCol = new Color(composite.getDisplay(), getCurrentCEVData().getBackgroundColor(
+              this.type).getRGB());
+      // TODO Vordergrundfarbe ungenutzt
+      // Color fgCol = new Color(composite.getDisplay(), casData
+      // .getForegroundColor(type).getRGB());
+      RGB[] rgbs = { bgCol.getRGB() };
+      ImageData imd = new ImageData(ICON_SIZE, ICON_SIZE, 8, new PaletteData(rgbs));
+      Image image = new Image(composite.getDisplay(), imd);
+      button.setImage(image);
+    }
+
+    public Button getButton() {
+      return this.button;
+    }
+
+    public Type getType() {
+      return this.type;
+    }
+
+    /**
+     * Referenzen loesen und zum geloeschtwerden vorbereiten.
+     */
+    public void dispose() {
+      button.dispose();
+      composite.dispose();
+      type = null;
+    }
+
+  }
+
+  /**
+   * Vergleichsklasse fuer Typen.
+   * 
+   * @author Felix
+   * 
+   */
+  private class TypeComparator implements Comparator<Type> {
+    public int compare(Type type0, Type type1) {
+      return type0.getShortName().compareToIgnoreCase(type1.getShortName());
+    }
+
+  }
+
+  /**
+   * Wrapperklasse fuer Typ-Buttons.
+   * 
+   * @author Felix
+   * 
+   */
+  private class AnnotationTypeCheckButtonPanel {
+    private Composite composite;
+
+    private Button button;
+
+    private Type type;
+
+    private static final int LETTER_WIDTH_FACTOR = 8;
+
+    private static final int BUTTON_WIDTH_OFFSET = 25;
+
+    private static final int ICON_SIZE = 10;
+
+    private static final int MAX_TITLE_LENGTH = 40;
+
+    /**
+     * Konstruktor.
+     * 
+     * @param parent
+     * @param type
+     */
+    private AnnotationTypeCheckButtonPanel(Composite parent, Type type) {
+      this(parent, type, MAX_TITLE_LENGTH);
+    }
+
+    /**
+     * Konstruktor.
+     * 
+     * @param parent
+     * @param type
+     */
+    private AnnotationTypeCheckButtonPanel(Composite parent, Type type, int maxTitleLenght) {
+      // type merken
+      this.type = type;
+      // composite zusammensetzen
+      composite = new Composite(parent, SWT.NULL | SWT.LEFT);
+      composite.setLayout(new RowLayout(SWT.HORIZONTAL));
+      // toggleButton, text links ausrichten:
+      button = new Button(composite, SWT.TOGGLE | SWT.LEFT);
+      // Text des Buttons setzen:
+      button.setText(type.getShortName());
+      final int width = BUTTON_WIDTH_OFFSET + maxTitleLenght * LETTER_WIDTH_FACTOR;
+      // initiale breite setzen:
+      button.setLayoutData(new RowData(width, SWT.DEFAULT));
+      button.setAlignment(SWT.LEFT);
+      // Farbe setzen
+      updateColor();
+
+      composite.layout(true);
+    }
+
+    private void updateColor() {
+      Color backgroundColor = getCurrentCEVData().getBackgroundColor(this.type);
+      if (backgroundColor == null) {
+        backgroundColor = new Color(composite.getDisplay(), 128, 128, 128);
+      }
+      Color bgCol = new Color(composite.getDisplay(), backgroundColor.getRGB());
+      // TODO Vordergrundfarbe ungenutzt
+      // Color fgCol = new Color(composite.getDisplay(), casData
+      // .getForegroundColor(type).getRGB());
+      RGB[] rgbs = { bgCol.getRGB() };
+      ImageData imd = new ImageData(ICON_SIZE, ICON_SIZE, 8, new PaletteData(rgbs));
+      Image image = new Image(composite.getDisplay(), imd);
+      button.setImage(image);
+    }
+
+    public Button getButton() {
+      return this.button;
+    }
+
+    public Type getType() {
+      return this.type;
+    }
+
+    /**
+     * Referenzen loesen und zum geloeschtwerden vorbereiten.
+     */
+    public void dispose() {
+      button.dispose();
+      composite.dispose();
+      type = null;
+    }
+
+  }
+
+  // Scrolled Composite
+  private ScrolledComposite sc;
+
+  // die ganze Komponente
+  private Composite pane;
+
+  // zugrundeliegende Daten
+  private CEVDocument casDocument;
+
+  // Typen-Liste
+  private List<Type> types;
+
+  // ToggleButton-Liste
+  private List<AnnotationTypeCheckButtonPanel> toggleButtons = new ArrayList<AnnotationTypeCheckButtonPanel>();
+
+  private int current;
+
+  /**
+   * Konstruktor
+   * 
+   * @param casView
+   *          CASViewer
+   * @param casData
+   *          CASData
+   */
+  public CEVAnnotationMarkerPalettePage(CEVViewer casView, CEVDocument casDocument, int index) {
+    super();
+    current = index;
+    // cas setzen
+    this.casDocument = casDocument;
+    // Als Listener fuer Changes an Annotationstypen anmelden
+    this.getCurrentCEVData().addAnnotationListener(this);
+    // Typen-Liste initialisieren:
+    types = new ArrayList<Type>();
+    updateTypes();
+  }
+
+  /**
+   * Filters the selected / toggled Buttons.
+   * 
+   * @return selected / toggled Buttons.
+   */
+  public List<AnnotationTypeCheckButtonPanel> getToggledButtons() {
+    if (toggleButtons == null) {
+      return new ArrayList<AnnotationTypeCheckButtonPanel>();
+    }
+    List<AnnotationTypeCheckButtonPanel> toggledButtons = new ArrayList<AnnotationTypeCheckButtonPanel>();
+    for (AnnotationTypeCheckButtonPanel buttonP : toggleButtons) {
+      if (buttonP.getButton().getSelection()) {
+        toggledButtons.add(buttonP);
+      }
+    }
+    return toggledButtons;
+  }
+
+  /**
+   * Erstellt die Button-Liste aus der types-Liste neu.<br>
+   * In der Regel sollte vor Benutzung <i>updateTypes</i> aufgerufen werden.
+   */
+  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(pane, iterator.next(), maxTitleLength));
+    }
+    pane.layout(true);
+    sc.setContent(pane);
+    sc.setMinSize(pane.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+    // sc.layout(true);
+  }
+
+  /**
+   * Erstellt die Typenliste neu.<br>
+   * Danach sollte in der Regel <i>updateControl</i> aufgerufen werden.
+   */
+  private int updateTypes() {
+    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;
+  }
+
+  /*
+   * (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) {
+
+    sc = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
+    pane = new Composite(sc, SWT.NULL);
+    pane.setLayout(new RowLayout(SWT.VERTICAL));
+    // Properties for the ScrolledComposite
+
+    sc.setExpandHorizontal(true);
+    sc.setExpandVertical(true);
+    sc.setContent(pane);
+    sc.setMinSize(pane.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+    // sorgt fuer aktuelle types-Liste und Buttons:
+    casDataChanged();
+  }
+
+  private void annotateAllForSelection(int start, int end) {
+    // fuer alle aktivierten Typen Annotationen setzen:
+    List<AnnotationTypeCheckButtonPanel> toggledButtons = getToggledButtons();
+    for (AnnotationTypeCheckButtonPanel buttonP : toggledButtons) {
+      boolean update = toggledButtons.indexOf(buttonP) == toggledButtons.size() - 1;
+      annotateSingleForSelection(start, end, buttonP.getType(), update);
+    }
+  }
+
+  private void annotateSingleForSelection(int start, int end, Type type, boolean update) {
+    if (type == null) {
+      return;
+    }
+    getCurrentCEVData().addAnnotation(type, start, end, update);
+  }
+
+  /**
+   * CAS hat sich geaendert.<br>
+   * Daten und GUI updaten.
+   * 
+   * @param casData
+   *          CAS
+   */
+  public void casDataChanged() {
+    // casData updaten
+    // types updaten und max.Titellaenge ermitteln
+    final int maxTitleLength = updateTypes();
+    // Button-Liste updaten
+    updateControl(maxTitleLength);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#dispose()
+   */
+  @Override
+  public void dispose() {
+    super.dispose();
+    sc.dispose();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#getControl()
+   */
+  @Override
+  public Control getControl() {
+    return sc;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.Page#setFocus()
+   */
+  @Override
+  public void setFocus() {
+    sc.setFocus();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.data.ICEVAnnotationListener#annotationStateChanged(org
+   * .apache.uima.cas.Type)
+   */
+  public void annotationStateChanged(Type type) {
+    // this.casDataChanged(casData);
+  }
+
+  protected CEVData getCurrentCEVData() {
+    return casDocument.getCASData(current);
+  }
+
+  public void viewChanged(int newIndex) {
+    current = newIndex;
+    casDataChanged();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.data.ICEVAnnotationListener#colorChanged(org.apache. uima.cas.Type)
+   */
+  public void colorChanged(Type type) {
+    for (Iterator<AnnotationTypeCheckButtonPanel> iterator = toggleButtons.iterator(); iterator
+            .hasNext();) {
+      AnnotationTypeCheckButtonPanel button = iterator.next();
+      if (button.getType().equals(type)) {
+        button.updateColor();
+      }
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.data.ICEVAnnotationListener#annotationAdded(org.apache
+   * .uima.cas.text.AnnotationFS)
+   */
+  public void annotationsAdded(List<AnnotationFS> annots) {
+    // Annotationen uninteressant
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.data.ICEVAnnotationListener#annotationRemoved(org.apache
+   * .uima.cas.text.AnnotationFS)
+   */
+  public void annotationsRemoved(List<AnnotationFS> annots) {
+    // Annotationen uninteressant
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.data.ICEVAnnotationListener#annotationStateChanged(org
+   * .apache.uima.cas.text.AnnotationFS)
+   */
+  public void annotationStateChanged(AnnotationFS annot) {
+    // Annotationen uninteressant
+  }
+
+  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;
+    }
+    annotateAllForSelection(start, end);
+  }
+
+  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/palette/CEVAnnotationMarkerPalettePage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPalettePage.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/CEVAnnotationMarkerPaletteView.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/CEVAnnotationMarkerPaletteView.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteView.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,107 @@
+package org.apache.uima.tm.cev.views.palette;
+
+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;
+
+
+/**
+ * CEVAnnotationMarkerPaletteView des CASViewer
+ * 
+ * @author Marco Nehmeier
+ */
+public class CEVAnnotationMarkerPaletteView 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 CEVAnnotationMarkerPaletteView() {
+    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, ICEVAnnotationMarkerPalettePage.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/palette/CEVAnnotationMarkerPaletteView.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteView.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/ICEVAnnotationMarkerPalettePage.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/ICEVAnnotationMarkerPalettePage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/ICEVAnnotationMarkerPalettePage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/ICEVAnnotationMarkerPalettePage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,12 @@
+package org.apache.uima.tm.cev.views.palette;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+/**
+ * Interface fuer eine EditorPage im CASViewer
+ * 
+ * @author Martin Toepfer
+ */
+public interface ICEVAnnotationMarkerPalettePage extends ICEVViewPage {
+
+}

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

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/ICEVAnnotationMarkerPalettePage.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/selection/CEVSelectionPage.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/selection/CEVSelectionPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/selection/CEVSelectionPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/selection/CEVSelectionPage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,104 @@
+package org.apache.uima.tm.cev.views.selection;
+
+import java.util.List;
+
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.data.ICEVAnnotationSelectionListener;
+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.views.CEVAnnotationTreeViewPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Event;
+
+
+/**
+ * Page fuer einen SelectionView im CASViewer
+ * 
+ * @author Marco Nehmeier
+ */
+public class CEVSelectionPage extends CEVAnnotationTreeViewPage implements ICEVSelectionPage,
+        ICEVAnnotationSelectionListener {
+
+  private int offset;
+
+  /**
+   * Konstruktor
+   * 
+   * @param casView
+   *          CASViewer
+   * @param casData
+   *          CASDatat
+   */
+  public CEVSelectionPage(CEVViewer casView, CEVDocument casDocument, int index) {
+    super(casView, casDocument, index);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.uniwue.casviewer.data.ICASAnnotationSelectionListener#newSelection (int)
+   */
+  public void newSelection(int offset) {
+    this.offset = offset;
+
+    // Selektionen im Tree aktualisieren
+    ICEVRootTreeNode annotationOrderedTree = getCasData().getAnnotationOrderedTree(offset,
+            manualTypeFilter);
+    getTreeViewer().setInput(annotationOrderedTree);
+
+    Object input = getTreeViewer().getInput();
+
+    if (input instanceof ICEVRootTreeNode)
+      for (ICEVTreeNode n : ((ICEVRootTreeNode) input).getNodes())
+        if (n instanceof CEVAnnotationTreeNode)
+          getTreeViewer().setChecked(n,
+                  getCasData().isChecked(((CEVAnnotationTreeNode) n).getAnnotation()));
+        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);
+          }
+        }
+
+    // getTreeViewer().expandAll();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#annotationAdded(org.
+   * apache.uima.cas.text.AnnotationFS)
+   */
+  @Override
+  public void annotationsAdded(List<AnnotationFS> annots) {
+    newSelection(offset);
+    // getTreeViewer().getTree().removeAll();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#annotationRemoved(org
+   * .apache.uima.cas.text.AnnotationFS)
+   */
+  @Override
+  public void annotationsRemoved(List<AnnotationFS> annots) {
+    newSelection(offset);
+    // getTreeViewer().getTree().removeAll();
+  }
+
+  public void handleEvent(Event event) {
+    if (event.widget == filterTextField && event.type == SWT.Modify) {
+      manualTypeFilter = filterTextField.getText();
+      newSelection(offset);
+    }
+  }
+}
\ 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/selection/CEVSelectionPage.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/selection/CEVSelectionPage.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/selection/CEVSelectionView.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/selection/CEVSelectionView.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/selection/CEVSelectionView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/selection/CEVSelectionView.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,31 @@
+package org.apache.uima.tm.cev.views.selection;
+
+import org.apache.uima.tm.cev.views.CEVPageBookView;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+/**
+ * SelektionView fuer den CASViewer
+ * 
+ * @author Marco Nehmeier
+ */
+public class CEVSelectionView extends CEVPageBookView {
+
+  /**
+   * Default-Konstruktor
+   */
+  public CEVSelectionView() {
+    super();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.part.PageBookView#doCreatePage(org.eclipse.ui.IWorkbenchPart )
+   */
+  @Override
+  protected PageRec doCreatePage(IWorkbenchPart part) {
+    // Erzeugt die Page
+    return doCreatePage(part, ICEVSelectionPage.class);
+  }
+}

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

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/selection/CEVSelectionView.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/selection/CEVSelectionViewFactory.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/selection/CEVSelectionViewFactory.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/selection/CEVSelectionViewFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/selection/CEVSelectionViewFactory.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.cev.views.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 CEVSelectionViewFactory implements ICEVViewFactory {
+
+  public CEVSelectionViewFactory() {
+  }
+
+  public ICEVView createView(CEVViewer viewer, CEVDocument cevDocument, int index) {
+    return new CEVSelectionPage(viewer, cevDocument, index);
+  }
+
+  public Class<?> getAdapterInterface() {
+    return ICEVSelectionPage.class;
+  }
+
+}

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

Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/selection/CEVSelectionViewFactory.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/selection/ICEVSelectionPage.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/selection/ICEVSelectionPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/selection/ICEVSelectionPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/selection/ICEVSelectionPage.java Mon Aug  1 13:53:56 2011
@@ -0,0 +1,11 @@
+package org.apache.uima.tm.cev.views.selection;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+/**
+ * Interface fuer eine SelektionPage im CASViewer
+ * 
+ * @author Marco Nehmeier
+ */
+public interface ICEVSelectionPage extends ICEVViewPage {
+}

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

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