From: Jochen L. <lue...@us...> - 2004-07-03 11:27:29
|
Update of /cvsroot/e-p-i-c/org.epic.perleditor/src/org/epic/core/views/browser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24846/src/org/epic/core/views/browser Added Files: eclipse05.bmp WebBrowser.java eclipse12.bmp eclipse02.bmp eclipse09.bmp eclipse03.bmp eclipse06.bmp eclipse10.bmp eclipse04.bmp BrowserView.java eclipse08.bmp eclipse11.bmp eclipse07.bmp browser.properties document.gif eclipse01.bmp Log Message: Initial version --- NEW FILE: eclipse04.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: eclipse10.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: eclipse11.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: document.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: BrowserView.java --- /******************************************************************************* * 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.epic.core.views.browser; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.part.ViewPart; /** * <code>BrowserView</code> is a simple demonstration of the SWT Browser * widget. It consists of a workbench view and tab folder where each tab in the * folder allows the user to interact with a control. * * @see ViewPart */ public class BrowserView extends ViewPart { public final static String ID_BROWSER = "org.epic.core.views.browser.BrowserView"; WebBrowser instance = null; /** * Create the example * * @see ViewPart#createPartControl */ public void createPartControl(Composite frame) { instance = new WebBrowser(frame); } /** * Called when we must grab focus. * * @see org.eclipse.ui.part.ViewPart#setFocus */ public void setFocus() { instance.setFocus(); } /** * Called when the View is to be disposed */ public void dispose() { instance.dispose(); instance = null; super.dispose(); } public void setUrl(String url) { instance.browser.setUrl(url); } public void refresh() { instance.browser.refresh(); } } --- NEW FILE: browser.properties --- ############################################################################### # 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 ############################################################################### error.CouldNotLoadResources = Unable to load resources window.title = EPIC Web Browser Back = Back BrowserNotCreated = Error - The Browser widget could not be instantiated. Please check the Browser widget is supported on this platform. Supported platforms and software requirements for the Browser widget are listed on the SWT FAQ web page. Forward = Forward Stop = Stop Refresh = Refresh Go = Go Startup = --- NEW FILE: eclipse09.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: eclipse03.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: eclipse05.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: WebBrowser.java --- /******************************************************************************* * 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.epic.core.views.browser; import java.text.MessageFormat; import java.util.MissingResourceException; import java.util.ResourceBundle; import org.eclipse.swt.SWT; import org.eclipse.swt.SWTError; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.browser.CloseWindowListener; import org.eclipse.swt.browser.LocationEvent; import org.eclipse.swt.browser.LocationListener; import org.eclipse.swt.browser.OpenWindowListener; import org.eclipse.swt.browser.ProgressEvent; import org.eclipse.swt.browser.ProgressListener; import org.eclipse.swt.browser.StatusTextEvent; import org.eclipse.swt.browser.StatusTextListener; import org.eclipse.swt.browser.TitleEvent; import org.eclipse.swt.browser.TitleListener; import org.eclipse.swt.browser.VisibilityWindowListener; import org.eclipse.swt.browser.WindowEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.ProgressBar; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; public class WebBrowser { static ResourceBundle resourceBundle = ResourceBundle .getBundle("org.epic.core.views.browser.browser"); int index; boolean busy; Image images[]; Text location; Browser browser; static final String[] imageLocations = {"eclipse01.bmp", "eclipse02.bmp", "eclipse03.bmp", "eclipse04.bmp", "eclipse05.bmp", "eclipse06.bmp", "eclipse07.bmp", "eclipse08.bmp", "eclipse09.bmp", "eclipse10.bmp", "eclipse11.bmp", "eclipse12.bmp",}; static final String iconLocation = "document.gif"; /** * Creates an instance of a ControlExample embedded inside the supplied * parent Composite. * * @param parent * the container of the example */ public WebBrowser(Composite parent) { initResources(); final Display display = parent.getDisplay(); FormLayout layout = new FormLayout(); parent.setLayout(layout); ToolBar toolbar = new ToolBar(parent, SWT.NONE); final ToolItem itemBack = new ToolItem(toolbar, SWT.PUSH); itemBack.setText(getResourceString("Back")); final ToolItem itemForward = new ToolItem(toolbar, SWT.PUSH); itemForward.setText(getResourceString("Forward")); final ToolItem itemStop = new ToolItem(toolbar, SWT.PUSH); itemStop.setText(getResourceString("Stop")); final ToolItem itemRefresh = new ToolItem(toolbar, SWT.PUSH); itemRefresh.setText(getResourceString("Refresh")); final ToolItem itemGo = new ToolItem(toolbar, SWT.PUSH); itemGo.setText(getResourceString("Go")); location = new Text(parent, SWT.BORDER); final Canvas canvas = new Canvas(parent, SWT.NO_BACKGROUND); final Rectangle rect = images[0].getBounds(); canvas.addListener(SWT.Paint, new Listener() { public void handleEvent(Event e) { Point pt = canvas.getSize(); e.gc.drawImage(images[index], 0, 0, rect.width, rect.height, 0, 0, pt.x, pt.y); } }); canvas.addListener(SWT.MouseDown, new Listener() { public void handleEvent(Event e) { browser.setUrl(getResourceString("Startup")); } }); display.asyncExec(new Runnable() { public void run() { if (canvas.isDisposed()) return; if (busy) { index++; if (index == images.length) index = 0; canvas.redraw(); } display.timerExec(150, this); } }); final Label status = new Label(parent, SWT.NONE); final ProgressBar progressBar = new ProgressBar(parent, SWT.NONE); FormData data = new FormData(); data.top = new FormAttachment(0, 5); toolbar.setLayoutData(data); data = new FormData(); data.left = new FormAttachment(0, 0); data.right = new FormAttachment(100, 0); data.top = new FormAttachment(canvas, 5, SWT.DEFAULT); data.bottom = new FormAttachment(status, -5, SWT.DEFAULT); try { browser = new Browser(parent, SWT.NONE); browser.setLayoutData(data); } catch (SWTError e) { /* Browser widget could not be instantiated */ Label label = new Label(parent, SWT.CENTER | SWT.WRAP); label.setText(getResourceString("BrowserNotCreated")); label.setLayoutData(data); } data = new FormData(); data.width = 24; data.height = 24; data.top = new FormAttachment(0, 5); data.right = new FormAttachment(100, -5); canvas.setLayoutData(data); data = new FormData(); data.top = new FormAttachment(toolbar, 0, SWT.TOP); data.left = new FormAttachment(toolbar, 5, SWT.RIGHT); data.right = new FormAttachment(canvas, -5, SWT.DEFAULT); location.setLayoutData(data); data = new FormData(); data.left = new FormAttachment(0, 5); data.right = new FormAttachment(progressBar, 0, SWT.DEFAULT); data.bottom = new FormAttachment(100, -5); status.setLayoutData(data); data = new FormData(); data.right = new FormAttachment(100, -5); data.bottom = new FormAttachment(100, -5); progressBar.setLayoutData(data); if (browser != null) { itemBack.setEnabled(browser.isBackEnabled()); itemForward.setEnabled(browser.isForwardEnabled()); Listener listener = new Listener() { public void handleEvent(Event event) { ToolItem item = (ToolItem) event.widget; if (item == itemBack) browser.back(); else if (item == itemForward) browser.forward(); else if (item == itemStop) browser.stop(); else if (item == itemRefresh) browser.refresh(); else if (item == itemGo) browser.setUrl(location.getText()); } }; browser.addLocationListener(new LocationListener() { public void changed(LocationEvent event) { busy = true; if (event.top) location.setText(event.location); } public void changing(LocationEvent event) { } }); browser.addProgressListener(new ProgressListener() { public void changed(ProgressEvent event) { if (event.total == 0) return; int ratio = event.current * 100 / event.total; progressBar.setSelection(ratio); busy = event.current != event.total; if (!busy) { index = 0; canvas.redraw(); } } public void completed(ProgressEvent event) { itemBack.setEnabled(browser.isBackEnabled()); itemForward.setEnabled(browser.isForwardEnabled()); progressBar.setSelection(0); busy = false; index = 0; canvas.redraw(); } }); browser.addStatusTextListener(new StatusTextListener() { public void changed(StatusTextEvent event) { status.setText(event.text); } }); if (parent instanceof Shell) { final Shell shell = (Shell) parent; browser.addTitleListener(new TitleListener() { public void changed(TitleEvent event) { shell.setText(event.title + " - " + getResourceString("window.title")); } }); } itemBack.addListener(SWT.Selection, listener); itemForward.addListener(SWT.Selection, listener); itemStop.addListener(SWT.Selection, listener); itemRefresh.addListener(SWT.Selection, listener); itemGo.addListener(SWT.Selection, listener); location.addListener(SWT.DefaultSelection, new Listener() { public void handleEvent(Event e) { browser.setUrl(location.getText()); } }); initialize(display, browser); browser.setUrl(getResourceString("Startup")); } } /** * Gets a string from the resource bundle. We don't want to crash because of * a missing String. Returns the key if not found. */ static String getResourceString(String key) { try { return resourceBundle.getString(key); } catch (MissingResourceException e) { return key; } catch (NullPointerException e) { return "!" + key + "!"; } } /** * Gets a string from the resource bundle and binds it with the given * arguments. If the key is not found, return the key. */ static String getResourceString(String key, Object[] args) { try { return MessageFormat.format(getResourceString(key), args); } catch (MissingResourceException e) { return key; } catch (NullPointerException e) { return "!" + key + "!"; } } static void initialize(final Display display, Browser browser) { browser.addOpenWindowListener(new OpenWindowListener() { public void open(WindowEvent event) { Shell shell = new Shell(display); shell.setLayout(new FillLayout()); Browser browser = new Browser(shell, SWT.NONE); initialize(display, browser); event.browser = browser; } }); browser.addVisibilityWindowListener(new VisibilityWindowListener() { public void hide(WindowEvent event) { } public void show(WindowEvent event) { Browser browser = (Browser) event.widget; Shell shell = browser.getShell(); if (event.location != null) shell.setLocation(event.location); if (event.size != null) { Point size = event.size; shell.setSize(shell.computeSize(size.x, size.y)); } shell.open(); } }); browser.addCloseWindowListener(new CloseWindowListener() { public void close(WindowEvent event) { Browser browser = (Browser) event.widget; Shell shell = browser.getShell(); shell.close(); } }); } /** * Disposes of all resources associated with a particular instance of the * BrowserExample. */ public void dispose() { freeResources(); } /** * Frees the resources */ void freeResources() { if (images != null) { for (int i = 0; i < images.length; ++i) { final Image image = images[i]; if (image != null) image.dispose(); } images = null; } } /** * Grabs input focus. */ public void setFocus() { location.setFocus(); } /** * Loads the resources */ void initResources() { final Class clazz = this.getClass(); if (resourceBundle != null) { try { if (images == null) { images = new Image[imageLocations.length]; for (int i = 0; i < imageLocations.length; ++i) { ImageData source = new ImageData(clazz .getResourceAsStream(imageLocations[i])); ImageData mask = source.getTransparencyMask(); images[i] = new Image(null, source, mask); } } return; } catch (Throwable t) { } } String error = (resourceBundle != null) ? getResourceString("error.CouldNotLoadResources") : "Unable to load resources"; freeResources(); throw new RuntimeException(error); } public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); shell.setText(getResourceString("window.title")); WebBrowser instance = new WebBrowser(shell); Image icon = new Image(display, WebBrowser.class .getResourceAsStream(iconLocation)); shell.setImage(icon); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } icon.dispose(); instance.dispose(); display.dispose(); } } --- NEW FILE: eclipse12.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: eclipse06.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: eclipse01.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: eclipse02.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: eclipse08.bmp --- (This appears to be a binary file; contents omitted.) --- NEW FILE: eclipse07.bmp --- (This appears to be a binary file; contents omitted.) |