⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grouppanel.java

📁 JGraph扩展应用。自定义Renderer,自定义视图View实现自定义工作流控件
💻 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 + -