Skip to content

Commit

Permalink
Merge pull request ControlSystemStudio#3046 from daykin/expose-toolki…
Browse files Browse the repository at this point in the history
…t-listener-control-in-runtime-instance

Expose JFXRepresentation's ToolkitListener in DIsplayRuntimeInstance
  • Loading branch information
kasemir authored Jun 13, 2024
2 parents 4f977be + fa27215 commit fa44289
Showing 1 changed file with 20 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.FutureTask;
import java.util.logging.Level;

import org.csstudio.display.builder.model.DisplayModel;
import org.csstudio.display.builder.model.Preferences;
import org.csstudio.display.builder.model.Widget;
import org.csstudio.display.builder.model.persist.ModelLoader;
import org.csstudio.display.builder.model.util.ModelResourceUtil;
import org.csstudio.display.builder.representation.ToolkitListener;
import org.csstudio.display.builder.representation.javafx.JFXRepresentation;
import org.csstudio.display.builder.runtime.ActionUtil;
import org.csstudio.display.builder.runtime.RuntimeUtil;
Expand Down Expand Up @@ -75,6 +77,7 @@ public class DisplayRuntimeInstance implements AppInstance
private final BorderPane layout = new BorderPane();
private final DockItemWithInput dock_item;
private final DockItemRepresentation representation;
private FutureTask<Void> representation_init = new FutureTask<>(() -> {return null;});
private Node toolbar;

/** Property on the 'model_parent' of the JFX scene that holds this DisplayRuntimeInstance */
Expand Down Expand Up @@ -186,6 +189,13 @@ DisplayNavigation getNavigation()
return navigation;
}

/* Clients waiting for the representation to be initialized can get() this,
* which will block until the representation is initialized.
*/
public FutureTask<Void> getRepresentation_init() {
return representation_init;
}

private Node createToolbar()
{
zoom_action = new ZoomAction(this);
Expand Down Expand Up @@ -311,6 +321,7 @@ public void loadDisplayFile(final DisplayInfo info)
try
{
representation.awaitRepresentation(30, TimeUnit.SECONDS);
representation_init.run();
logger.log(Level.FINE, "Done with representing model of " + info.getPath());
}
catch (TimeoutException | InterruptedException ex)
Expand Down Expand Up @@ -499,6 +510,15 @@ public void onClosed()
navigation.dispose();
}

public void addListener(ToolkitListener listener){
this.getRepresentation().removeListener(listener);
this.getRepresentation().addListener(listener);
}

public void removeListener(ToolkitListener listener){
this.getRepresentation().removeListener(listener);
}

@Override
public Optional<Rectangle2D> getPositionAndSizeHint() {
return Optional.ofNullable(active_model).flatMap(displayModel -> {
Expand Down

0 comments on commit fa44289

Please sign in to comment.