- Composite toShow = getLayer(layer, context);
- getDisplay().syncExec(() -> {
- toShow.moveAbove(null);
- dynamicArea.layout(true, true);
- });
- currentLayerId = layer;
- return toShow;
+ Composite toShow = getLayer(layerId, context);
+ if (toShow != null) {
+ currentLayerId = layerId;
+ if (!isDisposed())
+ getDisplay().syncExec(() -> {
+ if (!toShow.isDisposed())
+ toShow.moveAbove(null);
+ else
+ log.warn("Cannot show work area because it is disposed.");
+ dynamicArea.layout(true, true);
+ });
+ return toShow;
+ } else {
+ return current;
+ }
+ }
+
+ Composite switchToLayer(SuiteLayer layer, Node context) {
+ // TODO make it more robust
+ for (String layerId : layers.keySet()) {
+ SuiteLayer l = layers.get(layerId);
+ if (layer == l) {
+ return switchToLayer(layerId, context);
+ }
+ }
+ throw new IllegalArgumentException("Layer is not registered.");