]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/parser/ast/AstRange.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / parser / ast / AstRange.java
1 /*******************************************************************************\r
2  *  Copyright (c) 2010 Association for Decentralized Information Management in\r
3  *  Industry THTH ry.\r
4  *  All rights reserved. This program and the accompanying materials\r
5  *  are made available under the terms of the Eclipse Public License v1.0\r
6  *  which accompanies this distribution, and is available at\r
7  *  http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  *  Contributors:\r
10  *      VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.spreadsheet.graph.parser.ast;\r
13 \r
14 import org.simantics.spreadsheet.graph.PrintVisitor;\r
15 \r
16 public class AstRange implements AstValue {\r
17         \r
18         private static final long serialVersionUID = -2612788686679843356L;\r
19 \r
20         public static final AstRange REF = new AstRange("#REF!");
21 \r
22         public String sheetName;\r
23         public String first;
24         public String second;\r
25
26         public AstRange(String sheetName, String first, String second) {\r
27                 this.sheetName = sheetName;\r
28                 this.first = first;\r
29                 this.second = second;\r
30         }\r
31 \r
32         public AstRange(String token) {\r
33                 String[] parts = token.split(":");\r
34                 if(parts.length == 2) {\r
35                         this.first = parts[0];\r
36                         this.second = parts[1];\r
37                 } else {\r
38                         this.first = token;\r
39                 }
40         }
41         
42         @Override
43         public <T> T accept(AstValueVisitor<T> v) {
44                 return v.visit(this);
45         }
46
47         public boolean isCell() {\r
48                 return second == null;\r
49         }\r
50         \r
51         public boolean isRef() {\r
52                 return second==null && "#REF!".equals(first);\r
53         }\r
54         \r
55         public AstRange inSheet(String sheetName) {\r
56                 AstRange range = new AstRange(sheetName, first, second);\r
57                 return range;\r
58         }\r
59         \r
60         @Override\r
61         public String toString() {\r
62                 return accept(new PrintVisitor());\r
63         }\r
64         
65 }