Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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