libs-gdl2/EOInterface/EODisplayGroup.h

320 lines
9 KiB
C
Raw Permalink Normal View History

/** -*-ObjC-*-
EODisplayGroup.h
Copyright (C) 2004,2005 Free Software Foundation, Inc.
Author: David Ayers <ayers@fsfe.org>
This file is part of the GNUstep Database Library
The GNUstep Database 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 3,
or (at your option) any later version.
The GNUstep Database 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 the GNUstep Database Library; see the file COPYING. If not,
write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef __EOInterface_EODisplayGroup_h__
#define __EOInterface_EODisplayGroup_h__
#ifdef GNUSTEP
#include <Foundation/NSObject.h>
#else
#include <Foundation/Foundation.h>
#endif
@class NSString;
@class NSArray;
@class NSMutableArray;
@class NSDictionary;
@class NSMutableDictionary;
@class NSNotification;
@class EOEditingContext;
@class EODataSource;
@class EOQualifier;
@class EOAssociation;
@interface EODisplayGroup : NSObject <NSCoding>
{
@private
2005-05-12 Matt Rice <ratmice@yahoo.com> * ChangeLog: Fix previous ChangeLog entry. * EOInterface/EOActionAssociation.m: Implemented aspects enabled and action. (-establishConnection): Implement (-breakConnection, -subjectChanged, -action): Ditto. * EOInterface/EOAssociation.m (-associationClassesForObject:): Fixed argument passed to -isUsableWithObject:. Assign count (-init): Assign self. (-establishConnection:): Add unused local variable to pass to NSNextMapEnumeratorPair instead of 0. (-breakConnection:): Ditto. (-initWithCoder:, -encodeWithCoder:): Initial implementation of methods. (-valueForAspect:,-setValue:forAspect:,-valueForAspect:atIndex:): Ditto. (-setValueForAspect:atIndex:): Ditto. * EOInterface/SubclassFlags.h: New file. * EOInterface/EOAspectConnector.h/m: New file and implementation. * EOInterface/EOColumnAssociation.m: Implemented aspects value and enabled (-objectKeysTaken): Take identifier key. (-establishConnection, -breakConnection, -endEditing): Implement methods. (-tableView:setObjectValueForTableColumn:row:): Ditto. (-tableView:objectValueForTableColumn:row:): Ditto. (-tableView:willDisplayCell:forTableColumn:row:): Ditto. (-control:didFailToFormatString:errorDescription:): Ditto. (-control:textShouldBeginEditing:): Ditto. * EOInterface/EOControlAssociation.m: (-control): Ditto (-editingAssociation, -establishConnection, -breakConnection): Ditto. * EOInterface/EOGenericControlAssociation.m: Implemented aspects value and enabled. (+objectKeysTaken): add target key. (-establishConnection: -breakConnection:, -subjectChanged:): Ditto. (-_action:, -endEditing, -control:textShouldBeginEditing:): Ditto. * EOInterface/EOMatrixAssociation.m: Implemented aspects image, title, and enabled. (-establishConnection, -breakConnection, -subjectChanged): Ditto. * EOInterface/EOPopUpAssociation.m: Implemented aspects titles, selectedTitle, selectedTag, selectedObject, enabled. (-initWithObject:, -_action:): Implemented method. (-establishConnection:, -breakConnection, -subjectChanged): Ditto. * EOInterface/EORadioMatrixAssociation.m: Implemented aspects selectedTag, selectedTitle, enabled. (NSCell -_selectCellWithTitle:): Private category. (-initWithObject:, -_action:): Implemented method. (-establishConnection:, -breakConnection, -subjectChanged): Ditto. * EOInterface/EOTableViewAssociation.m: Implemented aspects enabled, tableView. (-establishConnection, -breakConnection, subjectChanged): Implement method. (-bindToTableView:displayGroup:, -editingAssociation): Ditto. (-numberOfRowsInTableView:): (-tableView:setObjectValue:forTableColumn:row:): Ditto. (-tableView:objectValueForTableColumn:row:): Ditto. (-tableView:shouldEditTableColumn:row:): Ditto. (-tableView:willDisplayCell:forTableColumn:row:): Ditto. (-tableView:selectionDidChange:): Ditto. (-control:didFailToFormatString:errorDescription:): Ditto. (-control:isValidObject:, -control:textShouldBeginEditing:): Ditto. (-dealloc): Ditto. * EOInterface/EOTextAssociation.m: Implemented aspect value, enabled. (-establishConnection): Implemented method. (-breakConnection, -subjectChanged, -endEditing): Ditto. (-control:isValidObject:,textShouldBeginEditing:): Ditto. (-textShouldEndEditing:): Ditto. * EOInterface/GNUmakefile: Make EOInterface a native-library, whitespace changes. * EOInterface/Makefile.preamble: Change linker flag to use FND_LIBS and GUI_LIBS variables. * EOInterface/EODisplayGroup.h: Comment on whether ivars are retained. * EOInterface/EODisplayGroup.m: (DG_SHOULD_CHANGE_SELECTION_TO_IDX): New macros. (DG_DISPLAY_ARRAY_FOR_OBJECTS, DG_SHOULD_DISPLAY_ALERT): Ditto. (DG_DID_FETCH_OBJECTS, DG_CREATE_OBJECT_FAILED): Ditto. (DG_SHOULD_INSERT_OBJECT, DG_DID_INSERT_OBJECT): Ditto. (DG_DID_CHANGE_SELECTION): Ditto. (NSArray -indexesForObjectsIdenticalTo:): Implement category method. (_presentAlertWithTitle:message:): New private methods. (-_endObserverNotification:): Implement notification observer methods. (-_beginObserverNotification:): Ditto. (-objectsInvalidatedInEditingContext:): Ditto. (-objectsChangedInEditingContext:): Ditto. (+initialize, -init, -initWithCoder:,): Implement methods. (-encodeWithCoder:, -setDataSource:, -fetch, -allObjects): Ditto. (-setObjectArray:, -redisplay, -updateDisplayedObjects): Ditto. (-selectionIndexes, -setSelectionIndexes, -selectObject): Ditto. (-selectObjectsIdenticalTo:, -clearSelection, -selectedObjects): Ditto. (-selectObjectsIdenticalTo:selectFirstOnNoMatch:): Ditto. (-setSelectedObjects, -selectedObject, -setSelectedObject:): Ditto. (-insertObjectAtIndex:, -insertObject:atIndex:): Ditto. (-setInsertedObjectDefaultValues:, -deleteSelection): Ditto. (-observingAssociations, -endEditing, -fetch:, -insert:): Ditto. (-selectionChanged, -contentsChanged, -valueForObject:key:): Ditto. (-selectedObjectValueForKey:, -valueForObjectAtIndex:): Ditto. (-setValue:forObject:key:, -setSelectedObjectValue:forKey:): Ditto. (-setValue:forObjectAtIndex:key:, -associationDidBeginEditing:): Ditto. (-associationDidEndEditing:): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@21222 72102866-910b-0410-8b05-ffd578937521
2005-05-12 19:55:41 +00:00
EODataSource *_dataSource; /*Retained*/
NSMutableArray *_allObjects;
NSMutableArray *_displayedObjects;
2005-05-12 Matt Rice <ratmice@yahoo.com> * ChangeLog: Fix previous ChangeLog entry. * EOInterface/EOActionAssociation.m: Implemented aspects enabled and action. (-establishConnection): Implement (-breakConnection, -subjectChanged, -action): Ditto. * EOInterface/EOAssociation.m (-associationClassesForObject:): Fixed argument passed to -isUsableWithObject:. Assign count (-init): Assign self. (-establishConnection:): Add unused local variable to pass to NSNextMapEnumeratorPair instead of 0. (-breakConnection:): Ditto. (-initWithCoder:, -encodeWithCoder:): Initial implementation of methods. (-valueForAspect:,-setValue:forAspect:,-valueForAspect:atIndex:): Ditto. (-setValueForAspect:atIndex:): Ditto. * EOInterface/SubclassFlags.h: New file. * EOInterface/EOAspectConnector.h/m: New file and implementation. * EOInterface/EOColumnAssociation.m: Implemented aspects value and enabled (-objectKeysTaken): Take identifier key. (-establishConnection, -breakConnection, -endEditing): Implement methods. (-tableView:setObjectValueForTableColumn:row:): Ditto. (-tableView:objectValueForTableColumn:row:): Ditto. (-tableView:willDisplayCell:forTableColumn:row:): Ditto. (-control:didFailToFormatString:errorDescription:): Ditto. (-control:textShouldBeginEditing:): Ditto. * EOInterface/EOControlAssociation.m: (-control): Ditto (-editingAssociation, -establishConnection, -breakConnection): Ditto. * EOInterface/EOGenericControlAssociation.m: Implemented aspects value and enabled. (+objectKeysTaken): add target key. (-establishConnection: -breakConnection:, -subjectChanged:): Ditto. (-_action:, -endEditing, -control:textShouldBeginEditing:): Ditto. * EOInterface/EOMatrixAssociation.m: Implemented aspects image, title, and enabled. (-establishConnection, -breakConnection, -subjectChanged): Ditto. * EOInterface/EOPopUpAssociation.m: Implemented aspects titles, selectedTitle, selectedTag, selectedObject, enabled. (-initWithObject:, -_action:): Implemented method. (-establishConnection:, -breakConnection, -subjectChanged): Ditto. * EOInterface/EORadioMatrixAssociation.m: Implemented aspects selectedTag, selectedTitle, enabled. (NSCell -_selectCellWithTitle:): Private category. (-initWithObject:, -_action:): Implemented method. (-establishConnection:, -breakConnection, -subjectChanged): Ditto. * EOInterface/EOTableViewAssociation.m: Implemented aspects enabled, tableView. (-establishConnection, -breakConnection, subjectChanged): Implement method. (-bindToTableView:displayGroup:, -editingAssociation): Ditto. (-numberOfRowsInTableView:): (-tableView:setObjectValue:forTableColumn:row:): Ditto. (-tableView:objectValueForTableColumn:row:): Ditto. (-tableView:shouldEditTableColumn:row:): Ditto. (-tableView:willDisplayCell:forTableColumn:row:): Ditto. (-tableView:selectionDidChange:): Ditto. (-control:didFailToFormatString:errorDescription:): Ditto. (-control:isValidObject:, -control:textShouldBeginEditing:): Ditto. (-dealloc): Ditto. * EOInterface/EOTextAssociation.m: Implemented aspect value, enabled. (-establishConnection): Implemented method. (-breakConnection, -subjectChanged, -endEditing): Ditto. (-control:isValidObject:,textShouldBeginEditing:): Ditto. (-textShouldEndEditing:): Ditto. * EOInterface/GNUmakefile: Make EOInterface a native-library, whitespace changes. * EOInterface/Makefile.preamble: Change linker flag to use FND_LIBS and GUI_LIBS variables. * EOInterface/EODisplayGroup.h: Comment on whether ivars are retained. * EOInterface/EODisplayGroup.m: (DG_SHOULD_CHANGE_SELECTION_TO_IDX): New macros. (DG_DISPLAY_ARRAY_FOR_OBJECTS, DG_SHOULD_DISPLAY_ALERT): Ditto. (DG_DID_FETCH_OBJECTS, DG_CREATE_OBJECT_FAILED): Ditto. (DG_SHOULD_INSERT_OBJECT, DG_DID_INSERT_OBJECT): Ditto. (DG_DID_CHANGE_SELECTION): Ditto. (NSArray -indexesForObjectsIdenticalTo:): Implement category method. (_presentAlertWithTitle:message:): New private methods. (-_endObserverNotification:): Implement notification observer methods. (-_beginObserverNotification:): Ditto. (-objectsInvalidatedInEditingContext:): Ditto. (-objectsChangedInEditingContext:): Ditto. (+initialize, -init, -initWithCoder:,): Implement methods. (-encodeWithCoder:, -setDataSource:, -fetch, -allObjects): Ditto. (-setObjectArray:, -redisplay, -updateDisplayedObjects): Ditto. (-selectionIndexes, -setSelectionIndexes, -selectObject): Ditto. (-selectObjectsIdenticalTo:, -clearSelection, -selectedObjects): Ditto. (-selectObjectsIdenticalTo:selectFirstOnNoMatch:): Ditto. (-setSelectedObjects, -selectedObject, -setSelectedObject:): Ditto. (-insertObjectAtIndex:, -insertObject:atIndex:): Ditto. (-setInsertedObjectDefaultValues:, -deleteSelection): Ditto. (-observingAssociations, -endEditing, -fetch:, -insert:): Ditto. (-selectionChanged, -contentsChanged, -valueForObject:key:): Ditto. (-selectedObjectValueForKey:, -valueForObjectAtIndex:): Ditto. (-setValue:forObject:key:, -setSelectedObjectValue:forKey:): Ditto. (-setValue:forObjectAtIndex:key:, -associationDidBeginEditing:): Ditto. (-associationDidEndEditing:): Ditto. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@21222 72102866-910b-0410-8b05-ffd578937521
2005-05-12 19:55:41 +00:00
id _delegate; /*Not Retained*/
NSArray *_selection;
NSArray *_sortOrdering;
EOQualifier *_qualifier;
NSArray *_localKeys;
NSMutableArray *_selectedObjects;
id _observerNotificationBeginProxy;
id _observerNotificationEndProxy;
int _updatedObjectIndex;
NSDictionary *_insertedObjectDefaultValues;
NSMutableArray *_savedAllObjects;
NSMutableDictionary *_queryMatch;
NSMutableDictionary *_queryMin;
NSMutableDictionary *_queryMax;
NSMutableDictionary *_queryOperator;
NSString *_defaultStringMatchOperator;
NSString *_defaultStringMatchFormat;
NSMutableDictionary *_queryBindings;
void *_reserved;
struct {
unsigned selectsFirstObjectAfterFetch:1;
unsigned didChangeContents:1;
unsigned didChangeSelection:1;
unsigned autoFetch:1;
unsigned haveFetched:1;
unsigned validateImmediately:1;
unsigned queryMode:1;
unsigned optimisticRefresh:1;
unsigned fetchAll:1;
unsigned _initialized:1;
unsigned _reserved:22;
} _flags;
EOAssociation *_editingAssociation;
}
/* Global configurations. */
+ (NSString *)globalDefaultStringMatchOperator;
+ (void)setGlobalDefaultStringMatchOperator: (NSString *)operator;
+ (BOOL)globalDefaultForValidatesChangesImmediately;
+ (void)setGlobalDefaultForValidatesChangesImmediately: (BOOL)flag;
/* Configuring behavior. */
- (BOOL)fetchesOnLoad;
- (void)setFetchesOnLoad: (BOOL)flag;
- (BOOL)selectsFirstObjectAfterFetch;
- (void)setSelectsFirstObjectAfterFetch: (BOOL)flag;
- (BOOL)validatesChangesImmediately;
- (void)setValidatesChangesImmediately: (BOOL)flag;
- (BOOL)usesOptimisticRefresh;
- (void)setUsesOptimisticRefresh: (BOOL)flag;
- (NSDictionary *)queryBindingValues;
- (void)setQueryBindingValues: (NSDictionary *)values;
- (NSDictionary *)queryOperatorValues;
- (void)setQueryOperatorValues: (NSDictionary *)values;
- (NSString *)defaultStringMatchFormat;
- (void)setDefaultStringMatchFormat: (NSString *)format;
- (NSString *)defaultStringMatchOperator;
- (void)setDefaultStringMatchOperator: (NSString *)operator;
/* Configuring data source. */
- (EODataSource *)dataSource;
- (void)setDataSource: (EODataSource *)dataSource;
/* Configuring qualifier. */
- (EOQualifier *)qualifier;
- (void)setQualifier: (EOQualifier *)qualifier;
/* Configuring sort orderings. */
- (NSArray *)sortOrderings;
- (void)setSortOrderings: (NSArray *)orderings;
/* Managing queries. */
- (EOQualifier *)qualifierFromQueryValues;
- (NSDictionary *)equalToQueryValues;
- (void)setEqualToQueryValues: (NSDictionary *)values;
- (NSDictionary *)greaterThanQueryValues;
- (void)setGreaterThanQueryValues: (NSDictionary *)values;
- (NSDictionary *)lessThanQueryValues;
- (void)setLessThanQueryValues: (NSDictionary *)values;
- (void)qualifyDisplayGroup;
- (void)qualifyDataSource;
- (BOOL)inQueryMode;
- (void)setInQueryMode: (BOOL)flag;
/* Fetching. */
- (BOOL)fetch;
/* Accessing objects. */
- (NSArray *)allObjects;
- (void)setObjectArray: (NSArray *)objects;
- (NSArray *)displayedObjects;
/* Updating displayed values. */
- (void)redisplay;
- (void)updateDisplayedObjects;
/* Manage selection. */
- (NSArray *)selectionIndexes;
- (BOOL)setSelectionIndexes: (NSArray *)selection;
- (BOOL)selectObject: (id)object;
- (BOOL)selectObjectsIdenticalTo: (NSArray *)selection;
- (BOOL)selectObjectsIdenticalTo: (NSArray *)selection
selectFirstOnNoMatch: (BOOL)flag;
- (BOOL)selectNext;
- (BOOL)selectPrevious;
- (BOOL)clearSelection;
- (NSArray *)selectedObjects;
- (void)setSelectedObjects: (NSArray *)objects;
- (id)selectedObject;
- (void)setSelectedObject: (id)object;
/* Inserting objects. */
- (id)insertObjectAtIndex: (unsigned)index;
- (void)insertObject: (id)object atIndex: (unsigned)index;
- (NSDictionary *)insertedObjectDefaultValues;
- (void)setInsertedObjectDefaultValues: (NSDictionary *)values;
/* Deleting objects. */
- (BOOL)deleteObjectAtIndex: (unsigned)index;
- (BOOL)deleteSelection;
/* Manage local keys. */
- (NSArray *)localKeys;
- (void)setLocalKeys: (NSArray *)keys;
/* Manage delegate. */
- (id)delegate;
- (void)setDelegate: (id)delegate;
/* Associations. */
- (NSArray *)observingAssociations;
- (EOAssociation *)editingAssociation;
- (BOOL)endEditing;
@end
@interface EODisplayGroup (EODisplayGroupTargetAction)
- (void)selectNext: (id)sender;
- (void)selectPrevious: (id)sender;
- (void)fetch: (id)sender;
- (void)insert: (id)sender;
- (void)delete: (id)sender;
- (void)qualifyDataSource: (id)sender;
- (void)qualifyDisplayGroup: (id)sender;
- (void)enterQueryMode: (id)sender;
@end
@interface EODisplayGroup (EOAssociationInteraction)
- (BOOL)selectionChanged;
- (BOOL)contentsChanged;
- (int)updatedObjectIndex;
- (id)valueForObject: (id)object key: (NSString *)key;
- (id)selectedObjectValueForKey: (NSString *)key;
- (id)valueForObjectAtIndex: (unsigned)index key: (NSString *)key;
- (BOOL)setValue: (id)value forObject: (id)object key: (NSString *)key;
- (BOOL)setSelectedObjectValue: (id)value forKey: (NSString *)key;
- (BOOL)setValue: (id)value forObjectAtIndex: (unsigned)index
key: (NSString *)key;
- (BOOL)enabledToSetSelectedObjectValueForKey:(NSString *)key;
- (BOOL)association: (EOAssociation *)association
failedToValidateValue: (NSString *)value
forKey: (NSString *)key
object: (id)object
errorDescription: (NSString *)description;
- (void)associationDidBeginEditing: (EOAssociation *)association;
- (void)associationDidEndEditing: (EOAssociation *)association;
@end
@interface EODisplayGroup (EOEditors)
- (BOOL)editorHasChangesForEditingContext: (EOEditingContext *)editingContext;
- (void)editingContextWillSaveChanges: (EOEditingContext *)editingContext;
@end
@interface EODisplayGroup (EOMessageHandlers)
- (void)editingContext: (EOEditingContext *)editingContext
presentErrorMessage: (NSString *)message;
@end
@interface NSObject (EODisplayGroupDelegate)
- (BOOL)displayGroup: (EODisplayGroup *)displayGroup
shouldRedisplayForEditingContextChangeNotification: (NSNotification *)notif;
- (BOOL)displayGroup: (EODisplayGroup *)displayGroup
shouldRefetchForInvalidatedAllObjectsNotification: (NSNotification *)notif;
- (BOOL)displayGroup: (EODisplayGroup *)displayGroup
shouldChangeSelectionToIndexes: (NSArray *)indices;
- (void)displayGroupDidChangeSelection: (EODisplayGroup *)displayGroup;
- (void)displayGroupDidChangeSelectedObjects: (EODisplayGroup *)displayGroup;
- (BOOL)displayGroupShouldFetch: (EODisplayGroup *)displayGroup;
- (void)displayGroup: (EODisplayGroup *)displayGroup
didFetchObjects: (NSArray *)objects;
- (NSArray *)displayGroup: (EODisplayGroup *)displayGroup
displayArrayForObjects: (NSArray *)objects;
- (void)displayGroup: (EODisplayGroup *)displayGroup
didSetValue: (id)value
forObject: (id)object
key: (NSString *)key;
- (void)displayGroup: (EODisplayGroup *)displayGroup
createObjectFailedForDataSource: (EODataSource *)dataSource;
- (BOOL)displayGroup: (EODisplayGroup *)displayGroup
shouldInsertObject: (id)object
atIndex: (unsigned)index;
- (void)displayGroup: (EODisplayGroup *)displayGroup
didInsertObject: (id)object;
- (BOOL)displayGroup: (EODisplayGroup *)displayGroup
shouldDeleteObject: (id)object;
- (void)displayGroup: (EODisplayGroup *)displayGroup
didDeleteObject: (id)object;
- (void)displayGroupDidChangeDataSource: (EODisplayGroup *)displayGroup;
- (BOOL)displayGroup: (EODisplayGroup *)displayGroup
shouldDisplayAlertWithTitle: (NSString *)title
message: (NSString *)message;
@end
#endif