Thanks a lot for your answer. On 21 Mrz., 16:44, Thomas Broyer <[email protected]> wrote: > Known issue, fixed in > trunk:http://code.google.com/p/google-web-toolkit/issues/detail?id=5714&q=c... > > > > > > > > On Wednesday, March 21, 2012 3:22:04 PM UTC+1, Musicman75 wrote: > > > Hello, > > > I've a problem using a custom cell in a cellTable. > > My custom renderer renders the data with templates and includes a > > table. > > On mouseOver the main cellTable highlights the row, but on mouseOver > > on the included table, the highlight of the row gets lost. > > > How can I get the row highlighted even if I hover the internal table? > > > Thanks for help. > > > Here's a small example: > > > Playground.java (implementing EntryPoint): > > > ---------- > > package com.heiler.playground.client; > > > import com.google.gwt.cell.client.TextCell; > > import com.google.gwt.core.client.EntryPoint; > > import com.google.gwt.user.cellview.client.CellTable; > > import com.google.gwt.user.cellview.client.Column; > > import com.google.gwt.user.client.ui.RootPanel; > > import com.google.gwt.view.client.ListDataProvider; > > import com.heiler.playground.shared.MainObject; > > > public class Playground implements EntryPoint { > > @Override > > public void onModuleLoad() { > > ListDataProvider<MainObject> dataProvider = new > > ListDataProvider<MainObject>(); > > for (int i = 0; i < 5; i++) { > > dataProvider.getList().add(new MainObject(i)); > > } > > CellTable<MainObject> mainTable = new > > CellTable<MainObject>(); > > > Column<MainObject, String> idColumn = new > > Column<MainObject, > > String>( > > new TextCell()) { > > @Override > > public String getValue(MainObject object) { > > return Integer.toString(object.getId()); > > } > > }; > > > Column<MainObject, MainObject> subColumn = new > > Column<MainObject, > > MainObject>( > > new CustomCell()) { > > @Override > > public MainObject getValue(MainObject object) { > > return object; > > } > > }; > > > mainTable.addColumn(idColumn, "ID"); > > mainTable.addColumn(subColumn, "Sub"); > > > dataProvider.addDataDisplay(mainTable); > > mainTable.setWidth("800px"); > > > RootPanel.get().add(mainTable); > > } > > } > > > ------------------- > > > CustomCell.java: > > > ------------------- > > package com.heiler.playground.client; > > > import java.util.List; > > > import com.google.gwt.cell.client.AbstractCell; > > import com.google.gwt.cell.client.Cell; > > import com.google.gwt.cell.client.ValueUpdater; > > import com.google.gwt.core.client.GWT; > > import com.google.gwt.dom.client.Element; > > import com.google.gwt.dom.client.EventTarget; > > import com.google.gwt.dom.client.NativeEvent; > > import com.google.gwt.safehtml.client.SafeHtmlTemplates; > > import com.google.gwt.safehtml.client.SafeHtmlTemplates.Template; > > import com.google.gwt.safehtml.shared.SafeHtml; > > import com.google.gwt.safehtml.shared.SafeHtmlBuilder; > > import com.google.gwt.user.client.DOM; > > import com.google.gwt.user.client.Event; > > import com.heiler.playground.shared.MainObject; > > import com.heiler.playground.shared.SubObject; > > > public class CustomCell extends AbstractCell<MainObject> { > > interface Template extends SafeHtmlTemplates { > > > @Template("<div cellspacing=\"0\" cellpadding=\"0\">") > > SafeHtml stockInfoTableBegin(); > > > @Template("</div>") > > SafeHtml stockInfoTableEnd(); > > > @Template("<div>") > > SafeHtml stockInfoRowBegin(); > > > @Template("</div>") > > SafeHtml stockInfoRowEnd(); > > > @Template("<div > > class=\"itemsTableWidget-StockInfoHeaderColumn\">{0} > > </div>") > > SafeHtml stockInfoColumn(String columnName); > > > @Template("<div > > class=\"itemsTableWidget-StockInfoDataColumn\">{0}</ > > div>") > > SafeHtml stockInfoBodyData(String data); > > > @Template("<div > > class=\"itemsTableWidget-clearLayout\"></div>") > > SafeHtml clearStockInfoLayout(); > > > } > > > private static Template template = GWT.create(Template.class); > > > /** > > * Creates and initializes new instance of this class. > > */ > > public CustomCell() { > > super("click", "mouseover", "mouseout"); > > } > > > @Override > > public void render(Cell.Context context, MainObject value, > > SafeHtmlBuilder sb) { > > if (value != null) { > > renderStockInfo(context, value, sb); > > } > > } > > > private void renderStockInfo(Cell.Context context, MainObject > > value, > > SafeHtmlBuilder sb) { > > SubObject itemStockInfo = value.getSub(); > > List<String> columnNameList = value.getColumnNames(); > > > // stockinfo row start > > > // table start > > sb.append(template.stockInfoTableBegin()); > > > // header start > > sb.append(template.stockInfoRowBegin()); > > for (String columnName : columnNameList) { > > sb.append(template.stockInfoColumn(columnName)); > > } > > sb.append(template.stockInfoRowEnd()); > > // header end > > > // info rows > > sb.append(template.stockInfoRowBegin()); > > > > sb.append(template.stockInfoBodyData(itemStockInfo.getMessage())); > > > sb.append(template.stockInfoRowEnd()); > > > sb.append(template.stockInfoTableEnd()); > > // table end > > > sb.append(template.clearStockInfoLayout()); > > // container end > > } > > > @Override > > public void onBrowserEvent(Context context, Element parent, > > MainObject value, NativeEvent event, > > ValueUpdater<MainObject> valueUpdater) { > > super.onBrowserEvent(context, parent, value, event, > > valueUpdater); > > EventTarget eventTarget = event.getEventTarget(); > > if (!Element.is(eventTarget)) { > > return; > > } > > > switch (DOM.eventGetType((Event) event)) { > > case Event.ONCLICK: > > GWT.log("onClick"); > > break; > > case Event.ONMOUSEOUT: > > GWT.log("onMouseOut"); > > break; > > case Event.ONMOUSEOVER: > > GWT.log("onMouseOver"); > > break; > > default: > > break; > > } > > > } > > > } > > > ---------------- > > > MainObject.java (My root object contains a subObject): > > > ---------------- > > package com.heiler.playground.shared; > > > import java.util.ArrayList; > > import java.util.List; > > > public class MainObject { > > > Integer id; > > String name = "MainObject"; > > SubObject sub; > > String message = "This is the message of the main object"; > > > public String getMessage() { > > return message; > > } > > > public void setMessage(String message) { > > this.message = message; > > } > > > List<String> columnNames = new ArrayList<String>(); > > > public MainObject(int id) { > > this.id = id; > > this.sub = new SubObject(id); > > columnNames.add("id"); > > columnNames.add("Name"); > > columnNames.add("Dat"); > > } > > > public List<String> getColumnNames() { > > return columnNames; > > } > > > public void setColumnNames(List<String> columnNames) { > > this.columnNames = columnNames; > > } > > > public Integer getId() { > > return id; > > } > > > public void setId(Integer id) { > > this.id = id; > > } > > > public String getName() { > > return name; > > } > > > public void setName(String name) { > > this.name = name; > > } > > > public SubObject getSub() { > > return sub; > > } > > > public void setSub(SubObject sub) { > > this.sub = sub; > > } > > > } > > > -------------------- > > > SubObject.java: > > > -------------------- > > package com.heiler.playground.shared; > > > public class SubObject { > > > String name = "SubObject"; > > String dat = "Data"; > > Integer id = 10; > > String message = "This is the message"; > > > public SubObject(int id) { > > this.id = id; > > } > > > public String getMessage() { > > return message; > > } > > > public void setMessage(String message) { > > this.message = message; > > } > > > public String getName() { > > return name; > > } > > > public void setName(String name) { > > this.name = name; > > } > > > public String getDat() { > > return dat; > > } > > > public void setDat(String dat) { > > this.dat = dat; > > } > > > public Integer getId() { > > return id; > > } > > ... > > Erfahren Sie mehr »
-- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
