Skip to content
Snippets Groups Projects
Commit 91ce0122 authored by izabel's avatar izabel
Browse files

[LMS-1824] automatic resizing of columns with tooltip

SVN: 18581
parent 85e6c257
No related branches found
No related tags found
No related merge requests found
package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid; package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid;
import java.util.ArrayList;
import java.util.List;
import com.extjs.gxt.ui.client.data.ModelData; import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.event.ComponentEvent; import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.GridEvent; import com.extjs.gxt.ui.client.event.GridEvent;
...@@ -7,6 +10,8 @@ import com.extjs.gxt.ui.client.widget.grid.ColumnHeader; ...@@ -7,6 +10,8 @@ import com.extjs.gxt.ui.client.widget.grid.ColumnHeader;
import com.extjs.gxt.ui.client.widget.grid.Grid; import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.GridView; import com.extjs.gxt.ui.client.widget.grid.GridView;
import com.extjs.gxt.ui.client.widget.menu.Menu; import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.google.gwt.dom.client.Node;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Element;
/** /**
...@@ -83,10 +88,19 @@ class ExtendedGridView extends GridView ...@@ -83,10 +88,19 @@ class ExtendedGridView extends GridView
headerCell.getStyle().setProperty("width", "auto"); headerCell.getStyle().setProperty("width", "auto");
for (int i = 0; i < pGrid.getStore().getCount(); i++) for (int i = 0; i < pGrid.getStore().getCount(); i++)
{ {
Element cell = (Element) view.getCell(i, column).getFirstChildElement(); Element td = (Element) view.getCell(i, column);
cell.getStyle().setWidth(0, com.google.gwt.dom.client.Style.Unit.PX); List<Node> nodes = extractNodes(td);
int width = cell.getScrollWidth(); for (Node n : nodes)
cell.getStyle().setProperty("width", "auto"); {
if (Element.is(n))
{
Element.as(n).getStyle().setWidth(0, com.google.gwt.dom.client.Style.Unit.PX);
}
}
Element element = (Element) td.getFirstChildElement();
element.getStyle().setWidth(0, com.google.gwt.dom.client.Style.Unit.PX);
int width = element.getScrollWidth();
element.getStyle().setProperty("width", "auto");
if (width > max) if (width > max)
{ {
max = width; max = width;
...@@ -95,6 +109,32 @@ class ExtendedGridView extends GridView ...@@ -95,6 +109,32 @@ class ExtendedGridView extends GridView
return max; return max;
} }
private List<Node> extractNodes(Element element)
{
List<Node> visited = new ArrayList<Node>();
List<Node> toVisit = new ArrayList<Node>();
toVisit.add(element);
while (toVisit.isEmpty() == false)
{
Node n = toVisit.get(0);
toVisit.remove(n);
if (visited.contains(n) == false)
{
visited.add(n);
NodeList<Node> childNodes = n.getChildNodes();
for (int j = 0; j < childNodes.getLength(); j++)
{
Node c = childNodes.getItem(j);
if (toVisit.contains(c) == false)
{
toVisit.add(c);
}
}
}
}
return visited;
}
private int calculateHeaderCellIndex(Grid<ModelData> pGrid, int column) private int calculateHeaderCellIndex(Grid<ModelData> pGrid, int column)
{ {
// WORKAROUND: getHeaderCell takes into account only visible columns // WORKAROUND: getHeaderCell takes into account only visible columns
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment