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