Author: ruschein
Date: 2010-06-28 15:36:18 -0700 (Mon, 28 Jun 2010)
New Revision: 20701

Modified:
   coreplugins/trunk/browser/src/browser/ui/FormulaBuilderDialog.java
Log:
Now we warp the function usage messages.

Modified: coreplugins/trunk/browser/src/browser/ui/FormulaBuilderDialog.java
===================================================================
--- coreplugins/trunk/browser/src/browser/ui/FormulaBuilderDialog.java  
2010-06-28 22:31:39 UTC (rev 20700)
+++ coreplugins/trunk/browser/src/browser/ui/FormulaBuilderDialog.java  
2010-06-28 22:36:18 UTC (rev 20701)
@@ -28,22 +28,22 @@
 package browser.ui;
 
 
+import browser.DataObjectType;
+import browser.DataTableModel;
+
+import cytoscape.data.CyAttributes;
+import cytoscape.data.attr.MultiHashMapDefinition;
+
+import giny.model.GraphObject;
+
 import java.awt.Container;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
+import java.awt.FontMetrics;
 import java.awt.Frame;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Stack;
-
 import javax.swing.BorderFactory;
 import javax.swing.JButton;
 import javax.swing.JComboBox;
@@ -54,12 +54,18 @@
 import javax.swing.JPanel;
 import javax.swing.JTable;
 import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
 
-import browser.DataObjectType;
-import browser.DataTableModel;
+import java.text.BreakIterator;
 
-import cytoscape.data.CyAttributes;
-import cytoscape.data.attr.MultiHashMapDefinition;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Stack;
 
 import org.cytoscape.equations.BooleanList;
 import org.cytoscape.equations.DoubleList;
@@ -72,8 +78,6 @@
 import org.cytoscape.equations.Parser;
 import org.cytoscape.equations.StringList;
 
-import giny.model.GraphObject;
-
 import org.jdesktop.layout.GroupLayout;
 
 
@@ -236,7 +240,7 @@
                usageLabel = new JLabel();
                contentPane.add(usageLabel);
                if (function != null)
-                       usageLabel.setText(function.getUsageDescription());
+                       wrapLabelText(usageLabel, 
function.getUsageDescription());
        }
 
        private void initFormulaTextField(final Container contentPane) {
@@ -570,7 +574,7 @@
                function = stringToFunctionMap.get(funcName);
                final boolean zeroArgumentFunction = 
getPossibleNextArgumentTypes() == null;
                formulaTextField.setText("=" + function.getName() + 
(zeroArgumentFunction ? "()" : "("));
-               usageLabel.setText(function.getUsageDescription());
+               wrapLabelText(usageLabel, function.getUsageDescription());
                updateAttribNamesComboBox();
                addButton.setEnabled(zeroArgumentFunction ? false : true);
                okButton.setEnabled(zeroArgumentFunction);
@@ -643,4 +647,33 @@
                                /* We intentionally ignore everything else! */;
                }
        }
+
+       private void wrapLabelText(final JLabel label, final String text) {
+               final FontMetrics fm = label.getFontMetrics(label.getFont());
+               final Container container = label.getParent();
+               final int containerWidth = container.getWidth();
+
+               final BreakIterator boundary = BreakIterator.getWordInstance();
+               boundary.setText(text);
+
+               final StringBuilder trial = new StringBuilder();
+               final StringBuilder real = new StringBuilder("<html>");
+
+               int start = boundary.first();
+               for (int end = boundary.next(); end != BreakIterator.DONE; 
start = end, end = boundary.next()) {
+                       final String word = text.substring(start, end);
+                       trial.append(word);
+                       int trialWidth = SwingUtilities.computeStringWidth(fm, 
trial.toString());
+                       if (trialWidth > containerWidth) {
+                               trial.setLength(0);
+                               trial.append(word);
+                               real.append("<br>");
+                       }
+                       real.append(word);
+               }
+
+               real.append("</html>");
+
+               label.setText(real.toString());
+       }
 }

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to