blob: 26b70247013f5a55f3f27e5e2a483db9ae200d69 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. 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 org.eclipse.welcome.internal.webbrowser;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.swt.ole.win32.*;
import org.eclipse.swt.widgets.Composite;
/**
* Needed for the OLE implementation
*/
public class BrowserControlSite extends OleControlSite {
protected boolean beenBuilt = false;
protected boolean startedDownload = false;
// Web Browser
private WebBrowser browser;
private String presentationURL;
private IStatusLineManager statusLineManager;
private int workSoFar = 0;
private int prevMax = 0;
public void setStatusLineManager(IStatusLineManager manager) {
this.statusLineManager = manager;
}
void setBrowser(WebBrowser browser) {
this.browser = browser;
}
public String getPresentationURL() {
return presentationURL;
}
/**
* BrowserControlSite constructor
*/
public BrowserControlSite(Composite parent, int style, String progId) {
super(parent, style, progId);
addEventListener(WebBrowser.DownloadBegin, new OleListener() {
public void handleEvent(OleEvent event) {
startedDownload = true;
//webProgress.setSelection(0);
prevMax = -1;
}
});
addEventListener(WebBrowser.DownloadComplete, new OleListener() {
public void handleEvent(OleEvent event) {
startedDownload = false;
//webProgress.setSelection(0);
if (statusLineManager != null)
statusLineManager.getProgressMonitor().done();
presentationURL = browser.getLocationURL();
}
});
addEventListener(WebBrowser.BeforeNavigate2, new OleListener() {
public void handleEvent(OleEvent event) {
//Variant urlVar = event.arguments[1];
//String strUrl = urlVar.getString();
}
});
// Respond to ProgressChange events by updating the Progress bar
addEventListener(WebBrowser.ProgressChange, new OleListener() {
public void handleEvent(OleEvent event) {
if (!startedDownload) {
return;
}
Variant progress = event.arguments[0];
Variant maxProgress = event.arguments[1];
if (progress == null || maxProgress == null || progress.getInt() == -1) {
return;
}
/*
if (maxProgress.getInt()!=100)
webProgress.setMaximum(maxProgress.getInt());
*/
if (prevMax != maxProgress.getInt()) {
statusLineManager.getProgressMonitor().beginTask("", maxProgress.getInt());
prevMax = maxProgress.getInt();
}
//webProgress.setSelection(progress.getInt());
int newValue = progress.getInt();
int worked = newValue - workSoFar;
workSoFar = newValue;
if (statusLineManager != null)
statusLineManager.getProgressMonitor().worked(worked);
}
});
addEventListener(WebBrowser.StatusTextChange, new OleListener() {
public void handleEvent(OleEvent event) {
Variant newText = event.arguments[0];
String msg = newText.getString();
if (msg != null) {
if (statusLineManager != null)
statusLineManager.setMessage(msg);
} else {
if (statusLineManager != null)
statusLineManager.setMessage("");
}
}
});
}
}