35
35
import org .eclipse .ui .IEditorSite ;
36
36
import org .eclipse .ui .IFileEditorInput ;
37
37
import org .eclipse .ui .IMemento ;
38
+ import org .eclipse .ui .IPartListener ;
38
39
import org .eclipse .ui .IPersistableEditor ;
39
40
import org .eclipse .ui .IWorkbench ;
41
+ import org .eclipse .ui .IWorkbenchPart ;
40
42
import org .eclipse .ui .PartInitException ;
41
43
import org .eclipse .ui .contexts .IContextActivation ;
42
44
import org .eclipse .ui .contexts .IContextService ;
@@ -130,6 +132,7 @@ public String getLabel() {
130
132
private SelectionEvents _selectionEvents ;
131
133
private IContextActivation _searchContextActivation ;
132
134
private SceneEditorBlockProvider _blocksProvider ;
135
+ private IPartListener _partListener ;
133
136
134
137
public SceneEditor () {
135
138
_outlinerSelectionListener = new ISelectionChangedListener () {
@@ -387,8 +390,10 @@ public SceneEditorBroker getBroker() {
387
390
@ Override
388
391
public void dispose () {
389
392
393
+ getEditorSite ().getPage ().removePartListener (_partListener );
394
+
390
395
_broker .dispose ();
391
-
396
+
392
397
super .dispose ();
393
398
}
394
399
@@ -487,7 +492,7 @@ public List<IEditorBlock> getBlocks() {
487
492
public Runnable getRefreshHandler () {
488
493
return _refreshHandler ;
489
494
}
490
-
495
+
491
496
@ Override
492
497
public void setRefreshHandler (Runnable refresh ) {
493
498
_refreshHandler = refresh ;
@@ -536,6 +541,7 @@ public void removePropertyPage(ScenePropertyPage page) {
536
541
}
537
542
538
543
private void registerUndoRedoActions () {
544
+
539
545
var site = getEditorSite ();
540
546
541
547
_undoRedoGroup = new UndoRedoActionGroup (site , undoContext , true );
@@ -545,6 +551,45 @@ private void registerUndoRedoActions() {
545
551
_undoRedoGroup .fillActionBars (actionBars );
546
552
547
553
actionBars .updateActionBars ();
554
+
555
+ _partListener = createUndoRedoPartListener ();
556
+
557
+ getEditorSite ().getPage ().addPartListener (_partListener );
558
+
559
+ }
560
+
561
+ private IPartListener createUndoRedoPartListener () {
562
+ return new IPartListener () {
563
+
564
+ @ Override
565
+ public void partOpened (IWorkbenchPart part ) {
566
+ //
567
+ }
568
+
569
+ @ Override
570
+ public void partDeactivated (IWorkbenchPart part ) {
571
+ //
572
+ }
573
+
574
+ @ Override
575
+ public void partClosed (IWorkbenchPart part ) {
576
+ //
577
+ }
578
+
579
+ @ Override
580
+ public void partBroughtToTop (IWorkbenchPart part ) {
581
+ //
582
+ }
583
+
584
+ @ Override
585
+ public void partActivated (IWorkbenchPart part ) {
586
+ if (part == SceneEditor .this ) {
587
+ var actionBars = getEditorSite ().getActionBars ();
588
+ _undoRedoGroup .fillActionBars (actionBars );
589
+ actionBars .updateActionBars ();
590
+ }
591
+ }
592
+ };
548
593
}
549
594
550
595
public UndoRedoActionGroup getUndoRedoGroup () {
0 commit comments