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.