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());
+ }
+ }
+ }
+ }
+ }
+
+}