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

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