diff options
Diffstat (limited to 'plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/LicenseAcceptanceDialog.java')
-rw-r--r-- | plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/LicenseAcceptanceDialog.java | 345 |
1 files changed, 0 insertions, 345 deletions
diff --git a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/LicenseAcceptanceDialog.java b/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/LicenseAcceptanceDialog.java deleted file mode 100644 index d9bc3c1f9..000000000 --- a/plugins/org.eclipse.wst.internet.cache/src/org/eclipse/wst/internet/cache/internal/LicenseAcceptanceDialog.java +++ /dev/null @@ -1,345 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2006 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.wst.internet.cache.internal; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; -import java.text.MessageFormat; -import java.util.Hashtable; - -import org.eclipse.jface.dialogs.IconAndMessageDialog; -import org.eclipse.jface.wizard.ProgressMonitorPart; -import org.eclipse.swt.SWT; -import org.eclipse.swt.browser.Browser; -import org.eclipse.swt.browser.ProgressEvent; -import org.eclipse.swt.browser.ProgressListener; -import org.eclipse.swt.custom.StackLayout; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; - -/** - * A dialog that prompts the user to accept a license agreement. - */ -public class LicenseAcceptanceDialog extends IconAndMessageDialog -{ - /** - * Holds all the dialogs that are currently displayed keyed by the license URL. - */ - private static Hashtable dialogsInUse = new Hashtable(); - - /** - * The URL of the resource. - */ - private String url; - - /** - * The URL of the license. - */ - private String licenseURL; - - /** - * The agree button for the dialog. - */ - private Button agreeButton = null; - - /** - * Constructor. - * - * @param parent The parent of this dialog. - * @param url The license URL. - */ - protected LicenseAcceptanceDialog(Shell parent, String url, String licenseURL) - { - super(parent); - this.url = url; - this.licenseURL = licenseURL; - } - - /** - * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell) - */ - protected void configureShell(Shell shell) - { - super.configureShell(shell); - shell.setText(CacheMessages._UI_CACHE_DIALOG_TITLE); - shell.setImage(null); - } - - /** - * @see org.eclipse.jface.dialogs.Dialog#createButtonBar(org.eclipse.swt.widgets.Composite) - */ - protected Control createButtonBar(Composite parent) - { - Composite buttonBar = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 0; - layout.makeColumnsEqualWidth = true; - buttonBar.setLayout(layout); - GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER); - buttonBar.setLayoutData(gd); - - // Create the agree button. - agreeButton = createButton(buttonBar, LicenseAcceptanceDialog.OK, - CacheMessages._UI_CACHE_DIALOG_AGREE_BUTTON, false); - agreeButton.setEnabled(false); - - // Create the disagree button. - createButton(buttonBar, LicenseAcceptanceDialog.CANCEL, - CacheMessages._UI_CACHE_DIALOG_DISAGREE_BUTTON, false); - - return buttonBar; - } - - /** - * @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.Composite) - */ - protected Control createContents(Composite parent) - { - Composite composite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - composite.setLayout(layout); - GridData gd = new GridData(SWT.FILL); - gd.widthHint = 500; - composite.setLayoutData(gd); - - // Display a statement about the license. - Label licenseText1 = new Label(composite, SWT.NONE); - licenseText1.setText(CacheMessages._UI_CACHE_DIALOG_LICENSE_STATEMENT1); - Label urlText = new Label(composite, SWT.WRAP); - gd = new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1); - urlText.setLayoutData(gd); - urlText.setText(url); - new Label(composite, SWT.NONE); // Spacing label. - Label licenseText2 = new Label(composite, SWT.WRAP); - gd = new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1); - licenseText2.setLayoutData(gd); - - // Display the license in a browser. - try - { - final Composite licenseTextComposite = new Composite(composite, SWT.NONE); - final StackLayout stackLayout = new StackLayout(); - licenseTextComposite.setLayout(stackLayout); - gd = new GridData(SWT.FILL, SWT.FILL, true, true); - gd.heightHint = 400; - licenseTextComposite.setLayoutData(gd); - // Create the loading progress monitor composite and part. - Composite monitorComposite = new Composite(licenseTextComposite, SWT.NONE); - monitorComposite.setLayout(new GridLayout()); - gd = new GridData(SWT.FILL, SWT.FILL, true, true); - gd.heightHint = 400; - monitorComposite.setLayoutData(gd); - final ProgressMonitorPart monitor = new ProgressMonitorPart(monitorComposite, new GridLayout()); - gd = new GridData(SWT.FILL, SWT.BOTTOM, true, true); - monitor.setLayoutData(gd); - monitor.beginTask(CacheMessages._UI_LOADING_LICENSE, 100); - stackLayout.topControl = monitorComposite; - // Create the browser. - final Browser browser = new Browser(licenseTextComposite, SWT.BORDER); - gd = new GridData(SWT.FILL, SWT.FILL, true, true); - //gd.heightHint = 400; - - // It's important that the license URL is set even if we read - // the contents of the license file ourselves (see below) as - // otherwise the progress monitor will not be called on certain - // linux systems with certain browsers. - browser.setUrl(licenseURL); - - // The browser widget has problems loading files stored in jars - // so we read from the jar and set the browser text ourselves. - // See bug 154721. - if(licenseURL.startsWith("jar:")) - { - InputStream licenseStream = null; - InputStreamReader isreader = null; - BufferedReader breader = null; - try - { - URL browserURL = new URL(licenseURL); - licenseStream = browserURL.openStream(); - isreader = new InputStreamReader(licenseStream); - breader = new BufferedReader(isreader); - String str; - StringBuffer sb = new StringBuffer(); - while((str = breader.readLine())!=null){ - sb.append(str); - } - browser.setText(sb.toString()); - } - finally - { - if(licenseStream != null) - { - licenseStream.close(); - } - if(isreader != null) - { - isreader.close(); - } - if(breader != null) - { - breader.close(); - } - } - } - - browser.setLayoutData(gd); - browser.addProgressListener(new ProgressListener(){ - - /* (non-Javadoc) - * @see org.eclipse.swt.browser.ProgressListener#changed(org.eclipse.swt.browser.ProgressEvent) - */ - public void changed(ProgressEvent event) - { - if (event.total != 0) - { - monitor.internalWorked(event.current * 100 / event.total); - } - } - - /* (non-Javadoc) - * @see org.eclipse.swt.browser.ProgressListener#completed(org.eclipse.swt.browser.ProgressEvent) - */ - public void completed(ProgressEvent event) - { - monitor.done(); - - stackLayout.topControl = browser; - agreeButton.setEnabled(true); - licenseTextComposite.layout(); - } - }); - - licenseText2.setText(CacheMessages._UI_CACHE_DIALOG_LICENSE_STATEMENT2); - } - catch(Exception e) - { - // The browser throws an exception on platforms that do not support it. - // In this case we need to create an external browser. - try - { - CachePlugin.getDefault().getWorkbench().getBrowserSupport().getExternalBrowser().openURL(new URL(licenseURL)); - licenseText2.setText(CacheMessages._UI_CACHE_DIALOG_LICENSE_STATEMENT2_NO_INTERNAL); - } - catch(Exception ex) - { - // In this case the license cannot be display. Inform the user of this and give them the license location. - licenseText2.setText(MessageFormat.format(CacheMessages._UI_CACHE_DIALOG_LICENSE_STATEMENT2_NO_BROWSER, new Object[]{licenseURL})); - } - } - - createButtonBar(composite); - - return composite; - } - - /** - * @see org.eclipse.jface.dialogs.IconAndMessageDialog#getImage() - */ - protected Image getImage() - { - return getInfoImage(); - } - - /** - * Prompt the user to accept the specified license. This method creates the - * dialog and returns the result. - * - * @param parent The parent of this dialog. - * @param url The URL of the resource for which the license must be accepted. - * @param licenseURL The license URL. - * @return True if the license is accepted, false otherwise. - */ - public static boolean promptForLicense(Shell parent, String url, String licenseURL) throws IOException - { - boolean agreedToLicense = false; - boolean newDialog = true; - LicenseAcceptanceDialog dialog = null; - // If the dialog is already displayed for this license use it instead of - // displaying another dialog. - if(dialogsInUse.containsKey(licenseURL)) - { - newDialog = false; - dialog = (LicenseAcceptanceDialog)dialogsInUse.get(licenseURL); - } - else - { - InputStream is = null; - - try - { - URL urlObj = new URL(licenseURL); - is = urlObj.openStream(); - - dialog = new LicenseAcceptanceDialog(parent, url, licenseURL); - dialogsInUse.put(licenseURL, dialog); - dialog.setBlockOnOpen(true); - } - catch(Exception e) - { - throw new IOException("The license cannot be opened."); - } - finally - { - if(is != null) - { - try - { - is.close(); - } - catch(IOException e) - { - // Do nothing. - } - } - } - } - if(dialog != null) - { - dialog.open(); - - if (dialog.getReturnCode() == LicenseAcceptanceDialog.OK) - { - agreedToLicense = true; - } - - if(newDialog) - { - dialogsInUse.remove(licenseURL); - } - } - - return agreedToLicense; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.Dialog#close() - */ - public boolean close() - { - if(agreeButton != null) - { - agreeButton.dispose(); - agreeButton = null; - } - return super.close(); - } - -} |