/**
  * Save the values specified in the pages.
  *
  * <p>The default implementation of this framework method saves all pages of type <code>
  * PreferencePage</code> (if their store needs saving and is a <code>PreferenceStore</code>).
  *
  * <p>Subclasses may override.
  */
 protected void handleSave() {
   Iterator<IPreferenceNode> nodes =
       preferenceManager.getElements(PreferenceManager.PRE_ORDER).iterator();
   while (nodes.hasNext()) {
     IPreferenceNode node = nodes.next();
     IPreferencePage page = node.getPage();
     if (page instanceof PreferencePage) {
       // Save now in case tbe workbench does not shutdown cleanly
       IPreferenceStore store = ((PreferencePage) page).getPreferenceStore();
       if (store != null && store.needsSaving() && store instanceof IPersistentPreferenceStore) {
         try {
           ((IPersistentPreferenceStore) store).save();
         } catch (IOException e) {
           String message =
               JFaceResources.format(
                   "PreferenceDialog.saveErrorMessage",
                   page.getTitle(), // $NON-NLS-1$
                   e.getMessage());
           Policy.getStatusHandler()
               .show(
                   new Status(IStatus.ERROR, Policy.JFACE, message, e),
                   JFaceResources.getString("PreferenceDialog.saveErrorTitle")); // $NON-NLS-1$
         }
       }
     }
   }
 }
 @Override
 public void updateTitle() {
   if (currentPage == null) {
     return;
   }
   messageArea.showTitle(currentPage.getTitle(), currentPage.getImage());
 }