All Downloads are FREE. Search and download functionalities are using the official Maven repository.

at.spardat.xma.page.OleWebBrowser Maven / Gradle / Ivy

/*******************************************************************************
 * Copyright (c) 2000, 2003 IBM Corporation and others.
 *  This program and the accompanying materials
 * are made available under the terms of the Common Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package at.spardat.xma.page;


import org.eclipse.swt.ole.win32.*;

/**
 * Wrapper for an OleAutomation object used to send commands
 * to a Win32 "Shell.Explorer" OLE control.
 *
 * Instances of this class manage the setup, typical use and teardown of
 * a simple web browser.
 */
class OleWebBrowser {
	/* See the Windows Platform SDK documentation for more information about the
	 * OLE control used here and its usage.
	 */
	// Generated from typelib filename: shdocvw.dll

	// Constants for WebBrowser CommandStateChange
	public static final int CSC_UPDATECOMMANDS = -1;
	public static final int CSC_NAVIGATEFORWARD = 1;
	public static final int CSC_NAVIGATEBACK = 2;

	// COnstants for Web Browser ReadyState
	public static final int READYSTATE_UNINITIALIZED = 0;
	public static final int READYSTATE_LOADING = 1;
	public static final int READYSTATE_LOADED = 2;
	public static final int READYSTATE_INTERACTIVE = 3;
	public static final int READYSTATE_COMPLETE = 4;

	// Web Browser Control Events
	public static final int BeforeNavigate        = 100; // Fired when a new hyperlink is being navigated to.
	public static final int NavigateComplete      = 101; // Fired when the document being navigated to becomes visible and enters the navigation stack.
	public static final int StatusTextChange      = 102; // Statusbar text changed.
	public static final int ProgressChange        = 108; // Fired when download progress is updated.
	public static final int DownloadComplete      = 104; // Download of page complete.
	public static final int CommandStateChange    = 105; // The enabled state of a command changed
	public static final int DownloadBegin         = 106; // Download of a page started.
	public static final int NewWindow             = 107; // Fired when a new window should be created.
	public static final int TitleChange           = 113; // Document title changed.
	public static final int FrameBeforeNavigate   = 200; // Fired when a new hyperlink is being navigated to in a frame.
	public static final int FrameNavigateComplete = 201; // Fired when a new hyperlink is being navigated to in a frame.
	public static final int FrameNewWindow        = 204; // Fired when a new window should be created.
	public static final int Quit                  = 103; // Fired when application is quiting.
	public static final int WindowMove            = 109; // Fired when window has been moved.
	public static final int WindowResize          = 110; // Fired when window has been sized.
	public static final int WindowActivate        = 111; // Fired when window has been activated.
	public static final int PropertyChange        = 112; // Fired when the PutProperty method has been called.

	// Web Browser properties
	public static final int DISPID_READYSTATE = -525;

	private OleAutomation  oleAutomation;

	/**
	 * Creates a Web browser control.
	 * 

* Typical use:
* * OleControlSite oleControlSite = new OleControlSite(oleFrame, style, "Shell.Explorer");
* OleAutomation oleAutomation = new OleAutomation(oleControlSite);
* OleWebBrowser webBrowser = new OleWebBrowser(oleControlSite, oleAutomation);
*
* * @param oleAutomation the OleAutomation object for this control. * @param oleControlSite the OleControlSite object for this control. */ public OleWebBrowser(OleAutomation oleAutomation) { this.oleAutomation = oleAutomation; } /** * Disposes of the Web browser control. */ public void dispose() { if (oleAutomation != null) oleAutomation.dispose(); oleAutomation = null; } /* * Interact with the Control via OLE Automation * * Note: You can hard code the DISPIDs if you know them beforehand * this is of course the fastest way, but you increase coupling * to the control. */ /** * Returns the current web page title. * * @return the current web page title String */ public String getLocationName() { // dispid=210, type=PROPGET, name="LocationName" int[] rgdispid = oleAutomation.getIDsOfNames(new String[]{"LocationName"}); int dispIdMember = rgdispid[0]; Variant pVarResult = oleAutomation.getProperty(dispIdMember); if (pVarResult == null || pVarResult.getType() != OLE.VT_BSTR) return null; return pVarResult.getString(); } /** * Returns the current URL. * * @return the current URL String */ public String getLocationURL() { // dispid=211, type=PROPGET, name="LocationURL" int[] rgdispid = oleAutomation.getIDsOfNames(new String[]{"LocationURL"}); int dispIdMember = rgdispid[0]; Variant pVarResult = oleAutomation.getProperty(dispIdMember); if (pVarResult == null || pVarResult.getType() != OLE.VT_BSTR) return null; return pVarResult.getString(); } /** * Returns the current state of the control. * * @return the current state of the control, one of: * READYSTATE_UNINITIALIZED; * READYSTATE_LOADING; * READYSTATE_LOADED; * READYSTATE_INTERACTIVE; * READYSTATE_COMPLETE. */ public int getReadyState() { // dispid=4294966771, type=PROPGET, name="ReadyState" int[] rgdispid = oleAutomation.getIDsOfNames(new String[]{"ReadyState"}); int dispIdMember = rgdispid[0]; Variant pVarResult = oleAutomation.getProperty(dispIdMember); if (pVarResult == null || pVarResult.getType() != OLE.VT_I4) return -1; return pVarResult.getInt(); } /** * Navigates backwards through previously visited web sites. */ public void GoBack() { // dispid=100, type=METHOD, name="GoBack" int[] rgdispid = oleAutomation.getIDsOfNames(new String[]{"GoBack"}); int dispIdMember = rgdispid[0]; oleAutomation.invoke(dispIdMember); } /** * Navigates backwards through previously visited web sites. */ public void GoForward() { // dispid=101, type=METHOD, name="GoForward" int[] rgdispid = oleAutomation.getIDsOfNames(new String[]{"GoForward"}); int dispIdMember = rgdispid[0]; oleAutomation.invoke(dispIdMember); } /** * Navigates to home page. */ public void GoHome() { // dispid=102, type=METHOD, name="GoHome" int[] rgdispid = oleAutomation.getIDsOfNames(new String[]{"GoHome"}); int dispIdMember = rgdispid[0]; oleAutomation.invoke(dispIdMember); } /** * Navigates to user-specified Web search gateway. */ public void GoSearch() { // dispid=103, type=METHOD, name="GoSearch" int[] rgdispid = oleAutomation.getIDsOfNames(new String[]{"GoSearch"}); int dispIdMember = rgdispid[0]; oleAutomation.invoke(dispIdMember); } /** * Navigates to a particular URL. */ public void Navigate(String url) { // dispid=104, type=METHOD, name="Navigate" int[] rgdispid = oleAutomation.getIDsOfNames(new String[]{"Navigate", "URL"}); int dispIdMember = rgdispid[0]; Variant[] rgvarg = new Variant[1]; rgvarg[0] = new Variant(url); int[] rgdispidNamedArgs = new int[1]; rgdispidNamedArgs[0] = rgdispid[1]; // identifier of argument oleAutomation.invoke(dispIdMember, rgvarg, rgdispidNamedArgs); } /** * Refreshes the currently viewed page. * * @return the platform-defined result code for the "Refresh" method invocation */ public void Refresh(){ // dispid= 4294966746, type=METHOD, name="Refresh" int[] rgdispid = oleAutomation.getIDsOfNames(new String[]{"Refresh"}); int dispIdMember = rgdispid[0]; oleAutomation.invokeNoReply(dispIdMember); } /** * Aborts loading of the currnet page. * * @return the platform-defined result code for the "Stop" method invocation */ public void Stop() { // dispid=106, type=METHOD, name="Stop" int[] rgdispid = oleAutomation.getIDsOfNames(new String[]{"Stop"}); int dispIdMember = rgdispid[0]; oleAutomation.invoke(dispIdMember); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy