Hi Matías & Vitali
    You are right about the Pointers
a) Know what plugins exists, a registry of plugins
b) Attach them into a panel, listen events and useful stuff

    We have exactly followed the same approach as you have mentioned for
installing the
plugin into a directory & setting up a file with the list of plugins
installed.

But some of the issues I'm facing are
  *   getting to compile a plugin without any entrypoint to Javascript.
  *   Then the second biggest issue is getting the obfuscated code loaded by
the framework.
  *   Even if i manage to load it using some of the options you have
mentioned, The plugins should be able to interact
      be able to interact between them selfs like drag an object from one
plugin and drop it in to another.

Are totally unaware of most of options mentioned by Vitali. I shall give it
a try. If you guys have any thing more
solid and you feel it will work, Let me know about it.

I think GWt should be coming up with some way we can load there Obfuscated
code dynamically.

Thanks a lot guys.

On Fri, Mar 13, 2009 at 1:00 AM, Vitali Lovich <[email protected]> wrote:

> Oh, and the RootPanel way of dynamically adding the plugin's javascript
> will probably only work in onModuleLoad.  The DOM approach I gave should
> work at any time (i.e. as a response to user action).
>
>
> On Thu, Mar 12, 2009 at 3:21 PM, Vitali Lovich <[email protected]> wrote:
>
>> Uggh - sorry.  Gmail decided to send the message for me.  I've completed
>> the class below.
>>
>> Anyways, plugins would extend PluginEntry.  Again, your GWT would be
>> reponsible for actually injecting the plugin javascript into your page. Not
>> sure what the GWT-preferred way would be, but in theory (I haven't tried
>> this out), you might be able to do a RootPanel.get().add(new HTML("<script
>> src='plugin/to/load'/>")), although I'd test it first (I highly doubt this
>> would work).
>>
>> A more explicit approach might be:
>>
>> Document dom = Document.get();
>> Element head = dom.getElementsByTagName("head").getItem(0);
>> Element pluginScript = dom.createElement("script");
>> pluginScript.setPropertyString("src", "plugin.js");
>> pluginScript.setPropertyString("type", "text/javascript");
>> Document.appendChild(head, pluginScript);
>>
>> This should work (assuming the browser supports loading scripts added
>> dynamically to the head element).  I'd recommend testing this on several
>> browsers - I'm not sure which support it (although I suspect all of the
>> major ones).
>>
>> Good luck.
>>
>> On Thu, Mar 12, 2009 at 3:03 PM, Vitali Lovich <[email protected]> wrote:
>>
>>> Well, one thing you can do is have the EntryPoint, and just tell plugin
>>> developers that they have to attach to some particular div element in a
>>> particular way, as opposed to the traditional root (i.e.
>>> RootPanel.get("plugin-name-div")).
>>>
>>> Then the user can request certain plugins to be added in which your GWT
>>> code should create the div's for those plugins and load their scripts.
>>>
>>> Hope this helps you get started.  Also, I would recommend staying away
>>> from JSNI if you're not doing something that is absolutely not supported
>>> within the GWT framework.
>>>
>>> Just as an extension to the Java approach below, I would prefer something
>>> like:
>>>
>>> public abstract class PluginEntry implements EntryPoint
>>> {
>>>      String name;
>>>
>>>      publc PluginEntry(String pluginName)
>>>      {
>>>            name = pluginName;
>>>      }
>>>
>>>     public final void onModuleEntry()
>>>     {
>>
>>              RootPanel pluginPanel = RootPanel.get("plugins-location");
>>
>>>          pluginPanel.add(new HTML("<div id='" + name + "'></div>"));
>>
>>              onPluginEntry(RootPanel.get(name));
>>
>>>     }
>>>
>>>     protected abstract void onPluginEntry(RootPanel pluginPanel);
>>
>>  }
>>>
>>> On Thu, Mar 12, 2009 at 2:13 PM, Matías Costa <[email protected]>wrote:
>>>
>>>> On Thu, Mar 12, 2009 at 5:40 PM, Rosh PR <[email protected]> wrote:
>>>>
>>>>> One of the problems I'm facing over here is how will i compile a
>>>>> small set of gwt code with out any EntryPoint and use the
>>>>> generated *javascript* from the framework. I know we can compile
>>>>> without the Entrypoint but the main problem I'm facing is compiling
>>>>> code to javascript instead of java classes and loading it to the
>>>>> framework which will have to use these JS and display the plugin
>>>>> widget on the framework console on runtime.
>>>>>
>>>>
>>>> Interesting problem.
>>>>
>>>> This is going to need some kind of infraestructure and policy. I am just
>>>> thinking out loud waiting more experienced people point problems and what
>>>> can work. To start you need two things:
>>>>
>>>> a) Know what plugins exists, a registry of plugins
>>>> b) Attach them into a panel, listen events and useful stuff
>>>>
>>>> To install the plugins you can drop them in folder. To know what exists
>>>> you can do it manually, setting up a file and fetching it from the client
>>>> side. To do it automatically you can do it server side and rpc-serialize'it
>>>> to client side.
>>>>
>>>> To load them the main problem is obfuscated code. I imagine you can't
>>>> mix up source comming from different optimizer executions. Let's suposse we
>>>> can. Then if we know the plugin main object name, we can construct a jsni
>>>> method to forge a call to the pluing initializer function, with the panel 
>>>> id
>>>> to be attached.
>>>>
>>>> native void initPlugin(String objectName, String panelId) /*-{
>>>>   var method = "@"+objectName+"::doInit(Ljava/lang/String;)";
>>>>   eval(  method+"('"+panelId+"');"  );
>>>>
>>>>
>>>>
>>>>
>>>> }-*/;
>>>>
>>>> That should give to the plugin the ability to put itself into the panel
>>>> and call whatever container hooks needs.
>>>>
>>>> Another way is doing plugin static iniatilazation self injection:
>>>>
>>>> class CoolPlugin extends Plugin {
>>>>  static {
>>>>       Application.staticSomething.register(new CoolPlugin());
>>>>  }
>>>>
>>>> So the application can take further actions...
>>>>
>>>>
>>>>
>>>>
>>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to