2005-05-13 00:25:27 +00:00
|
|
|
/**
|
|
|
|
AdaptorsPanel.m
|
|
|
|
|
2007-01-05 16:17:04 +00:00
|
|
|
Author: Matt Rice <ratmice@gmail.com>
|
2005-05-13 00:25:27 +00:00
|
|
|
Date: Apr 2005
|
|
|
|
|
|
|
|
This file is part of DBModeler.
|
|
|
|
|
|
|
|
<license>
|
|
|
|
DBModeler is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
2007-07-12 06:39:22 +00:00
|
|
|
the Free Software Foundation; either version 3 of the License, or
|
2005-05-13 00:25:27 +00:00
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
DBModeler 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 General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with DBModeler; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
</license>
|
|
|
|
**/
|
|
|
|
|
|
|
|
#include "AdaptorsPanel.h"
|
|
|
|
#include <AppKit/AppKit.h>
|
2008-05-09 20:21:17 +00:00
|
|
|
|
|
|
|
#include <GNUstepBase/GNUstep.h>
|
|
|
|
|
2005-05-13 00:25:27 +00:00
|
|
|
static NSArray *_adaptorNames;
|
|
|
|
|
|
|
|
@implementation AdaptorsPanel
|
|
|
|
|
|
|
|
- (void) dealloc
|
|
|
|
{
|
|
|
|
DESTROY(_window);
|
|
|
|
DESTROY(_adaptorNames);
|
|
|
|
/* released by window
|
|
|
|
_label
|
|
|
|
brws_adaptors
|
|
|
|
btn_ok
|
|
|
|
btn_cancel
|
|
|
|
*/
|
|
|
|
[super dealloc];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (id) init
|
|
|
|
{
|
* DBModeler/AdaptorsPanel.m (-init): Add parenthesis around
assignment. Replace label with window title.
(-runAdaptorsPanel:): Remove unused variable.
* DBModeler/DefaultColumnProvider.m: Add missing braces, remove
unused ivars.
(-cellForColumnNamed:): Autorelease cells.
* DBModeler/EOAdditions.m: New EOAttribute KVC methods -allowNull and
-setAllowNull:.
* DBModeler/GNUmakefile: Add new to project.
* DBModeler/KVDataSource.m (-createObject:): Return nil after
throwing exception.
* DBModeler/MainModelEditor.m
(-dragImageForRows:event:dragImageOffset:):: Enable drag and
drop for relationships.
(-initWithDocument:): Add parenthesis around assignment. Don't
release the document window on close.
(-ecStuff:): temporarily reload everything in the outline view when
something changes.
(-viewSelectedObject:): Remove NSLog. Rewrite editor activation.
Fix leaks.
* DBModeler/Modeler.m (-applicationWillFinishLaunching:): Add new menu
items. Don't order our menu in.
(-new:,-open:): Move document initializition to _newDocumentWithModel:.
(-_newDocumentWithModel:,-newFromDatabase:): New methods.
(-validateMenuItem:,-generateSQL:): Ditto.
* DBModeler/ModelerAttributeEditor.m (-initWithParentEditor:):
Remove unused variables.
(-displayGroupDidChangeSelection:): return early if there is no
longer a selection.
* DBModeler/ModelerEntityEditor.m:
(-canSupportCurrentSelection): Remove NSLog.
(-displayGroupDidChangeSelection:): Ditto.
(-dealloc:): New method.
(-initWithParentEditor:): Remove unused variables. Add parens around
assignment. Release local variables.
* DBModeler/ModelerTableEmbedibleEditor:
(-addDefaultTableColumnsForTableView:displayGroup:): Release table
columns.
(-addTableColumnForItem:tableView:): Ditto.
* DBModeler/Inspectors/RelationshipInspector.m:
(-selectedEntity, -selectedDestinationAttribute): New methods.
(-selectedSourceAttribute, -indexOfSourceAttribute:): Ditto.
(-indexOfDestinationAttribute:,joinWithSource:destination:): Ditto.
(-selectedJoin:,updateConnectButton,): Ditto.
(-refresh): Rewrite using new methods.
(-numberOfRowsInTableView:): Add fallback return value.
(-tableView:objectValueForTableColumn:row:): Ditto.
(-tableView:selectionDidChange:): If a source or destination
attribute is now selected, select its counterpart.
(-tableView:shouldSelectRow:): New method to disallow entity
selection if there is a destination entity.
(-tableView:willDisplayCell:forTableColumn:row:): New method,
set the cell text color to disabled text color, if we would disallow
selection.
(-connectionChanged:): Implement disconnection.
* DBModeler/SQLGenerator.h/m: New files initial implementation.
* DBModeler/Resources/SQLGenerator.gorm: Ditto.
* DBModeler/ConsistencyChecker.h/m: Ditto.
* DBModeler/ConsistencyResults.h/m: Ditto.
* DBModeler/ConsistencyResults.gorm: Ditto.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@21438 72102866-910b-0410-8b05-ffd578937521
2005-07-09 02:07:42 +00:00
|
|
|
if ((self = [super init]))
|
2005-05-13 00:25:27 +00:00
|
|
|
{
|
2007-01-10 12:13:37 +00:00
|
|
|
NSRect fr1, fr2;
|
2005-05-13 00:25:27 +00:00
|
|
|
_adaptorNames = RETAIN([EOAdaptor availableAdaptorNames]);
|
|
|
|
/* redo all these numbers so buttons and labels are on the right? */
|
|
|
|
_window = [[NSWindow alloc]
|
|
|
|
initWithContentRect: NSMakeRect(200,200,200,300)
|
|
|
|
styleMask: NSBorderlessWindowMask | NSTitledWindowMask
|
|
|
|
backing: NSBackingStoreBuffered
|
|
|
|
defer: YES];
|
* DBModeler/AdaptorsPanel.m (-init): Add parenthesis around
assignment. Replace label with window title.
(-runAdaptorsPanel:): Remove unused variable.
* DBModeler/DefaultColumnProvider.m: Add missing braces, remove
unused ivars.
(-cellForColumnNamed:): Autorelease cells.
* DBModeler/EOAdditions.m: New EOAttribute KVC methods -allowNull and
-setAllowNull:.
* DBModeler/GNUmakefile: Add new to project.
* DBModeler/KVDataSource.m (-createObject:): Return nil after
throwing exception.
* DBModeler/MainModelEditor.m
(-dragImageForRows:event:dragImageOffset:):: Enable drag and
drop for relationships.
(-initWithDocument:): Add parenthesis around assignment. Don't
release the document window on close.
(-ecStuff:): temporarily reload everything in the outline view when
something changes.
(-viewSelectedObject:): Remove NSLog. Rewrite editor activation.
Fix leaks.
* DBModeler/Modeler.m (-applicationWillFinishLaunching:): Add new menu
items. Don't order our menu in.
(-new:,-open:): Move document initializition to _newDocumentWithModel:.
(-_newDocumentWithModel:,-newFromDatabase:): New methods.
(-validateMenuItem:,-generateSQL:): Ditto.
* DBModeler/ModelerAttributeEditor.m (-initWithParentEditor:):
Remove unused variables.
(-displayGroupDidChangeSelection:): return early if there is no
longer a selection.
* DBModeler/ModelerEntityEditor.m:
(-canSupportCurrentSelection): Remove NSLog.
(-displayGroupDidChangeSelection:): Ditto.
(-dealloc:): New method.
(-initWithParentEditor:): Remove unused variables. Add parens around
assignment. Release local variables.
* DBModeler/ModelerTableEmbedibleEditor:
(-addDefaultTableColumnsForTableView:displayGroup:): Release table
columns.
(-addTableColumnForItem:tableView:): Ditto.
* DBModeler/Inspectors/RelationshipInspector.m:
(-selectedEntity, -selectedDestinationAttribute): New methods.
(-selectedSourceAttribute, -indexOfSourceAttribute:): Ditto.
(-indexOfDestinationAttribute:,joinWithSource:destination:): Ditto.
(-selectedJoin:,updateConnectButton,): Ditto.
(-refresh): Rewrite using new methods.
(-numberOfRowsInTableView:): Add fallback return value.
(-tableView:objectValueForTableColumn:row:): Ditto.
(-tableView:selectionDidChange:): If a source or destination
attribute is now selected, select its counterpart.
(-tableView:shouldSelectRow:): New method to disallow entity
selection if there is a destination entity.
(-tableView:willDisplayCell:forTableColumn:row:): New method,
set the cell text color to disabled text color, if we would disallow
selection.
(-connectionChanged:): Implement disconnection.
* DBModeler/SQLGenerator.h/m: New files initial implementation.
* DBModeler/Resources/SQLGenerator.gorm: Ditto.
* DBModeler/ConsistencyChecker.h/m: Ditto.
* DBModeler/ConsistencyResults.h/m: Ditto.
* DBModeler/ConsistencyResults.gorm: Ditto.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@21438 72102866-910b-0410-8b05-ffd578937521
2005-07-09 02:07:42 +00:00
|
|
|
[_window setTitle: @"Select adaptor"];
|
2007-01-10 12:13:37 +00:00
|
|
|
[_window setReleasedWhenClosed:NO];
|
* DBModeler/AdaptorsPanel.m (-init): Add parenthesis around
assignment. Replace label with window title.
(-runAdaptorsPanel:): Remove unused variable.
* DBModeler/DefaultColumnProvider.m: Add missing braces, remove
unused ivars.
(-cellForColumnNamed:): Autorelease cells.
* DBModeler/EOAdditions.m: New EOAttribute KVC methods -allowNull and
-setAllowNull:.
* DBModeler/GNUmakefile: Add new to project.
* DBModeler/KVDataSource.m (-createObject:): Return nil after
throwing exception.
* DBModeler/MainModelEditor.m
(-dragImageForRows:event:dragImageOffset:):: Enable drag and
drop for relationships.
(-initWithDocument:): Add parenthesis around assignment. Don't
release the document window on close.
(-ecStuff:): temporarily reload everything in the outline view when
something changes.
(-viewSelectedObject:): Remove NSLog. Rewrite editor activation.
Fix leaks.
* DBModeler/Modeler.m (-applicationWillFinishLaunching:): Add new menu
items. Don't order our menu in.
(-new:,-open:): Move document initializition to _newDocumentWithModel:.
(-_newDocumentWithModel:,-newFromDatabase:): New methods.
(-validateMenuItem:,-generateSQL:): Ditto.
* DBModeler/ModelerAttributeEditor.m (-initWithParentEditor:):
Remove unused variables.
(-displayGroupDidChangeSelection:): return early if there is no
longer a selection.
* DBModeler/ModelerEntityEditor.m:
(-canSupportCurrentSelection): Remove NSLog.
(-displayGroupDidChangeSelection:): Ditto.
(-dealloc:): New method.
(-initWithParentEditor:): Remove unused variables. Add parens around
assignment. Release local variables.
* DBModeler/ModelerTableEmbedibleEditor:
(-addDefaultTableColumnsForTableView:displayGroup:): Release table
columns.
(-addTableColumnForItem:tableView:): Ditto.
* DBModeler/Inspectors/RelationshipInspector.m:
(-selectedEntity, -selectedDestinationAttribute): New methods.
(-selectedSourceAttribute, -indexOfSourceAttribute:): Ditto.
(-indexOfDestinationAttribute:,joinWithSource:destination:): Ditto.
(-selectedJoin:,updateConnectButton,): Ditto.
(-refresh): Rewrite using new methods.
(-numberOfRowsInTableView:): Add fallback return value.
(-tableView:objectValueForTableColumn:row:): Ditto.
(-tableView:selectionDidChange:): If a source or destination
attribute is now selected, select its counterpart.
(-tableView:shouldSelectRow:): New method to disallow entity
selection if there is a destination entity.
(-tableView:willDisplayCell:forTableColumn:row:): New method,
set the cell text color to disabled text color, if we would disallow
selection.
(-connectionChanged:): Implement disconnection.
* DBModeler/SQLGenerator.h/m: New files initial implementation.
* DBModeler/Resources/SQLGenerator.gorm: Ditto.
* DBModeler/ConsistencyChecker.h/m: Ditto.
* DBModeler/ConsistencyResults.h/m: Ditto.
* DBModeler/ConsistencyResults.gorm: Ditto.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@21438 72102866-910b-0410-8b05-ffd578937521
2005-07-09 02:07:42 +00:00
|
|
|
|
2005-05-13 00:25:27 +00:00
|
|
|
brws_adaptors = [[NSBrowser alloc] initWithFrame: NSMakeRect(5,30,190,240)];
|
|
|
|
[brws_adaptors setDelegate: self];
|
|
|
|
[brws_adaptors addColumn];
|
|
|
|
[brws_adaptors setTitle: @"Available adaptors" ofColumn: 0];
|
|
|
|
[brws_adaptors setAllowsEmptySelection: NO];
|
|
|
|
[brws_adaptors setTarget:self];
|
|
|
|
[brws_adaptors setDoubleAction:@selector(ok:)];
|
|
|
|
|
|
|
|
btn_ok = [[NSButton alloc] initWithFrame: NSMakeRect(5,5,50,20)];
|
|
|
|
[btn_ok setTitle: @"ok"];
|
|
|
|
[btn_ok setTarget: self];
|
|
|
|
[btn_ok setAction: @selector(ok:)];
|
|
|
|
|
|
|
|
btn_cancel = [[NSButton alloc] initWithFrame: NSMakeRect(60,5,50,20)];
|
|
|
|
[btn_cancel setTitle: @"cancel"];
|
|
|
|
[btn_cancel setTarget: self];
|
|
|
|
[btn_cancel setAction: @selector(cancel:)];
|
|
|
|
|
|
|
|
[[_window contentView] addSubview: brws_adaptors];
|
|
|
|
[[_window contentView] addSubview: btn_ok];
|
|
|
|
[[_window contentView] addSubview: btn_cancel];
|
2007-01-10 12:13:37 +00:00
|
|
|
|
|
|
|
[_window setInitialFirstResponder:brws_adaptors];
|
|
|
|
[brws_adaptors setNextResponder:btn_ok];
|
|
|
|
[btn_ok setNextResponder:btn_cancel];
|
|
|
|
// hmm.. this seems to cause an infinate loop in the responder chain somehow
|
|
|
|
// when in the modal loop.
|
|
|
|
// [btn_cancel setNextResponder:brws_adaptors];
|
|
|
|
|
|
|
|
[btn_ok setKeyEquivalent:@"\r"];
|
|
|
|
[btn_ok setImage:[NSImage imageNamed:@"common_ret"]];
|
|
|
|
[btn_ok setAlternateImage:[NSImage imageNamed:@"common_retH"]];
|
|
|
|
[btn_ok setImagePosition:NSImageRight];
|
|
|
|
[btn_ok sizeToFit];
|
|
|
|
|
|
|
|
fr1 = [btn_ok frame];
|
|
|
|
fr2 = [btn_cancel frame];
|
|
|
|
|
|
|
|
fr1.size.width = fr2.size.width = fr1.size.width > fr2.size.width
|
Replaced tabs with spaces throughout the DBModeler sub-project.
* DBModeler/AdaptorsPanel.m, DBModeler/AttributeCell.m,
DBModeler/ConsistencyChecker.m, DBModeler/DefaultColumnProvider.m,
DBModeler/DiagramView.m, DBModeler/EOAdditions.m, DBModeler/EntityView.m,
DBModeler/GNUmakefile, DBModeler/KVDataSource.m,
DBModeler/MainModelEditor.h, DBModeler/MainModelEditor.m,
DBModeler/ModelerAttributeEditor.m, DBModeler/ModelerEntityEditor.h,
DBModeler/ModelerEntityEditor.m,
DBModeler/ModelerTableEmbedibleEditor.h,
DBModeler/ModelerTableEmbedibleEditor.m,
DBModeler/NSView+Additions.m, DBModeler/Preferences.m,
DBModeler/SQLGenerator.m, DBModeler/Inspectors/AdvancedEntityInspector.m,
DBModeler/Inspectors/AttributeInspector.h,
DBModeler/Inspectors/AttributeInspector.m,
DBModeler/Inspectors/RelationshipInspector.h,
DBModeler/Inspectors/RelationshipInspector.m
White-space clean-up. Replaced tabs with spaces.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@26556 72102866-910b-0410-8b05-ffd578937521
2008-05-23 12:11:26 +00:00
|
|
|
? fr1.size.width
|
|
|
|
: fr2.size.width;
|
2007-01-10 12:13:37 +00:00
|
|
|
fr1.size.height = fr2.size.height = fr1.size.height > fr2.size.height
|
Replaced tabs with spaces throughout the DBModeler sub-project.
* DBModeler/AdaptorsPanel.m, DBModeler/AttributeCell.m,
DBModeler/ConsistencyChecker.m, DBModeler/DefaultColumnProvider.m,
DBModeler/DiagramView.m, DBModeler/EOAdditions.m, DBModeler/EntityView.m,
DBModeler/GNUmakefile, DBModeler/KVDataSource.m,
DBModeler/MainModelEditor.h, DBModeler/MainModelEditor.m,
DBModeler/ModelerAttributeEditor.m, DBModeler/ModelerEntityEditor.h,
DBModeler/ModelerEntityEditor.m,
DBModeler/ModelerTableEmbedibleEditor.h,
DBModeler/ModelerTableEmbedibleEditor.m,
DBModeler/NSView+Additions.m, DBModeler/Preferences.m,
DBModeler/SQLGenerator.m, DBModeler/Inspectors/AdvancedEntityInspector.m,
DBModeler/Inspectors/AttributeInspector.h,
DBModeler/Inspectors/AttributeInspector.m,
DBModeler/Inspectors/RelationshipInspector.h,
DBModeler/Inspectors/RelationshipInspector.m
White-space clean-up. Replaced tabs with spaces.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@26556 72102866-910b-0410-8b05-ffd578937521
2008-05-23 12:11:26 +00:00
|
|
|
? fr1.size.height
|
|
|
|
: fr2.size.height;
|
2007-01-10 12:13:37 +00:00
|
|
|
fr2.origin.x = NSMaxX(fr1) + 8;
|
|
|
|
|
|
|
|
[btn_ok setFrame:fr1];
|
|
|
|
[btn_cancel setFrame:fr2];
|
|
|
|
|
|
|
|
fr2 = [brws_adaptors frame];
|
|
|
|
fr2.origin.y = NSMaxY(fr1) + 8;
|
|
|
|
[brws_adaptors setFrame:fr2];
|
2005-05-13 00:25:27 +00:00
|
|
|
|
|
|
|
RELEASE(_label);
|
|
|
|
RELEASE(brws_adaptors);
|
|
|
|
RELEASE(btn_ok);
|
|
|
|
RELEASE(btn_cancel);
|
2007-01-10 12:13:37 +00:00
|
|
|
|
2005-05-13 00:25:27 +00:00
|
|
|
}
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (NSString *) runAdaptorsPanel
|
|
|
|
{
|
|
|
|
NSString *selection;
|
|
|
|
|
|
|
|
if ([NSApp runModalForWindow:_window] == NSRunAbortedResponse)
|
|
|
|
{
|
|
|
|
selection = nil;
|
2007-01-10 12:13:37 +00:00
|
|
|
[_window orderOut:self];
|
2005-05-13 00:25:27 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
selection = [[brws_adaptors selectedCell] stringValue];
|
2007-01-10 12:13:37 +00:00
|
|
|
[_window orderOut:self];
|
2005-05-13 00:25:27 +00:00
|
|
|
}
|
|
|
|
return selection;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* button actions */
|
|
|
|
|
|
|
|
- (void) ok: (id)sender
|
|
|
|
{
|
|
|
|
[NSApp stopModalWithCode:NSRunStoppedResponse];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void) cancel: (id)sender
|
|
|
|
{
|
|
|
|
[NSApp stopModalWithCode:NSRunAbortedResponse];
|
|
|
|
}
|
|
|
|
|
|
|
|
/* NSBrowser delegate stuff */
|
|
|
|
|
|
|
|
- (int) browser:(id)sender numberOfRowsInColumn:(int)column
|
|
|
|
{
|
|
|
|
return [_adaptorNames count];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)browser:(NSBrowser*)sender
|
|
|
|
willDisplayCell:(NSBrowserCell*)cell
|
Replaced tabs with spaces throughout the DBModeler sub-project.
* DBModeler/AdaptorsPanel.m, DBModeler/AttributeCell.m,
DBModeler/ConsistencyChecker.m, DBModeler/DefaultColumnProvider.m,
DBModeler/DiagramView.m, DBModeler/EOAdditions.m, DBModeler/EntityView.m,
DBModeler/GNUmakefile, DBModeler/KVDataSource.m,
DBModeler/MainModelEditor.h, DBModeler/MainModelEditor.m,
DBModeler/ModelerAttributeEditor.m, DBModeler/ModelerEntityEditor.h,
DBModeler/ModelerEntityEditor.m,
DBModeler/ModelerTableEmbedibleEditor.h,
DBModeler/ModelerTableEmbedibleEditor.m,
DBModeler/NSView+Additions.m, DBModeler/Preferences.m,
DBModeler/SQLGenerator.m, DBModeler/Inspectors/AdvancedEntityInspector.m,
DBModeler/Inspectors/AttributeInspector.h,
DBModeler/Inspectors/AttributeInspector.m,
DBModeler/Inspectors/RelationshipInspector.h,
DBModeler/Inspectors/RelationshipInspector.m
White-space clean-up. Replaced tabs with spaces.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@26556 72102866-910b-0410-8b05-ffd578937521
2008-05-23 12:11:26 +00:00
|
|
|
atRow:(int)row
|
|
|
|
column:(int)column
|
2005-05-13 00:25:27 +00:00
|
|
|
{
|
|
|
|
[cell setLeaf:YES];
|
|
|
|
[cell setTitle: [_adaptorNames objectAtIndex:row]];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@end
|
|
|
|
|