/****************************************************************** * JADE - Java Agent DEvelopment Framework is a framework to develop * multi-agent systems in compliance with the FIPA specifications. * Copyright (C) 2002 TILAB S.p.A. * * This file is donated by Acklin B.V. to the JADE project. * * * 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.tools.gui; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import jade.core.AID; import jade.core.Agent; import jade.lang.acl.ACLMessage; import jade.tools.sl.SLFormatter; /** * display an ACLMessage in a Frame * * @author Chris van Aart - Acklin B.V., the Netherlands * @created April 26, 2002 */ public class ACLFrame extends JFrame { /** * Constructor for the ACLFrame object * * @param agent Description of Parameter */ public ACLFrame(Agent agent) { this.agent = agent; try { aclPanel = new ACLPanel(agent); jbInit(); this.setSize(300, 500); setFrameIcon("images/details.gif"); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation(screenSize.width / 2 - this.getSize().width / 2, screenSize.height / 2 - this.getSize().height / 2); } catch (Exception e) { e.printStackTrace(); } } /** * show the ACLMessage, disabled * * @param theMsg the ACLMessage to be displayed * @param agent the agent */ public static void show(ACLMessage theMsg, Agent agent) { ACLFrame theFrame = new ACLFrame(agent); theFrame.setMsg(theMsg); theFrame.disableACLPanel(); } /** * Sets the ACLMessage of the Frame * * @param msg The ACLMessage */ public void setMsg(ACLMessage msg) { aclPanel.setReadOnly(); aclPanel.setItsMsg(msg); String theSender = msg.getSender().getLocalName(); String theReceiver = "<none>"; if (msg.getAllReceiver().hasNext()) { theReceiver = ((AID)msg.getAllReceiver().next()).getLocalName(); } String theTitle = "(" + msg.getPerformative(msg.getPerformative()) + ": from " + theSender + " to " + theReceiver + ")"; this.setTitle(theTitle); this.setVisible(true); } /** * disable editing of ACLmessage */ public void disableACLPanel() { aclPanel.setReadOnly(); } /** * Description of the Method * * @param e Description of Parameter */ void closeButton_actionPerformed(ActionEvent e) { doExit(); } /** * Description of the Method * * @param e Description of Parameter */ void exitMenuItem_actionPerformed(ActionEvent e) { doExit(); } /** * Description of the Method */ void doExit() { this.setVisible(false); } /** * Description of the Method * * @param e Description of Parameter */ void systemoutMenuItem_actionPerformed(ActionEvent e) { doSystemOut(); } /** * Description of the Method */ void doSystemOut() { aclPanel.doSystemOut(); } /** * Description of the Method * * @param e Description of Parameter */ void saveMenuItem_actionPerformed(ActionEvent e) { aclPanel.saveACL(); } /** * Sets the FrameIcon attribute of the ACLFrame object * * @param iconpath The new FrameIcon value */ private void setFrameIcon(String iconpath) { ImageIcon image = new ImageIcon(this.getClass().getResource(iconpath)); setIconImage(image.getImage()); } /** * Description of the Method * * @exception Exception Description of Exception */ private void jbInit() throws Exception { this.getContentPane().setBackground(Color.white); this.setJMenuBar(theMenuBar); this.getContentPane().setLayout(gridBagLayout1); closeButton.setBackground(Color.white); closeButton.setFont(new java.awt.Font("Dialog", 0, 10)); closeButton.setText("close"); closeButton.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { closeButton_actionPerformed(e); } }); buttonPanel.setBackground(Color.white); fileMenu.setBackground(Color.white); fileMenu.setFont(new java.awt.Font("Dialog", 0, 12)); fileMenu.setMnemonic('F'); fileMenu.setText("File"); saveMenuItem.setBackground(Color.white); saveMenuItem.setFont(new java.awt.Font("Dialog", 0, 12)); saveMenuItem.setActionCommand("Save as"); saveMenuItem.setMnemonic('S'); saveMenuItem.setText("Save As..."); saveMenuItem.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { saveMenuItem_actionPerformed(e); } }); exitMenuItem.setBackground(Color.white); exitMenuItem.setFont(new java.awt.Font("Dialog", 0, 12)); exitMenuItem.setMnemonic('E'); exitMenuItem.setText("Exit"); exitMenuItem.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { exitMenuItem_actionPerformed(e); } }); toolsMenu.setBackground(Color.white); toolsMenu.setFont(new java.awt.Font("Dialog", 0, 12)); toolsMenu.setText("Tools"); systemoutMenuItem.setBackground(Color.white); systemoutMenuItem.setFont(new java.awt.Font("Dialog", 0, 12)); systemoutMenuItem.setMnemonic('S'); systemoutMenuItem.setText("System.out"); systemoutMenuItem.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { systemoutMenuItem_actionPerformed(e); } }); theMenuBar.setBackground(Color.white); theMenuBar.setFont(new java.awt.Font("Dialog", 0, 12)); this.getContentPane().add(aclPanel, new GridBagConstraints(0, 0, 2, 1, 1.0, 1.0 , GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); this.getContentPane().add(buttonPanel, new GridBagConstraints(0, 1, 2, 1, 1.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); buttonPanel.add(closeButton, null); theMenuBar.add(fileMenu); theMenuBar.add(toolsMenu); fileMenu.add(saveMenuItem); fileMenu.addSeparator(); fileMenu.add(exitMenuItem); toolsMenu.add(systemoutMenuItem); } private GridBagLayout gridBagLayout1 = new GridBagLayout(); private JPanel buttonPanel = new JPanel(); private JButton closeButton = new JButton(); private JMenuBar theMenuBar = new JMenuBar(); private JMenu fileMenu = new JMenu(); private JMenuItem saveMenuItem = new JMenuItem(); private JMenuItem exitMenuItem = new JMenuItem(); private JMenu toolsMenu = new JMenu(); private JMenuItem systemoutMenuItem = new JMenuItem(); private ACLPanel aclPanel; private ACLMessage msg; private Agent agent; } // ***EOF***