package com.example.e4.rcp.todo.handlers;
import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.model.application.ui.MElementContainer;
import org.eclipse.e4.ui.model.application.ui.MUIElement;
import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
public class RestorePerspectiveHandler {
@Execute
public void execute(EModelService modelService, MWindow window,
EPartService partService) {
MPerspective activePerspective = modelService
.getActivePerspective(window);
MUIElement findSnippet = modelService.findSnippet(window,
activePerspective.getElementId());
MElementContainer<MUIElement> parent = activePerspective.getParent();
modelService.removePerspectiveModel(activePerspective, window);
parent.getChildren().add(findSnippet);
partService.switchPerspective((MPerspective) findSnippet);
}
@CanExecute
public boolean canExecute(EModelService modelService, MWindow window) {
MPerspective activePerspective = modelService
.getActivePerspective(window);
return modelService.findSnippet(window,
activePerspective.getElementId()) != null;
}
}