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

📄 hoofdscherm.java

📁 P2P模拟器P2Psim的程序源码
💻 JAVA
字号:
package gui;

import javax.swing.*;
import java.awt.*;
import org.jgraph.graph.DefaultGraphModel;
import org.jgraph.graph.DefaultGraphCell;

import org.jgraph.plaf.basic.BasicGraphUI.MouseHandler;

import java.net.URL;
import java.util.LinkedList;

import graph.GraphEventManager;

public class Hoofdscherm extends JFrame 
{
	private javax.swing.JSplitPane splitPane0, splitPane1, splitPane2;	

	private InfoJPanel infoJPanel;
	private CommandJPanel commandJPanel;	
	private JScrollPane graphLayoutCache;
	private JPanel contents;


	private MyGraphListener myGraphListener;
	private ButtonListener buttonListener;
	
	
	private NetworkGraph networkGraph;



	public Hoofdscherm()
	{
		super("Simulation of a P2P network"); 
		
		networkGraph = new NetworkGraph(new DefaultGraphModel());
		
		//setSizeable(), setBendable()
		//networkGraph.setSizeable(false);
		networkGraph.setBendable(false);
		//System.out.println(networkGraph.getScale());
		//networkGraph.setScale(networkGraph.getScale()*2);
		//System.out.println(networkGraph.getScale());
		
		setButtonListener(new ButtonListener());
		
		MouseHandler mh = (MouseHandler)networkGraph.getMouseListeners()[0];
		networkGraph.removeMouseListener(mh);
		
		setMyGraphListener(new MyGraphListener(mh));
		networkGraph.addMouseListener(getMyGraphListener());
		//networkGraph.addMouseListener(mh);
		
		networkGraph.addGraphSelectionListener(getMyGraphListener());
		
		contents=new JPanel(new GridLayout());
		setSize(1280,750);
		contents.setOpaque(false);
		setResizable(true);
		
		commandJPanel=new CommandJPanel(getButtonListener());
		infoJPanel=new InfoJPanel();
		
		createMenuBar();
		//createToolBar();
		
		//$frameListener=new FrameListener();
		//addWindowListener($frameListener);
		
		splitPane0 = new javax.swing.JSplitPane(javax.swing.JSplitPane.VERTICAL_SPLIT);
		splitPane1 = new javax.swing.JSplitPane(javax.swing.JSplitPane.HORIZONTAL_SPLIT);
		splitPane2 = new javax.swing.JSplitPane(javax.swing.JSplitPane.VERTICAL_SPLIT);
		
		splitPane0.setOneTouchExpandable(false);
		splitPane1.setOneTouchExpandable(true);
		splitPane2.setOneTouchExpandable(false);
		splitPane2.setEnabled(false);
		splitPane0.setEnabled(false);

		splitPane0.setMinimumSize(new java.awt.Dimension(75, 75));
		splitPane1.setMinimumSize(new java.awt.Dimension(200, 200));
		splitPane2.setMinimumSize(new java.awt.Dimension(200, 200));
		
		//JLabel label1 = new JLabel("info", JLabel.CENTER);			
		contents.add(splitPane0, splitPane0.getName());


		splitPane2.setRightComponent(getInfoJPanel());
		splitPane2.setLeftComponent(getCommandJPanel());
		splitPane1.setLeftComponent(splitPane2);
				
		graphLayoutCache = new JScrollPane(networkGraph);
		splitPane1.setRightComponent(graphLayoutCache);
		
		splitPane0.setRightComponent(splitPane1);
		splitPane0.setLeftComponent(createToolBar());
		
		splitPane0.setDividerSize(1);
		splitPane2.setDividerSize(1);
		
		//contents.add(createToolBar());
		
		setContentPane(contents);
	
		//createToolBar();
	
	}
	
	public void updateModel(DefaultGraphModel model)
	{
		networkGraph.setModel(model);	
	}
	
	public void updateInfoJPanel(DefaultGraphCell dgc)
	{
		this.getInfoJPanel().updateInformation(dgc);
	}
	
	public NetworkGraph getNetworkGraph()
	{
		return networkGraph;
	}
	

	public ButtonListener getButtonListener()
	{
		return buttonListener;
	}

	public void setButtonListener(ButtonListener buttonListener)
	{
		this.buttonListener = buttonListener;
	}

	private void createMenuBar()
	{
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		menuBar.setOpaque(true);
		menuBar.setPreferredSize(new Dimension(200, 20));
		menuBar.add(createFileMenu());
		menuBar.add(createNodesMenu());
		menuBar.add(createEdgesMenu());
		menuBar.add(createAgentsMenu());
		menuBar.add(createToolsMenu());
		menuBar.add(createHelpMenu());
	}
	
	private JToolBar createToolBar()
	{
		JButton button = null;
		
		JToolBar toolBar = new JToolBar("Still draggable");
		toolBar.setFloatable(false);
		toolBar.setRollover(true);	

		toolBar.setPreferredSize(new Dimension(20, 20));
		getContentPane().add(toolBar, BorderLayout.PAGE_START);
	
		//Look for the image.
		String imgLocation;
		ImageIcon icon;
		Image image; 
		URL url;
		
		// new random graph button
		
		url = Hoofdscherm.class.getClassLoader().getResource("icons/new.gif"); 
		image = Toolkit.getDefaultToolkit().getImage(url);
		icon = new ImageIcon(image, "alttext");
		button = new JButton();
		button.setActionCommand("New random networkgraph");
		button.setToolTipText("New random networkgraph");
		button.setIcon(icon);
		button.addActionListener(buttonListener);
		toolBar.add(button);

		url = Hoofdscherm.class.getClassLoader().getResource("icons/open.gif"); 
		image = Toolkit.getDefaultToolkit().getImage(url);
		icon = new ImageIcon(image, "alttext");
		button = new JButton();
		button.setActionCommand("Open existing networkgraph");
		button.setToolTipText("Open existing networkgraph");
		button.setIcon(icon);
		button.addActionListener(buttonListener);
		toolBar.add(button);
		
		url = Hoofdscherm.class.getClassLoader().getResource("icons/save.gif"); 
		image = Toolkit.getDefaultToolkit().getImage(url);
		icon = new ImageIcon(image, "alttext");
		button = new JButton();
		button.setActionCommand("Save current networkgraph");
		button.setToolTipText("Save current networkgraph");
		button.setIcon(icon);
		button.addActionListener(buttonListener);
		toolBar.add(button);
			
		toolBar.addSeparator();
	
		url = Hoofdscherm.class.getClassLoader().getResource("icons/pointer.gif"); 
		image = Toolkit.getDefaultToolkit().getImage(url);
		icon = new ImageIcon(image, "alttext");
		button = new JButton();
		button.setActionCommand("Selection");
		button.setToolTipText("Selection");
		button.setIcon(icon);
		button.addActionListener(getMyGraphListener());
		toolBar.add(button);
	
		toolBar.addSeparator();
		
		url = Hoofdscherm.class.getClassLoader().getResource("icons/node_new.gif"); 
		image = Toolkit.getDefaultToolkit().getImage(url);
		icon = new ImageIcon(image, "alttext");
		button = new JButton();
		button.setActionCommand("New node");
		button.setToolTipText("New node");
		button.setIcon(icon);
		button.addActionListener(getMyGraphListener());
		toolBar.add(button);
	
		url = Hoofdscherm.class.getClassLoader().getResource("icons/node_remove.gif"); 
		image = Toolkit.getDefaultToolkit().getImage(url);
		icon = new ImageIcon(image, "alttext");
		button = new JButton();
		button.setActionCommand("Remove node");
		button.setToolTipText("Remove node");
		button.setIcon(icon);
		button.addActionListener(getMyGraphListener());
		toolBar.add(button);
	
		toolBar.addSeparator();
	
		url = Hoofdscherm.class.getClassLoader().getResource("icons/edge_new.gif"); 
		image = Toolkit.getDefaultToolkit().getImage(url);
		icon = new ImageIcon(image, "alttext");
		button = new JButton();
		button.setActionCommand("New edge");
		button.setToolTipText("New edge");
		button.setIcon(icon);
		button.addActionListener(getMyGraphListener());
		toolBar.add(button);
	
		url = Hoofdscherm.class.getClassLoader().getResource("icons/edge_remove.gif"); 
		image = Toolkit.getDefaultToolkit().getImage(url);
		icon = new ImageIcon(image, "alttext");
		button = new JButton();
		button.setActionCommand("Remove edge");
		button.setToolTipText("Remove edge");
		button.setIcon(icon);
		button.addActionListener(getMyGraphListener());
		toolBar.add(button);
		
		toolBar.addSeparator();
	
		url = Hoofdscherm.class.getClassLoader().getResource("icons/zoom_in.gif"); 
		image = Toolkit.getDefaultToolkit().getImage(url);
		icon = new ImageIcon(image, "alttext");
		button = new JButton();
		button.setActionCommand("Zoom in");
		button.setToolTipText("Zoom in");
		button.setIcon(icon);
		button.addActionListener(buttonListener);
		toolBar.add(button);
	
		url = Hoofdscherm.class.getClassLoader().getResource("icons/zoom_out.gif"); 
		image = Toolkit.getDefaultToolkit().getImage(url);
		icon = new ImageIcon(image, "alttext");
		button = new JButton();
		button.setActionCommand("Zoom out");
		button.setToolTipText("Zoom out");
		button.setIcon(icon);
		button.addActionListener(buttonListener);
		toolBar.add(button);
	
		toolBar.addSeparator();
	
		url = Hoofdscherm.class.getClassLoader().getResource("icons/analyse.gif"); 
		image = Toolkit.getDefaultToolkit().getImage(url);
		icon = new ImageIcon(image, "alttext");
		button = new JButton();
		button.setActionCommand("Analyse requests");
		button.setToolTipText("Analyse requests");
		button.setIcon(icon);
		button.addActionListener(buttonListener);
		toolBar.add(button);
	
		return toolBar;
	
	}

	
	private JMenu createFileMenu()
	{
		JMenuItem item;
		JMenu optieMenu=new JMenu("File");
		
		//item=new JMenuItem("New Graph");
		//item.addActionListener(buttonListener);
		//optieMenu.add(item);
			
		item=new JMenuItem("New random networkgraph");
		item.addActionListener(buttonListener);
		item.setActionCommand("New random networkgraph");
		optieMenu.add(item);
		
		item=new JMenuItem("New networkgraph from graph");
		item.addActionListener(buttonListener);
		item.setActionCommand("New networkgraph from graph");
		optieMenu.add(item);
		
		optieMenu.addSeparator();
		
		item=new JMenuItem("Open existing networkgraph");
		item.addActionListener(buttonListener);
		item.setActionCommand("Open existing networkgraph");
		optieMenu.add(item);
		
		item=new JMenuItem("Save current networkgraph");
		item.addActionListener(buttonListener);
		item.setActionCommand("Save current networkgraph");
		optieMenu.add(item);
		
		optieMenu.addSeparator();
		
		item=new JMenuItem("Exit");
		item.addActionListener(buttonListener);
		item.setActionCommand("Exit");
		optieMenu.add(item);
		
		return optieMenu;
	}
	
	
	private JMenu createHelpMenu()
	{
		JMenuItem item;
		JMenu helpMenu=new JMenu("Help");
		
		item=new JMenuItem("Help");
		item.addActionListener(buttonListener);
		item.setActionCommand("Help");
		helpMenu.add(item);
		
		item=new JMenuItem("About");
		item.addActionListener(buttonListener);
		item.setActionCommand("About");
		helpMenu.add(item);
		
		return helpMenu;
	}
	
	private JMenu createNodesMenu()
	{
		JMenuItem item;
		JMenu showMenu=new JMenu("Nodes");
	
		JMenu submenu = new JMenu("Show (on top)");

		item = new JMenuItem("Gradient");
		item.addActionListener(buttonListener);
		item.setActionCommand("Gradient");
		submenu.add(item);

		item = new JMenuItem("Pheromones");
		item.addActionListener(buttonListener);
		item.setActionCommand("Pheromones");
		submenu.add(item);

		showMenu.add(submenu);
		
		submenu = new JMenu("Show resources");

		item = new JMenuItem("All resources");
		item.addActionListener(buttonListener);
		item.setActionCommand("All resources");
		submenu.add(item);

		item = new JMenuItem("Select 1 resource");
		item.addActionListener(buttonListener);
		item.setActionCommand("Select 1 resource");
		submenu.add(item);

		showMenu.add(submenu);
		
		showMenu.addSeparator();
		
		item = new JMenuItem("Add random resources");
		item.addActionListener(buttonListener);
		item.setActionCommand("Add random resources");
		showMenu.add(item);

		showMenu.addSeparator();

		item = new JMenuItem("Remove all gradient-fields");
		item.addActionListener(buttonListener);
		item.setActionCommand("Remove all gradient-fields");
		showMenu.add(item);

		item = new JMenuItem("Construct all gradient-fields");
		item.addActionListener(buttonListener);
		item.setActionCommand("Construct all gradient-fields");
		showMenu.add(item);
	
		showMenu.addSeparator();
	
		submenu = new JMenu("Auto-generate search-request");

		item = new JMenuItem("No requests");
		item.addActionListener(buttonListener);
		item.setActionCommand("No requests");
		submenu.add(item);

		item = new JMenuItem("Some requests");
		item.addActionListener(buttonListener);
		item.setActionCommand("Some requests");
		submenu.add(item);

		item = new JMenuItem("Many requests");
		item.addActionListener(buttonListener);
		item.setActionCommand("Many requests");
		submenu.add(item);

		showMenu.add(submenu);
		
	
		return showMenu;
	}
	
	private JMenu createEdgesMenu()
	{
		JMenuItem item;
		JMenu showMenu=new JMenu("Edges");

		JMenu submenu = new JMenu("Show");

		item = new JMenuItem("All");
		item.addActionListener(buttonListener);
		item.setActionCommand("All");
		submenu.add(item);

		item = new JMenuItem("Path to resource ...");
		item.addActionListener(buttonListener);
		item.setActionCommand("Path to resource ...");
		submenu.add(item);

		showMenu.add(submenu);

		return showMenu;
	}
	
	private JMenu createAgentsMenu()
	{
		JMenuItem item;
		JMenu agentsMenu=new JMenu("Agents");

		LinkedList types = (LinkedList) GraphEventManager.getAgentLibrary().getAgentTypes();
		
		for (int i=0; i<types.size(); i++)
		{
			System.out.println("Adding type " + types.get(i));
			item=new JMenuItem((String)types.get(i));
			item.addActionListener(buttonListener);
			item.setActionCommand((String)types.get(i));
			agentsMenu.add(item);
		}
		
		return agentsMenu;
	}
	
	private JMenu createToolsMenu()
	{
		JMenuItem item;
		JMenu toolsMenu=new JMenu("Tools");
		
		item=new JMenuItem("Apply layout-algorithm");
		item.addActionListener(buttonListener);
		item.setActionCommand("Apply layout-algorithm");
		toolsMenu.add(item);
	
		JMenu submenu = new JMenu("Resource-Library");

		item = new JMenuItem("Add new resource");
		item.addActionListener(buttonListener);
		item.setActionCommand("Add new resource");
		submenu.add(item);
	
		toolsMenu.add(submenu);
	
		return toolsMenu;
	}

	public CommandJPanel getCommandJPanel()
	{
		return commandJPanel;
	}

	public void setCommandJPanel(CommandJPanel commandJPanel)
	{
		this.commandJPanel = commandJPanel;
	}

	public InfoJPanel getInfoJPanel()
	{
		return infoJPanel;
	}

	public void setInfoJPanel(InfoJPanel infoJPanel)
	{
		this.infoJPanel = infoJPanel;
	}

	public MyGraphListener getMyGraphListener()
	{
		return myGraphListener;
	}

	public void setMyGraphListener(MyGraphListener myGraphListener)
	{
		this.myGraphListener = myGraphListener;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -