Changeset 156 for trunk/src/org/expeditee/actions/Misc.java
- Timestamp:
- 07/25/08 09:24:45 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/actions/Misc.java
r154 r156 9 9 import java.io.IOException; 10 10 import java.lang.reflect.Method; 11 import java.text.NumberFormat; 11 12 import java.util.ArrayList; 12 13 import java.util.Collection; 13 14 import java.util.List; 15 import java.util.Observable; 16 import java.util.Observer; 14 17 15 18 import javax.imageio.ImageIO; 16 19 20 import org.expeditee.gui.AttributeUtils; 21 import org.expeditee.gui.AttributeValuePair; 17 22 import org.expeditee.gui.DisplayIO; 18 23 import org.expeditee.gui.Frame; … … 28 33 import org.expeditee.stats.StatsLogger; 29 34 import org.expeditee.stats.TreeStats; 35 import org.nfunk.jep.Node; 36 import org.nfunk.jep.Variable; 30 37 31 38 /** … … 88 95 action); 89 96 } 97 } else { 98 MessageBay.errorMessage("Item must be a text item."); 90 99 } 91 100 } … … 106 115 if (deletedFrameName != null) { 107 116 DisplayIO.Back(); 108 //Remove any links on the previous frame to the one being deleted 117 // Remove any links on the previous frame to the one being 118 // deleted 109 119 Frame current = DisplayIO.getCurrentFrame(); 110 120 for (Item i : current.getItems()) … … 116 126 MessageBay.displayMessage(deletedFrame + " renamed " 117 127 + deletedFrameName); 118 // FrameGraphics.Repaint();128 // FrameGraphics.Repaint(); 119 129 return; 120 130 } … … 645 655 return item; 646 656 } 657 658 public static void calculate(Frame frame, Item toCalculate) { 659 if (toCalculate instanceof Text) { 660 Text text = (Text) toCalculate; 661 org.nfunk.jep.JEP myParser = new org.nfunk.jep.JEP(); 662 myParser.addStandardFunctions(); 663 myParser.addStandardConstants(); 664 myParser.setImplicitMul(true); 665 666 Observer observer = new Observer() { 667 private String _attribute = ""; 668 public void update(Observable ob, Object o) { 669 _attribute = ((Variable)o).getName() + ": "; 670 } 671 672 @Override 673 public String toString() { 674 return _attribute; 675 } 676 }; 677 678 // Check for variables 679 for (Text t : frame.getTextItems()) { 680 AttributeValuePair avp = AttributeUtils.getPair(t.getText()); 681 if (avp != null) { 682 myParser.addVariable(avp.getAttribute(), avp 683 .getDoubleValue()); 684 } 685 } 686 687 myParser.getSymbolTable().addObserver(observer); 688 myParser.setAllowAssignment(true); 689 myParser.setAllowUndeclared(true); 690 691 // Do the calculation 692 Node node = myParser.parseExpression(text.getText()); 693 if (node == null) { 694 for (String s : myParser.getErrorInfo().split("\n")) { 695 MessageBay.errorMessage(s); 696 } 697 } else { 698 Double result = myParser.getValue(); 699 NumberFormat nf = NumberFormat.getInstance(); 700 nf.setMinimumFractionDigits(0); 701 nf.setMaximumFractionDigits(15); 702 text.setText(observer.toString() + nf.format(result)); 703 text.setPosition(FrameMouseActions.MouseX, 704 FrameMouseActions.MouseY); 705 FrameMouseActions.resetOffset(); 706 } 707 708 } 709 } 647 710 }
Note:
See TracChangeset
for help on using the changeset viewer.