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);
+
+ 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(buttonBarsComposite, SWT.CHECK);
+ 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) {
};
}
- 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);
}
});
}
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()) {