有没有人在CompositeCell中使用ActionCells的工作示例?

时间:2011-06-29 17:37:43

标签: gwt

我尝试按照示例http://gwt.google.com/samples/Showcase/Showcase.html#!CwCellTree,并在CompositeCell中添加了两个ActionCell,但没有运气。

,不会触发ActionCell的onBrowserEvent()

1 个答案:

答案 0 :(得分:2)

这个简单的例子对我有用。既然你没有提供任何代码或进一步解释你究竟想要实现什么,我不知道我的例子是否有任何帮助。

public void onModuleLoad() {
    CellTable<Person> table = new CellTable<Starter.Person>();

    List<HasCell<Person, ?>> cells = new LinkedList<HasCell<Person, ?>>();
    cells.add(new HasCellImpl("first name", new Delegate<Person>() {

        @Override
        public void execute(Person object) {
            Window.alert(object.getFirstName());
        }
    }));
    cells.add(new HasCellImpl("last name", new Delegate<Starter.Person>() {

        @Override
        public void execute(Person object) {
            Window.alert(object.getLastName());
        }
    }));

    CompositeCell<Person> cell = new CompositeCell<Person>(cells);
    table.addColumn(new TextColumn<Starter.Person>() {

        @Override
        public String getValue(Person object) {
            return object.getFirstName() + " " + object.getLastName();
        }
    }, "name");

    table.addColumn(new Column<Person, Person>(cell) {

        @Override
        public Person getValue(Person object) {
            return object;
        }
    }, "composite");

    LinkedList<Person> data = new LinkedList<Starter.Person>();
    data.add(new Person("Amy", "Reed"));
    data.add(new Person("Tim", "Gardner"));
    table.setRowData(data);

    RootPanel.get().add(table);
}

private class HasCellImpl implements HasCell<Person, Person> {
    private ActionCell<Person> fCell;

    public HasCellImpl(String text, Delegate<Person> delegate) {
        fCell = new ActionCell<Person>(text, delegate);
    }

    @Override
    public Cell<Person> getCell() {
        return fCell;
    }

    @Override
    public FieldUpdater<Person, Person> getFieldUpdater() {
        return null;
    }

    @Override
    public Person getValue(Person object) {
        return object;
    }
}

private class Person {
    private String fFirstName;
    private String fLastName;

    public Person(String first, String last) {
        fFirstName = first;
        fLastName = last;
    }

    public String getFirstName() {
        return fFirstName;
    }

    public String getLastName() {
        return fLastName;
    }
}