* DBModeler/Inspectors/AttributeInspector.[hm]: Merge private

dictionarys without conflicting keys.  Replace Integer/Double
        types with a generic Number type.
        * DBModeler/Inspectors/AttributeInspector.gorm: Update interface
        for 'Number'.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@23536 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Matt Rice 2006-09-16 18:58:33 +00:00
parent 05f8a3e375
commit 45d6b72c04
5 changed files with 61 additions and 82 deletions

View file

@ -9,10 +9,16 @@
* DBModeler/GNUmakefile: Add new file.
* DBModeler/DefaultColumnProvider.m: Set column header image.
* DBModeler/Inspectors/AttributeInspector.h/m: implement valueType
* DBModeler/Inspectors/AttributeInspector.[hm]: Implement valueType
pop-up button, and add macro to clean up some code.
* DBModeler/Inspectors/AttributeInspector.gorm: Ditto.
* DBModeler/Inspectors/AttributeInspector.[hm]: Merge private
dictionarys without conflicting keys. Replace Integer/Double
types with a generic Number type.
* DBModeler/Inspectors/AttributeInspector.gorm: Update interface
for 'Number'.
2006-09-16 David Ayers <ayers@fsfe.org>
* EOAccess/EOAttribute.[hm]: Add documentation.

View file

@ -2,7 +2,7 @@
"## Comment" = "Do NOT change this file, Gorm maintains it";
AttributeInspector = {
Actions = (
"setValueClassNameAndType:",
"selectInternalDataType:",
"setExternalName:",
"setExternalType:",
"setName:",
@ -25,8 +25,7 @@
_dataFlip,
_dateFlip,
_decimalFlip,
_doubleFlip,
_integerFlip,
_numberFlip,
_stringFlip,
_internalData,
_custom_arg,
@ -64,7 +63,7 @@
"setName:",
"setPrecision:",
"setTimeZone:",
"setValueClassNameAndType:",
"selectInternalDataType:",
"setWidth:"
);
Super = NSObject;

View file

@ -20,17 +20,13 @@
NSDictionary *_flipDict;
NSDictionary *_classTitleDict;
NSDictionary *_titleClassDict;
NSDictionary *_valueTypeTitleDict;
NSDictionary *_valueTypeDict;
NSDictionary *_typeValueDict;
IBOutlet NSBox *_customFlip; // default
IBOutlet NSBox *_dataFlip;
IBOutlet NSBox *_dateFlip;
IBOutlet NSBox *_decimalFlip;
IBOutlet NSBox *_doubleFlip;
IBOutlet NSBox *_integerFlip;
IBOutlet NSBox *_numberFlip;
IBOutlet NSBox *_stringFlip;
NSTextField *_custom_width;
@ -49,10 +45,10 @@
NSButton *_date_tz;
}
/* generic */
- (IBAction) selectInternalDataType:(id)sender;
- (IBAction) setName:(id)sender;
- (IBAction) setExternalName:(id)sender;
- (IBAction) setExternalType:(id)sender;
- (IBAction) setValueClassNameAndType:(id)sender;
/* dependent on value class name */
- (IBAction) setWidth:(id)sender;
@ -61,7 +57,7 @@
- (IBAction) setFactoryMethod:(id)sender;
- (IBAction) setConversionMethod:(id)sender;
- (IBAction) setInitArgument:(id)sender;
- (IBAction) setValueType:(id)sender;
- (IBAction) setTimeZone:(id)sender;
@end

View file

@ -14,29 +14,23 @@
_dataFlip, @"Data",
_dateFlip, @"Date",
_decimalFlip, @"Decimal Number",
_doubleFlip, @"Double",
_integerFlip, @"Integer",
_numberFlip, @"Number",
nil];
_valueTypeDict =
[[NSDictionary alloc] initWithObjectsAndKeys:
@"", @"",
@"c", @"char",
@"C", @"unsigned char",
@"s", @"short",
@"S", @"unsigned short",
@"i", @"int",
@"d", @"double",
@"f", @"float",
@"c", @"char",
@"s", @"short",
@"I", @"unsigned int",
@"C", @"unsigned char",
@"S", @"unsigned short",
@"l", @"long",
@"L", @"unsigned long",
@"u", @"long long",
@"U", @"unsigned long long",
@"f", @"float",
@"d", @"double",
nil];
_typeValueDict =
[[NSDictionary alloc] initWithObjectsAndKeys:
@"", @"",
@"char", @"c",
@"unsigned char", @"C",
@"short", @"s",
@ -51,36 +45,19 @@
@"double", @"d",
nil];
/*
* class name = key, pop-up item = value,
* "Custom" is not found,
* double and integer are both NSNumbers, but handled specially,
* double is the default if a value type is not specified.
*/
_classTitleDict =
[[NSDictionary alloc] initWithObjectsAndKeys:
@"String", @"NSString",
@"Data", @"NSData",
@"Double", @"NSNumber", // Integer and Double, Double is default.
@"Number", @"NSNumber",
@"Date", @"NSCalendarDate",
@"Decimal Number", @"NSDecimalNumber",
nil];
_titleClassDict =
[[NSDictionary alloc] initWithObjectsAndKeys:
@"NSString", @"String",
@"NSData", @"Data",
@"NSNumber", @"Double",
@"NSNumber", @"Integer",
@"NSNumber", @"Number",
@"NSDecimalNumber", @"Decimal Number",
@"NSCalendarDate", @"Date",
nil];
_valueTypeTitleDict =
[[NSDictionary alloc] initWithObjectsAndKeys:
@"d", @"Double",
@"i", @"Integer",
nil];
}
- (NSString *) _titleForPopUp
@ -89,31 +66,16 @@
NSString *valueType = [(EOAttribute *)[self selectedObject] valueType];
NSString *ret;
if (valueType)
{
if ([vcn isEqual: @"NSNumber"])
{
if ([valueType isEqual:@"d"])
return @"Double";
else if ([valueType isEqual:@"i"])
return @"Integer";
}
}
ret = [_classTitleDict objectForKey:vcn];
if (!ret)
return @"Custom";
ret = [_classTitleDict objectForKey:vcn];
if (!ret)
return @"Custom";
return ret;
}
- (NSString *)_valueTypeForTitle:(NSString *)title
{
return [_valueTypeTitleDict objectForKey:title];
return ret;
}
- (NSString *)_classNameForTitle:(NSString *)title
{
return [_titleClassDict objectForKey:title];
return [_classTitleDict objectForKey:title];
}
- (NSBox *) _viewForTitle:(NSString *)title
@ -141,21 +103,29 @@
[(EOAttribute *)[self selectedObject] setExternalType:[sender stringValue]];
}
- (IBAction) setValueClassNameAndType:(id)sender;
- (IBAction) selectInternalDataType:(id)sender;
{
EOAttribute *obj = [self selectedObject];
NSString *title = [_flipSelect titleOfSelectedItem];
NSString *className = [self _classNameForTitle:title];
NSString *valueType = [self _valueTypeForTitle:title];
if (![[obj valueClassName] isEqual:className])
{
[obj setValueClassName:className];
}
if (![[obj valueType] isEqual:valueType])
if ([className isEqual:@"NSNumber"])
{
[obj setValueType:valueType];
if (![obj valueType])
{
[obj setValueType:@"d"];
}
}
else
{
[obj setValueType:@""];
}
[self refresh];
}
@ -164,14 +134,10 @@
EOAttribute *obj = [self selectedObject];
NSString *title = [self _titleForPopUp];
NSBox *flipTo = [self _viewForTitle:title];
NSString *valType = [obj valueType];
NSString *valueTypeName =
[_typeValueDict objectForKey: valType ? valType : @""];
[_nameField setStringValue:[obj name]];
[_extNameField setStringValue:[obj columnName]];
[_extTypeField setStringValue:[obj externalType]];
[_valueTypeSelect selectItemWithTitle:valueTypeName];
[_flipSelect selectItemWithTitle:title];
[flipTo setFrame: [_flipView frame]];
[_internalData replaceSubview:_flipView with:flipTo];
@ -212,13 +178,19 @@
}
- (void) updateInteger
- (void) updateNumber
{
EOAttribute *obj = [self selectedObject];
NSString *valType = [obj valueType];
NSString *valueTypeName;
valueTypeName = [_valueTypeDict objectForKey: valType];
[_valueTypeSelect selectItemWithTitle:valueTypeName];
}
- (void) updateDate
{
// fixme
}
- (void) updateData
@ -229,11 +201,6 @@
NO_ZEROS(_data_width, tmp);
}
- (void) updateDouble;
{
}
- (BOOL) canInspectObject:(id)obj
{
return [obj isKindOfClass:[EOAttribute class]];
@ -241,8 +208,19 @@
- (IBAction) setValueType:(id)sender
{
id valueType = [_valueTypeDict objectForKey:[sender titleOfSelectedItem]];
[(EOAttribute *)[self selectedObject] setValueType:valueType];
EOAttribute *obj = [self selectedObject];
NSString *valueType;
if (sender == _valueTypeSelect)
{
valueType = [_valueTypeDict objectForKey:[sender titleOfSelectedItem]];
}
else if (sender == self)
{
valueType = @"";
}
[obj setValueType:valueType];
}
- (IBAction) setTimeZone:(id)sender;
@ -262,7 +240,7 @@
- (IBAction) setClassName:(id)sender;
{
[[self selectedObject] setValueClassName:[sender stringValue]];
[(EOAttribute *)[self selectedObject] setValueClassName:[sender stringValue]];
}
- (IBAction) setFactoryMethod:(id)sender;