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