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.