Hi Norbert, Norbert Sándor wrote:
Hello,
I'm experimenting with the RichTextArea (RTA) in a separate application, not in XWiki. I checked out the xwiki-gwt-dom and xwiki-gwt-user, and RTA seems to work well. (Until now I've created only a small demo application, with an RTA and some buttons to execute various commands.)
Cool!
My questions are:
1. Pressing ENTER creates a BR element by default, is it possible to create a P instead?
AFAIK there's no built-in command (like insertbronreturn) to trigger this behavior. We have written a RTA plugin for this, which you can find at http://tinyurl.com/yacr2l8 . All RTA plugins are for the moment in platform/web/wysiwyg module. The line plugin is pretty much generic so you could try to reuse it.
(The behaviour of the ENTER key inside a P can be set by executing the insertbronreturn command, but the default document always contains a BR, and if I set the initial content to <p></p>, I cannot navigate the cursor inside the P...)
You can place the caret inside the empty paragraph using the selection API but you have to make sure the user can't leave the body element empty (e.g. in Firefox if the user selects all content and deletes it you're back to the initial BR).
2. Is there a way to listen to selection events? (I want to enable/disable some buttons based on the current selection.)
Unfortunately no. AFAIK only IE has a native event for selection change. We overcome this by listening to key up, mouse up and command events on the RTA. You can take a look at http://tinyurl.com/yas4fxn . AbstractStatefulPlugin listens to this events and schedules updates of its state using a DeferredUpdater (only the most recent update is executed). In our editor we adopted this strategy: each plugin is responsible for updating its state (e.g. detect bold style) and the editor is responsible to enabling/disabling features based on some rules.
3. Are there any extensions to the default RTA in the other parts of XWiki? (I mean for example commands and controls for editing TABLEs visually, toolbars that are enabled/disabled based on the content of the RTA, etc. - I haven't looked at all the source code yet, it's huge :)
platform/web/wysiwyg module contains plugins built on top of the RTA (from xwiki-gwt-user module) and they use the DOM and Selection API from xwiki-gwt-dom module. Some of the plugins overwrite the default RTA commands with their improved version. For instance TextPlugin ( http://tinyurl.com/y8eoh2f ) registers custom executables for default RTA command like bold and italic. In the same way FormatPlugin overwrites the removeformat command. Most of this plugins are generic. Some are XWiki specific: link, image, import and macro. We have a table plugin, but it offers basic features like insert row after or delete column. Hope this helps. Marius
That's for a starter :) Thanks for your help in advance!
Best regards: -- Norbert Sándor http://jvminside.blogspot.com/ _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs