Re: web edition extensions
Hussein Shafie <[email protected]> Wed, 27 Nov 2024 11:33:37 +0100
| Newsgroups | gmane.editors.xxe.general |
|---|---|
| Message-ID | <[email protected]> |
On 11/27/24 05:03, Carlos Villegas wrote:
>
> But in the general case, I would need some interactive functionality on
> the client side.
Sure. Quite understandable.
> Is there a way to provide access to the document element tree and
> receive document element events on the Javascript side?
No. The "Javascript side" is just the View/Controller[*] and has no
direct access to the document/element/node tree, the Model[*], which is
found in xxeserver, the back-end.
Available document events, see
https://www.xmlmind.com/xmleditor/_web/doc/apidoc/XMLEditorEvent.html ,
XMLEditorEvent
DocumentOpenedEvent
DocumentSavedEvent
DocumentViewChangedEvent
EditingContextChangedEvent
etc
may be received by a client of yours integrating <xxe-client> by the
means of standard JavaScript API addEventListener. Excerpts from our
XMLEditorApp.js, the sample XML editor application included in the
XMLmind XML Editor Web Edition distributions:
---
this._xmlEditor = xxe;
xxe.resourceStorage = new LocalFiles(xxe);
xxe.addEventListener("connected",
this.onConnected.bind(this));
xxe.addEventListener("disconnected",
this.onDisconnected.bind(this));
const docOpenedHandler = this.onDocumentOpened.bind(this);
xxe.addEventListener("documentCreated", docOpenedHandler);
xxe.addEventListener("documentOpened", docOpenedHandler);
xxe.addEventListener("documentRecovered", docOpenedHandler);
xxe.addEventListener("documentSavedAs",
this.onDocumentSavedAs.bind(this));
xxe.addEventListener("documentClosed",
this.onDocumentClosed.bind(this));
xxe.addEventListener("saveStateChanged",
this.onSaveStateChanged.bind(this));
xxe.addEventListener("readOnlyStateChanged",
this.onReadOnlyStateChanged.bind(this));
---
> Or some way for the client to communicate with a custom Java extension
> in the backend?
May be there is a misunderstanding here.
In our mind, it's up to you
1) to develop *your* client,
2) to make *your* client communicate with *your* backend.
- xxeserver, our XML editor backend, is meant to run side by side with
your backend (or even your multiple backends). See
https://www.xmlmind.com/xmleditor/_web/doc/manual/xxeserver_reference.html#xxeserver_reference
- <xxe-app>, the sample XML editor application included in the XMLmind
XML Editor Web Edition distributions is just that, a *sample* XML editor
application, and as such, cannot be used as the client in any advanced
use case. See
https://www.xmlmind.com/xmleditor/_web/doc/manual/xxe-app_reference.html#xxe-app_reference
- <xxe-client> is a "WYSIWYG" XML editor *component* just like TinyMCE
(https://www.tiny.cloud/) or CKEditor (https://ckeditor.com/) are
WYSIWYG HTML editor components.
The main difference with TinyMCE or CKEditor is that <xxe-client> is not
self-contained and needs xxeserver, the backend, to perform its tasks.
Hence <xxe-client> communicates exclusively with xxeserver through a
WebSocket. Making <xxe-client> communicate with the backends of our
customers would simply not make sense.
<xxe-client> is meant to be integrated in a larger Web application
developed by our customers. See
https://www.xmlmind.com/xmleditor/_web/doc/manual/xxe-client_reference.html#xxe-client_reference
Here is an example of a Web application using <xxe-client> and which is
totally different from <xxe-app>:
https://www.xmlmind.com/xmleditor/_web/demo/newsapp.html
More information:
https://www.xmlmind.com/xmleditor/_web/doc/manual/integration_demo.html#integration_demo
> If not now, is this or something similar planned for the future?
>
No, not at all, mainly because we don't understand your needs. It would
help if you could give us examples of what you would like to implement.
---
[*] MVC, Model View Controller,
https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
--
XMLmind XML Editor Support List
[email protected]
http://www.xmlmind.com/mailman/listinfo/xmleditor-support