1 package de.lathanda.eos.gui;
3 import java.awt.Component;
4 import java.awt.Dimension;
6 import java.awt.Toolkit;
7 import java.awt.event.MouseEvent;
8 import java.util.LinkedList;
9 import java.util.TreeSet;
11 import javax.swing.JFrame;
12 import javax.swing.JLabel;
13 import javax.swing.JScrollPane;
14 import javax.swing.JTree;
15 import javax.swing.ToolTipManager;
16 import javax.swing.tree.DefaultMutableTreeNode;
17 import javax.swing.tree.TreeCellRenderer;
18 import javax.swing.tree.TreePath;
20 import de.lathanda.eos.base.util.GuiToolkit;
21 import de.lathanda.eos.baseparser.AutoCompleteInformation;
22 import de.lathanda.eos.baseparser.SystemType;
23 import de.lathanda.eos.common.gui.Messages;
24 import de.lathanda.eos.config.Language;
26 import static de.lathanda.eos.base.icons.Icons.*;
29 private static final long serialVersionUID = -1384422891907360658L;
42 }
else if (help.isVisible()) {
45 Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
46 help.setBounds((
int) (screen.width * 0.5), 0, (
int) (screen.height * 0.9), (
int) (screen.width * 0.5));
48 help.setIconImage(LOGO);
49 help.setVisible(
true);
52 private static DefaultMutableTreeNode root;
55 root =
new DefaultMutableTreeNode(
59 for (de.lathanda.eos.baseparser.Type t : types) {
60 DefaultMutableTreeNode clsNode =
new DefaultMutableTreeNode(
new TreeEntry(t));
61 TreeSet<TreeEntry> methods =
new TreeSet<>();
62 TreeSet<TreeEntry> properties =
new TreeSet<>();
64 switch (aci.getType()) {
66 methods.add(
new TreeEntry(aci));
69 properties.add(
new TreeEntry(aci));
73 DefaultMutableTreeNode methodNodes =
new DefaultMutableTreeNode(
74 new TreeEntry(Messages.getString(
"Classbook.Methods"), AutoCompleteInformation.NEUTRAL));
75 DefaultMutableTreeNode propertyNodes =
new DefaultMutableTreeNode(
76 new TreeEntry(Messages.getString(
"Classbook.Properties"), AutoCompleteInformation.NEUTRAL));
77 for (TreeEntry te : methods) {
78 methodNodes.add(
new DefaultMutableTreeNode(te));
80 for (TreeEntry te : properties) {
81 propertyNodes.add(
new DefaultMutableTreeNode(te));
83 if (!propertyNodes.isLeaf()) {
84 clsNode.add(propertyNodes);
86 if (!methodNodes.isLeaf()) {
87 clsNode.add(methodNodes);
92 private TooltipTree content;
95 content =
new TooltipTree(root);
96 content.setFont(GuiToolkit.createFont(Font.SANS_SERIF, Font.PLAIN, 12));
97 content.setCellRenderer(
new ClassCellRenderer());
98 content.setRootVisible(
false);
99 getContentPane().add(
new JScrollPane(content));
103 private static class TreeEntry
implements Comparable<TreeEntry> {
104 public final String text;
105 public final int type;
106 public final String tooltip;
108 public TreeEntry(String text,
int type) {
114 TreeEntry(de.lathanda.eos.baseparser.Type type) {
115 StringBuffer title =
new StringBuffer();
116 boolean first =
true;
117 title.append(
"<html><p>");
118 for (de.lathanda.eos.baseparser.Type sup : type.getTypeList()) {
120 title.append(
"\u2192");
121 title.append(Language.def.getClassLabel(sup));
124 title.append(Language.def.getClassLabel(sup));
125 title.append(
"</b>");
129 title.append(
"</p></html>");
130 this.text = title.toString();
131 this.type = AutoCompleteInformation.CLASS;
135 TreeEntry(AutoCompleteInformation ace) {
136 this.tooltip =
"<html><p>" + ace.getTooltip() +
"</p></html>";
137 this.text = ace.getLabel();
138 this.type = ace.getType();
142 public int compareTo(TreeEntry b) {
143 return this.text.compareTo(b.text);
147 private class TooltipTree
extends JTree {
148 private static final long serialVersionUID = -7313420722740426372L;
150 public TooltipTree(DefaultMutableTreeNode root) {
152 ToolTipManager.sharedInstance().registerComponent(
this);
156 public String getToolTipText(MouseEvent me) {
157 TreePath path = getPathForLocation(me.getX(), me.getY());
159 TreeEntry te = (TreeEntry) ((DefaultMutableTreeNode) path.getLastPathComponent()).getUserObject();
167 private static class ClassCellRenderer
implements TreeCellRenderer {
168 private JLabel label;
170 ClassCellRenderer() {
171 label = GuiToolkit.createLabel(
"");
174 public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean selected,
boolean expanded,
175 boolean leaf,
int row,
boolean hasFocus) {
176 Object o = ((DefaultMutableTreeNode) value).getUserObject();
177 TreeEntry te = (TreeEntry) o;
178 label.setText(te.text);
179 label.setIcon(AutoCompletion.ICON[te.type]);
180 label.setToolTipText(te.tooltip);
static LinkedList< Type > getAll()
static String getString(String id)