X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Fvisualisations%2FDynamicVisualisationsView.java;h=6bdf00378fb726728b0e58e4279cbd386ec8cd8b;hb=a2c485af95024784aa9de3378759ee94b8caea2e;hp=d98a37872651daef0c361948eda3ebad0060352f;hpb=0249f20bb127e61c58db4432b8609ff0cb441480;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/visualisations/DynamicVisualisationsView.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/visualisations/DynamicVisualisationsView.java index d98a3787..6bdf0037 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/visualisations/DynamicVisualisationsView.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/visualisations/DynamicVisualisationsView.java @@ -2,85 +2,44 @@ 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; +import org.simantics.Simantics; +import org.simantics.db.AsyncReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.procedure.adapter.AsyncListenerAdapter; +import org.simantics.db.layer0.request.PossibleActiveModel; 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); + Simantics.getSession().asyncRequest(new PossibleActiveModel(Simantics.getProjectResource()), new AsyncListenerAdapter() { + + @Override + public void execute(AsyncReadGraph graph, Resource result) { + if (ui != null && !ui.isDisposed()) { + ui.getDisplay().asyncExec(() -> { + ui.setParentResource(result); + }); + } + } + + @Override + public boolean isDisposed() { + return ui != null ? ui.isDisposed() : true; + } + }); } @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); - } - }; }