private void loadDefaultsClick(DialogAccess dlg) {
      updateStyleMaps(dlg);

      // Count styles that we will overwrite
      Config clean = ConverterFactory.createConverter(getMIMEType()).getConfig();
      clean.readDefaultConfig(getDefaultConfigName());

      int nCount = 0;
      int nFamilyCount = sFamilyNames.length;
      for (int i = 0; i < nFamilyCount; i++) {
        ComplexOption cleanMap = clean.getComplexOption(sFamilyNames[i] + "-map");
        Map<String, String> displayNames = styleNameProvider.getDisplayNames(sOOoFamilyNames[i]);
        for (String sName : cleanMap.keySet()) {
          String sDisplayName =
              (displayNames != null && displayNames.containsKey(sName))
                  ? displayNames.get(sName)
                  : "";
          if (styleMap[i].containsKey(sDisplayName)) {
            nCount++;
          }
        }
      }

      // Display confirmation dialog
      boolean bConfirm = false;
      XDialog xDialog = getDialog(getDialogLibraryName() + ".LoadDefaults");
      if (xDialog != null) {
        DialogAccess ldlg = new DialogAccess(xDialog);
        if (nCount > 0) {
          String sLabel = ldlg.getLabelText("OverwriteLabel");
          sLabel = sLabel.replaceAll("%s", Integer.toString(nCount));
          ldlg.setLabelText("OverwriteLabel", sLabel);
        } else {
          ldlg.setLabelText("OverwriteLabel", "");
        }
        bConfirm = xDialog.execute() == ExecutableDialogResults.OK;
        xDialog.endExecute();
      }

      // Do the replacement
      if (bConfirm) {
        for (int i = 0; i < nFamilyCount; i++) {
          ComplexOption cleanMap = clean.getComplexOption(sFamilyNames[i] + "-map");
          Map<String, String> displayNames = styleNameProvider.getDisplayNames(sOOoFamilyNames[i]);
          copyStyles(cleanMap, styleMap[i], displayNames);
        }
      }

      // Force update of the user interface
      nCurrentFamily = -1;
      sCurrentStyleName = null;
      styleFamilyChange(dlg);
    }
    protected void getControls(DialogAccess dlg) {
      updateStyleMaps(dlg);

      // Save style maps to config (translating keys back to internal names)
      int nCount = sFamilyNames.length;
      for (int i = 0; i < nCount; i++) {
        ComplexOption configMap = config.getComplexOption(sFamilyNames[i] + "-map");
        configMap.clear();
        Map<String, String> internalNames = styleNameProvider.getInternalNames(sOOoFamilyNames[i]);
        copyStyles(styleMap[i], configMap, internalNames);
      }
    }
    // Implement abstract methods from super
    protected void setControls(DialogAccess dlg) {
      // Load style maps from config (translating keys to display names)
      int nCount = sFamilyNames.length;
      for (int i = 0; i < nCount; i++) {
        ComplexOption configMap = config.getComplexOption(sFamilyNames[i] + "-map");
        styleMap[i].clear();
        Map<String, String> displayNames = styleNameProvider.getDisplayNames(sOOoFamilyNames[i]);
        copyStyles(configMap, styleMap[i], displayNames);
      }

      // Display paragraph maps first
      nCurrentFamily = -1;
      sCurrentStyleName = null;
      dlg.setListBoxSelectedItem("StyleFamily", (short) 1);
      styleFamilyChange(dlg);
    }
 private void newStyleClick(DialogAccess dlg) {
   if (nCurrentFamily > -1) {
     updateStyleMaps(dlg);
     String sNewName =
         appendItem(
             dlg,
             "StyleName",
             styleNameProvider.getInternalNames(sOOoFamilyNames[nCurrentFamily]).keySet());
     if (sNewName != null) {
       styleMap[nCurrentFamily].put(sNewName, new HashMap<String, String>());
       clearControls(dlg);
       sCurrentStyleName = null;
       styleNameChange(dlg);
     }
     updateStyleControls(dlg);
   }
 }