You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2010/03/29 00:53:45 UTC

svn commit: r928512 [2/2] - /myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/inputHtml/InputHtmlRenderer.java

Modified: myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/inputHtml/InputHtmlRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/inputHtml/InputHtmlRenderer.java?rev=928512&r1=928511&r2=928512&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/inputHtml/InputHtmlRenderer.java (original)
+++ myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/inputHtml/InputHtmlRenderer.java Sun Mar 28 22:53:45 2010
@@ -65,6 +65,11 @@ public class InputHtmlRenderer extends H
     // TODO : Fix height while zoomed
 
     private static final Log log = LogFactory.getLog(HtmlRendererUtils.class);
+    
+    private static String ROWSPAN_ATTR = "rowspan";
+    
+    private static String I18N_TRANSLATE_ATTR = "i18n:translate";
+    private static String I18N_ATTRIBUTES_ATTR = "i18n:attributes";
 
     protected boolean isDisabled(FacesContext facesContext, UIComponent uiComponent) {
         if( !UserRoleUtils.isEnabledOnUserRole(uiComponent) )
@@ -272,6 +277,9 @@ public class InputHtmlRenderer extends H
         addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupusourceedit.js");
         addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupuspellchecker.js");
         addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupudrawers.js");
+        
+        addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupuundo.js");
+        addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "diff_match_patch.js");
 
         addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "myFacesUtils.js");
 
@@ -356,12 +364,14 @@ public class InputHtmlRenderer extends H
 
                 writer.endElement("kupuconfig");
             writer.endElement("xml");
-           writer.endElement(HTML.DIV_ELEM);
+        writer.endElement(HTML.DIV_ELEM);
 
 
         writer.startElement(HTML.DIV_ELEM,editor);
         writer.writeAttribute(HTML.CLASS_ATTR, "kupu-fulleditor", null);
-
+        writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
+        writer.writeAttribute("i18n:domain","kupu",null);
+        
             //
             // Toolbar
             //
@@ -375,103 +385,107 @@ public class InputHtmlRenderer extends H
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup",null);
-                    writer.writeAttribute(HTML.ID_ATTR, "kupu-logo",null);
                     writer.writeAttribute(HTML.STYLE_ATTR, "float: right", null);
+                    writer.writeAttribute(HTML.ID_ATTR, "kupu-logo",null);
+                    if( editor.isAddKupuLogo() ){
+                        writer.startElement(HTML.BUTTON_ELEM,editor);
+                        writer.writeAttribute(HTML.TYPE_ATTR, "button",null);
+                        writer.writeAttribute(HTML.CLASS_ATTR, "kupu-logo",null);
+                        writer.writeAttribute(HTML.TITLE_ATTR, "Kupu 1.4.16",null);
+                        writer.writeAttribute(I18N_ATTRIBUTES_ATTR,"title title_logo;",null);
+                        writer.writeAttribute(HTML.ACCESSKEY_ATTR, "k",null);
+                        writer.writeAttribute(HTML.ONCLICK_ATTR, "window.open('http://kupu.oscom.org');",null);
+                        writer.write(" ");
+                        writer.endElement(HTML.BUTTON_ELEM);
+                    }
+                    writer.endElement(HTML.SPAN_ELEM);
+                    
+                    writer.startElement(HTML.SPAN_ELEM,editor);
+                    writer.writeAttribute(HTML.CLASS_ATTR,"kupu-tb-buttongroup",null);
+                    writer.writeAttribute(HTML.STYLE_ATTR,"float: right",null);
+                    writer.writeAttribute(HTML.ID_ATTR,"kupu-zoom",null);
                         writer.startElement(HTML.BUTTON_ELEM,null);
                         writer.writeAttribute(HTML.TYPE_ATTR, "button",null);
                         writer.writeAttribute(HTML.CLASS_ATTR, "kupu-zoom",null);
                         writer.writeAttribute(HTML.ID_ATTR, "kupu-zoom-button",null);
-                        writer.writeAttribute(HTML.TITLE_ATTR, "zoom: alt-x",null);
-                        writer.writeAttribute("i18n:attributes", "title", null);
+                        writer.writeAttribute(I18N_ATTRIBUTES_ATTR,"title title_zoom;",null);
+                        writer.writeAttribute(HTML.TITLE_ATTR,"Zoom: Access key (Alt or Ctrl) + X",null);
                         writer.writeAttribute(HTML.ACCESSKEY_ATTR, "x",null);
-                            writer.write(" ");
+                        writer.write(" ");
                         writer.endElement(HTML.BUTTON_ELEM);
-                        if( editor.isAddKupuLogo() ){
-                            writer.startElement(HTML.BUTTON_ELEM,editor);
-                            writer.writeAttribute(HTML.TYPE_ATTR, "button",null);
-                            writer.writeAttribute(HTML.CLASS_ATTR, "kupu-logo",null);
-                            writer.writeAttribute(HTML.TITLE_ATTR, "Kupu 1.3.5",null);
-                            writer.writeAttribute("i18n:attributes", "title", null);
-                            writer.writeAttribute(HTML.ACCESSKEY_ATTR, "k",null);
-                            writer.writeAttribute(HTML.ONCLICK_ATTR, "window.open('http://kupu.oscom.org');",null);
-                                writer.write(" ");
-                              writer.endElement(HTML.BUTTON_ELEM);
-                        }
                     writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SELECT_ELEM,editor);
                     writer.writeAttribute(HTML.ID_ATTR, "kupu-tb-styles",null);
                         writer.startElement(HTML.OPTION_ELEM,editor);
-                        writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
                         writer.writeAttribute(HTML.VALUE_ATTR, "P",null);
-                        writer.writeAttribute("i18n:translate", "paragraph-normal", null);
-                            writer.write("Normal");
+                        writer.writeAttribute(I18N_TRANSLATE_ATTR,"Normal",null);
+                        writer.write("Normal paragraph");
                         writer.endElement(HTML.OPTION_ELEM);
 
                         writer.startElement(HTML.OPTION_ELEM,editor);
                         writer.writeAttribute(HTML.VALUE_ATTR, "H1",null);
                             writer.startElement(HTML.SPAN_ELEM,editor);
-                            writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
-                            writer.writeAttribute("i18n:translate", "heading", null);
-                                writer.write("Heading");
+                            
+                            writer.writeAttribute(I18N_TRANSLATE_ATTR,"Heading 1",null);
+                            writer.write("Heading 1");
                             writer.endElement(HTML.SPAN_ELEM);
-                            writer.write(" 1");
                         writer.endElement(HTML.OPTION_ELEM);
 
                         writer.startElement(HTML.OPTION_ELEM, editor);
                         writer.writeAttribute(HTML.VALUE_ATTR, "H2",null);
                             writer.startElement(HTML.SPAN_ELEM,editor);
-                            writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
-                            writer.writeAttribute("i18n:translate", "heading", null);
-                                writer.write("Heading");
+                            
+                            writer.writeAttribute(I18N_TRANSLATE_ATTR,"Heading 2",null);
+                            writer.write("Heading 2");
                             writer.endElement(HTML.SPAN_ELEM);
-                            writer.write(" 2");
                         writer.endElement(HTML.OPTION_ELEM);
 
                         writer.startElement(HTML.OPTION_ELEM,editor);
                         writer.writeAttribute(HTML.VALUE_ATTR, "H3",null);
                             writer.startElement(HTML.SPAN_ELEM,editor);
-                            writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
-                            writer.writeAttribute("i18n:translate", "heading", null);
-                                writer.write("Heading");
+                            
+                            writer.writeAttribute(I18N_TRANSLATE_ATTR,"Heading 3",null);
+                            writer.write("Heading 3");
                             writer.endElement(HTML.SPAN_ELEM);
-                            writer.write(" 3");
-                        writer.endElement(HTML.OPTION_ELEM);
+
+                            writer.endElement(HTML.OPTION_ELEM);
 
                         writer.startElement(HTML.OPTION_ELEM,editor);
                         writer.writeAttribute(HTML.VALUE_ATTR, "H4",null);
                             writer.startElement(HTML.SPAN_ELEM,editor);
-                            writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
-                            writer.writeAttribute("i18n:translate", "heading", null);
-                                writer.write("Heading");
+                            
+                            writer.writeAttribute(I18N_TRANSLATE_ATTR,"Heading 4",null);
+                            writer.write("Heading 4");
                             writer.endElement(HTML.SPAN_ELEM);
-                            writer.write(" 4");
+
                         writer.endElement(HTML.OPTION_ELEM);
 
                         writer.startElement(HTML.OPTION_ELEM,editor);
                         writer.writeAttribute(HTML.VALUE_ATTR, "H5",null);
                             writer.startElement(HTML.SPAN_ELEM,editor);
-                            writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
-                            writer.writeAttribute("i18n:translate", "heading", null);
-                                writer.write("Heading");
+                            
+                            writer.writeAttribute(I18N_TRANSLATE_ATTR,"Heading 5",null);
+                            writer.write("Heading 5");
                             writer.endElement(HTML.SPAN_ELEM);
-                            writer.write(" 5");
+
                         writer.endElement(HTML.OPTION_ELEM);
 
                         writer.startElement(HTML.OPTION_ELEM,editor);
                         writer.writeAttribute(HTML.VALUE_ATTR, "H6",null);
+
                             writer.startElement(HTML.SPAN_ELEM,editor);
-                            writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
-                            writer.writeAttribute("i18n:translate", "heading", null);
-                                writer.write("Heading");
+
+                            writer.writeAttribute(I18N_TRANSLATE_ATTR,"Heading 6",null);
+                            writer.write("Heading 6");
                             writer.endElement(HTML.SPAN_ELEM);
-                            writer.write(" 6");
+
                         writer.endElement(HTML.OPTION_ELEM);
 
                         writer.startElement(HTML.OPTION_ELEM,editor);
-                        writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
+                        
                         writer.writeAttribute(HTML.VALUE_ATTR, "PRE",null);
-                        writer.writeAttribute("i18n:translate", "paragraph-formatted", null);
+                        writer.writeAttribute(I18N_TRANSLATE_ATTR,"Formatted",null);
                             writer.write("Formatted");
                         writer.endElement(HTML.OPTION_ELEM);
 
@@ -480,56 +494,57 @@ public class InputHtmlRenderer extends H
                     writer.startElement(HTML.SPAN_ELEM,editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup", null);
                     writer.writeAttribute(HTML.STYLE_ATTR, "display: none", null);
-                        writeButton(writer, "kupu-save", "Save", "s", editor);
+                        writeButton(writer, "kupu-save", "save: alt-s", "s", editor, null);
                     writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup", null);
                     writer.writeAttribute(HTML.ID_ATTR, "kupu-bg-basicmarkup", null);
-                        writeButton(writer, "kupu-bold", "bold: alt-b", "b", editor);
-                        writeButton(writer, "kupu-italic", "italic: alt-i", "i", editor);
-                        writeButton(writer, "kupu-underline", "underline: alt-u", "u", editor);
+                        writeButton(writer, "kupu-bold", "Bold: Access key (Alt or Ctrl) + B", "b", editor,"title title_bold;");
+                        writeButton(writer, "kupu-italic", "Italic: Access key (Alt or Ctrl) + I", "i", editor,"title title_italic;");
+                        writeButton(writer, "kupu-underline", "Underline: Access key (Alt or Ctrl) + U", "u", editor,"title title_underline;");
                     writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup", null);
                     writer.writeAttribute(HTML.ID_ATTR, "kupu-bg-subsuper", null);
-                        writeButton(writer, "kupu-subscript", "subscript: alt--", "-", editor);
-                        writeButton(writer, "kupu-superscript", "superscript: alt-+", "+", editor);
+                        writeButton(writer, "kupu-subscript", "Subscript: Access key (Alt or Ctrl) + -", "-", editor,"title title_subscript;");
+                        writeButton(writer, "kupu-superscript", "Superscript: Access key (Alt or Ctrl) + +", "+", editor,"title title_superscript;");
                     writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup", null);
-                        writeButton(writer, "kupu-forecolor", "text color: alt-f", "f", editor);
-                        writeButton(writer, "kupu-hilitecolor", "background color: alt-h", "h", editor);
+                    writer.writeAttribute(HTML.ID_ATTR, "kupu-bg-color", null);
+                        writeButton(writer, "kupu-forecolor", "text color: alt-f", "f", editor,"title title_text_color;");
+                        writeButton(writer, "kupu-hilitecolor", "background color: alt-h", "h", editor,"title title_back_color;");
                     writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup", null);
                     writer.writeAttribute(HTML.ID_ATTR, "kupu-bg-justify", null);
-                        writeButton(writer, "kupu-justifyleft", "left justify: alt-l", "l", editor);
-                        writeButton(writer, "kupu-justifycenter", "center justify: alt-c", "c", editor);
-                        writeButton(writer, "kupu-justifyright", "right justify: alt-r", "r", editor);
+                        writeButton(writer, "kupu-justifyleft", "Left justify: Access key (Alt or Ctrl) + L", "l", editor,"title title_ljust;");
+                        writeButton(writer, "kupu-justifycenter", "Center justify: Access key (Alt or Ctrl) + C", "c", editor,"title title_center;");
+                        writeButton(writer, "kupu-justifyright", "Right justify: Access key (Alt or Ctrl) + R", "r", editor,"title title_rjust;");
                     writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup", null);
                     writer.writeAttribute(HTML.ID_ATTR, "kupu-bg-list", null);
-                        writeButton(writer, "kupu-insertorderedlist", "numbered list: alt-#", "#", "kupu-list-ol-addbutton", editor);
-                        writeButton(writer, "kupu-insertunorderedlist", "unordered list: alt-*", "*", "kupu-list-ul-addbutton", editor);
+                        writeButton(writer, "kupu-insertorderedlist", "Numbered list: Access key (Alt or Ctrl) + #", "#", "kupu-list-ol-addbutton", editor,"title title_numlist;");
+                        writeButton(writer, "kupu-insertunorderedlist", "Unordered list: Access key (Alt or Ctrl) + *", "*", "kupu-list-ul-addbutton", editor,"title title_unorderedlist;");
                     writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup", null);
                     writer.writeAttribute(HTML.ID_ATTR, "kupu-bg-definitionlist", null);
-                        writeButton(writer, "kupu-insertdefinitionlist", "definition list: alt-=", "=", "kupu-list-dl-addbutton", editor);
+                        writeButton(writer, "kupu-insertdefinitionlist", "Definition list: Access key (Alt or Ctrl) + =", "=", "kupu-list-dl-addbutton", editor,"title title_deflist;");
                     writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup", null);
                     writer.writeAttribute(HTML.ID_ATTR, "kupu-bg-indent", null);
-                        writeButton(writer, "kupu-outdent", "outdent: alt-<", "<", editor);
-                        writeButton(writer, "kupu-indent", "indent: alt->", ">", editor);
+                        writeButton(writer, "kupu-outdent", "Decrease quote level: Access key (Alt or Ctrl) + <", "<", editor,"title title_decrease_quote;");
+                        writeButton(writer, "kupu-indent", "Increase quote level: Access key (Alt or Ctrl) + >", ">", editor,"title title_increase_quote;");
                     writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
@@ -537,24 +552,25 @@ public class InputHtmlRenderer extends H
                     if( ! editor.isAllowExternalLinks() ){
                         writer.writeAttribute(HTML.STYLE_ATTR, "display: none", null);
                     }
-                        writeButton(writer, "kupu-image", "image", null, "kupu-imagelibdrawer-button", false, editor); // TODO : Enable
-                        writeButton(writer, "kupu-inthyperlink", "link", null, "kupu-linklibdrawer-button", false, editor); // TODO : Enable
-                        writeButton(writer, "kupu-exthyperlink", "external link", null, "kupu-linkdrawer-button", editor);
-                        writeButton(writer, "kupu-table", "table", null, "kupu-tabledrawer-button", editor);
+                        writeButton(writer, "kupu-image", "Insert image", null, "kupu-imagelibdrawer-button", false, editor,"title title_insert_image;"); // TODO : Enable
+                        writeButton(writer, "kupu-inthyperlink", "Insert internal link", null, "kupu-linklibdrawer-button", false, editor,"title title_insert_internal_link;"); // TODO : Enable
+                        writeButton(writer, "kupu-exthyperlink", "Insert external link", null, "kupu-linkdrawer-button", editor,"title title_insert_external_link;");
+                        writeButton(writer, "kupu-anchors", "Insert anchors", null, "kupu-anchors", editor,"title title_insert_anchors;");
+                        writeButton(writer, "kupu-table", "Insert table", null, "kupu-tabledrawer-button", editor,"title title_insert_table;");
                     writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup", null);
                     writer.writeAttribute(HTML.ID_ATTR, "kupu-bg-remove", null);
-                        writeButton(writer, "kupu-removeimage invisible", "Remove image", null, "kupu-removeimage-button", editor);
-                        writeButton(writer, "kupu-removelink invisible", "Remove link", null, "kupu-removelink-button", editor);
+                        writeButton(writer, "kupu-removeimage invisible", "Remove image", null, "kupu-removeimage-button", editor,"title title_removeimage;");
+                        writeButton(writer, "kupu-removelink invisible", "Remove link", null, "kupu-removelink-button", editor,"title title_removelink;");
                     writer.endElement(HTML.SPAN_ELEM);
 
                        writer.startElement(HTML.SPAN_ELEM,editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup", null);
                     writer.writeAttribute(HTML.ID_ATTR, "kupu-bg-undo", null);
-                        writeButton(writer, "kupu-undo", "undo: alt-z", "z", editor);
-                        writeButton(writer, "kupu-redo", "redo: alt-y", "y", editor);
+                        writeButton(writer, "kupu-undo", "Undo: Access key (Alt or Ctrl) + Z", "z", editor,"title title_undo;");
+                        writeButton(writer, "kupu-redo", "Redo: Access key (Alt or Ctrl) + Y", "y", editor,"title title_redo;");
                     writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
@@ -563,7 +579,7 @@ public class InputHtmlRenderer extends H
                     //if( ! editor.isAllowEditSource() ){
                         writer.writeAttribute(HTML.STYLE_ATTR, "display: none", null);
                     //}
-                        writeButton(writer, "kupu-spellchecker", "check spelling", null, editor);
+                        writeButton(writer, "kupu-spellchecker", "Check spelling", null, editor,"title title_check_spelling;");
                      writer.endElement(HTML.SPAN_ELEM);
 
                     writer.startElement(HTML.SPAN_ELEM,editor);
@@ -572,7 +588,7 @@ public class InputHtmlRenderer extends H
                     if( ! editor.isAllowEditSource() ){
                         writer.writeAttribute(HTML.STYLE_ATTR, "display: none", null);
                     }
-                        writeButton(writer, "kupu-source", "edit HTML code", "h", editor);
+                        writeButton(writer, "kupu-source", "Switch between visual editor and HTML view", "h", editor,"title toggle_source_view;");
                      writer.endElement(HTML.SPAN_ELEM);
 
                 writer.endElement(HTML.SPAN_ELEM); // kupu-tb-buttons
@@ -598,7 +614,16 @@ public class InputHtmlRenderer extends H
 
                  writer.startElement(HTML.DIV_ELEM,editor);
                  writer.writeAttribute(HTML.STYLE_ATTR, "display:block;", null);
-                   writer.writeAttribute(HTML.CLASS_ATTR, "kupu-librarydrawer-parent", null);
+                 writer.writeAttribute(HTML.CLASS_ATTR, "kupu-librarydrawer-parent", null);
+
+                     writer.startElement(HTML.IFRAME_ELEM,editor);
+                     writer.writeAttribute(HTML.STYLE_ATTR,"display:none",null);
+                     writer.writeAttribute(HTML.CLASS_ATTR,"kupu-anchorframe",null);
+                     writer.writeAttribute("src","javascript:''",null);
+                     writer.writeAttribute("scrolling","auto",null);
+                     writer.writeAttribute("frameborder","1",null);
+                     writer.endElement(HTML.IFRAME_ELEM);
+
                  writer.endElement(HTML.DIV_ELEM);
 
                 // External Link drawer
@@ -606,25 +631,61 @@ public class InputHtmlRenderer extends H
                  writer.writeAttribute(HTML.ID_ATTR, "kupu-linkdrawer", null);
                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-drawer kupu-linkdrawer", null);
                      writer.startElement(HTML.H1_ELEM,editor);
-                     writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
-                     writer.writeAttribute("i18n:translate", "", null);
+                     writer.writeAttribute(HTML.CLASS_ATTR,"kupu-drawer-title",null);
+                     
+                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"title_external_link", null);
                          writer.write("External Link");
                      writer.endElement(HTML.H1_ELEM);
                      writer.startElement(HTML.DIV_ELEM,editor);
                      writer.writeAttribute(HTML.ID_ATTR, "kupu-linkdrawer-addlink", null);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-panels kupu-linkdrawer-addlink", null);
+                    
+                        writer.startElement(HTML.UL_ELEM,editor);
+                        writer.writeAttribute(HTML.CLASS_ATTR,"kupu-tabs",null);
+    
+                            writer.startElement(HTML.LI_ELEM,editor);
+                            writer.writeAttribute(HTML.CLASS_ATTR,"kupu-linkdrawer-addlink selected",null);
+                                writer.startElement(HTML.ANCHOR_ELEM,editor);
+                                writer.writeAttribute("href","#",null);
+                                
+                                writer.writeAttribute(I18N_TRANSLATE_ATTR,"tab_link",null);
+                                writer.writeAttribute("shape","rect",null);
+                                writer.write("Link to url");
+                                writer.endElement(HTML.ANCHOR_ELEM);
+                            writer.endElement(HTML.LI_ELEM);
+                            
+                            writer.startElement(HTML.LI_ELEM,editor);
+                            writer.writeAttribute(HTML.CLASS_ATTR,"kupu-linkdrawer-embed",null);
+
+                                writer.startElement(HTML.ANCHOR_ELEM,editor);
+                                writer.writeAttribute("href","#",null);
+                                
+                                writer.writeAttribute(I18N_TRANSLATE_ATTR,"tab_embed",null);
+                                writer.writeAttribute("shape","rect",null);
+                                writer.write("Embed external object");
+                                writer.endElement(HTML.ANCHOR_ELEM);
+                            writer.endElement(HTML.LI_ELEM);
+    
+                        writer.endElement(HTML.UL_ELEM); 
+                    
                          writer.startElement(HTML.TABLE_ELEM,editor);
-                         writer.writeAttribute(HTML.CELLSPACING_ATTR, "0", null);
+                         writer.writeAttribute(HTML.CLASS_ATTR,"kupu-tabbed",null);
+                           writer.startElement(HTML.TBODY_ELEM,editor);
+                           writer.writeAttribute(HTML.CLASS_ATTR,"kupu-addlink",null);
+                                                                          
                              writer.startElement(HTML.TR_ELEM,editor);
                                  writer.startElement(HTML.TD_ELEM,editor);
+                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                     writer.startElement(HTML.DIV_ELEM,editor);
-                                    writer.writeAttribute(HTML.ID_ATTR, "kupu-toolbox-label", null);
+                                    writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
                                         writer.startElement(HTML.SPAN_ELEM,editor);
-                                             writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
-                                             writer.writeAttribute("i18n:translate", "items-matching-keyword", null);
-                                                 writer.write("Link the highlighted text to this URL:");
+                                             
+                                             writer.writeAttribute(I18N_TRANSLATE_ATTR,"label_link_text",null);
+                                             writer.write("Link the highlighted text to this URL:");
                                          writer.endElement(HTML.SPAN_ELEM);
                                     writer.endElement(HTML.DIV_ELEM);
+                                    
                                     writer.startElement(HTML.INPUT_ELEM,editor);
                                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-st kupu-linkdrawer-input", null);
                                     writer.writeAttribute(HTML.TYPE_ATTR, "text", null);
@@ -633,42 +694,129 @@ public class InputHtmlRenderer extends H
                                 writer.endElement(HTML.TD_ELEM);
                                 writer.startElement(HTML.TD_ELEM,null);
                                 writer.writeAttribute(HTML.CLASS_ATTR, "kupu-preview-button", null);
+                                writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                     writer.startElement(HTML.BUTTON_ELEM,editor);
                                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
+                                    writer.writeAttribute(HTML.ID_ATTR,"linkdrawer-preview",null);
                                     writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.current_drawer.preview()", null);
-                                        writer.write("Preview");
+                                    
+                                    writer.writeAttribute(I18N_TRANSLATE_ATTR,"button_preview",null);
+                                    writer.write("Preview");
                                     writer.endElement(HTML.BUTTON_ELEM);
                                 writer.endElement(HTML.TD_ELEM);
                              writer.endElement(HTML.TR_ELEM);
                             writer.startElement(HTML.TR_ELEM,editor);
+                            writer.writeAttribute(HTML.CLASS_ATTR,"kupu-linkdrawer-anchors",null);
+                            writer.writeAttribute(HTML.STYLE_ATTR,"display:none",null);
+
                                 writer.startElement(HTML.TD_ELEM,editor);
                                 writer.writeAttribute(HTML.COLSPAN_ATTR, "2", null);
+                                writer.writeAttribute(ROWSPAN_ATTR,"1",null);
+                                
+                                    writer.startElement(HTML.LABEL_ATTR,editor);
+                                    
+                                    writer.writeAttribute(I18N_TRANSLATE_ATTR,"label_anchor",null);
+                                    writer.writeAttribute("for","anchorselect",null);
+                                    writer.write("Anchor");
+                                    writer.endElement(HTML.LABEL_ATTR);
+                                    writer.startElement(HTML.SELECT_ELEM,editor);
+                                    writer.writeAttribute(HTML.ID_ATTR,"anchorselect",null);
+                                        writer.startElement(HTML.OPTION_ELEM,editor);
+                                        
+                                        writer.writeAttribute(I18N_TRANSLATE_ATTR,"opt_top_of_page",null);
+                                        writer.writeAttribute(HTML.VALUE_ATTR,"",null);
+                                        writer.write("top of page (default)");
+                                        writer.endElement(HTML.OPTION_ELEM);
+                                    writer.endElement(HTML.SELECT_ELEM);
+                            
+                                writer.endElement(HTML.TD_ELEM);
+                        
+                            writer.endElement(HTML.TR_ELEM);
+
+                             writer.startElement(HTML.TR_ELEM,editor);
+                                writer.startElement(HTML.TD_ELEM,editor);
+                                writer.writeAttribute(HTML.COLSPAN_ATTR,"2",null);
                                 writer.writeAttribute(HTML.ALIGN_ATTR, "center", null);
+                                writer.writeAttribute(ROWSPAN_ATTR,"1",null);
+                                    writer.startElement(HTML.DIV_ELEM,editor);
+                                    writer.writeAttribute(HTML.CLASS_ATTR,"watermark",null);
+                                        writer.startElement(HTML.SPAN_ELEM,editor);
+                                        
+                                        writer.writeAttribute(I18N_TRANSLATE_ATTR,"watermark_preview",null);
+                                        writer.write("Preview");
+                                        writer.endElement(HTML.SPAN_ELEM);
+                                    writer.endElement(HTML.DIV_ELEM);
                                     writer.startElement(HTML.IFRAME_ELEM,editor);
                                     writer.writeAttribute(HTML.FRAMEBORDER_ATTR, "1", null);
                                     writer.writeAttribute(HTML.SCROLLING_ATTR, "auto", null);
                                     writer.writeAttribute(HTML.WIDTH_ATTR, "440", null);
                                     writer.writeAttribute(HTML.HEIGHT_ATTR, "198", null);
                                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-linkdrawer-preview", null);
-                                    writer.writeAttribute(HTML.SRC_ATTR, addResource.getResourceUri(context, InputHtmlRenderer.class, "kupublank.html"), null);
+                                    // addResource.getResourceUri(context, InputHtmlRenderer.class, "kupublank.html")
+                                    writer.writeAttribute(HTML.SRC_ATTR, "javascript:''", null);
                                     writer.endElement(HTML.IFRAME_ELEM);
                                 writer.endElement(HTML.TD_ELEM);
-                            writer.endElement(HTML.TR_ELEM);
+                             writer.endElement(HTML.TR_ELEM);
+                           writer.endElement(HTML.TBODY_ELEM);
+                           
+                           writer.startElement(HTML.TBODY_ELEM,editor);
+                           writer.writeAttribute(HTML.CLASS_ATTR,"kupu-embed",null);
+                               writer.startElement(HTML.TR_ELEM,editor);
+                                   writer.startElement(HTML.TD_ELEM,editor);
+                                   writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                   writer.writeAttribute(ROWSPAN_ATTR,"1",null);
+                                       writer.startElement(HTML.DIV_ELEM,editor);
+                                       writer.writeAttribute(HTML.CLASS_ATTR,"kupu-toolbox-label",null);
+                                           writer.startElement(HTML.SPAN_ELEM,editor);
+                                           
+                                           writer.writeAttribute(I18N_TRANSLATE_ATTR,"help_paste_here",null);
+                                           writer.write("Paste &lt;object&gt; or &lt;embed&gt; tag here:");
+                                           writer.endElement(HTML.SPAN_ELEM);
+                                       writer.endElement(HTML.DIV_ELEM);
+                                       writer.startElement(HTML.TEXTAREA_ELEM,editor);
+                                       writer.writeAttribute(HTML.CLASS_ATTR,"kupu-toolbox-st kupu-embed-input",null);
+                                       
+                                       writer.writeAttribute(I18N_TRANSLATE_ATTR,"placeholder_html_code",null);
+                                       writer.write("[insert arbitrary HTML code here]");
+                                       writer.endElement(HTML.TEXTAREA_ELEM);
+                                   writer.endElement(HTML.TD_ELEM);
+                               writer.endElement(HTML.TR_ELEM);
+                               writer.startElement(HTML.TR_ELEM,editor);
+                                   writer.startElement(HTML.TD_ELEM,editor);
+                                   
+                                   writer.writeAttribute(I18N_TRANSLATE_ATTR,"custom_html_help",null);
+                                   writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                   writer.writeAttribute(ROWSPAN_ATTR,"1",null);
+                                   writer.write("You may use this box to insert custom snippets of");
+                                   writer.write("HTML code. There is no guarantee that any code");
+                                   writer.write("inserted in this way will be preserved when you save");
+                                   writer.write("your edits. To select an existing object from IE click on");
+                                   writer.write("the border, from Firefox double click it.");
+                                   writer.endElement(HTML.TD_ELEM);
+                               writer.endElement(HTML.TR_ELEM);
+                           writer.endElement(HTML.TBODY_ELEM);
                          writer.endElement(HTML.TABLE_ELEM);
 
                          writer.startElement(HTML.DIV_ELEM,editor);
                          writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialogbuttons", null);
                              writer.startElement(HTML.BUTTON_ELEM,editor);
-                             writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
+
                              writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
+                             writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
                              writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.current_drawer.save()", null);
+                             
+                             writer.writeAttribute(I18N_TRANSLATE_ATTR,"button_ok",null);
                                  writer.write("Ok");
                              writer.endElement(HTML.BUTTON_ELEM);
                              writer.startElement(HTML.BUTTON_ELEM,editor);
-                             writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
+
                              writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
+                             writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
                              writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.closeDrawer()", null);
+                             
+                             writer.writeAttribute(I18N_TRANSLATE_ATTR,"button_cancel",null);
                                  writer.write("Cancel");
                              writer.endElement(HTML.BUTTON_ELEM);
                          writer.endElement(HTML.DIV_ELEM);
@@ -680,6 +828,9 @@ public class InputHtmlRenderer extends H
                  writer.writeAttribute(HTML.ID_ATTR, "kupu-tabledrawer",null);
                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-drawer kupu-tabledrawer",null);
                      writer.startElement(HTML.H1_ELEM,editor);
+                     writer.writeAttribute(HTML.CLASS_ATTR,"kupu-drawer-title",null);
+                     
+                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_title",null);
                          writer.write("Table");
                     writer.endElement(HTML.H1_ELEM);
                     writer.startElement(HTML.DIV_ELEM,editor);
@@ -690,32 +841,46 @@ public class InputHtmlRenderer extends H
                             writer.writeAttribute(HTML.CLASS_ATTR, "kupu-panelsrow",null);
                                 writer.startElement(HTML.TD_ELEM,editor);
                                 writer.writeAttribute(HTML.CLASS_ATTR, "kupu-panel",null);
+                                writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                writer.writeAttribute(ROWSPAN_ATTR,"1",null);
 
                                     writer.startElement(HTML.DIV_ELEM,editor);
                                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tabledrawer-addtable", null);
                                         writer.startElement(HTML.TABLE_ELEM,editor);
                                              writer.startElement(HTML.TR_ELEM,editor);
                                                  writer.startElement(HTML.TH_ELEM,editor);
+                                                 
+                                                 writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_class_label",null);
                                                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.write("Table Class");
                                                  writer.endElement(HTML.TH_ELEM);
                                                  writer.startElement(HTML.TD_ELEM,editor);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.startElement(HTML.SELECT_ELEM,editor);
                                                      writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tabledrawer-addclasschooser", null);
-                                                         writeOption(writer, "plain", "Plain", editor);
-                                                         writeOption(writer, "listing", "Listing", editor);
-                                                         writeOption(writer, "grid", "Grid", editor);
-                                                         writeOption(writer, "data", "Data", editor);
+                                                         writeOption(writer, "plain", "Plain", "Plain", editor);
+                                                         writeOption(writer, "listing","Listing" , "Listing", editor);
+                                                         writeOption(writer, "grid", "Grid", "Grid", editor);
+                                                         writeOption(writer, "data", "Data", "Data", editor);
                                                      writer.endElement(HTML.SELECT_ELEM);
                                                  writer.endElement(HTML.TD_ELEM);
                                              writer.endElement(HTML.TR_ELEM);
 
                                              writer.startElement(HTML.TR_ELEM, editor);
                                                  writer.startElement(HTML.TH_ELEM,editor);
+                                                 
+                                                 writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_rows_label",null);
                                                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);                                                 
                                                      writer.write("Rows");
                                                  writer.endElement(HTML.TH_ELEM);
                                                  writer.startElement(HTML.TD_ELEM, editor);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.startElement(HTML.INPUT_ELEM, editor);
                                                      writer.writeAttribute(HTML.TYPE_ATTR, "text", null);
                                                      writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tabledrawer-newrows", null);
@@ -727,10 +892,16 @@ public class InputHtmlRenderer extends H
 
                                              writer.startElement(HTML.TR_ELEM, editor);
                                                  writer.startElement(HTML.TH_ELEM,editor);
+                                                 
+                                                 writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_columns_label",null);
                                                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);                                                 
                                                      writer.write("Columns");
                                                  writer.endElement(HTML.TH_ELEM);
                                                  writer.startElement(HTML.TD_ELEM, editor);
+                                                     writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                     writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.startElement(HTML.INPUT_ELEM, editor);
                                                      writer.writeAttribute(HTML.TYPE_ATTR, "text", null);
                                                      writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tabledrawer-newcols", null);
@@ -743,38 +914,53 @@ public class InputHtmlRenderer extends H
                                              writer.startElement(HTML.TR_ELEM, editor);
                                                  writer.startElement(HTML.TH_ELEM,editor);
                                                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                  writer.endElement(HTML.TH_ELEM);
                                                  writer.startElement(HTML.TD_ELEM, editor);
-                                                     writer.startElement(HTML.LABEL_ELEM, editor);
-                                                         writer.startElement(HTML.INPUT_ELEM, editor);
-                                                         writer.writeAttribute(HTML.TYPE_ATTR, "checkbox", null);
-                                                         writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tabledrawer-makeheader", null);
-                                                         writer.writeAttribute(HTML.ONKEYPRESS_ATTR, "return HandleDrawerEnter(event);", null);
-                                                         writer.endElement(HTML.INPUT_ELEM);
-                                                         writer.startElement(HTML.SPAN_ELEM, editor);
-                                                             writer.write("Create Headings");
-                                                         writer.endElement(HTML.SPAN_ELEM);
-                                                     writer.endElement(HTML.LABEL_ELEM);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
+                                                     writer.startElement(HTML.INPUT_ELEM,editor);
+                                                     writer.writeAttribute(HTML.CLASS_ATTR,"kupu-tabledrawer-makeheader",null);
+                                                     writer.writeAttribute(HTML.TYPE_ATTR,"checkbox",null);
+                                                     writer.writeAttribute("checked","checked",null);
+                                                     writer.writeAttribute(HTML.ONKEYPRESS_ATTR,"return HandleDrawerEnter(event);",null);
+                                                     writer.writeAttribute(HTML.ID_ATTR,"tabledrawer_makeheader",null);
+                                                     writer.endElement(HTML.INPUT_ELEM);
+                                                     writer.startElement(HTML.LABEL_ATTR,editor);
+                                                     
+                                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_headings_label",null);
+                                                     writer.writeAttribute("for","tabledrawer_makeheader",null);
+                                                         writer.write("Create Headings");
+                                                     writer.endElement(HTML.LABEL_ATTR);
                                                  writer.endElement(HTML.TD_ELEM);
                                              writer.endElement(HTML.TR_ELEM);
 
                                              writer.startElement(HTML.TR_ELEM, editor);
                                                  writer.startElement(HTML.TH_ELEM,editor);
                                                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                  writer.endElement(HTML.TH_ELEM);
                                                  writer.startElement(HTML.TD_ELEM, editor);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.startElement(HTML.BUTTON_ELEM, editor);
+                                                     writer.writeAttribute(HTML.CLASS_ATTR,"kupu-dialog-button",null);
                                                      writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
-                                                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
+                                                     
+                                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_add_table_button",null);
                                                      writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.current_drawer.createTable()", null);
                                                          writer.write("Add Table");
                                                      writer.endElement(HTML.BUTTON_ELEM);
                                                      writer.startElement(HTML.BUTTON_ELEM, editor);
-                                                    writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
-                                                    writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
-                                                    writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.current_drawer.fixAllTables()", null);
+                                                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
+                                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
+                                                     
+                                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_fix_tables_button",null);
+                                                     writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.current_drawer.fixAllTables()", null);
                                                         writer.write("Fix All Tables");
-                                                    writer.endElement(HTML.BUTTON_ELEM);
+                                                     writer.endElement(HTML.BUTTON_ELEM);
                                                  writer.endElement(HTML.TD_ELEM);
                                              writer.endElement(HTML.TR_ELEM);
 
@@ -787,16 +973,21 @@ public class InputHtmlRenderer extends H
                                              writer.startElement(HTML.TR_ELEM,editor);
                                                  writer.startElement(HTML.TH_ELEM,editor);
                                                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                                                 writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_class_label",null);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.write("Table Class");
                                                  writer.endElement(HTML.TH_ELEM);
                                                  writer.startElement(HTML.TD_ELEM,editor);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.startElement(HTML.SELECT_ELEM,editor);
                                                      writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tabledrawer-editclasschooser", null);
                                                      writer.writeAttribute(HTML.ONCHANGE_ATTR, "drawertool.current_drawer.setTableClass(this.options[this.selectedIndex].value)", null);
-                                                         writeOption(writer, "plain", "Plain", editor);
-                                                         writeOption(writer, "listing", "Listing", editor);
-                                                         writeOption(writer, "grid", "Grid", editor);
-                                                         writeOption(writer, "data", "Data", editor);
+                                                         writeOption(writer, "plain", "Plain", "Plain", editor);
+                                                         writeOption(writer, "listing", "Listing", "Listing", editor);
+                                                         writeOption(writer, "grid", "Grid", "Grid", editor);
+                                                         writeOption(writer, "data", "Data", "Data", editor);
                                                      writer.endElement(HTML.SELECT_ELEM);
                                                  writer.endElement(HTML.TD_ELEM);
                                              writer.endElement(HTML.TR_ELEM);
@@ -804,15 +995,21 @@ public class InputHtmlRenderer extends H
                                              writer.startElement(HTML.TR_ELEM,editor);
                                                  writer.startElement(HTML.TH_ELEM,editor);
                                                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                                                 writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_alignment_label",null);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.write("Current column alignment");
                                                  writer.endElement(HTML.TH_ELEM);
                                                  writer.startElement(HTML.TD_ELEM,editor);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.startElement(HTML.SELECT_ELEM,editor);
+                                                     writer.writeAttribute(HTML.ID_ATTR,"kupu-tabledrawer-alignchooser",null);
                                                      writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tabledrawer-alignchooser", null);
                                                      writer.writeAttribute(HTML.ONCHANGE_ATTR, "drawertool.current_drawer.tool.setColumnAlign(this.options[this.selectedIndex].value)", null);
-                                                     writeOption(writer, "left", "Left", editor);
-                                                     writeOption(writer, "center", "Center", editor);
-                                                     writeOption(writer, "right", "Right", editor);
+                                                     writeOption(writer, "left", "tabledrawer_left_option", "Left", editor);
+                                                     writeOption(writer, "center", "tabledrawer_center_option", "Center", editor);
+                                                     writeOption(writer, "right", "tabledrawer_right_option", "Right", editor);
                                                      writer.endElement(HTML.SELECT_ELEM);
                                                  writer.endElement(HTML.TD_ELEM);
                                              writer.endElement(HTML.TR_ELEM);
@@ -820,18 +1017,25 @@ public class InputHtmlRenderer extends H
                                              writer.startElement(HTML.TR_ELEM,editor);
                                                  writer.startElement(HTML.TH_ELEM,editor);
                                                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                                                 writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_column_label",null);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.write("Column");
                                                  writer.endElement(HTML.TH_ELEM);
                                                  writer.startElement(HTML.TD_ELEM,editor);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.startElement(HTML.BUTTON_ELEM, editor);
-                                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
                                                      writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
+                                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
+                                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_add_button",null);
                                                      writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.current_drawer.addTableColumn()", null);
                                                          writer.write("Add");
                                                      writer.endElement(HTML.BUTTON_ELEM);
                                                      writer.startElement(HTML.BUTTON_ELEM, editor);
-                                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
                                                      writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
+                                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
+                                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_remove_button",null);
                                                      writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.current_drawer.delTableColumn()", null);
                                                          writer.write("Remove");
                                                      writer.endElement(HTML.BUTTON_ELEM);
@@ -841,18 +1045,25 @@ public class InputHtmlRenderer extends H
                                              writer.startElement(HTML.TR_ELEM,editor);
                                                  writer.startElement(HTML.TH_ELEM,editor);
                                                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                                                 writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_row_label",null);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.write("Row");
                                                  writer.endElement(HTML.TH_ELEM);
                                                  writer.startElement(HTML.TD_ELEM,editor);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.startElement(HTML.BUTTON_ELEM, editor);
-                                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
                                                      writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
+                                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
+                                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_add_button",null);
                                                      writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.current_drawer.addTableRow()", null);
                                                          writer.write("Add");
                                                      writer.endElement(HTML.BUTTON_ELEM);
                                                      writer.startElement(HTML.BUTTON_ELEM, editor);
-                                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
                                                      writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
+                                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
+                                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_remove_button",null);
                                                      writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.current_drawer.delTableRow()", null);
                                                          writer.write("Remove");
                                                      writer.endElement(HTML.BUTTON_ELEM);
@@ -862,15 +1073,28 @@ public class InputHtmlRenderer extends H
                                              writer.startElement(HTML.TR_ELEM,editor);
                                                  writer.startElement(HTML.TH_ELEM,editor);
                                                  writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                                                 writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_table_label",null);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.write("Fix Table");
                                                  writer.endElement(HTML.TH_ELEM);
                                                  writer.startElement(HTML.TD_ELEM,editor);
+                                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
                                                      writer.startElement(HTML.BUTTON_ELEM, editor);
-                                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
                                                      writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
+                                                     writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
+                                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_fix_button",null);
                                                      writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.current_drawer.fixTable()", null);
                                                          writer.write("Fix");
                                                      writer.endElement(HTML.BUTTON_ELEM);
+                                                     writer.startElement(HTML.BUTTON_ELEM,editor);
+                                                     writer.writeAttribute(HTML.CLASS_ATTR,"kupu-dialog-button",null);
+                                                     writer.writeAttribute(HTML.TYPE_ATTR,"button",null);
+                                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_remove_button",null);
+                                                     writer.writeAttribute(HTML.ONCLICK_ATTR,"drawertool.current_drawer.delTable()",null);
+                                                     writer.write("Remove");
+                                                     writer.endElement(HTML.BUTTON_ELEM);
                                                  writer.endElement(HTML.TD_ELEM);
                                              writer.endElement(HTML.TR_ELEM);
 
@@ -883,17 +1107,247 @@ public class InputHtmlRenderer extends H
                         writer.startElement(HTML.DIV_ELEM,editor);
                         writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialogbuttons", null);
                             writer.startElement(HTML.BUTTON_ELEM,editor);
-                            writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
                             writer.writeAttribute(HTML.CLASS_ATTR, "kupu-dialog-button", null);
-                            writer.writeAttribute(HTML.ONMOUSEDOWN_ATTR, "window.status ='onmousedown';", null);
+                            writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
+                            writer.writeAttribute(I18N_TRANSLATE_ATTR,"tabledrawer_close_button",null);
                             writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.closeDrawer(this)", null);
-                            writer.writeAttribute(HTML.ONFOCUS_ATTR, "window.status='focus';", null);
                                 writer.write("Close");
                             writer.endElement(HTML.BUTTON_ELEM);
                         writer.endElement(HTML.DIV_ELEM);
                     writer.endElement(HTML.DIV_ELEM);
                  writer.endElement(HTML.DIV_ELEM); // kupu-tabledrawer
+                 
+                 writer.startElement(HTML.DIV_ELEM,editor); //kupu-anchordrawer
+                 writer.writeAttribute(HTML.ID_ATTR,"kupu-anchordrawer",null);
+                 writer.writeAttribute(HTML.CLASS_ATTR,"kupu-drawer kupu-anchordrawer",null);
 
+                     writer.startElement(HTML.H1_ELEM,editor);
+                     writer.writeAttribute(HTML.CLASS_ATTR,"kupu-drawer-title",null);
+                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"anchordrawer_title",null);
+                     writer.write("Anchors");
+                     writer.endElement(HTML.H1_ELEM);
+
+                     writer.startElement(HTML.DIV_ELEM,editor);
+                     writer.writeAttribute(HTML.CLASS_ATTR,"kupu-panels kupu-ins-bm",null);
+                     
+                         writer.startElement(HTML.UL_ELEM,editor);
+                         writer.writeAttribute(HTML.CLASS_ATTR,"kupu-tabs",null);
+                         
+                             writer.startElement(HTML.LI_ELEM,editor);
+                             writer.writeAttribute(HTML.CLASS_ATTR,"kupu-ins-bm selected",null);
+                                 writer.startElement(HTML.ANCHOR_ELEM,editor);
+                                 writer.writeAttribute("href","#",null);
+                                 writer.writeAttribute(I18N_TRANSLATE_ATTR,"tab_link_anchor",null);
+                                 writer.writeAttribute("shape","rect",null);
+                                 writer.write("Link to anchor");
+                                 writer.endElement(HTML.ANCHOR_ELEM);
+                             writer.endElement(HTML.LI_ELEM);
+                         
+                             writer.startElement(HTML.LI_ELEM,editor);
+                             writer.writeAttribute(HTML.CLASS_ATTR,"kupu-anchor",null);
+                                 writer.startElement(HTML.ANCHOR_ELEM,editor);
+                                 writer.writeAttribute("href","#",null);
+                                 writer.writeAttribute(I18N_TRANSLATE_ATTR,"tab_manage_anchors",null);
+                                 writer.writeAttribute("shape","rect",null);
+                                 writer.write("Manage Anchors");
+                                 writer.endElement(HTML.ANCHOR_ELEM);
+                             writer.endElement(HTML.LI_ELEM);
+                         
+                             writer.startElement(HTML.LI_ELEM,editor);
+                             writer.writeAttribute(HTML.CLASS_ATTR,"kupu-toc",null);
+                                 writer.startElement(HTML.ANCHOR_ELEM,editor);
+                                 writer.writeAttribute("href","#",null);
+                                 writer.writeAttribute(I18N_TRANSLATE_ATTR,"tab_toc",null);
+                                 writer.writeAttribute("shape","rect",null);
+                                 writer.write("Table of contents");
+                                 writer.endElement(HTML.ANCHOR_ELEM);
+                             writer.endElement(HTML.LI_ELEM);
+                         
+                         writer.endElement(HTML.UL_ELEM);
+                     
+                         writer.startElement(HTML.TABLE_ELEM,editor);
+                         writer.writeAttribute(HTML.CLASS_ATTR,"kupu-tabbed",null);
+                         writer.writeAttribute("cellspacing","0",null);
+                         
+                             writer.startElement(HTML.TR_ELEM,editor);
+                             
+                                 writer.startElement(HTML.TD_ELEM,editor);
+                                 writer.writeAttribute(HTML.CLASS_ATTR,"kupu-bm-select",null);
+                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
+                                 
+                                     writer.startElement(HTML.SELECT_ELEM,editor);
+                                     writer.writeAttribute(HTML.ID_ATTR,"kupu-bm-sel1",null);
+                                     writer.writeAttribute("size","10",null);
+                                     
+                                     writer.endElement(HTML.SELECT_ELEM);
+                                 
+                                 writer.endElement(HTML.TD_ELEM);
+                             
+                                 writer.startElement(HTML.TD_ELEM,editor);
+                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
+                                 
+                                 writer.startElement(HTML.DIV_ELEM,editor);
+                                 writer.writeAttribute(HTML.CLASS_ATTR,"kupu-bm-heading",null);
+                                 
+                                     writer.startElement(HTML.DIV_ELEM,editor);
+                                     writer.writeAttribute(HTML.CLASS_ATTR,"kupu-bm-tablestyle invis-ins-bm invis-anchor",null);
+                                     
+                                         writer.startElement(HTML.LABEL_ATTR,editor);
+                                         writer.writeAttribute(I18N_TRANSLATE_ATTR,"label_table_style",null);
+                                         writer.writeAttribute("for","kupu-bm-outcls",null);
+                                         writer.write("Table style");
+                                         
+                                         writer.endElement(HTML.LABEL_ATTR);
+                                         
+                                         writer.startElement(HTML.SELECT_ELEM,editor);
+                                         writer.writeAttribute(HTML.ID_ATTR,"kupu-bm-outcls",null);
+                                         writer.writeAttribute("size","1",null);
+                                         
+                                         writer.startElement(HTML.OPTION_ELEM,editor);
+                                         writer.writeAttribute(HTML.VALUE_ATTR,"",null);
+                                         writer.writeAttribute(I18N_TRANSLATE_ATTR,"Normal",null);
+                                         writer.write("Normal paragraph");
+                                         writer.endElement(HTML.OPTION_ELEM);
+                                         
+                                         writer.endElement(HTML.SELECT_ELEM);
+                                         
+                                     writer.endElement(HTML.DIV_ELEM);
+                                 
+                                     writer.startElement(HTML.DIV_ELEM,editor);
+                                     writer.writeAttribute(HTML.CLASS_ATTR,"kupu-bm-numbering invis-ins-bm invis-anchor",null);
+                                     
+                                         writer.startElement(HTML.LABEL_ATTR,editor);
+                                         writer.writeAttribute(I18N_TRANSLATE_ATTR,"label_numbering",null);
+                                         writer.writeAttribute("for","kupu-bm-number",null);
+                                         writer.write("Numbering");
+                                         
+                                         writer.endElement(HTML.LABEL_ATTR);
+                                     
+                                         writer.startElement(HTML.INPUT_ELEM,editor);
+                                         writer.writeAttribute(HTML.TYPE_ATTR,"checkbox",null);
+                                         writer.writeAttribute(HTML.CLASS_ATTR,"hide-ins-bm hide-anchor",null);
+                                         writer.writeAttribute("checked","checked",null);
+                                         writer.writeAttribute(HTML.ID_ATTR,"kupu-bm-number",null);
+                                         writer.endElement(HTML.INPUT_ELEM);
+                                     
+                                     writer.endElement(HTML.DIV_ELEM);
+                                 
+                                     writer.startElement(HTML.DIV_ELEM,editor);
+                                     writer.writeAttribute(HTML.CLASS_ATTR,"invis-ins-bm",null);
+                                     
+                                         writer.startElement(HTML.LABEL_ATTR,editor);
+                                         writer.writeAttribute("for","kupu-bm-checkall",null);
+                                         
+                                         writer.startElement("em",editor);
+                                         writer.writeAttribute(I18N_TRANSLATE_ATTR,"label_toggle_all",null);
+                                         writer.write("toggle all");
+                                         writer.endElement("em");
+                                         
+                                         writer.endElement(HTML.LABEL_ATTR);
+                                         
+                                         writer.startElement(HTML.INPUT_ELEM,editor);
+                                         writer.writeAttribute(HTML.TYPE_ATTR,"checkbox",null);
+                                         writer.writeAttribute(HTML.CLASS_ATTR,"hide-ins-bm",null);
+                                         writer.writeAttribute("checked","checked",null);
+                                         writer.writeAttribute(HTML.ID_ATTR,"kupu-bm-checkall",null);
+                                         writer.endElement(HTML.INPUT_ELEM);
+                                     
+                                     writer.endElement(HTML.DIV_ELEM);
+                                     
+                                 writer.endElement(HTML.DIV_ELEM);
+                                 
+                                 writer.startElement(HTML.DIV_ELEM,editor);
+                                 writer.writeAttribute(HTML.CLASS_ATTR,"kupu-bm-paras",null);
+                                 writer.write("&#160;");
+                                 writer.endElement(HTML.DIV_ELEM);
+                                 
+                                 writer.endElement(HTML.TD_ELEM);
+                                 
+                             writer.endElement(HTML.TR_ELEM);
+                             
+                             writer.startElement(HTML.TR_ELEM,editor);
+                             
+                                 writer.startElement(HTML.TD_ELEM,editor);
+                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
+                                 
+                                     writer.startElement(HTML.SELECT_ELEM,editor);
+                                     writer.writeAttribute(HTML.ID_ATTR,"kupu-bm-sel2",null);
+                                     writer.writeAttribute("size","1",null);
+                                     writer.writeAttribute(HTML.CLASS_ATTR,"hide-ins-bm hide-anchor",null);
+                                     
+                                         writer.startElement(HTML.OPTION_ELEM,editor);
+                                         writer.writeAttribute(HTML.VALUE_ATTR,"",null);
+                                         writer.writeAttribute(I18N_TRANSLATE_ATTR,"opt_2nd_style",null);
+                                         writer.write("(optional 2nd style)");
+                                         writer.endElement(HTML.OPTION_ELEM);
+                                     
+                                     writer.endElement(HTML.SELECT_ELEM);
+                                 
+                                 writer.endElement(HTML.TD_ELEM);
+                             
+                                 writer.startElement(HTML.TD_ELEM,editor);
+                                 writer.writeAttribute(HTML.COLSPAN_ATTR,"1",null);
+                                 writer.writeAttribute(ROWSPAN_ATTR,"1",null);
+                                 
+                                     writer.startElement(HTML.DIV_ELEM,editor);
+                                     writer.writeAttribute(HTML.CLASS_ATTR,"kupu-bm-help",null);
+                                     
+                                     writer.startElement(HTML.SPAN_ELEM,editor);
+                                     writer.writeAttribute(HTML.CLASS_ATTR,"hide-anchor hide-toc discreet",null);
+                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"create_anchor_link_help",null);
+                                     writer.write("Select a paragraph style then choose a paragraph and Ok to insert a link to that location.");
+                                     
+                                     writer.endElement(HTML.SPAN_ELEM);
+                                     
+                                     writer.startElement(HTML.SPAN_ELEM,editor);
+                                     writer.writeAttribute(HTML.CLASS_ATTR,"hide-ins-bm hide-anchor discreet",null);
+                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"create_toc_help",null);
+                                     writer.write("Select one or two paragraph styles, then Ok to insert a table of contents.");
+                                     
+                                     writer.endElement(HTML.SPAN_ELEM);
+                                     
+                                     writer.startElement(HTML.SPAN_ELEM,editor);
+                                     writer.writeAttribute(HTML.CLASS_ATTR,"hide-ins-bm hide-toc discreet",null);
+                                     writer.writeAttribute(I18N_TRANSLATE_ATTR,"create_anchor_help",null);
+                                     writer.write("Anchors are created for checked paragraphs and");
+                                     writer.write("removed for unchecked paragraphs when you press Ok.");
+                                     writer.write("Anchors in use on this page may not be deleted.");
+                                     
+                                     writer.endElement(HTML.SPAN_ELEM);
+                                     
+                                     writer.endElement(HTML.DIV_ELEM);
+                                 
+                                 writer.endElement(HTML.TD_ELEM);
+                             
+                             writer.endElement(HTML.TR_ELEM);
+                             
+                         writer.endElement(HTML.TABLE_ELEM);
+                     
+                         writer.startElement(HTML.DIV_ELEM,editor);
+                         writer.writeAttribute(HTML.CLASS_ATTR,"kupu-dialogbuttons",null);
+                         
+                             writer.startElement(HTML.BUTTON_ELEM,editor);
+                             writer.writeAttribute(HTML.CLASS_ATTR,"kupu-dialog-button",null);
+                             writer.writeAttribute(HTML.TYPE_ATTR,"button",null);
+                             writer.writeAttribute(HTML.ONCLICK_ATTR,"drawertool.current_drawer.save()",null);
+                             writer.writeAttribute(I18N_TRANSLATE_ATTR,"button_ok",null);
+                             writer.write("Ok");
+                             writer.endElement(HTML.BUTTON_ELEM);
+                         
+                             writer.startElement(HTML.BUTTON_ELEM,editor);
+                             writer.writeAttribute(HTML.CLASS_ATTR,"kupu-dialog-button",null);
+                             writer.writeAttribute(HTML.TYPE_ATTR,"button",null);
+                             writer.writeAttribute(HTML.ONCLICK_ATTR,"drawertool.closeDrawer()",null);
+                             writer.writeAttribute(I18N_TRANSLATE_ATTR,"button_cancel",null);
+                             writer.write("Cancel");
+                             writer.endElement(HTML.BUTTON_ELEM);
+                         
+                         writer.endElement(HTML.DIV_ELEM);
+                     writer.endElement(HTML.DIV_ELEM);
+                 writer.endElement(HTML.DIV_ELEM);
             writer.endElement(HTML.DIV_ELEM); // toolbar
 
             //
@@ -915,20 +1369,24 @@ public class InputHtmlRenderer extends H
                 }
                     writer.startElement(HTML.H1_ELEM, editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-heading", null);
+                    writer.writeAttribute(I18N_TRANSLATE_ATTR,"title_properties",null);
                         writer.write("Properties");
                     writer.endElement(HTML.H1_ELEM);
 
                     writer.startElement(HTML.DIV_ELEM, editor);
                         writer.startElement(HTML.DIV_ELEM, editor);
                         writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                        writer.writeAttribute(I18N_TRANSLATE_ATTR,"label_title",null);
                             writer.write("Title:");
                         writer.endElement(HTML.DIV_ELEM);
                         writer.startElement(HTML.INPUT_ELEM, editor);
                         writer.writeAttribute(HTML.CLASS_ATTR, "wide", null);
                         writer.writeAttribute(HTML.ID_ATTR, "kupu-properties-title", null);
+                        writer.writeAttribute(HTML.TYPE_ATTR,"text",null);
                         writer.endElement(HTML.INPUT_ELEM);
                         writer.startElement(HTML.DIV_ELEM, editor);
                         writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
+                        writer.writeAttribute(I18N_TRANSLATE_ATTR,"label_description",null);
                             writer.write("Description:");
                         writer.endElement(HTML.DIV_ELEM);
                         writer.startElement(HTML.TEXTAREA_ELEM, editor);
@@ -947,18 +1405,18 @@ public class InputHtmlRenderer extends H
                 }
                     writer.startElement(HTML.H1_ELEM, editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-heading", null);
-                    writer.writeAttribute("i18n:translate", "links", null);
+                    writer.writeAttribute(I18N_TRANSLATE_ATTR,"label_links",null);
                         writer.write("Links");
                     writer.endElement(HTML.H1_ELEM);
 
                     writer.startElement(HTML.DIV_ELEM, editor);
-                    writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-addlink", null);
+                    writer.writeAttribute(HTML.ID_ATTR,"kupu-toolbox-addlink",null);
 
                         writer.startElement(HTML.DIV_ELEM, editor);
                         writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-label", null);
                             writer.startElement(HTML.SPAN_ELEM, editor);
-                            writer.writeAttribute("xmlns:i18n", "http://xml.zope.org/namespaces/i18n", null);
-                            writer.writeAttribute("i18n:translate", "items-matching-keyword", null);
+                            
+                            writer.writeAttribute(I18N_TRANSLATE_ATTR,"label_link_text",null);
                                 writer.write("Link the highlighted text to this URL:");
                             writer.endElement(HTML.SPAN_ELEM);
                         writer.endElement(HTML.DIV_ELEM);
@@ -975,6 +1433,7 @@ public class InputHtmlRenderer extends H
                             writer.writeAttribute(HTML.TYPE_ATTR, "button", null);
                             writer.writeAttribute(HTML.ID_ATTR, "kupu-link-button", null);
                             writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-action", null);
+                            writer.writeAttribute(I18N_TRANSLATE_ATTR,"button_makelink",null);
                                 writer.write("Make Link");
                             writer.endElement(HTML.BUTTON_ELEM);
                         writer.endElement(HTML.DIV_ELEM);
@@ -991,7 +1450,7 @@ public class InputHtmlRenderer extends H
                 }
                     writer.startElement(HTML.H1_ELEM, editor);
                     writer.writeAttribute(HTML.CLASS_ATTR, "kupu-toolbox-heading", null);
-                    writer.writeAttribute("i18n:translate", "images", null);
+                    writer.writeAttribute(I18N_TRANSLATE_ATTR,"title_images",null);
                         writer.write("Images");
                     writer.endElement(HTML.H1_ELEM);
 
@@ -999,25 +1458,25 @@ public class InputHtmlRenderer extends H

[... 283 lines stripped ...]