Skip to content

Commit f8c09d6

Browse files
committed
Expose JFXRepresentation's ToolkitListener list to DisplayRuntimeInstance
1 parent 24521bd commit f8c09d6

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/app/DisplayRuntimeInstance.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
import java.util.concurrent.Future;
1818
import java.util.concurrent.TimeUnit;
1919
import java.util.concurrent.TimeoutException;
20+
import java.util.concurrent.FutureTask;
2021
import java.util.logging.Level;
2122

2223
import org.csstudio.display.builder.model.DisplayModel;
2324
import org.csstudio.display.builder.model.Preferences;
2425
import org.csstudio.display.builder.model.Widget;
2526
import org.csstudio.display.builder.model.persist.ModelLoader;
2627
import org.csstudio.display.builder.model.util.ModelResourceUtil;
28+
import org.csstudio.display.builder.representation.ToolkitListener;
2729
import org.csstudio.display.builder.representation.javafx.JFXRepresentation;
2830
import org.csstudio.display.builder.runtime.ActionUtil;
2931
import org.csstudio.display.builder.runtime.RuntimeUtil;
@@ -75,6 +77,7 @@ public class DisplayRuntimeInstance implements AppInstance
7577
private final BorderPane layout = new BorderPane();
7678
private final DockItemWithInput dock_item;
7779
private final DockItemRepresentation representation;
80+
private FutureTask<Object> representation_init = new FutureTask<>(() -> {return null;});
7881
private Node toolbar;
7982

8083
/** Property on the 'model_parent' of the JFX scene that holds this DisplayRuntimeInstance */
@@ -157,10 +160,9 @@ public static DisplayRuntimeInstance ofDisplayModel(final DisplayModel model)
157160
representation.fireContextMenu(model, (int)event.getScreenX(), (int)event.getScreenY());
158161
}
159162
});
160-
161163
layout.addEventFilter(KeyEvent.KEY_PRESSED, this::handleKeys);
162-
163164
dock_item.addClosedNotification(this::onClosed);
165+
representation_init.run();
164166
}
165167

166168
@Override
@@ -186,6 +188,13 @@ DisplayNavigation getNavigation()
186188
return navigation;
187189
}
188190

191+
/* Clients waiting for the representation to be initialized can get() this,
192+
* which will block until the representation is initialized.
193+
*/
194+
public FutureTask<Object> getRepresentation_init() {
195+
return representation_init;
196+
}
197+
189198
private Node createToolbar()
190199
{
191200
zoom_action = new ZoomAction(this);
@@ -499,6 +508,15 @@ public void onClosed()
499508
navigation.dispose();
500509
}
501510

511+
public void addListener(ToolkitListener listener){
512+
this.getRepresentation().removeListener(listener);
513+
this.getRepresentation().addListener(listener);
514+
}
515+
516+
public void removeListener(ToolkitListener listener){
517+
this.getRepresentation().removeListener(listener);
518+
}
519+
502520
@Override
503521
public Optional<Rectangle2D> getPositionAndSizeHint() {
504522
return Optional.ofNullable(active_model).flatMap(displayModel -> {

0 commit comments

Comments
 (0)