licensedialog.java

来自「world wind java sdk 源码」· Java 代码 · 共 204 行

JAVA
204
字号
/*
Copyright (C) 2001, 2007 United States Government
as represented by the Administrator of the
National Aeronautics and Space Administration.
All Rights Reserved.
*/

package gov.nasa.worldwind.applications.sar;

import gov.nasa.worldwind.util.Logging;

import javax.swing.*;
import java.net.URL;
import java.net.URI;
import java.io.*;
import java.awt.*;

/**
 * @author dcollins
 * @version $Id: LicenseDialog.java 5744 2008-07-31 17:55:07Z dcollins $
 */
public class LicenseDialog
{
    private final Object license;
    private String contentType;
    private Dimension preferredSize;
    private String title;

    public static final int ACCEPT_OPTION = 1;
    public static final int DECLINE_OPTION = 2;
    public static final int ERROR_OPTION = 3;

    public LicenseDialog(Object license)
    {
        if (license == null)
        {
            String message = "nullValue.licenseIsNull";
            Logging.logger().severe(message);
            throw new IllegalArgumentException(message);
        }

        this.license = license;
    }

    public final Object getLicense()
    {
        return this.license;
    }

    public String getContentType()
    {
        return this.contentType;
    }

    public void setContentType(String contentType)
    {
        this.contentType = contentType;
    }

    public Dimension getPreferredSize()
    {
        return this.preferredSize;
    }

    public void setPreferredSize(Dimension preferredSize)
    {
        this.preferredSize = preferredSize;
    }

    public String getTitle()
    {
        return this.title;
    }

    public void setTitle(String title)
    {
        this.title = title;
    }

    public int showDialog(Component parentComponent)
    {
        int result;
        Object licenseComponent = makeLicenseComponent();
        if (licenseComponent != null)
        {
            result = showLicenseDialog(parentComponent, licenseComponent, this.title);
        }
        else
        {
            String message = missingLicenseMessage();
            showMissingLicenseDialog(parentComponent, message, null);
            result = ERROR_OPTION;
        }
        return result;
    }

    private static int showLicenseDialog(Component parentComponent, Object licenseComponent, String title)
    {
        int result;
        try
        {
            if (licenseComponent instanceof Component)
                licenseComponent = new JScrollPane((Component) licenseComponent);
            
            result = JOptionPane.showOptionDialog(
                parentComponent, // parentComponent
                licenseComponent, // message
                title, // title
                JOptionPane.YES_NO_OPTION, // optionType
                JOptionPane.PLAIN_MESSAGE, // messageType
                null, // icon
                new Object[] {"Accept", "Decline"}, // options
                "Accept" //initialValue
                );
        }
        catch (Exception e)
        {
            String message = "Exception while displaying license dialog";
            Logging.logger().log(java.util.logging.Level.SEVERE, message, e);
            return ERROR_OPTION;
        }
        return (result == JOptionPane.YES_OPTION) ? ACCEPT_OPTION : DECLINE_OPTION;
    }

    private static void showMissingLicenseDialog(Component parentComponent, String message, String title)
    {
        try
        {
            JOptionPane.showOptionDialog(
                parentComponent, // parentComponent
                message, // message
                title, // title
                JOptionPane.OK_OPTION, // optionType
                JOptionPane.ERROR_MESSAGE, // messageType
                null, // icon
                new Object[] {"OK"}, // options
                "OK" //initialValue
                );
        }
        catch (Exception e)
        {
            String msg = "Exception while displaying missing license dialog";
            Logging.logger().log(java.util.logging.Level.SEVERE, msg, e);
        }
    }

    private String missingLicenseMessage()
    {
        return "License Agreement is missing.";
    }

    private Object makeLicenseComponent()
    {
        JEditorPane editor = null;
        try
        {
            if (this.license != null)
            {
                if (this.license instanceof URL)
                {
                    Logging.logger().fine("Fetching license (URL): " + this.license);
                    editor = new JEditorPane();
                    if (this.contentType != null)
                        editor.setContentType(this.contentType);
                    editor.setPage((URL) this.license);
                }
                else if (this.license instanceof File)
                {
                    Logging.logger().fine("Fetching license (File): " + this.license);
                    URI uri = ((File) this.license).toURI();
                    URL url = uri.toURL();
                    editor = new JEditorPane();
                    if (this.contentType != null)
                        editor.setContentType(this.contentType);
                    editor.setPage(url);
                }
                else
                {
                    Logging.logger().fine("Fetching license (String): " + this.license.toString());
                    URL url = getClass().getResource(this.license.toString());
                    editor = new JEditorPane();
                    if (this.contentType != null)
                        editor.setContentType(this.contentType);
                    editor.setPage(url);
                }
            }

            if (editor != null)
            {
                editor.setEditable(false);
                if (this.preferredSize != null)
                    editor.setPreferredSize(this.preferredSize);
            }
        }
        catch (Exception e)
        {
            String message = "Exception while fetching license content";
            Logging.logger().log(java.util.logging.Level.SEVERE, message, e);
            editor = null;
        }
        return editor;
    }
}

⌨️ 快捷键说明

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