package com.axellience.vuegwt.client.gwtpanel;

import com.axellience.vuegwt.client.VueGWT;
import com.axellience.vuegwt.client.component.VueComponent;
import com.axellience.vuegwt.client.vue.VueJsConstructor;
import com.google.gwt.user.client.ui.SimplePanel;

/**
 * Wrap a {@link VueComponent} instance in a GWT Panel
 * @author Adrien Baron
 */
public class VueGwtPanel<T extends VueComponent> extends SimplePanel
{
    private T vueComponentInstance;

    public VueGwtPanel(VueJsConstructor<T> vueJsConstructor)
    {
        super();
        vueComponentInstance = vueJsConstructor.instantiate();
    }

    public VueGwtPanel(Class<T> vueClass)
    {
        super();
        vueComponentInstance = VueGWT.createInstance(vueClass);
    }

    @Override
    protected void onAttach()
    {
        super.onAttach();
        vueComponentInstance.$mount(getElement());
    }

    public T vue()
    {
        return this.vueComponentInstance;
    }
}

@@ -145,16 +145,68 @@
 ponent;%0A
+import com.axellience.vuegwt.client.vue.VueFactory;%0A
 import c
@@ -255,16 +255,16 @@
 ructor;%0A
-
 import c
@@ -501,16 +501,123 @@
 tance;%0A%0A
+    public VueGwtPanel(VueFactory%3CT%3E vueFactory)%0A    %7B%0A        this(vueFactory.getJsConstructor());%0A    %7D%0A%0A
     publ
@@ -822,69 +822,30 @@
     
-super();%0A        vueComponentInstance = VueGWT.createInstance
+this(VueGWT.getFactory
 (vue
@@ -850,16 +850,17 @@
 ueClass)
+)
 ;%0A    %7D%0A

Update VueGWT panel to support Factory