# HG changeset patch # User John Reimer # Date 1225642368 28800 # Node ID 219f3c1087d1e3557ed716cc4e2282359f7e398c # Parent 548a657378b8a3221207e260fc95570e7607ff22 Second browser test -- loads eclipse.org url diff -r 548a657378b8 -r 219f3c1087d1 snippets/browser/Snippet128.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/snippets/browser/Snippet128.d Sun Nov 02 08:12:48 2008 -0800 @@ -0,0 +1,172 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 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 + * Ported to the D Programming Language: + * by John Reimer + *******************************************************************************/ +module Snippet128; + +/* + * Browser example snippet: bring up a browser + * + * For a list of all DWT example snippets see + * http://www.eclipse.org/swt/snippets/ + * + * @since 3.0 + */ + +version(linux) +{ + version(build) + { + pragma(link,"stdc++"); + pragma(link,"xpcomglue"); + } +} + +import tango.io.Console; +import dwt.dwthelper.utils; + +import dwt.DWT; +import dwt.DWTError; +import dwt.DWTException; + +import dwt.browser.Browser; +import dwt.browser.ProgressEvent; +import dwt.browser.ProgressListener; +import dwt.browser.StatusTextEvent; +import dwt.browser.StatusTextListener; +import dwt.browser.LocationEvent; +import dwt.browser.LocationListener; + +import dwt.layout.GridLayout; +import dwt.layout.GridData; + +import dwt.widgets.Shell; +import dwt.widgets.Display; +import dwt.widgets.ToolBar; +import dwt.widgets.ToolItem; +import dwt.widgets.Label; +import dwt.widgets.Text; +import dwt.widgets.ProgressBar; +import dwt.widgets.Listener; +import dwt.widgets.Event; + +public static void main(String [] args) { + Display display = new Display(); + final Shell shell = new Shell(display); + GridLayout gridLayout = new GridLayout(); + gridLayout.numColumns = 3; + shell.setLayout(gridLayout); + ToolBar toolbar = new ToolBar(shell, DWT.NONE); + ToolItem itemBack = new ToolItem(toolbar, DWT.PUSH); + itemBack.setText("Back"); + ToolItem itemForward = new ToolItem(toolbar, DWT.PUSH); + itemForward.setText("Forward"); + ToolItem itemStop = new ToolItem(toolbar, DWT.PUSH); + itemStop.setText("Stop"); + ToolItem itemRefresh = new ToolItem(toolbar, DWT.PUSH); + itemRefresh.setText("Refresh"); + ToolItem itemGo = new ToolItem(toolbar, DWT.PUSH); + itemGo.setText("Go"); + + GridData data = new GridData(); + data.horizontalSpan = 3; + toolbar.setLayoutData(data); + + Label labelAddress = new Label(shell, DWT.NONE); + labelAddress.setText("Address"); + + final Text location = new Text(shell, DWT.BORDER); + data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.horizontalSpan = 2; + data.grabExcessHorizontalSpace = true; + location.setLayoutData(data); + + Browser browser; + try { + browser = new Browser(shell, DWT.NONE); + } catch (DWTError e) { + Cout ("Could not instantiate Browser: " ~ e.getMessage()); + return; + } + data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.verticalAlignment = GridData.FILL; + data.horizontalSpan = 3; + data.grabExcessHorizontalSpace = true; + data.grabExcessVerticalSpace = true; + browser.setLayoutData(data); + + Label status = new Label(shell, DWT.NONE); + data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = 2; + status.setLayoutData(data); + + ProgressBar progressBar = new ProgressBar(shell, DWT.NONE); + data = new GridData(); + data.horizontalAlignment = GridData.END; + progressBar.setLayoutData(data); + + /* event handling */ + Listener listener = new class() Listener { + public void handleEvent(Event event) { + ToolItem item = cast(ToolItem)event.widget; + String string = item.getText(); + if (string.equals("Back")) browser.back(); + else if (string.equals("Forward")) browser.forward(); + else if (string.equals("Stop")) browser.stop(); + else if (string.equals("Refresh")) browser.refresh(); + else if (string.equals("Go")) browser.setUrl(location.getText()); + } + }; + browser.addProgressListener(new class() ProgressListener { + public void changed(ProgressEvent event) { + if (event.total == 0) return; + int ratio = event.current * 100 / event.total; + progressBar.setSelection(ratio); + } + public void completed(ProgressEvent event) { + progressBar.setSelection(0); + } + }); + browser.addStatusTextListener(new class() StatusTextListener { + public void changed(StatusTextEvent event) { + status.setText(event.text); + } + }); + browser.addLocationListener(new class() LocationListener { + public void changed(LocationEvent event) { + if (event.top) location.setText(event.location); + } + public void changing(LocationEvent event) { + } + }); + itemBack.addListener(DWT.Selection, listener); + itemForward.addListener(DWT.Selection, listener); + itemStop.addListener(DWT.Selection, listener); + itemRefresh.addListener(DWT.Selection, listener); + itemGo.addListener(DWT.Selection, listener); + location.addListener(DWT.DefaultSelection, new class() Listener { + public void handleEvent(Event e) { + browser.setUrl(location.getText()); + } + }); + + shell.open(); + browser.setUrl("http://eclipse.org"); + + while (!shell.isDisposed()) { + if (!display.readAndDispatch()) + display.sleep(); + } + display.dispose(); +} +