Hi,

What I (plan) to do is to automatically recompile the whole
application when a client-plugin is added.

So I keep a plugin registry on the server side and when I enable/add a
plugin I generate some glue files and recompile + redeploy the whole
GWT-client automatically, this to get the most benefits from GWT
optimizations.

Regards,
Andreas

On Fri, Mar 13, 2009 at 10:38 AM, Rosh PR <[email protected]> wrote:
> For Drag and drop we use the SmartGWT. Will give a shot at your ideas.
> Thanks
>
> On Thu, Mar 12, 2009 at 10:39 PM, Vitali Lovich <[email protected]> wrote:
>>
>> I'm pretty sure that you need an entry point to compile a module.  My
>> abstract method approach should do it for you.
>>
>> The "obfuscated" code is just javascript which I explained to you how to
>> load.
>>
>> As for the drag and drop, just search up drag & drop on GWT - I'm pretty
>> sure there's support for it.
>>
>>
>> On Fri, Mar 13, 2009 at 12:38 AM, Rosh PR <[email protected]> wrote:
>>>
>>> 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...
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
> >
>



--
__________________________________________________
Andreas Karlsson ([email protected])
Software Architect
MCP, MCAD.NET Charter, MCSD.NET Early Achiever, SCJP

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