CwWebView
CwWebView
Description
CwWebView is the common widget that bi-directionally control web page views in VAST applications using Microsoft Edge® and Smalltalk.
Responsibility
CwWebView depends on the platform-specific widget, OSWebViewEdge, and
an image-wide WebView environment <CwWebViewEnvironmentOption>.
The WebView environment is automatically set to a useful state on image startup. No further actions are required unless the user's web view application requires a customized state.
CwWebView receives callbacks from OSWebViewEdge when certain events happen. Data included in the callback structure helps inform what actions can be taken in response to the events. The user can register interest in any of the callbacks:
  • xmNnewWindowRequestedCallback
  • xmNwindowCloseRequestedCallback
  • xmNnavigationCompletedCallback
  • xmNnavigationStartingCallback
  • xmNdomContentLoadedCallback
  • xmNsourceChangedCallback
  • xmNdocumentTitleChangedCallback
The WebViewSupport feature uses a pool dictionary called WebViewConstants to provide pool variables for constant values. For example, pool variables such as XmNnavigationCompletedCallback are used as arguments to CwWebView methods. These pool variable names should be used rather than directly using their constant values. All classes that require these WebViewConstants variable names must include the WebViewConstants pool dictionary in their class definition.
Examples

| shell form webView button rowColumn |

shell := CwTopLevelShell
createApplicationShell: 'shell'
argBlock: [:w | w title: 'Form Example'].

form := shell
createForm: 'form'
argBlock: nil.
form manageChild.

rowColumn := form
createRowColumn: 'buttons'
argBlock: nil.
rowColumn manageChild.
button := rowColumn
createPushButton: 'Top'
argBlock: nil.
button
addCallback: XmNactivateCallback
receiver: self
selector: #button:clientData:callData:
clientData: 'go'.
button manageChild.

webView := CwWebView createWidget: 'WebView'
parent: form argBlock: [:w | w
borderWidth: 1;
width: 400;
height: 200;
leftAttachment: XmATTACHFORM;
leftOffset: 2;
rightAttachment: XmATTACHFORM;
rightOffset: 2;
topAttachment: XmATTACHFORM;
topOffset: 40;
bottomAttachment: XmATTACHFORM;
bottomOffset: 2].
webView manageChild.
shell realizeWidget.
webView inspect.

"Here is the activate callback used in the code:"
button: widget clientData: clientData callData: callData
"A button has been pressed."
Transcript cr; show: 'The ', clientData, ' button has been pressed.'
webView setUrl: 'https://www.instantiations.com'
Last modified date: 02/06/2024