Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(163)

Unified Diff: frontend/client/src/autotest/tko/FragmentedTable.java

Issue 1595019: Merge remote branch 'origin/upstream' into tempbranch (Closed)
Patch Set: Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
- }
-}
« no previous file with comments | « frontend/client/src/autotest/public/TestPlannerClient.html ('k') | frontend/client/src/autotest/tko/Spreadsheet.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698