/****************************************************************** * 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.lang.reflect.*; import javax.swing.*; import jade.core.AID; import jade.core.Agent; import jade.lang.acl.ACLMessage; import jade.util.leap.Iterator; /** * This class is used to edit a particular AID. * * @author Chris van Aart - Acklin B.V., the Netherlands * @created April 26, 2002 */ public class ACLAIDDialog extends JDialog { /** * Constructor for the ACLAIDDialog object * * @param agent link to agent */ public ACLAIDDialog(Agent agent) { this.agent = agent; this.setModal(true); try { this.resolverList = new ACLAIDList(agent); jbInit(); this.setSize(350, 250); setItsAID(new AID("", true)); } catch (Exception e) { e.printStackTrace(); } } /** * Gets the ItsAID attribute of the ACLAIDDialog object * * @return The ItsAID value */ public AID getItsAID() { return itsAID; } /** * Gets the OK attribute of the ACLAIDDialog object. OK is true when the * user has pressed the ob button of the dialog. * * @return The OK value */ public boolean getOK() { return userAction.equals(OK); } /** * Sets the Editable attribute of the ACLAIDDialog object * * @param theBool The new Editable value */ public void setEditable(boolean theBool) { if (!theBool) { OK = "CLOSED"; this.cancelButton.setVisible(false); this.nameTextField.setEnabled(false); this.localCheckBox.setEnabled(false); this.resolverList.setEditable(false); this.addressesList.setEditable(false); } } /** * Sets the ItsAID attribute of the ACLAIDDialog object * * @param newItsAID The new ItsAID value */ public void setItsAID(AID newItsAID) { itsAID = newItsAID; nameTextField.setText(itsAID.getName()); addressesList.register(itsAID); resolverList.register(itsAID, "Resolvers"); String name = itsAID.getName(); if ((name != null) && (!name.endsWith(agent.getHap()))) { this.localCheckBox.setSelected(true); } } /** * Sets the UserAction attribute of the ACLAIDDialog object * * @param newUserAction The new UserAction value */ public void setUserAction(String newUserAction) { userAction = newUserAction; } /** * Method triggered by the OK button * * @param e ActionEvent of the OK button */ void okButton_actionPerformed(ActionEvent e) { setUserAction(OK); this.setVisible(false); } /** * Method triggered by the cancel button * * @param e ActionEvent of the cancel button */ void cancelButton_actionPerformed(ActionEvent e) { setUserAction(CANCELLED); this.setVisible(false); } /** * Method triggered when leaving the textfield of "name" * * @param e FocusEvent of FocusLoust */ void nameTextField_focusLost(FocusEvent e) { updateSenderName(); } /** * Updates the name field of the current AID. The localCheckBox indicates * wheter the agent is local or not. */ void updateSenderName() { if (localCheckBox.isSelected()) { itsAID.setName(nameTextField.getText()); } else { itsAID.setLocalName(nameTextField.getText()); } } /** * Method triggered by changing the state of the checkbox of "local" * * @param e ItemEvent belonging to itemStateChanged */ void localCheckBox_itemStateChanged(ItemEvent e) { updateSenderName(); } /** * builds up the dialog * * @exception Exception thrown when someting goes wrong */ private void jbInit() throws Exception { jLabel1.setFont(new java.awt.Font("Dialog", 0, 11)); jLabel1.setText("sender:"); this.getContentPane().setLayout(gridBagLayout1); nameTextField.setFont(new java.awt.Font("Dialog", 0, 11)); nameTextField.setDisabledTextColor(Color.black); nameTextField.setText("someagent"); nameTextField.addFocusListener( new java.awt.event.FocusAdapter() { public void focusLost(FocusEvent e) { nameTextField_focusLost(e); } }); this.getContentPane().setBackground(Color.white); jLabel2.setFont(new java.awt.Font("Dialog", 0, 11)); jLabel2.setText("addresses:"); jLabel3.setFont(new java.awt.Font("Dialog", 0, 11)); jLabel3.setText("resolvers"); localCheckBox.setToolTipText("Select if the name is not a GUID."); localCheckBox.setBackground(Color.white); localCheckBox.setFont(new java.awt.Font("Dialog", 0, 11)); localCheckBox.addItemListener( new java.awt.event.ItemListener() { public void itemStateChanged(ItemEvent e) { localCheckBox_itemStateChanged(e); } }); okButton.setBackground(Color.white); okButton.setFont(new java.awt.Font("Dialog", 0, 12)); okButton.setText("ok"); okButton.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { okButton_actionPerformed(e); } }); cancelButton.setBackground(Color.white); cancelButton.setFont(new java.awt.Font("Dialog", 0, 12)); cancelButton.setText("cancel"); cancelButton.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { cancelButton_actionPerformed(e); } }); buttonPanel.setBackground(Color.white); this.getContentPane().add(nameTextField, new GridBagConstraints(2, 0, 1, 1, 1.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); this.getContentPane().add(addressesList, new GridBagConstraints(2, 1, 2, 1, 1.0, 1.0 , GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); this.getContentPane().add(jLabel1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 , GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); this.getContentPane().add(jLabel2, new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); this.getContentPane().add(resolverList, new GridBagConstraints(2, 2, 2, 1, 1.0, 1.0 , GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); this.getContentPane().add(jLabel3, new GridBagConstraints(0, 2, 2, 1, 0.0, 0.0 , GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); this.getContentPane().add(buttonPanel, new GridBagConstraints(0, 3, 4, 1, 1.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); buttonPanel.add(okButton, null); buttonPanel.add(cancelButton, null); this.getContentPane().add(localCheckBox, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0 , GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); } public JCheckBox localCheckBox = new JCheckBox(); private GridBagLayout gridBagLayout1 = new GridBagLayout(); private JLabel jLabel1 = new JLabel(); private JTextField nameTextField = new JTextField(); private JLabel jLabel2 = new JLabel(); private JLabel jLabel3 = new JLabel(); private JPanel buttonPanel = new JPanel(); private JButton okButton = new JButton(); private JButton cancelButton = new JButton(); private String OK = "ok"; private String CANCELLED = "cancelled"; private AIDAddressList addressesList = new AIDAddressList(); private boolean editable = true; private String userAction = CANCELLED; private ACLAIDList resolverList; private Agent agent; private jade.core.AID itsAID; } // ***EOF***