|
What this is
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 |
Copyright 1998-2024 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.