]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/visualisations/DynamicVisualisationsUI.java
Improve HoverInfoStyle performance for district network diagrams
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / visualisations / DynamicVisualisationsUI.java
index 5ec61fd79a7609a042ab906d503e984c7679b451..bb608eaad11b3bc5ce9cd07cd14eef0b46cb7b46 100644 (file)
@@ -98,6 +98,9 @@ public class DynamicVisualisationsUI {
     private Composite parent;
 
     private Button disableUpdatesButton;
+    private Button resetVisualisationButton;
+    private Button hoveringVertexEnabledButton;
+    private Button hoveringEdgesEnabledButton;
 
     private List<Supplier<Pair<String, DynamicArrowContribution>>> edgeArrowSuppliers;
 
@@ -248,7 +251,7 @@ public class DynamicVisualisationsUI {
         Group group = new Group(parent, SWT.NONE);
         group.setText("Interval");
         GridDataFactory.fillDefaults().grab(true, false).applyTo(group);
-        GridLayoutFactory.fillDefaults().numColumns(4).margins(5, 5).applyTo(group);
+        GridLayoutFactory.fillDefaults().numColumns(6).margins(5, 5).applyTo(group);
         
         createIntervalElements(group);
     }
@@ -264,6 +267,17 @@ public class DynamicVisualisationsUI {
         disableUpdatesButton.setText("Disable updates");
         addSelectionListener(disableUpdatesButton);
 
+        resetVisualisationButton = new Button(parent, SWT.CHECK);
+        resetVisualisationButton.setText("Reset Visualisation");
+        addSelectionListener(resetVisualisationButton);
+        
+        hoveringVertexEnabledButton = new Button(parent, SWT.CHECK);
+        hoveringVertexEnabledButton.setText("Vertex Key Variables on Hover");
+        addSelectionListener(hoveringVertexEnabledButton);
+        
+        hoveringEdgesEnabledButton = new Button(parent, SWT.CHECK);
+        hoveringEdgesEnabledButton.setText("Edge Key Variables on Hover");
+        addSelectionListener(hoveringEdgesEnabledButton);
     }
     
     private void initializeHideElements(Composite parent) {
@@ -611,6 +625,7 @@ public class DynamicVisualisationsUI {
         boolean dynamicSymbolsPumpingStations = dynamicSymbolsPumpingStationsButton.getSelection();
         
         boolean disabled = disableUpdatesButton.getSelection();
+        boolean resetVisualisation = resetVisualisationButton.getSelection();
         Long interval;
         try {
             interval = Long.parseLong(intervalText.getText());
@@ -618,7 +633,10 @@ public class DynamicVisualisationsUI {
             // ignore
             interval = 2000L;
         }
-        long ii = interval;
+        final long finalInterval = interval;
+        
+        boolean hoverVertex = hoveringVertexEnabledButton.getSelection();
+        boolean hoverEdges = hoveringEdgesEnabledButton.getSelection();
         
         Simantics.getSession().asyncRequest(new WriteRequest() {
             
@@ -630,7 +648,7 @@ public class DynamicVisualisationsUI {
                 } else {
                     exist = DynamicVisualisations.createVisualisation(graph, parentResource, templateName);
                 }
-                DynamicVisualisations.setIntervalAndDisabled(graph, exist, ii, disabled);
+                DynamicVisualisations.setIntervalAndDisabled(graph, exist, finalInterval, disabled, resetVisualisation);
                 DynamicVisualisations.setColorContributions(graph, exist, colorCollect);
                 DynamicVisualisations.setColorBarOptions(graph, exist, colorBarOptions);
                 DynamicVisualisations.setSizeContributions(graph, exist, sizeCollect);
@@ -657,6 +675,7 @@ public class DynamicVisualisationsUI {
                         dynamicSymbolsValves,
                         dynamicSymbolsPumpingStations
                     );
+                DynamicVisualisations.setKeyVariablesHover(graph, exist, hoverVertex, hoverEdges);
             }
         });
     }
@@ -1426,6 +1445,9 @@ public class DynamicVisualisationsUI {
                 intervalText.setText(Long.toString(visualisation.getInterval()));
                 disableUpdatesButton.setSelection(visualisation.disabledUpdates());
                 
+                hoveringVertexEnabledButton.setSelection(visualisation.isKeyVariablesVertexHover());
+                hoveringEdgesEnabledButton.setSelection(visualisation.isKeyVariablesEdgesHover());
+                
                 Map<String, DynamicColorContribution> colorContributions = visualisation.getColorContributions();
                 for (Entry<String, DynamicColorContribution> entry : colorContributions.entrySet()) {