All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.enterprise.tools.verifier.gui.MainPanel Maven / Gradle / Ivy

There is a newer version: 3.2-b06
Show newest version
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */

package com.sun.enterprise.tools.verifier.gui;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.logging.LogRecord;

import com.sun.enterprise.tools.verifier.ResultManager;
import com.sun.enterprise.tools.verifier.StringManagerHelper;
import com.sun.enterprise.tools.verifier.Verifier;
import com.sun.enterprise.tools.verifier.VerifierFrameworkContext;

public class MainPanel extends JPanel implements Runnable {

    static com.sun.enterprise.util.LocalStringManagerImpl smh =
            StringManagerHelper.getLocalStringsManager();
    ResultsPanel resultsPanel = new ResultsPanel();
    ControlPanel verifierControls;

    JLabel statusLabel = new JLabel((smh.getLocalString
            ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
            ".Status_Idle", // NOI18N
                    "Idle"))); // NOI18N
    Verifier verifier;
    Enumeration components;
    Thread running = null;

    /**
     * This is the top-level panel of the Verifier GUI
     */
    public MainPanel(JFrame parent) {
        this(parent, null, null);
    }

    public MainPanel(JFrame parent, String jarFileName, Verifier verifier) {
        super(new BorderLayout(), true);

        // 508 compliance
        this.getAccessibleContext().setAccessibleName(smh.getLocalString
                ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                ".panelName", // NOI18N
                        "Panel")); // NOI18N
        this.getAccessibleContext().setAccessibleDescription(smh.getLocalString
                ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                ".PanelDesc", // NOI18N
                        "This is a panel")); // NOI18N
        statusLabel.getAccessibleContext().setAccessibleName(smh.getLocalString
                ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                ".labelName", // NOI18N
                        "Label")); // NOI18N
        statusLabel.getAccessibleContext().setAccessibleDescription
                (smh.getLocalString("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                ".labelDesc", // NOI18N
                        "This is a label")); // NOI18N

        //verifier.setFrame(parent);
        verifierControls = new ControlPanel(parent);
        // set the initial jar in file list
        setJarFilename(jarFileName);
        this.verifier = verifier;

        add("North", verifierControls); // NOI18N
        add("Center", resultsPanel); // NOI18N
        add("South", statusLabel); // NOI18N


        verifierControls.okButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (getFileList().hasMoreElements()) {
                    resultsPanel.clearOldResults();
                    start();
                } else {
                    JOptionPane.showMessageDialog(verifierControls, (smh.getLocalString
                            ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                            ".optionPane.okButtonNoFiles", // NOI18N
                                    "You must first select file to verify.")) + // NOI18N
                            "\n" + // NOI18N
                            (smh.getLocalString
                            ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                            ".optionPane.okButtonNoFiles2", // NOI18N
                                    "Use the Add button to select file to be verified," + // NOI18N
                            " then click on OK button."))); // NOI18N
                }
            }
        });

        verifierControls.closeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (MainFrame.getExitOnClose()) {
                    System.exit(0);
                } else {
                    stop();
                    enableOK();
                    enableClose();
                    reset();
                    try {
                        Class cls = Class.forName("javax.swing.JFrame"); // NOI18N
                        JFrame frame = (JFrame) SwingUtilities.getAncestorOfClass(cls, resultsPanel);
                        frame.setVisible(false);

                        //frame.dispose();
                    } catch (ClassNotFoundException ex) {
                        // ??can this happen
                        ex.getMessage();
                    }
                }
            }
        });
    }

    /**
     * Retrieve the verifierControls panel of the Verifier GUI
     */
    public ControlPanel getVerifierControlPanel() {
        return verifierControls;
    }

    public void setJarFilename(String jarFileName) {
        // set the initial jar in file list
        if (jarFileName != null) {
            File jarFile = new File(jarFileName);
            if (jarFile.exists()) {
                getVerifierControlPanel().addJarFile(jarFile);
            }
        }
    }

    private Verifier getVerifier() {
        return verifier;
    }

    public void reset() {
        resultsPanel.clearOldResults();
        resultsPanel.clearResults();
        verifierControls.removeAllJarFiles();
    }

    public void setStatus(String stat) {
        statusLabel.setText(stat);
    }

    public Enumeration getFileList() {
        return verifierControls.listModel.elements();
    }

    public void clearResults() {
        resultsPanel.clearResults();
    }

    void disableOK() {
        verifierControls.okButton.setEnabled(false);
    }

    void enableOK() {
        verifierControls.okButton.setEnabled(true);
    }

    void disableClose() {
        verifierControls.closeButton.setEnabled(false);
    }

    void enableClose() {
        verifierControls.closeButton.setEnabled(true);
    }

    public void start() {

        if (running == null) {
            components = getFileList();
            clearResults();
            running = new Thread(this);
            running.setPriority(Thread.MIN_PRIORITY);
            running.start();
        }
    }

    public void stop() {
        if (running != null) {
            running = null;
            setStatus((smh.getLocalString
                    ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                    ".Status_Closed", // NOI18N
                            "Closed"))); // NOI18N
        }
    }

    public void run() {
        try {
            disableOK();

            while (components.hasMoreElements() && running != null) {
                File jarFile = ((File) components.nextElement());
                String jarName = ((jarFile).getPath());
                try {
                    setStatus((smh.getLocalString
                            ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                            ".Status_Verifying", // NOI18N
                                    "Verifying archive {0}...", // NOI18N
                                    new Object[]{jarName})));
                    VerifierFrameworkContext vfc = new VerifierFrameworkContext();
                    vfc.setJarFileName(jarFile.getAbsolutePath());
                    getVerifier().init(vfc);
                    getVerifier().verify();
                    Iterator itr = vfc.getResultManager().getError().iterator();
                    while (itr.hasNext()) {
                        LogRecord log = (LogRecord) itr.next();
                        log.setLoggerName(jarFile.getName());
                        resultsPanel.addError(log);
                    }
                    setStatus((smh.getLocalString
                            ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                            ".Status_WritingReport", // NOI18N
                                    "Writing report..."))); // NOI18N
                    verifier.generateReports();

                    if (vfc.getResultManager().getFailedCount() +
                            vfc.getResultManager().getErrorCount() ==
                            0) { // this code might not be called
                        resultsPanel.addDetailText((smh.getLocalString
                                ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                                ".AllTestsPassed", // NOI18N
                                        "{0}: All tests passed.", // NOI18N
                                        new Object[]{jarFile.getName()})) +
                                "\n"); // NOI18N
                    } else {
                        resultsPanel.addDetailText((smh.getLocalString
                                ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                                ".SomeTestsFailed", // NOI18N
                                        "{0}: Some tests failed.", // NOI18N
                                        new Object[]{jarFile.getName()})) +
                                "\n"); // NOI18N
                    }

                } catch (Throwable t) {
                    JOptionPane.showMessageDialog(this,
                            (smh.getLocalString
                            ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                            ".ErrorLoading", // NOI18N
                                    "Error verifying {0}: {1}", // NOI18N
                                    new Object[]{jarName, t.getMessage()})));
                    resultsPanel.addDetailText((smh.getLocalString
                            ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                            ".ErrorLoading", // NOI18N
                                    "Error verifying {0}: {1}", // NOI18N
                                    new Object[]{jarName, t.getMessage()})) +
                            "\n"); // NOI18N
                }
            }

            setStatus((smh.getLocalString
                    ("com.sun.enterprise.tools.verifier.gui.MainPanel" + // NOI18N
                    ".Status_Idle", // NOI18N
                            "Idle"))); // NOI18N
            enableOK();
            enableClose();
        } finally {
            running = null;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy