ProgressIndicator.st
author tz
Mon, 30 Mar 1998 14:27:33 +0200
changeset 826 d8470e26754d
parent 634 cee0d1f706e1
child 843 34de7f6bea2d
permissions -rw-r--r--
revised for the docu (step 4)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
62
claus
parents: 50
diff changeset
     1
"
claus
parents: 50
diff changeset
     2
 COPYRIGHT (c) 1995 by Claus Gittinger
claus
parents: 50
diff changeset
     3
	      All Rights Reserved
claus
parents: 50
diff changeset
     4
claus
parents: 50
diff changeset
     5
 This software is furnished under a license and may be used
claus
parents: 50
diff changeset
     6
 only in accordance with the terms of that license and with the
claus
parents: 50
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
claus
parents: 50
diff changeset
     8
 be provided or otherwise made available to, or used by, any
claus
parents: 50
diff changeset
     9
 other person.  No title to or ownership of the software is
claus
parents: 50
diff changeset
    10
 hereby transferred.
claus
parents: 50
diff changeset
    11
"
50
claus
parents:
diff changeset
    12
claus
parents:
diff changeset
    13
View subclass:#ProgressIndicator
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
    14
	instanceVariableNames:'percentage showPercentage fgColor bgColor connectedTop
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
    15
		connectedLabel collector finishAction closeTopWhenDone'
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    16
	classVariableNames:''
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    17
	poolDictionaries:''
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    18
	category:'Views-Misc'
50
claus
parents:
diff changeset
    19
!
claus
parents:
diff changeset
    20
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
    21
!ProgressIndicator class methodsFor:'documentation'!
50
claus
parents:
diff changeset
    22
62
claus
parents: 50
diff changeset
    23
copyright
claus
parents: 50
diff changeset
    24
"
claus
parents: 50
diff changeset
    25
 COPYRIGHT (c) 1995 by Claus Gittinger
claus
parents: 50
diff changeset
    26
	      All Rights Reserved
claus
parents: 50
diff changeset
    27
claus
parents: 50
diff changeset
    28
 This software is furnished under a license and may be used
claus
parents: 50
diff changeset
    29
 only in accordance with the terms of that license and with the
claus
parents: 50
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
claus
parents: 50
diff changeset
    31
 be provided or otherwise made available to, or used by, any
claus
parents: 50
diff changeset
    32
 other person.  No title to or ownership of the software is
claus
parents: 50
diff changeset
    33
 hereby transferred.
claus
parents: 50
diff changeset
    34
"
claus
parents: 50
diff changeset
    35
!
claus
parents: 50
diff changeset
    36
50
claus
parents:
diff changeset
    37
documentation
claus
parents:
diff changeset
    38
"
claus
parents:
diff changeset
    39
    a view showing a rectangle filled according the percentage value.
claus
parents:
diff changeset
    40
    Can be used as a progress indicator a la MSwindows.
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    41
    Can be used as a widget within an application, or
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    42
    via the convenient #inBox: instance creation messages,
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    43
    which shows a progressDisplay in a modalBox, while some
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    44
    action is performed.
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    45
    See examples.
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    46
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    47
    [author:]
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    48
	Claus Gittinger
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    49
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    50
    [see also:]
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    51
	ActionWaitBox AnimatedLabel
50
claus
parents:
diff changeset
    52
"
claus
parents:
diff changeset
    53
!
claus
parents:
diff changeset
    54
claus
parents:
diff changeset
    55
examples
claus
parents:
diff changeset
    56
"
62
claus
parents: 50
diff changeset
    57
    basic (internal) interface
claus
parents: 50
diff changeset
    58
    (if progress indicator is to be used in a complex box ...):
50
claus
parents:
diff changeset
    59
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    60
    Before you get frustrated - see the convenient-interface examples
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    61
    at the end ;-)
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    62
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    63
									[exBegin]
50
claus
parents:
diff changeset
    64
      |top p h|
claus
parents:
diff changeset
    65
62
claus
parents: 50
diff changeset
    66
      top := ModalBox new.
50
claus
parents:
diff changeset
    67
      top extent:300@100.
claus
parents:
diff changeset
    68
      top label:'Progress'.
claus
parents:
diff changeset
    69
      p := ProgressIndicator in:top.
claus
parents:
diff changeset
    70
      p origin:(0.0@0.5) corner:(1.0@0.5).
claus
parents:
diff changeset
    71
      p level:-1.
62
claus
parents: 50
diff changeset
    72
      h := p preferredExtent y.
50
claus
parents:
diff changeset
    73
      p topInset:(h // 2) negated; 
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    74
	bottomInset:(h // 2) negated;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    75
	leftInset:5;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    76
	rightInset:5.
50
claus
parents:
diff changeset
    77
claus
parents:
diff changeset
    78
      [
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    79
	  1 to:100 do:[:val |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    80
	      (Delay forSeconds:0.05) wait.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    81
	      p percentage:val 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    82
	  ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    83
	  top hide.
62
claus
parents: 50
diff changeset
    84
      ] fork.
claus
parents: 50
diff changeset
    85
      top open.
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    86
									[exEnd]
50
claus
parents:
diff changeset
    87
claus
parents:
diff changeset
    88
    changing colors, turning percentage display off:
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
    89
									[exBegin]
50
claus
parents:
diff changeset
    90
      |top p h|
claus
parents:
diff changeset
    91
claus
parents:
diff changeset
    92
      top := StandardSystemView new.
claus
parents:
diff changeset
    93
      top extent:300@100.
claus
parents:
diff changeset
    94
      top label:'Progress'.
claus
parents:
diff changeset
    95
      p := ProgressIndicator in:top.
claus
parents:
diff changeset
    96
      p origin:(0.0@0.5) corner:(1.0@0.5).
claus
parents:
diff changeset
    97
      p level:-1.
claus
parents:
diff changeset
    98
      p showPercentage:false.
claus
parents:
diff changeset
    99
      p foregroundColor:(Color red).
claus
parents:
diff changeset
   100
      h := 10.
claus
parents:
diff changeset
   101
      p topInset:(h // 2) negated; 
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   102
	bottomInset:(h // 2) negated;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   103
	leftInset:5;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   104
	rightInset:5.
50
claus
parents:
diff changeset
   105
      top open.
claus
parents:
diff changeset
   106
      [
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   107
	  1 to:100 do:[:val |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   108
	      (Delay forSeconds:0.05) wait.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   109
	      p percentage:val 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   110
	  ]
50
claus
parents:
diff changeset
   111
      ] fork
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   112
									[exEnd]
50
claus
parents:
diff changeset
   113
claus
parents:
diff changeset
   114
    with border (2D look):
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   115
									[exBegin]
50
claus
parents:
diff changeset
   116
      |top p h|
claus
parents:
diff changeset
   117
claus
parents:
diff changeset
   118
      top := StandardSystemView new.
claus
parents:
diff changeset
   119
      top extent:300@100.
claus
parents:
diff changeset
   120
      top label:'Progress'.
claus
parents:
diff changeset
   121
      p := ProgressIndicator in:top.
claus
parents:
diff changeset
   122
      p origin:(0.0@0.5) corner:(1.0@0.5).
claus
parents:
diff changeset
   123
      p borderWidth:1.
62
claus
parents: 50
diff changeset
   124
      h := p preferredExtent y.
50
claus
parents:
diff changeset
   125
      p topInset:(h // 2) negated; 
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   126
	bottomInset:(h // 2) negated;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   127
	leftInset:5;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   128
	rightInset:5.
50
claus
parents:
diff changeset
   129
      top open.
claus
parents:
diff changeset
   130
      [
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   131
	  1 to:100 do:[:val |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   132
	      (Delay forSeconds:0.05) wait.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   133
	      p percentage:val 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   134
	  ]
50
claus
parents:
diff changeset
   135
      ] fork
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   136
									[exEnd]
50
claus
parents:
diff changeset
   137
claus
parents:
diff changeset
   138
claus
parents:
diff changeset
   139
    getting progress from a model:
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   140
									[exBegin]
50
claus
parents:
diff changeset
   141
      |model top p h|
claus
parents:
diff changeset
   142
claus
parents:
diff changeset
   143
      model := 0 asValue.
claus
parents:
diff changeset
   144
claus
parents:
diff changeset
   145
      top := StandardSystemView new.
claus
parents:
diff changeset
   146
      top extent:300@100.
claus
parents:
diff changeset
   147
      top label:'Progress'.
claus
parents:
diff changeset
   148
      p := ProgressIndicator in:top.
claus
parents:
diff changeset
   149
      p model:model.
claus
parents:
diff changeset
   150
      p origin:(0.0@0.5) corner:(1.0@0.5).
claus
parents:
diff changeset
   151
      p level:-1.
62
claus
parents: 50
diff changeset
   152
      h := p preferredExtent y.
50
claus
parents:
diff changeset
   153
      p topInset:(h // 2) negated; 
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   154
	bottomInset:(h // 2) negated;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   155
	leftInset:5;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   156
	rightInset:5.
50
claus
parents:
diff changeset
   157
      top open.
claus
parents:
diff changeset
   158
claus
parents:
diff changeset
   159
      [
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   160
	  1 to:100 do:[:val |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   161
	      (Delay forSeconds:0.05) wait.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   162
	      model value:val 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   163
	  ]
50
claus
parents:
diff changeset
   164
      ] fork
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   165
									[exEnd]
50
claus
parents:
diff changeset
   166
62
claus
parents: 50
diff changeset
   167
50
claus
parents:
diff changeset
   168
    concrete example:
claus
parents:
diff changeset
   169
      search all files in the source directory for a string
claus
parents:
diff changeset
   170
      using grep. Show progress while doing so.
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   171
									[exBegin]
50
claus
parents:
diff changeset
   172
      |top p h names done|
claus
parents:
diff changeset
   173
claus
parents:
diff changeset
   174
      top := StandardSystemView new.
claus
parents:
diff changeset
   175
      top extent:300@100.
claus
parents:
diff changeset
   176
      top label:'Searching ...'.
claus
parents:
diff changeset
   177
      p := ProgressIndicator in:top.
claus
parents:
diff changeset
   178
      p origin:(0.0@0.5) corner:(1.0@0.5).
claus
parents:
diff changeset
   179
      p level:-1.
62
claus
parents: 50
diff changeset
   180
      h := p preferredExtent y.
50
claus
parents:
diff changeset
   181
      p topInset:(h // 2) negated; 
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   182
	bottomInset:(h // 2) negated;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   183
	leftInset:5;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   184
	rightInset:5.
50
claus
parents:
diff changeset
   185
      top openWithPriority:(Processor activePriority + 1).
claus
parents:
diff changeset
   186
claus
parents:
diff changeset
   187
      names := 'source' asFilename directoryContents.
claus
parents:
diff changeset
   188
      done := 0.
claus
parents:
diff changeset
   189
      names do:[:aName |
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   190
	|fn stream line|
50
claus
parents:
diff changeset
   191
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   192
	p percentage:(done / names size * 100).
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   193
	fn := ('source/' , aName) asFilename.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   194
	fn isDirectory ifFalse:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   195
	    stream := fn readStream.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   196
	    [stream atEnd] whileFalse:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   197
		line := stream nextLine.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   198
		(line findString:'subclass:') ~~ 0 ifTrue:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   199
		    Transcript showCR:line
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   200
		].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   201
	    ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   202
	    stream close.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   203
	].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   204
	done := done + 1
50
claus
parents:
diff changeset
   205
      ].
claus
parents:
diff changeset
   206
claus
parents:
diff changeset
   207
      top destroy
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   208
									[exEnd]
62
claus
parents: 50
diff changeset
   209
claus
parents: 50
diff changeset
   210
claus
parents: 50
diff changeset
   211
   using the convenient inBox-interface
claus
parents: 50
diff changeset
   212
claus
parents: 50
diff changeset
   213
   (this creates a box and an activity label and evaluates a block
claus
parents: 50
diff changeset
   214
    to indicate ...)
claus
parents: 50
diff changeset
   215
claus
parents: 50
diff changeset
   216
    basic interface demonstration:
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   217
									[exBegin]
62
claus
parents: 50
diff changeset
   218
      |p|
claus
parents: 50
diff changeset
   219
claus
parents: 50
diff changeset
   220
      p := ProgressIndicator 
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   221
		inBoxWithLabel:'doing something  ...'
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   222
		abortable:true.
62
claus
parents: 50
diff changeset
   223
      p showProgressOf:
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   224
	    [:progressValue :currentAction |
62
claus
parents: 50
diff changeset
   225
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   226
	      1 to:100 do:[:val |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   227
		  (Delay forSeconds:0.05) wait.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   228
		  val == 25 ifTrue:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   229
		      currentAction value:'still going ...'
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   230
		  ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   231
		  val == 50 ifTrue:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   232
		      currentAction value:'halfway through ...'
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   233
		  ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   234
		  val == 75 ifTrue:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   235
		      currentAction value:'almost finished ...'
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   236
		  ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   237
		  progressValue value:val 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   238
	      ]
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   239
	    ]
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   240
									[exEnd]
62
claus
parents: 50
diff changeset
   241
claus
parents: 50
diff changeset
   242
claus
parents: 50
diff changeset
   243
    above search example using this convenient interface:
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   244
									[exBegin]
62
claus
parents: 50
diff changeset
   245
      |p|
claus
parents: 50
diff changeset
   246
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   247
      p := ProgressIndicator 
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   248
		inBoxWithLabel:'searching files ...'
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   249
		abortable:false.
62
claus
parents: 50
diff changeset
   250
      p showProgressOf:
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   251
	    [:progressValue :currentAction |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   252
		|names nDone|
62
claus
parents: 50
diff changeset
   253
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   254
		names := 'source' asFilename directoryContents.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   255
		nDone := 0.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   256
		names do:[:aName |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   257
		  |fn stream line|
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   258
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   259
		  progressValue value:(nDone / names size * 100).
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   260
		  currentAction value:'searching ' , 'source/' , aName , ' ...'.
62
claus
parents: 50
diff changeset
   261
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   262
		  fn := ('source/' , aName) asFilename.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   263
		  fn isDirectory ifFalse:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   264
		      stream := fn readStream.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   265
		      [stream atEnd] whileFalse:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   266
			  line := stream nextLine.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   267
			  (line findString:'subclass:') ~~ 0 ifTrue:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   268
			      Transcript showCR:line
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   269
			  ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   270
		      ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   271
		      stream close.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   272
		  ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   273
		  nDone := nDone + 1
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   274
		].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   275
	    ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   276
									[exEnd]
62
claus
parents: 50
diff changeset
   277
claus
parents: 50
diff changeset
   278
claus
parents: 50
diff changeset
   279
    a nice example: copying files a la windows ...
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   280
    the following copies all files to /dev/null.
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   281
									[exBegin]
62
claus
parents: 50
diff changeset
   282
      |p|
claus
parents: 50
diff changeset
   283
claus
parents: 50
diff changeset
   284
      (ProgressIndicator 
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   285
		inBoxWithLabel:'copy files to /dev/null ...'
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   286
		abortable:true)
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   287
	 showProgressOf:
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   288
	    [:progressValue :currentAction |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   289
		|files nFiles nDone|
62
claus
parents: 50
diff changeset
   290
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   291
		files := '.' asFilename directoryContents.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   292
		nFiles := files size.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   293
		nDone := 0.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   294
		files do:[:aFileName |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   295
		    |percent|
50
claus
parents:
diff changeset
   296
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   297
		    nDone := nDone + 1.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   298
		    percent := nDone / nFiles * 100.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   299
		    progressValue value:percent. 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   300
		    aFileName asFilename isDirectory ifTrue:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   301
			Transcript showCR:('skipping ' , aFileName , ' ...'). 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   302
			currentAction value:('skipping ' , aFileName , ' ...'). 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   303
		    ] ifFalse:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   304
			Transcript showCR:('copying ' , aFileName , ' ...').
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   305
			currentAction value:('copying ' , aFileName , ' ...').
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   306
			Object errorSignal handle:[:ex |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   307
			    self warn:'an error occurred while copying ' , aFileName.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   308
			    ex return
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   309
			] do:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   310
			    aFileName asFilename copyTo:'/dev/null'.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   311
			]
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   312
		    ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   313
		].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   314
	    ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   315
									[exEnd]
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   316
"
50
claus
parents:
diff changeset
   317
! !
claus
parents:
diff changeset
   318
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   319
!ProgressIndicator class methodsFor:'instance creation'!
62
claus
parents: 50
diff changeset
   320
claus
parents: 50
diff changeset
   321
inBox
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   322
    "create a topView containing an instance of myself,
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   323
     for later use with #showProgressOf:"
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   324
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   325
    ^ self inBoxWithLabel:'executing ...' abortable:false
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   326
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   327
    "Modified: 22.10.1997 / 21:08:37 / cg"
62
claus
parents: 50
diff changeset
   328
!
claus
parents: 50
diff changeset
   329
claus
parents: 50
diff changeset
   330
inBoxWithLabel:aLabel
claus
parents: 50
diff changeset
   331
    "create a topView containing an instance of myself,
claus
parents: 50
diff changeset
   332
     for later use with #showProgressOf:"
claus
parents: 50
diff changeset
   333
claus
parents: 50
diff changeset
   334
    ^ self inBoxWithLabel:aLabel abortable:false 
claus
parents: 50
diff changeset
   335
!
claus
parents: 50
diff changeset
   336
claus
parents: 50
diff changeset
   337
inBoxWithLabel:aLabel abortable:abortable
claus
parents: 50
diff changeset
   338
    "create a topView containing an instance of myself,
claus
parents: 50
diff changeset
   339
     for later use with #showProgressOf:"
claus
parents: 50
diff changeset
   340
219
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   341
    ^ self
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   342
	inBoxWithLabel:aLabel   
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   343
	text:''
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   344
	abortable:abortable
219
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   345
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   346
    "Modified: 17.7.1996 / 15:14:58 / cg"
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   347
!
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   348
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   349
inBoxWithLabel:aLabel icon:anIcon text:text abortable:abortable view:additionalView closeWhenDone:closeWhenDoneBoolean
219
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   350
    "create a topView containing an instance of myself,
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   351
     for later use with #showProgressOf:"
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   352
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   353
    |top p l h y y2|
62
claus
parents: 50
diff changeset
   354
claus
parents: 50
diff changeset
   355
    top := Dialog new.
claus
parents: 50
diff changeset
   356
    top label:aLabel.
claus
parents: 50
diff changeset
   357
    top cursor:(Cursor wait).
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   358
    y2 := 0.
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   359
    anIcon notNil ifTrue:[
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   360
        y := top yPosition.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   361
        l := top addTextLabel:anIcon.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   362
        l borderWidth:0.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   363
        l adjust:#left.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   364
        l cursor:(Cursor wait).
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   365
        y2 := top yPosition.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   366
        top yPosition:y.
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   367
    ].
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   368
219
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   369
    l := top addTextLabel:text.
62
claus
parents: 50
diff changeset
   370
    l borderWidth:0.
74
claus
parents: 62
diff changeset
   371
    l adjust:#left.
62
claus
parents: 50
diff changeset
   372
    l cursor:(Cursor wait).
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   373
    anIcon notNil ifTrue: [l leftInset:(anIcon width + 10)].
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   374
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   375
    top yPosition:(top yPosition max:y2).
62
claus
parents: 50
diff changeset
   376
claus
parents: 50
diff changeset
   377
    top addVerticalSpace.
claus
parents: 50
diff changeset
   378
claus
parents: 50
diff changeset
   379
    p := ProgressIndicator new.
claus
parents: 50
diff changeset
   380
    p extent:(1.0 @ p preferredExtent y).
claus
parents: 50
diff changeset
   381
    p level:-1.
claus
parents: 50
diff changeset
   382
    p leftInset:5;
claus
parents: 50
diff changeset
   383
      rightInset:5.
claus
parents: 50
diff changeset
   384
    p cursor:(Cursor wait).
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   385
    p closeTopWhenDone:closeWhenDoneBoolean.
62
claus
parents: 50
diff changeset
   386
    p connectToTop:top label:l.
claus
parents: 50
diff changeset
   387
claus
parents: 50
diff changeset
   388
    top addComponent:p.
claus
parents: 50
diff changeset
   389
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   390
    additionalView notNil ifTrue:[
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   391
        top addComponent:additionalView.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   392
        additionalView extent:(1.0 @ additionalView preferredExtent y).
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   393
    ].
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   394
62
claus
parents: 50
diff changeset
   395
    abortable ifTrue:[
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   396
        top addVerticalSpace.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   397
        top addAbortButton
62
claus
parents: 50
diff changeset
   398
    ].
claus
parents: 50
diff changeset
   399
claus
parents: 50
diff changeset
   400
    ^ p
219
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   401
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   402
    "Created: 17.7.1996 / 15:14:33 / cg"
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   403
    "Modified: 17.7.1996 / 15:16:58 / cg"
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   404
!
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   405
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   406
inBoxWithLabel:aLabel text:text abortable:abortable
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   407
    "create a topView containing an instance of myself,
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   408
     for later use with #showProgressOf:"
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   409
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   410
    ^ self
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   411
	inBoxWithLabel:aLabel 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   412
	text:text 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   413
	abortable:abortable 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   414
	view:nil
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   415
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   416
!
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   417
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   418
inBoxWithLabel:aLabel text:text abortable:abortable view:additionalView
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   419
    "create a topView containing an instance of myself,
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   420
     for later use with #showProgressOf:"
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   421
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   422
    ^ self
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   423
	inBoxWithLabel:aLabel 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   424
	text:text 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   425
	abortable:abortable 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   426
	view:additionalView 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   427
	closeWhenDone:true
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   428
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   429
!
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   430
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   431
inBoxWithLabel:aLabel text:text abortable:abortable view:additionalView closeWhenDone:closeWhenDoneBoolean
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   432
    "create a topView containing an instance of myself,
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   433
     for later use with #showProgressOf:"
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   434
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   435
    ^ self
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   436
	inBoxWithLabel:aLabel 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   437
	icon:nil
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   438
	text:text 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   439
	abortable:abortable 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   440
	view:additionalView 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   441
	closeWhenDone:closeWhenDoneBoolean
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   442
62
claus
parents: 50
diff changeset
   443
! !
claus
parents: 50
diff changeset
   444
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   445
!ProgressIndicator methodsFor:'accessing'!
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   446
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   447
percentage:aNumber
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   448
    "set the percentage"
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   449
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   450
    |newPercentage|
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   451
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   452
    newPercentage := ((aNumber max:0) min:100) rounded.
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   453
    newPercentage ~~ percentage ifTrue:[
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   454
	percentage := newPercentage.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   455
	shown ifTrue:[self invalidate].
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   456
    ]
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   457
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   458
    "Modified: 29.3.1997 / 16:08:00 / cg"
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   459
! !
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   460
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   461
!ProgressIndicator methodsFor:'accessing - behavior'!
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   462
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   463
closeTopWhenDone:aBoolean
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   464
    "set/clear the close-topView-when-done flag"
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   465
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   466
    closeTopWhenDone := aBoolean
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   467
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   468
    "Created: 3.9.1996 / 14:22:03 / cg"
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   469
    "Modified: 29.3.1997 / 16:08:19 / cg"
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   470
!
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   471
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   472
finishAction:aBlock 
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   473
    "define an action to be performed when finished"
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   474
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   475
    finishAction := aBlock
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   476
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   477
    "Created: 3.9.1996 / 14:15:15 / cg"
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   478
    "Modified: 29.3.1997 / 16:08:35 / cg"
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   479
! !
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   480
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   481
!ProgressIndicator methodsFor:'accessing - look'!
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   482
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   483
backgroundColor 
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   484
    "return the percentage displays background color"
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   485
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   486
    ^ bgColor
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   487
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   488
!
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   489
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   490
backgroundColor:aColor 
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   491
    "set the percentage displays background color"
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   492
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   493
    aColor ~~ bgColor ifTrue:[
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   494
        bgColor := aColor.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   495
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   496
        shown ifTrue:[
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   497
            self invalidate
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   498
        ]
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   499
    ].
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   500
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   501
!
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   502
335
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   503
foregroundColor 
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   504
    "return the percentage displays foreground color"
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   505
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   506
    ^ fgColor
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   507
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   508
    "Created: 29.3.1997 / 16:12:28 / cg"
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   509
!
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   510
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   511
foregroundColor:aColor 
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   512
    "set the percentage displays foreground color"
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   513
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   514
    aColor ~~ fgColor ifTrue:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   515
	fgColor := aColor.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   516
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   517
	shown ifTrue:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   518
	    self invalidate
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   519
	]
336
5199e2058981 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   520
    ].
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   521
347
3264e5caa799 fixed #fgColor;
Claus Gittinger <cg@exept.de>
parents: 336
diff changeset
   522
    "Modified: 3.4.1997 / 21:14:32 / cg"
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   523
!
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   524
335
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   525
showPercentage
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   526
    "return the flag controlling if the percentage is to be shown numerically"
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   527
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   528
    ^ showPercentage
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   529
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   530
    "Created: 29.3.1997 / 16:12:39 / cg"
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   531
!
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   532
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   533
showPercentage:aBoolean
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   534
    "set/clear the flag controlling if the percentage is to be shown numerically"
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   535
336
5199e2058981 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   536
    showPercentage := aBoolean.
5199e2058981 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   537
    shown ifTrue:[
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   538
	self invalidate
336
5199e2058981 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   539
    ].
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   540
336
5199e2058981 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   541
    "Modified: 29.3.1997 / 16:27:37 / cg"
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   542
! !
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   543
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   544
!ProgressIndicator methodsFor:'change & update'!
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   545
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   546
update:aspect with:aParameter from:changedObject
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   547
    "react upon value changes of my model"
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   548
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   549
    (aspect == aspectMsg
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   550
    and:[changedObject == model]) ifTrue:[
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   551
	self percentage:(model perform:aspectMsg).
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   552
	^ self
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   553
    ].
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   554
    ^ super update:aspect with:aParameter from:changedObject
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   555
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   556
    "Modified: 22.10.1997 / 21:05:11 / cg"
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   557
! !
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   558
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   559
!ProgressIndicator methodsFor:'drawing'!
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   560
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   561
redraw
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   562
    "redraw the percentage bar and optional percentage string"
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   563
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   564
    |s rx sx sy sw m w h|
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   565
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   566
    m := margin + 1.
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   567
    w := width - (m*2).
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   568
    h := height - (m*2).
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   569
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   570
    rx := (w * percentage / 100) rounded.
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   571
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   572
    self paint:bgColor.
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   573
    self fillRectangleX:m y:m width:w height:h.
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   574
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   575
    showPercentage ifTrue:[
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   576
        s := percentage printString , ' %'.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   577
        sw := font widthOf:s.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   578
        sx := (width - sw) // 2.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   579
        sy := height // 2 + font descent + 2.
347
3264e5caa799 fixed #fgColor;
Claus Gittinger <cg@exept.de>
parents: 336
diff changeset
   580
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   581
        rx <= (sx+sw) ifTrue:[
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   582
            self paint:Color black.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   583
            self displayString:s x:sx y:sy.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   584
        ]
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   585
    ].
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   586
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   587
    self paint:fgColor.
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   588
    self fillRectangleX:m y:m width:rx height:h.
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   589
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   590
    showPercentage ifTrue:[
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   591
        rx >= sx ifTrue:[
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   592
            self clippingRectangle:(m@m corner:rx+1 @ h).
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   593
            self paint:Color white.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   594
            self displayString:s x:sx y:sy.
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   595
            self clippingRectangle:nil
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   596
        ]
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   597
    ]
347
3264e5caa799 fixed #fgColor;
Claus Gittinger <cg@exept.de>
parents: 336
diff changeset
   598
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   599
    "Modified: 22.10.1997 / 21:05:31 / cg"
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   600
! !
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   601
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   602
!ProgressIndicator methodsFor:'initialization'!
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   603
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   604
initStyle
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   605
    "initialize styleSheet values"
335
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   606
575
9279151db8f5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 574
diff changeset
   607
    <resource: #style (#'progressIndicator.viewBackground'
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   608
                      #'progressIndicator.foregroundColor')>
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   609
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   610
    super initStyle.
335
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   611
347
3264e5caa799 fixed #fgColor;
Claus Gittinger <cg@exept.de>
parents: 336
diff changeset
   612
    self is3D ifTrue:[
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   613
        self level:-1
347
3264e5caa799 fixed #fgColor;
Claus Gittinger <cg@exept.de>
parents: 336
diff changeset
   614
    ].
3264e5caa799 fixed #fgColor;
Claus Gittinger <cg@exept.de>
parents: 336
diff changeset
   615
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   616
    bgColor := styleSheet colorAt:'progressIndicator.viewBackground' default:Color white.
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   617
    fgColor := styleSheet colorAt:'progressIndicator.foregroundColor' default:Color blue.
335
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   618
    fgColor := fgColor onDevice:device.
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   619
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   620
    showPercentage := true.
335
6f007bdeae94 resource-tag & access methods.
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
   621
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   622
!
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   623
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   624
initialize
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   625
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   626
    super initialize.
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   627
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   628
    percentage := 0.
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   629
! !
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   630
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   631
!ProgressIndicator methodsFor:'private'!
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   632
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   633
connectToTop:top label:label
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   634
    connectedTop := top.
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   635
    connectedLabel := label
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   636
! !
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   637
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   638
!ProgressIndicator methodsFor:'queries'!
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   639
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   640
preferredExtent
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   641
    "return my preferred extent"
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   642
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   643
    preferredExtent notNil ifTrue:[
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   644
	^ preferredExtent
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   645
    ].
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   646
    ^ 100 @ (font height + font descent + ((margin + 1) * 2))
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   647
574
be7f980eb6dc commentary
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   648
    "Modified: 22.10.1997 / 21:07:17 / cg"
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   649
! !
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   650
62
claus
parents: 50
diff changeset
   651
!ProgressIndicator methodsFor:'showing progress'!
claus
parents: 50
diff changeset
   652
claus
parents: 50
diff changeset
   653
showProgressOf:aBlock
claus
parents: 50
diff changeset
   654
    "show progress, while evaluating aBlock.
claus
parents: 50
diff changeset
   655
     If the receiver has been created with inBox, show the
claus
parents: 50
diff changeset
   656
     box centered on the screen. If not, the view is assumed to
claus
parents: 50
diff changeset
   657
     be contained in another view, and no special startup actions
claus
parents: 50
diff changeset
   658
     are performed.
claus
parents: 50
diff changeset
   659
claus
parents: 50
diff changeset
   660
     The block is passed two arguments, the progressValue,
claus
parents: 50
diff changeset
   661
     which should be set to the percentage from time-to-time
claus
parents: 50
diff changeset
   662
     within the block and an action value, which should be set to
claus
parents: 50
diff changeset
   663
     the currently performed action (a string) from time to time.
claus
parents: 50
diff changeset
   664
     The second valueHolder can be left unchanged.
claus
parents: 50
diff changeset
   665
claus
parents: 50
diff changeset
   666
     Caveat: cannot (currently) suppress close of the box ..."
claus
parents: 50
diff changeset
   667
221
976e5a608dfb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 220
diff changeset
   668
    |progressValue labelValue p|
62
claus
parents: 50
diff changeset
   669
claus
parents: 50
diff changeset
   670
    progressValue := 0 asValue.
claus
parents: 50
diff changeset
   671
    labelValue := '' asValue.
claus
parents: 50
diff changeset
   672
claus
parents: 50
diff changeset
   673
    connectedLabel notNil ifTrue:[
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   674
	connectedLabel 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   675
	    model:labelValue;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   676
	    aspect:#value;
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   677
	    labelMessage:#value.
62
claus
parents: 50
diff changeset
   678
    ].
claus
parents: 50
diff changeset
   679
claus
parents: 50
diff changeset
   680
    self model:progressValue.
claus
parents: 50
diff changeset
   681
221
976e5a608dfb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 220
diff changeset
   682
    "/ the worker process
976e5a608dfb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 220
diff changeset
   683
62
claus
parents: 50
diff changeset
   684
    p := [
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   685
	[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   686
	    WindowGroup windowGroupQuerySignal handle:[:ex |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   687
		ex proceedWith:self topView windowGroup
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   688
	    ] do:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   689
		aBlock value:progressValue value:labelValue
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   690
	    ]
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   691
	] valueNowOrOnUnwindDo:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   692
	    p := nil.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   693
	    closeTopWhenDone ifTrue:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   694
		connectedTop hide
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   695
	    ].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   696
	    finishAction notNil ifTrue:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   697
		finishAction value
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   698
	    ]
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   699
	]
62
claus
parents: 50
diff changeset
   700
    ] fork.
claus
parents: 50
diff changeset
   701
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   702
    Processor activeProcess 
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   703
	withPriority:(Processor activePriority + 1)
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   704
	do:[
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   705
	    self topView show.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   706
	].
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   707
    p notNil ifTrue:[p terminate].
62
claus
parents: 50
diff changeset
   708
claus
parents: 50
diff changeset
   709
    "
claus
parents: 50
diff changeset
   710
      |p|
claus
parents: 50
diff changeset
   711
claus
parents: 50
diff changeset
   712
      p := ProgressIndicator inBox.
claus
parents: 50
diff changeset
   713
      p showProgressOf:
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   714
	    [:progressValue :currentAction |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   715
		1 to:100 do:[:percent |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   716
		    (Delay forSeconds:0.05) wait.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   717
		    progressValue value:percent 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   718
		].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   719
	    ].
62
claus
parents: 50
diff changeset
   720
claus
parents: 50
diff changeset
   721
      'it can be reused ...'.  
claus
parents: 50
diff changeset
   722
      p showProgressOf:
634
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   723
	    [:progressValue :currentAction |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   724
		1 to:100 by:5 do:[:percent |
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   725
		    (Delay forSeconds:0.05) wait.
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   726
		    progressValue value:percent 
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   727
		].
cee0d1f706e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 575
diff changeset
   728
	    ].
62
claus
parents: 50
diff changeset
   729
claus
parents: 50
diff changeset
   730
    "
219
44246b9b4288 use new windowGroupQuery for background process
Claus Gittinger <cg@exept.de>
parents: 201
diff changeset
   731
237
ecea4b3a34ce more interfaces
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   732
    "Modified: 3.9.1996 / 14:22:43 / cg"
62
claus
parents: 50
diff changeset
   733
! !
claus
parents: 50
diff changeset
   734
334
8af14110efdb comments & category changes
Claus Gittinger <cg@exept.de>
parents: 237
diff changeset
   735
!ProgressIndicator class methodsFor:'documentation'!
50
claus
parents:
diff changeset
   736
183
c63a4f284a6d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   737
version
826
d8470e26754d revised for the docu (step 4)
tz
parents: 634
diff changeset
   738
    ^ '$Header: /cvs/stx/stx/libwidg2/ProgressIndicator.st,v 1.19 1998-03-30 12:27:33 tz Exp $'
50
claus
parents:
diff changeset
   739
! !