]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/visualisations/DynamicVisualisationsUI.java
DynamicVisualisations enhancements & deprecate old profiles & settings
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / visualisations / DynamicVisualisationsUI.java
index 8ed98fad19bcd070c0837d25be90e960851fb6c2..5cb80a15d5fca59c50a72827a1bcbad7ac0dc94e 100644 (file)
@@ -57,6 +57,7 @@ import org.simantics.district.network.visualisations.model.SizeBarOptions;
 import org.simantics.district.network.visualisations.model.SizeBarOptions.SizeBarsLocation;
 import org.simantics.district.network.visualisations.model.SizeBarOptions.SizeBarsSize;
 import org.simantics.utils.datastructures.Pair;
+import org.simantics.utils.ui.dialogs.ShowError;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -70,10 +71,12 @@ public class DynamicVisualisationsUI extends Composite {
 
     private Button showSizeButton;
     private Button sizeTicksButton;
+    private Button sizeGradientButton;
     private Combo sizeLocationCombo;
     private Combo sizeSizeCombo;
     private Button showColorButton;
     private Button colorTicksButton;
+    private Button colorGradientButton;
     private Combo colorLocationCombo;
     private Combo colorSizeCombo;
 
@@ -178,7 +181,12 @@ public class DynamicVisualisationsUI extends Composite {
             
             @Override
             public void widgetSelected(SelectionEvent e) {
-               persistVisualisationTemplate(visualisation.getName(), Optional.of(visualisation.getVisualisationResource()));
+               try {
+                    persistVisualisationTemplate(visualisation.getName(), Optional.of(visualisation.getVisualisationResource()));
+                } catch (Exception e1) {
+                    LOGGER.error("Could not persist visualisation template", e1);
+                    ShowError.showError("Could not persist visualisation template", e1.getMessage(), e1);
+                }
             }
         });
         
@@ -222,11 +230,16 @@ public class DynamicVisualisationsUI extends Composite {
         
         if (dialog.open() == Dialog.OK) {
             String name = dialog.getValue();
-            persistVisualisationTemplate(name, Optional.empty());
+            try {
+                persistVisualisationTemplate(name, Optional.empty());
+            } catch (Exception e) {
+                LOGGER.error("Could not persist visualisation template", e);
+                ShowError.showError("Could not persist visualisation template", e.getMessage(), e);
+            }
         }
     }
 
-    private void persistVisualisationTemplate(String templateName, Optional<Resource> existing) {
+    private void persistVisualisationTemplate(String templateName, Optional<Resource> existing) throws Exception {
         
         List<Pair<String, DynamicColorContribution>> colorCollect = colorSuppliers.stream().map(s -> s.get()).filter(Objects::nonNull).collect(Collectors.toList());
 
@@ -236,6 +249,7 @@ public class DynamicVisualisationsUI extends Composite {
         ColorBarOptions colorBarOptions = new ColorBarOptions()
                 .showColorBars(showColorButton.getSelection())
                 .showColorBarsTicks(colorTicksButton.getSelection())
+                .useGradients(colorGradientButton.getSelection())
                 .withLocation(ColorBarsLocation.valueOf(colorLocation))
                 .withSize(ColorBarsSize.valueOf(colorSize));
         
@@ -247,6 +261,7 @@ public class DynamicVisualisationsUI extends Composite {
         SizeBarOptions sizeBarOptions = new SizeBarOptions()
                 .showSizeBars(showSizeButton.getSelection())
                 .showSizeBarsTicks(sizeTicksButton.getSelection())
+                .useGradients(sizeGradientButton.getSelection())
                 .withLocation(SizeBarsLocation.valueOf(sizeLocation))
                 .withSize(SizeBarsSize.valueOf(sizeSize));
         
@@ -704,7 +719,7 @@ public class DynamicVisualisationsUI extends Composite {
         Group group = new Group(parent, SWT.NONE);
         group.setText("Color Bars");
         GridDataFactory.fillDefaults().grab(true, false).applyTo(group);
-        GridLayoutFactory.fillDefaults().numColumns(6).margins(5, 5).applyTo(group);
+        GridLayoutFactory.fillDefaults().numColumns(8).margins(5, 5).applyTo(group);
         
         createColorBars(group);
     }
@@ -717,15 +732,26 @@ public class DynamicVisualisationsUI extends Composite {
         colorTicksButton = new Button(parent, SWT.CHECK);
         colorTicksButton.setText("Ticks");
         
+        colorGradientButton = new Button(parent, SWT.CHECK);
+        colorGradientButton.setText("Gradients");
+        
         Label label = new Label(parent, SWT.NONE);
         label.setText("Location");
         colorLocationCombo = new Combo(parent, SWT.READ_ONLY);
-        colorLocationCombo.setItems(Stream.of(ColorBarsLocation.values()).map(size -> size.toString()).toArray(String[]::new));
+        String[] colorLocationItems = Stream.of(ColorBarsLocation.values()).map(size -> size.toString()).toArray(String[]::new);
+        colorLocationCombo.setItems(colorLocationItems);
+        if (colorLocationItems.length > 0) {
+            colorLocationCombo.select(0);
+        }
         
         label = new Label(parent, SWT.NONE);
         label.setText("Size");
         colorSizeCombo = new Combo(parent, SWT.READ_ONLY);
-        colorSizeCombo.setItems(Stream.of(ColorBarsSize.values()).map(size -> size.toString()).toArray(String[]::new));
+        String[] colorSizeItems = Stream.of(ColorBarsSize.values()).map(size -> size.toString()).toArray(String[]::new);
+        colorSizeCombo.setItems(colorSizeItems);
+        if (colorSizeItems.length > 0) {
+            colorSizeCombo.select(0);
+        }
     }
 
     private void initializeObjectSizes(Composite parent) {
@@ -764,7 +790,7 @@ public class DynamicVisualisationsUI extends Composite {
         Group group = new Group(parent, SWT.NONE);
         group.setText("Size Bars");
         GridDataFactory.fillDefaults().grab(true, false).applyTo(group);
-        GridLayoutFactory.fillDefaults().numColumns(6).margins(5, 5).applyTo(group);
+        GridLayoutFactory.fillDefaults().numColumns(8).margins(5, 5).applyTo(group);
         
         createSizeBars(group);
     }
@@ -776,15 +802,26 @@ public class DynamicVisualisationsUI extends Composite {
         sizeTicksButton = new Button(parent, SWT.CHECK);
         sizeTicksButton.setText("Ticks");
         
+        sizeGradientButton = new Button(parent, SWT.CHECK);
+        sizeGradientButton.setText("Gradient");
+        
         Label label = new Label(parent, SWT.NONE);
         label.setText("Location");
         sizeLocationCombo = new Combo(parent, SWT.READ_ONLY);
-        sizeLocationCombo.setItems(Stream.of(SizeBarsLocation.values()).map(size -> size.toString()).toArray(String[]::new));
+        String[] sizeLocationItems = Stream.of(SizeBarsLocation.values()).map(size -> size.toString()).toArray(String[]::new);
+        sizeLocationCombo.setItems(sizeLocationItems);
+        if (sizeLocationItems.length > 0) {
+            sizeLocationCombo.select(0);
+        }
         
         label = new Label(parent, SWT.NONE);
         label.setText("Size");
         sizeSizeCombo = new Combo(parent, SWT.READ_ONLY);
-        sizeSizeCombo.setItems(Stream.of(SizeBarsSize.values()).map(size -> size.toString()).toArray(String[]::new));
+        String[] sizeSizeItems = Stream.of(SizeBarsSize.values()).map(size -> size.toString()).toArray(String[]::new);
+        sizeSizeCombo.setItems(sizeSizeItems);
+        if (sizeSizeItems.length > 0) {
+            sizeSizeCombo.select(0);
+        }
     }
 
     public void setDiagramResource(Resource diagramResource) {
@@ -870,13 +907,14 @@ public class DynamicVisualisationsUI extends Composite {
 
     public void updateVisualisation(DynamicVisualisation result) {
         this.visualisation = result;
-        if (visualisation != null) {
-            Display.getDefault().asyncExec(() -> {
-                if (getParent().isDisposed())
-                    return;
-                
-                applyButton.setEnabled(visualisation != null);
-                
+        Display.getDefault().asyncExec(() -> {
+            if (getParent().isDisposed())
+                return;
+            
+            applyButton.setEnabled(visualisation != null && visualisation.getVisualisationResource() != null);
+            removeVisualisationTemplateButton.setEnabled(visualisation != null && visualisation.getVisualisationResource() != null);
+            
+            if (visualisation != null) {
                 String[] items = templateSelectionCombo.getItems();
                 for (int i = 0; i < items.length; i++) {
                     if (visualisation.getName().equals(items[i])) {
@@ -944,11 +982,8 @@ public class DynamicVisualisationsUI extends Composite {
                         break;
                     }
                 }
-
-                
-                removeVisualisationTemplateButton.setEnabled(visualisation != null && visualisation.getVisualisationResource() != null);
-            });
-        }
+            }
+        });
     }
 
     public void updateVisualisations(Collection<NamedResource> result) {