alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 *                 Sun Public License Notice
 *
 * The contents of this file are subject to the Sun Public License
 * Version 1.0 (the "License"). You may not use this file except in
 * compliance with the License. A copy of the License is available at
 * http://www.sun.com/
 *
 * The Original Code is NetBeans. The Initial Developer of the Original
 * Code is Sun Microsystems, Inc. Portions Copyright 1997-2004 Sun
 * Microsystems, Inc. All Rights Reserved.
 */

package org.netbeans.modules.autoupdate;

import java.awt.KeyboardFocusManager;
import java.awt.Window;
import java.util.*;
import java.text.MessageFormat;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
import java.awt.Component;
import java.awt.Font;
import java.io.File;
import java.io.FileNotFoundException;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;

import org.openide.DialogDisplayer;
import org.openide.ErrorManager;
import org.openide.util.NbBundle;
import org.openide.NotifyDescriptor;
import org.openide.windows.WindowManager;

class ResultsPanel extends javax.swing.JPanel {

    private static final String SPACE = " "; //NOI18N

    private static final String BAD_DOWNLOAD = SPACE + getBundle("CTL_BAD_DOWNLOAD") + SPACE;
    private static final String CORRUPTED = SPACE + getBundle("CTL_CORRUPTED") + SPACE;
    private static final String NOT_SIGNED = SPACE + getBundle("CTL_NOT_SIGNED") + SPACE;
    private static final String SIGNED = SPACE + getBundle("CTL_SIGNED") + SPACE;
    private static final String TRUSTED = SPACE + getBundle("CTL_TRUSTED") + SPACE;

    private Wizard.Validator validator;

    private int modulesOK;

    private java.awt.Dimension preferredDimension = null;
    
    private JTable table;
    private ResultsTableModel model;
    
    //private static String yesToAll = getBundle( "CTL_Yes_All" );
    private static JButton yesToAll;
    private boolean includeAll = false;
    private boolean globalAll = false;

    static final long serialVersionUID =-6053101371836354161L;
    
    /** Stores the last selected directory */
    private static File defaultDir = null;

    /** Creates new form ResultsPanel */
    public ResultsPanel( Wizard.Validator validator ) {
        putClientProperty("WizardPanel_contentSelectedIndex", new Integer(3));  // NOI18N
        setName(getBundle("LBL_View"));
        initComponents();
        
        this.validator = validator;
        
        model = new ResultsTableModel();
        //issue 33790, font size problems in Chinese locale - use a JTable that can
        //self-size
        table = new ServerPanel.AutoResizeTable(model, 2);
        table.getTableHeader().setReorderingAllowed( false );
        table.getColumnModel().getColumn(0).setCellRenderer( new BooleanRenderer() );
        table.getColumnModel().getColumn(1).setCellRenderer( new ResultsCellRenderer() );
        table.getColumnModel().getColumn(2).setCellRenderer( new BooleanRenderer() );
//        table.setRowHeight( 2 * table.getRowHeight() );
        table.setSelectionMode( javax.swing.ListSelectionModel.SINGLE_SELECTION );
        table.getColumnModel().getColumn(0).setPreferredWidth(48);
        table.getColumnModel().getColumn(1).setPreferredWidth(480);
        table.getColumnModel().getColumn(2).setPreferredWidth(48);
        table.setIntercellSpacing( new java.awt.Dimension( 0, 0 ) );
        
        jScrollPane1.setViewportView(table);

        table.getSelectionModel().addListSelectionListener(
            new javax.swing.event.ListSelectionListener() {
                public void valueChanged( javax.swing.event.ListSelectionEvent evt ) {
                    selectionChange();
                }
            }
        );
        
        selectionChange();

        getAccessibleContext().setAccessibleName(getBundle("LBL_View"));
        getAccessibleContext().setAccessibleDescription(getBundle("LBL_41"));
        certificateButton.getAccessibleContext().setAccessibleDescription(getBundle("ACS_View"));
        table.getAccessibleContext().setAccessibleDescription(getBundle("ACS_Module_List"));
        
        jLabel1.setLabelFor( table );
        jLabel1.setDisplayedMnemonic(getBundle("LAB_ModulesList_Mnemonic").charAt(0));
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {//GEN-BEGIN:initComponents
        java.awt.GridBagConstraints gridBagConstraints;

        buttonGroup1 = new javax.swing.ButtonGroup();
        jTextArea1 = new javax.swing.JTextArea();
        jScrollPane1 = new javax.swing.JScrollPane();
        jLabel1 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        certificateButton = new javax.swing.JButton();
        saveButton = new javax.swing.JButton();

        setLayout(new java.awt.GridBagLayout());

        jTextArea1.setBackground(getBackground());
        jTextArea1.setFont(new Font("Dialog", Font.PLAIN, jTextArea1.getFont().getSize()));
        jTextArea1.setLineWrap(true);
        jTextArea1.setText(getBundle("LBL_41"));
        jTextArea1.setWrapStyleWord(true);
        jTextArea1.setDisabledTextColor(java.awt.Color.black);
        jTextArea1.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 0);
        add(jTextArea1, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        add(jScrollPane1, gridBagConstraints);

        jLabel1.setText(getBundle("LAB_ModulesList"));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        add(jLabel1, gridBagConstraints);

        jPanel1.setLayout(new java.awt.GridBagLayout());

        certificateButton.setMnemonic(getBundle("BTN_View_Mnem").charAt(0));
        certificateButton.setText(getBundle("BTN_View"));
        buttonGroup1.add(certificateButton);
        certificateButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                certificateButtonActionPerformed(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(12, 0, 0, 0);
        jPanel1.add(certificateButton, gridBagConstraints);

        saveButton.setMnemonic(getBundle("BTN_SaveCopy_Mnem").charAt(0));
        saveButton.setText(getBundle("BTN_SaveCopy"));
        buttonGroup1.add(saveButton);
        saveButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                saveButtonActionPerformed(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(12, 11, 0, 0);
        jPanel1.add(saveButton, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
        gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        add(jPanel1, gridBagConstraints);

    }//GEN-END:initComponents

    private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveButtonActionPerformed
        try {
            File saveDir = getSaveCopyDir();
            if (saveDir == null) return ;
            ModuleUpdate mu = getListSelection();
            File target = new File ( saveDir, mu.getDistributionFilename());
            if ( target.exists() ) {
                NotifyDescriptor.Confirmation nd =
                        new NotifyDescriptor.Confirmation(
                            getBundle( "MSG_OverwriteConfirmation" ),
                            NotifyDescriptor.YES_NO_OPTION
                        );
                if ( ! DialogDisplayer.getDefault().notify( nd ).equals( NotifyDescriptor.YES_OPTION ) )
                    return;
            }
            Downloader.saveCopy( getListSelection(), target );
        } catch (FileNotFoundException fnfe) {
            ErrorManager.getDefault ().notify (ErrorManager.USER,
                ErrorManager.getDefault ().annotate (fnfe,
                    NbBundle.getMessage (ResultsPanel.class, "CTL_Directory_not_exits", fnfe.getMessage ())));
        }
    }//GEN-LAST:event_saveButtonActionPerformed

    private void certificateButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_certificateButtonActionPerformed
        int accValue = CertificateDialog.showDialog( getListSelection().getCerts(), 
                                      getListSelection().getSecurity() );        
        doCertAction(accValue, getListSelection());        
        table.invalidate();
        table.repaint();
        selectionChange();
    }//GEN-LAST:event_certificateButtonActionPerformed

    private void doInclude(ModuleUpdate mu) {
        if ( mu.isDepending() && Downloader.bannedWriteToInstall (mu)) {
            NotifyDescriptor.Message nd = 
                new NotifyDescriptor.Message( 
                    MessageFormat.format(
                        getBundle( "MSG_CannotInstall_2" ),
                        new Object[] { mu.getName() } 
                    )
                );
            DialogDisplayer.getDefault().notify( nd );
            return;
        }
        if ( mu.getSecurity() == SignVerifier.NOT_SIGNED ) {
            if ( mu.isInstallApproved() ) {
                mu.setInstallApproved( false );
                checkValidity();
            } 
            else {
                Object ret = null;
                if ( !includeAll ) {
                    NotifyDescriptor.Confirmation nd =
                        new NotifyDescriptor.Confirmation( 
                            getBundle( "MSG_NotSignedConfirmation" ),
                            getBundle( "CTL_NotSignedConfirmation" ),
                            NotifyDescriptor.YES_NO_OPTION 
                        );
                    nd.setOptions( new Object[] {
                            NotifyDescriptor.YES_OPTION,
                            NotifyDescriptor.NO_OPTION,
                            getYesToAll () } );
                    ret = DialogDisplayer.getDefault().notify( nd );
                    if (ret.equals (getYesToAll ())) {
                        includeAll = true;
                    }
                }
                if ( includeAll || ret.equals( NotifyDescriptor.YES_OPTION ) ) {
                    mu.setInstallApproved( true );
                    checkValidity();
                }
            }
        }
        else if ( mu.getSecurity() == SignVerifier.SIGNED ||
                  mu.getSecurity() == SignVerifier.TRUSTED ) {
            doCertAction(CertificateDialog.showDialog( 
                                  mu.getCerts(), 
                                  mu.getSecurity()
                            ), 
                         mu
            );
        }
        else if ( mu.getSecurity() == SignVerifier.CORRUPTED ) {
            NotifyDescriptor.Message nd = 
                  new NotifyDescriptor.Message(getBundle( "MSG_CorruptedJAR" ) );
            DialogDisplayer.getDefault().notify( nd );
        }
        else {
            NotifyDescriptor.Message nd = 
                  new NotifyDescriptor.Message(getBundle( "MSG_BadDownload" ) );
            DialogDisplayer.getDefault().notify( nd );
        }
        table.invalidate();
        table.repaint();
        selectionChange();
    }
    
    private void doGlobal(ModuleUpdate mu) {
        if ( mu.isDepending() ) {
            NotifyDescriptor.Message nd = 
                new NotifyDescriptor.Message( 
                    MessageFormat.format(
                        getBundle( "MSG_InstallDepending" ),
                        new Object[] { mu.getName() } 
                    )
                );
            DialogDisplayer.getDefault().notify( nd );
            return;
        }
        
        if (Downloader.bannedWriteToInstall (mu)) {
            NotifyDescriptor.Message nd = 
                    new NotifyDescriptor.Message( getBundle( "MSG_InstallNoWrite" ) );
            DialogDisplayer.getDefault().notify( nd );
            return;
        }

        if ( mu.isToInstallDir() )
            mu.setToInstallDir( false );
        else {
            Object ret = null;
            if ( !globalAll ) {
                NotifyDescriptor.Confirmation nd =
                        new NotifyDescriptor.Confirmation( 
                            MessageFormat.format(
                                getBundle( "MSG_InstallConfirmation" ),
                                new Object[] { mu.getName() } 
                            ),
                            NotifyDescriptor.YES_NO_OPTION 
                        );
                nd.setOptions( new Object[] {
                            NotifyDescriptor.YES_OPTION,
                            NotifyDescriptor.NO_OPTION,
                            getYesToAll () } );
                ret = DialogDisplayer.getDefault().notify( nd );
                if (ret.equals ( getYesToAll ())) {
                    globalAll = true;
                }
            }
            if ( globalAll || ret.equals( NotifyDescriptor.YES_OPTION ) ) {
                mu.setToInstallDir( true );
            }
        }
        table.invalidate();
        table.repaint();
        selectionChange();
    }
    
    void doCertAction(int accValue, ModuleUpdate mu) {
        switch ( accValue ) {
            /*
        case CertificateDialog.FOR_MODULE:
            getListSelection().setInstallApproved( true );
            checkValidity();
            break;
             */
        case CertificateDialog.ACCEPT:
            setApproved4All( mu.getCerts(), true, -1 );
            checkValidity();
            break;
        case CertificateDialog.REJECT:
            setApproved4All( mu.getCerts(), false, -1 );
            checkValidity();
            break;
        case CertificateDialog.NOT_ALWAYS_ACCEPT:
            setApproved4All( mu.getCerts(), false, SignVerifier.SIGNED );
            checkValidity();
            try {
                SignVerifier.removeCertificates( mu.getCerts() );
            }
            catch ( java.security.cert.CertificateException e ) {
                ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e);
            }
            catch ( java.security.KeyStoreException e ) {
                ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e);
            }
            catch ( java.io.IOException e ) {
                ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e);
            }
            catch ( java.security.NoSuchAlgorithmException e ) {
                ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e);
            }
            break;
        case CertificateDialog.ALWAYS_ACCEPT:
            setApproved4All( mu.getCerts(), true, SignVerifier.TRUSTED );
            checkValidity();
            try {
                SignVerifier.addCertificates( mu.getCerts() );
            }
            catch ( java.security.cert.CertificateException e ) {
                ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e);
            }
            catch ( java.security.KeyStoreException e ) {
                ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e);
            }
            catch ( java.io.IOException e ) {
                ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e);
            }
            catch ( java.security.NoSuchAlgorithmException e ) {
                ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, e);
            }
            break;
        default:
            return;
        }        
    }
    
    /** Utility function approves installing of all modules signed
    * by given Collection of certs 
    */
    private void setApproved4All( Collection certs, boolean approved, int security ) {

        if ( certs == null ) {
            return;
        }
        
        for ( int i=0; i < model.getRowCount(); i++ ) {
            ModuleUpdate mu = (ModuleUpdate)model.getValueAt(i, 1);

            boolean bannedWriteToInstall = Downloader.bannedWriteToInstall(mu);
            if ( approved && mu.isDepending() && bannedWriteToInstall ) {
                continue;
            }
            
            if ( mu.getCerts() != null && certs.containsAll( mu.getCerts() ) ) {
                mu.setInstallApproved( approved );

                if ( security == SignVerifier.TRUSTED || security == SignVerifier.SIGNED ) {
                    mu.setSecurity( security );
                }
            }

        }
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JButton certificateButton;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JButton saveButton;
    // End of variables declaration//GEN-END:variables

    int generateResults() {

        modulesOK = 0;

        List modulelist = new ArrayList();

        Collection modules = Wizard.getAllModules();
        Iterator it = modules.iterator();
        boolean writeConflict = false;
        int selectRow = -1;
        while( it.hasNext() ) {
            ModuleUpdate mu = (ModuleUpdate)it.next();

            if ( mu.isSelected() ) {
                modulelist.add( mu );
                if ( mu.isDownloadOK() ) {
                    modulesOK ++;
                    if ( selectRow == -1 )
                        if (!mu.isInstallApproved())
                            selectRow = modulelist.size()-1;
                }
                if ( mu.isDepending() ) {
                    boolean bannedWriteToInstall = Downloader.bannedWriteToInstall (mu);
                    if ( bannedWriteToInstall ) {
                        mu.setInstallApproved( false );
                        writeConflict = true;
                    }
                    mu.setToInstallDir( true );
                }
            }
        }
        if ( writeConflict ) {
            NotifyDescriptor.Message nd = 
                    new NotifyDescriptor.Message( getBundle( "MSG_CannotInstall_1" ) );
            DialogDisplayer.getDefault().notify( nd );
        }
        
        model.refreshContent( modulelist );
        
        if ( selectRow == -1 )
            selectRow = 0;
        if ( table.getRowCount() > 0 )
            table.getSelectionModel().setSelectionInterval( selectRow, selectRow );

        checkValidity();
        selectionChange();
        includeAll = false;
        globalAll = false;
        return modulesOK;
    }

    /** Called when the selection in selectedList or explorerView changes */
    private void selectionChange() {
        ModuleUpdate mu = getListSelection();
        
        // Enable/Disable view button
        if ( mu != null &&
                ( mu.getSecurity() == SignVerifier.SIGNED ||
                  mu.getSecurity() == SignVerifier.TRUSTED ) ) {
            certificateButton.setEnabled( true );
        }
        else {
            certificateButton.setEnabled( false );
        }
        
        // Enable/Disable save button
        if ( mu != null &&
                mu.getSecurity() != SignVerifier.BAD_DOWNLOAD ) {
            saveButton.setEnabled( true );
        }
        else {
            saveButton.setEnabled( false );
        }
    }

    /** Gets the ModuleUpdate selected in the list */
    private ModuleUpdate getListSelection() {

        int index = table.getSelectionModel().getMinSelectionIndex();

        if ( index < 0 )
            return null;

        return (ModuleUpdate) model.getValueAt( index, 1 );
    }
    
    /** Checks wther there exists at least one update with approved install
    * if so enables finish button
    */
    private void checkValidity() {

        boolean valid = false;
        int okCount = 0;

        Collection modules = Wizard.getAllModules();
        Iterator it = modules.iterator();
        while( it.hasNext() ) {
            ModuleUpdate mu = (ModuleUpdate)it.next();

            if ( mu.isSelected() && mu.isInstallApproved() ) {
                valid = true;
                okCount++;
            }

        }

        validator.setValid( valid );

    }
    
    class ResultsTableModel extends AbstractTableModel {
        final String[] columnNames = {getBundle("LBL_42"),
                                      getBundle("LBL_43"),
                                      getBundle("LBL_Global")};
        private List modulelist = new ArrayList();

        public int getColumnCount() {
            return columnNames.length;
        }
        
        public int getRowCount() {
            return modulelist.size();
        }

        public String getColumnName(int col) {
            return columnNames[col];
        }

        public Object getValueAt(int row, int col) {
            if (col == 0)
                return ((ModuleUpdate)modulelist.get(row)).isInstallApproved() ? Boolean.TRUE : Boolean.FALSE;
            else if (col == 1)
                return modulelist.get(row);
            else
                return ((ModuleUpdate)modulelist.get(row)).isToInstallDir() ? Boolean.TRUE : Boolean.FALSE;
        }

        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }

        public boolean isCellEditable(int row, int col) {
            if (col == 1) { 
                return false;
            } else {
                return true;
            }
        }

        public void setValueAt(Object value, int row, int col) {
            if (value instanceof Boolean) {
                if ( col == 0 )
                    doInclude( (ModuleUpdate)modulelist.get(row) );
                else
                    doGlobal( (ModuleUpdate)modulelist.get(row) );
            }
        }
        
        void refreshContent( List modulelist ) {
            this.modulelist = modulelist;
        }        
    }
    
    private class ResultsCellRenderer extends JPanel implements TableCellRenderer {

        private JLabel nameLabel;
        private JLabel securityLabel;
        
        public ResultsCellRenderer() {
	    super();
            initComponents();
	}
        
        /** Overrides superclass method. */
        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int row, int column) {

            String sec = ""; // NOI18N
            if ( value == null )
                value = model.getValueAt( row, column );
            switch ( ((ModuleUpdate)value).getSecurity() ) {
            case SignVerifier.BAD_DOWNLOAD:
                sec = BAD_DOWNLOAD;
                break;
            case SignVerifier.CORRUPTED:
                sec = CORRUPTED;
                break;
            case SignVerifier.NOT_SIGNED:
                sec = NOT_SIGNED;
                break;
            case SignVerifier.SIGNED:
                StringBuffer sb = new StringBuffer( SIGNED );
                sb.append( SPACE + getBundle("CTL_By"));
                Collection certs = ((ModuleUpdate)value).getCerts();
                Iterator it = certs.iterator();
                while ( it.hasNext() ) {
                    Certificate cert = (Certificate)it.next();
                    if ( cert instanceof X509Certificate ) {
                        sb.append( " " ).append( ((X509Certificate)cert).getSubjectDN().getName() ); //NOI18N
                    }
                }

                sec = sb.toString();
                break;
            case SignVerifier.TRUSTED:
                sec = TRUSTED;
                break;
            }

            if ( isSelected ) {
                setBackground ((java.awt.Color) javax.swing.UIManager.getDefaults ().get ("Table.selectionBackground")); // NOI18N
                nameLabel.setForeground((java.awt.Color) javax.swing.UIManager.getDefaults ().get ("Table.selectionForeground")); // NOI18N
                securityLabel.setForeground((java.awt.Color) javax.swing.UIManager.getDefaults ().get ("Table.selectionForeground")); // NOI18N
            }
            else {
                setBackground ((java.awt.Color) javax.swing.UIManager.getDefaults ().get ("Table.background")); // NOI18N
                nameLabel.setForeground((java.awt.Color) javax.swing.UIManager.getDefaults ().get ("Table.Foreground")); // NOI18N
                securityLabel.setForeground((java.awt.Color) javax.swing.UIManager.getDefaults ().get ("Table.Foreground")); // NOI18N
            }
            nameLabel.setText( ((ModuleUpdate)value).getName() +
                                        "  " + getBundle( "CTL_Version" ) +
                                        ((ModuleUpdate)value).getRemoteModule().getSpecificationVersion());
            securityLabel.setText( sec );
            
            return this;
        }
        
        private void initComponents() {
            java.awt.GridBagConstraints gridBagConstraints;

            nameLabel = new JLabel();
            securityLabel = new JLabel();
            
            setLayout(new java.awt.GridBagLayout());

            nameLabel.setFont(nameLabel.getFont().deriveFont( Font.BOLD ));
            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridwidth = java.awt.GridBagConstraints.RELATIVE;
            gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
            gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
            gridBagConstraints.weightx = 1.0;
            gridBagConstraints.weighty = 1.0;
            gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 0);
            add(nameLabel, gridBagConstraints);

            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 0;
            gridBagConstraints.gridy = 1;
            gridBagConstraints.gridwidth = java.awt.GridBagConstraints.RELATIVE;
            gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
            gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 0);
            gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
            gridBagConstraints.weightx = 1.0;
            gridBagConstraints.weighty = 1.0;
            add(securityLabel, gridBagConstraints);

        }
    }
    
    static class BooleanRenderer extends JCheckBox implements TableCellRenderer {
	public BooleanRenderer() {
	    super();
	    setHorizontalAlignment(JLabel.CENTER);            
            setBorder(new javax.swing.border.LineBorder((java.awt.Color) javax.swing.UIManager.getDefaults().get("Button.focus")));
	}

        public Component getTableCellRendererComponent(JTable table, Object value,
						       boolean isSelected, boolean hasFocus, int row, int column) {
	    if (isSelected) {
	        setForeground(table.getSelectionForeground());
	        super.setBackground(table.getSelectionBackground());
	    }
	    else {
	        setForeground(table.getForeground());
	        setBackground(table.getBackground());
	    }
            
            setBorderPainted( isSelected && table.getSelectedColumn() == column );
            
            setSelected((value != null && ((Boolean)value).booleanValue()));
            return this;
        }
    }
    
    private File getSaveCopyDir() throws FileNotFoundException {
        JFileChooser chooser = new JFileChooser();
        chooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
        chooser.setDialogTitle(
            MessageFormat.format(
                        getBundle("CTL_FileChooserSC_Title"),
                        new Object[] { getListSelection().getDistributionFilename() }
            )
        );
        chooser.setFileFilter( new javax.swing.filechooser.FileFilter() {
            public boolean accept( File f ) {
                return f.canWrite();
            }

            public String getDescription() {
                return getBundle( "CTL_FileFilterSCDescription" );
            }
        });

        if (defaultDir == null)
            defaultDir = SelectModulesPanel.getDefaultDir();

        if ( defaultDir != null) {
            File parent = defaultDir.getParentFile();
            if ( parent != null ) {
                chooser.setCurrentDirectory( parent );
                chooser.setSelectedFile( defaultDir );
            }
            else
                chooser.setCurrentDirectory( defaultDir );
        }
        
        Window focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager ().getActiveWindow ();
        
        File res = null;

        if (chooser.showDialog( WindowManager.getDefault().getMainWindow (),
                               getBundle("CTL_Save"))
                == JFileChooser.APPROVE_OPTION) {

            defaultDir = chooser.getSelectedFile();
            if (defaultDir.exists ()) {
                res = defaultDir;
            } else {
                // bugfix #39006, check if the chosen directory exists otherwise throw a exception
                // notify user the selected directory doesn't exists
                throw new FileNotFoundException (defaultDir.getAbsolutePath ()); // NOI18N
            }
        } else {
            res = null;
        }
        
        // #46353, recover focus after close the JFileChooser
        if (focusOwner != null) {
            focusOwner.toFront ();
        }
        
        return res;
    }
    
    private JButton getYesToAll () {
        if (yesToAll == null) {
            yesToAll = new JButton (getBundle("CTL_Yes_All"));
            yesToAll.getAccessibleContext ().setAccessibleName (getBundle("ACSN_Yes_All"));
            yesToAll.getAccessibleContext ().setAccessibleDescription (getBundle("ACSD_Yes_All"));
            yesToAll.setMnemonic (getBundle("ACS_Yes_All_mnc").charAt (0));
        }
        return yesToAll;
    }
    
    private static String getBundle( String key ) {
        return NbBundle.getMessage( ResultsPanel.class, key );
    }
}
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.