MCTool.st
author Claus Gittinger <cg@exept.de>
Mon, 14 May 2018 02:21:18 +0200
changeset 1048 582b3a028cbc
parent 692 2a73b982883e
permissions -rw-r--r--
#FEATURE by cg class: MCMethodDefinition changed: #postloadOver:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
129
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#MCTool
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'morph label modal modalValue'
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
692
2a73b982883e category change
Claus Gittinger <cg@exept.de>
parents: 129
diff changeset
     7
	category:'SCM-Monticello-UI'
129
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCTool methodsFor:'morphic ui'!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
answer: anObject
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	modalValue _ anObject.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
	self close.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
arrowKey: aCharacter from: aPluggableListMorph 
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	"backstop"
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
buildWindow
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	| window |
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	window _ SystemWindow labelled: self label.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
	window model: self.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
	self widgetSpecs do:
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
		[:pair | |send fractions offsets|
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
		send _ pair first.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
		fractions _ pair at: 2 ifAbsent: [#(0 0 1 1)].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
		offsets _ pair at: 3 ifAbsent: [#(0 0 0 0)].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
		window
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
			addMorph: (self perform: send first withArguments: send allButFirst )
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
			fullFrame:
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
				(LayoutFrame
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
					fractions: 
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
					((fractions first)@(fractions second) corner: 
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
						(fractions third)@(fractions fourth))
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
					offsets:
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
						((offsets first)@(offsets second)  corner:
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
							(offsets third)@(offsets fourth)))].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
	^ window
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
buildWith: builder
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
	|  windowBuilder |
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	windowBuilder _ MCToolWindowBuilder builder: builder tool: self.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
	self widgetSpecs do:
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
		[:spec | | send fractions offsets origin corner |
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
		send _ spec first.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
		fractions _ spec at: 2 ifAbsent: [#(0 0 1 1)].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
		offsets _ spec at: 3 ifAbsent: [#(0 0 0 0)].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
		origin _ (offsets first @ offsets second) 
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
			/ self defaultExtent asFloatPoint
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
			+ (fractions first @ fractions second).
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
		corner _ (offsets third @ offsets fourth) 
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
			/ self defaultExtent asFloatPoint
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
			+ (fractions third @ fractions fourth).
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
		windowBuilder frame: (origin corner: corner).
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
		windowBuilder perform: send first withArguments: send allButFirst].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
	^ windowBuilder build
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
buttonEnabled
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	^ true
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
buttonRow
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
	^ self buttonRow: self buttonSpecs
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
buttonRow: specArray
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
	| aRow aButton enabled selected |
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
	aRow _ AlignmentMorph newRow.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
	aRow 
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
		color: (Display depth <= 8 ifTrue: [Color transparent] ifFalse: [Color gray alpha: 0.2]);
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
		borderWidth: 0.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
	aRow hResizing: #spaceFill; vResizing: #spaceFill; rubberBandCells: true.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
	aRow clipSubmorphs: true.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	aRow layoutInset: 5@2; cellInset: 3.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	aRow wrapCentering: #center; cellPositioning: #leftCenter.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	specArray do:
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
		[:triplet |
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
			enabled _ triplet at: 4 ifAbsent: [#buttonEnabled].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
			selected _ triplet at: 5 ifAbsent: [enabled].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
			aButton _ PluggableButtonMorph
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
				on: self
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
				getState: selected
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
				action: #performButtonAction:enabled:.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
			aButton
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
				hResizing: #spaceFill;
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
				vResizing: #spaceFill;
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
				useRoundedCorners;
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
				label: triplet first asString;
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
				arguments: (Array with: triplet second with: enabled); 
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
				onColor: Color transparent offColor: Color white.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
			aRow addMorphBack: aButton.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
			aButton setBalloonText: triplet third].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
		
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
	Preferences alternativeWindowLook ifTrue:[
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
		aRow color: Color transparent.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
		aRow submorphsDo:[:m| m borderWidth: 2; borderColor: #raised].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
	].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
	^ aRow
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
buttonSelected
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
	^ false
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
buttonSpecs
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
	^ #()
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
buttonState
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
	^ true
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
close
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
	self window delete
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
defaultAnnotationPaneHeight 
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
	"Answer the receiver's preferred default height for new annotation panes."
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
	^ Preferences parameterAt: #defaultAnnotationPaneHeight ifAbsentPut: [25]
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
defaultBackgroundColor 
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
	^ (Color r: 0.627 g: 0.69 b: 0.976)
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
defaultButtonPaneHeight
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
	"Answer the user's preferred default height for new button panes."
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
	^ Preferences parameterAt: #defaultButtonPaneHeight ifAbsentPut: [25]
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
defaultExtent
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
	^ 500@500
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
defaultLabel
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
	^ self class name
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
fillMenu: aMenu fromSpecs: anArray
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
	anArray do:
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
		[:pair |
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
		aMenu add: pair first target: self selector: pair second].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
	^ aMenu
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
findListMorph: aSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
	^ morph submorphs detect: [:ea | (ea respondsTo: #getListSelector) and: [ea getListSelector = aSymbol]] ifNone: []
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
findTextMorph: aSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
	^ morph submorphs detect: [:ea | (ea respondsTo: #getTextSelector) and: [ea getTextSelector = aSymbol]] ifNone: []
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
getMenu: aMenu
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
	^aMenu
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
label
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
	^ label ifNil: [self defaultLabel]
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
label: aString
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
	label _ aString
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
listMorph: listSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
	^ self
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
		listMorph: (listSymbol, 'List') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
		selection: (listSymbol, 'Selection') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
		menu: (listSymbol, 'ListMenu:') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
listMorph: listSymbol keystroke: keystrokeSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
	^ (self
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
		listMorph: (listSymbol, 'List') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
		selection: (listSymbol, 'Selection') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
		menu: (listSymbol, 'ListMenu:') asSymbol)
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
		keystrokeActionSelector: keystrokeSymbol;
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
		yourself
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
listMorph: listSymbol selection: selectionSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
	^ PluggableListMorph
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
		on: self
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
		list: listSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
		selected: selectionSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
		changeSelected: (selectionSymbol, ':') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
listMorph: listSymbol selection: selectionSymbol menu: menuSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
	^ PluggableListMorph
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
		on: self
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
		list: listSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
		selected: selectionSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
		changeSelected: (selectionSymbol, ':') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
		menu: menuSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
listMorph: listSymbol selection: selectionSymbol menu: menuSymbol keystroke: keystrokeSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
	^ (PluggableListMorph
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
		on: self
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
		list: listSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
		selected: selectionSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
		changeSelected: (selectionSymbol, ':') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
		menu: menuSymbol)
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
		keystrokeActionSelector: keystrokeSymbol;
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
		yourself
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
multiListMorph: listSymbol selection: selectionSymbol listSelection: listSelectionSymbol menu: menuSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
	^ PluggableListMorphOfMany
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
		on: self
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
		list: listSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
		primarySelection: selectionSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
		changePrimarySelection: (selectionSymbol, ':') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
		listSelection: listSelectionSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
		changeListSelection: (listSelectionSymbol, 'put:') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
		menu: menuSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
perform: selector orSendTo: otherTarget
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
	"Selector was just chosen from a menu by a user.  If can respond, then
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
perform it on myself. If not, send it to otherTarget, presumably the
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
editPane from which the menu was invoked."
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
	(self respondsTo: selector)
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
		ifTrue: [^ self perform: selector]
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
		ifFalse: [^ otherTarget perform: selector]
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
performButtonAction: anActionSelector enabled: anEnabledSelector
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
	(self perform: anEnabledSelector) 
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
		ifTrue: [ self perform: anActionSelector ]
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
show
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
	modal _ false.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
	Smalltalk at: #ToolBuilder ifPresent: [:tb | tb open: self. ^ self].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
	^self window openInWorldExtent: self defaultExtent; yourself
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
showLabelled: labelString
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
	modal _ false.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
	self label: labelString.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
	^(self window)
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
		openInWorldExtent: self defaultExtent;
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
		yourself
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
showModally
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
	modal _ true.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
	self window openInWorldExtent: (400@400).
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
	[self window world notNil] whileTrue: [
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
		self window outermostWorldMorph doOneCycle.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
	].
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
	morph _ nil.
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
	^ modalValue
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
step
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
textMorph: aSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
	^ PluggableTextMorph on: self text: aSymbol accept: (aSymbol, ':') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
treeMorph: listSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
	^ self
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
		treeMorph: (listSymbol, 'Tree') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
		selection: (listSymbol, 'SelectionWrapper') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
		menu: (listSymbol, 'TreeMenu:') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
treeMorph: listSymbol selection: selectionSymbol menu: menuSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
	^ SimpleHierarchicalListMorph
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
		on: self
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
		list: listSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
		selected: selectionSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
		changeSelected: (selectionSymbol, ':') asSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
		menu: menuSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
		keystroke: nil
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
treeOrListMorph: aSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
	^ self treeMorph: aSymbol
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
widgetSpecs
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
	^ #()
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
window
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
	^ morph ifNil: [morph _ self buildWindow]
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
! !
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
!MCTool class methodsFor:'documentation'!
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
version
692
2a73b982883e category change
Claus Gittinger <cg@exept.de>
parents: 129
diff changeset
   309
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCTool.st,v 1.2 2012-09-11 21:29:48 cg Exp $'
129
566180a1650e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
! !