Package pyjamas :: Package ui :: Module FlexTable
[hide private]
[frames] | no frames]

Source Code for Module pyjamas.ui.FlexTable

 1  # Copyright 2006 James Tauber and contributors 
 2  # Copyright (C) 2009 Luke Kenneth Casson Leighton <lkcl@lkcl.net> 
 3  # 
 4  # Licensed under the Apache License, Version 2.0 (the "License"); 
 5  # you may not use this file except in compliance with the License. 
 6  # You may obtain a copy of the License at 
 7  # 
 8  #     http://www.apache.org/licenses/LICENSE-2.0 
 9  # 
10  # Unless required by applicable law or agreed to in writing, software 
11  # distributed under the License is distributed on an "AS IS" BASIS, 
12  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
13  # See the License for the specific language governing permissions and 
14  # limitations under the License. 
15  import pyjd 
16  if pyjd.is_desktop: 
17      from __pyjamas__ import doc 
18  from pyjamas import Factory 
19   
20  from pyjamas import DOM 
21   
22  from pyjamas.ui.HTMLTable import HTMLTable 
23  from pyjamas.ui.RowFormatter import RowFormatter 
24  from pyjamas.ui.FlexCellFormatter import FlexCellFormatter 
25   
26 -class FlexTable(HTMLTable):
27 - def __init__(self, **kwargs):
28 if not kwargs.has_key('CellFormatter'): 29 kwargs['CellFormatter'] = FlexCellFormatter(self) 30 HTMLTable.__init__(self, **kwargs)
31
32 - def addCell(self, row):
33 self.insertCell(row, self.getCellCount(row))
34
35 - def getCellCount(self, row):
36 self.checkRowBounds(row) 37 return self.getDOMCellCount(self.getBodyElement(), row)
38
39 - def getFlexCellFormatter(self):
40 return self.getCellFormatter()
41
42 - def getRowCount(self):
43 return self.getDOMRowCount()
44
45 - def removeCells(self, row, column, num):
46 for i in range(num): 47 self.removeCell(row, column)
48
49 - def prepareCell(self, row, column):
50 self.prepareRow(row) 51 #if column < 0: throw new IndexOutOfBoundsException("Cannot create a column with a negative index: " + column); 52 53 cellCount = self.getCellCount(row) 54 required = column + 1 - cellCount 55 if required > 0: 56 self.addCells(self.getBodyElement(), row, required)
57
58 - def prepareRow(self, row):
59 #if row < 0: throw new IndexOutOfBoundsException("Cannot create a row with a negative index: " + row); 60 61 rowCount = self.getRowCount() 62 for i in range(rowCount, row + 1): 63 self.insertRow(i)
64
65 - def addCells(self, table, row, num):
66 rowElem = table.rows.item(row) 67 for i in range(num): 68 cell = doc().createElement("td") 69 rowElem.appendChild(cell)
70 71 Factory.registerClass('pyjamas.ui.FlexTable', 'FlexTable', FlexTable) 72