import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.simantics.db.exception.DatabaseException;
import org.simantics.db.layer0.util.RemoverUtil;
import org.simantics.db.procedure.Listener;
-import org.simantics.district.network.DistrictNetworkUtil;
import org.simantics.district.network.profile.ActiveDynamicVisualisationsRequest;
import org.simantics.district.network.profile.DynamicVisualisationsRequest;
+import org.simantics.district.network.visualisations.DynamicVisualisations;
import org.simantics.district.network.visualisations.DynamicVisualisationsContributions;
+import org.simantics.district.network.visualisations.DynamicVisualisationsContributions.DynamicArrowObject;
import org.simantics.district.network.visualisations.DynamicVisualisationsContributions.DynamicColoringObject;
import org.simantics.district.network.visualisations.DynamicVisualisationsContributions.DynamicSizingObject;
import org.simantics.district.network.visualisations.model.ColorBarOptions;
import org.simantics.district.network.visualisations.model.ColorBarOptions.ColorBarsLocation;
import org.simantics.district.network.visualisations.model.ColorBarOptions.ColorBarsSize;
+import org.simantics.district.network.visualisations.model.DynamicArrowContribution;
import org.simantics.district.network.visualisations.model.DynamicColorContribution;
import org.simantics.district.network.visualisations.model.DynamicColorMap;
import org.simantics.district.network.visualisations.model.DynamicSizeContribution;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class DynamicVisualisationsUI extends Composite {
+public class DynamicVisualisationsUI {
private static final Logger LOGGER = LoggerFactory.getLogger(DynamicVisualisationsUI.class);
private Button removeVisualisationTemplateButton;
- public DynamicVisualisationsUI(Composite parent, int style) {
- super(parent, style);
-// ScrolledComposite scrolledComposite = new ScrolledComposite(this, SWT.V_SCROLL);
-// scrolledComposite.setLayout(new GridLayout(1, false));
-// scrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-//
-// Composite firstContent = new Composite(scrolledComposite, SWT.NONE);
-// firstContent.setLayout(new GridLayout(1, false));
-// firstContent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- defaultInitializeUI(this);
+ private Composite parent;
+
+ private Button disableUpdatesButton;
+
+ private List<Supplier<Pair<String, DynamicArrowContribution>>> edgeArrowSuppliers;
+
+ private Button saveVisualisationTemplateAsButton;
+
+ private Button hideEdgesButton;
+ private Button hidePointsButton;
+ private Button hideConsumersButton;
+ private Button hideProducersButton;
+ private Button hideValvesButton;
+ private Button hidePumpingStationsButton;
+
+ private Button networkBranchesStaticPropertiesButton;
+ private Button pointsStaticPropertiesButton;
+ private Button consumersStaticPropertiesButton;
+
+ private Button dynamicSymbolsEdgesButton;
+ private Button dynamicSymbolsProducersButton;
+ private Button dynamicSymbolsValvesButton;
+ private Button dynamicSymbolsPumpingStationsButton;
+
+ public DynamicVisualisationsUI(Composite parent) {
+ this.parent = parent;
+ ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
+ scrolledComposite.setLayout(new GridLayout(1, false));
+ scrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ Composite firstContent = new Composite(scrolledComposite, SWT.NONE);
+ firstContent.setLayout(new GridLayout(1, false));
+ firstContent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-// scrolledComposite.setContent(firstContent);
-// scrolledComposite.setExpandHorizontal(true);
-// scrolledComposite.setExpandVertical(true);
-// scrolledComposite.setMinSize(firstContent.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ defaultInitializeUI(firstContent);
+ scrolledComposite.setContent(firstContent);
+ scrolledComposite.setExpandHorizontal(true);
+ scrolledComposite.setExpandVertical(true);
+ scrolledComposite.setMinSize(firstContent.computeSize(SWT.DEFAULT, SWT.DEFAULT));
}
private void defaultInitializeUI(Composite parent) {
@Override
public void perform(WriteGraph graph) throws DatabaseException {
- Resource vf = DistrictNetworkUtil.getVisualisationFolder(graph, parentResource);
- DistrictNetworkUtil.setActiveVisualisation(graph, vf, template.getResource());
+ Resource vf = DynamicVisualisations.getVisualisationFolder(graph, parentResource);
+ DynamicVisualisations.setActiveVisualisation(graph, vf, template.getResource());
}
});
break;
}
});
+ Composite hideElementsComposite = new Composite(parent, SWT.NONE);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(hideElementsComposite);
+ GridLayoutFactory.fillDefaults().numColumns(1).applyTo(hideElementsComposite);
+ initializeHideElements(hideElementsComposite);
+
+ Composite staticPropertiesComposite = new Composite(parent, SWT.NONE);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(staticPropertiesComposite);
+ GridLayoutFactory.fillDefaults().numColumns(1).applyTo(staticPropertiesComposite);
+ initializeStaticProperties(staticPropertiesComposite);
+
+ Composite dynamicSymbolsComposite = new Composite(parent, SWT.NONE);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(dynamicSymbolsComposite);
+ GridLayoutFactory.fillDefaults().numColumns(1).applyTo(dynamicSymbolsComposite);
+ initializeDynamicSymbols(dynamicSymbolsComposite);
+
Composite coloringObjectsComposite = new Composite(parent, SWT.NONE);
GridDataFactory.fillDefaults().grab(true, false).applyTo(coloringObjectsComposite);
GridLayoutFactory.fillDefaults().numColumns(1).applyTo(coloringObjectsComposite);
GridLayoutFactory.fillDefaults().numColumns(1).applyTo(sizeBarsComposite);
initializeSizeBars(sizeBarsComposite);
+ Composite edgeArrowsComposite = new Composite(parent, SWT.NONE);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(edgeArrowsComposite);
+ GridLayoutFactory.fillDefaults().numColumns(1).applyTo(edgeArrowsComposite);
+ initializeEdgeArrows(edgeArrowsComposite);
+
Composite buttonBarsComposite = new Composite(parent, SWT.NONE);
GridDataFactory.fillDefaults().grab(true, false).applyTo(buttonBarsComposite);
GridLayoutFactory.fillDefaults().numColumns(3).applyTo(buttonBarsComposite);
- Button saveVisualisationTemplateAsButton = new Button(buttonBarsComposite, SWT.NONE);
+ saveVisualisationTemplateAsButton = new Button(buttonBarsComposite, SWT.NONE);
saveVisualisationTemplateAsButton.setText("Save as visualisation template");
saveVisualisationTemplateAsButton.addSelectionListener(new SelectionAdapter() {
}
});
+ disableUpdatesButton = new Button(buttonBarsComposite, SWT.CHECK);
+ disableUpdatesButton.setText("Disable updates");
+ disableUpdatesButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ disableUpdates();
+ }
+ });
}
+ private void initializeHideElements(Composite parent) {
+ Group group = new Group(parent, SWT.NONE);
+ group.setText("Hide Elements");
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(group);
+ GridLayoutFactory.fillDefaults().numColumns(8).margins(5, 5).applyTo(group);
+
+ createHideElements(group);
+ }
+
+ private void createHideElements(Composite parent) {
+
+ hideEdgesButton = new Button(parent, SWT.CHECK);
+ hideEdgesButton.setText("Edges");
+ addSelectionListener(hideEdgesButton);
+
+ hidePointsButton = new Button(parent, SWT.CHECK);
+ hidePointsButton.setText("Points");
+ addSelectionListener(hidePointsButton);
+
+ hideConsumersButton = new Button(parent, SWT.CHECK);
+ hideConsumersButton.setText("Consumers");
+ addSelectionListener(hideConsumersButton);
+
+ hideProducersButton = new Button(parent, SWT.CHECK);
+ hideProducersButton.setText("Producers");
+ addSelectionListener(hideProducersButton);
+
+ hideValvesButton = new Button(parent, SWT.CHECK);
+ hideValvesButton.setText("Valves");
+ addSelectionListener(hideValvesButton);
+
+ hidePumpingStationsButton = new Button(parent, SWT.CHECK);
+ hidePumpingStationsButton.setText("Pumping Stations");
+ addSelectionListener(hidePumpingStationsButton);
+ }
+
+ private void initializeStaticProperties(Composite parent) {
+ Group group = new Group(parent, SWT.NONE);
+ group.setText("Static Properties");
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(group);
+ GridLayoutFactory.fillDefaults().numColumns(8).margins(5, 5).applyTo(group);
+
+ createStaticProperties(group);
+ }
+
+ private void createStaticProperties(Composite parent) {
+
+ networkBranchesStaticPropertiesButton = new Button(parent, SWT.CHECK);
+ networkBranchesStaticPropertiesButton.setText("Network Branches");
+ addSelectionListener(networkBranchesStaticPropertiesButton);
+
+ pointsStaticPropertiesButton = new Button(parent, SWT.CHECK);
+ pointsStaticPropertiesButton.setText("Points");
+ addSelectionListener(pointsStaticPropertiesButton);
+
+ consumersStaticPropertiesButton = new Button(parent, SWT.CHECK);
+ consumersStaticPropertiesButton.setText("Consumers");
+ addSelectionListener(consumersStaticPropertiesButton);
+
+ }
+
+ private void initializeDynamicSymbols(Composite parent) {
+ Group group = new Group(parent, SWT.NONE);
+ group.setText("Dynamic Symbols");
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(group);
+ GridLayoutFactory.fillDefaults().numColumns(8).margins(5, 5).applyTo(group);
+
+ createDynamicSymbols(group);
+ }
+
+ private void createDynamicSymbols(Composite parent) {
+
+ dynamicSymbolsEdgesButton = new Button(parent, SWT.CHECK);
+ dynamicSymbolsEdgesButton.setText("Shutoff Valves in Pipes");
+ addSelectionListener(dynamicSymbolsEdgesButton);
+
+ dynamicSymbolsProducersButton = new Button(parent, SWT.CHECK);
+ dynamicSymbolsProducersButton.setText("Producers");
+ addSelectionListener(dynamicSymbolsProducersButton);
+
+ dynamicSymbolsValvesButton = new Button(parent, SWT.CHECK);
+ dynamicSymbolsValvesButton.setText("Valves");
+ addSelectionListener(dynamicSymbolsValvesButton);
+
+ dynamicSymbolsPumpingStationsButton = new Button(parent, SWT.CHECK);
+ dynamicSymbolsPumpingStationsButton.setText("Pumping Stations");
+ addSelectionListener(dynamicSymbolsPumpingStationsButton);
+ }
+
+ private void initializeEdgeArrows(Composite parent) {
+ Group group = new Group(parent, SWT.NONE);
+ group.setText("Edge Arrows");
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(group);
+ GridLayoutFactory.fillDefaults().numColumns(6).margins(5, 5).applyTo(group);
+
+ createEdgeArrowsHeaderRow(group);
+
+ edgeArrowSuppliers = new ArrayList<>();
+ {
+ try {
+ Collection<DynamicArrowObject> result = Simantics.getSession().syncRequest(new UniqueRead<Collection<DynamicArrowObject>>() {
+
+ @Override
+ public Collection<DynamicArrowObject> perform(ReadGraph graph) throws DatabaseException {
+ return DynamicVisualisationsContributions.dynamicEdgeArrowObjects(graph);
+ }
+ });
+
+ for (DynamicArrowObject object : result) {
+ edgeArrowSuppliers.add(createEdgeArrowRow(group, object));
+ }
+ } catch (DatabaseException e) {
+ LOGGER.error("Could not create coloring objecst", e);
+ }
+ }
+ }
+
+
+ private void createEdgeArrowsHeaderRow(Composite parent) {
+
+ Label label = new Label(parent, SWT.NONE);
+ label.setText("Label");
+ GridDataFactory.fillDefaults().grab(true, false).align(SWT.CENTER, SWT.CENTER).applyTo(label);
+
+ label = new Label(parent, SWT.NONE);
+ label.setText("Used");
+ GridDataFactory.fillDefaults().grab(true, false).align(SWT.CENTER, SWT.CENTER).applyTo(label);
+
+ label = new Label(parent, SWT.NONE);
+ label.setText("Variable");
+ GridDataFactory.fillDefaults().grab(true, false).align(SWT.CENTER, SWT.CENTER).applyTo(label);
+
+ label = new Label(parent, SWT.NONE);
+ label.setText("Gain");
+ GridDataFactory.fillDefaults().grab(true, false).align(SWT.CENTER, SWT.CENTER).applyTo(label);
+
+ label = new Label(parent, SWT.NONE);
+ label.setText("Bias");
+ GridDataFactory.fillDefaults().grab(true, false).align(SWT.CENTER, SWT.CENTER).applyTo(label);
+
+ label = new Label(parent, SWT.NONE);
+ label.setText("Default");
+ GridDataFactory.fillDefaults().grab(true, false).align(SWT.CENTER, SWT.CENTER).applyTo(label);
+ }
+
+ private Supplier<Pair<String, DynamicArrowContribution>> createEdgeArrowRow(Composite parent, DynamicArrowObject object) {
+
+ Map<String, DynamicArrowContribution> arrowContributions = object.getArrowContributions();
+ if (arrowContributions.isEmpty()) {
+ // ok, no point in showing empty combo boxes
+ return null;
+ }
+
+ Label label = new Label(parent, SWT.NONE);
+ label.setText(object.getArrowObject().getName());
+ GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).applyTo(label);
+
+ Button usedButton = new Button(parent, SWT.CHECK);
+ GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).applyTo(usedButton);
+ addSelectionListener(usedButton);
+
+ Combo variableCombo = new Combo(parent, SWT.READ_ONLY);
+ variableCombo.setItems(arrowContributions.keySet().toArray(new String[arrowContributions.size()]));
+ addSelectionListener(variableCombo);
+
+ GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).applyTo(variableCombo);
+
+ Text gainText = new Text(parent, SWT.BORDER);
+ GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).applyTo(gainText);
+ addSelectionListener(gainText);
+
+ Text biasText = new Text(parent, SWT.BORDER);
+ GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).applyTo(biasText);
+ addSelectionListener(biasText);
+
+ Button defaultButton = new Button(parent, SWT.CHECK);
+ GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).applyTo(defaultButton);
+ addSelectionListener(defaultButton);
+ defaultButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ int index = variableCombo.getSelectionIndex();
+ if (index >= 0) {
+ String key = variableCombo.getItem(index);
+ DynamicArrowContribution cont = arrowContributions.get(key);
+
+ gainText.setText(Double.toString(cont.getDefaultGain()));
+ gainText.setEnabled(!defaultButton.getSelection());
+ biasText.setText(Double.toString(cont.getDefaultBias()));
+ biasText.setEnabled(!defaultButton.getSelection());
+
+ }
+ }
+ });
+
+ variableCombo.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ // handle update for others
+ String key = variableCombo.getItem(variableCombo.getSelectionIndex());
+ DynamicArrowContribution cont = arrowContributions.get(key);
+
+ if (gainText.getText().isEmpty()) {
+ gainText.setText(Double.toString(cont.getDefaultGain()));
+ }
+ if (biasText.getText().isEmpty()) {
+ biasText.setText(Double.toString(cont.getDefaultBias()));
+ }
+
+ defaultButton.setSelection(true);
+ }
+ });
+
+ arrowRows.put(object.getArrowObject().getName(), new ArrowObjectRow(label, usedButton, variableCombo, gainText, biasText, defaultButton));
+
+ return new Supplier<Pair<String, DynamicArrowContribution>>() {
+
+ @Override
+ public Pair<String, DynamicArrowContribution> get() {
+ int selectionIndex = variableCombo.getSelectionIndex();
+ if (selectionIndex >= 0) {
+ String key = variableCombo.getItem(selectionIndex);
+ DynamicArrowContribution cont = arrowContributions.get(key);
+ if (cont != null) {
+ String label = variableCombo.getItem(variableCombo.getSelectionIndex());
+
+ double gain = cont.getDefaultGain();
+ String gainS = gainText.getText();
+ if (gainS != null && !gainS.isEmpty()) {
+ gain = Double.parseDouble(gainS);
+ }
+ double bias = cont.getDefaultBias();
+ String biasS = biasText.getText();
+ if (biasS != null && !biasS.isEmpty()) {
+ bias = Double.parseDouble(biasText.getText());
+ }
+
+ DynamicArrowContribution dsc = new DynamicArrowContribution(label, cont.getModuleName(), cont.getAttributeName(), gain, bias);
+ dsc.setUsed(usedButton.getSelection());
+ dsc.setUseDefault(defaultButton.getSelection());
+
+ return Pair.make(object.getArrowObject().getName(), dsc);
+ }
+ }
+ return null;
+ }
+ };
+ }
+
+ protected void disableUpdates() {
+
+ }
+
protected void removeVisualisationTemplate(String name, Optional<Resource> of) {
if (of.isPresent()) {
Resource visualisation = of.get();
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());
+ List<Pair<String, DynamicColorContribution>> colorCollect = colorSuppliers.stream().filter(Objects::nonNull).map(s -> s.get()).filter(Objects::nonNull).collect(Collectors.toList());
String colorLocation = colorLocationCombo.getItem(colorLocationCombo.getSelectionIndex());
String colorSize = colorSizeCombo.getItem(colorSizeCombo.getSelectionIndex());
.withLocation(ColorBarsLocation.valueOf(colorLocation))
.withSize(ColorBarsSize.valueOf(colorSize));
- List<Pair<String, DynamicSizeContribution>> sizeCollect = sizeSuppliers.stream().map(s -> s.get()).filter(Objects::nonNull).collect(Collectors.toList());
+ List<Pair<String, DynamicSizeContribution>> sizeCollect = sizeSuppliers.stream().filter(Objects::nonNull).map(s -> s.get()).filter(Objects::nonNull).collect(Collectors.toList());
String sizeLocation = sizeLocationCombo.getItem(sizeLocationCombo.getSelectionIndex());
String sizeSize = sizeSizeCombo.getItem(sizeSizeCombo.getSelectionIndex());
- SizeBarOptions sizeBarOptions = new SizeBarOptions()
+ final SizeBarOptions sizeBarOptions = new SizeBarOptions()
.showSizeBars(showSizeButton.getSelection())
.showSizeBarsTicks(sizeTicksButton.getSelection())
.useGradients(sizeGradientButton.getSelection())
.withLocation(SizeBarsLocation.valueOf(sizeLocation))
.withSize(SizeBarsSize.valueOf(sizeSize));
+ List<Pair<String, DynamicArrowContribution>> edgeArrowCollect = edgeArrowSuppliers.stream().filter(Objects::nonNull).map(s -> s.get()).filter(Objects::nonNull).collect(Collectors.toList());
+
+ boolean hideEdges = hideEdgesButton.getSelection();
+ boolean hidePoints = hidePointsButton.getSelection();
+ boolean hideConsumers = hideConsumersButton.getSelection();
+ boolean hideProducers = hideProducersButton.getSelection();
+ boolean hideValves = hideValvesButton.getSelection();
+ boolean hidePumpingStations = hidePumpingStationsButton.getSelection();
+
+ boolean networkBranchesStaticProperties = networkBranchesStaticPropertiesButton.getSelection();
+ boolean pointsStaticProperties = pointsStaticPropertiesButton.getSelection();
+ boolean consumersStaticProperties = consumersStaticPropertiesButton.getSelection();
+
+ boolean dynamicSymbolsEdges = dynamicSymbolsEdgesButton.getSelection();
+ boolean dynamicSymbolsProducers = dynamicSymbolsProducersButton.getSelection();
+ boolean dynamicSymbolsValves = dynamicSymbolsValvesButton.getSelection();
+ boolean dynamicSymbolsPumpingStations = dynamicSymbolsPumpingStationsButton.getSelection();
+
Simantics.getSession().asyncRequest(new WriteRequest() {
@Override
if (existing.isPresent()) {
exist = existing.get();
} else {
- exist = DistrictNetworkUtil.createVisualisation(graph, parentResource, templateName);
+ exist = DynamicVisualisations.createVisualisation(graph, parentResource, templateName);
}
+ DynamicVisualisations.setColorContributions(graph, exist, colorCollect);
+ DynamicVisualisations.setColorBarOptions(graph, exist, colorBarOptions);
+ DynamicVisualisations.setSizeContributions(graph, exist, sizeCollect);
+ DynamicVisualisations.setSizeBarOptions(graph, exist, sizeBarOptions);
+ DynamicVisualisations.setEdgeArrowContributions(graph, exist, edgeArrowCollect);
+ DynamicVisualisations.setHideElements(graph, exist,
+ hideEdges,
+ hidePoints,
+ hideConsumers,
+ hideProducers,
+ hideValves,
+ hidePumpingStations
+ );
- DistrictNetworkUtil.setColorContributions(graph, exist, colorCollect);
+ DynamicVisualisations.setStaticProperties(graph, exist,
+ networkBranchesStaticProperties,
+ pointsStaticProperties,
+ consumersStaticProperties
+ );
- DistrictNetworkUtil.setColorBarOptions(graph, exist, colorBarOptions);
- DistrictNetworkUtil.setSizeContributions(graph, exist, sizeCollect);
- DistrictNetworkUtil.setSizeBarOptions(graph, exist, sizeBarOptions);
+ DynamicVisualisations.setDynamicSymbols(graph, exist,
+ dynamicSymbolsEdges,
+ dynamicSymbolsProducers,
+ dynamicSymbolsValves,
+ dynamicSymbolsPumpingStations
+ );
}
});
}
private Map<String, ColoringObjectRow> coloringRows = new HashMap<>();
private Map<String, SizingObjectRow> sizingRows = new HashMap<>();
+ private Map<String, ArrowObjectRow> arrowRows = new HashMap<>();
private VisualisationsListener visualisationsListener;
}
}
+ private static class ArrowObjectRow {
+
+ private final Label label;
+ private final Button usedButton;
+ private final Combo variableCombo;
+ private final Text gainText;
+ private final Text biasText;
+ private final Button defaultButton;
+
+ public ArrowObjectRow(Label label, Button usedButton, Combo variableCombo, Text gainText, Text biasText, Button defaultButton) {
+ this.label = label;
+ this.usedButton = usedButton;
+ this.variableCombo = variableCombo;
+ this.gainText = gainText;
+ this.biasText = biasText;
+ this.defaultButton = defaultButton;
+ }
+
+ public void update(DynamicColorContribution colorContribution) {
+ String[] items = variableCombo.getItems();
+ for (int i = 0; i < items.length; i++) {
+ if (colorContribution.getLabel().equals(items[i])) {
+ variableCombo.select(i);
+ break;
+ }
+ }
+ gainText.setText(Double.toString(colorContribution.getDefaultMin()));
+ biasText.setText(Double.toString(colorContribution.getDefaultMax()));
+
+ usedButton.setSelection(colorContribution.isUsed());
+ defaultButton.setSelection(colorContribution.isUseDefault());
+
+ gainText.setEnabled(!colorContribution.isUseDefault());
+ biasText.setEnabled(!colorContribution.isUseDefault());
+ }
+ }
+
private Supplier<Pair<String, DynamicColorContribution>> createColoringObjectRow(Composite parent, DynamicColoringObject object, Map<String, DynamicColorMap> colorMaps) {
Label label = new Label(parent, SWT.NONE);
label.setText(object.getColoringObject().getName());
this.parentResource = parentResource;
updateListening();
}
+ saveVisualisationTemplateAsButton.setEnabled(parentResource != null);
}
private void updateListening() {
@Override
public boolean isDisposed() {
- return disposed || ui.isDisposed();
+ return disposed || ui.getParent().isDisposed();
}
public void dispose() {
@Override
public boolean isDisposed() {
- return disposed || ui.isDisposed();
+ return disposed ||ui.getParent().isDisposed();
}
public void dispose() {
});
}
+
+ public Composite getParent() {
+ return parent;
+ }
}