Author: ruschein
Date: 2010-09-27 16:11:13 -0700 (Mon, 27 Sep 2010)
New Revision: 22078

Modified:
   
cytoscape/trunk/coreplugins/browser/src/main/java/browser/ui/FormulaBuilderDialog.java
Log:
Fixed an undo bug in the formula builder.

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-27 22:54:47 UTC (rev 22077)
+++ 
cytoscape/trunk/coreplugins/browser/src/main/java/browser/ui/FormulaBuilderDialog.java
      2010-09-27 23:11:13 UTC (rev 22078)
@@ -278,7 +278,7 @@
                                        undoStack.push(formula.length());
                                        undoButton.setEnabled(true);
 
-                                       updateButtonsAndArgumentDropdown();
+                                       updateButtonsAndArgumentDropdown(/* 
addNextArg = */ true);
                                }
                        });
                argumentPanel.add(addButton);
@@ -288,13 +288,19 @@
                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);
-                                       updateButtonsAndArgumentDropdown();
+System.err.println("2: 
formulaTextField.getText()="+formulaTextField.getText());
+                                       updateButtonsAndArgumentDropdown(/* 
addNextArg = */ false);
+System.err.println("3: 
formulaTextField.getText()="+formulaTextField.getText());
                                }
                        });
                argumentPanel.add(undoButton);
@@ -435,30 +441,31 @@
        /**
         *  Updates the appearance and status of various GUI components based 
on what is currently in the formula field.
         */
-       private void updateButtonsAndArgumentDropdown() {
+       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(',');
-               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;
+               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));
+                               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());
                }
-               formulaTextField.setText(formula.toString());
 
                final List<Class> possibleNextArgTypes = 
getPossibleNextArgumentTypes();
                if (possibleNextArgTypes == null) {
@@ -467,10 +474,8 @@
 
                        addButton.setEnabled(false);
                        okButton.setEnabled(true);
-               }
-               else if (possibleNextArgTypes.contains(null)) {
+               } else if (possibleNextArgTypes.contains(null))
                        okButton.setEnabled(true);
-               }
                else {
                        addButton.setEnabled(true);
                        okButton.setEnabled(false);

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