package gve.calc.formula; import java.awt.*; public class Identifier extends Part { private String string; // Create an empty Identifier public Identifier() { string = ""; } public Identifier(char value) { string = ""+value; } // Create an Identifier with predefined value public Identifier(String value) { string = value; } public Object clone() { return new Identifier(string); } public void setString(String str) { string = str; MVC.changed(this); } public String getString() { return string; } public boolean isNumeric() { try { new Double(string); } catch (NumberFormatException exc) { return false; } return true; } public Part evaluate(Evaluator ev) { Object eval = ev.getValue(string); if (eval instanceof Formula) return (Part)((Formula)eval).getRootPart().clone(); if (eval instanceof Part) return (Part)((Part)eval).clone(); if (eval == null) return (Part)clone(); System.out.println("Warning: cannot evaluate "+eval); return (Part)eval; // oops } public boolean isEmpty() { if (string == null) return true; return string.equals(""); } public String toString() { return getClass().getName()+"["+string+"]"; } public void write(java.io.Writer w) throws java.io.IOException { super.write(w); w.write(string); w.write('\n'); } public static Part read(java.io.BufferedReader r) throws java.io.IOException, ClassNotFoundException,NoSuchMethodException, java.lang.reflect.InvocationTargetException,IllegalAccessException { String line = r.readLine(); return new Identifier(line); } public boolean same(Object o) { o = Brackets.unbracket(o); return o instanceof Identifier && ((Identifier)o).string.equals(string); } public Component createView(FormulaView f) { return new IdentifierView(this); } public void saveLatex(java.io.BufferedWriter w) throws java.io.IOException { if (string.equals("")) return; if (string.length() == 1) w.write(string); else { w.write("\\mbox{"); w.write(string); w.write("}"); } } }