diff --git a/app/src/main/java/xl/model/BombCell.java b/app/src/main/java/xl/model/BombCell.java index cacf355..4f1782d 100644 --- a/app/src/main/java/xl/model/BombCell.java +++ b/app/src/main/java/xl/model/BombCell.java @@ -15,11 +15,8 @@ public class BombCell implements Cell { throw XLException.ERROR_RECURSIVE; } - public String displayValue(Environment e) { + public String displayValue() { throw XLException.ERROR_RECURSIVE; } - public String formula() { - throw XLException.ERROR_RECURSIVE; - } } diff --git a/app/src/main/java/xl/model/Cell.java b/app/src/main/java/xl/model/Cell.java index f75ff1f..a65781e 100644 --- a/app/src/main/java/xl/model/Cell.java +++ b/app/src/main/java/xl/model/Cell.java @@ -7,6 +7,5 @@ import xl.expr.Environment; */ public interface Cell { public double cellValue(Environment e); - public String displayValue(Environment e); - public String formula(); + public String displayValue(); } diff --git a/app/src/main/java/xl/model/CommentCell.java b/app/src/main/java/xl/model/CommentCell.java index c9b03ec..b9a9550 100644 --- a/app/src/main/java/xl/model/CommentCell.java +++ b/app/src/main/java/xl/model/CommentCell.java @@ -15,11 +15,7 @@ public class CommentCell implements Cell { return 0; } - public String displayValue(Environment e) { - return "# " + commentText; - } - - public String formula() { + public String displayValue() { return commentText; } } diff --git a/app/src/main/java/xl/model/ExpressionCell.java b/app/src/main/java/xl/model/ExpressionCell.java index 4575352..b720159 100644 --- a/app/src/main/java/xl/model/ExpressionCell.java +++ b/app/src/main/java/xl/model/ExpressionCell.java @@ -17,13 +17,10 @@ public class ExpressionCell implements Cell { return expr.value(env); } - public String displayValue(Environment e) { - return Double.toString(cellValue(e)); - } - - public String formula() { + public String displayValue() { return expr.toString(); } + } diff --git a/app/src/main/java/xl/model/XLModel.java b/app/src/main/java/xl/model/XLModel.java index 50a5e7b..072b43e 100644 --- a/app/src/main/java/xl/model/XLModel.java +++ b/app/src/main/java/xl/model/XLModel.java @@ -58,7 +58,7 @@ public class XLModel extends Observable implements Environment { status = "Error creating cell"; return; } - + // Tell observers that the model has changed setChanged(); notifyObservers(); @@ -99,7 +99,7 @@ public class XLModel extends Observable implements Environment { public void save(String path) { try (XLPrintStream xlPrintStream = new XLPrintStream(path)) { - xlPrintStream.save(this, map.entrySet()); + xlPrintStream.save(map.entrySet()); } catch (IOException e) { status = "Error saving file"; } @@ -107,16 +107,25 @@ public class XLModel extends Observable implements Environment { public String getAddressValue(String address) { if (map.containsKey(address)) { - return map.get(address).displayValue(this); + Cell cell = map.get(address); + if (cell instanceof CommentCell) { + return cell.displayValue(); + } + return Double.toString(cell.cellValue(this)); } return ""; } public String getAddressContent(String address) { if (map.containsKey(address)) { - return map.get(address).formula(); + Cell cell = map.get(address); + if (cell instanceof CommentCell) { + return "#" + map.get(address).displayValue(); + } + return map.get(address).displayValue(); + } else { + return ""; } - return ""; } public boolean containsKey(String address) { diff --git a/app/src/main/java/xl/model/XLPrintStream.java b/app/src/main/java/xl/model/XLPrintStream.java index 869f4d2..3bbe6ca 100644 --- a/app/src/main/java/xl/model/XLPrintStream.java +++ b/app/src/main/java/xl/model/XLPrintStream.java @@ -3,9 +3,6 @@ package xl.model; import java.io.FileNotFoundException; import java.io.PrintStream; import java.util.Map.Entry; - -import xl.expr.Environment; - import java.util.Set; /** @@ -17,11 +14,16 @@ public class XLPrintStream extends PrintStream { super(fileName); } - public void save(Environment e, Set> set) { + public void save(Set> set) { for (Entry entry : set) { print(entry.getKey()); print('='); - println(entry.getValue().displayValue(e)); + Cell cell = entry.getValue(); + if (cell instanceof CommentCell) { + println("#" + cell.displayValue()); + } else { + println(cell.displayValue()); + } } flush(); close();