package org.simantics.district.network.ui.visualisations; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.inject.Inject; import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.workbench.modeling.EPartService; import org.eclipse.e4.ui.workbench.modeling.ESelectionService; import org.eclipse.e4.ui.workbench.modeling.IPartListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor; import org.simantics.district.network.ui.DistrictDiagramEditor; import org.simantics.ui.workbench.IResourceEditorInput; import org.simantics.utils.ui.workbench.WorkbenchUtils; public class DynamicVisualisationsView { @Inject ESelectionService selectionService; @Inject EPartService partService; private DynamicVisualisationsUI ui; @PostConstruct public void postConstruct(Composite parent) { ui = new DynamicVisualisationsUI(parent, 0); IEditorPart editor = WorkbenchUtils.getActiveEditor(); if (editor instanceof DistrictDiagramEditor) setDiagramResource(editor.getEditorInput()); partService.addPartListener(partListener); } @PreDestroy public void dispose() { partService.removePartListener(partListener); ui.dispose(); ui = null; } private void setDiagramResourceFromCompatibilityEditor(MPart part) { if (part.getObject() instanceof CompatibilityEditor) { CompatibilityEditor editor = (CompatibilityEditor) part.getObject(); IEditorPart editorPart = editor.getEditor(); setDiagramResource(editorPart.getEditorInput()); } } private void setDiagramResource(IEditorInput input) { if (input instanceof IResourceEditorInput) { ui.setDiagramResource(((IResourceEditorInput) input).getResource()); } } private IPartListener partListener = new IPartListener() { @Override public void partVisible(MPart part) { setDiagramResourceFromCompatibilityEditor(part); } @Override public void partHidden(MPart part) { } @Override public void partDeactivated(MPart part) { } @Override public void partBroughtToTop(MPart part) { setDiagramResourceFromCompatibilityEditor(part); } @Override public void partActivated(MPart part) { setDiagramResourceFromCompatibilityEditor(part); } }; }