platform-ui-home/R3_1/undo-redo-proposal/undo-redo support.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3, Mon Dec 20 21:55:06 2004 UTC revision 1.4, Mon Dec 20 22:54:58 2004 UTC
# Line 17  Line 17 
17   <o:DocumentProperties>   <o:DocumentProperties>
18    <o:Author>IBM_USER</o:Author>    <o:Author>IBM_USER</o:Author>
19    <o:LastAuthor>IBM_USER</o:LastAuthor>    <o:LastAuthor>IBM_USER</o:LastAuthor>
20    <o:Revision>7</o:Revision>    <o:Revision>8</o:Revision>
21    <o:TotalTime>4518</o:TotalTime>    <o:TotalTime>4519</o:TotalTime>
22    <o:LastPrinted>2004-11-08T17:14:00Z</o:LastPrinted>    <o:LastPrinted>2004-11-08T17:14:00Z</o:LastPrinted>
23    <o:Created>2004-12-20T21:30:00Z</o:Created>    <o:Created>2004-12-20T21:30:00Z</o:Created>
24    <o:LastSaved>2004-12-20T21:50:00Z</o:LastSaved>    <o:LastSaved>2004-12-20T22:54:00Z</o:LastSaved>
25    <o:Pages>1</o:Pages>    <o:Pages>1</o:Pages>
26    <o:Words>6341</o:Words>    <o:Words>6341</o:Words>
27    <o:Characters>36147</o:Characters>    <o:Characters>36147</o:Characters>
# Line 33  Line 33 
33   </o:DocumentProperties>   </o:DocumentProperties>
34  </xml><![endif]--><!--[if gte mso 9]><xml>  </xml><![endif]--><!--[if gte mso 9]><xml>
35   <w:WordDocument>   <w:WordDocument>
36      <w:SpellingState>Clean</w:SpellingState>
37      <w:GrammarState>Clean</w:GrammarState>
38    <w:Compatibility>    <w:Compatibility>
39     <w:BreakWrappedTables/>     <w:BreakWrappedTables/>
40     <w:SnapToGridInCell/>     <w:SnapToGridInCell/>
# Line 165  Line 167 
167          font-size:10.0pt;          font-size:10.0pt;
168          font-family:"Courier New";          font-family:"Courier New";
169          mso-fareast-font-family:"Times New Roman";}          mso-fareast-font-family:"Times New Roman";}
170    span.SpellE
171            {mso-style-name:"";
172            mso-spl-e:yes;}
173    span.GramE
174            {mso-style-name:"";
175            mso-gram-e:yes;}
176  @page Section1  @page Section1
177          {size:8.5in 11.0in;          {size:8.5in 11.0in;
178          margin:1.0in .75in .5in 1.0in;          margin:1.0in .75in .5in 1.0in;
# Line 175  Line 183 
183          {page:Section1;}          {page:Section1;}
184   /* List Definitions */   /* List Definitions */
185   @list l0   @list l0
         {mso-list-id:306130254;  
         mso-list-template-ids:-1505884488;}  
 @list l0:level1  
         {mso-level-number-format:bullet;  
         mso-level-text:\F0B7;  
         mso-level-tab-stop:.5in;  
         mso-level-number-position:left;  
         text-indent:-.25in;  
         mso-ansi-font-size:10.0pt;  
         font-family:Symbol;}  
 @list l1  
         {mso-list-id:322004125;  
         mso-list-template-ids:933166844;}  
 @list l2  
186          {mso-list-id:347761159;          {mso-list-id:347761159;
187          mso-list-type:hybrid;          mso-list-type:hybrid;
188          mso-list-template-ids:-1680017606 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}          mso-list-template-ids:-1680017606 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
189  @list l2:level1  @list l0:level1
190          {mso-level-number-format:bullet;          {mso-level-number-format:bullet;
191          mso-level-text:\F0B7;          mso-level-text:\F0B7;
192          mso-level-tab-stop:.5in;          mso-level-tab-stop:.5in;
193          mso-level-number-position:left;          mso-level-number-position:left;
194          text-indent:-.25in;          text-indent:-.25in;
195          font-family:Symbol;}          font-family:Symbol;}
196  @list l2:level2  @list l0:level2
197          {mso-level-tab-stop:1.0in;          {mso-level-tab-stop:1.0in;
198          mso-level-number-position:left;          mso-level-number-position:left;
199          text-indent:-.25in;}          text-indent:-.25in;}
200  @list l2:level3  @list l0:level3
201          {mso-level-tab-stop:1.5in;          {mso-level-tab-stop:1.5in;
202          mso-level-number-position:left;          mso-level-number-position:left;
203          text-indent:-.25in;}          text-indent:-.25in;}
204  @list l2:level4  @list l0:level4
205          {mso-level-tab-stop:2.0in;          {mso-level-tab-stop:2.0in;
206          mso-level-number-position:left;          mso-level-number-position:left;
207          text-indent:-.25in;}          text-indent:-.25in;}
208  @list l2:level5  @list l0:level5
209          {mso-level-tab-stop:2.5in;          {mso-level-tab-stop:2.5in;
210          mso-level-number-position:left;          mso-level-number-position:left;
211          text-indent:-.25in;}          text-indent:-.25in;}
212  @list l2:level6  @list l0:level6
213          {mso-level-tab-stop:3.0in;          {mso-level-tab-stop:3.0in;
214          mso-level-number-position:left;          mso-level-number-position:left;
215          text-indent:-.25in;}          text-indent:-.25in;}
216  @list l2:level7  @list l0:level7
217          {mso-level-tab-stop:3.5in;          {mso-level-tab-stop:3.5in;
218          mso-level-number-position:left;          mso-level-number-position:left;
219          text-indent:-.25in;}          text-indent:-.25in;}
220  @list l2:level8  @list l0:level8
221          {mso-level-tab-stop:4.0in;          {mso-level-tab-stop:4.0in;
222          mso-level-number-position:left;          mso-level-number-position:left;
223          text-indent:-.25in;}          text-indent:-.25in;}
224  @list l2:level9  @list l0:level9
225          {mso-level-tab-stop:4.5in;          {mso-level-tab-stop:4.5in;
226          mso-level-number-position:left;          mso-level-number-position:left;
227          text-indent:-.25in;}          text-indent:-.25in;}
228  @list l3  @list l1
229            {mso-list-id:364596818;
230            mso-list-template-ids:-488625314;}
231    @list l1:level1
232            {mso-level-number-format:bullet;
233            mso-level-text:\F0B7;
234            mso-level-tab-stop:.5in;
235            mso-level-number-position:left;
236            text-indent:-.25in;
237            mso-ansi-font-size:10.0pt;
238            font-family:Symbol;}
239    @list l2
240          {mso-list-id:604456885;          {mso-list-id:604456885;
241          mso-list-type:hybrid;          mso-list-type:hybrid;
242          mso-list-template-ids:1734899956 67698703 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}          mso-list-template-ids:1734899956 67698703 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
243  @list l3:level1  @list l2:level1
244          {mso-level-tab-stop:.5in;          {mso-level-tab-stop:.5in;
245          mso-level-number-position:left;          mso-level-number-position:left;
246          text-indent:-.25in;}          text-indent:-.25in;}
247  @list l3:level2  @list l2:level2
248          {mso-level-number-format:bullet;          {mso-level-number-format:bullet;
249          mso-level-text:o;          mso-level-text:o;
250          mso-level-tab-stop:1.0in;          mso-level-tab-stop:1.0in;
251          mso-level-number-position:left;          mso-level-number-position:left;
252          text-indent:-.25in;          text-indent:-.25in;
253          font-family:"Courier New";}          font-family:"Courier New";}
254  @list l3:level3  @list l2:level3
255          {mso-level-number-format:bullet;          {mso-level-number-format:bullet;
256          mso-level-text:\F0A7;          mso-level-text:\F0A7;
257          mso-level-tab-stop:1.5in;          mso-level-tab-stop:1.5in;
258          mso-level-number-position:left;          mso-level-number-position:left;
259          text-indent:-.25in;          text-indent:-.25in;
260          font-family:Wingdings;}          font-family:Wingdings;}
261  @list l3:level4  @list l2:level4
262          {mso-level-number-format:bullet;          {mso-level-number-format:bullet;
263          mso-level-text:\F0B7;          mso-level-text:\F0B7;
264          mso-level-tab-stop:2.0in;          mso-level-tab-stop:2.0in;
265          mso-level-number-position:left;          mso-level-number-position:left;
266          text-indent:-.25in;          text-indent:-.25in;
267          font-family:Symbol;}          font-family:Symbol;}
268  @list l3:level5  @list l2:level5
269          {mso-level-tab-stop:2.5in;          {mso-level-tab-stop:2.5in;
270          mso-level-number-position:left;          mso-level-number-position:left;
271          text-indent:-.25in;}          text-indent:-.25in;}
272  @list l3:level6  @list l2:level6
273          {mso-level-tab-stop:3.0in;          {mso-level-tab-stop:3.0in;
274          mso-level-number-position:left;          mso-level-number-position:left;
275          text-indent:-.25in;}          text-indent:-.25in;}
276  @list l3:level7  @list l2:level7
277          {mso-level-tab-stop:3.5in;          {mso-level-tab-stop:3.5in;
278          mso-level-number-position:left;          mso-level-number-position:left;
279          text-indent:-.25in;}          text-indent:-.25in;}
280  @list l3:level8  @list l2:level8
281          {mso-level-tab-stop:4.0in;          {mso-level-tab-stop:4.0in;
282          mso-level-number-position:left;          mso-level-number-position:left;
283          text-indent:-.25in;}          text-indent:-.25in;}
284  @list l3:level9  @list l2:level9
285          {mso-level-tab-stop:4.5in;          {mso-level-tab-stop:4.5in;
286          mso-level-number-position:left;          mso-level-number-position:left;
287          text-indent:-.25in;}          text-indent:-.25in;}
288  @list l4  @list l3
289          {mso-list-id:798038152;          {mso-list-id:798038152;
290          mso-list-type:hybrid;          mso-list-type:hybrid;
291          mso-list-template-ids:-2087438622 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}          mso-list-template-ids:-2087438622 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
292  @list l4:level1  @list l3:level1
293          {mso-level-tab-stop:39.0pt;          {mso-level-tab-stop:39.0pt;
294          mso-level-number-position:left;          mso-level-number-position:left;
295          margin-left:39.0pt;          margin-left:39.0pt;
296          text-indent:-.25in;}          text-indent:-.25in;}
297  @list l4:level2  @list l3:level2
298          {mso-level-tab-stop:1.0in;          {mso-level-tab-stop:1.0in;
299          mso-level-number-position:left;          mso-level-number-position:left;
300          text-indent:-.25in;}          text-indent:-.25in;}
301  @list l4:level3  @list l3:level3
302          {mso-level-tab-stop:1.5in;          {mso-level-tab-stop:1.5in;
303          mso-level-number-position:left;          mso-level-number-position:left;
304          text-indent:-.25in;}          text-indent:-.25in;}
305  @list l4:level4  @list l3:level4
306          {mso-level-tab-stop:2.0in;          {mso-level-tab-stop:2.0in;
307          mso-level-number-position:left;          mso-level-number-position:left;
308          text-indent:-.25in;}          text-indent:-.25in;}
309  @list l4:level5  @list l3:level5
310          {mso-level-tab-stop:2.5in;          {mso-level-tab-stop:2.5in;
311          mso-level-number-position:left;          mso-level-number-position:left;
312          text-indent:-.25in;}          text-indent:-.25in;}
313  @list l4:level6  @list l3:level6
314          {mso-level-tab-stop:3.0in;          {mso-level-tab-stop:3.0in;
315          mso-level-number-position:left;          mso-level-number-position:left;
316          text-indent:-.25in;}          text-indent:-.25in;}
317  @list l4:level7  @list l3:level7
318          {mso-level-tab-stop:3.5in;          {mso-level-tab-stop:3.5in;
319          mso-level-number-position:left;          mso-level-number-position:left;
320          text-indent:-.25in;}          text-indent:-.25in;}
321  @list l4:level8  @list l3:level8
322          {mso-level-tab-stop:4.0in;          {mso-level-tab-stop:4.0in;
323          mso-level-number-position:left;          mso-level-number-position:left;
324          text-indent:-.25in;}          text-indent:-.25in;}
325  @list l4:level9  @list l3:level9
326          {mso-level-tab-stop:4.5in;          {mso-level-tab-stop:4.5in;
327          mso-level-number-position:left;          mso-level-number-position:left;
328          text-indent:-.25in;}          text-indent:-.25in;}
329  @list l5  @list l4
330          {mso-list-id:1085106306;          {mso-list-id:1085106306;
331          mso-list-type:hybrid;          mso-list-type:hybrid;
332          mso-list-template-ids:1015583604 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}          mso-list-template-ids:1015583604 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
333  @list l5:level1  @list l4:level1
334          {mso-level-tab-stop:.5in;          {mso-level-tab-stop:.5in;
335          mso-level-number-position:left;          mso-level-number-position:left;
336          text-indent:-.25in;}          text-indent:-.25in;}
337  @list l5:level2  @list l4:level2
338          {mso-level-tab-stop:1.0in;          {mso-level-tab-stop:1.0in;
339          mso-level-number-position:left;          mso-level-number-position:left;
340          text-indent:-.25in;}          text-indent:-.25in;}
341  @list l5:level3  @list l4:level3
342          {mso-level-tab-stop:1.5in;          {mso-level-tab-stop:1.5in;
343          mso-level-number-position:left;          mso-level-number-position:left;
344          text-indent:-.25in;}          text-indent:-.25in;}
345  @list l5:level4  @list l4:level4
346          {mso-level-tab-stop:2.0in;          {mso-level-tab-stop:2.0in;
347          mso-level-number-position:left;          mso-level-number-position:left;
348          text-indent:-.25in;}          text-indent:-.25in;}
349  @list l5:level5  @list l4:level5
350          {mso-level-tab-stop:2.5in;          {mso-level-tab-stop:2.5in;
351          mso-level-number-position:left;          mso-level-number-position:left;
352          text-indent:-.25in;}          text-indent:-.25in;}
353  @list l5:level6  @list l4:level6
354          {mso-level-tab-stop:3.0in;          {mso-level-tab-stop:3.0in;
355          mso-level-number-position:left;          mso-level-number-position:left;
356          text-indent:-.25in;}          text-indent:-.25in;}
357  @list l5:level7  @list l4:level7
358          {mso-level-tab-stop:3.5in;          {mso-level-tab-stop:3.5in;
359          mso-level-number-position:left;          mso-level-number-position:left;
360          text-indent:-.25in;}          text-indent:-.25in;}
361  @list l5:level8  @list l4:level8
362          {mso-level-tab-stop:4.0in;          {mso-level-tab-stop:4.0in;
363          mso-level-number-position:left;          mso-level-number-position:left;
364          text-indent:-.25in;}          text-indent:-.25in;}
365  @list l5:level9  @list l4:level9
366          {mso-level-tab-stop:4.5in;          {mso-level-tab-stop:4.5in;
367          mso-level-number-position:left;          mso-level-number-position:left;
368          text-indent:-.25in;}          text-indent:-.25in;}
369    @list l5
370            {mso-list-id:1167818358;
371            mso-list-template-ids:-1827253532;}
372  @list l6  @list l6
373            {mso-list-id:1292246357;
374            mso-list-template-ids:24384264;}
375    @list l7
376          {mso-list-id:1478297229;          {mso-list-id:1478297229;
377          mso-list-type:hybrid;          mso-list-type:hybrid;
378          mso-list-template-ids:-438127954 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}          mso-list-template-ids:-438127954 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
379  @list l6:level1  @list l7:level1
380          {mso-level-number-format:bullet;          {mso-level-number-format:bullet;
381          mso-level-text:\F0B7;          mso-level-text:\F0B7;
382          mso-level-tab-stop:.5in;          mso-level-tab-stop:.5in;
383          mso-level-number-position:left;          mso-level-number-position:left;
384          text-indent:-.25in;          text-indent:-.25in;
385          font-family:Symbol;}          font-family:Symbol;}
386  @list l6:level2  @list l7:level2
387          {mso-level-tab-stop:1.0in;          {mso-level-tab-stop:1.0in;
388          mso-level-number-position:left;          mso-level-number-position:left;
389          text-indent:-.25in;}          text-indent:-.25in;}
390  @list l6:level3  @list l7:level3
391          {mso-level-tab-stop:1.5in;          {mso-level-tab-stop:1.5in;
392          mso-level-number-position:left;          mso-level-number-position:left;
393          text-indent:-.25in;}          text-indent:-.25in;}
394  @list l6:level4  @list l7:level4
395          {mso-level-tab-stop:2.0in;          {mso-level-tab-stop:2.0in;
396          mso-level-number-position:left;          mso-level-number-position:left;
397          text-indent:-.25in;}          text-indent:-.25in;}
398  @list l6:level5  @list l7:level5
399          {mso-level-tab-stop:2.5in;          {mso-level-tab-stop:2.5in;
400          mso-level-number-position:left;          mso-level-number-position:left;
401          text-indent:-.25in;}          text-indent:-.25in;}
402  @list l6:level6  @list l7:level6
403          {mso-level-tab-stop:3.0in;          {mso-level-tab-stop:3.0in;
404          mso-level-number-position:left;          mso-level-number-position:left;
405          text-indent:-.25in;}          text-indent:-.25in;}
406  @list l6:level7  @list l7:level7
407          {mso-level-tab-stop:3.5in;          {mso-level-tab-stop:3.5in;
408          mso-level-number-position:left;          mso-level-number-position:left;
409          text-indent:-.25in;}          text-indent:-.25in;}
410  @list l6:level8  @list l7:level8
411          {mso-level-tab-stop:4.0in;          {mso-level-tab-stop:4.0in;
412          mso-level-number-position:left;          mso-level-number-position:left;
413          text-indent:-.25in;}          text-indent:-.25in;}
414  @list l6:level9  @list l7:level9
415          {mso-level-tab-stop:4.5in;          {mso-level-tab-stop:4.5in;
416          mso-level-number-position:left;          mso-level-number-position:left;
417          text-indent:-.25in;}          text-indent:-.25in;}
 @list l7  
         {mso-list-id:1644238654;  
         mso-list-template-ids:-1891084734;}  
418  @list l8  @list l8
419            {mso-list-id:1631007561;
420            mso-list-template-ids:1365561448;}
421    @list l8:level1
422            {mso-level-number-format:bullet;
423            mso-level-text:\F0B7;
424            mso-level-tab-stop:.5in;
425            mso-level-number-position:left;
426            text-indent:-.25in;
427            mso-ansi-font-size:10.0pt;
428            font-family:Symbol;}
429    @list l9
430          {mso-list-id:1723091313;          {mso-list-id:1723091313;
431          mso-list-type:hybrid;          mso-list-type:hybrid;
432          mso-list-template-ids:-1797201838 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}          mso-list-template-ids:-1797201838 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
433  @list l8:level1  @list l9:level1
434          {mso-level-tab-stop:.5in;          {mso-level-tab-stop:.5in;
435          mso-level-number-position:left;          mso-level-number-position:left;
436          text-indent:-.25in;}          text-indent:-.25in;}
437  @list l8:level2  @list l9:level2
438          {mso-level-tab-stop:1.0in;          {mso-level-tab-stop:1.0in;
439          mso-level-number-position:left;          mso-level-number-position:left;
440          text-indent:-.25in;}          text-indent:-.25in;}
441  @list l8:level3  @list l9:level3
442          {mso-level-tab-stop:1.5in;          {mso-level-tab-stop:1.5in;
443          mso-level-number-position:left;          mso-level-number-position:left;
444          text-indent:-.25in;}          text-indent:-.25in;}
445  @list l8:level4  @list l9:level4
446          {mso-level-tab-stop:2.0in;          {mso-level-tab-stop:2.0in;
447          mso-level-number-position:left;          mso-level-number-position:left;
448          text-indent:-.25in;}          text-indent:-.25in;}
449  @list l8:level5  @list l9:level5
450          {mso-level-tab-stop:2.5in;          {mso-level-tab-stop:2.5in;
451          mso-level-number-position:left;          mso-level-number-position:left;
452          text-indent:-.25in;}          text-indent:-.25in;}
453  @list l8:level6  @list l9:level6
454          {mso-level-tab-stop:3.0in;          {mso-level-tab-stop:3.0in;
455          mso-level-number-position:left;          mso-level-number-position:left;
456          text-indent:-.25in;}          text-indent:-.25in;}
457  @list l8:level7  @list l9:level7
458          {mso-level-tab-stop:3.5in;          {mso-level-tab-stop:3.5in;
459          mso-level-number-position:left;          mso-level-number-position:left;
460          text-indent:-.25in;}          text-indent:-.25in;}
461  @list l8:level8  @list l9:level8
462          {mso-level-tab-stop:4.0in;          {mso-level-tab-stop:4.0in;
463          mso-level-number-position:left;          mso-level-number-position:left;
464          text-indent:-.25in;}          text-indent:-.25in;}
465  @list l8:level9  @list l9:level9
466          {mso-level-tab-stop:4.5in;          {mso-level-tab-stop:4.5in;
467          mso-level-number-position:left;          mso-level-number-position:left;
468          text-indent:-.25in;}          text-indent:-.25in;}
469  @list l9  @list l10
470          {mso-list-id:1731031428;          {mso-list-id:1731031428;
471          mso-list-type:hybrid;          mso-list-type:hybrid;
472          mso-list-template-ids:1886447558 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}          mso-list-template-ids:1886447558 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
473  @list l9:level1  @list l10:level1
474          {mso-level-tab-stop:39.0pt;          {mso-level-tab-stop:39.0pt;
475          mso-level-number-position:left;          mso-level-number-position:left;
476          margin-left:39.0pt;          margin-left:39.0pt;
477          text-indent:-.25in;}          text-indent:-.25in;}
478  @list l9:level2  @list l10:level2
479          {mso-level-tab-stop:1.0in;          {mso-level-tab-stop:1.0in;
480          mso-level-number-position:left;          mso-level-number-position:left;
481          text-indent:-.25in;}          text-indent:-.25in;}
482  @list l9:level3  @list l10:level3
483          {mso-level-tab-stop:1.5in;          {mso-level-tab-stop:1.5in;
484          mso-level-number-position:left;          mso-level-number-position:left;
485          text-indent:-.25in;}          text-indent:-.25in;}
486  @list l9:level4  @list l10:level4
487          {mso-level-tab-stop:2.0in;          {mso-level-tab-stop:2.0in;
488          mso-level-number-position:left;          mso-level-number-position:left;
489          text-indent:-.25in;}          text-indent:-.25in;}
490  @list l9:level5  @list l10:level5
491          {mso-level-tab-stop:2.5in;          {mso-level-tab-stop:2.5in;
492          mso-level-number-position:left;          mso-level-number-position:left;
493          text-indent:-.25in;}          text-indent:-.25in;}
494  @list l9:level6  @list l10:level6
495          {mso-level-tab-stop:3.0in;          {mso-level-tab-stop:3.0in;
496          mso-level-number-position:left;          mso-level-number-position:left;
497          text-indent:-.25in;}          text-indent:-.25in;}
498  @list l9:level7  @list l10:level7
499          {mso-level-tab-stop:3.5in;          {mso-level-tab-stop:3.5in;
500          mso-level-number-position:left;          mso-level-number-position:left;
501          text-indent:-.25in;}          text-indent:-.25in;}
502  @list l9:level8  @list l10:level8
503          {mso-level-tab-stop:4.0in;          {mso-level-tab-stop:4.0in;
504          mso-level-number-position:left;          mso-level-number-position:left;
505          text-indent:-.25in;}          text-indent:-.25in;}
506  @list l9:level9  @list l10:level9
507          {mso-level-tab-stop:4.5in;          {mso-level-tab-stop:4.5in;
508          mso-level-number-position:left;          mso-level-number-position:left;
509          text-indent:-.25in;}          text-indent:-.25in;}
 @list l10  
         {mso-list-id:1830093817;  
         mso-list-template-ids:672403872;}  
510  @list l11  @list l11
511          {mso-list-id:1943487606;          {mso-list-id:1917208525;
512          mso-list-template-ids:1313531012;}          mso-list-template-ids:2040176132;}
 @list l11:level1  
         {mso-level-number-format:bullet;  
         mso-level-text:\F0B7;  
         mso-level-tab-stop:.5in;  
         mso-level-number-position:left;  
         text-indent:-.25in;  
         mso-ansi-font-size:10.0pt;  
         font-family:Symbol;}  
513  ol  ol
514          {margin-bottom:0in;}          {margin-bottom:0in;}
515  ul  ul
# Line 534  Line 542 
542  <h1>Generalized Undo Support in Eclipse</h1>  <h1>Generalized Undo Support in Eclipse</h1>
543    
544  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Last  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Last
545  updated:<span style='mso-spacerun:yes'>  </span></span><st1:date Month="12"  updated:<span style='mso-spacerun:yes'>  </span></span><st1:date Year="2004"
546  Day="17" Year="2004"><span style='font-size:10.0pt;font-family:Arial'>Dec. 17,  Day="17" Month="12"><span style='font-size:10.0pt;font-family:Arial'>Dec. 17,
547   2004</span></st1:date><span style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>   2004</span></st1:date><span style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
548    
549  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Status:<span  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Status:<span
550  style='mso-spacerun:yes'>  </span>Proposal <o:p></o:p></span></p>  style='mso-spacerun:yes'>  </span>Proposal <o:p></o:p></span></p>
551    
552  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>(see also </span><a  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>(<span
553    class=GramE>see</span> also </span><a
554  href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37716">37716</a>)<span  href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37716">37716</a>)<span
555  style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>  style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></p>
556    
557  <h2>Problem Description</h2>  <h2>Problem Description</h2>
558    
559  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>In R3.0.1  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>In R3.0.1 of
560  of the Eclipse SDK, there is no generalized support for undoing user  the Eclipse SDK, there is no generalized support for undoing user actions.<span
561  actions.<span style='mso-spacerun:yes'>  </span>Each plug-in is left to  style='mso-spacerun:yes'>  </span>Each plug-in is left to implement its own
562  implement its own strategy for undo, if at all.<span style='mso-spacerun:yes'>   strategy for undo, if at all.<span style='mso-spacerun:yes'>  </span>This
563  </span>This approach can cause problems for both Eclipse users and plug-in  approach can cause problems for both Eclipse users and plug-in developers:<o:p></o:p></span></p>
 developers:<o:p></o:p></span></p>  
564    
565  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><span  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><span
566  style='mso-spacerun:yes'> </span><o:p></o:p></span></p>  style='mso-spacerun:yes'> </span><o:p></o:p></span></p>
567    
568  <ul style='margin-top:0in' type=disc>  <ul style='margin-top:0in' type=disc>
569   <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'><span
570       style='font-size:10.0pt;font-family:Arial'>Undo and redo actions appear in       style='font-size:10.0pt;font-family:Arial'>Undo and redo actions appear in
571       different menus, causing user confusion and UI clutter<o:p></o:p></span></li>       different menus, causing user confusion and UI clutter<o:p></o:p></span></li>
572   <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'><span
573       style='font-size:10.0pt;font-family:Arial'>Undo and redo implementations       style='font-size:10.0pt;font-family:Arial'>Undo and redo implementations
574       may have different semantics.<o:p></o:p></span></li>       may have different semantics.<o:p></o:p></span></li>
575   <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list .5in'><span
576       style='font-size:10.0pt;font-family:Arial'>Plug-ins that depend on other       style='font-size:10.0pt;font-family:Arial'>Plug-ins that depend on other
577       plug-ins which implement their own undo strategy are forced to choose       plug-ins which implement their own undo strategy are forced to choose
578       between different implementations and possibly write integration code to       between different implementations and possibly write integration code to
# Line 589  Line 597 
597    
598  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The
599  proposed framework defines an interface for describing work, called an  proposed framework defines an interface for describing work, called an
600  “operation” (IOperation), that can be executed, undone, and redone.<span  “operation” (<span class=SpellE>IOperation</span>), that can be executed,
601  style='mso-spacerun:yes'>  </span>Operations are created, executed, and added  undone, and redone.<span style='mso-spacerun:yes'>  </span>Operations are
602  to an operations history (IOperationHistory).<span style='mso-spacerun:yes'>   created, executed, and added to an operations history (<span class=SpellE>IOperationHistory</span>).<span
603  </span>Operations which are comprised of distinct steps are represented as  style='mso-spacerun:yes'>  </span>Operations which are comprised of distinct
604  compound operations.<span style='mso-spacerun:yes'>  </span>Compound operations  steps are represented as compound operations.<span style='mso-spacerun:yes'> 
605  must be executed, undone, or redone as a unit, and can never be partially  </span>Compound operations must be executed, undone, or redone as a unit, and
606  undone.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>  can never be partially undone.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
607    
608  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
609    
610  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Operations  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Operations
611  can be assigned one or more contexts (IOperationContext) to which they  can be assigned one or more contexts (<span class=SpellE>IOperationContext</span>)
612  apply.<span style='mso-spacerun:yes'>  </span>An operation<span  to which they apply.<span style='mso-spacerun:yes'>  </span>An operation<span
613  style='mso-spacerun:yes'>  </span>context describes the context in which the  style='mso-spacerun:yes'>  </span>context describes the context in which the
614  user is working when an operation is performed, undone, or redone.<span  user is working when an operation is performed, undone, or redone.<span
615  style='mso-spacerun:yes'>  </span>Contexts can be used by workbench parts to  style='mso-spacerun:yes'>  </span>Contexts can be used by workbench parts to
# Line 628  Line 636 
636    
637  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
638    
639  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l9 level1 lfo5;  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l10 level1 lfo5;
640  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;
641  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>1.<span  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>1.<span
642  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
# Line 638  Line 646 
646  the editor can assign its context to the operation before adding it to the  the editor can assign its context to the operation before adding it to the
647  history.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>  history.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
648    
649  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l9 level1 lfo5;  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l10 level1 lfo5;
650  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;
651  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>2.<span  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>2.<span
652  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
# Line 676  Line 684 
684  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
685    
686  <ol style='margin-top:0in' start=1 type=1>  <ol style='margin-top:0in' start=1 type=1>
687   <li class=MsoNormal style='mso-list:l8 level1 lfo8;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l9 level1 lfo8;tab-stops:list .5in'><span
688       style='font-size:10.0pt;font-family:Arial'>Existing command/undo       style='font-size:10.0pt;font-family:Arial'>Existing command/undo frameworks
689       frameworks can implement the IOperation interface on their existing       can implement the <span class=SpellE>IOperation</span> interface on their
690       command objects, while still maintaining their individual strategies for       existing command objects, while still maintaining their individual
691       managing undo stacks or histories.<span style='mso-spacerun:yes'>        strategies for managing undo stacks or histories.<span
692       </span>If there is a substantial investment in an existing model-based       style='mso-spacerun:yes'>  </span>If there is a substantial investment in
693       operation or command framework, wrappers could be used to map IOperation       an existing model-based operation or command framework, wrappers could be
694       protocol to the existing protocol.<span style='mso-spacerun:yes'>        used to map <span class=SpellE>IOperation</span> protocol to the existing
695       </span>The commands/operations need not be assigned a context or added to       protocol.<span style='mso-spacerun:yes'>  </span>The commands/operations
696       a common operation history.<span style='mso-spacerun:yes'>  </span>This       need not be assigned a context or added to a common operation
697       level of integration allows command hierarchies built in different       history.<span style='mso-spacerun:yes'>  </span>This level of integration
698       frameworks to be treated the same by plug-ins that depend upon these different       allows command hierarchies built in different frameworks to be treated the
699       frameworks.<span style='mso-spacerun:yes'>  </span>Clients of existing       same by plug-ins that depend upon these different frameworks.<span
700       command frameworks may then use the workbench operation history, assign       style='mso-spacerun:yes'>  </span>Clients of existing command frameworks
701       contexts to operations as needed, and even add operations to the history,       may then use the workbench operation history, assign contexts to
702       while still using commands built on earlier frameworks.<o:p></o:p></span></li>       operations as needed, and even add operations to the history, while still
703   <li class=MsoNormal style='mso-list:l8 level1 lfo8;tab-stops:list .5in'><span       using commands built on earlier frameworks.<o:p></o:p></span></li>
704     <li class=MsoNormal style='mso-list:l9 level1 lfo8;tab-stops:list .5in'><span
705       style='font-size:10.0pt;font-family:Arial'>Existing command/undo       style='font-size:10.0pt;font-family:Arial'>Existing command/undo
706       frameworks may use the listener interfaces provided by the operations       frameworks may use the listener interfaces provided by the operations
707       history to listen for operations that are of interest.<span       history to listen for operations that are of interest.<span
# Line 702  Line 711 
711       integration allows views and editors to appear more tightly integrated       integration allows views and editors to appear more tightly integrated
712       with the operations framework, since workbench operations of interest can       with the operations framework, since workbench operations of interest can
713       be undone or redone from private undo implementations.<o:p></o:p></span></li>       be undone or redone from private undo implementations.<o:p></o:p></span></li>
714   <li class=MsoNormal style='mso-list:l8 level1 lfo8;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l9 level1 lfo8;tab-stops:list .5in'><span
715       style='font-size:10.0pt;font-family:Arial'>Full integration is achieved by       style='font-size:10.0pt;font-family:Arial'>Full integration is achieved by
716       using the workbench operation history to record the undo and redo history       using the workbench operation history to record the undo and redo history
717       as operations occur.<span style='mso-spacerun:yes'>  </span>Once all       as operations occur.<span style='mso-spacerun:yes'>  </span>Once all
# Line 714  Line 723 
723  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
724    
725  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Framework  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Framework
726  interfaces will be defined in the org.eclipse.core.operations package.<span  interfaces will be defined in the <span class=SpellE>org.eclipse.core.operations</span>
727  style='mso-spacerun:yes'>  </span>This package will be contained in a plug-in  package.<span style='mso-spacerun:yes'>  </span>This package will be contained
728  that has no dependencies on the Eclipse runtime, so that raw JFace users may  in a plug-in that has no dependencies on the Eclipse runtime, so that raw <span
729  make use of it.<span style='mso-spacerun:yes'>  </span>(The exact plug-in  class=SpellE>JFace</span> users may make use of it.<span
730  containing the framework package is not defined at this time, as these packages  style='mso-spacerun:yes'>  </span>(The exact plug-in containing the framework
731  may be combined with other packages that provide similar headless  package is not defined at this time, as these packages may be combined with
732  infrastructure.)<o:p></o:p></span></p>  other packages that provide similar headless infrastructure.)<o:p></o:p></span></p>
733    
734  <h2>Framework interfaces</h2>  <h2>Framework interfaces</h2>
735    
736  <h3>IOperation</h3>  <h3><span class=SpellE>IOperation</span></h3>
737    
738  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>IOperation  <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;font-family:
739    Arial'>IOperation</span></span><span style='font-size:10.0pt;font-family:Arial'>
740  defines an operation that can be executed, undone, and redone.<span  defines an operation that can be executed, undone, and redone.<span
741  style='mso-spacerun:yes'>  </span>Operations typically have fully defined parameters.  style='mso-spacerun:yes'>  </span>Operations typically have fully defined
742  That is, they are usually created after the user has been queried for any input  parameters. That is, they are usually created after the user has been queried
743  needed to define the operation.<o:p></o:p></span></p>  for any input needed to define the operation.<o:p></o:p></span></p>
744    
745  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
746    
# Line 742  Line 752 
752    
753  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
754    
755  <pre>public void addContext(IOperationContext context)</pre>  <pre>public void <span class=SpellE>addContext</span>(<span class=SpellE>IOperationContext</span> context)</pre>
756    
757  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Add  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Add
758  the specified context to the operation. If the context is already present, do  the specified context to the operation. If the context is already present, do
# Line 754  Line 764 
764  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>context</span></code><span  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>context</span></code><span
765  style='font-size:10.0pt'> - - the context to be added<o:p></o:p></span></p>  style='font-size:10.0pt'> - - the context to be added<o:p></o:p></span></p>
766    
767  <pre><a name="removeContext(org.eclipse.core.operation"></a>public void removeContext(IOperationContext context)</pre>  <pre><a name="removeContext(org.eclipse.core.operation"></a>public void <span
768    class=SpellE>removeContext</span>(<span class=SpellE>IOperationContext</span> context)</pre>
769    
770  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Remove  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Remove
771  the specified context from the operation. This method has no effect if the  the specified context from the operation. This method has no effect if the
# Line 766  Line 777 
777  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>context</span></code><span  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>context</span></code><span
778  style='font-size:10.0pt'> - - the context to be removed<o:p></o:p></span></p>  style='font-size:10.0pt'> - - the context to be removed<o:p></o:p></span></p>
779    
780  <pre><a name="hasContext(org.eclipse.core.operations.I"></a>public boolean <b>hasContext</b>(IOperationContext context)</pre>  <pre><a name="hasContext(org.eclipse.core.operations.I"></a>public <span
781    class=SpellE>boolean</span> <span class=SpellE><b>hasContext</b></span>(<span
782    class=SpellE>IOperationContext</span> context)</pre>
783    
784  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
785  whether the operation has the specified context. <o:p></o:p></span></p>  whether the operation has the specified context. <o:p></o:p></span></p>
# Line 785  Line 798 
798  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if
799  it is not.<o:p></o:p></span></p>  it is not.<o:p></o:p></span></p>
800    
801  <pre><a name="getContexts()"></a>public IOperationContext [] <b>getContexts</b>()</pre>  <pre><a name="getContexts()"></a>public <span class=SpellE>IOperationContext</span> [] <span
802    class=SpellE><b>getContexts</b></span>()</pre>
803    
804  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
805  the array of contexts that have been assigned to the operation. <o:p></o:p></span></p>  the array of contexts that have been assigned to the operation. <o:p></o:p></span></p>
# Line 793  Line 807 
807  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
808  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
809    
810  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the array
811  array of contexts<o:p></o:p></span></p>  of contexts<o:p></o:p></span></p>
812    
813  <pre><a name="canExecute()"></a>public boolean <b>canExecute</b>()</pre>  <pre><a name="canExecute()"></a>public <span class=SpellE>boolean</span> <span
814    class=SpellE><b>canExecute</b></span>()</pre>
815    
816  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
817  whether the operation can be executed in its current state. <o:p></o:p></span></p>  whether the operation can be executed in its current state. <o:p></o:p></span></p>
# Line 809  Line 824 
824  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'>  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'>
825  otherwise.<o:p></o:p></span></p>  otherwise.<o:p></o:p></span></p>
826    
827  <pre><a name="canRedo()"></a>public boolean <b>canRedo</b>()</pre>  <pre><a name="canRedo()"></a>public <span class=SpellE>boolean</span> <span
828    class=SpellE><b>canRedo</b></span>()</pre>
829    
830  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
831  whether the operation can be redone in its current state. <o:p></o:p></span></p>  whether the operation can be redone in its current state. <o:p></o:p></span></p>
# Line 822  Line 838 
838  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'>  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'>
839  otherwise.<o:p></o:p></span></p>  otherwise.<o:p></o:p></span></p>
840    
841  <pre><a name="canUndo()"></a>public boolean <b>canUndo</b>()</pre>  <pre><a name="canUndo()"></a>public <span class=SpellE>boolean</span> <span
842    class=SpellE><b>canUndo</b></span>()</pre>
843    
844  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
845  whether the operation can be undone in its current state. <o:p></o:p></span></p>  whether the operation can be undone in its current state. <o:p></o:p></span></p>
# Line 835  Line 852 
852  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'>  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'>
853  otherwise.<o:p></o:p></span></p>  otherwise.<o:p></o:p></span></p>
854    
855  <pre><a name="execute(org.eclipse.core.runtime.IProgre"></a>public org.eclipse.core.runtime.IStatus <b>execute</b>(org.eclipse.core.runtime.IProgressMonitor&nbsp;monitor)</pre>  <pre><a name="execute(org.eclipse.core.runtime.IProgre"></a>public <span
856    class=SpellE>org.eclipse.core.runtime.IStatus</span> <b>execute</b>(<span
857    class=SpellE>org.eclipse.core.runtime.IProgressMonitor</span>&nbsp;monitor)</pre>
858    
859  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Execute  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Execute
860  the operation. This method should only be called the first time that an  the operation. This method should only be called the first time that an
# Line 850  Line 869 
869  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
870  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
871    
872  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the <span
873  IStatus of the execution. The status severity should be set to </span><code><span  class=SpellE>IStatus</span> of the execution. The status severity should be set
874  style='font-size:10.0pt'>OK</span></code><span style='font-size:10.0pt'> if the  to </span><code><span style='font-size:10.0pt'>OK</span></code><span
875  operation was successful, and </span><code><span style='font-size:10.0pt'>ERROR</span></code><span  style='font-size:10.0pt'> if the operation was successful, and </span><code><span
876  style='font-size:10.0pt'> if it was not. Any other status is assumed to  style='font-size:10.0pt'>ERROR</span></code><span style='font-size:10.0pt'> if
877  represent an incompletion of the execution.<o:p></o:p></span></p>  it was not. Any other status is assumed to represent an incompletion of the
878    execution.<o:p></o:p></span></p>
879  <pre><a name="redo(org.eclipse.core.runtime.IProgressM"></a>public org.eclipse.core.runtime.IStatus <b>redo</b>(org.eclipse.core.runtime.IProgressMonitor&nbsp;monitor)</pre>  
880    <pre><a name="redo(org.eclipse.core.runtime.IProgressM"></a>public <span
881    class=SpellE>org.eclipse.core.runtime.IStatus</span> <b>redo</b>(<span
882    class=SpellE>org.eclipse.core.runtime.IProgressMonitor</span>&nbsp;monitor)</pre>
883    
884  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Redo  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Redo
885  the operation. This method should only be called after an operation has been  the operation. This method should only be called after an operation has been
# Line 872  Line 894 
894  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
895  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
896    
897  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the <span
898  IStatus of the redo. The status severity should be set to </span><code><span  class=SpellE>IStatus</span> of the redo. The status severity should be set to </span><code><span
899  style='font-size:10.0pt'>OK</span></code><span style='font-size:10.0pt'> if the  style='font-size:10.0pt'>OK</span></code><span style='font-size:10.0pt'> if the
900  redo was successful, and </span><code><span style='font-size:10.0pt'>ERROR</span></code><span  redo was successful, and </span><code><span style='font-size:10.0pt'>ERROR</span></code><span
901  style='font-size:10.0pt'> if it was not. Any other status is assumed to  style='font-size:10.0pt'> if it was not. Any other status is assumed to
902  represent an incompletion of the redo.<o:p></o:p></span></p>  represent an incompletion of the redo.<o:p></o:p></span></p>
903    
904  <pre>public org.eclipse.core.runtime.IStatus <b>undo</b>(org.eclipse.core.runtime.IProgressMonitor&nbsp;monitor)</pre>  <pre>public <span class=SpellE>org.eclipse.core.runtime.IStatus</span> <b>undo</b>(<span
905    class=SpellE>org.eclipse.core.runtime.IProgressMonitor</span>&nbsp;monitor)</pre>
906    
907  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Undo  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Undo
908  the operation. This method should only be called after an operation has been  the operation. This method should only be called after an operation has been
# Line 894  Line 917 
917  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
918  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
919    
920  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the <span
921  IStatus of the undo. The status severity should be set to </span><code><span  class=SpellE>IStatus</span> of the undo. The status severity should be set to </span><code><span
922  style='font-size:10.0pt'>OK</span></code><span style='font-size:10.0pt'> if the  style='font-size:10.0pt'>OK</span></code><span style='font-size:10.0pt'> if the
923  redo was successful, and </span><code><span style='font-size:10.0pt'>ERROR</span></code><span  redo was successful, and </span><code><span style='font-size:10.0pt'>ERROR</span></code><span
924  style='font-size:10.0pt'> if it was not. Any other status is assumed to  style='font-size:10.0pt'> if it was not. Any other status is assumed to
# Line 905  Line 928 
928    
929  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Dispose  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Dispose
930  of the operation. This method is used when the operation is no longer kept in  of the operation. This method is used when the operation is no longer kept in
931  the history. Implementers of this method typically unregister any listeners. <o:p></o:p></span></p>  the history. Implementers of this method typically <span class=SpellE>unregister</span>
932    any listeners. <o:p></o:p></span></p>
933    
934  <pre>public java.lang.String <b>getLabel</b>()</pre>  <pre>public <span class=SpellE>java.lang.String</span> <span class=SpellE><b>getLabel</b></span>()</pre>
935    
936  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return
937  the label that should be used to show the name of the operation to the user.  the label that should be used to show the name of the operation to the user.
# Line 920  Line 944 
944  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the
945  label<o:p></o:p></span></p>  label<o:p></o:p></span></p>
946    
947  <pre>public java.lang.String <b>getDescription</b>()</pre>  <pre>public <span class=SpellE>java.lang.String</span> <span class=SpellE><b>getDescription</b></span>()</pre>
948    
949  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return
950  the description that should be used to further describe this operation to the  the description that should be used to further describe this operation to the
# Line 933  Line 957 
957  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the
958  description<o:p></o:p></span></p>  description<o:p></o:p></span></p>
959    
960  <h3>IOperationHistory</h3>  <h3><span class=SpellE>IOperationHistory</span></h3>
961    
962  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>IOperationHistory  <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;font-family:
963  tracks a history of operations that can be undone or redone. Operations are  Arial'>IOperationHistory</span></span><span style='font-size:10.0pt;font-family:
964  added to the history once they have been initially executed. Clients may choose  Arial'> tracks a history of operations that can be undone or redone. Operations
965  whether to have the operations history perform the initial execution or simply  are added to the history once they have been initially executed. Clients may
966  add the operation to the history. Once operations are added to the history, the  choose whether to have the operations history perform the initial execution or
967  methods canRedo() and canUndo() are used to determine whether there is an  simply add the operation to the history. Once operations are added to the
968    history, the methods <span class=SpellE>canRedo</span>() and <span
969    class=SpellE>canUndo</span>() are used to determine whether there is an
970  operation available for undo and redo in a given operation context.<span  operation available for undo and redo in a given operation context.<span
971  style='mso-spacerun:yes'>  </span>The context-based protocol implies that there  style='mso-spacerun:yes'>  </span>The context-based protocol implies that there
972  is only one operation that can be undone or redone at a given time in a given  is only one operation that can be undone or redone at a given time in a given
# Line 957  Line 983 
983  protocol allows direct undo and redo of a specified operation, regardless of  protocol allows direct undo and redo of a specified operation, regardless of
984  its position in the history. When a more flexible undo model is supported,  its position in the history. When a more flexible undo model is supported,
985  these methods can be implemented to undo and redo directly specified  these methods can be implemented to undo and redo directly specified
986  operations. If an implementer of IOperationHistory does not allow direct undo  operations. If an implementer of <span class=SpellE>IOperationHistory</span>
987  and redo, these methods can return a status indicating that it is not allowed.<o:p></o:p></span></p>  does not allow direct undo and redo, these methods can return a status
988    indicating that it is not allowed.<o:p></o:p></span></p>
989    
990  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
991    
992  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Listeners  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Listeners (<span
993  (IOperationHistoryListener) can listen for notifications about changes in the  class=SpellE>IOperationHistoryListener</span>) can listen for notifications
994  history (operations added or removed), and for notification before and after  about changes in the history (operations added or removed), and for
995  any operation is executed, undone or redone. Notification of operation  notification before and after any operation is executed, undone or redone.
996  execution only occurs when clients direct the history to execute the operation.  Notification of operation execution only occurs when clients direct the history
997  If the operation is added after it is executed, there can be no notification of  to execute the operation. If the operation is added after it is executed, there
998  its execution.<o:p></o:p></span></p>  can be no notification of its execution.<o:p></o:p></span></p>
999    
1000  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
1001    
1002  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>IOperationApprover  <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;font-family:
1003  defines an interface for approving an undo or redo before it occurs. This is  Arial'>IOperationApprover</span></span><span style='font-size:10.0pt;
1004  useful for injecting policy-decisions into the model - whether direct undo and  font-family:Arial'> defines an interface for approving an undo or redo before
1005  redo are supported, or warning the user about certain kinds of operations. It  it occurs. This is useful for injecting policy-decisions into the model -
1006  can also be used when objects have state related to the operation and need to  whether direct undo and redo are supported, or warning the user about certain
1007  determine whether an undo or redo will cause any conflicts with their local  kinds of operations. It can also be used when objects have state related to the
1008  state.<o:p></o:p></span></p>  operation and need to determine whether an undo or redo will cause any
1009    conflicts with their local state.<o:p></o:p></span></p>
1010    
1011  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
1012    
1013  <pre>public void <b>add</b>(IOperation operation)</pre>  <pre>public void <b>add</b>(<span class=SpellE>IOperation</span> operation)</pre>
1014    
1015  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Add  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Add
1016  the specified operation to the history without executing it. The operation  the specified operation to the history without executing it. The operation should
1017  should have already been executed by the time it is added to the history.  have already been executed by the time it is added to the history. Listeners
1018  Listeners will be notified that the operation was added to the history. <o:p></o:p></span></p>  will be notified that the operation was added to the history. <o:p></o:p></span></p>
1019    
1020  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span
1021  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
# Line 995  Line 1023 
1023  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>operation</span></code><span  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>operation</span></code><span
1024  style='font-size:10.0pt'> - - the operation to be added to the history<o:p></o:p></span></p>  style='font-size:10.0pt'> - - the operation to be added to the history<o:p></o:p></span></p>
1025    
1026  <pre>public org.eclipse.core.runtime.IStatus <b>execute</b>(IOperation operation,</pre><pre><span style='mso-spacerun:yes'>                                                </span>org.eclipse.core.runtime.IProgressMonitor&nbsp;monitor)</pre>  <pre>public <span class=SpellE>org.eclipse.core.runtime.IStatus</span> <b>execute</b>(<span
1027    class=SpellE>IOperation</span> operation,</pre><pre><span style='mso-spacerun:yes'>                                                </span><span
1028    class=SpellE>org.eclipse.core.runtime.IProgressMonitor</span>&nbsp;monitor)</pre>
1029    
1030  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Execute  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Execute
1031  the specified operation and add it to the operations history if successful. This  the specified operation and add it to the operations history if successful.
1032  method is used by clients who wish operation history listeners to receive  This method is used by clients who wish operation history listeners to receive
1033  notifications before and after the execution of the operation. Listeners will  notifications before and after the execution of the operation. Listeners will
1034  be notified before ( </span><code><span style='font-size:10.0pt'>aboutToExecute</span></code><span  be notified before ( </span><span class=SpellE><code><span style='font-size:
1035  style='font-size:10.0pt'>) and after (</span><code><span style='font-size:10.0pt'>done</span></code><span  10.0pt'>aboutToExecute</span></code></span><span style='font-size:10.0pt'>) and
1036  style='font-size:10.0pt'> or </span><code><span style='font-size:10.0pt'>operationNotOK</span></code><span  after (</span><code><span style='font-size:10.0pt'>done</span></code><span
1037    style='font-size:10.0pt'> or </span><span class=SpellE><code><span
1038    style='font-size:10.0pt'>operationNotOK</span></code></span><span
1039  style='font-size:10.0pt'>). If the operation successfully executes, an  style='font-size:10.0pt'>). If the operation successfully executes, an
1040  additional notification that the operation has been added to the history (</span><code><span  additional notification that the operation has been added to the history (</span><span
1041  style='font-size:10.0pt'>operationAdded</span></code><span style='font-size:  class=SpellE><code><span style='font-size:10.0pt'>operationAdded</span></code></span><span
1042  10.0pt'>) will be sent. <o:p></o:p></span></p>  style='font-size:10.0pt'>) will be sent. <o:p></o:p></span></p>
1043    
1044  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span
1045  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
# Line 1019  Line 1051 
1051  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1052  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1053    
1054  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the <span
1055  IStatus indicating whether the execution succeeded. The severity code in the  class=SpellE>IStatus</span> indicating whether the execution succeeded. The
1056  returned status describes whether the operation succeeded and whether it was  severity code in the returned status describes whether the operation succeeded
1057  added to the history. </span><code><span style='font-size:10.0pt'>OK</span></code><span  and whether it was added to the history. </span><code><span style='font-size:
1058  style='font-size:10.0pt'> severity indicates that the execute operation was  10.0pt'>OK</span></code><span style='font-size:10.0pt'> severity indicates that
1059  successful and that the operation has been added to the history. Listeners will  the execute operation was successful and that the operation has been added to
1060  receive the </span><code><span style='font-size:10.0pt'>done</span></code><span  the history. Listeners will receive the </span><code><span style='font-size:
1061  style='font-size:10.0pt'> notification. </span><code><span style='font-size:  10.0pt'>done</span></code><span style='font-size:10.0pt'> notification. </span><code><span
1062  10.0pt'>CANCEL</span></code><span style='font-size:10.0pt'> severity indicates  style='font-size:10.0pt'>CANCEL</span></code><span style='font-size:10.0pt'>
1063  that the user cancelled the operation and that the operation was not added to  severity indicates that the user cancelled the operation and that the operation
1064  the history. </span><code><span style='font-size:10.0pt'>ERROR</span></code><span  was not added to the history. </span><code><span style='font-size:10.0pt'>ERROR</span></code><span
1065  style='font-size:10.0pt'> severity indicates that the operation did not  style='font-size:10.0pt'> severity indicates that the operation did not
1066  successfully execute and that it was not added to the history. Any other  successfully execute and that it was not added to the history. Any other severity
1067  severity code is not specifically interpreted by the history, and the operation  code is not specifically interpreted by the history, and the operation will not
1068  will not be added to the history. For all severities other than </span><code><span  be added to the history. For all severities other than </span><code><span
1069  style='font-size:10.0pt'>OK</span></code><span style='font-size:10.0pt'>,  style='font-size:10.0pt'>OK</span></code><span style='font-size:10.0pt'>,
1070  listeners will receive the </span><code><span style='font-size:10.0pt'>operationNotOK</span></code><span  listeners will receive the </span><span class=SpellE><code><span
1071    style='font-size:10.0pt'>operationNotOK</span></code></span><span
1072  style='font-size:10.0pt'> notification instead of the </span><code><span  style='font-size:10.0pt'> notification instead of the </span><code><span
1073  style='font-size:10.0pt'>done</span></code><span style='font-size:10.0pt'>  style='font-size:10.0pt'>done</span></code><span style='font-size:10.0pt'>
1074  notification.<o:p></o:p></span></p>  notification.<o:p></o:p></span></p>
1075    
1076  <pre>public void <b>remove</b>(IOperation operation)</pre>  <pre>public void <b>remove</b>(<span class=SpellE>IOperation</span> operation)</pre>
1077    
1078  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Remove  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Remove
1079  the specified operation from the history. Listeners will be notified of the  the specified operation from the history. Listeners will be notified of the
# Line 1053  Line 1086 
1086  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>operation</span></code><span  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>operation</span></code><span
1087  style='font-size:10.0pt'> - - the operation to be removed from the history<o:p></o:p></span></p>  style='font-size:10.0pt'> - - the operation to be removed from the history<o:p></o:p></span></p>
1088    
1089  <pre>public org.eclipse.core.runtime.IStatus <b>redo</b>(IOperationContext&nbsp;context,</pre><pre><span style='mso-spacerun:yes'>                                             </span>org.eclipse.core.runtime.IProgressMonitor&nbsp;monitor)</pre>  <pre>public <span class=SpellE>org.eclipse.core.runtime.IStatus</span> <b>redo</b>(<span
1090    class=SpellE>IOperationContext</span>&nbsp;context,</pre><pre><span style='mso-spacerun:yes'>                                             </span><span
1091    class=SpellE>org.eclipse.core.runtime.IProgressMonitor</span>&nbsp;monitor)</pre>
1092    
1093  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Redo  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Redo
1094  the most recently undone operation in the given context <o:p></o:p></span></p>  the most recently undone operation in the given context <o:p></o:p></span></p>
# Line 1072  Line 1107 
1107  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1108  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1109    
1110  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the <span
1111  IStatus indicating whether the redo succeeded. The severity code in the  class=SpellE>IStatus</span> indicating whether the redo succeeded. The severity
1112  returned status describes whether the operation succeeded and whether it  code in the returned status describes whether the operation succeeded and
1113  remains in the history. </span><code><span style='font-size:10.0pt'>OK</span></code><span  whether it remains in the history. </span><code><span style='font-size:10.0pt'>OK</span></code><span
1114  style='font-size:10.0pt'> severity indicates that the redo operation was  style='font-size:10.0pt'> severity indicates that the redo operation was
1115  successful and that the operation has been placed on the undo history.  successful and that the operation has been placed on the undo history. Listeners
1116  Listeners will receive the </span><code><span style='font-size:10.0pt'>redone</span></code><span  will receive the </span><code><span style='font-size:10.0pt'>redone</span></code><span
1117  style='font-size:10.0pt'> notification. </span><code><span style='font-size:  style='font-size:10.0pt'> notification. </span><code><span style='font-size:
1118  10.0pt'>CANCEL</span></code><span style='font-size:10.0pt'> severity indicates  10.0pt'>CANCEL</span></code><span style='font-size:10.0pt'> severity indicates
1119  that the user cancelled the operation and that the operation remains in the  that the user cancelled the operation and that the operation remains in the
# Line 1089  Line 1124 
1124  is not specifically interpreted by the history, and is simply passed back to  is not specifically interpreted by the history, and is simply passed back to
1125  the caller. For all severities other than </span><code><span style='font-size:  the caller. For all severities other than </span><code><span style='font-size:
1126  10.0pt'>OK</span></code><span style='font-size:10.0pt'>, listeners will receive  10.0pt'>OK</span></code><span style='font-size:10.0pt'>, listeners will receive
1127  the </span><code><span style='font-size:10.0pt'>operationNotOK</span></code><span  the </span><span class=SpellE><code><span style='font-size:10.0pt'>operationNotOK</span></code></span><span
1128  style='font-size:10.0pt'> notification instead of the </span><code><span  style='font-size:10.0pt'> notification instead of the </span><code><span
1129  style='font-size:10.0pt'>redone</span></code><span style='font-size:10.0pt'>  style='font-size:10.0pt'>redone</span></code><span style='font-size:10.0pt'>
1130  notification.<o:p></o:p></span></p>  notification.<o:p></o:p></span></p>
1131    
1132  <pre>public org.eclipse.core.runtime.IStatus <b>redoOperation</b>(IOperation operation,</pre><pre><span style='mso-spacerun:yes'>                                                      </span>org.eclipse.core.runtime.IProgressMonitor&nbsp;monitor)</pre>  <pre>public <span class=SpellE>org.eclipse.core.runtime.IStatus</span> <span
1133    class=SpellE><b>redoOperation</b></span>(<span class=SpellE>IOperation</span> operation,</pre><pre><span style='mso-spacerun:yes'>                                                      </span><span
1134    class=SpellE>org.eclipse.core.runtime.IProgressMonitor</span>&nbsp;monitor)</pre>
1135    
1136  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Redo  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Redo
1137  the specified operation <o:p></o:p></span></p>  the specified operation <o:p></o:p></span></p>
# Line 1112  Line 1149 
1149  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1150  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1151    
1152  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the <span
1153  IStatus indicating whether the redo succeeded. The severity code in the  class=SpellE>IStatus</span> indicating whether the redo succeeded. The severity
1154  returned status describes whether the operation succeeded and whether it  code in the returned status describes whether the operation succeeded and
1155  remains in the history. </span><code><span style='font-size:10.0pt'>OK</span></code><span  whether it remains in the history. </span><code><span style='font-size:10.0pt'>OK</span></code><span
1156  style='font-size:10.0pt'> severity indicates that the redo operation was  style='font-size:10.0pt'> severity indicates that the redo operation was
1157  successful and that the operation has been placed on the undo history.  successful and that the operation has been placed on the undo history.
1158  Listeners will receive the </span><code><span style='font-size:10.0pt'>redone</span></code><span  Listeners will receive the </span><code><span style='font-size:10.0pt'>redone</span></code><span
# Line 1129  Line 1166 
1166  severity code is not interpreted by the history, and is simply passed back to  severity code is not interpreted by the history, and is simply passed back to
1167  the caller. For all severities other than </span><code><span style='font-size:  the caller. For all severities other than </span><code><span style='font-size:
1168  10.0pt'>OK</span></code><span style='font-size:10.0pt'>, listeners will receive  10.0pt'>OK</span></code><span style='font-size:10.0pt'>, listeners will receive
1169  the </span><code><span style='font-size:10.0pt'>operationNotOK</span></code><span  the </span><span class=SpellE><code><span style='font-size:10.0pt'>operationNotOK</span></code></span><span
1170  style='font-size:10.0pt'> notification instead of the </span><code><span  style='font-size:10.0pt'> notification instead of the </span><code><span
1171  style='font-size:10.0pt'>redone</span></code><span style='font-size:10.0pt'>  style='font-size:10.0pt'>redone</span></code><span style='font-size:10.0pt'>
1172  notification.<o:p></o:p></span></p>  notification.<o:p></o:p></span></p>
1173    
1174  <pre>public org.eclipse.core.runtime.IStatus <b>undo</b>(IOperationContext&nbsp; context,</pre><pre><span style='mso-spacerun:yes'>                                             </span>org.eclipse.core.runtime.IProgressMonitor&nbsp;monitor)</pre>  <pre>public <span class=SpellE>org.eclipse.core.runtime.IStatus</span> <b>undo</b>(<span
1175    class=SpellE>IOperationContext</span>&nbsp; context,</pre><pre><span style='mso-spacerun:yes'>                                             </span><span
1176    class=SpellE>org.eclipse.core.runtime.IProgressMonitor</span>&nbsp;monitor)</pre>
1177    
1178  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Undo  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Undo
1179  the most recently undone operation in the given context <o:p></o:p></span></p>  the most recently undone operation in the given context <o:p></o:p></span></p>
# Line 1153  Line 1192 
1192  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1193  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1194    
1195  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the <span
1196  IStatus indicating whether the undo succeeded. The severity code in the  class=SpellE>IStatus</span> indicating whether the undo succeeded. The severity
1197  returned status describes whether the operation succeeded and whether it  code in the returned status describes whether the operation succeeded and
1198  remains in the history. </span><code><span style='font-size:10.0pt'>OK</span></code><span  whether it remains in the history. </span><code><span style='font-size:10.0pt'>OK</span></code><span
1199  style='font-size:10.0pt'> severity indicates that the undo operation was  style='font-size:10.0pt'> severity indicates that the undo operation was
1200  successful and that the operation has been placed on the redo history.  successful and that the operation has been placed on the redo history.
1201  Listeners will receive the </span><code><span style='font-size:10.0pt'>undone</span></code><span  Listeners will receive the </span><code><span style='font-size:10.0pt'>undone</span></code><span
# Line 1169  Line 1208 
1208  will be notified that the operation was removed. Any other severity code is not  will be notified that the operation was removed. Any other severity code is not
1209  interpreted by the history, and is simply passed back to the caller. For all  interpreted by the history, and is simply passed back to the caller. For all
1210  severities other than </span><code><span style='font-size:10.0pt'>OK</span></code><span  severities other than </span><code><span style='font-size:10.0pt'>OK</span></code><span
1211  style='font-size:10.0pt'>, listeners will receive the </span><code><span  style='font-size:10.0pt'>, listeners will receive the </span><span
1212  style='font-size:10.0pt'>operationNotOK</span></code><span style='font-size:  class=SpellE><code><span style='font-size:10.0pt'>operationNotOK</span></code></span><span
1213  10.0pt'> notification instead of the </span><code><span style='font-size:10.0pt'>undone</span></code><span  style='font-size:10.0pt'> notification instead of the </span><code><span
1214  style='font-size:10.0pt'> notification.<o:p></o:p></span></p>  style='font-size:10.0pt'>undone</span></code><span style='font-size:10.0pt'>
1215    notification.<o:p></o:p></span></p>
1216    
1217  <pre>public org.eclipse.core.runtime.IStatus <b>undoOperation</b>(IOperation operation,</pre><pre><span style='mso-spacerun:yes'>                                         </span><span style='mso-spacerun:yes'>             </span>org.eclipse.core.runtime.IProgressMonitor&nbsp;monitor)</pre>  <pre>public <span class=SpellE>org.eclipse.core.runtime.IStatus</span> <span
1218    class=SpellE><b>undoOperation</b></span>(<span class=SpellE>IOperation</span> operation,</pre><pre><span style='mso-spacerun:yes'>                                                      </span><span
1219    class=SpellE>org.eclipse.core.runtime.IProgressMonitor</span>&nbsp;monitor)</pre>
1220    
1221  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Undo  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Undo
1222  the specified operation <o:p></o:p></span></p>  the specified operation <o:p></o:p></span></p>
# Line 1192  Line 1234 
1234  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1235  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1236    
1237  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the <span
1238  IStatus indicating whether the undo succeeded. The severity code in the  class=SpellE>IStatus</span> indicating whether the undo succeeded. The severity
1239  returned status describes whether the operation succeeded and whether it  code in the returned status describes whether the operation succeeded and
1240  remains in the history. </span><code><span style='font-size:10.0pt'>OK</span></code><span  whether it remains in the history. </span><code><span style='font-size:10.0pt'>OK</span></code><span
1241  style='font-size:10.0pt'> severity indicates that the undo operation was  style='font-size:10.0pt'> severity indicates that the undo operation was
1242  successful and that the operation has been placed on the redo history.  successful and that the operation has been placed on the redo history.
1243  Listeners will receive the </span><code><span style='font-size:10.0pt'>undone</span></code><span  Listeners will receive the </span><code><span style='font-size:10.0pt'>undone</span></code><span
# Line 1203  Line 1245 
1245  10.0pt'>CANCEL</span></code><span style='font-size:10.0pt'> severity indicates  10.0pt'>CANCEL</span></code><span style='font-size:10.0pt'> severity indicates
1246  that the user cancelled the operation and that the operation remains in the  that the user cancelled the operation and that the operation remains in the
1247  undo history. </span><code><span style='font-size:10.0pt'>ERROR</span></code><span  undo history. </span><code><span style='font-size:10.0pt'>ERROR</span></code><span
1248  style='font-size:10.0pt'> severity indicates that the operation could not  style='font-size:10.0pt'> severity indicates that the operation could not successfully
1249  successfully be undone. The operation will remain at its current location in  be undone. The operation will remain at its current location in the history,
1250  the history, and callers must explicitly remove it if desired. Any other  and callers must explicitly remove it if desired. Any other severity code is
1251  severity code is not interpreted by the history, and is simply passed back to  not interpreted by the history, and is simply passed back to the caller. For
1252  the caller. For all severities other than </span><code><span style='font-size:  all severities other than </span><code><span style='font-size:10.0pt'>OK</span></code><span
1253  10.0pt'>OK</span></code><span style='font-size:10.0pt'>, listeners will receive  style='font-size:10.0pt'>, listeners will receive the </span><span
1254  the </span><code><span style='font-size:10.0pt'>operationNotOK</span></code><span  class=SpellE><code><span style='font-size:10.0pt'>operationNotOK</span></code></span><span
1255  style='font-size:10.0pt'> notification instead of the </span><code><span  style='font-size:10.0pt'> notification instead of the </span><code><span
1256  style='font-size:10.0pt'>undone</span></code><span style='font-size:10.0pt'>  style='font-size:10.0pt'>undone</span></code><span style='font-size:10.0pt'>
1257  notification.<o:p></o:p></span></p>  notification.<o:p></o:p></span></p>
1258    
1259  <pre>public boolean <b>canRedo</b>(IOperationContext&nbsp; context)</pre>  <pre>public <span class=SpellE>boolean</span> <span class=SpellE><b>canRedo</b></span>(<span
1260    class=SpellE>IOperationContext</span>&nbsp; context)</pre>
1261    
1262  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return
1263  whether there is a redoable operation available in the given context. <o:p></o:p></span></p>  whether there is a <span class=SpellE>redoable</span> operation available in
1264    the given context. <o:p></o:p></span></p>
1265    
1266  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span
1267  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
# Line 1230  Line 1274 
1274  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1275    
1276  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>true</span></code><span  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>true</span></code><span
1277  style='font-size:10.0pt'> if there is a redoable operation, </span><code><span  style='font-size:10.0pt'> if there is a <span class=SpellE>redoable</span>
1278  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'>  operation, </span><code><span style='font-size:10.0pt'>false</span></code><span
1279  otherwise.<o:p></o:p></span></p>  style='font-size:10.0pt'> otherwise.<o:p></o:p></span></p>
1280    
1281  <pre>public boolean <b>canUndo</b>(IOperationContext&nbsp; context)</pre>  <pre>public <span class=SpellE>boolean</span> <span class=SpellE><b>canUndo</b></span>(<span
1282    class=SpellE>IOperationContext</span>&nbsp; context)</pre>
1283    
1284  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return
1285  whether there is an undoable operation available in the given context <o:p></o:p></span></p>  whether there is an undoable operation available in the given context <o:p></o:p></span></p>
# Line 1254  Line 1299 
1299  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'>  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'>
1300  otherwise.<o:p></o:p></span></p>  otherwise.<o:p></o:p></span></p>
1301    
1302  <pre>public void <b>addOperationApprover</b>(IOperationApprover&nbsp;approver)</pre>  <pre>public void <span class=SpellE><b>addOperationApprover</b></span>(<span
1303    class=SpellE>IOperationApprover</span>&nbsp;approver)</pre>
1304    
1305  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Add  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Add the
1306  the specified approver to the operation history. <o:p></o:p></span></p>  specified approver to the operation history. <o:p></o:p></span></p>
1307    
1308  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span
1309  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1310    
1311  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>approver</span></code><span  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>approver</span></code><span
1312  style='font-size:10.0pt'> - - the IOperationApprover that will be consulted  style='font-size:10.0pt'> - - the <span class=SpellE>IOperationApprover</span>
1313  before any operation in the history is undone or redone<o:p></o:p></span></p>  that will be consulted before any operation in the history is undone or redone<o:p></o:p></span></p>
1314    
1315  <pre>public void <b>addOperationHistoryListener</b>(IOperationHistoryListener listener)</pre>  <pre>public void <span class=SpellE><b>addOperationHistoryListener</b></span>(<span
1316    class=SpellE>IOperationHistoryListener</span> listener)</pre>
1317    
1318  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Add  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Add
1319  the specified listener to the operation history. <o:p></o:p></span></p>  the specified listener to the operation history. <o:p></o:p></span></p>
# Line 1275  Line 1322 
1322  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1323    
1324  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>listener</span></code><span  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>listener</span></code><span
1325  style='font-size:10.0pt'> - - the IOperationHistoryListener to receive  style='font-size:10.0pt'> - - the <span class=SpellE>IOperationHistoryListener</span>
1326  notifications about changes in the history or operations that are executed,  to receive notifications about changes in the history or operations that are
1327  undone, or redone<o:p></o:p></span></p>  executed, undone, or redone<o:p></o:p></span></p>
1328    
1329  <pre>public void <b>removeOperationApprover</b>(IOperationApprover&nbsp; approver)</pre>  <pre>public void <span class=SpellE><b>removeOperationApprover</b></span>(<span
1330    class=SpellE>IOperationApprover</span>&nbsp; approver)</pre>
1331    
1332  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Remove  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Remove
1333  the specified operation approver from the operation history. <o:p></o:p></span></p>  the specified operation approver from the operation history. <o:p></o:p></span></p>
# Line 1288  Line 1336 
1336  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1337    
1338  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>approver</span></code><span  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>approver</span></code><span
1339  style='font-size:10.0pt'> - - the IOperationApprover to be removed<o:p></o:p></span></p>  style='font-size:10.0pt'> - - the <span class=SpellE>IOperationApprover</span>
1340    to be removed<o:p></o:p></span></p>
1341    
1342  <pre>public void <b>removeOperationHistoryListener</b>(IOperationHistoryListener listener)</pre>  <pre>public void <span class=SpellE><b>removeOperationHistoryListener</b></span>(<span
1343    class=SpellE>IOperationHistoryListener</span> listener)</pre>
1344    
1345  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Remove  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Remove
1346  the specified listener from the operation history. <o:p></o:p></span></p>  the specified listener from the operation history. <o:p></o:p></span></p>
# Line 1299  Line 1349 
1349  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1350    
1351  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>listener</span></code><span  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>listener</span></code><span
1352  style='font-size:10.0pt'> - - The IOperationHistoryListener to be removed<o:p></o:p></span></p>  style='font-size:10.0pt'> - - The <span class=SpellE>IOperationHistoryListener</span>
1353    to be removed<o:p></o:p></span></p>
1354    
1355  <pre>public IOperation <b>getRedoOperation</b>(IOperationContext&nbsp; context)</pre>  <pre>public <span class=SpellE>IOperation</span> <span class=SpellE><b>getRedoOperation</b></span>(<span
1356    class=SpellE>IOperationContext</span>&nbsp; context)</pre>
1357    
1358  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get
1359  the operation that will next be redone in the given context. This method is  the operation that will next be redone in the given context. This method is
# Line 1322  Line 1374 
1374  operation to be redone or </span><code><span style='font-size:10.0pt'>null</span></code><span  operation to be redone or </span><code><span style='font-size:10.0pt'>null</span></code><span
1375  style='font-size:10.0pt'> if there is no valid operation available.<o:p></o:p></span></p>  style='font-size:10.0pt'> if there is no valid operation available.<o:p></o:p></span></p>
1376    
1377  <pre>public IOperation [] <b>getRedoHistory</b>(IOperationContext&nbsp; context)</pre>  <pre>public <span class=SpellE>IOperation</span> [] <span class=SpellE><b>getRedoHistory</b></span>(<span
1378    class=SpellE>IOperationContext</span>&nbsp; context)</pre>
1379    
1380  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get
1381  the array of operations in the redo history for a given context. The operations  the array of operations in the redo history for a given context. The operations
# Line 1342  Line 1395 
1395  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the
1396  array of operations in the history<o:p></o:p></span></p>  array of operations in the history<o:p></o:p></span></p>
1397    
1398  <pre>public IOperation <b>getUndoOperation</b>(IOperationContext&nbsp; context)</pre>  <pre>public <span class=SpellE>IOperation</span> <span class=SpellE><b>getUndoOperation</b></span>(<span
1399    class=SpellE>IOperationContext</span>&nbsp; context)</pre>
1400    
1401  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get
1402  operation that will next be undone in the given context. This method is used to  the operation that will next be undone in the given context. This method is
1403  retrieve the label or description as needed for the &quot;Undo&quot; menu. <o:p></o:p></span></p>  used to retrieve the label or description as needed for the &quot;Undo&quot;
1404    menu. <o:p></o:p></span></p>
1405    
1406  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span
1407  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
# Line 1358  Line 1413 
1413  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1414  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1415    
1416  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the operation  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the
1417  to be undone or </span><code><span style='font-size:10.0pt'>null</span></code><span  operation to be undone or </span><code><span style='font-size:10.0pt'>null</span></code><span
1418  style='font-size:10.0pt'> if there is no operation available.<o:p></o:p></span></p>  style='font-size:10.0pt'> if there is no operation available.<o:p></o:p></span></p>
1419    
1420  <pre>public IOperation [] <b>getUndoHistory</b>(IOperationContext&nbsp; context)</pre>  <pre>public <span class=SpellE>IOperation</span> [] <span class=SpellE><b>getUndoHistory</b></span>(<span
1421    class=SpellE>IOperationContext</span>&nbsp; context)</pre>
1422    
1423  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get
1424  the array of operations that can be undone in the specified context. The  the array of operations that can be undone in the specified context. The
# Line 1382  Line 1438 
1438  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the
1439  array of operations in the history<o:p></o:p></span></p>  array of operations in the history<o:p></o:p></span></p>
1440    
1441  <pre>public void <b>dispose</b>(IOperationContext&nbsp;context,</pre><pre><span style='mso-spacerun:yes'>              </span><span style='mso-spacerun:yes'>      </span>boolean&nbsp;flushUndo,</pre><pre><span style='mso-spacerun:yes'>                    </span>boolean&nbsp;flushRedo)</pre>  <pre>public void <b>dispose</b>(<span class=SpellE>IOperationContext</span>&nbsp;context,</pre><pre><span style='mso-spacerun:yes'>                   </span><span style='mso-spacerun:yes'> </span><span
1442    class=SpellE>boolean</span>&nbsp;<span class=SpellE>flushUndo</span>,</pre><pre><span style='mso-spacerun:yes'>                    </span><span
1443    class=SpellE>boolean</span>&nbsp;<span class=SpellE>flushRedo</span>)</pre>
1444    
1445  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Dispose  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Dispose
1446  of the specified context in the history. All operations that have only the  of the specified context in the history. All operations that have only the
# Line 1396  Line 1454 
1454  style='font-size:10.0pt'> - - the context to be disposed, or null if all  style='font-size:10.0pt'> - - the context to be disposed, or null if all
1455  contexts are to be disposed <o:p></o:p></span></p>  contexts are to be disposed <o:p></o:p></span></p>
1456    
1457  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>flushUndo</span></code><span  <p class=MsoNormal style='margin-left:.5in'><span class=SpellE><code><span
1458  style='font-size:10.0pt'> - - </span><code><span style='font-size:10.0pt'>true</span></code><span  style='font-size:10.0pt'>flushUndo</span></code></span><span style='font-size:
1459    10.0pt'> - - </span><code><span style='font-size:10.0pt'>true</span></code><span
1460  style='font-size:10.0pt'> if the context should be flushed from the undo  style='font-size:10.0pt'> if the context should be flushed from the undo
1461  history, </span><code><span style='font-size:10.0pt'>false</span></code><span  history, </span><code><span style='font-size:10.0pt'>false</span></code><span
1462  style='font-size:10.0pt'> if it should not <o:p></o:p></span></p>  style='font-size:10.0pt'> if it should not <o:p></o:p></span></p>
1463    
1464  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>flushRedo</span></code><span  <p class=MsoNormal style='margin-left:.5in'><span class=SpellE><code><span
1465  style='font-size:10.0pt'> - - </span><code><span style='font-size:10.0pt'>true</span></code><span  style='font-size:10.0pt'>flushRedo</span></code></span><span style='font-size:
1466    10.0pt'> - - </span><code><span style='font-size:10.0pt'>true</span></code><span
1467  style='font-size:10.0pt'> if the context should be flushed from the redo  style='font-size:10.0pt'> if the context should be flushed from the redo
1468  history, </span><code><span style='font-size:10.0pt'>false</span></code><span  history, </span><code><span style='font-size:10.0pt'>false</span></code><span
1469  style='font-size:10.0pt'> if it should not.<o:p></o:p></span></p>  style='font-size:10.0pt'> if it should not.<o:p></o:p></span></p>
1470    
1471  <pre>public int <b>getLimit</b>()</pre>  <pre>public <span class=SpellE>int</span> <span class=SpellE><b>getLimit</b></span>()</pre>
1472    
1473  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return
1474  the specified limit on the undo and redo history. <o:p></o:p></span></p>  the specified limit on the undo and redo history. <o:p></o:p></span></p>
# Line 1418  Line 1478 
1478    
1479  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>limit<o:p></o:p></span></p>  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>limit<o:p></o:p></span></p>
1480    
1481  <pre>public void <b>setLimit</b>(int&nbsp;limit)</pre>  <pre>public void <span class=SpellE><b>setLimit</b></span>(<span class=SpellE>int</span>&nbsp;limit)</pre>
1482    
1483  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Set  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Set
1484  the limit on the undo and redo history. <o:p></o:p></span></p>  the limit on the undo and redo history. <o:p></o:p></span></p>
# Line 1430  Line 1490 
1490  style='font-size:10.0pt'> - - the maximum number of operations that should be  style='font-size:10.0pt'> - - the maximum number of operations that should be
1491  kept in the history<o:p></o:p></span></p>  kept in the history<o:p></o:p></span></p>
1492    
1493  <h3>IOperationContext</h3>  <h3><span class=SpellE>IOperationContext</span></h3>
1494    
1495  <pre>public java.lang.String <b>getLabel</b>()</pre>  <pre>public <span class=SpellE>java.lang.String</span> <span class=SpellE><b>getLabel</b></span>()</pre>
1496    
1497  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get
1498  the label that should be used to describe the context in any views. Contexts may  the label that should be used to describe the context in any views. Contexts
1499  be shown when filtered operation histories are shown to the user. <o:p></o:p></span></p>  may be shown when filtered operation histories are shown to the user. <o:p></o:p></span></p>
1500    
1501  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1502  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
# Line 1444  Line 1504 
1504  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the
1505  label for the context.<o:p></o:p></span></p>  label for the context.<o:p></o:p></span></p>
1506    
1507  <pre>public IContextOperationApprover <b>getOperationApprover</b>()</pre>  <pre>public <span class=SpellE>IContextOperationApprover</span> <span
1508    class=SpellE><b>getOperationApprover</b></span>()</pre>
1509    
1510  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Get
1511  the operation approver that is used to approve undo or redo operations  the operation approver that is used to approve undo or redo operations
# Line 1457  Line 1518 
1518  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the
1519  operation approver for the context.<o:p></o:p></span></p>  operation approver for the context.<o:p></o:p></span></p>
1520    
1521  <pre>public boolean <b>acceptOperation</b>(IOperation operation)</pre>  <pre>public <span class=SpellE>boolean</span> <span class=SpellE><b>acceptOperation</b></span>(<span
1522    class=SpellE>IOperation</span> operation)</pre>
1523    
1524  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return
1525  a boolean that indicates whether this context should be assigned to the specified  a <span class=SpellE>boolean</span> that indicates whether this context should
1526  operation. This method should be overridden by contexts that have complex rules  be assigned to the specified operation. This method should be overridden by
1527  for whether they should be assigned to an operation. Simple contexts generally  contexts that have complex rules for whether they should be assigned to an
1528  answer true. <o:p></o:p></span></p>  operation. Simple contexts generally answer true. <o:p></o:p></span></p>
1529    
1530  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1531  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1532    
1533  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a <span
1534  boolean indicating whether this context should be assigned to the operation.<o:p></o:p></span></p>  class=SpellE>boolean</span> indicating whether this context should be assigned
1535    to the operation.<o:p></o:p></span></p>
1536    
1537  <pre>public boolean <b>equals</b>(IOperationContext&nbsp;context)</pre>  <pre>public <span class=SpellE>boolean</span> <b>equals</b>(<span class=SpellE>IOperationContext</span>&nbsp;context)</pre>
1538    
1539  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return
1540  whether this context is equal to the specified context. <o:p></o:p></span></p>  whether this context is equal to the specified context. <o:p></o:p></span></p>
# Line 1492  Line 1555 
1555    
1556  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
1557    
1558  <h3>IOperationApprover</h3>  <h3><span class=SpellE>IOperationApprover</span></h3>
1559    
1560  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>IOperationApprover  <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;font-family:
1561  defines an interface for approving the undo or redo of a particular operation  Arial'>IOperationApprover</span></span><span style='font-size:10.0pt;
1562  within an operation history. Operations that are candidates for undo or redo  font-family:Arial'> defines an interface for approving the undo or redo of a
1563  have already been validated against their current state and according to the  particular operation within an operation history. Operations that are
1564  rules of the history.<o:p></o:p></span></p>  candidates for undo or redo have already been validated against their current
1565    state and according to the rules of the history.<o:p></o:p></span></p>
1566    
1567  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
1568    
1569  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>By the time  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>By the time
1570  an IOperationApprover is consulted, the undo has already been requested.  an <span class=SpellE>IOperationApprover</span> is consulted, the undo has
1571  Approvers should true if the operation should proceed, and false if it should  already been requested. Approvers should true if the operation should proceed,
1572  not. When an operation is rejected, it is expected that the object rejecting  and false if it should not. When an operation is rejected, it is expected that
1573  the operation has already consulted the user if necessary or otherwise provided  the object rejecting the operation has already consulted the user if necessary
1574  any necessary information to the user about the rejection.<o:p></o:p></span></p>  or otherwise provided any necessary information to the user about the
1575    rejection.<o:p></o:p></span></p>
1576  <pre>public org.eclipse.core.runtime.IStatus <b>proceedUndoing</b>(IOperation operation, IOperationHistory history)</pre>  
1577    <pre>public <span class=SpellE>org.eclipse.core.runtime.IStatus</span> <span
1578    class=SpellE><b>proceedUndoing</b></span>(<span class=SpellE>IOperation</span> operation, <span
1579    class=SpellE>IOperationHistory</span> history)</pre>
1580    
1581  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return
1582  a status indicating whether the specified operation should be undone. Any  a status indicating whether the specified operation should be undone. Any
1583  status that does not have severity </span><code><span style='font-size:10.0pt'>IStatus.OK</span></code><span  status that does not have severity </span><span class=SpellE><code><span
1584  style='font-size:10.0pt'> will not be approved. Implementers should not assume  style='font-size:10.0pt'>IStatus.OK</span></code></span><span style='font-size:
1585  that the undo will be performed when the status is </span><code><span  10.0pt'> will not be approved. Implementers should not assume that the undo
1586  style='font-size:10.0pt'>OK</span></code><span style='font-size:10.0pt'>, since  will be performed when the status is </span><code><span style='font-size:10.0pt'>OK</span></code><span
1587  other operation approvers can veto the undo. <o:p></o:p></span></p>  style='font-size:10.0pt'>, since other operation approvers can veto the undo. <o:p></o:p></span></p>
1588    
1589  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span
1590  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
# Line 1531  Line 1598 
1598  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1599  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1600    
1601  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the <span
1602  IStatus describing whether the operation is approved. The undo will not proceed  class=SpellE>IStatus</span> describing whether the operation is approved. The
1603  if the status severity is not </span><code><span style='font-size:10.0pt'>OK</span></code><span  undo will not proceed if the status severity is not </span><code><span
1604  style='font-size:10.0pt'>, and the caller requesting the undo will be returned  style='font-size:10.0pt'>OK</span></code><span style='font-size:10.0pt'>, and
1605  the status that caused the rejection. Any other status severities will not be  the caller requesting the undo will be returned the status that caused the
1606  interpreted by the history.<o:p></o:p></span></p>  rejection. Any other status severities will not be interpreted by the history.<o:p></o:p></span></p>
1607    
1608  <pre>public org.eclipse.core.runtime.IStatus <b>proceedRedoing</b>(IOperation operation, IOperationHistory&nbsp;history)</pre>  <pre>public <span class=SpellE>org.eclipse.core.runtime.IStatus</span> <span
1609    class=SpellE><b>proceedRedoing</b></span>(<span class=SpellE>IOperation</span> operation, <span
1610    class=SpellE>IOperationHistory</span>&nbsp;history)</pre>
1611    
1612  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Return
1613  a status indicating whether the specified operation should be redone. Any  a status indicating whether the specified operation should be redone. Any
1614  status that does not have severity </span><code><span style='font-size:10.0pt'>IStatus.OK</span></code><span  status that does not have severity </span><span class=SpellE><code><span
1615  style='font-size:10.0pt'> will not be approved. Implementers should not assume  style='font-size:10.0pt'>IStatus.OK</span></code></span><span style='font-size:
1616  that the redo will be performed when the status is </span><code><span  10.0pt'> will not be approved. Implementers should not assume that the redo
1617  style='font-size:10.0pt'>OK</span></code><span style='font-size:10.0pt'>, since  will be performed when the status is </span><code><span style='font-size:10.0pt'>OK</span></code><span
1618  other operation approvers may veto the redo. <o:p></o:p></span></p>  style='font-size:10.0pt'>, since other operation approvers may veto the redo. <o:p></o:p></span></p>
1619    
1620  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span
1621  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
# Line 1560  Line 1629 
1629  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1630  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1631    
1632  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>the <span
1633  IStatus describing whether the operation is approved. The redo will not proceed  class=SpellE>IStatus</span> describing whether the operation is approved. The
1634  if the status severity is no </span><code><span style='font-size:10.0pt'>OK</span></code><span  redo will not proceed if the status severity is no </span><code><span
1635  style='font-size:10.0pt'>, and the caller requesting the redo will be returned  style='font-size:10.0pt'>OK</span></code><span style='font-size:10.0pt'>, and
1636  the status that caused the rejection. Any other status severities will not be  the caller requesting the redo will be returned the status that caused the
1637  interpreted by the history.<o:p></o:p></span></p>  rejection. Any other status severities will not be interpreted by the history.<o:p></o:p></span></p>
1638    
1639  <h3>IOperationHistoryListener</h3>  <h3><span class=SpellE>IOperationHistoryListener</span></h3>
1640    
1641  <pre>public void <b>historyNotification</b>(OperationHistoryEvent event)</pre>  <pre>public void <span class=SpellE><b>historyNotification</b></span>(<span
1642    class=SpellE>OperationHistoryEvent</span> event)</pre>
1643    
1644  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Something  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Something
1645  of note has happened in the IOperationHistory. Listeners should check the  of note has happened in the <span class=SpellE>IOperationHistory</span>.
1646  supplied event for details. <o:p></o:p></span></p>  Listeners should check the supplied event for details. <o:p></o:p></span></p>
1647    
1648  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Parameters:</span></b><span
1649  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
1650    
1651  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>event</span></code><span  <p class=MsoNormal style='margin-left:.5in'><code><span style='font-size:10.0pt'>event</span></code><span
1652  style='font-size:10.0pt'> - - the OperationHistoryEvent that describes the  style='font-size:10.0pt'> - - the <span class=SpellE>OperationHistoryEvent</span>
1653  particular notification.<o:p></o:p></span></p>  that describes the particular notification.<o:p></o:p></span></p>
1654    
1655  <h3>OperationHistoryEvent</h3>  <h3><span class=SpellE>OperationHistoryEvent</span></h3>
1656    
1657  <pre>public IOperationHistory <b>history</b></pre><pre><o:p>&nbsp;</o:p></pre><pre>public IOperation <b>operation</b></pre><pre><o:p>&nbsp;</o:p></pre><pre>public boolean <b>operationAdded</b>()</pre>  <pre>public <span class=SpellE>IOperationHistory</span> <b>history</b></pre><pre><o:p>&nbsp;</o:p></pre><pre>public <span
1658    class=SpellE>IOperation</span> <b>operation</b></pre><pre><o:p>&nbsp;</o:p></pre><pre>public <span
1659    class=SpellE>boolean</span> <span class=SpellE><b>operationAdded</b></span>()</pre>
1660    
1661  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
1662  whether or not an operation was added to the history. Listeners typically use  whether or not an operation was added to the history. Listeners typically use
# Line 1599  Line 1671 
1671  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if
1672  not.<o:p></o:p></span></p>  not.<o:p></o:p></span></p>
1673    
1674  <pre>public boolean <b>operationRemoved</b>()</pre>  <pre>public <span class=SpellE>boolean</span> <span class=SpellE><b>operationRemoved</b></span>()</pre>
1675    
1676  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
1677  whether or not an operation was removed from the history. Listeners typically  whether or not an operation was removed from the history. Listeners typically
# Line 1613  Line 1685 
1685  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if
1686  not.<o:p></o:p></span></p>  not.<o:p></o:p></span></p>
1687    
1688  <pre>public boolean <b>aboutToExecute</b>()</pre>  <pre>public <span class=SpellE>boolean</span> <span class=SpellE><b>aboutToExecute</b></span>()</pre>
1689    
1690  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
1691  whether or not an operation is about to execute. Listeners should prepare for  whether or not an operation is about to execute. Listeners should prepare for the
1692  the execution as appropriate. Listeners will receive a done notification if the  execution as appropriate. Listeners will receive a done notification if the
1693  operation is successful, or an operationNotCompleted notification if the  operation is successful, or an <span class=SpellE>operationNotCompleted</span>
1694  execution is cancelled or otherwise fails. This notification is only received  notification if the execution is cancelled or otherwise fails. This
1695  for those operations executed by the operation history. Operations that are  notification is only received for those operations executed by the operation
1696  added to the history after execution do not trigger these notifications. If the  history. Operations that are added to the history after execution do not
1697  operation successfully executes, clients will also receive a notification that  trigger these notifications. If the operation successfully executes, clients
1698  it has been added to the history. <o:p></o:p></span></p>  will also receive a notification that it has been added to the history. <o:p></o:p></span></p>
1699    
1700  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1701  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
# Line 1633  Line 1705 
1705  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if
1706  not.<o:p></o:p></span></p>  not.<o:p></o:p></span></p>
1707    
1708  <pre>public boolean <b>aboutToUndo</b>()</pre>  <pre>public <span class=SpellE>boolean</span> <span class=SpellE><b>aboutToUndo</b></span>()</pre>
1709    
1710  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
1711  whether or not an operation is about to be undone. Listeners should prepare for  whether or not an operation is about to be undone. Listeners should prepare for
1712  the undo as appropriate. Listeners will receive an undone notification if the  the undo as appropriate. Listeners will receive an undone notification if the operation
1713  operation is successful, or an operationNotCompleted notification if the undo  is successful, or an <span class=SpellE>operationNotCompleted</span>
1714  is cancelled or otherwise fails. <o:p></o:p></span></p>  notification if the undo is cancelled or otherwise fails. <o:p></o:p></span></p>
1715    
1716  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1717  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
# Line 1649  Line 1721 
1721  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if
1722  not.<o:p></o:p></span></p>  not.<o:p></o:p></span></p>
1723    
1724  <pre>public boolean <b>aboutToRedo</b>()</pre>  <pre>public <span class=SpellE>boolean</span> <span class=SpellE><b>aboutToRedo</b></span>()</pre>
1725    
1726  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
1727  whether or not an operation is about to be redone. Listeners should prepare for  whether or not an operation is about to be redone. Listeners should prepare for
1728  the redo as appropriate. Listeners will receive a redone notification if the  the redo as appropriate. Listeners will receive a redone notification if the
1729  operation is successful, or an operationNotCompleted notification if the redo  operation is successful, or an <span class=SpellE>operationNotCompleted</span>
1730  is cancelled or otherwise fails. <o:p></o:p></span></p>  notification if the redo is cancelled or otherwise fails. <o:p></o:p></span></p>
1731    
1732  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1733  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
# Line 1665  Line 1737 
1737  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if
1738  not.<o:p></o:p></span></p>  not.<o:p></o:p></span></p>
1739    
1740  <pre>public boolean <b>done</b>()</pre>  <pre>public <span class=SpellE>boolean</span> <b>done</b>()</pre>
1741    
1742  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
1743  whether or not an operation was initially done. Listeners can take appropriate  whether or not an operation was initially done. Listeners can take appropriate
1744  action, such as revealing any relevant state in the UI. This notification is  action, such as revealing any relevant state in the UI. This notification is
1745  only received for those operations executed by the operation history. Operations  only received for those operations executed by the operation history.
1746  that are added to the history after execution do not trigger this notification.  Operations that are added to the history after execution do not trigger this
1747  Clients will also receive a notification that the operation has been added to  notification. Clients will also receive a notification that the operation has
1748  the history. <o:p></o:p></span></p>  been added to the history. <o:p></o:p></span></p>
1749    
1750  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span  <p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:10.0pt'>Returns:</span></b><span
1751  style='font-size:10.0pt'> <o:p></o:p></span></p>  style='font-size:10.0pt'> <o:p></o:p></span></p>
# Line 1683  Line 1755 
1755  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if
1756  not.<o:p></o:p></span></p>  not.<o:p></o:p></span></p>
1757    
1758  <pre>public boolean <b>undone</b>()</pre>  <pre>public <span class=SpellE>boolean</span> <b>undone</b>()</pre>
1759    
1760  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
1761  whether or not an operation was undone. Listeners can take appropriate action,  whether or not an operation was undone. Listeners can take appropriate action,
# Line 1697  Line 1769 
1769  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if
1770  not.<o:p></o:p></span></p>  not.<o:p></o:p></span></p>
1771    
1772  <pre>public boolean <b>redone</b>()</pre>  <pre>public <span class=SpellE>boolean</span> <b>redone</b>()</pre>
1773    
1774  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
1775  whether or not an operation was redone. Listeners can take appropriate action,  whether or not an operation was redone. Listeners can take appropriate action,
# Line 1711  Line 1783 
1783  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if  style='font-size:10.0pt'>false</span></code><span style='font-size:10.0pt'> if
1784  not.<o:p></o:p></span></p>  not.<o:p></o:p></span></p>
1785    
1786  <pre>public boolean <b>operationNotOK</b>()</pre>  <pre>public <span class=SpellE>boolean</span> <span class=SpellE><b>operationNotOK</b></span>()</pre>
1787    
1788  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns  <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>Returns
1789  whether or not an operation was attempted and not successful. Listeners  whether or not an operation was attempted and not successful. Listeners
# Line 1733  Line 1805 
1805    
1806  <h2>UI Support Classes<span style='font-size:10.0pt'><o:p></o:p></span></h2>  <h2>UI Support Classes<span style='font-size:10.0pt'><o:p></o:p></span></h2>
1807    
1808  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Additional support  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Additional
1809  classes will be provided in the package org.eclipse.ui.operations.<span  support classes will be provided in the package <span class=SpellE>org.eclipse.ui.operations</span>.<span
1810  style='mso-spacerun:yes'>  </span>These classes handle policy decisions about  style='mso-spacerun:yes'>  </span>These classes handle policy decisions about
1811  the undo model to be used by the workbench.<span style='mso-spacerun:yes'>   the undo model to be used by the workbench.<span style='mso-spacerun:yes'> 
1812  </span>Access to the undo and redo commands, as well as the operations history,  </span>Access to the undo and redo commands, as well as the operations history,
# Line 1771  Line 1843 
1843  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
1844    
1845  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Operations  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Operations
1846  that are assigned the workspace context will implement a subinterface,  that are assigned the workspace context will implement a <span class=SpellE>subinterface</span>,
1847  IWorkspaceOperation.<span style='mso-spacerun:yes'>  </span>IWorkspaceOperation  <span class=SpellE>IWorkspaceOperation</span>.<span style='mso-spacerun:yes'> 
1848  adds protocol to access the model elements manipulated by an operation  </span><span class=SpellE>IWorkspaceOperation</span> adds protocol to access
1849  (getElements()), so that listeners can decide if the workspace operation  the model elements manipulated by an operation (<span class=SpellE>getElements</span>()),
1850  affects their model.<span style='mso-spacerun:yes'>  </span>This protocol is  so that listeners can decide if the workspace operation affects their
1851  not generalized to IOperation.<span style='mso-spacerun:yes'>  </span>Prior  model.<span style='mso-spacerun:yes'>  </span>This protocol is not generalized
1852  experience with model-based operation frameworks has shown that there needs to  to <span class=SpellE>IOperation</span>.<span style='mso-spacerun:yes'> 
1853  be a very specific contract regarding how and when validation is performed,  </span>Prior experience with model-based operation frameworks has shown that
1854  what underlying model listeners are used to validate the operation, and whether  there needs to be a very specific contract regarding how and when validation is
1855  operations history notifications or internal model notifications are used to  performed, what underlying model listeners are used to validate the operation,
1856  maintain the validity of the operation and the undo stack.<span  and whether operations history notifications or internal model notifications
1857  style='mso-spacerun:yes'>  </span>These details for IWorkspaceOperation will  are used to maintain the validity of the operation and the undo stack.<span
1858  evolve as more workbench operations are created. <o:p></o:p></span></p>  style='mso-spacerun:yes'>  </span>These details for <span class=SpellE>IWorkspaceOperation</span>
1859    will evolve as more workbench operations are created. <o:p></o:p></span></p>
1860    
1861  <h3>UndoHandler and RedoHandler</h3>  <h3><span class=SpellE>UndoHandler</span> and <span class=SpellE>RedoHandler</span></h3>
1862    
1863  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The
1864  Edit&gt;Undo and Edit&gt;Redo commands should be handled by any parts that wish  Edit&gt;Undo and Edit&gt;Redo commands should be handled by any parts that wish
# Line 1796  Line 1869 
1869  are responsible for the following:<o:p></o:p></span></p>  are responsible for the following:<o:p></o:p></span></p>
1870    
1871  <ul style='margin-top:0in' type=disc>  <ul style='margin-top:0in' type=disc>
1872   <li class=MsoNormal style='mso-list:l6 level1 lfo11;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l7 level1 lfo11;tab-stops:list .5in'><span
1873       style='font-size:10.0pt;font-family:Arial'>Undo and Redo commands will be       style='font-size:10.0pt;font-family:Arial'>Undo and Redo commands will be
1874       enabled based on the status of the history.<o:p></o:p></span></li>       enabled based on the status of the history.<o:p></o:p></span></li>
1875   <li class=MsoNormal style='mso-list:l6 level1 lfo11;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l7 level1 lfo11;tab-stops:list .5in'><span
1876       style='font-size:10.0pt;font-family:Arial'>The Undo and Redo commands will       style='font-size:10.0pt;font-family:Arial'>The Undo and Redo commands will
1877       be appended with the label of the operation for the handler’s context.<o:p></o:p></span></li>       be appended with the label of the operation for the handler’s context.<o:p></o:p></span></li>
1878   <li class=MsoNormal style='mso-list:l6 level1 lfo11;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l7 level1 lfo11;tab-stops:list .5in'><span
1879       style='font-size:10.0pt;font-family:Arial'>The undo and redo history will       style='font-size:10.0pt;font-family:Arial'>The undo and redo history will
1880       be flushed for the handler’s context whenever the most recent operation in       be flushed for the handler’s context whenever the most recent operation in
1881       the history is invalid.<span style='mso-spacerun:yes'>  </span>This       the history is invalid.<span style='mso-spacerun:yes'>  </span>This
# Line 1827  Line 1900 
1900  <h3>Operation Approvers</h3>  <h3>Operation Approvers</h3>
1901    
1902  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The
1903  workbench will provide and install an IOperationApprover that consults the  workbench will provide and install an <span class=SpellE>IOperationApprover</span>
1904  contexts of an operation to determine whether undo or redo should proceed.<span  that consults the contexts of an operation to determine whether undo or redo
1905  style='mso-spacerun:yes'>  </span>The policy is described as follows:<o:p></o:p></span></p>  should proceed.<span style='mso-spacerun:yes'>  </span>The policy is described
1906    as follows:<o:p></o:p></span></p>
1907    
1908  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
1909    
# Line 1848  Line 1922 
1922  example will help explain this.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>  example will help explain this.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
1923    
1924  <ol style='margin-top:0in' start=1 type=1>  <ol style='margin-top:0in' start=1 type=1>
1925   <li class=MsoNormal style='mso-list:l3 level1 lfo14;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l2 level1 lfo14;tab-stops:list .5in'><span
1926       style='font-size:10.0pt;font-family:Arial'>The user makes local edits in       style='font-size:10.0pt;font-family:Arial'>The user makes local edits in
1927       editor A.<o:p></o:p></span></li>       editor A.<o:p></o:p></span></li>
1928   <li class=MsoNormal style='mso-list:l3 level1 lfo14;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l2 level1 lfo14;tab-stops:list .5in'><span
1929       style='font-size:10.0pt;font-family:Arial'>The user initiates a       style='font-size:10.0pt;font-family:Arial'>The user initiates a
1930       refactoring operation whose context is “A” and “workspace.”<o:p></o:p></span></li>       refactoring operation whose context is “A” and “workspace.”<o:p></o:p></span></li>
1931   <li class=MsoNormal style='mso-list:l3 level1 lfo14;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l2 level1 lfo14;tab-stops:list .5in'><span
1932       style='font-size:10.0pt;font-family:Arial'>The user makes additional local       style='font-size:10.0pt;font-family:Arial'>The user makes additional local
1933       edits to editor A.<o:p></o:p></span></li>       edits to editor A.<o:p></o:p></span></li>
1934   <li class=MsoNormal style='mso-list:l3 level1 lfo14;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l2 level1 lfo14;tab-stops:list .5in'><span
1935       style='font-size:10.0pt;font-family:Arial'>The user goes to the navigator       style='font-size:10.0pt;font-family:Arial'>The user goes to the navigator
1936       and selects Undo.<o:p></o:p></span></li>       and selects Undo.<o:p></o:p></span></li>
1937  </ol>  </ol>
1938    
1939  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
1940    
1941  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>In the proposed  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>In the
1942  implementation, the navigator requests an undo for the workspace context.<span  proposed implementation, the navigator requests an undo for the workspace
1943  style='mso-spacerun:yes'>  </span>The refactoring operation triggered in the  context.<span style='mso-spacerun:yes'>  </span>The refactoring operation
1944  editor is the most recent operation that has the workspace context, but it also  triggered in the editor is the most recent operation that has the workspace
1945  contains context “A.”<span style='mso-spacerun:yes'>  </span>Since subsequent  context, but it also contains context “A.”<span style='mso-spacerun:yes'> 
1946  operations in the history also have context “A,”, the operation will not be  </span>Since subsequent operations in the history also have context “A,”, the
1947  allowed.<span style='mso-spacerun:yes'>  </span>An explanation will be provided  operation will not be allowed.<span style='mso-spacerun:yes'>  </span>An
1948  to the user after the fact:<span style='mso-spacerun:yes'>  </span>“Cannot undo  explanation will be provided to the user after the fact:<span
1949  the refactoring operation because there have been subsequent changes to  style='mso-spacerun:yes'>  </span>“Cannot undo the refactoring operation
1950  A.”<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>  because there have been subsequent changes to A.”<span
1951    style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
1952    
1953  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
1954    
# Line 1899  Line 1974 
1974  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Converting  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Converting
1975  an existing action to use operations is straightforward, apart from  an existing action to use operations is straightforward, apart from
1976  implementing the undo and redo behavior for the action.<span  implementing the undo and redo behavior for the action.<span
1977  style='mso-spacerun:yes'>  </span>The run() or runWithEvent method inside the  style='mso-spacerun:yes'>  </span>The run() or <span class=SpellE>runWithEvent</span>
1978  action should create an operation, execute it, and add it to the operations  method inside the action should create an operation, execute it, and add it to
1979  history, rather than run the code inside the method.<span  the operations history, rather than run the code inside the method.<span
1980  style='mso-spacerun:yes'>  </span>The following code shows the existing run()  style='mso-spacerun:yes'>  </span>The following code shows the existing run()
1981  method in the EditorAction of the readme tool example  method in the <span class=SpellE>EditorAction</span> of the <span class=SpellE>readme</span>
1982  (org.eclipse.ui.examples.readmetool):<o:p></o:p></span></p>  tool example (<span class=SpellE>org.eclipse.ui.examples.readmetool</span>):<o:p></o:p></span></p>
1983    
1984  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
1985    
1986  <pre>public void run() {</pre><pre><span style='mso-spacerun:yes'>            </span>String editorName = MessageUtil.getString(&quot;Empty_Editor_Name&quot;); </pre><pre><span style='mso-spacerun:yes'>            </span>if (activeEditor != null)</pre><pre><span style='mso-spacerun:yes'>                </span>editorName = activeEditor.getTitle();</pre><pre><span style='mso-spacerun:yes'>            </span>MessageDialog</pre><pre><span style='mso-spacerun:yes'>                    </span>.openInformation(</pre><pre><span style='mso-spacerun:yes'>                            </span>shell,</pre><pre><span style='mso-spacerun:yes'>                            </span>MessageUtil.getString(&quot;Readme_Editor&quot;), </pre><pre><span style='mso-spacerun:yes'>                            </span>MessageUtil.format(&quot;ReadmeEditorActionExecuted&quot;, </pre><pre><span  <pre>public void run() {</pre><pre><span style='mso-spacerun:yes'>            </span>String <span
1987  style='mso-tab-count:4'>                               </span>new Object[] { getText(), editorName })); </pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span  class=SpellE>editorName</span> = <span class=SpellE>MessageUtil.getString</span>(&quot;<span
1988    class=SpellE>Empty_Editor_Name</span>&quot;); </pre><pre><span style='mso-spacerun:yes'>            </span>if (<span
1989    class=SpellE>activeEditor</span> != null)</pre><pre><span style='mso-spacerun:yes'>       </span><span style='mso-spacerun:yes'>         </span><span
1990    class=SpellE>editorName</span> = <span class=SpellE>activeEditor.getTitle</span>();</pre><pre><span style='mso-spacerun:yes'>            </span><span
1991    class=SpellE>MessageDialog</span></pre><pre><span style='mso-spacerun:yes'>                    </span>.<span
1992    class=SpellE>openInformation</span>(</pre><pre><span style='mso-spacerun:yes'>                            </span>shell,</pre><pre><span style='mso-spacerun:yes'>                            </span><span
1993    class=SpellE>MessageUtil.getString</span>(&quot;<span class=SpellE>Readme_Editor</span>&quot;), </pre><pre><span style='mso-spacerun:yes'>                            </span><span
1994    class=SpellE>MessageUtil.format</span>(&quot;<span class=SpellE>ReadmeEditorActionExecuted</span>&quot;, </pre><pre><span
1995    style='mso-tab-count:4'>                               </span>new Object[] { <span
1996    class=SpellE>getText</span>(), <span class=SpellE>editorName</span> })); </pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span
1997  style='font-family:Arial'>Using operations, the run method simplifies:<o:p></o:p></span></pre><pre><span  style='font-family:Arial'>Using operations, the run method simplifies:<o:p></o:p></span></pre><pre><span
1998  style='font-family:Arial'><o:p>&nbsp;</o:p></span></pre><pre><span style='mso-spacerun:yes'>        </span>public void run() {</pre><pre><span style='mso-spacerun:yes'>            </span>String editorName = MessageUtil.getString(&quot;Empty_Editor_Name&quot;); </pre><pre><span style='mso-spacerun:yes'>  </span><span style='mso-spacerun:yes'>          </span>if (activeEditor != null)</pre><pre><span style='mso-spacerun:yes'>                </span>editorName = activeEditor.getTitle();</pre><pre><span style='mso-spacerun:yes'>            </span>// create the operation</pre><pre><span style='mso-spacerun:yes'>            </span>IOperation operation = new EditorOperation(</pre><pre><span  style='font-family:Arial'><o:p>&nbsp;</o:p></span></pre><pre><span style='mso-spacerun:yes'>        </span>public void run() {</pre><pre><span style='mso-spacerun:yes'>            </span>String <span
1999  style='mso-tab-count:2'>               </span>getText(),shell, editorName);</pre><pre><span style='mso-spacerun:yes'>            </span>// execute (and add to the history)</pre><pre><span style='mso-spacerun:yes'>            </span>history.execute(operation, null);</pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span  class=SpellE>editorName</span> = <span class=SpellE>MessageUtil.getString</span>(&quot;<span
2000    class=SpellE>Empty_Editor_Name</span>&quot;); </pre><pre><span style='mso-spacerun:yes'>           </span><span style='mso-spacerun:yes'> </span>if (<span
2001    class=SpellE>activeEditor</span> != null)</pre><pre><span style='mso-spacerun:yes'>                </span><span
2002    class=SpellE>editorName</span> = <span class=SpellE>activeEditor.getTitle</span>();</pre><pre><span style='mso-spacerun:yes'>            </span>// create the operation</pre><pre><span style='mso-spacerun:yes'>            </span><span
2003    class=SpellE>IOperation</span> operation = new <span class=SpellE>EditorOperation</span>(</pre><pre><span
2004    style='mso-tab-count:2'>               </span><span class=SpellE>getText</span>(),shell, <span
2005    class=SpellE>editorName</span>);</pre><pre><span style='mso-spacerun:yes'>            </span>// execute (and add to the history)</pre><pre><span style='mso-spacerun:yes'>   </span><span style='mso-spacerun:yes'>         </span><span
2006    class=SpellE>history.execute</span>(operation, null);</pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span
2007  style='font-family:Arial'>The operation encapsulates the old run behavior, as well as the undo and redo for the operation:<o:p></o:p></span></pre><pre><span  style='font-family:Arial'>The operation encapsulates the old run behavior, as well as the undo and redo for the operation:<o:p></o:p></span></pre><pre><span
2008  style='font-family:Arial'><o:p>&nbsp;</o:p></span></pre><pre>class EditorOperation extends AbstractOperation {</pre><pre><span style='mso-spacerun:yes'>        </span>Shell fShell;</pre><pre><span style='mso-spacerun:yes'>        </span>String fEditorName;</pre><pre><span style='mso-spacerun:yes'>        </span>public EditorOperation(String label, Shell shell, String editorName) {</pre><pre><span style='mso-spacerun:yes'>            </span>super(label);</pre><pre><span style='mso-spacerun:yes'>            </span>fShell = shell;</pre><pre><span style='mso-spacerun:yes'>            </span>fEditorName = editorName;</pre><pre><span style='mso-spacerun:yes'>            </span></pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span style='mso-spacerun:yes'>        </span>public IStatus execute(IProgressMonitor monitor) {</pre><pre><span style='mso-spacerun:yes'>            </span>MessageDialog.openInformation(</pre><pre><span style='mso-spacerun:yes'>                    </span>fShell,</pre><pre><span style='mso-spacerun:yes'>                    </span>MessageUtil.getString(&quot;Readme_Editor&quot;), </pre><pre><span style='mso-spacerun:yes'>                    </span>MessageUtil.format(&quot;ReadmeEditorActionExecuted&quot;, </pre><pre><span  style='font-family:Arial'><o:p>&nbsp;</o:p></span></pre><pre>class <span
2009  style='mso-tab-count:3'>                       </span>new Object[] { getLabel(), fEditorName }));<span style='mso-spacerun:yes'>  </span></pre><pre><span style='mso-spacerun:yes'>            </span>return Status.OK_STATUS;</pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span style='mso-spacerun:yes'>        </span>public IStatus undo(IProgressMonitor monitor) {</pre><pre><span style='mso-spacerun:yes'>            </span>// implement the undo here</pre><pre><span style='mso-spacerun:yes'>            </span>return Status.OK_STATUS;</pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span style='mso-spacerun:yes'>        </span>public IStatus redo(IProgressMonitor monitor) {</pre><pre><span style='mso-spacerun:yes'>            </span>// implement the redo here</pre><pre><span style='mso-spacerun:yes'>            </span>return Status.OK_STATUS;</pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span style='mso-spacerun:yes'>    </span>}</pre><pre><o:p>&nbsp;</o:p></pre><pre><span  class=SpellE>EditorOperation</span> extends <span class=SpellE>AbstractOperation</span> {</pre><pre><span style='mso-spacerun:yes'>        </span>Shell <span
2010  style='font-family:Arial'>If an IHandler is provided for a command instead of using actions, the execute method of the handler is mapped similarly to the run method in an action:<o:p></o:p></span></pre><pre><span  class=SpellE>fShell</span>;</pre><pre><span style='mso-spacerun:yes'>        </span>String <span
2011  style='font-family:Arial'><o:p>&nbsp;</o:p></span></pre><pre><span style='mso-spacerun:yes'>        </span>public Object execute(Map params) throws ExecutionException {</pre><pre><span style='mso-spacerun:yes'>        </span>try {</pre><pre><span  class=SpellE>fEditorName</span>;</pre><pre><span style='mso-spacerun:yes'>     </span><span style='mso-spacerun:yes'>   </span>public <span
2012  style='mso-tab-count:1'>        </span><span style='mso-spacerun:yes'>    </span>IEditorPart activeEditor = params.get(&quot;ACTIVE_EDITOR&quot;);</pre><pre><span  class=SpellE>EditorOperation</span>(String label, Shell <span class=SpellE>shell</span>, String <span
2013  style='mso-tab-count:1'>        </span><span style='mso-spacerun:yes'>    </span>Shell shell = params.get(&quot;SHELL&quot;);</pre><pre><span  class=SpellE>editorName</span>) {</pre><pre><span style='mso-spacerun:yes'>            </span>super(label);</pre><pre><span style='mso-spacerun:yes'>            </span><span
2014  style='mso-tab-count:1'>        </span><span style='mso-spacerun:yes'>    </span>String label = params.get(&quot;NAME&quot;);</pre><pre><span  class=SpellE>fShell</span> = shell;</pre><pre><span style='mso-spacerun:yes'>            </span><span
2015  style='mso-tab-count:1'>        </span><span style='mso-spacerun:yes'>    </span>String editorName = MessageUtil.getString(&quot;Empty_Editor_Name&quot;); </pre><pre><span style='mso-spacerun:yes'>            </span>if (activeEditor != null)</pre><pre><span style='mso-spacerun:yes'>                </span>editorName = activeEditor.getTitle();</pre><pre><span style='mso-spacerun:yes'>            </span>// create the operation</pre><pre><span style='mso-spacerun:yes'>            </span>IOperation operation =new EditorOperation(label, shell, editorName);</pre><pre><o:p>&nbsp;</o:p></pre><pre><span style='mso-spacerun:yes'>            </span>// execute (and add to the history)</pre><pre><span style='mso-spacerun:yes'>            </span>history.execute(operation, null);</pre><pre><span style='mso-spacerun:yes'>        </span>} catch (Exception e) {</pre><pre><span style='mso-spacerun:yes'>            </span>throw new ExecutionException(</pre><pre><span style='mso-spacerun:yes'>                    </span>&quot;While executing the operation, an exception occurred&quot;, e); </pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span style='mso-spacerun:yes'>        </span>return null;</pre><pre><span style='mso-spacerun:yes'>    </span>}</pre><pre><span  class=SpellE>fEditorName</span> = <span class=SpellE>editorName</span>;</pre><pre><span style='mso-spacerun:yes'>            </span></pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span style='mso-spacerun:yes'>        </span>public <span
2016  style='font-family:Arial'><o:p>&nbsp;</o:p></span></pre><pre><span  class=SpellE>IStatus</span> execute(<span class=SpellE>IProgressMonitor</span> monitor) {</pre><pre><span style='mso-spacerun:yes'>        </span><span style='mso-spacerun:yes'>    </span><span
2017  style='font-family:Arial'>When an action launches a wizard. then the operation is typically created as part of processing the “Finish” button in the wizard.<span style='mso-spacerun:yes'>  </span>Some restructuring may be required.<span style='mso-spacerun:yes'>  </span>For example, wizards are often implemented in hierarchies and make use of convenience methods in the wizard hierarchy.<span style='mso-spacerun:yes'>  </span>Some of these methods may have to move to a corresponding hierarchy of operations.</span> </pre>  class=SpellE>MessageDialog.openInformation</span>(</pre><pre><span style='mso-spacerun:yes'>                    </span><span
2018    class=SpellE>fShell</span>,</pre><pre><span style='mso-spacerun:yes'>                    </span><span
2019    class=SpellE>MessageUtil.getString</span>(&quot;<span class=SpellE>Readme_Editor</span>&quot;), </pre><pre><span style='mso-spacerun:yes'>                    </span><span
2020    class=SpellE>MessageUtil.format</span>(&quot;<span class=SpellE>ReadmeEditorActionExecuted</span>&quot;, </pre><pre><span
2021    style='mso-tab-count:3'>                       </span>new Object[] { <span
2022    class=SpellE>getLabel</span>(), <span class=SpellE>fEditorName</span> }));<span style='mso-spacerun:yes'>  </span></pre><pre><span style='mso-spacerun:yes'>            </span>return <span
2023    class=SpellE>Status.OK_STATUS</span>;</pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span style='mso-spacerun:yes'>        </span>public <span
2024    class=SpellE>IStatus</span> undo(<span class=SpellE>IProgressMonitor</span> monitor) {</pre><pre><span style='mso-spacerun:yes'>            </span>// implement the undo here</pre><pre><span style='mso-spacerun:yes'>            </span>return <span
2025    class=SpellE>Status.OK_STATUS</span>;</pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span style='mso-spacerun:yes'>        </span>public <span
2026    class=SpellE>IStatus</span> redo(<span class=SpellE>IProgressMonitor</span> monitor) {</pre><pre><span style='mso-spacerun:yes'>            </span>// implement the redo here</pre><pre><span style='mso-spacerun:yes'>            </span>return <span
2027    class=SpellE>Status.OK_STATUS</span>;</pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span style='mso-spacerun:yes'>    </span>}</pre><pre><o:p>&nbsp;</o:p></pre><pre><span
2028    style='font-family:Arial'>If an <span class=SpellE>IHandler</span> is provided for a command instead of using actions, the execute method of the handler is mapped similarly to the run method in an action:<o:p></o:p></span></pre><pre><span
2029    style='font-family:Arial'><o:p>&nbsp;</o:p></span></pre><pre><span style='mso-spacerun:yes'>        </span>public Object execute(Map <span
2030    class=SpellE>params</span>) throws <span class=SpellE>ExecutionException</span> {</pre><pre><span style='mso-spacerun:yes'>        </span>try {</pre><pre><span
2031    style='mso-tab-count:1'>        </span><span style='mso-spacerun:yes'>    </span><span
2032    class=SpellE>IEditorPart</span> <span class=SpellE>activeEditor</span> = <span
2033    class=SpellE>params.get</span>(&quot;ACTIVE_EDITOR&quot;);</pre><pre><span
2034    style='mso-tab-count:1'>        </span><span style='mso-spacerun:yes'>    </span>Shell <span
2035    class=SpellE>shell</span> = <span class=SpellE>params.get</span>(&quot;SHELL&quot;);</pre><pre><span
2036    style='mso-tab-count:1'>        </span><span style='mso-spacerun:yes'>    </span>String label = <span
2037    class=SpellE>params.get</span>(&quot;NAME&quot;);</pre><pre><span
2038    style='mso-tab-count:1'>        </span><span style='mso-spacerun:yes'>    </span>String <span
2039    class=SpellE>editorName</span> = <span class=SpellE>MessageUtil.getString</span>(&quot;<span
2040    class=SpellE>Empty_Editor_Name</span>&quot;); </pre><pre><span style='mso-spacerun:yes'>            </span>if (<span
2041    class=SpellE>activeEditor</span> != null)</pre><pre><span style='mso-spacerun:yes'>                </span><span
2042    class=SpellE>editorName</span> = <span class=SpellE>activeEditor.getTitle</span>();</pre><pre><span style='mso-spacerun:yes'>            </span>// create the operation</pre><pre><span style='mso-spacerun:yes'>            </span><span
2043    class=SpellE>IOperation</span> operation =new <span class=SpellE>EditorOperation</span>(label, shell, <span
2044    class=SpellE>editorName</span>);</pre><pre><o:p>&nbsp;</o:p></pre><pre><span style='mso-spacerun:yes'>            </span>// execute (and add to the history)</pre><pre><span style='mso-spacerun:yes'>            </span><span
2045    class=SpellE>history.execute</span>(operation, null);</pre><pre><span style='mso-spacerun:yes'>        </span>} catch (Exception e) {</pre><pre><span style='mso-spacerun:yes'>            </span>throw new <span
2046    class=SpellE>ExecutionException</span>(</pre><pre><span style='mso-spacerun:yes'>                    </span>&quot;While executing the operation, an exception occurred&quot;, e); </pre><pre><span style='mso-spacerun:yes'>        </span>}</pre><pre><span style='mso-spacerun:yes'>        </span>return null;</pre><pre><span style='mso-spacerun:yes'>    </span>}</pre><pre><span
2047    style='font-family:Arial'><o:p>&nbsp;</o:p></span></pre>
2048    
2049    <p class=MsoNormal><span class=GramE><span style='font-size:10.0pt;font-family:
2050    Arial'>When an action launches a wizard.</span></span><span style='font-size:
2051    10.0pt;font-family:Arial'> <span class=GramE>then</span> the operation is
2052    typically created as part of processing the “Finish” button in the wizard.<span
2053    style='mso-spacerun:yes'>  </span>Some restructuring may be required.<span
2054    style='mso-spacerun:yes'>  </span>For example, wizards are often implemented in
2055    hierarchies and make use of convenience methods in the wizard hierarchy.<span
2056    style='mso-spacerun:yes'>  </span>Some of these methods may have to move to a
2057    corresponding hierarchy of operations. <o:p></o:p></span></p>
2058    
2059  <h3>Refactoring example:<span style='mso-spacerun:yes'>  </span>mapping  <h3>Refactoring example:<span style='mso-spacerun:yes'>  </span>mapping
2060  existing protocol to IOperation</h3>  existing protocol to <span class=SpellE>IOperation</span></h3>
2061    
2062  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>In the  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>In the current
2063  current SDK implementation, org.eclipse.ltk.core.refactoring provides an undo  SDK implementation, <span class=SpellE>org.eclipse.ltk.core.refactoring</span>
2064  framework for undoing refactoring operations.<span style='mso-spacerun:yes'>   provides an undo framework for undoing refactoring operations.<span
2065  </span>This framework is based on the notion of “Change” objects.<span  style='mso-spacerun:yes'>  </span>This framework is based on the notion of
2066  style='mso-spacerun:yes'>  </span>Change objects that can be undone are  “Change” objects.<span style='mso-spacerun:yes'>  </span>Change objects that
2067  responsible for returning the undo version of a change when they are  can be undone are responsible for returning the undo version of a change when
2068  executed.<span style='mso-spacerun:yes'>  </span>An undo stack is maintained by  they are executed.<span style='mso-spacerun:yes'>  </span>An undo stack is
2069  an internal undo manager.<span style='mso-spacerun:yes'>  </span>This undo  maintained by an internal undo manager.<span style='mso-spacerun:yes'> 
2070  manager invalidates the history whenever an unknown workspace change  </span>This undo manager invalidates the history whenever an unknown workspace
2071  occurs.<span style='mso-spacerun:yes'>  </span>Undo-aware objects send signals  change occurs.<span style='mso-spacerun:yes'>  </span>Undo-aware objects send
2072  to the undo manager as they perform operations, so that the undo manager will  signals to the undo manager as they perform operations, so that the undo
2073  not invalidate the history.<o:p></o:p></span></p>  manager will not invalidate the history.<o:p></o:p></span></p>
2074    
2075  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
2076    
# Line 1947  Line 2078 
2078  integrated the refactoring change framework with the operations framework as  integrated the refactoring change framework with the operations framework as
2079  follows:<o:p></o:p></span></p>  follows:<o:p></o:p></span></p>
2080    
2081  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l4 level1 lfo16;  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l3 level1 lfo16;
2082  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;
2083  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>1.<span  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>1.<span
2084  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
2085  style='font-size:10.0pt;font-family:Arial'>The change objects were wrappered  style='font-size:10.0pt;font-family:Arial'>The change objects were <span
2086  with a class that implements IOperation (and IWorkspaceOperation) and maps the  class=SpellE>wrappered</span> with a class that implements <span class=SpellE>IOperation</span>
2087  operation protocol to the Change protocol.<o:p></o:p></span></p>  (and <span class=SpellE>IWorkspaceOperation</span>) and maps the operation
2088    protocol to the Change protocol.<o:p></o:p></span></p>
2089    
2090  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l4 level1 lfo16;  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l3 level1 lfo16;
2091  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;
2092  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>2.<span  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>2.<span
2093  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
# Line 1963  Line 2095 
2095  replaced with an alternate implementation that uses the operations history to  replaced with an alternate implementation that uses the operations history to
2096  maintain the undo and redo history.<o:p></o:p></span></p>  maintain the undo and redo history.<o:p></o:p></span></p>
2097    
2098  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l4 level1 lfo16;  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l3 level1 lfo16;
2099  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;
2100  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>3.<span  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>3.<span
2101  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
2102  style='font-size:10.0pt;font-family:Arial'>The workspace listener and  style='font-size:10.0pt;font-family:Arial'>The workspace listener and validation
2103  validation strategy used in the Change framework was maintained since the  strategy used in the Change framework was maintained since the timing of the
2104  timing of the notifications was critical.<span style='mso-spacerun:yes'>   notifications was critical.<span style='mso-spacerun:yes'>  </span>Additional
2105  </span>Additional integration work could be done to use the operations history  integration work could be done to use the operations history listeners for the
2106  listeners for the same purpose, or to change the validation strategy as more  same purpose, or to change the validation strategy as more workspace operations
2107  workspace operations are supported outside of refactoring.<o:p></o:p></span></p>  are supported outside of refactoring.<o:p></o:p></span></p>
2108    
2109  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l4 level1 lfo16;  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l3 level1 lfo16;
2110  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;
2111  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>4.<span  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>4.<span
2112  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
# Line 1984  Line 2116 
2116  affected by the workspace operation and determine whether another context  affected by the workspace operation and determine whether another context
2117  should be assigned to the operation.<o:p></o:p></span></p>  should be assigned to the operation.<o:p></o:p></span></p>
2118    
2119  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l4 level1 lfo16;  <p class=MsoNormal style='margin-left:39.0pt;text-indent:-.25in;mso-list:l3 level1 lfo16;
2120  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;  tab-stops:list 39.0pt'><![if !supportLists]><span style='font-size:10.0pt;
2121  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>5.<span  font-family:Arial;mso-fareast-font-family:Arial'><span style='mso-list:Ignore'>5.<span
2122  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span
# Line 1992  Line 2124 
2124  undone and redone from any view or editor that installed the undo and redo  undone and redone from any view or editor that installed the undo and redo
2125  handlers on the workspace context.<o:p></o:p></span></p>  handlers on the workspace context.<o:p></o:p></span></p>
2126    
2127  <h3>Text editor example:<span style='mso-spacerun:yes'>  </span>implementing  <h3>Text editor example:<span style='mso-spacerun:yes'>  </span>implementing <span
2128  IOperation in preexisting commands</h3>  class=SpellE>IOperation</span> in preexisting commands</h3>
2129    
2130  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The JFace  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>The <span
2131  text framework supports undo and redo of text editing operations.<span  class=SpellE>JFace</span> text framework supports undo and redo of text editing
2132  style='mso-spacerun:yes'>  </span>This implementation relies on private undo  operations.<span style='mso-spacerun:yes'>  </span>This implementation relies
2133  stacks that are maintained by each editor.<span style='mso-spacerun:yes'>   on private undo stacks that are maintained by each editor.<span
2134  </span>The JFace IUndoManager listens to text changes coming from the  style='mso-spacerun:yes'>  </span>The <span class=SpellE>JFace</span> <span
2135  underlying widget, and builds a TextCommand for each undoable edit.<span  class=SpellE>IUndoManager</span> listens to text changes coming from the
2136  style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>  underlying widget, and builds a <span class=SpellE>TextCommand</span> for each
2137    undoable edit.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>
2138    
2139  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
2140    
2141  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>A prototype  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>A prototype
2142  integrated the text undo in JFace with the operations framework as follows:<o:p></o:p></span></p>  integrated the text undo in <span class=SpellE>JFace</span> with the operations
2143    framework as follows:<o:p></o:p></span></p>
2144    
2145  <ol style='margin-top:0in' start=1 type=1>  <ol style='margin-top:0in' start=1 type=1>
2146   <li class=MsoNormal style='mso-list:l5 level1 lfo19;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l4 level1 lfo19;tab-stops:list .5in'><span
2147       style='font-size:10.0pt;font-family:Arial'>The existing TextCommand was       style='font-size:10.0pt;font-family:Arial'>The existing <span
2148       altered to implement the IOperation interface.<o:p></o:p></span></li>       class=SpellE>TextCommand</span> was altered to implement the <span
2149   <li class=MsoNormal style='mso-list:l5 level1 lfo19;tab-stops:list .5in'><span       class=SpellE>IOperation</span> interface.<o:p></o:p></span></li>
2150     <li class=MsoNormal style='mso-list:l4 level1 lfo19;tab-stops:list .5in'><span
2151       style='font-size:10.0pt;font-family:Arial'>Specialized contexts (one       style='font-size:10.0pt;font-family:Arial'>Specialized contexts (one
2152       instance for each text editor) are assigned to the operations.<o:p></o:p></span></li>       instance for each text editor) are assigned to the operations.<o:p></o:p></span></li>
2153   <li class=MsoNormal style='mso-list:l5 level1 lfo19;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l4 level1 lfo19;tab-stops:list .5in'><span
2154       style='font-size:10.0pt;font-family:Arial'>The existing UndoManager was       style='font-size:10.0pt;font-family:Arial'>The existing <span
2155       replaced with an alternate implementation that added text commands to the       class=SpellE>UndoManager</span> was replaced with an alternate
2156       operations history instead of a local stack, and used the operation       implementation that added text commands to the operations history instead
2157       history protocol when handling undo and redo commands.<o:p></o:p></span></li>       of a local stack, and used the operation history protocol when handling
2158   <li class=MsoNormal style='mso-list:l5 level1 lfo19;tab-stops:list .5in'><span       undo and redo commands.<o:p></o:p></span></li>
2159     <li class=MsoNormal style='mso-list:l4 level1 lfo19;tab-stops:list .5in'><span
2160       style='font-size:10.0pt;font-family:Arial'>The undo manager installs a       style='font-size:10.0pt;font-family:Arial'>The undo manager installs a
2161       listener on the history to monitor new operations that are added to the       listener on the history to monitor new operations that are added to the
2162       history.<o:p></o:p></span></li>       history.<o:p></o:p></span></li>
2163   <li class=MsoNormal style='mso-list:l5 level1 lfo19;tab-stops:list .5in'><span   <li class=MsoNormal style='mso-list:l4 level1 lfo19;tab-stops:list .5in'><span
2164       style='font-size:10.0pt;font-family:Arial'>When an “outside” operation is       style='font-size:10.0pt;font-family:Arial'>When an “outside” operation is
2165       added to the history, the undo manager consults the editor’s operation       added to the history, the undo manager consults the editor’s operation
2166       context to see if the outside operation is relevant.<span       context to see if the outside operation is relevant.<span

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4