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

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