Author: cmarcum Date: Sat May 2 14:44:13 2015 New Revision: 1677319 URL: http://svn.apache.org/r1677319 Log: #i126246# ConfigurationValidator used a ConfigurationPanel to get office and sdk paths if they are not already valid. This panel was copied to ConfigurationValidatorPanel to add the DialogDescriptor necessary to disable and enable the OK button. A copy was needed because the ConfigurationOptionsPanelController used ConfigurationPanel which is final and could not be extended.
ConfigurationOptionsPanelController was not enabling the Apply button when paths were valid in ConfigurationPanel. This was due to some checks being reversed. This was corrected. Added: openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationValidatorPanel.form - copied unchanged from r1673331, openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationPanel.form openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationValidatorPanel.java - copied, changed from r1673331, openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationPanel.java Modified: openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationOptionsPanelController.java openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationValidator.java Modified: openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationOptionsPanelController.java URL: http://svn.apache.org/viewvc/openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationOptionsPanelController.java?rev=1677319&r1=1677318&r2=1677319&view=diff ============================================================================== --- openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationOptionsPanelController.java (original) +++ openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationOptionsPanelController.java Sat May 2 14:44:13 2015 @@ -68,8 +68,9 @@ final class ConfigurationOptionsPanelCon } public boolean isChanged() { - return (panel.getOffice().trim().equals(settings.getValue(settings.KEY_OFFICE_INSTALLATION)) || - panel.getSDK().trim().equals(settings.getValue(settings.KEY_SDK_INSTALLATION))); + + return (!panel.getOffice().trim().equals(settings.getValue(settings.KEY_OFFICE_INSTALLATION)) || + !panel.getSDK().trim().equals(settings.getValue(settings.KEY_SDK_INSTALLATION))); // return changed; } Modified: openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationValidator.java URL: http://svn.apache.org/viewvc/openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationValidator.java?rev=1677319&r1=1677318&r2=1677319&view=diff ============================================================================== --- openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationValidator.java (original) +++ openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationValidator.java Sat May 2 14:44:13 2015 @@ -58,8 +58,7 @@ public class ConfigurationValidator { String title = ResourceBundle.getBundle( "org/openoffice/extensions/config/Bundle").getString( "ConfigurationDialog_Title"); // NOI18N - final ConfigurationPanel panel = new ConfigurationPanel(officePath, sdkPath); - panel.validateWithFocus(); // set the initial error message incl. focus on the right text field + final ConfigurationValidatorPanel panel = new ConfigurationValidatorPanel(officePath, sdkPath); DialogDescriptor ddscr = new DialogDescriptor(panel, title); ddscr.setButtonListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -72,12 +71,15 @@ public class ConfigurationValidator { }); // set help to this panel ddscr.setHelpCtx(new HelpCtx("org.openoffice.extensions.config.paths")); // NOI18N + panel.setDialogDescriptor(ddscr); + ddscr.setValid(false); // disable OK button + panel.validateWithFocus(); // set the initial error message incl. focus on the right text field Dialog d = DialogDisplayer.getDefault().createDialog(ddscr); d.setVisible(true); officePath = settings.getValue(ConfigurationSettings.KEY_OFFICE_INSTALLATION); sdkPath = settings.getValue(ConfigurationSettings.KEY_SDK_INSTALLATION); loc = OpenOfficeLocation.getOpenOfficeLocation(officePath, sdkPath, false); - valid = loc != null && loc.validate(); + valid = (loc != null && loc.validate()); } return valid; } Copied: openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationValidatorPanel.java (from r1673331, openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationPanel.java) URL: http://svn.apache.org/viewvc/openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationValidatorPanel.java?p2=openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationValidatorPanel.java&p1=openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationPanel.java&r1=1673331&r2=1677319&rev=1677319&view=diff ============================================================================== --- openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationPanel.java (original) +++ openoffice/devtools/netbeansintegration/trunk/src/org/openoffice/extensions/config/ConfigurationValidatorPanel.java Sat May 2 14:44:13 2015 @@ -32,25 +32,21 @@ import javax.swing.JPanel; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.filechooser.FileSystemView; +import org.openide.DialogDescriptor; import org.openide.filesystems.FileUtil; import org.openide.util.ImageUtilities; import org.openide.util.NbBundle; import org.openoffice.extensions.config.office.OpenOfficeLocation; import org.openoffice.extensions.config.office.PlatformInfo; -final class ConfigurationPanel extends javax.swing.JPanel { +final class ConfigurationValidatorPanel extends javax.swing.JPanel { protected static final boolean VALIDATE_SDK = Boolean.TRUE; protected static final boolean VALIDATE_OFFICE = Boolean.FALSE; - //private final ConfigurationOptionsPanelController controller; + private DialogDescriptor ddscr; -// ConfigurationPanel(ConfigurationOptionsPanelController controller) { -// this.controller = controller; -// initComponents(); -// // TODO listen to changes in form fields and call controller.changed() -// } - ConfigurationPanel(String officeInstallation, String sdkInstallation) { + ConfigurationValidatorPanel(String officeInstallation, String sdkInstallation) { initComponents(); officeTextField.setText(officeInstallation); sdkTextField.setText(sdkInstallation); @@ -59,11 +55,10 @@ final class ConfigurationPanel extends j sdkTextField.setEnabled(!threeLayerOffice); browseButtonSDK.setEnabled(!threeLayerOffice); - // initial error message - validate(); - officeTextField.getDocument().addDocumentListener(new DocumentListenerImplementation(VALIDATE_OFFICE)); sdkTextField.getDocument().addDocumentListener(new DocumentListenerImplementation(VALIDATE_SDK)); + + } /** This method is called from within the constructor to @@ -102,7 +97,7 @@ final class ConfigurationPanel extends j sdkTextField.setToolTipText(NbBundle.getMessage(ConfigurationPanel.class, "TF_SDKInstallation_Tooltip")); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(browseButtonOffice, NbBundle.getMessage(ConfigurationPanel.class, "LBL_BUTTON_BrowseOffice")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(browseButtonOffice, NbBundle.getMessage(ConfigurationValidatorPanel.class, "LBL_BUTTON_BrowseOffice")); // NOI18N browseButtonOffice.setToolTipText(NbBundle.getMessage(ConfigurationPanel.class, "BUTTON_Office_Browse")); // NOI18N browseButtonOffice.setActionCommand("BROWSE_OFFICE"); browseButtonOffice.addActionListener(new java.awt.event.ActionListener() { @@ -111,7 +106,7 @@ final class ConfigurationPanel extends j } }); - org.openide.awt.Mnemonics.setLocalizedText(browseButtonSDK, NbBundle.getMessage(ConfigurationPanel.class, "LBL_BUTTON_BrowseSDK")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(browseButtonSDK, NbBundle.getMessage(ConfigurationValidatorPanel.class, "LBL_BUTTON_BrowseSDK")); // NOI18N browseButtonSDK.setToolTipText(NbBundle.getMessage(ConfigurationPanel.class, "BUTTON_SDK_Browse")); // NOI18N browseButtonSDK.setActionCommand("BROWSE_SDK"); browseButtonSDK.addActionListener(new java.awt.event.ActionListener() { @@ -173,15 +168,15 @@ final class ConfigurationPanel extends j .addContainerGap()) ); - descriptionTextPane.setBorder(null); descriptionTextPane.setEditable(false); + descriptionTextPane.setBorder(null); descriptionTextPane.setText(NbBundle.getMessage(ConfigurationPanel.class, "TP_InitialSettings_Description")); // NOI18N descriptionTextPane.setAutoscrolls(false); descriptionTextPane.setOpaque(false); descriptionTextPane.setRequestFocusEnabled(false); descriptionTextPane.setVerifyInputWhenFocusTarget(false); - org.openide.awt.Mnemonics.setLocalizedText(sunLabel, NbBundle.getMessage(ConfigurationPanel.class, "TP_InitialSettings_SunDevelopment")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(sunLabel, NbBundle.getMessage(ConfigurationValidatorPanel.class, "TP_InitialSettings_SunDevelopment")); // NOI18N sunLogoPanel.setOpaque(false); @@ -197,7 +192,7 @@ final class ConfigurationPanel extends j ); jTextPane1.setEditable(false); - jTextPane1.setText(NbBundle.getMessage(ConfigurationPanel.class, "TP_LegalNotice")); // NOI18N + jTextPane1.setText(NbBundle.getMessage(ConfigurationValidatorPanel.class, "TP_LegalNotice")); // NOI18N jTextPane1.setOpaque(false); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); @@ -336,6 +331,7 @@ final class ConfigurationPanel extends j } protected void validate(boolean val) { + ddscr.setValid(false); // disable OK button if (val == VALIDATE_SDK) { validateSDK(); } @@ -353,13 +349,16 @@ final class ConfigurationPanel extends j // TODO: make error message for SDK not found with OOo 3 if( !OpenOfficeLocation.validateOffice(officePath) ) { errorTextPane.setText(NbBundle.getMessage(ConfigurationPanel.class, "Error_OfficeInstallation")); // NOI18N + ddscr.setValid(false); // disable OK button } else { String sdk = OpenOfficeLocation.getSdk(officePath); if (sdk != null && sdk.length() != 0) { sdkTextField.setText(sdk); errorTextPane.setText(""); // NOI18N + } else { + ddscr.setValid(false); // disable OK button validateSDK(); } } @@ -368,30 +367,29 @@ final class ConfigurationPanel extends j private void validateSDK() { if( !OpenOfficeLocation.validateSDK(sdkTextField.getText()) ) { errorTextPane.setText(NbBundle.getMessage(ConfigurationPanel.class, "Error_SDKInstallation")); // NOI18N + ddscr.setValid(false); // disable OK button } else { errorTextPane.setText(""); // NOI18N + ddscr.setValid(true); // enable OK button } } private void validatePlatform() { if( !ConfigurationValidator.validatePlatform() ) { errorTextPane.setText(NbBundle.getMessage(ConfigurationPanel.class, "Error_UnknownPlatform")); // NOI18N + ddscr.setValid(false); // disable OK button } else { errorTextPane.setText(""); // NOI18N } } -// public void removeUpdate(DocumentEvent e) { -// validate(e); -// } -// -// public void insertUpdate(DocumentEvent e) { -// validate(e); -// } -// -// public void changedUpdate(DocumentEvent e) { -// validate(e); -// } + + void setDialogDescriptor(DialogDescriptor ddscr) { + this.ddscr = ddscr; + + } + + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton browseButtonOffice; @@ -453,15 +451,15 @@ final class ConfigurationPanel extends j this.validationType = validationType; } public void insertUpdate(DocumentEvent e) { - ConfigurationPanel.this.validate(validationType); + ConfigurationValidatorPanel.this.validate(validationType); } public void removeUpdate(DocumentEvent e) { - ConfigurationPanel.this.validate(validationType); + ConfigurationValidatorPanel.this.validate(validationType); } public void changedUpdate(DocumentEvent e) { - ConfigurationPanel.this.validate(validationType); + ConfigurationValidatorPanel.this.validate(validationType); } }