⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 errordialog.java

📁 jfa2ce 源码帮助开发人员更好的理解运用
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************* * Copyright (c) 2000, 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  * 		Sebastian Davids <sdavids@gmx.de> - Fix for bug 19346 - Dialog font should * 			be activated and used by other components. *******************************************************************************/package org.eclipse.jface.dialogs;import org.eclipse.core.runtime.CoreException;import org.eclipse.core.runtime.IStatus;import org.eclipse.jface.resource.JFaceResources;import org.eclipse.swt.SWT;import org.eclipse.swt.dnd.Clipboard;import org.eclipse.swt.dnd.TextTransfer;import org.eclipse.swt.dnd.Transfer;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.events.SelectionListener;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.graphics.Point;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.List;import org.eclipse.swt.widgets.Menu;import org.eclipse.swt.widgets.MenuItem;import org.eclipse.swt.widgets.Shell;/** * A dialog to display one or more errors to the user, as contained in an * <code>IStatus</code> object. If an error contains additional detailed * information then a Details button is automatically supplied, which shows or * hides an error details viewer when pressed by the user. *  * @see org.eclipse.core.runtime.IStatus */public class ErrorDialog extends IconAndMessageDialog {    /**     * Static to prevent opening of error dialogs for automated testing.     */    public static boolean AUTOMATED_MODE = false;    /**     * Reserve room for this many list items.     */    private static final int LIST_ITEM_COUNT = 7;    /**     * The nesting indent.     */    private static final String NESTING_INDENT = "  "; //$NON-NLS-1$    /**     * The Details button.     */    private Button detailsButton;    /**     * The title of the dialog.     */    private String title;    /**     * The SWT list control that displays the error details.     */    private List list;    /**     * Indicates whether the error details viewer is currently created.     */    private boolean listCreated = false;    /**     * Filter mask for determining which status items to display.     */    private int displayMask = 0xFFFF;    /**     * The main status object.     */    private IStatus status;    /**     * The current clipboard. To be disposed when closing the dialog.     */    private Clipboard clipboard;	private boolean shouldIncludeTopLevelErrorInDetails = false;    /**     * Creates an error dialog. Note that the dialog will have no visual     * representation (no widgets) until it is told to open.     * <p>     * Normally one should use <code>openError</code> to create and open one     * of these. This constructor is useful only if the error object being     * displayed contains child items <it>and </it> you need to specify a mask     * which will be used to filter the displaying of these children.     * </p>     *      * @param parentShell     *            the shell under which to create this dialog     * @param dialogTitle     *            the title to use for this dialog, or <code>null</code> to     *            indicate that the default title should be used     * @param message     *            the message to show in this dialog, or <code>null</code> to     *            indicate that the error's message should be shown as the     *            primary message     * @param status     *            the error to show to the user     * @param displayMask     *            the mask to use to filter the displaying of child items, as     *            per <code>IStatus.matches</code>     * @see org.eclipse.core.runtime.IStatus#matches(int)     */    public ErrorDialog(Shell parentShell, String dialogTitle, String message,            IStatus status, int displayMask) {        super(parentShell);        this.title = dialogTitle == null ? JFaceResources                .getString("Problem_Occurred") : //$NON-NLS-1$                dialogTitle;        this.message = message == null ? status.getMessage()                : JFaceResources                        .format(                                "Reason", new Object[] { message, status.getMessage() }); //$NON-NLS-1$        this.status = status;        this.displayMask = displayMask;        setShellStyle(getShellStyle() | SWT.RESIZE);    }    /*     * (non-Javadoc) Method declared on Dialog. Handles the pressing of the Ok     * or Details button in this dialog. If the Ok button was pressed then close     * this dialog. If the Details button was pressed then toggle the displaying     * of the error details area. Note that the Details button will only be     * visible if the error being displayed specifies child details.     */    protected void buttonPressed(int id) {        if (id == IDialogConstants.DETAILS_ID) {            // was the details button pressed?            toggleDetailsArea();        } else {            super.buttonPressed(id);        }    }    /*     * (non-Javadoc) Method declared in Window.     */    protected void configureShell(Shell shell) {        super.configureShell(shell);        shell.setText(title);    }    /*     * (non-Javadoc) Method declared on Dialog.     */    protected void createButtonsForButtonBar(Composite parent) {        // create OK and Details buttons        createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,                true);        createDetailsButton(parent);    }    /**     * Create the details button if it should be included.     * @param parent the parent composite     * @since 3.2     */	protected void createDetailsButton(Composite parent) {		if (shouldShowDetailsButton()) {            detailsButton = createButton(parent, IDialogConstants.DETAILS_ID,                    IDialogConstants.SHOW_DETAILS_LABEL, false);        }	}    /**     * This implementation of the <code>Dialog</code> framework method creates     * and lays out a composite and calls <code>createMessageArea</code> and     * <code>createCustomArea</code> to populate it. Subclasses should     * override <code>createCustomArea</code> to add contents below the     * message.     */    protected Control createDialogArea(Composite parent) {        createMessageArea(parent);        // create a composite with standard margins and spacing        Composite composite = new Composite(parent, SWT.NONE);        GridLayout layout = new GridLayout();        layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);        layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);        layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);        layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);        layout.numColumns = 2;        composite.setLayout(layout);        GridData childData = new GridData(GridData.FILL_BOTH);        childData.horizontalSpan = 2;        composite.setLayoutData(childData);        composite.setFont(parent.getFont());        return composite;    }    /*     * @see IconAndMessageDialog#createDialogAndButtonArea(Composite)     */    protected void createDialogAndButtonArea(Composite parent) {        super.createDialogAndButtonArea(parent);        if (this.dialogArea instanceof Composite) {            //Create a label if there are no children to force a smaller layout            Composite dialogComposite = (Composite) dialogArea;            if (dialogComposite.getChildren().length == 0) {				new Label(dialogComposite, SWT.NULL);			}        }    }    /*     *  (non-Javadoc)     * @see org.eclipse.jface.dialogs.IconAndMessageDialog#getImage()     */    protected Image getImage() {        if (status != null) {            if (status.getSeverity() == IStatus.WARNING) {				return getWarningImage();			}            if (status.getSeverity() == IStatus.INFO) {				return getInfoImage();			}        }        //If it was not a warning or an error then return the error image        return getErrorImage();    }    /**     * Create this dialog's drop-down list component.     *      * @param parent     *            the parent composite     * @return the drop-down list component     */    protected List createDropDownList(Composite parent) {        // create the list        list = new List(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL                | SWT.MULTI);        // fill the list        populateList(list);        GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL                | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL                | GridData.GRAB_VERTICAL);        data.heightHint = list.getItemHeight() * LIST_ITEM_COUNT;        data.horizontalSpan = 2;        list.setLayoutData(data);        list.setFont(parent.getFont());        Menu copyMenu = new Menu(list);        MenuItem copyItem = new MenuItem(copyMenu, SWT.NONE);        copyItem.addSelectionListener(new SelectionListener() {            /*             * @see SelectionListener.widgetSelected (SelectionEvent)             */            public void widgetSelected(SelectionEvent e) {                copyToClipboard();            }            /*             * @see SelectionListener.widgetDefaultSelected(SelectionEvent)             */            public void widgetDefaultSelected(SelectionEvent e) {                copyToClipboard();            }        });        copyItem.setText(JFaceResources.getString("copy")); //$NON-NLS-1$        list.setMenu(copyMenu);        listCreated = true;        return list;    }    /*     * (non-Javadoc) Method declared on Window.     */    /**     * Extends <code>Window.open()</code>. Opens an error dialog to display     * the error. If you specified a mask to filter the displaying of these     * children, the error dialog will only be displayed if there is at least     * one child status matching the mask.     */    public int open() {        if (!AUTOMATED_MODE && shouldDisplay(status, displayMask)) {            return super.open();        }        setReturnCode(OK);        return OK;    }    /**     * Opens an error dialog to display the given error. Use this method if the     * error object being displayed does not contain child items, or if you wish

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -