/* Wotonomy: OpenStep design patterns for pure Java applications. Copyright (C) 2001 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; import java.util.List; import net.wotonomy.control.EODataSource; import net.wotonomy.foundation.NSArray; import net.wotonomy.foundation.NSNotification; /** * A display group delegate that prints messages for each * of the delegate methods. * * @author michael@mpowers.net * @author $Author: cgruber $ * @version $Revision: 904 $ */ public class DebuggingDelegate implements EODisplayGroup.Delegate { /** * Called when the specified data source fails * to create an object for the specified display group. */ public void displayGroupCreateObjectFailed ( EODisplayGroup aDisplayGroup, EODataSource aDataSource ) { report( "displayGroupCreateObjectFailed", aDisplayGroup, new Object[] { aDataSource } ); } /** * Called after the specified display group's * data source is changed. */ public void displayGroupDidChangeDataSource ( EODisplayGroup aDisplayGroup ) { report( "displayGroupDidChangeDataSource", aDisplayGroup, new Object[] { } ); } /** * Called after the specified display group's * selection has changed. */ public void displayGroupDidChangeSelectedObjects ( EODisplayGroup aDisplayGroup ) { report( "displayGroupDidChangeSelectedObjects", aDisplayGroup, new Object[] { } ); } /** * Called after the specified display group's * selection has changed. */ public void displayGroupDidChangeSelection ( EODisplayGroup aDisplayGroup ) { report( "displayGroupDidChangeSelection", aDisplayGroup, new Object[] { } ); } /** * Called after the specified object display group's * selection has changed. */ public void displayGroupDidDeleteObject ( EODisplayGroup aDisplayGroup, Object anObject ) { report( "displayGroupDidDeleteObject", aDisplayGroup, new Object[] { anObject } ); } /** * Called after the specified display group * has fetched the specified object list. */ public void displayGroupDidFetchObjects ( EODisplayGroup aDisplayGroup, List anObjectList ) { report( "displayGroupDidFetchObjects", aDisplayGroup, new Object[] { anObjectList } ); } /** * Called after the specified display group * has inserted the specified object into * its internal object list. */ public void displayGroupDidInsertObject ( EODisplayGroup aDisplayGroup, Object anObject ) { report( "displayGroupDidInsertObject", aDisplayGroup, new Object[] { anObject } ); } /** * Called after the specified display group * has set the specified value for the specified * object and key. */ public void displayGroupDidSetValueForObject ( EODisplayGroup aDisplayGroup, Object aValue, Object anObject, String aKey ) { report( "displayGroupDidSetValueForObject", aDisplayGroup, new Object[] { aValue, anObject, aKey } ); } /** * Called by the specified display group to * determine what objects should be displayed * for the objects in the specified list. * @return An NSArray containing the objects * to be displayed for the objects in the * specified list. */ public NSArray displayGroupDisplayArrayForObjects ( EODisplayGroup aDisplayGroup, List aList ) { return get( "displayGroupDisplayArrayForObjects", aDisplayGroup, aList ); } /** * Called by the specified display group before * it attempts to change the selection. * This implementation returns true. * @return True to allow the selection to change, * false otherwise. */ public boolean displayGroupShouldChangeSelection ( EODisplayGroup aDisplayGroup, List aSelectionList ) { return ask( "displayGroupShouldChangeSelection", aDisplayGroup, new Object[] { aSelectionList } ); } /** * Called by the specified display group before * it attempts to delete the specified object. * This implementation returns true. * @return True to allow the object to be deleted * false to prevent the deletion. */ public boolean displayGroupShouldDeleteObject ( EODisplayGroup aDisplayGroup, Object anObject ) { return ask( "displayGroupShouldDeleteObject", aDisplayGroup, new Object[] { anObject } ); } /** * Called by the specified display group before * it attempts display the specified alert to * the user. * This implementation returns true. * @return True to allow the message to be * displayed, false if you want to handle the * alert yourself and suppress the display group's * notification. */ public boolean displayGroupShouldDisplayAlert ( EODisplayGroup aDisplayGroup, String aTitle, String aMessage ) { return ask( "displayGroupShouldDisplayAlert", aDisplayGroup, new Object[] { aTitle, aMessage } ); } /** * Called by the specified display group before * it attempts fetch objects. * This implementation returns true. * @return True to allow the fetch to take place, * false to prevent the fetch. */ public boolean displayGroupShouldFetch ( EODisplayGroup aDisplayGroup ) { return ask( "displayGroupShouldFetch", aDisplayGroup, new Object[] { } ); } /** * Called by the specified display group before * it attempts to insert the specified object. * This implementation returns true. * @return True to allow the object to be inserted * false to prevent the insertion. */ public boolean displayGroupShouldInsertObject ( EODisplayGroup aDisplayGroup, Object anObject, int anIndex ) { return ask( "displayGroupShouldInsertObject", aDisplayGroup, new Object[] { anObject, new Integer( anIndex ) } ); } /** * No idea what this might indicate, * nor what the notification indicates. * This implementation returns true. */ public boolean displayGroupShouldRedisplay ( EODisplayGroup aDisplayGroup, NSNotification aNotification ) { return ask( "displayGroupShouldRedisplay", aDisplayGroup, new Object[] { aNotification } ); } /** * No idea what this might indicate, * nor what the notification indicates. */ public boolean displayGroupShouldRefetch ( EODisplayGroup aDisplayGroup, NSNotification aNotification ) { return ask( "displayGroupShouldRefetch", aDisplayGroup, new Object[] { aNotification } ); } /** * This method is called by all delegate methods that * return void. * This implementation calls System.out.println. * Override to customize or replace the output. */ protected void report( String aTitle, EODisplayGroup aDisplayGroup, Object[] aParameterArray ) { String result = aTitle + " : " + aDisplayGroup; for ( int i = 0; i < aParameterArray.length; i++ ) { result += " : " + aParameterArray[i]; } System.out.println( result ); } /** * This method is called by displayGroupDisplayArrayForObjects. * This implementation calls report * and returns a copy of the specified list. */ protected NSArray get( String aTitle, EODisplayGroup aDisplayGroup, List anObjectList ) { report( aTitle, aDisplayGroup, new Object[] { anObjectList } ); return new NSArray( anObjectList ); } /** * This method is called by the methods that * return a boolean. * This implementation calls report and return true. */ protected boolean ask( String aTitle, EODisplayGroup aDisplayGroup, Object[] aParameterArray ) { report( aTitle, aDisplayGroup, aParameterArray ); return true; } } /* * $Log$ * Revision 1.2 2006/02/18 23:14:35 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 2001/01/24 14:37:24 mpowers * Contributing a delegate useful for debugging. * * */