You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by tw...@apache.org on 2007/01/12 14:44:28 UTC

svn commit: r495571 - in /incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view: FSNode.java MainFrame.java StringFsPopupEventAdapter.java

Author: twgoetz
Date: Fri Jan 12 05:44:27 2007
New Revision: 495571

URL: http://svn.apache.org/viewvc?view=rev&rev=495571
Log:
Jira UIMA-178: only display the first 100 characters of string values in 
the CVD FS view.  Now added pop-up for shortened strings so they can be
displayed fully in a separate window.  Discover something new in Swing
every day!

https://issues.apache.org/jira/browse/UIMA-178

Added:
    incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/StringFsPopupEventAdapter.java
Modified:
    incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/FSNode.java
    incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/MainFrame.java

Modified: incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/FSNode.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/FSNode.java?view=diff&rev=495571&r1=495570&r2=495571
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/FSNode.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/FSNode.java Fri Jan 12 05:44:27 2007
@@ -67,6 +67,8 @@
   private final int arrayElem;
 
   private final boolean isArrayElem;
+  
+  private boolean isShortenedString = false;
 
   FSNode(FSTreeModel fSTreeModel, int nodeClass, long addr, Feature feat) {
     super();
@@ -214,6 +216,17 @@
   private String getFeatureString() {
     return "<i>" + this.feat.getShortName() + "</i>";
   }
+  
+  boolean isShortenedString() {
+    return this.isShortenedString;
+  }
+  
+  String getFullString() {
+    if (getNodeClass() != STRING_FS) {
+      return null;
+    }
+    return this.fSTreeModel.getCas().getStringForCode((int) this.addr);
+  }
 
   private String getValueString() {
     CASImpl cas = this.fSTreeModel.getCas();
@@ -240,8 +253,9 @@
           return getNullString();
         }
         String s = cas.getStringForCode((int) this.addr);
-        s = shortenString(s);
-        return "\"" + escapeLt(s) + "\"";
+        String s1 = shortenString(s);
+        this.isShortenedString = (s != s1);
+        return "\"" + escapeLt(s1) + "\"";
       }
       case ARRAY_FS: {
         if (cas.getHeapValue((int) this.addr) == LowLevelCAS.NULL_FS_REF) {

Modified: incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/MainFrame.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/MainFrame.java?view=diff&rev=495571&r1=495570&r2=495571
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/MainFrame.java (original)
+++ incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/MainFrame.java Fri Jan 12 05:44:27 2007
@@ -2724,6 +2724,7 @@
   private void initFSTree() {
     FSTreeModel treeModel = new FSTreeModel();
     this.fsTree = new JTree(treeModel);
+    this.fsTree.addMouseListener(new StringFsPopupEventAdapter());
     this.fsTree.setBorder(BorderFactory.createEmptyBorder(2, 4, 2, 2));
     this.fsTree.setLargeModel(true);
     // Only one node can be selected at any one time.

Added: incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/StringFsPopupEventAdapter.java
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/StringFsPopupEventAdapter.java?view=auto&rev=495571
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/StringFsPopupEventAdapter.java (added)
+++ incubator/uima/uimaj/trunk/uimaj-tools/src/main/java/org/apache/uima/tools/annot_view/StringFsPopupEventAdapter.java Fri Jan 12 05:44:27 2007
@@ -0,0 +1,72 @@
+package org.apache.uima.tools.annot_view;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+import javax.swing.JFrame;
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTree;
+import javax.swing.tree.TreePath;
+
+public class StringFsPopupEventAdapter extends MouseAdapter {
+
+  private static class ShowStringHandler implements ActionListener {
+
+    private String string;
+
+    private ShowStringHandler(String s) {
+      super();
+      this.string = s;
+    }
+
+    public void actionPerformed(ActionEvent e) {
+      JFrame frame = new JFrame("Full string value");
+      JTextArea textArea = new JTextArea(this.string);
+      textArea.setEditable(false);
+      JScrollPane scrollPane = new JScrollPane(textArea);
+      frame.setContentPane(scrollPane);
+      frame.pack();
+      frame.setVisible(true);
+    }
+
+  }
+
+  public StringFsPopupEventAdapter() {
+    super();
+  }
+
+  public void mousePressed(MouseEvent e) {
+    showPopupMaybe(e);
+  }
+
+  public void mouseReleased(MouseEvent e) {
+    showPopupMaybe(e);
+  }
+
+  private void showPopupMaybe(MouseEvent e) {
+    if (e.isPopupTrigger()) {
+      Object o = e.getSource();
+      if (o instanceof javax.swing.JTree) {
+	JTree tree = (JTree) o;
+	TreePath path = tree.getPathForLocation(e.getX(), e.getY());
+	Object leafComponent = path.getLastPathComponent();
+	if (leafComponent instanceof FSNode) {
+	  FSNode node = (FSNode) leafComponent;
+	  if (node.getNodeClass() == FSNode.STRING_FS && node.isShortenedString()) {
+	    JPopupMenu menu = new JPopupMenu();
+	    JMenuItem showStringItem = new JMenuItem("Show full string");
+	    showStringItem.addActionListener(new ShowStringHandler(node.getFullString()));
+	    menu.add(showStringItem);
+	    menu.show(e.getComponent(), e.getX(), e.getY());
+	  }
+	}
+      }
+    }
+  }
+
+}