X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Fbreakdown%2FDistrictNetworkBreakdownPanel.java;h=c8db5165f497ba4964979917c6e7df599c6c4a1f;hb=cb2ebef6cbe572f646082952f57bb69135f308bd;hp=39770b6b8c9fb79e9115f7be55ccb502b7ed7398;hpb=37304f4caf1d4252797cbaf7b40a56e212e203b4;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/breakdown/DistrictNetworkBreakdownPanel.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/breakdown/DistrictNetworkBreakdownPanel.java index 39770b6b..c8db5165 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/breakdown/DistrictNetworkBreakdownPanel.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/breakdown/DistrictNetworkBreakdownPanel.java @@ -1,7 +1,9 @@ package org.simantics.district.network.ui.breakdown; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -9,7 +11,6 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.SubMonitor; -import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; @@ -42,6 +43,7 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.TreeColumn; +import org.simantics.DatabaseJob; import org.simantics.NameLabelMode; import org.simantics.NameLabelUtil; import org.simantics.ObjectIdentitySchedulingRule; @@ -147,6 +149,15 @@ public class DistrictNetworkBreakdownPanel extends Composite { if (sel.size() > 0 && fromSameDiagram(sel)) { manager.add(new ShowSubnetworkAction(sel)); } + Set diagrams = new HashSet<>(); + if (sel.size() > 0) { + for (Subgraph graph : sel) { + diagrams.add(graph.parent); + } + } + if (diagrams.isEmpty()) + diagrams.addAll(subgraphs.keySet()); + manager.add(new RefreshAction(diagrams)); //manager.add(new DeleteAction()); } @@ -415,7 +426,7 @@ public class DistrictNetworkBreakdownPanel extends Composite { } - private class CalculateSubgraphs extends Job { + private class CalculateSubgraphs extends DatabaseJob { private NetworkDiagram diagram; @@ -445,6 +456,24 @@ public class DistrictNetworkBreakdownPanel extends Composite { } + private class RefreshAction extends Action { + + private Set diagram; + + public RefreshAction(Set diagrams) { + super("Refresh"); + this.diagram = diagrams; + } + + @Override + public void run() { + diagram.forEach(d -> { + subgraphs.remove(d); + tree.refresh(); + }); + } + } + private static class ShowSubnetworkAction extends Action { private final List subgraphs;