/* Wotonomy: OpenStep design patterns for pure Java applications. Copyright (C) 2000 Intersect Software Corporation 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; either version 2.1 of the License, or (at your option) any later version. 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, see http://www.gnu.org */ package net.wotonomy.ui.swing; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import net.wotonomy.foundation.NSArray; import net.wotonomy.foundation.NSSelector; import net.wotonomy.foundation.internal.WotonomyException; import net.wotonomy.ui.EODisplayGroup; /** * ActionAssociation binds any ActionEvent broadcaster (typically Buttons and * the like) to a display group, but invokes actions directly on the bound * display group rather than the selected objects. Bindings are: * * * @author michael@mpowers.net * @author $Author: cgruber $ * @version $Revision: 904 $ */ public class DisplayGroupActionAssociation extends ActionAssociation { static final NSArray aspects = new NSArray( new Object[] { ActionAspect, ArgumentAspect, EnabledAspect, VisibleAspect }); static final NSArray aspectSignatures = new NSArray(new Object[] { AttributeToOneAspectSignature, AttributeToOneAspectSignature, AttributeToOneAspectSignature, AttributeToOneAspectSignature }); static final NSArray objectKeysTaken = new NSArray(new Object[] { "target" }); static NSSelector addActionListener = new NSSelector("addActionListener", new Class[] { ActionListener.class }); static NSSelector removeActionListener = new NSSelector("removeActionListener", new Class[] { ActionListener.class }); /** * Constructor specifying the object to be controlled by this association. Does * not establish connection. */ public DisplayGroupActionAssociation(Object anObject) { super(anObject); } // interface ActionListener public void actionPerformed(ActionEvent evt) { EODisplayGroup actionDisplayGroup = null; String actionKey = null; // action aspect actionDisplayGroup = displayGroupForAspect(ActionAspect); if (actionDisplayGroup != null) { actionKey = displayGroupKeyForAspect(ActionAspect); // TODO: argument aspect not implemented try { NSSelector.invoke(actionKey, actionDisplayGroup); } catch (Exception exc) { throw new WotonomyException("DisplayGroupActionAssociation: " + "error invoking action: " + actionKey, exc); } } } } /* * $Log$ Revision 1.2 2006/02/18 23:19:05 cgruber Update imports and maven * dependencies. * * Revision 1.1 2006/02/16 13:22:22 cgruber Check in all sources in * eclipse-friendly maven-enabled packages. * * Revision 1.2 2003/08/06 23:07:52 chochos general code cleanup (mostly, * removing unused imports) * * Revision 1.1.1.1 2000/12/21 15:48:46 mpowers Contributing wotonomy. * * Revision 1.3 2000/12/20 16:25:40 michael Added log to all files. * * */