|
From: Nando D. <na...@us...> - 2005-02-18 14:49:46
|
Update of /cvsroot/instantobjects/Source/Design In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15266/Design Modified Files: InstantAttributeEditor.dfm InstantAttributeEditor.pas Log Message: External storage unification & refactoring - design time support (still something to do) Index: InstantAttributeEditor.dfm =================================================================== RCS file: /cvsroot/instantobjects/Source/Design/InstantAttributeEditor.dfm,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** InstantAttributeEditor.dfm 1 Nov 2004 08:25:44 -0000 1.4 --- InstantAttributeEditor.dfm 18 Feb 2005 14:49:38 -0000 1.5 *************** *** 3,7 **** Top = 215 Width = 249 ! Height = 386 Caption = 'Attribute Editor' ParentFont = True --- 3,7 ---- Top = 215 Width = 249 ! Height = 350 Caption = 'Attribute Editor' ParentFont = True *************** *** 12,21 **** inherited EditPanel: TPanel Width = 241 ! Height = 321 object PageControl: TPageControl Left = 4 Top = 4 Width = 233 ! Height = 313 ActivePage = DefinitionSheet Align = alClient --- 12,21 ---- inherited EditPanel: TPanel Width = 241 ! Height = 292 object PageControl: TPageControl Left = 4 Top = 4 Width = 233 ! Height = 284 ActivePage = DefinitionSheet Align = alClient *************** *** 63,75 **** FocusControl = SizeEdit end ! object ExternalLinkedNameLabel: TLabel ! Left = 8 ! Top = 248 ! Width = 92 ! Height = 13 ! Caption = 'Exter&nal Link Name' ! FocusControl = ExternalLinkedNameEdit ! end ! object ExternalStoredNameLabel: TLabel Left = 8 Top = 208 --- 63,67 ---- FocusControl = SizeEdit end ! object ExternalStorageNameLabel: TLabel Left = 8 Top = 208 *************** *** 77,89 **** Height = 13 Caption = '&External Storage Name' ! FocusControl = ExternalStoredNameEdit end ! object IsExternalLabel: TLabel Left = 8 Top = 168 ! Width = 49 Height = 13 ! Caption = 'Is Exte&rnal' ! FocusControl = IsExternalEdit end object NameEdit: TDBEdit --- 69,81 ---- Height = 13 Caption = '&External Storage Name' ! FocusControl = ExternalStorageNameEdit end ! object StorageKindLabel: TLabel Left = 8 Top = 168 ! Width = 61 Height = 13 ! Caption = 'Storage &Kind' ! FocusControl = StorageKindEdit end object NameEdit: TDBEdit *************** *** 131,134 **** --- 123,127 ---- DataSource = SubjectSource TabOrder = 4 + OnChange = StorageNameEditChange end object SizeEdit: TDBEdit *************** *** 141,168 **** TabOrder = 3 end ! object ExternalLinkedNameEdit: TDBComboBox ! Left = 8 ! Top = 264 ! Width = 210 ! Height = 21 ! DataField = 'ExternalLinkedName' ! DataSource = SubjectSource ! ItemHeight = 13 ! Sorted = True ! TabOrder = 7 ! OnChange = ExternalLinkedNameEditChange ! OnEnter = ExternalLinkedNameEditEnter ! end ! object ExternalStoredNameEdit: TDBEdit Left = 8 ! Top = 224 Width = 209 Height = 21 ! DataField = 'ExternalStoredName' DataSource = SubjectSource TabOrder = 6 ! OnChange = ExternalStoredNameEditChange end ! object IsExternalEdit: TDBComboBox Left = 7 Top = 184 --- 134,148 ---- TabOrder = 3 end ! object ExternalStorageNameEdit: TDBEdit Left = 8 ! Top = 225 Width = 209 Height = 21 ! DataField = 'ExternalStorageName' DataSource = SubjectSource TabOrder = 6 ! OnChange = ExternalStorageNameEditChange end ! object StorageKindEdit: TDBComboBox Left = 7 Top = 184 *************** *** 170,179 **** Height = 21 Style = csDropDownList ! DataField = 'IsExternal' DataSource = SubjectSource ItemHeight = 13 Sorted = True TabOrder = 5 ! OnChange = IsExternalEditChange end end --- 150,159 ---- Height = 21 Style = csDropDownList ! DataField = 'StorageKind' DataSource = SubjectSource ItemHeight = 13 Sorted = True TabOrder = 5 ! OnChange = StorageKindEditChange end end *************** *** 389,393 **** end inherited BottomPanel: TPanel ! Top = 321 Width = 241 inherited ButtonPanel: TPanel --- 369,373 ---- end inherited BottomPanel: TPanel ! Top = 292 Width = 241 inherited ButtonPanel: TPanel *************** *** 398,411 **** OnInitField = SubjectExposerInitField OnTranslate = SubjectExposerTranslate ! Left = 6 ! Top = 324 end inherited SubjectSource: TDataSource ! Left = 46 ! Top = 324 end object TypeImages: TImageList ! Left = 84 ! Top = 324 end end --- 378,391 ---- OnInitField = SubjectExposerInitField OnTranslate = SubjectExposerTranslate ! Left = 14 ! Top = 284 end inherited SubjectSource: TDataSource ! Left = 54 ! Top = 284 end object TypeImages: TImageList ! Left = 92 ! Top = 284 end end Index: InstantAttributeEditor.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Design/InstantAttributeEditor.pas,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** InstantAttributeEditor.pas 11 Feb 2005 16:12:16 -0000 1.10 --- InstantAttributeEditor.pas 18 Feb 2005 14:49:38 -0000 1.11 *************** *** 49,53 **** type TInstantStringsEvent = procedure(Sender: TObject; Items: TStrings) of object; ! TInstantAttrStringsEvent = procedure(Sender: TObject; const ClassName: String; Items: TStrings) of object; --- 49,53 ---- type TInstantStringsEvent = procedure(Sender: TObject; Items: TStrings) of object; ! TInstantAttrStringsEvent = procedure(Sender: TObject; const ClassName: string; Items: TStrings) of object; *************** *** 92,101 **** DefaultValueLabel: TLabel; DefaultValueEdit: TDBEdit; ! ExternalLinkedNameEdit: TDBComboBox; ! ExternalLinkedNameLabel: TLabel; ! ExternalStoredNameEdit: TDBEdit; ! ExternalStoredNameLabel: TLabel; ! IsExternalEdit: TDBComboBox; ! IsExternalLabel: TLabel; procedure FormCreate(Sender: TObject); procedure NameEditChange(Sender: TObject); --- 92,99 ---- DefaultValueLabel: TLabel; DefaultValueEdit: TDBEdit; ! ExternalStorageNameEdit: TDBEdit; ! ExternalStorageNameLabel: TLabel; ! StorageKindEdit: TDBComboBox; ! StorageKindLabel: TLabel; procedure FormCreate(Sender: TObject); procedure NameEditChange(Sender: TObject); *************** *** 109,116 **** var Value: Variant; Write: Boolean); procedure TypeEditClick(Sender: TObject); ! procedure IsExternalEditChange(Sender: TObject); ! procedure ExternalStoredNameEditChange(Sender: TObject); procedure ExternalLinkedNameEditChange(Sender: TObject); ! procedure ExternalLinkedNameEditEnter(Sender: TObject); private // True if in ModelMaker, default is False --- 107,114 ---- var Value: Variant; Write: Boolean); procedure TypeEditClick(Sender: TObject); ! procedure StorageKindEditChange(Sender: TObject); ! procedure ExternalStorageNameEditChange(Sender: TObject); procedure ExternalLinkedNameEditChange(Sender: TObject); ! procedure StorageNameEditChange(Sender: TObject); private // True if in ModelMaker, default is False *************** *** 132,141 **** procedure LoadTypes; procedure LoadVisibilities; ! procedure LoadIsExternal; procedure PopulateClasses; - procedure PopulateClassAttributes; procedure SaveData; override; procedure SubjectChanged; override; procedure UpdateControls; public property InMM: boolean read FInMM write FInMM; --- 130,139 ---- procedure LoadTypes; procedure LoadVisibilities; ! procedure LoadStorageKind; procedure PopulateClasses; procedure SaveData; override; procedure SubjectChanged; override; procedure UpdateControls; + procedure ComputeExternalStorageName; public property InMM: boolean read FInMM write FInMM; *************** *** 150,154 **** uses ! InstantRtti, InstantPersistence, InstantDesignUtils, InstantImageUtils; {$R *.dfm} --- 148,153 ---- uses ! InstantRtti, InstantPersistence, InstantDesignUtils, InstantImageUtils, ! InstantClasses; {$R *.dfm} *************** *** 251,257 **** end; ! procedure TInstantAttributeEditorForm.LoadIsExternal; begin ! with IsExternalEdit do ItemIndex := SubjectExposer.GetFieldStrings(Field, Items); end; --- 250,256 ---- end; ! procedure TInstantAttributeEditorForm.LoadStorageKind; begin ! with StorageKindEdit do ItemIndex := SubjectExposer.GetFieldStrings(Field, Items); end; *************** *** 296,299 **** --- 295,299 ---- SubjectExposer.AssignFieldValue(Field, Text); UpdateControls; + ComputeExternalStorageName; end; *************** *** 307,312 **** end; ! procedure TInstantAttributeEditorForm.ObjectClassEditChange( ! Sender: TObject); begin with ObjectClassEdit do --- 307,311 ---- end; ! procedure TInstantAttributeEditorForm.ObjectClassEditChange(Sender: TObject); begin with ObjectClassEdit do *************** *** 405,410 **** LoadTypes; LoadVisibilities; ! LoadIsExternal; UpdateControls; end; --- 404,410 ---- LoadTypes; LoadVisibilities; ! LoadStorageKind; UpdateControls; + ComputeExternalStorageName; end; *************** *** 438,443 **** else if Field.FieldName = 'Visibility' then TranslateEnum('vi') ! else if Field.FieldName = 'IsExternal' then ! TranslateEnum('ce'); end; --- 438,443 ---- else if Field.FieldName = 'Visibility' then TranslateEnum('vi') ! else if Field.FieldName = 'StorageKind' then ! TranslateEnum('sk'); end; *************** *** 450,454 **** UpdateControls; LoadVisibilities; ! LoadIsExternal; end; --- 450,455 ---- UpdateControls; LoadVisibilities; ! LoadStorageKind; ! ComputeExternalStorageName; end; *************** *** 474,487 **** var ! HasName, HasClass, HasExternalLinkedName: Boolean; ! IsComplex, IsContainer, CanBeExternal, IsExternal, IsMaskable, IsString, IsValid: Boolean; begin CanBeExternal := Subject.AttributeType in [atPart, atParts, atReferences]; if not CanBeExternal then ! Subject.IsExternal := ceNo; ! if (Subject.IsExternal = ceLinked) or (Subject.AttributeType = atPart) then ! Subject.ExternalStoredName := ''; ! if (Subject.IsExternal = ceStored) then ! Subject.ExternalLinkedName := ''; HasName := NameEdit.Text <> ''; --- 475,486 ---- var ! HasName, HasClass, IsComplex, IsContainer, CanBeExternal, IsExternal, ! IsMaskable, IsString, IsValid: Boolean; begin CanBeExternal := Subject.AttributeType in [atPart, atParts, atReferences]; if not CanBeExternal then ! Subject.StorageKind := skEmbedded; ! if Subject.AttributeType = atPart then ! Subject.ExternalStorageName := ''; HasName := NameEdit.Text <> ''; *************** *** 490,500 **** IsMaskable := Subject.AttributeType in [atString, atMemo, atFloat, atCurrency, atInteger]; IsContainer := Subject.IsContainer; - HasExternalLinkedName := ExternalLinkedNameEdit.Text <> ''; ! IsExternal := Subject.IsExternal <> ceNo; IsString := Subject.AttributeType in [atString, atMemo]; IsValid := HasName and (not IsComplex or HasClass); - if IsValid and (Subject.IsExternal = ceLinked) then - IsValid := HasExternalLinkedName; DisableSubControls(DefinitionSheet, Limited); --- 489,496 ---- IsMaskable := Subject.AttributeType in [atString, atMemo, atFloat, atCurrency, atInteger]; IsContainer := Subject.IsContainer; ! IsExternal := Subject.StorageKind = skExternal; IsString := Subject.AttributeType in [atString, atMemo]; IsValid := HasName and (not IsComplex or HasClass); DisableSubControls(DefinitionSheet, Limited); *************** *** 515,529 **** EnableCtrl(MethodRemoveCheckBox, IsContainer); ! EnableCtrl(IsExternalEdit, CanBeExternal); ! EnableCtrl(IsExternalLabel, CanBeExternal); end; EnableCtrl(StorageNameLabel, not IsExternal or (Subject.AttributeType = atPart)); EnableCtrl(StorageNameEdit, not IsExternal or (Subject.AttributeType = atPart)); ! EnableCtrl(ExternalLinkedNameLabel, IsExternal and (Subject.IsExternal = ceLinked)); ! EnableCtrl(ExternalLinkedNameEdit, IsExternal and (Subject.IsExternal = ceLinked)); ! EnableCtrl(ExternalStoredNameLabel, IsExternal and (Subject.IsExternal = ceStored) and not (Subject.AttributeType = atPart)); ! EnableCtrl(ExternalStoredNameEdit, IsExternal and (Subject.IsExternal = ceStored) and not (Subject.AttributeType = atPart)); --- 511,523 ---- EnableCtrl(MethodRemoveCheckBox, IsContainer); ! EnableCtrl(StorageKindEdit, CanBeExternal); ! EnableCtrl(StorageKindLabel, CanBeExternal); end; EnableCtrl(StorageNameLabel, not IsExternal or (Subject.AttributeType = atPart)); EnableCtrl(StorageNameEdit, not IsExternal or (Subject.AttributeType = atPart)); ! EnableCtrl(ExternalStorageNameLabel, IsExternal and (Subject.StorageKind = skExternal) and not (Subject.AttributeType = atPart)); ! EnableCtrl(ExternalStorageNameEdit, IsExternal and (Subject.StorageKind = skExternal) and not (Subject.AttributeType = atPart)); *************** *** 537,556 **** end; ! procedure TInstantAttributeEditorForm.IsExternalEditChange( ! Sender: TObject); begin ! with IsExternalEdit do SubjectExposer.AssignFieldValue(Field, Text); UpdateControls; end; ! procedure TInstantAttributeEditorForm.ExternalStoredNameEditChange( ! Sender: TObject); begin UpdateControls; end; ! procedure TInstantAttributeEditorForm.ExternalLinkedNameEditChange( ! Sender: TObject); begin UpdateControls; --- 531,547 ---- end; ! procedure TInstantAttributeEditorForm.StorageKindEditChange(Sender: TObject); begin ! with StorageKindEdit do SubjectExposer.AssignFieldValue(Field, Text); UpdateControls; end; ! procedure TInstantAttributeEditorForm.ExternalStorageNameEditChange(Sender: TObject); begin UpdateControls; end; ! procedure TInstantAttributeEditorForm.ExternalLinkedNameEditChange(Sender: TObject); begin UpdateControls; *************** *** 558,594 **** procedure TInstantAttributeEditorForm.LoadClassAttributes; - var - I:integer; begin - with ExternalLinkedNameEdit do - begin - Items.BeginUpdate; - try - Items.Clear; - if Assigned(FOnLoadClassAttributes) then begin - FOnLoadClassAttributes(Self, ObjectClassEdit.Text, Items); - end - else begin - if Assigned(FModel) then - if Assigned(FModel.FindClass(ObjectClassEdit.Text)) then - for I := 0 to Pred(FModel.FindClass(ObjectClassEdit.Text).AttributeCount) do - Items.Add(FModel.FindClass(ObjectClassEdit.Text).Attributes[i].Name); - end; - finally - Items.EndUpdate; - end; - end; end; ! procedure TInstantAttributeEditorForm.PopulateClassAttributes; begin ! if ExternalLinkedNameEdit.Items.Count = 0 then ! LoadClassAttributes; end; ! procedure TInstantAttributeEditorForm.ExternalLinkedNameEditEnter( ! Sender: TObject); begin ! PopulateClassAttributes; end; --- 549,591 ---- procedure TInstantAttributeEditorForm.LoadClassAttributes; begin end; ! procedure TInstantAttributeEditorForm.StorageNameEditChange( ! Sender: TObject); begin ! inherited; ! UpdateControls; ! ComputeExternalStorageName; end; ! procedure TInstantAttributeEditorForm.ComputeExternalStorageName; ! ! function GetClassStorageName: string; ! begin ! if Subject.Metadata.ClassMetadata.StorageName <> '' then ! Result := Subject.Metadata.ClassMetadata.StorageName ! else ! Result := Subject.Metadata.ClassMetadata.Name; ! end; ! ! function GetStorageName: string; ! begin ! if StorageNameEdit.Text <> '' then ! Result := StorageNameEdit.Text ! else ! Result := NameEdit.Text; ! end; ! begin ! { ! if ExternalStorageNameEdit.Enabled then ! begin ! ExternalStorageNameEdit.Text := Format('%s_%s', ! [GetClassStorageName(), GetStorageName()]); ! end ! else ! ExternalStorageNameEdit.Text := ''; ! } end; |