JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / src / javajs / swing / Grid.java
1 package javajs.swing;\r
2 \r
3 import javajs.util.AU;\r
4 import javajs.util.SB;\r
5 \r
6 \r
7 public class Grid {\r
8 \r
9         private int nrows;\r
10         private int ncols;\r
11 \r
12         private Cell[][] grid;\r
13         private String renderer;\r
14         \r
15 \r
16         Grid(int rows, int cols) {\r
17                 grid = new Cell[0][0];\r
18         }\r
19 \r
20         public void add(JComponent btn, GridBagConstraints c) {\r
21                 if (c.gridx >= ncols) {\r
22                         ncols = c.gridx + 1;\r
23                         for (int i = 0; i < nrows; i++) {\r
24                                 grid[i] = (Cell[]) AU.ensureLength(grid[i], ncols * 2);\r
25                         }\r
26                 }\r
27                 if (c.gridy >= nrows) {\r
28                         Cell[][] g = new Cell[c.gridy * 2 + 1][];\r
29                         for (int i = 0; i < nrows; i++)\r
30                                 g[i] = grid[i];\r
31                         for (int i = g.length; --i >= nrows;)\r
32                                 g[i] = new Cell[ncols * 2 + 1];\r
33                         grid = g;\r
34                         nrows = c.gridy + 1;\r
35                 }\r
36                 grid[c.gridy][c.gridx] = new Cell(btn, c);\r
37         }\r
38 \r
39         public String toHTML(String id) {\r
40                 SB sb = new SB();\r
41                 id += "_grid";\r
42                 sb.append("\n<table id='" + id + "' class='Grid' style='width:100%;height:100%'><tr><td style='height:20%;width:20%'></td></tr>");              \r
43                 for (int i = 0; i < nrows; i++) {\r
44                         String rowid = id + "_" + i;\r
45                         sb.append("\n<tr id='" + rowid + "'><td></td>");\r
46                         for (int j = 0; j < ncols; j++)\r
47                                 if (grid[i][j] != null)\r
48                                         sb.append(grid[i][j].toHTML(rowid + "_" + j));\r
49                         sb.append("</tr>");\r
50                 }\r
51                 sb.append("\n<tr><td style='height:20%;width:20%'></td></tr></table>\n");\r
52                 return sb.toString();\r
53         }\r
54 }\r