package jdepend.client.report.way.mapui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.MouseEvent; import java.util.Collection; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.SwingConstants; import jdepend.framework.ui.component.JDependFrame; import jdepend.model.Relation; import prefuse.Visualization; import prefuse.controls.ControlAdapter; import prefuse.data.Table; import prefuse.data.query.SearchQueryBinding; import prefuse.data.search.SearchTupleSet; import prefuse.util.FontLib; import prefuse.util.ui.JFastLabel; import prefuse.util.ui.JSearchPanel; import prefuse.util.ui.UILib; import prefuse.visual.VisualItem; public class GraphPanel extends JPanel { private JDependFrame frame; private GraphJDepend gview; private JDialog parentDialog; private String group; private String command; public GraphPanel(GraphPrinter printer, Collection<Relation> relations) { this(printer.getFrame(), null, printer.getGroup(), printer.getCommand(), relations); gview.setPrinter(printer); } public GraphPanel(JDependFrame frame, JDialog parentDialog, Collection<Relation> relations) { this(frame, null, null, null, relations); } private GraphPanel(JDependFrame frame, JDialog parentDialog, String group, String command, Collection<Relation> relations) { this.frame = frame; this.parentDialog = parentDialog; this.group = group; this.command = command; this.setLayout(new BorderLayout()); // create a new radial tree view gview = new GraphJDepend(this, relations); Visualization vis = gview.getVisualization(); // create a search panel for the tree map SearchQueryBinding sq = new SearchQueryBinding((Table) vis.getGroup(GraphJDepend.treeNodes), gview.getLabel(), (SearchTupleSet) vis.getGroup(Visualization.SEARCH_ITEMS)); JSearchPanel search = sq.createSearchPanel(); search.setShowResultCount(true); search.setBorder(BorderFactory.createEmptyBorder(5, 5, 4, 0)); search.setFont(FontLib.getFont("宋体", Font.PLAIN, 16)); final JFastLabel title = new JFastLabel(" "); title.setPreferredSize(new Dimension(350, 20)); title.setVerticalAlignment(SwingConstants.BOTTOM); title.setBorder(BorderFactory.createEmptyBorder(3, 0, 0, 0)); title.setFont(FontLib.getFont("宋体", Font.PLAIN, 16)); gview.addControlListener(new ControlAdapter() { public void itemEntered(VisualItem item, MouseEvent e) { if (item.canGetString("info")) { title.setText(item.getString("info")); } } public void itemExited(VisualItem item, MouseEvent e) { title.setText(null); } }); Box box = new Box(BoxLayout.X_AXIS); box.add(title); // box.add(Box.createHorizontalGlue()); box.add(search); // box.add(Box.createHorizontalStrut(3)); this.add(gview, BorderLayout.CENTER); this.add(box, BorderLayout.SOUTH); Color BACKGROUND = Color.WHITE; Color FOREGROUND = Color.DARK_GRAY; UILib.setColor(this, BACKGROUND, FOREGROUND); } public JDependFrame getFrame() { return frame; } public JDialog getParentDialog() { return parentDialog; } String getGroup() { return group; } String getCommand() { return command; } }