private Composite parent;
private Button disableUpdatesButton;
+ private Button resetVisualisationButton;
+ private Button hoveringVertexEnabledButton;
+ private Button hoveringEdgesEnabledButton;
private List<Supplier<Pair<String, DynamicArrowContribution>>> edgeArrowSuppliers;
private Button dynamicSymbolsValvesButton;
private Button dynamicSymbolsPumpingStationsButton;
+ private Text intervalText;
+
public DynamicVisualisationsUI(Composite parent) {
this.parent = parent;
ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
String item = templateSelectionCombo.getItem(templateSelectionCombo.getSelectionIndex());
for (NamedResource template : visualisations) {
if (item.equals(template.getName())) {
- Simantics.getSession().asyncRequest(new WriteRequest() {
-
- @Override
- public void perform(WriteGraph graph) throws DatabaseException {
- Resource vf = DynamicVisualisations.getVisualisationFolder(graph, parentResource);
- DynamicVisualisations.setActiveVisualisation(graph, vf, template.getResource());
- }
- });
- break;
+ if (parentResource != null) {
+ Resource res = parentResource;
+ Simantics.getSession().asyncRequest(new WriteRequest() {
+
+ @Override
+ public void perform(WriteGraph graph) throws DatabaseException {
+ Resource vf = DynamicVisualisations.getVisualisationFolder(graph, res);
+ DynamicVisualisations.setActiveVisualisation(graph, vf, template.getResource());
+ }
+ });
+ break;
+ }
}
}
}
});
+ Composite intervalElementsComposite = new Composite(parent, SWT.NONE);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(intervalElementsComposite);
+ GridLayoutFactory.fillDefaults().numColumns(1).applyTo(intervalElementsComposite);
+ initializeIntervalElements(intervalElementsComposite);
+
Composite hideElementsComposite = new Composite(parent, SWT.NONE);
GridDataFactory.fillDefaults().grab(true, false).applyTo(hideElementsComposite);
GridLayoutFactory.fillDefaults().numColumns(1).applyTo(hideElementsComposite);
removeVisualisationTemplate(visualisation.getName(), Optional.of(visualisation.getVisualisationResource()));
}
});
+ }
+
+ private void initializeIntervalElements(Composite parent) {
+ Group group = new Group(parent, SWT.NONE);
+ group.setText("Interval");
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(group);
+ GridLayoutFactory.fillDefaults().numColumns(6).margins(5, 5).applyTo(group);
- disableUpdatesButton = new Button(buttonBarsComposite, SWT.CHECK);
+ createIntervalElements(group);
+ }
+
+ private void createIntervalElements(Composite parent) {
+
+ Label label = new Label(parent, SWT.NONE);
+ label.setText("Generic");
+ intervalText = new Text(parent, SWT.BORDER);
+ addSelectionListener(intervalText);
+
+ disableUpdatesButton = new Button(parent, SWT.CHECK);
disableUpdatesButton.setText("Disable updates");
- disableUpdatesButton.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- disableUpdates();
- }
- });
+ 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) {
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);
Button defaultButton = new Button(parent, SWT.CHECK);
GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).applyTo(defaultButton);
- addSelectionListener(defaultButton);
defaultButton.addSelectionListener(new SelectionAdapter() {
@Override
}
}
});
+ addSelectionListener(defaultButton);
variableCombo.addSelectionListener(new SelectionAdapter() {
defaultButton.setSelection(true);
}
});
+ addSelectionListener(variableCombo);
arrowRows.put(object.getArrowObject().getName(), new ArrowObjectRow(label, usedButton, variableCombo, gainText, biasText, defaultButton));
};
}
- protected void disableUpdates() {
-
- }
-
protected void removeVisualisationTemplate(String name, Optional<Resource> of) {
if (of.isPresent()) {
Resource visualisation = of.get();
boolean dynamicSymbolsValves = dynamicSymbolsValvesButton.getSelection();
boolean dynamicSymbolsPumpingStations = dynamicSymbolsPumpingStationsButton.getSelection();
+ boolean disabled = disableUpdatesButton.getSelection();
+ boolean resetVisualisation = resetVisualisationButton.getSelection();
+ Long interval;
+ try {
+ interval = Long.parseLong(intervalText.getText());
+ } catch (NumberFormatException e) {
+ // ignore
+ interval = 2000L;
+ }
+ final long finalInterval = interval;
+
+ boolean hoverVertex = hoveringVertexEnabledButton.getSelection();
+ boolean hoverEdges = hoveringEdgesEnabledButton.getSelection();
+
Simantics.getSession().asyncRequest(new WriteRequest() {
@Override
} else {
exist = DynamicVisualisations.createVisualisation(graph, parentResource, templateName);
}
+ DynamicVisualisations.setIntervalAndDisabled(graph, exist, finalInterval, disabled, resetVisualisation);
DynamicVisualisations.setColorContributions(graph, exist, colorCollect);
DynamicVisualisations.setColorBarOptions(graph, exist, colorBarOptions);
DynamicVisualisations.setSizeContributions(graph, exist, sizeCollect);
dynamicSymbolsValves,
dynamicSymbolsPumpingStations
);
+ DynamicVisualisations.setKeyVariablesHover(graph, exist, hoverVertex, hoverEdges);
}
});
}
Combo variableCombo = new Combo(parent, SWT.READ_ONLY);
variableCombo.setItems(colorContributions.keySet().toArray(new String[colorContributions.size()]));
- addSelectionListener(variableCombo);
GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).applyTo(variableCombo);
Button defaultButton = new Button(parent, SWT.CHECK);
GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).applyTo(defaultButton);
- addSelectionListener(defaultButton);
defaultButton.addSelectionListener(new SelectionAdapter() {
@Override
}
}
});
+ addSelectionListener(defaultButton);
variableCombo.addSelectionListener(new SelectionAdapter() {
}
}
});
+ addSelectionListener(variableCombo);
coloringRows.put(object.getColoringObject().getName(), new ColoringObjectRow(label, usedButton, variableCombo, minText, maxText, unit, colorMapCombo, defaultButton));
String key = variableCombo.getItem(selectionIndex);
DynamicColorContribution cont = colorContributions.get(key);
if (cont != null) {
- String colorMap = colorMapCombo.getItem(colorMapCombo.getSelectionIndex());
- try {
- Map<String, DynamicColorMap> colorMaps = Simantics.getSession().syncRequest(new UniqueRead<Map<String, DynamicColorMap>>() {
-
- @Override
- public Map<String, DynamicColorMap> perform(ReadGraph graph) throws DatabaseException {
- return DynamicVisualisationsContributions.dynamicColorMaps(graph);
- }
- });
+
+ String label = variableCombo.getItem(variableCombo.getSelectionIndex());
+ DynamicColorContribution dcc;
+ if (colorMapCombo.getSelectionIndex() > -1) {
+ String colorMap = colorMapCombo.getItem(colorMapCombo.getSelectionIndex());
DynamicColorMap dColorMap = colorMaps.get(colorMap);
- String label = variableCombo.getItem(variableCombo.getSelectionIndex());
-
- DynamicColorContribution dcc = new DynamicColorContribution(label, cont.getModuleName(), cont.getAttributeName(), unit.getText(), cont.getVariableGain(), cont.getVariableBias(), dColorMap, Double.parseDouble(minText.getText()), Double.parseDouble(maxText.getText()));
- dcc.setUsed(usedButton.getSelection());
- dcc.setUseDefault(defaultButton.getSelection());
-
- return Pair.make(object.getColoringObject().getName(), dcc);
- } catch (DatabaseException e) {
- LOGGER.error("Could not get DynamicColorContribution", e);
+ dcc = new DynamicColorContribution(label, cont.getModuleName(), cont.getAttributeName(), unit.getText(), cont.getVariableGain(), cont.getVariableBias(), dColorMap, Double.parseDouble(minText.getText()), Double.parseDouble(maxText.getText()));
+ } else {
+ dcc = colorContributions.get(label);
}
+ dcc.setUsed(usedButton.getSelection());
+ dcc.setUseDefault(defaultButton.getSelection());
+
+ return Pair.make(object.getColoringObject().getName(), dcc);
}
}
return null;
Combo variableCombo = new Combo(parent, SWT.READ_ONLY);
variableCombo.setItems(sizeContributions.keySet().toArray(new String[sizeContributions.size()]));
- addSelectionListener(variableCombo);
GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).applyTo(variableCombo);
Button defaultButton = new Button(parent, SWT.CHECK);
GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).applyTo(defaultButton);
- addSelectionListener(defaultButton);
defaultButton.addSelectionListener(new SelectionAdapter() {
@Override
}
}
});
+ addSelectionListener(defaultButton);
variableCombo.addSelectionListener(new SelectionAdapter() {
defaultButton.setSelection(true);
}
});
+ addSelectionListener(variableCombo);
sizingRows.put(object.getSizingObject().getName(), new SizingObjectRow(label, usedButton, variableCombo, minText, maxText, unit, sizeMapCombo, defaultButton));
String key = variableCombo.getItem(selectionIndex);
DynamicSizeContribution cont = sizeContributions.get(key);
if (cont != null) {
- String sizeMap = sizeMapCombo.getItem(sizeMapCombo.getSelectionIndex());
- try {
- Map<String, DynamicSizeMap> sizeMaps = Simantics.getSession().syncRequest(new UniqueRead<Map<String, DynamicSizeMap>>() {
-
- @Override
- public Map<String, DynamicSizeMap> perform(ReadGraph graph) throws DatabaseException {
- return DynamicVisualisationsContributions.dynamicSizeMaps(graph);
- }
- });
- DynamicSizeMap dColorMap = sizeMaps.get(sizeMap);
- String label = variableCombo.getItem(variableCombo.getSelectionIndex());
-
- DynamicSizeContribution dsc = new DynamicSizeContribution(label, cont.getModuleName(), cont.getAttributeName(), unit.getText(), cont.getVariableGain(), cont.getVariableBias(), dColorMap, Double.parseDouble(minText.getText()), Double.parseDouble(maxText.getText()));
- dsc.setUsed(usedButton.getSelection());
- dsc.setUseDefault(defaultButton.getSelection());
-
- return Pair.make(object.getSizingObject().getName(), dsc);
- } catch (DatabaseException e) {
- LOGGER.error("Could not get DynamicColorContribution", e);
+
+ String label = variableCombo.getItem(variableCombo.getSelectionIndex());
+ DynamicSizeContribution dsc;
+ if (sizeMapCombo.getSelectionIndex() > -1) {
+ String sizeMap = sizeMapCombo.getItem(sizeMapCombo.getSelectionIndex());
+ DynamicSizeMap dSizeMap = sizeMaps.get(sizeMap);
+ dsc = new DynamicSizeContribution(label, cont.getModuleName(), cont.getAttributeName(), unit.getText(), cont.getVariableGain(), cont.getVariableBias(), dSizeMap, Double.parseDouble(minText.getText()), Double.parseDouble(maxText.getText()));
+ } else {
+ dsc = sizeContributions.get(label);
}
+ dsc.setUsed(usedButton.getSelection());
+ dsc.setUseDefault(defaultButton.getSelection());
+
+ return Pair.make(object.getSizingObject().getName(), dsc);
}
}
return null;
private void updateListening() {
if (visualisationsListener != null)
visualisationsListener.dispose();
- visualisationsListener = new VisualisationsListener(this);
- Simantics.getSession().asyncRequest(new DynamicVisualisationsRequest(parentResource), visualisationsListener);
+ if (parentResource != null) {
+ visualisationsListener = new VisualisationsListener(this);
+ Simantics.getSession().asyncRequest(new DynamicVisualisationsRequest(parentResource), visualisationsListener);
+ }
if (listener != null)
listener.dispose();
- listener = new VisualisationListener(this);
- Simantics.getSession().asyncRequest(new ActiveDynamicVisualisationsRequest(parentResource), listener);
+ if (parentResource != null) {
+ listener = new VisualisationListener(this);
+ Simantics.getSession().asyncRequest(new ActiveDynamicVisualisationsRequest(parentResource), listener);
+ }
}
private static class VisualisationsListener implements Listener<Collection<NamedResource>> {
}
}
+ 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()) {