You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by jo...@apache.org on 2011/08/01 15:54:22 UTC
svn commit: r1152774 [5/6] - in /uima/sandbox/trunk/TextMarker:
org.apache.uima.tm.cev.feature/ org.apache.uima.tm.cev.html.feature/
org.apache.uima.tm.cev.html/ org.apache.uima.tm.cev.html/META-INF/
org.apache.uima.tm.cev.html/bin/ org.apache.uima.tm....
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,566 @@
+package org.apache.uima.tm.cev.views;
+
+import java.util.HashSet;
+import java.util.List;
+
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.tm.cev.CEVPlugin;
+import org.apache.uima.tm.cev.data.CEVData;
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.data.ICEVAnnotationListener;
+import org.apache.uima.tm.cev.data.tree.CEVAnnotationTreeNode;
+import org.apache.uima.tm.cev.data.tree.CEVFeatureTreeNode;
+import org.apache.uima.tm.cev.data.tree.CEVTypeTreeNode;
+import org.apache.uima.tm.cev.data.tree.ICEVRootTreeNode;
+import org.apache.uima.tm.cev.data.tree.ICEVTreeNode;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.apache.uima.tm.cev.preferences.CEVPreferenceConstants;
+import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.ColorDialog;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.part.IPageSite;
+import org.eclipse.ui.part.Page;
+
+
+/**
+ * TreeViewPage mit ToolTip-Unterstuetzung
+ *
+ * @author Marco Nehmeier
+ */
+public abstract class CEVAnnotationTreeViewPage extends Page implements ICEVViewPage,
+ ICEVAnnotationListener, MouseListener, IDoubleClickListener, IPropertyChangeListener,
+ ICEVView, Listener {
+
+ /**
+ * ToolTip-Listener
+ *
+ * @author Marco Nehmeier
+ */
+ private class ToolTipListener implements Listener {
+
+ private static final String TOOLTIP_TEXT_END = "\nEnd: ";
+
+ private static final String TOOLTIP_TEXT_BEGIN = "Begin: ";
+
+ private Shell tip = null;
+
+ private Label label = null;
+
+ private Tree tree;
+
+ /**
+ * Konstruktor
+ *
+ * @param tree
+ * zugrundeliegender Tree
+ */
+ private ToolTipListener(Tree tree) {
+ this.tree = tree;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets .Event)
+ */
+ public void handleEvent(Event event) {
+ switch (event.type) {
+ case SWT.Dispose:
+ case SWT.KeyDown:
+ // beim Verlassen Tip wieder freigeben
+ case SWT.MouseMove: {
+ if (tip == null)
+ break;
+ tip.dispose();
+ tip = null;
+ label = null;
+ break;
+ }
+ // ToolTip anzeigen
+ case SWT.MouseHover: {
+ // TreeItem bestimmen
+ TreeItem item = tree.getItem(new Point(event.x, event.y));
+
+ if (item != null && item.getData() instanceof CEVAnnotationTreeNode) {
+ // Alten Tip freigeben
+ if (tip != null && !tip.isDisposed())
+ tip.dispose();
+
+ // Tip erzeugen
+ tip = new Shell(Display.getCurrent().getActiveShell(), SWT.ON_TOP | SWT.NO_FOCUS
+ | SWT.TOOL);
+
+ // Farben setzen
+ tip.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
+ FillLayout layout = new FillLayout();
+ layout.marginWidth = 2;
+ tip.setLayout(layout);
+
+ // Lable
+ label = new Label(tip, SWT.NONE);
+ label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_FOREGROUND));
+ label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
+
+ AnnotationFS annot = ((CEVAnnotationTreeNode) item.getData()).getAnnotation();
+
+ // Text setzten
+ label
+ .setText(TOOLTIP_TEXT_BEGIN + annot.getBegin() + TOOLTIP_TEXT_END
+ + annot.getEnd());
+
+ // Zeichnen
+ Point size = tip.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+ Rectangle rect = item.getBounds(0);
+ Point pt = tree.toDisplay(rect.x, rect.y);
+ tip.setBounds(pt.x, pt.y, size.x, size.y);
+ tip.setVisible(true);
+ }
+ }
+ }
+ }
+ }
+
+ protected CEVViewer casView;
+
+ private CheckboxTreeViewer treeView;
+
+ private CEVDocument casDocument;
+
+ private CEVData casData;
+
+ private CEVAnnotationTreeViewLableProvider lableProvider;
+
+ protected Text filterTextField;
+
+ protected String manualTypeFilter = "";
+
+ private Composite overlay;
+
+ /**
+ * Konstruktor
+ *
+ * @param casView
+ * CASViewer
+ * @param casData
+ * CASData
+ */
+ public CEVAnnotationTreeViewPage(CEVViewer casView, CEVDocument casDocument, int index) {
+ super();
+ this.casView = casView;
+ this.casDocument = casDocument;
+
+ this.casData = casDocument.getCASData(index);
+ casData.addAnnotationListener(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.Page#init(org.eclipse.ui.part.IPageSite)
+ */
+ @Override
+ public void init(IPageSite pageSite) {
+ super.init(pageSite);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.Page#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void createControl(Composite parent) {
+ this.overlay = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.horizontalSpacing = 0;
+ layout.verticalSpacing = 0;
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ // FillLayout layout = new FillLayout(SWT.VERTICAL);
+ overlay.setLayout(layout);
+
+ filterTextField = new Text(overlay, SWT.SINGLE | SWT.BORDER);
+ GridData gd = new GridData();
+ gd.grabExcessHorizontalSpace = true;
+ gd.horizontalAlignment = GridData.FILL;
+ gd.horizontalSpan = 1;
+ filterTextField.setLayoutData(gd);
+ filterTextField.setToolTipText("Retain types that contain...");
+ filterTextField.addListener(SWT.KeyUp, this);
+ filterTextField.addListener(SWT.MouseUp, this);
+ filterTextField.addListener(SWT.Modify, this);
+
+ treeView = new CheckboxTreeViewer(overlay, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+ gd = new GridData(GridData.FILL_BOTH);
+ treeView.getTree().setLayoutData(gd);
+ treeView.setContentProvider(new CEVAnnotationTreeViewContentProvider());
+ lableProvider = new CEVAnnotationTreeViewLableProvider(casData);
+ treeView.setLabelProvider(lableProvider);
+ // Listender registrieren
+ treeView.addCheckStateListener(casData);
+ treeView.addDoubleClickListener(this);
+ treeView.getTree().addMouseListener(this);
+
+ // ToolTip Listener
+ ToolTipListener tl = new ToolTipListener(treeView.getTree());
+
+ treeView.getTree().addListener(SWT.Dispose, tl);
+ treeView.getTree().addListener(SWT.KeyDown, tl);
+ treeView.getTree().addListener(SWT.MouseMove, tl);
+ treeView.getTree().addListener(SWT.MouseHover, tl);
+ int ops = DND.DROP_COPY | DND.DROP_MOVE;
+ Transfer[] transfers = new Transfer[] { TextTransfer.getInstance() };
+ treeView.addDragSupport(ops, transfers, new CEVAnnotationTreeViewDragListener(treeView));
+
+ CEVPlugin.getDefault().getPluginPreferences().addPropertyChangeListener(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.Page#dispose()
+ */
+ @Override
+ public void dispose() {
+ super.dispose();
+ overlay.dispose();
+ CEVPlugin.getDefault().getPluginPreferences().removePropertyChangeListener(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.Page#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return overlay;
+ }
+
+ /**
+ * Gibt den TreeView zurueck
+ *
+ * @return TreeView
+ */
+ public CheckboxTreeViewer getTreeViewer() {
+ return treeView;
+ }
+
+ /**
+ * Gibt die CASData zurueck
+ *
+ * @return CASData
+ */
+ public CEVData getCasData() {
+ return casData;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.Page#setFocus()
+ */
+ @Override
+ public void setFocus() {
+ overlay.setFocus();
+ }
+
+ /**
+ * CAS-View hat sich geaendert
+ *
+ * @param index
+ * Index des Views
+ */
+ public void viewChanged(int newIndex) {
+ treeView.removeCheckStateListener(casData);
+ casData.removeAnnotationListener(this);
+ casData = casDocument.getCASData(newIndex);
+ treeView.addCheckStateListener(casData);
+ casData.addAnnotationListener(this);
+ lableProvider.setCASData(casData);
+ treeView.setInput(null);
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.uniwue.casviewer.data.ICASAnnotationStateListener#annotationStateChanged
+ * (org.apache.uima.cas.Type)
+ */
+ public void annotationStateChanged(Type type) {
+ if (treeView.getInput() == null)
+ return;
+
+ // Selektionen verwalten
+ Object input = treeView.getInput();
+
+ if (input instanceof ICEVRootTreeNode)
+ for (ICEVTreeNode n : ((ICEVRootTreeNode) input).getNodes(type))
+ if (n instanceof CEVAnnotationTreeNode)
+ treeView.setChecked(n, casData.isChecked(((CEVAnnotationTreeNode) n).getAnnotation()));
+ else if (n instanceof CEVTypeTreeNode) {
+ treeView.setGrayed(n, casData.isGrayed(type));
+ treeView.setChecked(n, casData.isChecked(type));
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.uniwue.casviewer.data.ICASAnnotationStateListener#annotationStateChanged
+ * (org.apache.uima.cas.text.AnnotationFS)
+ */
+ public void annotationStateChanged(AnnotationFS annot) {
+ if (treeView.getInput() == null)
+ return;
+
+ // Selektionen verwalten
+ Object input = treeView.getInput();
+
+ if (input instanceof ICEVRootTreeNode)
+ for (ICEVTreeNode n : ((ICEVRootTreeNode) input).getNodes(annot.getType())) {
+ if (n instanceof CEVAnnotationTreeNode
+ && ((CEVAnnotationTreeNode) n).getAnnotation() == annot) {
+ treeView.setChecked(n, casData.isChecked(annot));
+
+ } else if (n instanceof CEVTypeTreeNode && annot.getType() == n.getType()) {
+ if (casData.isGrayed(n.getType()))
+ treeView.setGrayChecked(n, true);
+ else if (casData.isChecked(n.getType())) {
+ treeView.setGrayed(n, false);
+ treeView.setChecked(n, true);
+ } else {
+ treeView.setGrayChecked(n, false);
+ }
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse
+ * .jface.viewers.DoubleClickEvent)
+ */
+ public void doubleClick(DoubleClickEvent event) {
+ // An Position im Dokument springen
+ if (event.getSelection() != null && event.getSelection() instanceof ITreeSelection) {
+ Object treeNode = ((ITreeSelection) event.getSelection()).getFirstElement();
+ if (treeNode instanceof CEVAnnotationTreeNode) {
+ casView.moveToAnnotation(((CEVAnnotationTreeNode) treeNode).getAnnotation());
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.uniwue.casviewer.data.ICASAnnotationColorListener#colorChanged(org
+ * .apache.uima.cas.Type)
+ */
+ public void colorChanged(Type type) {
+ treeView.refresh();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.MouseListener#mouseDoubleClick(org.eclipse.swt .events.MouseEvent)
+ */
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+
+ public void deleteSelectedAnnotations() {
+ if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "Confirm Delete",
+ "Are you sure you want to delete these items?")) {
+
+ TreeItem[] items = treeView.getTree().getSelection();
+ HashSet<AnnotationFS> annots = new HashSet<AnnotationFS>();
+
+ // Annot selektieren
+ for (TreeItem it : items) {
+ if (it.getData() instanceof CEVAnnotationTreeNode) {
+ CEVAnnotationTreeNode annot = (CEVAnnotationTreeNode) it.getData();
+ annots.add(annot.getAnnotation());
+ } else if (it.getData() instanceof CEVTypeTreeNode) {
+ CEVTypeTreeNode type = (CEVTypeTreeNode) it.getData();
+
+ for (Object child : type.getChildren()) {
+ if (child instanceof CEVAnnotationTreeNode) {
+ CEVAnnotationTreeNode annot = (CEVAnnotationTreeNode) child;
+ annots.add(annot.getAnnotation());
+ }
+ }
+ }
+ }
+
+ // Loeschen
+ casData.removeAnnotations(annots.toArray(new AnnotationFS[annots.size()]));
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.MouseListener#mouseDown(org.eclipse.swt.events .MouseEvent)
+ */
+ public void mouseDown(final MouseEvent mouseEvent) {
+ // Kontext-Menue anzeigen
+ if (mouseEvent.button == 3) {
+ Display display = Display.getCurrent();
+ Menu menu = new Menu(display.getActiveShell(), SWT.POP_UP);
+ MenuItem itemFgC = new MenuItem(menu, SWT.PUSH);
+
+ // Schriftfarbe
+ itemFgC.setText("Change Font Color");
+ itemFgC.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event e) {
+ TreeItem item = treeView.getTree().getItem(new Point(mouseEvent.x, mouseEvent.y));
+
+ if (item != null && item.getData() instanceof ICEVTreeNode) {
+ Type type = ((ICEVTreeNode) item.getData()).getType();
+ ColorDialog cd = new ColorDialog(Display.getCurrent().getActiveShell());
+ cd.setRGB(casData.getForegroundColor(type).getRGB());
+
+ RGB rgb = cd.open();
+
+ if (rgb != null)
+ casData.setForegroundColor(type, new Color(Display.getCurrent(), rgb));
+ }
+ }
+ });
+
+ // Hintergrundfarbe
+ MenuItem itemBgC = new MenuItem(menu, SWT.PUSH);
+ itemBgC.setText("Change Background Color");
+ itemBgC.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event e) {
+ TreeItem item = treeView.getTree().getItem(new Point(mouseEvent.x, mouseEvent.y));
+
+ if (item != null && item.getData() instanceof ICEVTreeNode) {
+ Type type = ((ICEVTreeNode) item.getData()).getType();
+
+ ColorDialog cd = new ColorDialog(Display.getCurrent().getActiveShell());
+ cd.setRGB(casData.getBackgroundColor(type).getRGB());
+
+ RGB rgb = cd.open();
+
+ if (rgb != null)
+ casData.setBackgroundColor(type, new Color(Display.getCurrent(), rgb));
+ }
+ }
+ });
+
+ // Nur wenn Typ oder Annotation ausgewaehlt Menupunkte anzeigen
+ TreeItem item = treeView.getTree().getItem(new Point(mouseEvent.x, mouseEvent.y));
+ if (item != null && item.getData() instanceof CEVFeatureTreeNode) {
+ itemBgC.setEnabled(false);
+ itemFgC.setEnabled(false);
+ }
+
+ new MenuItem(menu, SWT.SEPARATOR);
+
+ // Annot loeschen
+ MenuItem itemDelA = new MenuItem(menu, SWT.PUSH);
+ itemDelA.setText("Delete selected Items");
+ itemDelA.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event e) {
+ deleteSelectedAnnotations();
+ }
+ });
+
+ // Pruefen ob ueberhaupt etwas (Typ und/oder Annot) zum Loeschen
+ // selektiert => anzeigen des Menupunktes
+ itemDelA.setEnabled(false);
+ TreeItem[] items = treeView.getTree().getSelection();
+ for (TreeItem ti : items)
+ if (!(ti.getData() instanceof CEVFeatureTreeNode)) {
+ itemDelA.setEnabled(true);
+ break;
+ }
+
+ menu.setVisible(true);
+
+ while (!menu.isDisposed() && menu.isVisible()) {
+ if (!display.readAndDispatch())
+ display.sleep();
+ }
+ menu.dispose();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @seeorg.eclipse.swt.events.MouseListener#mouseUp(org.eclipse.swt.events. MouseEvent)
+ */
+ public void mouseUp(MouseEvent e) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.uima.tm.cev.data.ICEVAnnotationListener#annotationAdded(org.apache
+ * .uima.cas.text.AnnotationFS)
+ */
+ public abstract void annotationsAdded(List<AnnotationFS> annots);
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.uima.tm.cev.data.ICEVAnnotationListener#annotationRemoved(org.apache
+ * .uima.cas.text.AnnotationFS)
+ */
+ public abstract void annotationsRemoved(List<AnnotationFS> annots);
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.Preferences$IPropertyChangeListener#propertyChange
+ * (org.eclipse.core.runtime.Preferences.PropertyChangeEvent)
+ */
+ public void propertyChange(PropertyChangeEvent event) {
+ if (event.getProperty().equals(CEVPreferenceConstants.P_ANNOTATION_REPR)) {
+ lableProvider.setTextRepr();
+ treeView.refresh();
+ }
+ }
+
+ public void casChanged(CEVDocument casDocument) {
+ this.casDocument = casDocument;
+ }
+
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVAnnotationTreeViewPage.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,116 @@
+package org.apache.uima.tm.cev.views;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.internal.views.ViewsPlugin;
+import org.eclipse.ui.part.IPage;
+import org.eclipse.ui.part.IPageBookViewPage;
+import org.eclipse.ui.part.MessagePage;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.ui.part.PageBookView;
+
+/**
+ * Abstrakter PageBookView fuer den AnnotationBrowser und den SelectionView.
+ *
+ * @author Marco Nehmeier
+ */
+public abstract class CEVPageBookView extends PageBookView {
+
+ /**
+ * Text wenn kein View vom Editor zur Verfuegung gestellt wird.
+ */
+ private static final String VIEW_IS_NOT_AVAILABLE = "View is not available.";
+
+ // private PageRec last = null;
+
+ /**
+ * Defaultkonstruktor.
+ */
+ public CEVPageBookView() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.PageBookView#createDefaultPage(org.eclipse.ui.part.PageBook)
+ */
+ @Override
+ protected IPage createDefaultPage(PageBook book) {
+ // MessagePage wenn der View nicht zur Verfuegung steht
+ MessagePage page = new MessagePage();
+ initPage(page);
+ page.createControl(book);
+ page.setMessage(VIEW_IS_NOT_AVAILABLE);
+ return page;
+ }
+
+ /**
+ * Erzeugt die jeweilige Page
+ *
+ * @param part
+ * zugrundeliegender WorkbenchPart
+ * @param clazz
+ * Klasse der Page
+ * @return PageRec
+ */
+ protected PageRec doCreatePage(IWorkbenchPart part, final Class<?> clazz) {
+ Object obj = ViewsPlugin.getAdapter(part, clazz, false);
+ if (obj instanceof ICEVViewPage) {
+ ICEVViewPage page = (ICEVViewPage) obj;
+ if (page instanceof IPageBookViewPage) {
+ initPage(page);
+ }
+ page.createControl(getPageBook());
+ PageRec pageRec = new PageRec(part, page);
+ // last = pageRec;
+ return pageRec;
+ } else {
+ return null;
+ }
+ }
+
+ //
+ // public void dispose() {
+ // last.dispose();
+ // super.dispose();
+ // }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.PageBookView#doDestroyPage(org.eclipse.ui.IWorkbenchPart,
+ * org.eclipse.ui.part.PageBookView.PageRec)
+ */
+ @Override
+ protected void doDestroyPage(IWorkbenchPart part, PageRec pageRecord) {
+ pageRecord.page.dispose();
+ pageRecord.dispose();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.PageBookView#getBootstrapPart()
+ */
+ @Override
+ protected IWorkbenchPart getBootstrapPart() {
+ IWorkbenchPage page = getSite().getPage();
+ if (page != null) {
+ return page.getActiveEditor();
+ }
+
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.PageBookView#isImportant(org.eclipse.ui.IWorkbenchPart)
+ */
+ @Override
+ protected boolean isImportant(IWorkbenchPart part) {
+ return (part instanceof IEditorPart);
+ }
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/CEVPageBookView.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,11 @@
+package org.apache.uima.tm.cev.views;
+
+import org.eclipse.ui.part.IPageBookViewPage;
+
+/**
+ * Interface fuer die PageBookViews fuer Views von CASViewer
+ *
+ * @author Marco Nehmeier
+ */
+public interface ICEVViewPage extends IPageBookViewPage {
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/ICEVViewPage.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,24 @@
+package org.apache.uima.tm.cev.views;
+
+public class TextUtils {
+
+ public static String shrinkNamespace(String namespace) {
+ String result = "";
+ if (namespace != null) {
+ String[] split = namespace.split("[.]");
+ for (int i = 0; i < split.length - 1; i++) {
+ if (split[i].length() != 0) {
+ result += split[i].charAt(0);
+ result += ".";
+ }
+ }
+ if (split.length == 0) {
+ return namespace;
+ } else {
+ result += split[split.length - 1];
+ }
+ }
+ return result;
+ }
+
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/TextUtils.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,275 @@
+package org.apache.uima.tm.cev.views.annotationBrowser;
+
+import java.util.List;
+
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.tm.cev.CEVPlugin;
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.data.tree.CEVAnnotationTreeNode;
+import org.apache.uima.tm.cev.data.tree.CEVTypeTreeNode;
+import org.apache.uima.tm.cev.data.tree.ICEVRootTreeNode;
+import org.apache.uima.tm.cev.data.tree.ICEVTreeNode;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.preferences.CEVPreferenceConstants;
+import org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+
+
+/**
+ * Page fuer den AnnotationBrowserView
+ *
+ * @author Marco Nehmeier
+ */
+public class CEVAnnotationBrowserPage extends CEVAnnotationTreeViewPage implements
+ ICEVAnnotationBrowserPage {
+
+ // Enum fuer den Zustand des Baums
+ private enum State {
+ // Nach Anfangs und Endposition dern Annotation
+ AnnotationOrdered,
+ // Nach Annotations-Typen
+ TypeOrdered
+ }
+
+ // Zustand des Baums
+ private State state;
+
+ // Icon der Action
+ private Image icon;
+
+ /**
+ * Konstruktor
+ *
+ * @param casView
+ * CASViewer
+ * @param casData
+ * CASData
+ */
+ public CEVAnnotationBrowserPage(CEVViewer casView, CEVDocument casDocument, int index) {
+ super(casView, casDocument, index);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.uniwue.casviewer.views.CASAnnotationTreeViewPage#createControl(org
+ * .eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void createControl(Composite parent) {
+ super.createControl(parent);
+
+ // Annotationen im Baum anzeigen .... TypeOrdered und Zustand setzen
+ getTreeViewer().setInput(getCasData().getTypeOrderedTree(""));
+
+ getTreeViewer().getControl().addKeyListener(new KeyAdapter() {
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ int keyCode = e.keyCode;
+ // backspace or delete
+ if (keyCode == SWT.BS || keyCode == SWT.DEL) {
+ deleteSelectedAnnotations();
+ }
+ }
+
+ });
+
+ setTreeOrder();
+
+ List<Type> initialVisibleTypes = casView.getInitialVisibleTypes();
+ for (Type type : initialVisibleTypes) {
+ this.annotationStateChanged(type);
+ }
+ }
+
+ /**
+ * Baumordnung festlegen
+ */
+ private void setTreeOrder() {
+ IPreferenceStore store = CEVPlugin.getDefault().getPreferenceStore();
+ String treeOrder = store.getString(CEVPreferenceConstants.P_ANNOTATION_BROWSER_TREE_ORDER);
+
+ if (treeOrder.equals(CEVPreferenceConstants.P_ANNOTATION_BROWSER_TREE_ORDER_TYPE))
+ state = State.TypeOrdered;
+ else if (treeOrder.equals(CEVPreferenceConstants.P_ANNOTATION_BROWSER_TREE_ORDER_ANNOT))
+ state = State.AnnotationOrdered;
+ else
+ state = State.TypeOrdered;
+ }
+
+ /**
+ * Aus Performance-gruenden abgeschaltet
+ */
+ // /*
+ // * (non-Javadoc)
+ // *
+ // * @see org.eclipse.ui.part.Page#setActionBars(org.eclipse.ui.IActionBars)
+ // */
+ // public void setActionBars(IActionBars actionBars) {
+ // // Action zum Baumveraendern erzeugen
+ // Action treeChangeAction = new Action() {
+ // public void run() {
+ // // Baum umsortieren
+ // if (state == State.TypeOrdered) {
+ // // getTreeViewer().setInput(getCasData().getAnnotationOrderedTree());
+ // state = State.AnnotationOrdered;
+ // } else if (state == State.AnnotationOrdered) {
+ // // getTreeViewer().setInput(getCasData().getTypeOrderedTree());
+ // state = State.TypeOrdered;
+ // }
+ //
+ // // updateSelektion();
+ // reloadTree();
+ // }
+ // };
+ //
+ // // ToolTip
+ // treeChangeAction.setToolTipText("Change TreeView-Order");
+ //
+ // // Icon laden
+ // InputStream in = getClass().getResourceAsStream(
+ // "/icons/hierarchicalLayout.gif");
+ // if (in != null) {
+ // try {
+ // icon = new Image(Display.getCurrent(), in);
+ // } catch (SWTException e) {
+ // if (e.code != SWT.ERROR_INVALID_IMAGE) {
+ // throw e;
+ // // fall through otherwise
+ // }
+ // } finally {
+ // try {
+ // in.close();
+ // } catch (IOException e) {
+ // }
+ // }
+ // }
+ //
+ // // Icon setzen
+ // treeChangeAction.setImageDescriptor(
+ // ImageDescriptor.createFromImage(icon));
+ //
+ // // Action in die ToolBar setzen
+ // actionBars.getToolBarManager().add(treeChangeAction);
+ // }
+ /**
+ * Selektion aktuallisieren
+ */
+ private void updateSelection() {
+ // Selektionen aktuallisieren
+ Object input = getTreeViewer().getInput();
+
+ if (input instanceof ICEVRootTreeNode)
+ for (ICEVTreeNode n : ((ICEVRootTreeNode) input).getNodes())
+ if (n instanceof CEVAnnotationTreeNode) {
+ boolean checked = getCasData().isChecked(((CEVAnnotationTreeNode) n).getAnnotation());
+ if (checked) {
+ getTreeViewer().setChecked(n, true);
+ }
+ } else if (n instanceof CEVTypeTreeNode) {
+ if (getCasData().isGrayed(n.getType()))
+ getTreeViewer().setGrayChecked(n, true);
+ else if (getCasData().isChecked(n.getType())) {
+ getTreeViewer().setGrayed(n, false);
+ getTreeViewer().setChecked(n, true);
+ } else {
+ getTreeViewer().setGrayChecked(n, false);
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#casDataChanged(int)
+ */
+ @Override
+ public void viewChanged(int index) {
+ super.viewChanged(index);
+ reloadTree();
+ }
+
+ /**
+ * Baum neu laden
+ */
+ private void reloadTree() {
+ if (state == State.TypeOrdered) {
+ getTreeViewer().setInput(getCasData().getTypeOrderedTree(manualTypeFilter));
+ } else if (state == State.AnnotationOrdered) {
+ getTreeViewer().setInput(getCasData().getAnnotationOrderedTree(manualTypeFilter));
+ }
+ updateSelection();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.uniwue.casviewer.views.CASAnnotationTreeViewPage#dispose()
+ */
+ @Override
+ public void dispose() {
+ // Icon freigeben
+ if (icon != null)
+ icon.dispose();
+
+ super.dispose();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#annotationAdded(org.
+ * apache.uima.cas.text.AnnotationFS)
+ */
+ @Override
+ public void annotationsAdded(List<AnnotationFS> annots) {
+ reloadTree();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#annotationRemoved(org
+ * .apache.uima.cas.text.AnnotationFS)
+ */
+ @Override
+ public void annotationsRemoved(List<AnnotationFS> annots) {
+ reloadTree();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#propertyChange(org.eclipse
+ * .core.runtime.Preferences.PropertyChangeEvent)
+ */
+ @Override
+ public void propertyChange(PropertyChangeEvent event) {
+ super.propertyChange(event);
+ if (event.getProperty().equals(CEVPreferenceConstants.P_ANNOTATION_BROWSER_TREE_ORDER)) {
+ setTreeOrder();
+ reloadTree();
+ }
+ }
+
+ public void newSelection(int offset) {
+
+ }
+
+ public void handleEvent(Event event) {
+ if (event.widget == filterTextField && event.type == SWT.Modify) {
+ manualTypeFilter = filterTextField.getText();
+ reloadTree();
+ }
+ }
+
+}
\ No newline at end of file
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserPage.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,22 @@
+package org.apache.uima.tm.cev.views.annotationBrowser;
+
+import org.apache.uima.tm.cev.views.CEVPageBookView;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+public class CEVAnnotationBrowserView extends CEVPageBookView {
+ public CEVAnnotationBrowserView() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.PageBookView#doCreatePage(org.eclipse.ui.IWorkbenchPart)
+ */
+ @Override
+ protected PageRec doCreatePage(IWorkbenchPart part) {
+ return doCreatePage(part, ICEVAnnotationBrowserPage.class);
+ }
+
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserView.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,22 @@
+package org.apache.uima.tm.cev.views.annotationBrowser;
+
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.apache.uima.tm.cev.extension.ICEVViewFactory;
+
+public class CEVAnnotationBrowserViewFactory implements ICEVViewFactory {
+
+ public CEVAnnotationBrowserViewFactory() {
+ }
+
+ public ICEVView createView(CEVViewer viewer, CEVDocument cevDocument, int index) {
+ CEVAnnotationBrowserPage page = new CEVAnnotationBrowserPage(viewer, cevDocument, index);
+ return page;
+ }
+
+ public Class<?> getAdapterInterface() {
+ return ICEVAnnotationBrowserPage.class;
+ }
+
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/CEVAnnotationBrowserViewFactory.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,6 @@
+package org.apache.uima.tm.cev.views.annotationBrowser;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+public interface ICEVAnnotationBrowserPage extends ICEVViewPage {
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/annotationBrowser/ICEVAnnotationBrowserPage.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.cev.views.editor;
+
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVEditor;
+import org.apache.uima.tm.cev.extension.ICEVEditorFactory;
+
+public class CEVAnnotationEditorFactory implements ICEVEditorFactory {
+
+ public CEVAnnotationEditorFactory() {
+ }
+
+ public ICEVEditor createEditor(CEVViewer viewer, CEVDocument cevDocument, int index) {
+ return new CEVAnnotationEditorPage(viewer, cevDocument, index);
+ }
+
+ public Class<?> getAdapterInterface() {
+ return ICEVAnnotationEditorPage.class;
+ }
+
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorFactory.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,755 @@
+package org.apache.uima.tm.cev.views.editor;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.tm.cev.CEVPlugin;
+import org.apache.uima.tm.cev.data.CEVData;
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVEditor;
+import org.apache.uima.tm.cev.preferences.CEVPreferenceConstants;
+import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.custom.StyleRange;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Widget;
+import org.eclipse.ui.part.IPageSite;
+import org.eclipse.ui.part.Page;
+import org.htmlparser.util.ParserUtils;
+import org.htmlparser.util.Translate;
+
+
+public class CEVAnnotationEditorPage extends Page implements ICEVAnnotationEditorPage,
+ MouseListener, SelectionListener, IPropertyChangeListener, ICEVEditor, Listener {
+
+ private enum Drag {
+ start, end, none
+ }
+
+ private class Selection {
+ private int start;
+
+ private int end;
+
+ public Selection(int start, int end) {
+ this.start = start;
+ this.end = end;
+ }
+
+ public int getStart() {
+ return start;
+ }
+
+ public void setStart(int start) {
+ this.start = start;
+ }
+
+ public int getEnd() {
+ return end;
+ }
+
+ public void setEnd(int end) {
+ this.end = end;
+ }
+ }
+
+ private Composite pane;
+
+ private List<Selection> selections;
+
+ private StyledText textView;
+
+ private Table table;
+
+ private CEVDocument casDocument;
+
+ private Button createButton;
+
+ private Drag dragState;
+
+ private boolean text_repr;
+
+ private int current;
+
+ private Text typeFilterText;
+
+ private Table typeTable;
+
+ private List<String> types;
+
+ private List<String> selected;
+
+ /**
+ * Konstruktor
+ *
+ * @param casView
+ * CASViewer
+ * @param casData
+ * CASData
+ */
+ public CEVAnnotationEditorPage(CEVViewer casView, CEVDocument casDocument, int index) {
+ super();
+ current = index;
+ // Textrep. setzen
+ setTextRepr();
+
+ // cas setzen
+ this.casDocument = casDocument;
+ selections = new ArrayList<Selection>();
+ }
+
+ /**
+ * Textdarstellung aus den Preferences auslesen
+ */
+ private void setTextRepr() {
+ IPreferenceStore store = CEVPlugin.getDefault().getPreferenceStore();
+ String repr = store.getString(CEVPreferenceConstants.P_ANNOTATION_REPR);
+
+ if (repr.equals(CEVPreferenceConstants.P_ANNOTATION_REPR_TEXT))
+ text_repr = true;
+ else if (repr.equals(CEVPreferenceConstants.P_ANNOTATION_REPR_HTML))
+ text_repr = false;
+ else
+ text_repr = true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.Page#init(org.eclipse.ui.part.IPageSite)
+ */
+ @Override
+ public void init(IPageSite pageSite) {
+ super.init(pageSite);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.Page#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void createControl(Composite parent) {
+ pane = new Composite(parent, SWT.NONE);
+
+ FormLayout formLayout = new FormLayout();
+ FormData formData;
+ pane.setLayout(formLayout);
+
+ /*
+ * Label label = new Label(pane, SWT.CENTER); label.setText("Type:"); formData = new FormData();
+ * formData.left = new FormAttachment(0, 5); formData.bottom = new FormAttachment(100, -5);
+ * label.setLayoutData(formData);
+ */
+
+ /*
+ * combo = new Combo(pane, SWT.READ_ONLY | SWT.DROP_DOWN); formData = new FormData();
+ * formData.left = new FormAttachment(label, 5); formData.bottom = new FormAttachment(100, -5);
+ * formData.width = 300; combo.setLayoutData(formData);
+ */
+
+ createButton = new Button(pane, SWT.PUSH);
+ createButton.addSelectionListener(this);
+ createButton.setText("Create Annotations");
+ formData = new FormData();
+ formData.left = new FormAttachment(null, 5);
+ formData.bottom = new FormAttachment(100, -5);
+ createButton.setLayoutData(formData);
+
+ /*
+ * composite = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout();
+ * gridLayout.numColumns = 2; composite.setLayout(gridLayout); formData = new FormData();
+ * formData.top = new FormAttachment(0, 0); formData.left = new FormAttachment(0, 0);
+ * formData.right = new FormAttachment(100, 0); composite.setLayoutData(formData); GridData
+ * gridData;
+ */
+
+ SashForm sashForm2 = new SashForm(pane, SWT.HORIZONTAL);
+ formData = new FormData();
+ formData.top = new FormAttachment(0, 0);
+ formData.left = new FormAttachment(0, 0);
+ formData.right = new FormAttachment(100, 0);
+ formData.bottom = new FormAttachment(createButton);
+ sashForm2.setLayoutData(formData);
+
+ SashForm sashForm = new SashForm(sashForm2, SWT.VERTICAL);
+ formData = new FormData();
+ formData.top = new FormAttachment(0, 0);
+ formData.left = new FormAttachment(0, 0);
+ formData.right = new FormAttachment(100, 0);
+ formData.bottom = new FormAttachment(createButton);
+ sashForm.setLayoutData(formData);
+
+ table = new Table(sashForm, SWT.SINGLE | SWT.BORDER);
+ table.addSelectionListener(this);
+ table.addMouseListener(this);
+
+ TableColumn tableColumn = new TableColumn(table, SWT.BORDER);
+ textView = new StyledText(sashForm, SWT.READ_ONLY | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+ textView.addMouseListener(this);
+
+ // Label placeHolder = new Label(sashForm2, SWT.FILL);
+ // placeHolder.setText("under construction");
+
+ // sc = new ScrolledComposite(sashForm2, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+ // compi = new Composite(sc, SWT.NONE);
+ // compi.setLayout(new GridLayout());
+ // // GridData gridData = new GridData();
+ //
+ // compi.addMouseListener(this);
+ // sc.setExpandHorizontal(true);
+ // sc.setExpandVertical(true);
+ // sc.setMinSize(compi.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ // sc.setContent(compi);
+
+ // final int maxTitleLength = updateTypes();
+ // updateControl(maxTitleLength);
+
+ selected = new ArrayList<String>();
+ types = new ArrayList<String>(Arrays.asList(getCurrentCEVData().getTypeNames()));
+ Collections.sort(types);
+
+ Composite typeComposite = new Composite(sashForm2, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ layout.verticalSpacing = 0;
+ layout.horizontalSpacing = 0;
+ typeComposite.setLayout(layout);
+ typeComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+ typeFilterText = newText(typeComposite, SWT.SINGLE, "Specify the type name");
+ typeFilterText.addListener(SWT.Modify, this);
+ typeTable = newTable(typeComposite, SWT.CHECK);
+ ((GridData) typeTable.getLayoutData()).heightHint = 250;
+ ((GridData) typeTable.getLayoutData()).minimumHeight = 100;
+ typeFilterText.addListener(SWT.CHECK, this);
+ displayFilteredTypes("");
+ //
+ // Point computeSize = typeComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+ // typeComposite.setSize(computeSize);
+ // System.out.println(computeSize);
+
+ sashForm.setWeights(new int[] { 1, 1 });
+ sashForm2.setWeights(new int[] { 2, 1 });
+ casDataChanged();
+ tableColumn.setWidth(1280);
+
+ CEVPlugin.getDefault().getPluginPreferences().addPropertyChangeListener(this);
+
+ }
+
+ private void displayFilteredTypes(String aTypeName) {
+ typeTable.setRedraw(false);
+ typeTable.removeAll();
+ String topEntry = "";
+ aTypeName = aTypeName.toLowerCase();
+ for (String type : types) {
+ String candidateTypeName = type.toLowerCase();
+ if (aTypeName.trim().equals("") || candidateTypeName.indexOf(aTypeName) != -1) {
+
+ if (topEntry.equals("")) {
+ topEntry = type;
+ }
+ TableItem item = new TableItem(typeTable, SWT.NULL);
+ item.setText(type);
+ if (selected.contains(item.getText())) {
+ item.setChecked(true);
+ }
+
+ }
+ }
+ typeTable.setRedraw(true);
+ }
+
+ protected Table newTable(Composite parent, int style) {
+ Table table = new Table(parent, style | SWT.BORDER);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ table.setLayoutData(gd);
+ table.addListener(SWT.Selection, this);
+ table.addListener(SWT.KeyUp, this);
+ return table;
+ }
+
+ protected Text newText(Composite parent, int style, String tip) {
+ Text t = new Text(parent, style | SWT.BORDER);
+ t.setToolTipText(tip);
+ t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ t.addListener(SWT.KeyUp, this);
+ t.addListener(SWT.MouseUp, this);
+ return t;
+ }
+
+ /**
+ * CAS hat sich geaendert
+ *
+ * @param casData
+ * CAS
+ */
+ public void casDataChanged() {
+ table.removeAll();
+ selections.clear();
+ dragState = Drag.none;
+ if (getCurrentCEVData() != null) {
+ if (getCurrentCEVData().getDocumentText() != null)
+ textView.setText(getCurrentCEVData().getDocumentText());
+ else
+ textView.setText("");
+ }
+ }
+
+ /**
+ * Selektion anzeigen
+ *
+ * @param start
+ * Startpos
+ * @param end
+ * Endpos
+ */
+ public void textSelected(int start, int end) {
+
+ String text = getCurrentCEVData().getDocumentText().substring(start, end);
+ IPreferenceStore store = CEVPlugin.getDefault().getPreferenceStore();
+ boolean trim = store.getBoolean(CEVPreferenceConstants.P_ANNOTATION_EDITOR_TRIM);
+
+ if (trim) {
+ String trimmed = text.trim();
+
+ int indexOf = text.indexOf(trimmed);
+
+ int trimmedStart = start + indexOf;
+ int trimmedEnd = end - (text.length() - (indexOf + trimmed.length()));
+
+ start = trimmedStart;
+ end = trimmedEnd;
+ text = getCurrentCEVData().getDocumentText().substring(start, end);
+ }
+
+ // Selektion vermerken
+ selections.add(new Selection(start, end));
+ TableItem item = new TableItem(table, SWT.NONE);
+ // Selektierten Text in Tabelle aufnehmen
+
+ // und wenn noetig HTML-Tags filtern
+ if (text_repr)
+ text = ParserUtils.trimSpacesBeginEnd(ParserUtils.trimAllTags(Translate.decode(text), false),
+ "");
+ item.setText(text);
+ // table.getColumn(0).pack();
+ }
+
+ /**
+ * Selektion anzeigen
+ */
+ private void paintSelection() {
+ int index = table.getSelectionIndex();
+
+ // Wenn in der Tabelle was ausgewaehlt
+ if (index >= 0) {
+ Selection sel = selections.get(index);
+ if (sel.getStart() >= 0 && sel.getStart() <= sel.getEnd()
+ && sel.getEnd() < textView.getCharCount()) {
+ // Stylerange anzeigen
+ textView.setStyleRanges(new int[] { sel.getStart(), sel.getEnd() - sel.getStart() },
+ new StyleRange[] { new StyleRange(sel.getStart(), sel.getEnd() - sel.getStart(),
+ Display.getCurrent().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT), Display
+ .getCurrent().getSystemColor(SWT.COLOR_LIST_SELECTION)) });
+
+ textView.setSelection(sel.getStart(), sel.getEnd());
+ } else {
+ textView.setStyleRanges(new StyleRange[0]);
+ textView.setSelection(textView.getCaretOffset());
+ }
+ }
+ }
+
+ /**
+ * alle Selektionen loeschen
+ */
+ private void clearAll() {
+ casDataChanged();
+ }
+
+ /**
+ * aktive Selektion entfernen
+ */
+ private void deleteSelected() {
+ int index = table.getSelectionIndex();
+
+ if (index >= 0) {
+ selections.remove(index);
+ table.remove(index);
+
+ if (table.getItemCount() > 0) {
+ index = index < table.getItemCount() ? index : index - 1;
+
+ table.setSelection(index);
+
+ dragState = Drag.none;
+
+ paintSelection();
+ } else
+ casDataChanged();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.Page#dispose()
+ */
+ @Override
+ public void dispose() {
+ super.dispose();
+ pane.dispose();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.Page#getControl()
+ */
+ @Override
+ public Control getControl() {
+ return pane;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.Page#setFocus()
+ */
+ @Override
+ public void setFocus() {
+ pane.setFocus();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.MouseListener#mouseDoubleClick(org.eclipse.swt .events.MouseEvent)
+ */
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.MouseListener#mouseDown(org.eclipse.swt.events .MouseEvent)
+ */
+ public void mouseDown(MouseEvent event) {
+ // rechte Maustaste in Tabelle => Kontextmenu
+ if (event.getSource() == table && event.button == 3) {
+ Display display = Display.getCurrent();
+ Menu menu = new Menu(display.getActiveShell(), SWT.POP_UP);
+
+ // aktive Selektion loeschen
+ MenuItem itemFgDeleteSelected = new MenuItem(menu, SWT.PUSH);
+
+ itemFgDeleteSelected.setText("Delete Selection");
+ itemFgDeleteSelected.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event e) {
+ deleteSelected();
+ }
+ });
+
+ // alle Selektionen loeschen
+ MenuItem itemFgClearAll = new MenuItem(menu, SWT.PUSH);
+
+ itemFgClearAll.setText("Clear All");
+ itemFgClearAll.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event e) {
+ clearAll();
+ }
+ });
+
+ menu.setVisible(true);
+
+ while (!menu.isDisposed() && menu.isVisible()) {
+ if (!display.readAndDispatch())
+ display.sleep();
+ }
+ menu.dispose();
+
+ // Selektion in der Detailansicht veraendern
+ } else if (event.getSource() == textView && event.button == 1 && table.getSelectionIndex() >= 0) {
+ Selection sel = selections.get(table.getSelectionIndex());
+
+ try {
+ // Anhand der Mausposition feststellen ob Anfang oder Ender der
+ // Selektion veraendert wird
+ int pos = textView.getOffsetAtLocation(new Point(event.x, event.y));
+ if (pos == sel.getStart())
+ dragState = Drag.start;
+ else if (pos == sel.getEnd())
+ dragState = Drag.end;
+ } catch (IllegalArgumentException e) {
+ dragState = Drag.none;
+ }
+ } else {
+ dragState = Drag.none;
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @seeorg.eclipse.swt.events.MouseListener#mouseUp(org.eclipse.swt.events. MouseEvent)
+ */
+ public void mouseUp(MouseEvent event) {
+ // Veraendern der Selektionen
+ if (event.getSource() == textView) {
+ if (event.button == 1 && dragState != Drag.none) {
+ Selection sel = selections.get(table.getSelectionIndex());
+
+ try {
+ int pos = textView.getOffsetAtLocation(new Point(event.x, event.y));
+
+ // Start der Selektion wurde veraendert
+ if (dragState == Drag.start && pos >= 0 && pos < sel.getEnd()) {
+ sel.setStart(pos);
+
+ String text = getCurrentCEVData().getDocumentText().substring(sel.getStart(),
+ sel.getEnd());
+
+ // HTML-Tags filtern
+ if (text_repr)
+ text = ParserUtils.trimSpacesBeginEnd(ParserUtils.trimAllTags(Translate.decode(text),
+ false), "");
+
+ table.getItem(table.getSelectionIndex()).setText(text);
+ // table.getColumn(0).pack();
+
+ // Ender der Selektion wurde veraendert
+ } else if (dragState == Drag.end && pos > sel.getStart() && pos < textView.getCharCount()) {
+ sel.setEnd(pos);
+
+ String text = getCurrentCEVData().getDocumentText().substring(sel.getStart(),
+ sel.getEnd());
+
+ // HTML-Tags filtern
+ if (text_repr)
+ text = ParserUtils.trimSpacesBeginEnd(ParserUtils.trimAllTags(Translate.decode(text),
+ false), "");
+
+ table.getItem(table.getSelectionIndex()).setText(text);
+ // table.getColumn(0).pack();
+ }
+ } catch (IllegalArgumentException e) {
+ }
+ }
+ dragState = Drag.none;
+ paintSelection();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse
+ * .swt.events.SelectionEvent)
+ */
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
+ * .events.SelectionEvent)
+ */
+ public void widgetSelected(SelectionEvent e) {
+ // Auswahl in der Tabelle
+ if (e.getSource() == table) {
+ dragState = Drag.none;
+
+ // aktive Selektion anzeigen
+ paintSelection();
+
+ // Annotationen erzeugen
+ } else if (e.getSource() == createButton) {
+ for (String each : selected) {
+ Type t = getCurrentCEVData().getCAS().getTypeSystem().getType(each);
+ for (Selection s : selections) {
+ boolean update = selected.indexOf(each) >= selected.size();
+ getCurrentCEVData().addAnnotation(t, s.getStart(), s.getEnd(), update);
+ }
+
+ }
+ // Iterator<AnnotationTypeCheckButtonPanel> buttonIter = toggleButtons.listIterator();
+ // while (buttonIter.hasNext()) {
+ // AnnotationTypeCheckButtonPanel buttonPanel = buttonIter.next();
+ // if (buttonPanel.getButton().getSelection() == true) {
+ // }
+ // }
+ /*
+ * Iterator<Type> iter = types.iterator();
+ *
+ * while (iter.hasNext()) { Type t = iter.next(); for (Selection s : selections)
+ * casData.addAnnotation(t, s.getStart(), s.getEnd(), !iter.hasNext()); }
+ */
+ /*
+ * Type t = casData.getTypeByIndex(combo.getSelectionIndex());
+ *
+ * for (Selection s : selections) casData.addAnnotation(t, s.getStart(), s.getEnd());
+ */
+ clearAll();
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.Preferences$IPropertyChangeListener#propertyChange
+ * (org.eclipse.core.runtime.Preferences.PropertyChangeEvent)
+ */
+ public void propertyChange(PropertyChangeEvent event) {
+ if (event.getProperty().equals(CEVPreferenceConstants.P_ANNOTATION_REPR)) {
+ setTextRepr();
+ }
+ }
+
+ // private int updateTypes() {
+ // // int maxTitleLength = 0;
+ // // int size = casData.getTypeNames().length;
+ // // for (int i =0; i < size; i++) {
+ // // String typeName = casData.getTypeByIndex(i).getName();
+ // // if (!(type.getName().startsWith(
+ // // "de.uniwue.tm.textmarker.kernel.type")
+ // // || type.getName().startsWith("de.uniwue.tm.type")
+ // // || type.getName().startsWith("uima.cas") || type.getName()
+ // // .startsWith("uima.tcas"))) {
+ // // types.add(casData.getTypeByIndex(i));
+ // // if (maxTitleLength < typeName.length()) {
+ // // maxTitleLength = typeName.length();
+ // // }
+ // // }
+ // //
+ //
+ // if (this.getCurrentCEVData() == null) {
+ // return 0;
+ // }
+ // // Iterator ueber types holen
+ // Iterator typeIterator = this.getCurrentCEVData().getCAS().getTypeSystem().getTypeIterator();
+ // // maximale Titellaenge
+ // int maxTitleLength = 0;
+ // // Liste leeren und mit aktuellen, relevanten types neu befuellen, sowie
+ // // laengsten titel finden:
+ // types.clear();
+ //
+ // while (typeIterator.hasNext()) {
+ // Type type = (Type) typeIterator.next();
+ // if (!(type.getName().startsWith("de.uniwue.tm.textmarker.kernel.type")
+ // || type.getName().startsWith("de.uniwue.tm.type")
+ // || type.getName().startsWith("uima.cas") || type.getName().startsWith("uima.tcas"))) {
+ // types.add(type);
+ // // maxTitelSuche:
+ // int typeShortName = type.getShortName().length();
+ // if (typeShortName > maxTitleLength) {
+ // maxTitleLength = typeShortName;
+ // }
+ // }
+ //
+ // }
+ // // Liste sortieren
+ // Collections.sort(types, new TypeComparator());
+ // return maxTitleLength;
+ // }
+
+ // private void updateControl(int maxTitleLength) {
+ // // toggleButton Liste leeren, vorsicht - richtig aushaengen
+ // for (AnnotationTypeCheckButtonPanel it : toggleButtons) {
+ // it.dispose();
+ // }
+ // toggleButtons.clear();
+ // // button-liste neu erstellen
+ // for (Iterator<Type> iterator = types.iterator(); iterator.hasNext();) {
+ // toggleButtons.add(new AnnotationTypeCheckButtonPanel(compi, iterator.next(), maxTitleLength));
+ // }
+ // compi.layout(true);
+ // sc.setContent(compi);
+ // sc.setMinSize(compi.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ //
+ // }
+
+ protected CEVData getCurrentCEVData() {
+ return casDocument.getCASData(current);
+ }
+
+ public void viewChanged(int newIndex) {
+ current = newIndex;
+ casDataChanged();
+ }
+
+ public void annotationsAdded(List<AnnotationFS> annots) {
+
+ }
+
+ public void annotationsRemoved(List<AnnotationFS> annots) {
+
+ }
+
+ public void annotationStateChanged(Type type) {
+
+ }
+
+ public void annotationStateChanged(AnnotationFS annot) {
+
+ }
+
+ public void colorChanged(Type type) {
+
+ }
+
+ public void casChanged(CEVDocument casDocument) {
+ this.casDocument = casDocument;
+ }
+
+ @Override
+ public void handleEvent(Event event) {
+ if (event.widget == typeFilterText && event.type == SWT.Modify) {
+ displayFilteredTypes(typeFilterText.getText());
+ } else if (event.widget == typeTable) {
+ Widget item = event.item;
+ if (item instanceof TableItem) {
+ TableItem ti = (TableItem) item;
+ if (ti.getChecked()) {
+ selected.add(ti.getText());
+ } else {
+ selected.remove(ti.getText());
+ }
+ }
+ }
+
+ }
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorPage.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,107 @@
+package org.apache.uima.tm.cev.views.editor;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.internal.views.ViewsPlugin;
+import org.eclipse.ui.part.IPage;
+import org.eclipse.ui.part.MessagePage;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.ui.part.PageBookView;
+
+
+/**
+ * CEVAnnotationEditorView des CASViewer
+ *
+ * @author Marco Nehmeier
+ */
+public class CEVAnnotationEditorView extends PageBookView {
+
+ /**
+ * Text wenn kein View vom Editor zur Verfuegung gestellt wird.
+ */
+ private static final String VIEW_IS_NOT_AVAILABLE = "View is not available.";
+
+ /**
+ * Defaultkonstruktor.
+ */
+ public CEVAnnotationEditorView() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.PageBookView#createDefaultPage(org.eclipse.ui.part .PageBook)
+ */
+ @Override
+ protected IPage createDefaultPage(PageBook book) {
+ // MessagePage wenn der View nicht zur Verfuegung steht
+ MessagePage page = new MessagePage();
+ initPage(page);
+ page.createControl(book);
+ page.setMessage(VIEW_IS_NOT_AVAILABLE);
+ return page;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.PageBookView#doCreatePage(org.eclipse.ui.IWorkbenchPart )
+ */
+ @Override
+ protected PageRec doCreatePage(IWorkbenchPart part) {
+ // vom Plugin holen
+ Object obj = ViewsPlugin.getAdapter(part, ICEVAnnotationEditorPage.class, false);
+
+ // Wenn ICASViewPage
+ if (obj instanceof ICEVViewPage) {
+ ICEVViewPage page = (ICEVViewPage) obj;
+
+ // Control erzeugen
+ page.createControl(getPageBook());
+ return new PageRec(part, page);
+ }
+
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.PageBookView#doDestroyPage(org.eclipse.ui.IWorkbenchPart ,
+ * org.eclipse.ui.part.PageBookView.PageRec)
+ */
+ @Override
+ protected void doDestroyPage(IWorkbenchPart part, PageRec pageRecord) {
+ pageRecord.page.dispose();
+ pageRecord.dispose();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.PageBookView#getBootstrapPart()
+ */
+ @Override
+ protected IWorkbenchPart getBootstrapPart() {
+ IWorkbenchPage page = getSite().getPage();
+ if (page != null) {
+ return page.getActiveEditor();
+ }
+
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.PageBookView#isImportant(org.eclipse.ui.IWorkbenchPart )
+ */
+ @Override
+ protected boolean isImportant(IWorkbenchPart part) {
+ return (part instanceof IEditorPart);
+ }
+
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/CEVAnnotationEditorView.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,12 @@
+package org.apache.uima.tm.cev.views.editor;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+/**
+ * Interface fuer eine EditorPage im CASViewer
+ *
+ * @author Marco Nehmeier
+ */
+public interface ICEVAnnotationEditorPage extends ICEVViewPage {
+
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/editor/ICEVAnnotationEditorPage.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,165 @@
+package org.apache.uima.tm.cev.views.fsBrowser;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.FSIterator;
+import org.apache.uima.cas.FeatureStructure;
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.TypeSystem;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.tm.cev.data.CEVData;
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.data.tree.CEVTypeOrderedRootTreeNode;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.apache.uima.tm.cev.views.CEVAnnotationTreeViewContentProvider;
+import org.apache.uima.tm.cev.views.CEVAnnotationTreeViewLableProvider;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.part.Page;
+
+
+public class CEVFSBrowserPage extends Page implements ICEVFSBrowserPage, ICEVView {
+
+ private Image icon;
+
+ private CEVViewer casView;
+
+ private CEVDocument casDocument;
+
+ private CEVData casData;
+
+ private CheckboxTreeViewer treeView;
+
+ private CEVAnnotationTreeViewLableProvider lableProvider;
+
+ public CEVFSBrowserPage(CEVViewer casView, CEVDocument casDocument, int index) {
+ super();
+ this.casView = casView;
+ this.casDocument = casDocument;
+
+ this.casData = casDocument.getCASData(index);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.uniwue.casviewer.views.CASAnnotationTreeViewPage#createControl(org
+ * .eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void createControl(Composite parent) {
+ treeView = new CheckboxTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+
+ treeView.setContentProvider(new CEVAnnotationTreeViewContentProvider());
+ lableProvider = new CEVAnnotationTreeViewLableProvider(casData);
+ treeView.setLabelProvider(lableProvider);
+
+ treeView.addCheckStateListener(casData);
+ treeView.setInput(getFSTree());
+ }
+
+ private Object getFSTree() {
+ CEVTypeOrderedRootTreeNode root = new CEVTypeOrderedRootTreeNode();
+ Collection<FeatureStructure> fss = getFSs();
+ for (FeatureStructure each : fss) {
+ root.insertFS(each);
+ }
+ root.sort();
+ return root;
+ }
+
+ private Collection<FeatureStructure> getFSs() {
+ Collection<FeatureStructure> result = new ArrayList<FeatureStructure>();
+ CAS cas = casData.getCAS();
+ TypeSystem typeSystem = cas.getTypeSystem();
+ Type annotationBaseType = typeSystem.getType("uima.cas.AnnotationBase");
+ List<?> types = typeSystem.getProperlySubsumedTypes(typeSystem.getTopType());
+ for (Object object : types) {
+ if (object instanceof Type) {
+ Type type = (Type) object;
+ if (!typeSystem.subsumes(cas.getAnnotationType(), type)
+ && !typeSystem.subsumes(annotationBaseType, type)) {
+ FSIterator iterator = cas.getIndexRepository().getAllIndexedFS(type);
+ while (iterator.isValid()) {
+ FeatureStructure fs = iterator.get();
+ result.add(fs);
+ iterator.moveToNext();
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.uima.tm.cev.views.CEVAnnotationTreeViewPage#casDataChanged(int)
+ */
+ public void viewChanged(int index) {
+ casData = casDocument.getCASData(index);
+ reloadTree();
+ }
+
+ /**
+ * Baum neu laden
+ */
+ private void reloadTree() {
+ treeView.setInput(getFSTree());
+ treeView.refresh();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.uniwue.casviewer.views.CASAnnotationTreeViewPage#dispose()
+ */
+ @Override
+ public void dispose() {
+ // Icon freigeben
+ if (icon != null)
+ icon.dispose();
+
+ super.dispose();
+ }
+
+ public void newSelection(int offset) {
+
+ }
+
+ @Override
+ public Control getControl() {
+ return treeView.getControl();
+ }
+
+ @Override
+ public void setFocus() {
+ getControl().setFocus();
+ }
+
+ public void casChanged(CEVDocument casDocument) {
+ this.casDocument = casDocument;
+ }
+
+ public void annotationsAdded(List<AnnotationFS> annots) {
+ }
+
+ public void annotationsRemoved(List<AnnotationFS> annots) {
+ }
+
+ public void annotationStateChanged(Type type) {
+ }
+
+ public void annotationStateChanged(AnnotationFS annot) {
+ }
+
+ public void colorChanged(Type type) {
+ }
+}
\ No newline at end of file
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserPage.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,23 @@
+package org.apache.uima.tm.cev.views.fsBrowser;
+
+import org.apache.uima.tm.cev.views.CEVPageBookView;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+public class CEVFSBrowserView extends CEVPageBookView {
+
+ public CEVFSBrowserView() {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.part.PageBookView#doCreatePage(org.eclipse.ui.IWorkbenchPart)
+ */
+ @Override
+ protected PageRec doCreatePage(IWorkbenchPart part) {
+ return doCreatePage(part, ICEVFSBrowserPage.class);
+ }
+
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserView.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.cev.views.fsBrowser;
+
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVView;
+import org.apache.uima.tm.cev.extension.ICEVViewFactory;
+
+public class CEVFSBrowserViewFactory implements ICEVViewFactory {
+
+ public CEVFSBrowserViewFactory() {
+ }
+
+ public ICEVView createView(CEVViewer viewer, CEVDocument cevDocument, int index) {
+ return new CEVFSBrowserPage(viewer, cevDocument, index);
+ }
+
+ public Class<?> getAdapterInterface() {
+ return ICEVFSBrowserPage.class;
+ }
+
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/CEVFSBrowserViewFactory.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,6 @@
+package org.apache.uima.tm.cev.views.fsBrowser;
+
+import org.apache.uima.tm.cev.views.ICEVViewPage;
+
+public interface ICEVFSBrowserPage extends ICEVViewPage {
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/fsBrowser/ICEVFSBrowserPage.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java
URL: http://svn.apache.org/viewvc/uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java?rev=1152774&view=auto
==============================================================================
--- uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java (added)
+++ uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java Mon Aug 1 13:53:56 2011
@@ -0,0 +1,21 @@
+package org.apache.uima.tm.cev.views.palette;
+
+import org.apache.uima.tm.cev.data.CEVDocument;
+import org.apache.uima.tm.cev.editor.CEVViewer;
+import org.apache.uima.tm.cev.extension.ICEVEditor;
+import org.apache.uima.tm.cev.extension.ICEVEditorFactory;
+
+public class CEVAnnotationMarkerPaletteFactory implements ICEVEditorFactory {
+
+ public CEVAnnotationMarkerPaletteFactory() {
+ }
+
+ public ICEVEditor createEditor(CEVViewer viewer, CEVDocument cevDocument, int index) {
+ return new CEVAnnotationMarkerPalettePage(viewer, cevDocument, index);
+ }
+
+ public Class<?> getAdapterInterface() {
+ return ICEVAnnotationMarkerPalettePage.class;
+ }
+
+}
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: uima/sandbox/trunk/TextMarker/org.apache.uima.tm.cev/src/main/java/org/apache/uima/tm/cev/views/palette/CEVAnnotationMarkerPaletteFactory.java
------------------------------------------------------------------------------
svn:mime-type = text/plain