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

📄 aidgui.java

📁 java实现的P2P多agent中间件
💻 JAVA
字号:
/*****************************************************************
JADE - Java Agent DEvelopment Framework is a framework to develop
multi-agent systems in compliance with the FIPA specifications.
Copyright (C) 2000 CSELT S.p.A.

GNU Lesser General Public License

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation,
version 2.1 of the License.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA  02111-1307, USA.
*****************************************************************/

package jade.gui;

//#J2ME_EXCLUDE_FILE

import javax.swing.*;
import java.awt.event.*;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.Color;
import java.awt.Dialog;
import java.awt.Component;
import java.util.Enumeration;
import java.util.Properties;

import java.io.StringWriter;

import jade.core.AID;
import jade.domain.FIPAAgentManagement.*;

/**
 This class provide a gui to show an AID of an agent.
 @see jade.core.AID
 @author Tiziana Trucco - CSELT S.p.A.
 @version $Date: 2005-04-15 17:45:02 +0200 (ven, 15 apr 2005) $ $Revision: 5669 $

*/

 public class AIDGui extends JDialog{

 	/**
  @serial
  */
  private boolean editable, checkSlots;
 	/**
  @serial
  */
  private AID agentAID;
 	/**
  @serial
  */
  private JTextField nameText;

  private JCheckBox isLocalName;

 	/**
  @serial
  */
  private VisualStringList addressListPanel;
 	/**
  @serial
  */
  private VisualAIDList resolverListPanel;
 	/**
  @serial
  */
  private VisualPropertiesList	propertiesListPanel;
 	/**
  @serial
  */
  private AID out;

  /**
  @serial
  */
  private Component parentGUI;

  /**
  @serial
  */
  private AIDGui thisGUI;

     /**
	Create a dialog with the given parent.
	@param owner The parent component of this dialog.
     */
 	public AIDGui(Component owner)
 	{
   super();
   setTitle("AID");
   parentGUI = owner;
   thisGUI = this;
 	}



 /**
 This method shows an AID with a GUI.
 @param agentIdentifier is the AID to be shown
 @param editable is true when the AID can be edited
 @param checkMandatorySlots is true when the returned AID must contain all the mandatory slots, as defined by FIPA specs
 @return null if the user pushs the Cancel button, an AID otherwise
 **/
 	public AID ShowAIDGui(AID agentIdentifier, boolean ed, boolean checkMandatorySlots)
 	{
 	  this.out = null;
 		this.editable = ed;
 	  this.checkSlots = checkMandatorySlots;

 		if(agentIdentifier == null)
 			this.agentAID =  new AID();
 		else
 		  this.agentAID = agentIdentifier;

 		JLabel label;

 		JPanel mainPanel = new JPanel();

 		mainPanel.setLayout(new BoxLayout(mainPanel,BoxLayout.Y_AXIS));
//mainPanel.setBackground(Color.black);

 		//Name
 		JPanel namePanel = new JPanel();
 	  namePanel.setLayout(new BoxLayout(namePanel,BoxLayout.X_AXIS));
 	  label = new JLabel("NAME");
 	  label.setPreferredSize(new Dimension(80,26));
 	  label.setMinimumSize(new Dimension(80,26));
    label.setMaximumSize(new Dimension(80,26));
    namePanel.add(label);

    isLocalName = new JCheckBox();
    isLocalName.setVisible(ed); //if the AID is editable then the checkbox is show otherwise no.
  	isLocalName.setToolTipText("Select if the name is not a GUID.");

    namePanel.add(isLocalName);
    nameText = new JTextField();
    nameText.setBackground(Color.white);
    nameText.setText(agentAID.getName());
    nameText.setPreferredSize(new Dimension(125,26));
    nameText.setMinimumSize(new Dimension(125,26));
    nameText.setMaximumSize(new Dimension(125,26));
 	  nameText.setEditable(editable);
 		namePanel.add(nameText);

 		mainPanel.add(namePanel);


 		//Addresses
 		JPanel addressesPanel = new JPanel();
 		addressesPanel.setLayout(new BorderLayout());
		addressesPanel.setBorder(BorderFactory.createTitledBorder("Addresses"));
		//#DOTNET_EXCLUDE_BEGIN
    addressListPanel = new VisualStringList(agentAID.getAllAddresses(),parentGUI);
		//#DOTNET_EXCLUDE_END
		/*#DOTNET_INCLUDE_BEGIN
		java.util.ArrayList aList = new java.util.ArrayList();
		jade.util.leap.Iterator it = agentAID.getAllAddresses();
		while ( it.hasNext() )
		{
			aList.add( it.next() );
		}
	addressListPanel = new VisualStringList(aList.iterator(),parentGUI);
		#DOTNET_INCLUDE_END*/
    addressListPanel.setDimension(new Dimension(200,40));
    addressListPanel.setEnabled(editable);
 		addressesPanel.add(addressListPanel);
 		mainPanel.add(addressesPanel);


 		//Resolvers
 		JPanel resolversPanel = new JPanel();
 		resolversPanel.setLayout(new BorderLayout());
 		resolversPanel.setBorder(BorderFactory.createTitledBorder("Resolvers"));
		//#DOTNET_EXCLUDE_BEGIN
 	  resolverListPanel = new VisualAIDList(agentAID.getAllResolvers(),parentGUI);
		//#DOTNET_EXCLUDE_END
		/*#DOTNET_INCLUDE_BEGIN
		java.util.ArrayList bList = new java.util.ArrayList();
		jade.util.leap.Iterator it2 = agentAID.getAllResolvers();
		while ( it2.hasNext() )
		{
			bList.add( it2.next() );
		}
	  resolverListPanel = new VisualAIDList(bList.iterator(),parentGUI);
		#DOTNET_INCLUDE_END*/
 	  resolverListPanel.setDimension(new Dimension(200,40));
 	  resolverListPanel.setEnabled(editable);
 	  resolverListPanel.setCheckMandatorySlots(checkMandatorySlots);
 	  resolversPanel.add(resolverListPanel);
 		mainPanel.add(resolversPanel);


 		//Properties
 		JPanel propertiesPanel = new JPanel();
 	  propertiesPanel.setLayout(new BorderLayout());
 		propertiesPanel.setBorder(BorderFactory.createTitledBorder("Properties"));
 		propertiesListPanel = new VisualPropertiesList(agentAID.getAllUserDefinedSlot(),parentGUI);
 		propertiesListPanel.setDimension(new Dimension(200,40));
 		propertiesListPanel.setEnabled(editable);
 		propertiesPanel.add(propertiesListPanel);
 		mainPanel.add(propertiesPanel);

 		//Button Ok-Cancel
 		JPanel buttonPanel = new JPanel();
 		buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
 		JButton okButton = new JButton("OK");
 		okButton.addActionListener(new ActionListener()
 			{
 				public void actionPerformed(ActionEvent e)
 				{
 					String param = (String)e.getActionCommand();
 					if(param.equals("OK"))
 					{

 						if(editable)
 						{

 						  String name = (nameText.getText()).trim();
 						  if (checkSlots)
 						    if (name.length() == 0) {
    		  				JOptionPane.showMessageDialog(thisGUI,"AID must have a non-empty name.","Error Message",JOptionPane.ERROR_MESSAGE);
    		  				return;
    		  			}
 						  out = new AID();

 						  if(isLocalName.isSelected())
 						  	out.setLocalName(name);
 						  else
 						  	out.setName(name);

 						  //addresses
 						  Enumeration addresses = addressListPanel.getContent();

 						  while(addresses.hasMoreElements())
 						  	out.addAddresses((String)addresses.nextElement());
 						  //resolvers
 						  Enumeration resolvers = resolverListPanel.getContent();
 						  while(resolvers.hasMoreElements())
 						  	out.addResolvers((AID)resolvers.nextElement());
 						  //Properties
 						  Properties new_prop = propertiesListPanel.getContentProperties();
 						  Enumeration key_en = new_prop.propertyNames();
 						  while(key_en.hasMoreElements())
 						  {
 						  	String key = (String)key_en.nextElement();
 						  	out.addUserDefinedSlot(key, new_prop.getProperty(key));
 						  }


 						}
 						else
 						  out = agentAID;
 						dispose();
 					}
 				}
 			});

 		buttonPanel.add(okButton);

 		if(editable)
 		{
 			JButton cancelButton = new JButton("Cancel");
 			cancelButton.addActionListener(new ActionListener(){
 				public void actionPerformed(ActionEvent e)
 				{
 					String param = e.getActionCommand();
 					if(param.equals("Cancel"))
 					{
 						out = null;
 						dispose();
 					}
 				}
 			});
 			buttonPanel.add(cancelButton);
 		}

 		mainPanel.add(buttonPanel);


 		getContentPane().add(mainPanel, BorderLayout.CENTER);
 		//pack();
 		setResizable(false);
 		setModal(true);
 		//setVisible(true);

 		ShowCorrect();

 		return out;
 	}

 	private void ShowCorrect()
 	 {
    pack();
    setLocation(parentGUI.getX() + (parentGUI.getWidth() - getWidth()) / 2, parentGUI.getY() + (parentGUI.getHeight() - getHeight()) / 2);
    setVisible(true);
    toFront();
 	 }

 }

⌨️ 快捷键说明

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