package au.com.acpfg.xml.query;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import javax.swing.ListCellRenderer;
import au.com.acpfg.xml.query.XMLQueryEntry.ResultsType;
/**
* Displays all the properties of the XMLQueryEntry object in a single component
* which is contained in a scrollable, vertical list for the user
*
* @author andrew.cassin
*
*/
public class MyQueryEntryRenderer implements ListCellRenderer {
private static final Color HIGHLIGHT_COLOR = new Color(155, 192, 255);
@Override
public Component getListCellRendererComponent(JList arg0, Object arg1,
int arg2, boolean is_selected, boolean has_focus) {
JPanel parent = new JPanel();
parent.setLayout(new BorderLayout());
JTextPane t_label = new JTextPane();
t_label.setContentType("text/html");
if (is_selected) {
t_label.setBackground(HIGHLIGHT_COLOR);
} else {
t_label.setBackground(Color.WHITE);
}
parent.add(t_label, BorderLayout.CENTER);
XMLQueryEntry xqe = (XMLQueryEntry) arg1;
String[] lines = xqe.getQuery().trim().split("\n");
String atts = "";
if (xqe.getFailEmpty()) {
atts += "(<i>abort if empty</i>)";
}
String fontspec = "black";
if (!xqe.isEnabled()) {
fontspec = "red";
}
ResultsType[] wanted = xqe.getWantedResults();
StringBuffer rt_wanted = new StringBuffer(256);
int idx =0;
for (ResultsType rt : wanted) {
rt_wanted.append(rt);
if (idx++ < wanted.length-1)
rt_wanted.append(", ");
}
int left = xqe.getQuery().length() - lines[0].length();
String text = "<html><b>"+xqe.getName()+"</b>: "+rt_wanted+" "+atts+"\n<br/><tt color=\""+fontspec+"\">"+lines[0]+"</tt>";
if (left > 0) {
text += "... (+"+left+" more characters)";
}
t_label.setText(text);
return parent;
}
}