--- a/DataSetBuilder.st Sun May 31 13:13:11 2009 +0200
+++ b/DataSetBuilder.st Sun May 31 20:24:00 2009 +0200
@@ -13,7 +13,8 @@
ResourceSpecEditor subclass:#DataSetBuilder
instanceVariableNames:'rowClass rowSuperClass columnView columns selectedColumnIndex
- modalOpened listOfSpecViews listOfItemsView'
+ modalOpened listOfSpecViews listOfItemsView editingSpecOnly
+ acceptedColumns'
classVariableNames:''
poolDictionaries:''
category:'Interface-UIPainter'
@@ -166,10 +167,13 @@
'New Column Description'
#fileSave
+'Save the Column Description'
+
+#fileSaveMethod
'Save Column Description as Method'
-#fileSaveAs
-'Save Column Description as Method'
+#fileSaveAsMethod
+'Save Column Description as Method (ask for Class/Selector)'
#editCut
'Cut Column'
@@ -2104,6 +2108,101 @@
!DataSetBuilder class methodsFor:'menu specs'!
+fileMenu
+ "This resource specification was automatically generated
+ by the MenuEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the MenuEditor may not be able to read the specification."
+
+ "
+ MenuEditor new openOnClass:DataSetBuilder andSelector:#fileMenu
+ (Menu new fromLiteralArrayEncoding:(DataSetBuilder fileMenu)) startUp
+ "
+
+ <resource: #menu>
+
+ ^
+ #(Menu
+ (
+ (MenuItem
+ activeHelpKey: fileNew
+ label: 'New'
+ itemValue: doNew
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ isVisible: notEditingSpecOnly
+ )
+ (MenuItem
+ activeHelpKey: fileLoad
+ label: 'Load...'
+ itemValue: doLoad
+ translateLabel: true
+ isVisible: notEditingSpecOnly
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ activeHelpKey: fileSave
+ label: 'Save'
+ itemValue: doSave
+ translateLabel: true
+ isVisible: editingSpecOnly
+ )
+ (MenuItem
+ activeHelpKey: fileSaveMethod
+ label: 'Save'
+ itemValue: doSave
+ translateLabel: true
+ isVisible: notEditingSpecOnly
+ )
+ (MenuItem
+ activeHelpKey: fileSaveAsMethod
+ label: 'Save As...'
+ itemValue: doSaveAs
+ translateLabel: true
+ isVisible: notEditingSpecOnly
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ activeHelpKey: pickColumns
+ label: 'Pick Columns...'
+ itemValue: doPickColumns
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ isVisible: isStandAlone
+ )
+ (MenuItem
+ activeHelpKey: fileBrowseClass
+ label: 'Browse Class'
+ itemValue: doBrowseClass
+ translateLabel: true
+ isVisible: isStandAlone
+ )
+ (MenuItem
+ label: '-'
+ isVisible: isStandAlone
+ )
+ (MenuItem
+ activeHelpKey: fileExit
+ label: 'Exit'
+ itemValue: closeRequest
+ translateLabel: true
+ isVisible: isStandAlone
+ )
+ )
+ nil
+ nil
+ )
+!
+
menu
"This resource specification was automatically generated
by the MenuEditor of ST/X."
@@ -2124,74 +2223,7 @@
(MenuItem
label: 'File'
translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- activeHelpKey: fileNew
- label: 'New'
- itemValue: doNew
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- activeHelpKey: fileLoad
- label: 'Load...'
- itemValue: doLoad
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- activeHelpKey: fileSave
- label: 'Save'
- itemValue: doSave
- translateLabel: true
- )
- (MenuItem
- activeHelpKey: fileSaveAs
- label: 'Save As...'
- itemValue: doSaveAs
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- activeHelpKey: pickColumns
- label: 'Pick Columns...'
- itemValue: doPickColumns
- translateLabel: true
- )
- (MenuItem
- label: '-'
- isVisible: isStandAlone
- )
- (MenuItem
- activeHelpKey: fileBrowseClass
- label: 'Browse Class'
- itemValue: doBrowseClass
- translateLabel: true
- isVisible: isStandAlone
- )
- (MenuItem
- label: '-'
- isVisible: isStandAlone
- )
- (MenuItem
- activeHelpKey: fileExit
- label: 'Exit'
- itemValue: closeRequest
- translateLabel: true
- isVisible: isStandAlone
- )
- )
- nil
- nil
- )
+ submenuChannel: fileMenu
)
(MenuItem
label: 'Edit'
@@ -2228,6 +2260,7 @@
(MenuItem
label: 'Generate'
translateLabel: true
+ isVisible: notEditingSpecOnly
submenu:
(Menu
(
@@ -2630,12 +2663,22 @@
labelImage: (ResourceRetriever ToolbarIconLibrary loadFromMethodIcon)
)
(MenuItem
+ activeHelpKey: fileSaveMethod
+ label: 'Save'
+ itemValue: doSave
+ translateLabel: true
+ isButton: true
+ isVisible: notEditingSpecOnly
+ labelImage: (ResourceRetriever ToolbarIconLibrary saveAsMethodIcon)
+ )
+ (MenuItem
activeHelpKey: fileSave
label: 'Save'
itemValue: doSave
translateLabel: true
isButton: true
- labelImage: (ResourceRetriever ToolbarIconLibrary saveAsMethodIcon)
+ isVisible: editingSpecOnly
+ labelImage: (ResourceRetriever ToolbarIconLibrary saveToFileIcon)
)
(MenuItem
label: '-'
@@ -2731,6 +2774,12 @@
!DataSetBuilder methodsFor:'accessing'!
+acceptedColumns
+ "returns the last saved columns (internal, for specOnly edit mode)"
+
+ ^ acceptedColumns
+!
+
columns
"returns list of columns"
@@ -2740,11 +2789,10 @@
columns:aListOfColumns
"setup columns from a column view"
- |list|
-
- columns := OrderedCollection new.
- list := self seqList.
-
+ |list newColumns|
+
+ newColumns := OrderedCollection new.
+ list := self seqList.
list removeAll.
aListOfColumns size ~~ 0 ifTrue:[
@@ -2754,15 +2802,28 @@
] ifFalse:[
column := aColumn copy
].
- columns add:column.
+ newColumns add:column.
list add:(self labelFromColumn:column).
]
].
+ columns := newColumns.
self updateColumnView.
"Modified: / 27-03-2007 / 08:46:39 / cg"
!
+editingSpecOnly
+ ^ editingSpecOnly ? false
+!
+
+editingSpecOnly:something
+ editingSpecOnly := something.
+!
+
+notEditingSpecOnly
+ ^ self editingSpecOnly not
+!
+
resolveRowClass
"returns the resolved row class
"
@@ -2913,38 +2974,28 @@
!
loadFromClass:aClass andSelector:aSelector
- |updateBlock cls list|
+ |cls list|
self assert:(aClass isNil or:[aClass isClass]).
selectedColumnIndex := 0.
- updateBlock := [
- columns notEmpty ifTrue: [
- self tabModel value:0; value:1. "/ toggle to force change
- self selectedColumnModel value:nil; value:1. "/ toggle to force change
- self updateColumnView.
- self updateInputFields.
- self updateInfoLabel.
- self updateHistory.
- self clearModifiedFlag.
- self enablingCommitButtonsHolder value:false.
- ]
- ].
-
"if opened on table columns"
aClass isNil ifTrue: [
self tabModel value: 0.
- self columns removeAll.
- self seqList removeAll.
+ "/ self columns removeAll.
+ "/ self seqList removeAll.
self updateColumnView.
self updateInfoLabel.
self isColumnSelected value: false.
^ self.
].
- specSelector isNil ifTrue: [updateBlock value. ^self].
+ specSelector isNil ifTrue: [
+ self updateAfterColumnChange.
+ ^ self
+ ].
list := nil.
@@ -2960,7 +3011,18 @@
list := columns
].
self columns:list.
- updateBlock value.
+ self updateAfterColumnChange.
+!
+
+updateAfterColumnChange
+ self tabModel value:0; value:1. "/ toggle to force change
+ self selectedColumnModel value:nil; value:1. "/ toggle to force change
+ self updateColumnView.
+ self updateInputFields.
+ self updateInfoLabel.
+ self updateHistory.
+ self clearModifiedFlag.
+ self enablingCommitButtonsHolder value:false.
! !
!DataSetBuilder methodsFor:'code generation'!
@@ -3349,6 +3411,13 @@
!
+loadFromResourceSpec: aResourceSpec
+ self columns:aResourceSpec copy.
+ modified := false.
+ hasSaved := false.
+ self updateAfterColumnChange.
+!
+
setDefaultValuesInNewColumn:aDataSetColumnSpec
"/ aDataSetColumnSpec readSelector: #'valueAtColumnIndex:'.
"/ aDataSetColumnSpec writeSelector: #'valueAtColumnIndex:put:'.
@@ -3553,6 +3622,16 @@
!DataSetBuilder methodsFor:'private'!
+askForModification
+ "asks first for item and then for resource modification"
+
+ editingSpecOnly ifTrue:[
+ self accept.
+ ^ true.
+ ].
+ ^ self askForItemModification and: [self askForListModification]
+!
+
labelFromColumn:aColumn
|label|
@@ -3575,12 +3654,11 @@
!
updateColumnView
- "updates column view from column descriptions
- "
- |size|
+ "updates the column view from column descriptions"
+
+ |size previewColumns columnList|
columnView notNil ifTrue:[
- |previewColumns columnItems columnList|
columnList := List new.
previewColumns := OrderedCollection new.
@@ -3607,11 +3685,14 @@
choices:#choices
].
#(' 1' ' 2' ' x') do:[:suffix|
- columnItems := Row new:size.
- 1 to:size do:[:i| columnItems at: i put: ('Cell', suffix)].
- columnList add: columnItems.
+ |oneRow|
+
+ oneRow := Row new:size.
+ 1 to:size do:[:i | oneRow at: i put: ('Cell%1-%2' bindWith:suffix with:i)].
+ columnList add: oneRow.
]
].
+
columnView list: #().
columnView columnDescriptors: previewColumns.
columnView list: columnList.
@@ -4167,6 +4248,13 @@
doSave
|cls dst spc category mthd excla code resourceType|
+ editingSpecOnly == true ifTrue:[
+ acceptedColumns := columns.
+ hasSaved := true.
+ self clearModified.
+ ^ self.
+ ].
+
(columns size ~~ 0 and:[super doSave]) ifFalse:[
^ nil
].