]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/Range.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.spreadsheet / src / org / simantics / spreadsheet / Range.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
3  * in 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;\r
13 \r
14 \r
15 public class Range {\r
16         public static final int MAXROWSPEC = Integer.MAX_VALUE;//1048576;//\r
17         public static final int MAXCOLUMNSPEC = Integer.MAX_VALUE;//16384;//\r
18         \r
19     public int startRow;\r
20     public int endRow;\r
21     public int startColumn;\r
22     public int endColumn;\r
23     \r
24     public Range(int startRow, int endRow, int startColumn, int endColumn) {\r
25         this.startRow = startRow;\r
26         this.endRow = endRow;\r
27         this.startColumn = startColumn;\r
28         this.endColumn = endColumn;\r
29         \r
30         if(startRow == -1) this.startRow = MAXROWSPEC;\r
31         if(endRow == -1) this.endRow = MAXROWSPEC;\r
32         if(startColumn == -1) this.startColumn = MAXCOLUMNSPEC;\r
33         if(endColumn == -1) this.endColumn = MAXCOLUMNSPEC;\r
34     }\r
35     \r
36     public Range(Range copy) {\r
37         this.startRow = copy.startRow;\r
38         this.endRow = copy.endRow;\r
39         this.startColumn = copy.startColumn;\r
40         this.endColumn = copy.endColumn;\r
41     }\r
42 \r
43     public static Range combine(Range from, Range to) {\r
44         return new Range(from.startRow, to.endRow, from.startColumn, to.endColumn);\r
45     }\r
46     \r
47     public boolean isFull() {\r
48         return endRow == MAXROWSPEC && endColumn == MAXCOLUMNSPEC;\r
49     }\r
50 \r
51     public boolean isFullRows() {\r
52         return endRow == MAXROWSPEC;\r
53     }\r
54 \r
55     public boolean isFullColumns() {\r
56         return endColumn == MAXCOLUMNSPEC;\r
57     }\r
58 \r
59     public int size() {\r
60         return (endRow-startRow + 1) * (endColumn - startColumn + 1);\r
61     }\r
62     \r
63     public int width() {\r
64         return (endColumn - startColumn + 1);\r
65     }\r
66     \r
67     public int height() {\r
68         return (endRow-startRow + 1);\r
69     }\r
70     \r
71     public boolean contains(Range r) {\r
72         if(endRow >= 0) {\r
73                 if(r.endRow > endRow) return false;\r
74                 if(r.startRow < startRow) return false;\r
75         }\r
76         if(endColumn >= 0) {\r
77                 if(r.startColumn < startColumn) return false;\r
78                 if(r.endColumn > endColumn) return false;\r
79         }\r
80         return true;\r
81     }\r
82     \r
83     @Override\r
84     public String toString() {\r
85         return "Range[(" + startRow + "," + startColumn + ")-(" + endRow + "," + endColumn + ")]";\r
86     }\r
87     \r
88 }\r