ProjectView.st
author claus
Mon, 10 Oct 1994 04:16:24 +0100
changeset 45 950b84ba89e6
parent 40 a9ae39be7004
child 52 7b48409ae088
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
     1
"{ Package: 'Programming Tools' }"
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
     2
3
claus
parents: 0
diff changeset
     3
"
claus
parents: 0
diff changeset
     4
 COPYRIGHT (c) 1993 by Claus Gittinger
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
     5
	      All Rights Reserved
3
claus
parents: 0
diff changeset
     6
claus
parents: 0
diff changeset
     7
 This software is furnished under a license and may be used
claus
parents: 0
diff changeset
     8
 only in accordance with the terms of that license and with the
claus
parents: 0
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
claus
parents: 0
diff changeset
    10
 be provided or otherwise made available to, or used by, any
claus
parents: 0
diff changeset
    11
 other person.  No title to or ownership of the software is
claus
parents: 0
diff changeset
    12
 hereby transferred.
claus
parents: 0
diff changeset
    13
"
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
    14
571fd5eee315 Initial revision
claus
parents:
diff changeset
    15
StandardSystemView subclass:#ProjectView
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    16
	 instanceVariableNames:'myProject toggle'
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    17
	 classVariableNames:'ActiveProjectView'
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    18
	 poolDictionaries:''
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    19
	 category:'Interface-Smalltalk'
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
    20
!
571fd5eee315 Initial revision
claus
parents:
diff changeset
    21
571fd5eee315 Initial revision
claus
parents:
diff changeset
    22
!ProjectView class methodsFor:'instance creation'!
571fd5eee315 Initial revision
claus
parents:
diff changeset
    23
571fd5eee315 Initial revision
claus
parents:
diff changeset
    24
for:aProject
571fd5eee315 Initial revision
claus
parents:
diff changeset
    25
    |newView|
571fd5eee315 Initial revision
claus
parents:
diff changeset
    26
571fd5eee315 Initial revision
claus
parents:
diff changeset
    27
    newView := super new.
571fd5eee315 Initial revision
claus
parents:
diff changeset
    28
    newView setProject:aProject.
571fd5eee315 Initial revision
claus
parents:
diff changeset
    29
    ^ newView
571fd5eee315 Initial revision
claus
parents:
diff changeset
    30
571fd5eee315 Initial revision
claus
parents:
diff changeset
    31
    "ProjectView for:(Project new)"
571fd5eee315 Initial revision
claus
parents:
diff changeset
    32
! !
571fd5eee315 Initial revision
claus
parents:
diff changeset
    33
571fd5eee315 Initial revision
claus
parents:
diff changeset
    34
!ProjectView methodsFor:'private accessing'!
571fd5eee315 Initial revision
claus
parents:
diff changeset
    35
571fd5eee315 Initial revision
claus
parents:
diff changeset
    36
setProject:aProject
571fd5eee315 Initial revision
claus
parents:
diff changeset
    37
    |name e|
571fd5eee315 Initial revision
claus
parents:
diff changeset
    38
571fd5eee315 Initial revision
claus
parents:
diff changeset
    39
    name := aProject name.
571fd5eee315 Initial revision
claus
parents:
diff changeset
    40
    self label:name.
17
58c360f199be *** empty log message ***
claus
parents: 9
diff changeset
    41
    self iconLabel:name.
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
    42
    toggle label:'Project: ' , name.
571fd5eee315 Initial revision
claus
parents:
diff changeset
    43
    toggle resize.
571fd5eee315 Initial revision
claus
parents:
diff changeset
    44
    myProject := aProject.
571fd5eee315 Initial revision
claus
parents:
diff changeset
    45
    e := (toggle width @ toggle height).
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
    46
    drawableId isNil ifTrue:[
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    47
	self minExtent:e.
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    48
	self maxExtent:e.
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    49
	self open
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
    50
    ] ifFalse:[
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    51
	self unrealize.
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    52
	self minExtent:e.
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    53
	self maxExtent:e.
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    54
	self extent:e.
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    55
	self rerealize
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
    56
    ]
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
    57
! !
571fd5eee315 Initial revision
claus
parents:
diff changeset
    58
571fd5eee315 Initial revision
claus
parents:
diff changeset
    59
!ProjectView methodsFor:'initialization'!
571fd5eee315 Initial revision
claus
parents:
diff changeset
    60
571fd5eee315 Initial revision
claus
parents:
diff changeset
    61
initialize
571fd5eee315 Initial revision
claus
parents:
diff changeset
    62
    super initialize.
571fd5eee315 Initial revision
claus
parents:
diff changeset
    63
    toggle := Toggle in:self.
571fd5eee315 Initial revision
claus
parents:
diff changeset
    64
    toggle borderWidth:0.
571fd5eee315 Initial revision
claus
parents:
diff changeset
    65
    toggle pressAction:[self showProject].
571fd5eee315 Initial revision
claus
parents:
diff changeset
    66
    toggle releaseAction:[self hideProject].
571fd5eee315 Initial revision
claus
parents:
diff changeset
    67
    toggle middleButtonMenu:(
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    68
	PopUpMenu
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    69
		labels:(resources array:
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    70
			   #('rename'
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    71
			     'changes'
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    72
			     'directory'
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    73
			     'properties'
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    74
			     '-'
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
    75
"
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    76
			     'build'
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    77
			     '-'
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
    78
"
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    79
			     'show'
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    80
			     'hide'
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    81
			     '-'
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    82
			     'destroy'
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    83
			    )
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    84
			)
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    85
	     selectors:#(renameProject
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    86
			 browseChanges
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    87
			 projectDirectory
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    88
			 browseProps
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    89
			 nil
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
    90
"
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    91
			 buildProject
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    92
			 nil
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
    93
"
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    94
			 showProject
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    95
			 hideProject
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    96
			 nil
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    97
			 destroy
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    98
			)
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
    99
	      receiver:self
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
   100
    )
571fd5eee315 Initial revision
claus
parents:
diff changeset
   101
!
571fd5eee315 Initial revision
claus
parents:
diff changeset
   102
571fd5eee315 Initial revision
claus
parents:
diff changeset
   103
addToCurrentProject
571fd5eee315 Initial revision
claus
parents:
diff changeset
   104
    "ignored here"
571fd5eee315 Initial revision
claus
parents:
diff changeset
   105
571fd5eee315 Initial revision
claus
parents:
diff changeset
   106
    ^ self
571fd5eee315 Initial revision
claus
parents:
diff changeset
   107
! !
571fd5eee315 Initial revision
claus
parents:
diff changeset
   108
571fd5eee315 Initial revision
claus
parents:
diff changeset
   109
!ProjectView methodsFor:'menu actions'!
571fd5eee315 Initial revision
claus
parents:
diff changeset
   110
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
   111
projectDirectory
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
   112
    |box|
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
   113
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   114
    box := FilenameEnterBox new.
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
   115
    box title:'Directory of project:'.
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
   116
    myProject directory notNil ifTrue:[
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   117
	box initialText:myProject directory
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
   118
    ].
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
   119
    box action:[:dirName |
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   120
	(OperatingSystem isDirectory:dirName) ifFalse:[
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   121
	    (OperatingSystem isValidPath:dirName) ifTrue:[
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   122
		self warn:(resources string:'%1 is not a valid directory' with:dirName).
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   123
		^ self
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   124
	    ].
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   125
	    (self confirm:(resources string:'%1 does not exist\\create ?' with:dirName) withCRs) ifTrue:[
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   126
		(OperatingSystem recursiveCreateDirectory:dirName) ifFalse:[
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   127
		    self warn:(resources string:'cannot create %1' with:dirName)
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   128
		]
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   129
	    ].
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   130
	].
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   131
	"did it work ?"
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   132
	(OperatingSystem isDirectory:dirName) ifTrue:[
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   133
	    myProject directory:dirName
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   134
	].
29
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
   135
    ].
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
   136
    box showAtPointer
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
   137
!
8a72e10043f6 *** empty log message ***
claus
parents: 17
diff changeset
   138
3
claus
parents: 0
diff changeset
   139
buildProject
9
3c0d1690a95a *** empty log message ***
claus
parents: 3
diff changeset
   140
    (self confirm:'create files in: ' ,  myProject directory) ifTrue:[
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   141
	myProject createProjectFiles.
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   142
	(self confirm:'starting make in: ' ,  myProject directory) ifTrue:[
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   143
	    myProject buildProject.
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   144
	].
9
3c0d1690a95a *** empty log message ***
claus
parents: 3
diff changeset
   145
    ].
3
claus
parents: 0
diff changeset
   146
!
claus
parents: 0
diff changeset
   147
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
   148
browseChanges
40
a9ae39be7004 *** empty log message ***
claus
parents: 37
diff changeset
   149
    ChangeSetBrowser openOn:(myProject changeSet)
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
   150
!
571fd5eee315 Initial revision
claus
parents:
diff changeset
   151
3
claus
parents: 0
diff changeset
   152
browseProps
9
3c0d1690a95a *** empty log message ***
claus
parents: 3
diff changeset
   153
    "will look better, once property inspector runs ..."
3
claus
parents: 0
diff changeset
   154
9
3c0d1690a95a *** empty log message ***
claus
parents: 3
diff changeset
   155
    myProject properties inspect
3
claus
parents: 0
diff changeset
   156
!
claus
parents: 0
diff changeset
   157
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
   158
destroyProject
571fd5eee315 Initial revision
claus
parents:
diff changeset
   159
    |box|
571fd5eee315 Initial revision
claus
parents:
diff changeset
   160
571fd5eee315 Initial revision
claus
parents:
diff changeset
   161
    box := YesNoBox new.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   162
    box title:'Destroying a project will discard all changes made
571fd5eee315 Initial revision
claus
parents:
diff changeset
   163
for that project and destroy all views opened for it.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   164
571fd5eee315 Initial revision
claus
parents:
diff changeset
   165
Do you really want to do this ?'.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   166
    box okText:'yes'.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   167
    box yesAction:[
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   168
	self doDestroyProject
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
   169
    ].
571fd5eee315 Initial revision
claus
parents:
diff changeset
   170
    box showAtPointer
571fd5eee315 Initial revision
claus
parents:
diff changeset
   171
!
571fd5eee315 Initial revision
claus
parents:
diff changeset
   172
571fd5eee315 Initial revision
claus
parents:
diff changeset
   173
showProject
571fd5eee315 Initial revision
claus
parents:
diff changeset
   174
    ActiveProjectView notNil ifTrue:[
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   175
	ActiveProjectView hideProject
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
   176
    ].
571fd5eee315 Initial revision
claus
parents:
diff changeset
   177
    ActiveProjectView := self.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   178
9
3c0d1690a95a *** empty log message ***
claus
parents: 3
diff changeset
   179
    myProject showViews.
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
   180
    Project current:myProject.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   181
    toggle turnOn
571fd5eee315 Initial revision
claus
parents:
diff changeset
   182
!
571fd5eee315 Initial revision
claus
parents:
diff changeset
   183
571fd5eee315 Initial revision
claus
parents:
diff changeset
   184
hideProject
9
3c0d1690a95a *** empty log message ***
claus
parents: 3
diff changeset
   185
    myProject hideViews.
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
   186
    ActiveProjectView := nil.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   187
    toggle turnOff
571fd5eee315 Initial revision
claus
parents:
diff changeset
   188
!
571fd5eee315 Initial revision
claus
parents:
diff changeset
   189
571fd5eee315 Initial revision
claus
parents:
diff changeset
   190
renameProject
571fd5eee315 Initial revision
claus
parents:
diff changeset
   191
    |box|
571fd5eee315 Initial revision
claus
parents:
diff changeset
   192
571fd5eee315 Initial revision
claus
parents:
diff changeset
   193
    box := EnterBox new.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   194
    box title:'new name of project:'.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   195
    box okText:'rename'.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   196
    box initialText:(myProject name).
571fd5eee315 Initial revision
claus
parents:
diff changeset
   197
    box action:[:newName |
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   198
	myProject name:newName.
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   199
	self setProject:myProject
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
   200
    ].
571fd5eee315 Initial revision
claus
parents:
diff changeset
   201
    box showAtPointer
571fd5eee315 Initial revision
claus
parents:
diff changeset
   202
!
571fd5eee315 Initial revision
claus
parents:
diff changeset
   203
571fd5eee315 Initial revision
claus
parents:
diff changeset
   204
doDestroy
571fd5eee315 Initial revision
claus
parents:
diff changeset
   205
    self hideProject.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   206
571fd5eee315 Initial revision
claus
parents:
diff changeset
   207
    myProject := nil.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   208
    super destroy
571fd5eee315 Initial revision
claus
parents:
diff changeset
   209
!
571fd5eee315 Initial revision
claus
parents:
diff changeset
   210
571fd5eee315 Initial revision
claus
parents:
diff changeset
   211
destroy
571fd5eee315 Initial revision
claus
parents:
diff changeset
   212
    |box|
571fd5eee315 Initial revision
claus
parents:
diff changeset
   213
571fd5eee315 Initial revision
claus
parents:
diff changeset
   214
    box := YesNoBox new.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   215
    box title:'Destroying a project will discard all changes made
571fd5eee315 Initial revision
claus
parents:
diff changeset
   216
for that project and destroy all views opened for it.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   217
571fd5eee315 Initial revision
claus
parents:
diff changeset
   218
Do you really want to do this ?'.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   219
    box okText:'yes'.
571fd5eee315 Initial revision
claus
parents:
diff changeset
   220
    box yesAction:[
45
950b84ba89e6 *** empty log message ***
claus
parents: 40
diff changeset
   221
	self doDestroy
0
571fd5eee315 Initial revision
claus
parents:
diff changeset
   222
    ].
571fd5eee315 Initial revision
claus
parents:
diff changeset
   223
    box showAtPointer
571fd5eee315 Initial revision
claus
parents:
diff changeset
   224
! !