# Vue GWT and Widgets
For easy backward compatibility it's possible to wrap any Vue GWT Component in a GWT Widget.
For this you need to use VueGwtWidget.
# Adding the dependency
VueGwtWidget is in it's own Maven module.
If you want to use it, add this Maven Dependency to your pom.xml:
<dependency>
<groupId>com.axellience</groupId>
<artifactId>vue-gwt-gwt2</artifactId>
<version>${vue-gwt.version}</version>
</dependency>
And this in your gwt.xml:
<inherits name='com.axellience.vuegwt.GWT2'/>
# Instantiating a DemoComponent
Let's instantiate a DemoComponent with VueGwtWidget:
GwtIndex.html
<div id="childComponentAttachPoint"></div>
RootGwtApp.java
public class RootGwtApp implements EntryPoint {
public void onModuleLoad() {
// Create a VueGwtPanel, it's a regular GWT Widget and can be attached to any GWT Widget
VueGwtWidget<DemoComponent> vueGwtWidget = new VueGwtWidget<>(DemoComponent.class);
// Attach it to inside our DOM element
RootPanel.get("childComponentAttachPoint").add(vueGwtWidget);
}
}
# Accessing our Vue Instance
It's even possible to interact with our instantiated Vue.
Let's say our DemoComponent has a method increaseCounter().
We can do:
VueGwtWidget<DemoComponent> vueGwtWidget = new VueGwtWidget<>(DemoComponent.class);
RootPanel.get("childComponentAttachPoint").add(vueGwtWidget);
vueGwtWidget.getComponent().increaseCounter();
# Cleaning Up
If you don't need your VueGwtWidget anymore, you can destroy it's Vue instance by calling:
vueGwtWidget.getComponent().vue().$destroy();