[jdom-interest] Has any one done a JDOM <> JTreeModel adaptor
adam flinton
aflinton at armature.com
Thu May 24 06:58:33 PDT 2001
Could you possibly send me the code?
In essence we have 2 parts of which it appears that you have 1
1) Create a (J)DOM Tree from a DTD. We have this in XML-DBMS already as part
of the "GenerateMapFromDTD"
2) "GUI-ize" the tree & make it easy for Users (which is what you appear to
have).
I have a bunch of code for a generic "Container" which has a Jtree on the
left hand side & a JPanel on the right. You load up stuff like the button
bar etc via a properties file (which can be got via http). I am think about
building a generic JDOM based XML<>GUI which I can **then** extend to use
for Map building (in XML-DBMS). The reason is that @ the moment we have 2
DTD'es (V1 & V2) & I'd like to be able to suport both based upon the DTD.
Other people could then extend the generic XML<>GUI for their own uses.
TIA
Adam
> -----Original Message-----
> From: Kenworthy, Edward [mailto:edward.kenworthy at exchange.co.uk]
> Sent: 24 May 2001 07:29
> To: 'Matthew MacKenzie'; Richard Cook; adam flinton
> Cc: JDOM-Interest
> Subject: RE: [jdom-interest] Has any one done a JDOM <> JTreeModel
> adaptor
>
>
> I've actually done this already (except I do not display
> attributes in the
> tree as I didn't think that was appropriate). But I do have
> different icons
> for each element and I allow drag and drop (both move and copy).
>
> The way I did it was by writing my own XMLDocument class to wrap JDoms
> document. This XMLDocument class handles schemas and queries
> (eg can this
> element be added as a child of this element) and it also
> supports Document
> Listeners.
>
> I then have a second class, XMLDocTreeModel which implements
> TreeModel.
>
> A third class extends JTree to add in the custom renderers,
> drag and drop
> support and popup menu.
>
> -----Original Message-----
> From: Matthew MacKenzie [mailto:matt at xmlglobal.com]
> Sent: 23 May 2001 16:04
> To: Richard Cook; adam flinton
> Cc: JDOM-Interest
> Subject: RE: [jdom-interest] Has any one done a JDOM <> JTreeModel
> adaptor
>
>
> I would like a tree model that is capable of showing the
> whole XML document
> in its entirety, with configurables for assigning icons,
> etceteras. I think
> this would be useful because quite often in my job I have to
> show raw XML in
> a GUI to allow the user to either directly edit a piece of
> the XML, or use
> DnD to pull pieces of an XML tree into another tree or table.
> I think the
> M$ XML Notepad displays XML like this. Of course, the model
> should also be
> configurable enough that it can suppress comments, processing
> instructions,
> etceteras, that the programmer doesn't want displayed.
>
> I'll probably get around to this sometime, I'll probably
> start by toying
> around with the Sun examples of doing this with a DOM.
>
> -Matt
>
> -----Original Message-----
> From: Richard Cook [mailto:rpc at prismtechnologies.com]
> Sent: Wednesday, May 23, 2001 7:05 AM
> To: Matthew MacKenzie; adam flinton
> Cc: JDOM-Interest
> Subject: RE: [jdom-interest] Has any one done a JDOM <> JTreeModel
> adaptor
>
>
> I'm not sure why you want to display the whole document as a
> tree. Maybe a
> JtreeTable or similar would be better with attrs in the
> table. For mixed
> content, you could provide some view which would depend on
> the application
> (show the raw structure, simple concatenation, convert to html, ...)
>
> getChild() doesn't have to return a JDOMNode() to give a
> readable String,
> you might find you create new JDOMNodes each time you expand a node
> (consider expand/contract/expand same node), so you might provide some
> variation on singleton if this was the case, or you can just
> use a different
> cell renderer to display the correct text and return the Element from
> getChild
>
> class ElementRenderer extends javax.swing.JLabel implements
> javax.swing.tree.TreeCellRenderer {
> public java.awt.Component getTreeCellRendererComponent(
> javax.swing.JTree tree, Object value, boolean selected,
> boolean expanded, boolean leaf, int row, boolean hasFocus)
> {
> setText(((Element) value).getName());
> return this;
> }
> }
>
> then
> /* JTree tree */
> tree.setCellRenderer(new ElementRenderer());
>
> I'd consider using a real adapter to give a more ideal
> interface to the JDOM
> document to make the treemodel or whatever easier to write.
>
> If only someone was working on V2 of a Java XML book with a
> Jtree example
> running through it.
>
>
> -----Original Message-----
> From: jdom-interest-admin at jdom.org
> [mailto:jdom-interest-admin at jdom.org]On
> Behalf Of Matthew MacKenzie
> Sent: Tuesday, May 22, 2001 9:36 PM
> To: Richard Cook; adam flinton
> Cc: JDOM-Interest
> Subject: RE: [jdom-interest] Has any one done a JDOM <>
> JTreeModel adaptor
>
> Richard,
>
> How about something along these lines:
>
> public Object getChild(Object parent, int index) {
> int atts = ((Element)parent).getAttributes().size();
> int mcon = ((Element)parent).getMixedContent().size();
> if (index <= atts) {
> Attribute att =
> (Attribute)((Element)parent).getAttributes().get(index);
> return new JDOMNode(att);
> }
> else {
> return new
> JDOMNode(((Element)parent).getMixedContent().get(index-atts));
> }
> }
> public int getChildCount(Object parent) {
> int atts = ((Element)parent).getAttributes().size();
> int mcon = ((Element)parent).getMixedContent().size();
> return atts + mcon;
> }
>
>
> To properly display a whole XML tree, I need to tree the attributes as
> children, which means they have to be figured in to
> getChildCount. I also
> need to handle CDATA, Entity, Comment, etceteras..which necessitates
> creating a JDOMNode that can properly wrap all of the objects
> (Attribute,
> DocType, etc.) and return a human readable toString(). The
> other problem,
> which I am not sure exists in JDOM, is the occurence of
> multiple text nodes
> (String objects in JDOM). It looks stupid in a tree to have them all
> seperated:
>
> element: Root
> element: Kid
> #attr: id=1
> #text: fubar
> #cdata: <h1>hello</h1>
> #text: was his name.
>
> This is all do-able, and the JDOMNode idea is solid...I just
> read an example
> of doing this very thing using a DOM node, the only
> difference is that they
> didn't support attributes.
>
> Is it against the XML spec to include attribute objects in
> getMixedContent()? I think that would be very useful.
>
>
> -Matt
>
> -----Original Message-----
> From: Richard Cook [mailto:rpc at prismtechnologies.com]
> Sent: Tuesday, May 22, 2001 11:25 AM
> To: Matthew MacKenzie; adam flinton
> Subject: RE: [jdom-interest] Has any one done a JDOM <> JTreeModel
> adaptor
>
>
> Expect someone has done it properly. I posted this a few
> weeks back. The
> tree model asks for children one by one so you can return
> what you want in
> getChild(). I suspect there is lots of inefficiency because
> of the partial
> lists built in getChildren().
>
>
> Depends on what you need, but say you want to display the
> elements could you
> not just implement TreeModel:
>
> class JDOMTreeModel implements TreeModel {
> private Element root;
> public JDOMTreeModel(Element root) {
> this.root = root;
> }
> public Object getChild(Object parent, int index) {
> return ((Element) parent).getChildren().get(index);
> }
> public int getChildCount(Object parent) {
> return ((Element) parent).getChildren().size();
> }
> public int getIndexOfChild(Object parent, Object child) {
> return ((Element) parent).getChildren().indexOf(child);
> }
> public Object getRoot() {
> return root;
> }
> public boolean isLeaf(Object node) {
> return false; // whatever
> }
> // etc
> }
>
> then TreeModel mdl = new JDOMTreeModel(doc.getRootElement());
> JTree tree = new JTree(mdl)
>
>
> saves serialising the JDOM tree or having to walk it. You can
> change the
> cell renderer to display the element name rather than the
> toString(), or
> wrap the "Element" in getChild() if necessary [ return new
> MyNode(((Element)
> parent).getChildren().get(index)) ]. If you need attrs
> there'd be a bit more
> work.
>
> -----Original Message-----
> From: jdom-interest-admin at jdom.org
> [mailto:jdom-interest-admin at jdom.org]On
> Behalf Of Kiss Gábor
> Sent: Thursday, May 03, 2001 8:11 AM
> To: jdom-interest at jdom.org
> Subject: [jdom-interest] jdom tree conversion to a JTree
>
>
> How can I convert a jdom tree to a JTree?
>
> Thanks
>
> Kiss Gábor
>
> _______________________________________________
> To control your jdom-interest membership:
> http://lists.denveronline.net/mailman/options/jdom-interest/yo
> uraddr at yourhos
> t.com
>
>
>
>
> -----Original Message-----
> From: jdom-interest-admin at jdom.org
[mailto:jdom-interest-admin at jdom.org]On
Behalf Of Matthew MacKenzie
Sent: Tuesday, May 22, 2001 6:48 PM
To: adam flinton; JDOM Mailing List (E-mail)
Subject: RE: [jdom-interest] Has any one done a JDOM <> JTreeModel adaptor
I wrote the JTreeOutputter for simple display purposes, but lately I have
found the need to keep a JDOM in sync with the tree contents. I have never
wrote a JTreeModel, is it hard? I might be able to whip one together fast
depending on the API.
-Matt
-----Original Message-----
From: jdom-interest-admin at jdom.org
[mailto:jdom-interest-admin at jdom.org]On Behalf Of adam flinton
Sent: Tuesday, May 22, 2001 10:07 AM
To: JDOM Mailing List (E-mail)
Subject: [jdom-interest] Has any one done a JDOM <> JTreeModel adaptor
Dear All,
I was just wondering if anyone has done a JDOM tree <> TreeModel adaptor
such that I can use a JDOM Model to directly interface with a JTree.
i.e. I am looking @ doing a designer tool for XML-DBMS & was very impressed
by the **lack of code** within the JTreeOutputter however it strikes me as
silly to store in effect 2 trees which I then have to keep in sync.
Any thoughts?
TIA
Adam Flinton
_______________________________________________
To control your jdom-interest membership:
http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhos
t.com
_______________________________________________
To control your jdom-interest membership:
http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhos
t.com
_______________________________________________
To control your jdom-interest membership:
http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhos
t.com
_______________________________________________
To control your jdom-interest membership:
http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhos
t.com
More information about the jdom-interest
mailing list