Class DesignerPageBean
- All Implemented Interfaces:
 Serializable
- Since:
 - 7.0.0
 - Author:
 - XIMA MEDIA GmbH
 - See Also:
 
- 
Constructor Summary
Constructors - 
Method Summary
Modifier and TypeMethodDescriptionvoidhandleGenericFileUpload(org.primefaces.event.FileUploadEvent event) Handles an uploaded file and posts and forwards to thevoidRemote command invoked when the name of the project was updated.voidCalled on page load when a child iframe designer page is loaded.voidCalled on page load when the designer parent page is loaded.booleanbooleanbooleanvoidpost(ISessionConversationEvent event) Posts the given designer conversation event and informs all event handlers that have subscribed to that event.voidregisterEventHandler(ISessionConversationEventHandler eventHandler) Registers the given conversation event handler for the active designer conversation.<T extends Serializable,R extends ICrossViewScopeRequest<T>> 
voidregisterRequestHandler(Class<R> requestType, ICrossViewScopeRequestHandler<T, R> requestHandler) Registers the given conversation request handler for the active designer conversation.<T extends Serializable,R extends ICrossViewScopeRequest<T>> 
voidAllows to invoke the handler within the scope where it was registered.<T extends Serializable,R extends ICrossViewScopeRequest<T>> 
booleanrequest(R request, Duration timeout, ICrossViewScopeResponseConsumer<? super T> handler) Allows to (a) invoke the handler within the scope where it was registered, and (b) to retrieve a piece of data from another view scope that participates in the same conversation.<R> RThe designer conversation model is shared between different views and may thus be accessed in simultaneously by different threads handling different requests. 
- 
Constructor Details
- 
DesignerPageBean
public DesignerPageBean() 
 - 
 - 
Method Details
- 
getContentView
- Returns:
 - The content view of the currently opened designer tab.
 
 - 
getConversationId
- Returns:
 - The ID of the current designer 
Conversation. 
 - 
getFormTitle
- Returns:
 - The current form title. Either from the persisted project, or when the form designer is open, the title as it has been entered in the form designer.
 
 - 
handleProjectUpdate
public void handleProjectUpdate()Remote command invoked when the name of the project was updated. Updates the project name in the bottom bar of the designer. - 
handleGenericFileUpload
public void handleGenericFileUpload(org.primefaces.event.FileUploadEvent event) Handles an uploaded file and posts and forwards to the- Parameters:
 event- Event with the uploaded data.
 - 
initChild
public void initChild()Called on page load when a child iframe designer page is loaded. Initializes the designer conversation. - 
initParent
public void initParent()Called on page load when the designer parent page is loaded. Initializes the designer conversation. - 
isChildPage
public boolean isChildPage()- Returns:
 - Whether the current view scope is a designer child page (iframe) contained in the parent page.
 
 - 
isConversationActive
public boolean isConversationActive()- Returns:
 - Whether the designer conversation is currently active. Normally it should be ended only when the parent view ends.
 
 - 
isParentPage
public boolean isParentPage()- Returns:
 - Whether the current view scope is the designer parent frame that contains the individual iframes.
 
 - 
post
Posts the given designer conversation event and informs all event handlers that have subscribed to that event. When no designer conversation is active, this is a no-op.- Parameters:
 event- Event to post.
 - 
registerEventHandler
Registers the given conversation event handler for the active designer conversation. When no designer conversation is active, this is a no-op.- Parameters:
 eventHandler- Designer conversation event handler to register. All subscriber methods of the event handler will be noticed when the corresponding designer conversation event occurs.
 - 
registerRequestHandler
public <T extends Serializable,R extends ICrossViewScopeRequest<T>> void registerRequestHandler(Class<R> requestType, ICrossViewScopeRequestHandler<T, R> requestHandler) Registers the given conversation request handler for the active designer conversation. When no designer conversation is active, this is a no-op.- Type Parameters:
 T- Type of the requested data.R- Type of the request.- Parameters:
 requestType- Request type to listen to.requestHandler- Designer conversation request handler to register. The handler is called when arequestis made.
 - 
request
public <T extends Serializable,R extends ICrossViewScopeRequest<T>> boolean request(R request, Duration timeout, ICrossViewScopeResponseConsumer<? super T> handler) Allows to (a) invoke the handler within the scope where it was registered, and (b) to retrieve a piece of data from another view scope that participates in the same conversation.Assume there are two view scopes A and B. A method running in the scope of A wishes to obtain some data form B. It needs to send a message (such as via an event bus) to B. However, when the message handler of B is invoked synchronously, it will still be within the scope of A and will not have access to the state of B.
To solve this, A can first store the request data within the shared conversation state. A can send a push message via a web socket to the client (web browser) of B, which can then initiate an AJAX call to the view scope of B. Now B can access the request data from the shared conversation state, create the requested data and store the requested data in the conversation state. Afterwards, B sends a push message to the client (browser) of A, which initiates another AJAX call to the view scope of A. Finally, A can access the response from the conversation state and proceed to process that response.
- Type Parameters:
 T- Type of the requested data.R- Type of the request.- Parameters:
 request- Request to send.handler- Handler to invoke when the request completes either successfully or erroneously.timeout- Timeout to set on the request. When no response is received within this time frame, the handler is invoked with an error.- Returns:
 trueif there are any pending responses,falseif all requests have been processed, such as when no handlers did respond to the request.
 - 
requestBuilder
- Returns:
 - A new builder for sending multiple 
requestsand performing some logic when all have finished. 
 - 
request
public <T extends Serializable,R extends ICrossViewScopeRequest<T>> void request(R request, Duration timeout) Allows to invoke the handler within the scope where it was registered.Assume there are two view scope A and B. A method running in the scope of A wishes to obtain some data form B. It needs to send a message (such as via an event bus) to B. However, when the message handler of B is invoked synchronously, it will still be within the scope of A and will not have access to the state of B.
To solve this, A can first store the request data within the shared conversation state. A can send a push message via a web socket to the client (web browser) of B, which can then initiate an AJAX call to the view scope of B. Now B can access the request data from the shared conversation state, create the requested data and store the requested data in the conversation state. Afterwards, B sends a push message to the client (browser) of A, which initiates another AJAX call to the view scope of A. Finally, A can access the response from the conversation state and proceed to process that response.
- Type Parameters:
 T- Type of the requested data.R- Type of the request.- Parameters:
 request- Request to send.timeout- Timeout to set on the request. When no response is received within this time frame, the handler is invoked with an error.
 - 
withDesignerConversationModel
The designer conversation model is shared between different views and may thus be accessed in simultaneously by different threads handling different requests. This method acquires a lock to ensure only one thread processes a conversation model at a given time. The lock is held for as long as the given handlerfnis invoked. Make sure you do not use the model outside the handlerfn.- Parameters:
 fn- It is given the model for the designer session. This is used to share data between the different views in each iframe. This model is scoped to the designerConversation.- Returns:
 - The value return by the given handler 
fn 
 
 -