/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.swt.snippets;
/*
* Browser example snippet: provide credentials for a basic authentication challenge
*
* Note that the KNOWN_HOST, KNOWN_USER and KNOWN_PASSWORD fields in the snippet
* below require valid values in order to fully demonstrate the functionality.
*
* For a list of all SWT example snippets see
* http://www.eclipse.org/swt/snippets/
*
* @since 3.5
*/
import java.net.*;
import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.browser.*;
public class Snippet317 {
static String KNOWN_HOST = "www.eclipse.org";
static String KNOWN_USER = "anonymous";
static String KNOWN_PASSWORD = "anonymousPassword";
public static void main(String [] args) {
Display display = new Display();
final Shell shell = new Shell(display);
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
shell.setLayout(gridLayout);
final Text location = new Text(shell, SWT.BORDER);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
location.setLayoutData(data);
Button go = new Button(shell, SWT.PUSH);
go.setText("Go");
final Browser browser;
try {
browser = new Browser(shell, SWT.NONE);
} catch (SWTError e) {
System.out.println("Could not instantiate Browser: " + e.getMessage());
display.dispose();
return;
}
data = new GridData();
data.horizontalAlignment = data.verticalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = data.grabExcessVerticalSpace = true;
data.horizontalSpan = 2;
browser.setLayoutData(data);
browser.setUrl ("eclipse.org");
browser.addLocationListener(new LocationAdapter() {
@Override
public void changed(LocationEvent event) {
location.setText(event.location);
}
});
Listener navigateListener = new Listener() {
@Override
public void handleEvent(Event event) {
browser.setUrl(location.getText());
}
};
go.addListener(SWT.Selection, navigateListener);
location.addListener(SWT.DefaultSelection, navigateListener);
browser.addAuthenticationListener(new AuthenticationListener(){
@Override
public void authenticate(AuthenticationEvent event) {
try {
URL url = new URL(event.location);
if (url.getHost().equals(KNOWN_HOST)) {
event.user = KNOWN_USER;
event.password = KNOWN_PASSWORD;
} else {
/* do nothing, let default prompter run */
}
} catch (MalformedURLException e) {
/* should not happen, let default prompter run */
}
}
});
shell.setBounds(10,10,500,500);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}