Author: ruschein
Date: 2010-09-28 13:51:06 -0700 (Tue, 28 Sep 2010)
New Revision: 22091

Modified:
   
cytoscape/trunk/coreplugins/browser/src/main/java/browser/ui/FormulaBuilderDialog.java
Log:
Fixed Mantis bug 2353.

Modified: 
cytoscape/trunk/coreplugins/browser/src/main/java/browser/ui/FormulaBuilderDialog.java
===================================================================
--- 
cytoscape/trunk/coreplugins/browser/src/main/java/browser/ui/FormulaBuilderDialog.java
      2010-09-28 19:38:33 UTC (rev 22090)
+++ 
cytoscape/trunk/coreplugins/browser/src/main/java/browser/ui/FormulaBuilderDialog.java
      2010-09-28 20:51:06 UTC (rev 22091)
@@ -274,11 +274,12 @@
                addButton = new JButton("Add");
                addButton.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
-                                       final StringBuilder formula = new 
StringBuilder(formulaTextField.getText());
-                                       undoStack.push(formula.length());
-                                       undoButton.setEnabled(true);
-
-                                       updateButtonsAndArgumentDropdown(/* 
addNextArg = */ true);
+                                       final int oldLength  = 
formulaTextField.getText().length();
+                                       if (addNewArg()) {
+                                               undoStack.push(oldLength);
+                                               undoButton.setEnabled(true);
+                                               
updateButtonsAndArgumentDropdown();
+                                       }
                                }
                        });
                argumentPanel.add(addButton);
@@ -288,19 +289,13 @@
                undoButton.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
                                        final String formula = 
formulaTextField.getText();
-System.err.println("Before pop: undoStack.size()="+undoStack.size());
                                        final int previousLength = 
undoStack.pop();
-System.err.println("previousLength="+previousLength);
                                        
formulaTextField.setText(formula.substring(0, previousLength));
                                        addButton.setEnabled(true);
-System.err.println("Before remove: leadingArgs contains " + leadingArgs.size() 
+ " entries.");
-System.err.println("1: 
formulaTextField.getText()="+formulaTextField.getText());
                                        leadingArgs.remove(leadingArgs.size() - 
1);
                                        if (undoStack.empty())
                                                undoButton.setEnabled(false);
-System.err.println("2: 
formulaTextField.getText()="+formulaTextField.getText());
-                                       updateButtonsAndArgumentDropdown(/* 
addNextArg = */ false);
-System.err.println("3: 
formulaTextField.getText()="+formulaTextField.getText());
+                                       updateButtonsAndArgumentDropdown();
                                }
                        });
                argumentPanel.add(undoButton);
@@ -441,32 +436,7 @@
        /**
         *  Updates the appearance and status of various GUI components based 
on what is currently in the formula field.
         */
-       private void updateButtonsAndArgumentDropdown(final boolean addNextArg) 
{
-               final StringBuilder formula = new 
StringBuilder(formulaTextField.getText());
-
-               if (!leadingArgs.isEmpty()) // Not the first argument => we 
need a comma!
-                       formula.append(',');
-               if (addNextArg) {
-                       final String constExpr = 
constantValuesTextField.getText();
-                       if (constExpr != null && constExpr.length() > 0) {
-                               final List<Class> possibleArgTypes = 
getPossibleNextArgumentTypes();
-                               final Class exprType;
-                               if ((exprType = 
expressionIsValid(possibleArgTypes, constExpr)) == null)
-                                       return;
-
-                               formula.append(constExpr);
-                               constantValuesTextField.setText("");
-                               leadingArgs.add(exprType);
-                       } else {
-                               final String attribName = 
(String)attribNamesComboBox.getSelectedItem();
-                               if (attribName != null) {
-                                       
formula.append(EquationUtil.attribNameAsReference(attribName));
-                                       
leadingArgs.add(attribNamesAndTypes.get(attribName));
-                               }
-                       }
-                       formulaTextField.setText(formula.toString());
-               }
-
+       private void updateButtonsAndArgumentDropdown() {
                final List<Class> possibleNextArgTypes = 
getPossibleNextArgumentTypes();
                if (possibleNextArgTypes == null) {
                        final String currentFormula = 
formulaTextField.getText();
@@ -484,6 +454,45 @@
                updateAttribNamesComboBox();
        }
 
+       /**
+        *  Attempts to add a new argument.
+        *  @return if we succeeded in adding the new argument
+        */
+       private boolean addNewArg() {
+               boolean successFullyAddedANewArg = false;
+
+               final StringBuilder formula = new 
StringBuilder(formulaTextField.getText());
+
+               if (!leadingArgs.isEmpty()) // Not the first argument => we 
need a comma!
+                       formula.append(',');
+
+               final String constExpr = constantValuesTextField.getText();
+               if (constExpr != null && constExpr.length() > 0) {
+                       final List<Class> possibleArgTypes = 
getPossibleNextArgumentTypes();
+                       final Class exprType;
+                       if ((exprType = expressionIsValid(possibleArgTypes, 
constExpr)) == null)
+                               return false;
+
+                       formula.append(constExpr);
+                       constantValuesTextField.setText("");
+                       leadingArgs.add(exprType);
+                       successFullyAddedANewArg = true;
+               } else {
+                       final String attribName = 
(String)attribNamesComboBox.getSelectedItem();
+                       if (attribName != null) {
+                               
formula.append(EquationUtil.attribNameAsReference(attribName));
+                               
leadingArgs.add(attribNamesAndTypes.get(attribName));
+                               successFullyAddedANewArg = true;
+                       }
+               }
+
+               if (successFullyAddedANewArg) {
+                       formulaTextField.setText(formula.toString());
+                       return true;
+               } else
+                       return false;
+       }
+
        private boolean updateCells(final StringBuilder errorMessage) {
                String formula = formulaTextField.getText();
                if (formula.charAt(formula.length() - 1) != ')')

-- 
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