A future-proof port of the com.google.gwt.editor.Editor
GWT module, with no dependency on gwt-user
(besides the Java Runtime Emulation), to prepare for GWT 3 / J2Cl.
-
Add the dependency to your build.
For Maven:
<dependency> <groupId>org.gwtproject.editor</groupId> <artifactId>gwt-editor</artifactId> <version>HEAD-SNAPSHOT</version> </dependency>
and the processor:
<dependency> <groupId>org.gwtproject.editor</groupId> <artifactId>gwt-editor-processor</artifactId> <version>HEAD-SNAPSHOT</version> <scope>provided</scope> </dependency>
For Gradle:
implementation("org.gwtproject.editor:gwt-editor:HEAD-SNAPSHOT")
and the processor:
ToDo ... <dependency> <groupId>org.gwtproject.editor</groupId> <artifactId>gwt-editor-processor</artifactId> <version>HEAD-SNAPSHOT</version> <scope>provided</scope> </dependency>
-
Update your GWT module to use
<inherits name="org.gwtproject.editor.Editor" />
-
Change the
import
s in your Java source files:import org.gwtproject.editor.client.xxx;
To build gwt-event:
- run
mvn clean verify
on the parent directory. This will build the artifact and run tests against GWT2. The J2CL test need to be executed with mvn j2cl:clean
an mvn j2cl:test
due to a problem with modules that use processors. See:
GWT Editor requires GWT 2.9.0 or newer!
GWT Editor depends on the following module:
- GWT Event.
public class Person { private int id; private String name; private boolean active; public Person() { } public Person(int id, String name, boolean active) { this.id = id; this.name = name; this.active = active; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isActive() { return active; } public void setActive(boolean active) { this.active = active; } }
this component uses domino-ui
public class PersonComponent implements IsElement<HTMLDivElement>, Editor<Person> { @IsDriver interface Driver extends SimpleBeanEditorDriver<Person, PersonComponent> { } private DominoElement<HTMLDivElement> root = DominoElement.of(div()); IntegerBox id; TextBox name; CheckBox active; private final Driver driver; public PersonComponent() { driver = new PersonComponent_Driver_Impl(); id = IntegerBox.create("id"); name = TextBox.create("name"); active = CheckBox.create("Is active"); root.appendChild(Row.create() .appendChild(Column.span12() .appendChild(id)) .appendChild(Column.span12() .appendChild(name)) .appendChild(Column.span12() .appendChild(active)) ); driver.initialize(this); } public void edit(Person person){ driver.edit(person); } public Person save(){ return driver.flush(); } @Override public HTMLDivElement asElement() { return root.asElement(); } }
PersonComponent personComponent = new PersonComponent(); Person person = new Person(10, "Ahmad", false); DomGlobal.document.body.appendChild(Card.create() .appendChild(personComponent) .asElement()); personComponent.edit(person);