Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

JTree -> SQL query

Posted on 2004-09-29
17
Medium Priority
?
455 Views
Last Modified: 2006-11-17
Hello,
I have a JTree which represents an SQL where clause:
eg,
AND
   var > 10
   var2 = text
   OR
       var3 > 2
       var4 < 2
etc.

I'm going to stick this tree in a JSplitPane and then Im going to make a dynamic parser as the right component - just the representative SQL statement
eg,
WHERE
{
    var > 10  AND
    var2 = text AND
or whatever!!

I want to know what would be the best JComponent to use to display this SQL statement??
eg, it would be easy to generate XML from the tree and this XML could allow me to specify, font color, bold,  indents (for groups AND, OR) etc.

What do you think??
Thanks
0
Comment
Question by:cathalmchale
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 9
  • 8
17 Comments
 
LVL 37

Expert Comment

by:zzynx
ID: 12180537
>> it would be easy to generate XML from the tree and this XML could allow me to specify, font color, bold,  indents (for groups AND, OR) etc.
JTextArea I suppose
0
 
LVL 37

Expert Comment

by:zzynx
ID: 12180563
Sorry, I meant JTextPane, since it allows the use of StyledDocument
0
 

Author Comment

by:cathalmchale
ID: 12180652
Ok, would you have any simple examples with similar functionality you could point me towards please?
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 37

Expert Comment

by:zzynx
ID: 12180744
0
 

Author Comment

by:cathalmchale
ID: 12180935
thanks.
i have the following XML generated for other reasons, i want to reuse this:

- <filter-definition>
-    <filter-group logic="AND">
        <filter field="Address" operator="=" value="2" />
        <filter field="customer_name" operator="=" value="john" />
-       <filter-group logic="OR">
           <filter field="EleInPort" operator="=" value="22" />
        </filter-group>
     </filter-group>
  </filter-definition>

I presume this is OK - I can do something like:
if its a <filter-group>
    set text color, style etc
    print string
else
...
And keeping track of indents??  should all be ok i think
0
 

Author Comment

by:cathalmchale
ID: 12180979
>>And keeping track of indents??  should all be ok i think
 the tab-stops at this link I guess!!

cheers
0
 
LVL 37

Expert Comment

by:zzynx
ID: 12180984
>>should all be ok i think
Don't have any experience with it, but I think it, yeah.
0
 
LVL 37

Expert Comment

by:zzynx
ID: 12181012
>> the tab-stops at this link I guess!!
???
0
 

Author Comment

by:cathalmchale
ID: 12188310
Hi again,

im using
StyledDocument sqlDoc = new DefaultStyledDocument();
and I have some Styles set up, so I can use
sqlDoc.insertString(sqlDoc.getLength(), "Some text", style);

but how do I specify the tab position at where I want this text inserted - this position is relative to the recursion number -> each time I recurse ill add 10 to this tab position for example.
0
 
LVL 37

Expert Comment

by:zzynx
ID: 12188379
Just an idea: can't you use "\t" ?
sqlDoc.insertString(sqlDoc.getLength(), "\tSome text", style);


StringBuffer tabs = new StringBuffer("\t");
In your loop: tabs.append("\t");
sqlDoc.insertString(sqlDoc.getLength(), tabs.toString()+"Some text", style);
0
 

Author Comment

by:cathalmchale
ID: 12188389
Also, it seems that you must associate a Style with a document - and initialise everything at the beginning.
I had imagined that each time I wanted to redraw the JTextPane I would do:

StyledDocument sqlDoc = new DefaultStyledDocument();
// could use some Styles initialised as fields in the class
sqlDoc.insertString(sqlDoc.getLength(), "Some text", style);

//then finally to update evrything
jTextPane.setDocument(sqlDocument);

but I can't do this because of the StyledDocument interface - so what do I do, just set-up everything (new doc, add new styles etc.) each time???
0
 

Author Comment

by:cathalmchale
ID: 12188407
>> Just an idea: can't you use "\t" ?

i guess I could try this, but the "tab-stops" idea which was in the link you posted me, perhaps seems like a better idea??  but I am not sure how to dynamically implement this like your dynamic  >>In your loop (RECURSION): tabs.append("\t");
0
 
LVL 37

Expert Comment

by:zzynx
ID: 12188810
>> so what do I do, just set-up everything
No. You can

    // 1) Start with the current input attributes for the JTextPane:
    MutableAttributeSet attrs = jTextPane.getInputAttributes();
    // 2) Change some attributes

    // 3) Retrieve the pane's document object
    StyledDocument doc = jtp.getStyledDocument();
   
    // 4) Apply the new attributes
    doc.setCharacterAttributes(...)

Have a look at the last example at http://javatechniques.com/public/java/docs/basics/jtextpane-font.html

Also interesting: http://javaalmanac.com/egs/javax.swing.text/style_HiliteWords2.html
0
 

Author Comment

by:cathalmchale
ID: 12189902
OK thanks, I have it working beautifully now with 1 small exception !! :)

the "\t" tab is too big, how do i set it to a smaller size??
0
 
LVL 37

Accepted Solution

by:
zzynx earned 1000 total points
ID: 12190013
0
 

Author Comment

by:cathalmchale
ID: 12190577
thanks all working well now,
what a lot of hassle ;-)

Cathal,
P.S. shud i post my solution - it may be of help to others, but the code is quite long
0
 
LVL 37

Expert Comment

by:zzynx
ID: 12190661
Thanks for accepting

>> thanks all working well now,
Nice!
>> what a lot of hassle ;-)
:)

>>P.S. shud i post my solution - it may be of help to others, but the code is quite long
You decide

0

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
Suggested Courses

618 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question