Index: frontend/client/src/autotest/tko/FragmentedTable.java |
diff --git a/frontend/client/src/autotest/tko/FragmentedTable.java b/frontend/client/src/autotest/tko/FragmentedTable.java |
index 987e4c346556ebbfacd0d409c66d193d424f5bd9..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 |
--- a/frontend/client/src/autotest/tko/FragmentedTable.java |
+++ b/frontend/client/src/autotest/tko/FragmentedTable.java |
@@ -1,143 +0,0 @@ |
-package autotest.tko; |
- |
-import autotest.common.ui.RightClickTable; |
- |
-import com.google.gwt.event.dom.client.ClickEvent; |
-import com.google.gwt.user.client.DOM; |
-import com.google.gwt.user.client.Element; |
-import com.google.gwt.user.client.Event; |
-import com.google.gwt.user.client.ui.HTMLTable; |
- |
-import java.util.ArrayList; |
-import java.util.List; |
- |
-/** |
- * Customized table class supporting multiple tbody elements. It is modified to support input |
- * handling, getRowCount(), getCellCount(), and getCellFormatter().getElement(). getElement() |
- * also works. Calls to other methods aren't guaranteed to work. |
- */ |
-class FragmentedTable extends RightClickTable { |
- public class FragmentedCellFormatter extends HTMLTable.CellFormatter { |
- @Override |
- public Element getElement(int row, int column) { |
- checkCellBounds(row, column); |
- Element bodyElem = bodyElems.get(getFragmentIndex(row)); |
- return getCellElement(bodyElem, getRowWithinFragment(row), column); |
- } |
- |
- /** |
- * Native method to efficiently get a td element from a tbody. Copied from GWT's |
- * HTMLTable.java. |
- */ |
- private native Element getCellElement(Element tbody, int row, int col) /*-{ |
- return tbody.rows[row].cells[col]; |
- }-*/; |
- } |
- |
- private List<Element> bodyElems = new ArrayList<Element>(); |
- private int totalRowCount; |
- private int rowsPerFragment; |
- |
- public FragmentedTable() { |
- super(); |
- setCellFormatter(new FragmentedCellFormatter()); |
- } |
- |
- /** |
- * This method must be called after added or removing tbody elements and before using other |
- * functionality (accessing cell elements, input handling, etc.). |
- */ |
- public void updateBodyElems() { |
- totalRowCount = 0; |
- Element tbody = DOM.getFirstChild(getElement()); |
- for(; tbody != null; tbody = DOM.getNextSibling(tbody)) { |
- assert tbody.getTagName().equalsIgnoreCase("tbody"); |
- bodyElems.add(tbody); |
- totalRowCount += getRowCount(tbody); |
- } |
- } |
- |
- public void reset() { |
- bodyElems.clear(); |
- TkoUtils.clearDomChildren(getElement()); |
- } |
- |
- private int getRowWithinFragment(int row) { |
- return row % rowsPerFragment; |
- } |
- |
- private int getFragmentIndex(int row) { |
- return row / rowsPerFragment; |
- } |
- |
- @Override |
- public HTMLTable.Cell getCellForEvent(ClickEvent event) { |
- return getCellForDomEvent(event); |
- } |
- |
- @Override |
- protected RowColumn getCellPosition(Element td) { |
- Element tr = DOM.getParent(td); |
- Element body = DOM.getParent(tr); |
- int fragmentIndex = DOM.getChildIndex(getElement(), body); |
- int rowWithinFragment = DOM.getChildIndex(body, tr); |
- int row = fragmentIndex * rowsPerFragment + rowWithinFragment; |
- int column = DOM.getChildIndex(tr, td); |
- return new RowColumn(row, column); |
- } |
- |
- /** |
- * This is a modified version of getEventTargetCell() from HTMLTable.java. |
- */ |
- @Override |
- protected Element getEventTargetCell(Event event) { |
- Element td = DOM.eventGetTarget(event); |
- for (; td != null; td = DOM.getParent(td)) { |
- // If it's a TD, it might be the one we're looking for. |
- if (DOM.getElementProperty(td, "tagName").equalsIgnoreCase("td")) { |
- // Make sure it's directly a part of this table before returning |
- // it. |
- Element tr = DOM.getParent(td); |
- Element body = DOM.getParent(tr); |
- Element tableElem = DOM.getParent(body); |
- if (tableElem == getElement()) { |
- return td; |
- } |
- } |
- // If we run into this table's element, we're out of options. |
- if (td == getElement()) { |
- return null; |
- } |
- } |
- return null; |
- } |
- |
- @Override |
- public int getCellCount(int row) { |
- Element bodyElem = bodyElems.get(getFragmentIndex(row)); |
- return getCellCount(bodyElem, getRowWithinFragment(row)); |
- } |
- |
- @Override |
- public int getRowCount() { |
- return totalRowCount; |
- } |
- |
- private native int getRowCount(Element tbody) /*-{ |
- return tbody.rows.length; |
- }-*/; |
- |
- private native int getCellCount(Element tbody, int row) /*-{ |
- return tbody.rows[row].cells.length; |
- }-*/; |
- |
- /** |
- * This must be called before using other functionality (accessing cell elements, input |
- * handling, etc.). |
- * @param rowsPerFragment The number of rows in each tbody. The last tbody may have fewer |
- * rows. All others must have exactly this number of rows. |
- */ |
- public void setRowsPerFragment(int rowsPerFragment) { |
- this.rowsPerFragment = rowsPerFragment; |
- } |
-} |