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());
+ ui = new DynamicVisualisationsUI(parent);
- partService.addPartListener(partListener);
+ Simantics.getSession().asyncRequest(new PossibleActiveModel(Simantics.getProjectResource()), new AsyncListenerAdapter<Resource>() {
+
+ @Override
+ public void execute(AsyncReadGraph graph, Resource result) {
+ if (ui != null && !ui.getParent().isDisposed()) {
+ ui.getParent().getDisplay().asyncExec(() -> {
+ ui.setParentResource(result);
+ });
+ }
+ }
+
+ @Override
+ public boolean isDisposed() {
+ return ui != null ? ui.getParent().isDisposed() : true;
+ }
+ });
}
@PreDestroy
public void dispose() {
- partService.removePartListener(partListener);
- ui.dispose();
+ ui.getParent().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);
- }
- };
}