/* * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.sun.tools.visualvm.modules.startup; import com.sun.tools.visualvm.modules.startup.dialogs.StartupDialog; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URL; import java.util.ResourceBundle; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; import org.openide.util.NbBundle; import org.openide.util.UserCancelException; /** * Displays LicensePanel to user. User must accept license to continue. * if user does not accept license UserCancelException is thrown. * * @author Marek Slama * @author Jiri Sedlacek */ public final class AcceptLicense { private static final String YES_AC = "yes"; // NOI18N private static final String NO_AC = "no" ; // NOI18N private static JDialog d; private static String command; /** * If License was not accepted during installation user must accept it here. */ public static void showLicensePanel() throws Exception { Utils.setSystemLaF(); // Make sure the code following this call runs on JDK 6 if (!VisualVMStartup.checkEnv()) throw new org.openide.util.UserCancelException(); URL url = AcceptLicense.class.getResource("LICENSE.txt"); // NOI18N LicensePanel licensePanel = new LicensePanel(url); ResourceBundle bundle = NbBundle.getBundle(AcceptLicense.class); String yesLabel = bundle.getString("MSG_LicenseYesButton"); // NOI18N String noLabel = bundle.getString("MSG_LicenseNoButton"); // NOI18N JButton yesButton = new JButton(); JButton noButton = new JButton(); Utils.setLocalizedText(yesButton, yesLabel); Utils.setLocalizedText(noButton, noLabel); ActionListener listener = new ActionListener () { public void actionPerformed(ActionEvent e) { command = e.getActionCommand(); d.setVisible(false); d.dispose(); d = null; } }; yesButton.addActionListener(listener); noButton.addActionListener(listener); yesButton.setActionCommand(YES_AC); noButton.setActionCommand(NO_AC); yesButton.getAccessibleContext().setAccessibleName(bundle.getString("ACSN_AcceptButton")); // NOI18N yesButton.getAccessibleContext().setAccessibleName(bundle.getString("ACSD_AcceptButton")); // NOI18N noButton.getAccessibleContext().setAccessibleName(bundle.getString("ACSN_RejectButton")); // NOI18N noButton.getAccessibleContext().setAccessibleName(bundle.getString("ACSD_RejectButton")); // NOI18N Dimension yesPF = yesButton.getPreferredSize(); Dimension noPF = noButton.getPreferredSize(); int maxWidth = Math.max(yesPF.width, noPF.width); int maxHeight = Math.max(yesPF.height, noPF.height); yesButton.setPreferredSize(new Dimension(maxWidth, maxHeight)); noButton.setPreferredSize(new Dimension(maxWidth, maxHeight)); d = StartupDialog.create(bundle.getString("MSG_LicenseDlgTitle"), null, -1); // NOI18N d.getAccessibleContext().setAccessibleName(bundle.getString("ACSN_LicenseDlg")); // NOI18N d.getAccessibleContext().setAccessibleDescription(bundle.getString("ACSD_LicenseDlg")); // NOI18N d.getContentPane().add(licensePanel, BorderLayout.CENTER); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); buttonPanel.setBorder(BorderFactory.createEmptyBorder(17, 12, 11, 11)); buttonPanel.add(yesButton); buttonPanel.add(noButton); d.getContentPane().add(buttonPanel, BorderLayout.SOUTH); d.setSize(new Dimension(600, 600)); d.setResizable(true); d.setLocationRelativeTo(null); d.setVisible(true); if (!YES_AC.equals(command)) throw new UserCancelException(); } }