📄 grouppanel.java
字号:
/**
*
*/
package flow.graph.gui.graph;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.beans.XMLDecoder;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.LookAndFeel;
import javax.swing.UIManager;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;
import org.jgraph.graph.DefaultGraphCell;
import org.jgraph.graph.GraphConstants;
import com.jgoodies.looks.Options;
import com.jgoodies.looks.demo.Settings;
import com.jgoodies.looks.plastic.PlasticLookAndFeel;
import flow.graph.gui.graph.GPCellViewFactory;
import flow.graph.gui.graph.template.GraphTemplate;
import flow.graph.gui.graph.template.Template;
import flow.graph.gui.graph.template.Templates;
import flow.graph.gui.tools.JButtonGroup;
import flow.graph.gui.tools.JGroupContainer;
import flow.graph.gui.tools.JGroupPanel;
import flow.graph.gui.tools.SelectButton;
import flow.graph.gui.tree.ServerTreeView;
/**
* @author Administrator
*
*/
public class GroupPanel {
JGroupPanel group;
Templates templates;
private ServerTreeView treeView;
public GroupPanel(ServerTreeView treeView, Templates templates){
this.templates = templates;
this.treeView = treeView;
group = new JGroupPanel();
//createGroup1();
group.insertGroup(0, "业务列表");
group.addMember(0, treeView);
createGroupTemplate();
group.expandGroup(0);
}
public GroupPanel(){
configureUI();
group = new JGroupPanel();
createGroupBusiness();
createGroupTemplate();
group.expandGroup(0);
}
public void createGroupBusiness(){
group.insertGroup(0, "业务列表");
group.addMember(0, new JTree());
}
public void createGroupTemplate(){
group.insertGroup(1, "业务模板");
group.addMember(1, createSubGroup());
}
public DefaultGraphCell createVertex(double x, double y, double w, double h, Color bg, boolean raised, DefaultGraphCell cell, String viewClass) {
// set the view class (indirection for the renderer and the editor)
if (viewClass != null)
GPCellViewFactory.setViewClass(cell.getAttributes(), viewClass);
//GraphConstants.setDashPattern(cell.getAttributes(), new float[]{4, 2});
// Set bounds
GraphConstants.setBounds(cell.getAttributes(), new Rectangle2D.Double(x, y, w, h));
//GraphConstants.setIcon(cell.getAttributes(), new ImageIcon(GraphManager.class.getResource("images/insert.gif")));
GraphConstants.setInset(cell.getAttributes(), 20);
// Set fill color
if (bg != null) {
GraphConstants.setGradientColor(cell.getAttributes(), bg);
GraphConstants.setOpaque(cell.getAttributes(), true);
}
//GraphConstants
// Set raised border
if (raised)
GraphConstants.setBorder(cell.getAttributes(), BorderFactory.createRaisedBevelBorder());
else
// Set black border
GraphConstants.setBorderColor(cell.getAttributes(), Color.black);
//GraphConstants.setValue(cell.getAttributes(), "hahaha");
// Add a Floating Port
cell.addPort();
return cell;
}
public JGroupPanel createSubGroup(){
final JGroupPanel panel = new JGroupPanel();
if(templates != null){
for(int i=0;i<templates.getTemplates().size();i++){
Template template = (Template)templates.getTemplates().get(i);
panel.insertGroup(i, template.getName());
JButtonGroup jbg = new JButtonGroup();
for(int j=0;j<template.getTemplate().size();j++){
final GraphTemplate graphTemplate = (GraphTemplate)template.getTemplate().get(j);
//String name =
SelectButton sb = new SelectButton(graphTemplate.getName()){
public void actionPerformed(Point2D point){
System.out.println(graphTemplate.getName());
}
public Object performedAction(Point2D point){
//return graphTemplate.getGraphTemplate();
return readGraphFile(graphTemplate.getFilename());
}
};
sb.setToolTipText(graphTemplate.getName());
jbg.add(sb);
panel.addMember(i, sb);
}
panel.addUserObject(i, jbg);
panel.getGroup(i).setMemberGap(50, 10);
}
}
if(panel.getGroupCount() > 0)
panel.expandGroup(0);
return panel;
}
public Vector readGraphFile(String s){
try {
XMLDecoder dec = new XMLDecoder(new BufferedInputStream(new FileInputStream(s)));
Vector vec = (Vector)dec.readObject();
dec.close();
return vec;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public JGroupPanel getGroupPanel(){
return group;
}
public void configureUI(){
Settings settings = Settings.createDefault();
Options.setDefaultIconSize(new Dimension(18, 18));
Options.setUseNarrowButtons(settings.isUseNarrowButtons());
// Global options
Options.setTabIconsEnabled(settings.isTabIconsEnabled());
UIManager.put(Options.POPUP_DROP_SHADOW_ENABLED_KEY,
settings.isPopupDropShadowEnabled());
// Swing Settings
LookAndFeel selectedLaf = settings.getSelectedLookAndFeel();
if (selectedLaf instanceof PlasticLookAndFeel) {
PlasticLookAndFeel.setPlasticTheme(settings.getSelectedTheme());
PlasticLookAndFeel.setTabStyle(settings.getPlasticTabStyle());
PlasticLookAndFeel.setHighContrastFocusColorsEnabled(
settings.isPlasticHighContrastFocusEnabled());
} else if (selectedLaf.getClass() == MetalLookAndFeel.class) {
MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
}
// Work around caching in MetalRadioButtonUI
JRadioButton radio = new JRadioButton();
radio.getUI().uninstallUI(radio);
JCheckBox checkBox = new JCheckBox();
checkBox.getUI().uninstallUI(checkBox);
try {
UIManager.setLookAndFeel(selectedLaf);
} catch (Exception e) {
System.out.println("Can't change L&F: " + e);
}
}
public static void main(String[] args){
JFrame frame = new JFrame();
final GroupPanel test = new GroupPanel();
JPanel control = new JPanel();
control.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
//System.out.println(e.getSource());
JGroupPanel panel = test.getGroupPanel();
//System.out.println(test.getGroupPanel());
//System.out.println(panel.getActiveGroup());//.getUserObject());
if(panel.getActiveGroup().toString().equals("业务模板")){
//System.out.println("1-------");
//System.out.println(panel.getMember(1, 0));
JGroupPanel gp = (JGroupPanel)panel.getMember(1, 0);
JGroupContainer container = gp.getActiveGroup();
//System.out.println("2-------");
//System.out.println(container);
//System.out.println(container.getUserObject());
//System.out.println("3-----------------");
JButtonGroup bg = (JButtonGroup)container.getUserObject();
if(bg.getSelected() != null){
System.out.println("4-----------------"+gp.getActiveGroupIndex());
((SelectButton)bg.getSelected()).doClick(e.getPoint());
bg.unSelectedAll();
//((SelectButton)bg.getSelected()).unSelect();
//container.addUserObject(bg);
//gp.addUserObject(gp.getActiveGroupIndex(), bg);
}
}
/*
JGroupContainer container = panel.getActiveGroup();
if(container != null){
JGroupPanel subGroup = (JGroupPanel)container.getMember(0);
System.out.println(subGroup.getActiveGroup());
System.out.println(subGroup.getActiveGroup().getUserObject());
JButtonGroup bg = (JButtonGroup)subGroup.getActiveGroup().getUserObject();
((SelectButton)bg.getSelected()).doClick(e.getPoint());
bg.unSelectedAll();
}*/
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
});
JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, test.getGroupPanel(), control);
sp.setDividerSize(10);
sp.setDividerLocation(150);
sp.setOpaque(true);
frame.getContentPane().setLayout(new BorderLayout());
frame.setSize(600, 400);
frame.getContentPane().add(sp, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -