private JComponent createDetails(final AddOnProperties addOn) {
   final StringBuilder text = new StringBuilder(1024);
   text.append("<html><body>");
   text.append(toHtml(addOn.getDescription()));
   text.append("<p>");
   if (addOn instanceof ScriptAddOnProperties) {
     List<Script> scripts = ((ScriptAddOnProperties) addOn).getScripts();
     if (!scripts.isEmpty()) {
       text.append("<table border='1'>");
       text.append(
           row(
               "th",
               getText("header.function"),
               getText("header.menu"),
               getText("header.shortcut")));
       for (ScriptAddOnProperties.Script script : scripts) {
         text.append(
             row(
                 "td",
                 bold(TextUtils.getText(script.menuTitleKey)),
                 formatMenuLocation(script),
                 formatShortcut(script)));
       }
       text.append("</table>");
     }
   }
   if (warning != null) {
     text.append("<p><p>");
     text.append(warning.replaceAll("</?(html|body)>", ""));
   }
   text.append("</body></html>");
   final JLabel label = new JLabel(text.toString());
   final ImageIcon icon =
       IconNotFound.createIconOrReturnNull(addOn.getName() + "-screenshot-1.png");
   if (icon != null) label.setIcon(icon);
   return label;
 }
 private JLabel createImageLabel(AddOnProperties addOn) {
   final JLabel label = new JLabel("");
   label.setIcon(IconNotFound.createIconOrReturnNotFoundIcon(addOn.getName() + ".png"));
   return label;
 }