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 03:18:22 UTC
svn commit: r928556 [2/5] - in /myfaces/tomahawk/trunk/core20: ./
src/main/conf/META-INF/ src/main/java/org/apache/myfaces/custom/calendar/
src/main/java/org/apache/myfaces/custom/inputHtml/
src/main/java/org/apache/myfaces/custom/inputTextHelp/ src/ma...
Added: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/inputHtml/InputHtmlRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/inputHtml/InputHtmlRenderer.java?rev=928556&view=auto
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/inputHtml/InputHtmlRenderer.java (added)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/inputHtml/InputHtmlRenderer.java Mon Mar 29 01:18:21 2010
@@ -0,0 +1,1921 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.custom.inputHtml;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import javax.faces.FacesException;
+import javax.faces.application.Resource;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UINamingContainer;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.convert.ConverterException;
+import javax.faces.event.ComponentSystemEvent;
+import javax.faces.event.ComponentSystemEventListener;
+import javax.faces.event.ListenerFor;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.component.UserRoleUtils;
+import org.apache.myfaces.custom.tabbedpane.HtmlPanelTab;
+import org.apache.myfaces.custom.tabbedpane.HtmlPanelTabbedPane;
+import org.apache.myfaces.renderkit.html.util.AddResource;
+import org.apache.myfaces.renderkit.html.util.AddResourceFactory;
+import org.apache.myfaces.shared_tomahawk.renderkit.JSFAttr;
+import org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.HTML;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRenderer;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.util.FormInfo;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.util.HTMLEncoder;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.tomahawk.application.PreRenderViewAddResourceEvent;
+import org.apache.myfaces.tomahawk.util.TomahawkResourceUtils;
+
+/**
+ * @JSFRenderer
+ * renderKitId = "HTML_BASIC"
+ * family = "javax.faces.Input"
+ * type = "org.apache.myfaces.InputHtml"
+ *
+ * @author Sylvain Vieujot (latest modification by $Author: skitching $)
+ * @version $Revision: 673833 $ $Date: 2008-07-03 16:58:05 -0500 (jue, 03 jul 2008) $
+ */
+@ListenerFor(systemEventClass=PreRenderViewAddResourceEvent.class)
+public class InputHtmlRenderer extends HtmlRenderer implements ComponentSystemEventListener {
+ // TODO : Enable multiple editors on one page
+ // TODO : Fix i18n (check the kupustart_form.js)
+ // TODO : Finish Disabled mode.
+ // TODO : Automatic Fallback for non kupu capable browsers (Safari, smartphones, non javascript, ...).
+ // TODO : Make Image & Link Library work.
+ // TODO : Allow disabeling of tag filtering
+ // 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";
+ private static final String INPUT_HTML_LIBRARY = "oam.custom.inputHtml";
+ private static final String INPUT_HTML_LIBRARY_KUPU_DRAWERS = "oam.custom.inputHtml.kupudrawers";
+
+ public void processEvent(ComponentSystemEvent event)
+ {
+ InputHtml editor = (InputHtml) event.getComponent();
+ if( !HtmlRendererUtils.isDisplayValueOnly(editor) && !useFallback(editor))
+ {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ //AddResource addResource = AddResourceFactory.getInstance(facesContext);
+ //addResource.addStyleSheet(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupustyles.css");
+ TomahawkResourceUtils.addOutputStylesheetResource(facesContext, INPUT_HTML_LIBRARY, "myFacesKupustyles.css");
+ //addResource.addStyleSheet(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupudrawerstyles.css");
+ TomahawkResourceUtils.addOutputStylesheetResource(facesContext, INPUT_HTML_LIBRARY, "kupudrawerstyles.css");
+ //addResource.addStyleSheet(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "myFaces.css");
+ TomahawkResourceUtils.addOutputStylesheetResource(facesContext, INPUT_HTML_LIBRARY, "myFaces.css");
+
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "sarissa.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "sarissa.js");
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "sarissa_ieemu_xpath.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "sarissa_ieemu_xpath.js");
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupuhelpers.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupuhelpers.js");
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupueditor.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupueditor.js");
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupubasetools.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupubasetools.js");
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupuloggers.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupuloggers.js");
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupunoi18n.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupunoi18n.js");
+ //addResource.addJavaScriptAtPosition(context, InputHtmlRenderer.class, "i18n/i18n.js"); //NO
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupucleanupexpressions.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupucleanupexpressions.js");
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupucontentfilters.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupucontentfilters.js");
+
+ if (editor.isShowAnyToolBox())
+ {
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kuputoolcollapser.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kuputoolcollapser.js");
+ }
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupucontextmenu.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupucontextmenu.js");
+
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupuinit.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupuinit.js");
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupustart.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupustart.js");
+
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupusourceedit.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupusourceedit.js");
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupuspellchecker.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupuspellchecker.js");
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupudrawers.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupudrawers.js");
+
+ //addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupuundo.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "kupuundo.js");
+ //addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "diff_match_patch.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "diff_match_patch.js");
+
+ //addResource.addJavaScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "myFacesUtils.js");
+ TomahawkResourceUtils.addOutputScriptResource(facesContext, INPUT_HTML_LIBRARY, "myFacesUtils.js");
+
+ if( editor.getStyle()!=null ){
+ // Convert the style into an style declaration so that it doesn't preempt the Zoom works as it's relying on changing the class
+ //addResource.addInlineStyleAtPosition(
+ // context, AddResource.HEADER_BEGIN,
+ // "#kupu-editor{height: inherit;}\n"+
+ // "div.kupu-fulleditor{"+editor.getStyle()+"}");
+ TomahawkResourceUtils.addInlineOutputStylesheetResource(facesContext,
+ "#kupu-editor{height: inherit;}\n"+
+ "div.kupu-fulleditor{"+editor.getStyle()+"}");
+ }
+ }
+ }
+
+ protected boolean isDisabled(FacesContext facesContext, UIComponent uiComponent) {
+ if( !UserRoleUtils.isEnabledOnUserRole(uiComponent) )
+ return false;
+
+ return ((InputHtml)uiComponent).isDisabled();
+ }
+
+ private static boolean useFallback(InputHtml editor){
+ // TODO : Handle fallback="auto"
+ return editor.getFallback().equals("true");
+ }
+
+ public void encodeEnd(FacesContext context, UIComponent uiComponent) throws IOException {
+ RendererUtils.checkParamValidity(context, uiComponent, InputHtml.class);
+ InputHtml editor = (InputHtml) uiComponent;
+ if( HtmlRendererUtils.isDisplayValueOnly(editor) )
+ encodeDisplayValueOnly(context, editor);
+ else if( useFallback(editor) )
+ encodeEndFallBackMode(context, editor);
+ else{
+ // HACK
+ // As only one inputHtml is supported by page in this version,
+ // we need to make sure we don't encode hidden inputHtml
+ // TODO : Fix this by supporting multiple inputHtml per page.
+
+ if( ! isVisible(editor) ){
+ encodeHidden(context, editor);
+ }else if( ! hasThisPageAlreadyRenderedAnInputHtml( context ) ){
+ encodeEndNormalMode(context, editor);
+ setThisPageAlreadyRenderedAnInputHtml( context );
+ }else{
+ log.warn("Only one inputHtml can be displayed at the same time. The component will be rendered isung a textarea." +
+ "\nConpoment : "+RendererUtils.getPathToComponent( editor ));
+ encodeEndFallBackMode(context, editor);
+ }
+ }
+ }
+
+ static private boolean hasThisPageAlreadyRenderedAnInputHtml(FacesContext context){
+ return context.getExternalContext().getRequestMap().containsKey( InputHtmlRenderer.class.getName() );
+ }
+
+ static private void setThisPageAlreadyRenderedAnInputHtml(FacesContext context){
+ context.getExternalContext().getRequestMap().put(InputHtmlRenderer.class.getName(), Boolean.TRUE);
+ }
+
+ /**
+ * Try to figure out if this component is visible to avoid rendering the code if not necessary.
+ */
+ private boolean isVisible(InputHtml editor){
+ for(UIComponent parent = editor.getParent(); parent != null ; parent = parent.getParent()){
+ if( parent instanceof HtmlPanelTab ){
+ HtmlPanelTab panelTab = (HtmlPanelTab) parent;
+ HtmlPanelTabbedPane panelTabbedPane = null;
+ for(UIComponent panelAncestor=panelTab.getParent(); panelAncestor!=null ; panelAncestor=panelAncestor.getParent()){
+ if( panelAncestor instanceof HtmlPanelTabbedPane ){
+ panelTabbedPane = (HtmlPanelTabbedPane)panelAncestor;
+ break;
+ }
+ }
+
+ if( panelTabbedPane != null ){
+ if( panelTabbedPane.isClientSide() ){
+ parent = panelTabbedPane;
+ continue;
+ }
+
+ // Not client side tabbed pane.
+ // We need to check if the current panel tab is bisible;
+ int selectedIndex = panelTabbedPane.getSelectedIndex();
+ List children = panelTabbedPane.getChildren();
+ int tabIdx = 0;
+ for (int i = 0, len = children.size(); i < len && tabIdx <= selectedIndex ; i++){
+ UIComponent child = htmlTabbedPaneRenderer_getUIComponent((UIComponent)children.get(i));
+ if (child instanceof HtmlPanelTab){
+ if( child == panelTab ){
+ if( ! child.isRendered() || tabIdx != selectedIndex){
+ return false;
+ }else{
+ // It's visible. Check at upper level.
+ parent = panelTabbedPane;
+ continue;
+ }
+ }
+ tabIdx++;
+ }
+ }
+ }else{
+ log.debug("pannelTabbedPane == null for component "+RendererUtils.getPathToComponent(panelTab));
+ }
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * This is a copy of HtmlTabbedPaneRenderer.getUIComponent
+ */
+ private UIComponent htmlTabbedPaneRenderer_getUIComponent(UIComponent uiComponent)
+ {
+ /* todo: forms other than UIForm, e.g. Trinidad's UIForm */
+ if (uiComponent instanceof UIForm || uiComponent instanceof UINamingContainer)
+ {
+ List children = uiComponent.getChildren();
+ for (int i = 0, len = children.size(); i < len; i++)
+ {
+ uiComponent = htmlTabbedPaneRenderer_getUIComponent((UIComponent)children.get(i));
+ }
+ }
+ return uiComponent;
+ }
+
+ private void encodeHidden(FacesContext context, InputHtml editor) throws IOException {
+ String clientId = editor.getClientId(context);
+ // Use a hidden textarea
+ ResponseWriter writer = context.getResponseWriter();
+ writer.startElement(HTML.TEXTAREA_ELEM, editor);
+
+ writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
+ writer.writeAttribute(HTML.STYLE_ATTR, "display:none", null);
+
+ String text = RendererUtils.getStringValue(context, editor);
+ writer.writeText(text, JSFAttr.VALUE_ATTR);
+
+ writer.endElement(HTML.TEXTAREA_ELEM);
+ }
+
+ private void encodeDisplayValueOnly(FacesContext context, InputHtml editor) throws IOException {
+ // Use only a textarea
+ ResponseWriter writer = context.getResponseWriter();
+ writer.startElement(HTML.SPAN_ELEM, editor);
+ HtmlRendererUtils.writeIdIfNecessary(writer, editor, context);
+
+ HtmlRendererUtils.renderDisplayValueOnlyAttributes(editor, writer);
+
+ String text = RendererUtils.getStringValue(context, editor);
+ writer.write( editor.getHtmlBody( text ) );
+
+ writer.endElement(HTML.SPAN_ELEM);
+ }
+
+ private void encodeEndFallBackMode(FacesContext context, InputHtml editor) throws IOException {
+ String clientId = editor.getClientId(context);
+ // Use only a textarea
+ ResponseWriter writer = context.getResponseWriter();
+ writer.startElement(HTML.TEXTAREA_ELEM, editor);
+
+ writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
+ HtmlRendererUtils.writeIdIfNecessary(writer, editor, context);
+
+ if( editor.getStyle()!=null )
+ writer.writeAttribute(HTML.STYLE_ATTR, editor.getStyle(), null);
+ if( editor.getStyleClass()!=null )
+ writer.writeAttribute(HTML.CLASS_ATTR, editor.getStyleClass(), null);
+
+ if (isDisabled(context, editor))
+ writer.writeAttribute(HTML.DISABLED_ATTR, Boolean.TRUE, null);
+
+ String text = RendererUtils.getStringValue(context, editor);
+ writer.write( htmlToPlainText(text, editor) );
+
+ writer.endElement(HTML.TEXTAREA_ELEM);
+ }
+
+ private static String htmlToPlainText(String html, InputHtml editor){
+ return editor.getHtmlBody( html )
+ .replaceAll("<br.*>","\n")
+ .replaceAll("<.+?>", "");
+ }
+
+ private void encodeEndNormalMode(FacesContext context, InputHtml editor) throws IOException {
+ String clientId = editor.getClientId(context);
+ FormInfo parentFormInfo = RendererUtils.findNestingForm(editor, context);
+ if(parentFormInfo == null)
+ throw new FacesException("InputHtml must be embedded in a form.");
+ String formId = parentFormInfo.getFormName();
+
+ AddResource addResource = AddResourceFactory.getInstance(context);
+ /*
+ addResource.addStyleSheet(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupustyles.css");
+ addResource.addStyleSheet(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupudrawerstyles.css");
+ addResource.addStyleSheet(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "myFaces.css");
+
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "sarissa.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "sarissa_ieemu_xpath.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupuhelpers.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupueditor.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupubasetools.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupuloggers.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupunoi18n.js");
+ //addResource.addJavaScriptAtPosition(context, InputHtmlRenderer.class, "i18n/i18n.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupucleanupexpressions.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupucontentfilters.js");
+
+ if (editor.isShowAnyToolBox())
+ {
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kuputoolcollapser.js");
+ }
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupucontextmenu.js");
+
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupuinit.js");
+ addResource.addJavaScriptAtPosition(context, AddResource.HEADER_BEGIN, InputHtmlRenderer.class, "kupustart.js");
+
+ 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");
+ */
+
+ ResponseWriter writer = context.getResponseWriter();
+
+ writer.startElement(HTML.DIV_ELEM,editor);
+ writer.writeAttribute(HTML.STYLE_ATTR, "display: none;",null);
+
+ writer.startElement("xml", editor);
+ writer.writeAttribute("id", "kupuconfig", null);
+ writer.writeAttribute(HTML.CLASS_ATTR, "kupuconfig", null);
+
+ writer.startElement("kupuconfig", editor);
+
+ writeTag(writer, "dst", "fulldoc.html", editor);
+ writeTag(writer, "use_css", "1", editor);
+ writeTag(writer, "reload_after_save", "0", editor);
+ writeTag(writer, "strict_output", "1", editor);
+ writeTag(writer, "content_type", "application/xhtml+xml", editor);
+ writeTag(writer, "compatible_singletons", "1", editor);
+
+ writer.startElement("table_classes", editor);
+ writeTag(writer, "class", "plain", editor);
+ writeTag(writer, "class", "listing", editor);
+ writeTag(writer, "class", "grid", editor);
+ writeTag(writer, "class", "data", editor);
+ writer.endElement("table_classes");
+
+ writer.startElement("cleanup_expressions",editor);
+ writer.startElement("set",editor);
+ writer.startElement("name",editor);
+ writer.write("Convert single quotes to curly ones");
+ writer.endElement("name");
+ writer.startElement("expression",editor);
+ writer.startElement("reg",editor);
+ writer.write("(\\W)'");
+ writer.endElement("reg");
+ writer.startElement("replacement",editor);
+ writer.write("\\1舖");
+ writer.endElement("replacement");
+ writer.endElement("expression");
+ writer.startElement("expression",editor);
+ writer.startElement("reg",editor);
+ writer.write("'");
+ writer.endElement("reg");
+ writer.startElement("replacement",editor);
+ writer.write("舗");
+ writer.endElement("replacement");
+ writer.endElement("expression");
+ writer.endElement("set");
+ writer.startElement("set",editor);
+ writer.startElement("name",editor);
+ writer.write("Reduce whitespace");
+ writer.endElement("name");
+ writer.startElement("expression",editor);
+ writer.startElement("reg",editor);
+ writer.write("[\\n\\r\\t]");
+ writer.endElement("reg");
+ writer.startElement("replacement",editor);
+ writer.write("\\x20");
+ writer.endElement("replacement");
+ writer.endElement("expression");
+ writer.startElement("expression",editor);
+ writer.startElement("reg",editor);
+ writer.write("[ ]{2}");
+ writer.endElement("reg");
+ writer.startElement("replacement",editor);
+ writer.write("\\x20");
+ writer.endElement("replacement");
+ writer.endElement("expression");
+ writer.endElement("set");
+ writer.endElement("cleanup_expressions");
+
+ Resource drawer = context.getApplication().getResourceHandler().createResource("drawer.xsl",INPUT_HTML_LIBRARY_KUPU_DRAWERS);
+ //writeTag(writer, "image_xsl_uri", addResource.getResourceUri(context, InputHtmlRenderer.class, "kupudrawers/drawer.xsl"), editor);
+ writeTag(writer, "image_xsl_uri", drawer.getRequestPath(), editor);
+ //writeTag(writer, "link_xsl_uri", addResource.getResourceUri(context, InputHtmlRenderer.class, "kupudrawers/drawer.xsl"), editor);
+ writeTag(writer, "link_xsl_uri", drawer.getRequestPath(), editor);
+
+ // TODO : Make this work (reference available images, ...).
+ //writeTag(writer, "image_libraries_uri", addResource.getResourceUri(context, InputHtmlRenderer.class, "kupudrawers/imagelibrary.xml"), editor);
+ Resource imagelibrary = context.getApplication().getResourceHandler().createResource("imagelibrary.xml",INPUT_HTML_LIBRARY_KUPU_DRAWERS);
+ writeTag(writer, "image_libraries_uri", imagelibrary.getRequestPath(), editor);
+ //writeTag(writer, "link_libraries_uri", addResource.getResourceUri(context, InputHtmlRenderer.class, "kupudrawers/linklibrary.xml"), editor);
+ Resource linklibrary = context.getApplication().getResourceHandler().createResource("linklibrary.xml",INPUT_HTML_LIBRARY_KUPU_DRAWERS);
+ writeTag(writer, "link_libraries_uri", linklibrary.getRequestPath(), editor);
+ writeTag(writer, "search_images_uri", "", editor);
+ writeTag(writer, "search_links_uri", "", editor);
+
+ writer.endElement("kupuconfig");
+ writer.endElement("xml");
+ 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
+ //
+ writer.startElement(HTML.DIV_ELEM,editor);
+ writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb",null);
+ writer.writeAttribute(HTML.ID_ATTR, "toolbar",null);
+
+ writer.startElement(HTML.SPAN_ELEM,editor);
+ writer.writeAttribute(HTML.ID_ATTR, "kupu-tb-buttons",null);
+ writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttons",null);
+
+ 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-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(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.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(HTML.VALUE_ATTR, "P",null);
+ 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(I18N_TRANSLATE_ATTR,"Heading 1",null);
+ writer.write("Heading 1");
+ writer.endElement(HTML.SPAN_ELEM);
+ 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(I18N_TRANSLATE_ATTR,"Heading 2",null);
+ writer.write("Heading 2");
+ writer.endElement(HTML.SPAN_ELEM);
+ 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(I18N_TRANSLATE_ATTR,"Heading 3",null);
+ writer.write("Heading 3");
+ writer.endElement(HTML.SPAN_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(I18N_TRANSLATE_ATTR,"Heading 4",null);
+ writer.write("Heading 4");
+ writer.endElement(HTML.SPAN_ELEM);
+
+ 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(I18N_TRANSLATE_ATTR,"Heading 5",null);
+ writer.write("Heading 5");
+ writer.endElement(HTML.SPAN_ELEM);
+
+ 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(I18N_TRANSLATE_ATTR,"Heading 6",null);
+ writer.write("Heading 6");
+ writer.endElement(HTML.SPAN_ELEM);
+
+ writer.endElement(HTML.OPTION_ELEM);
+
+ writer.startElement(HTML.OPTION_ELEM,editor);
+
+ writer.writeAttribute(HTML.VALUE_ATTR, "PRE",null);
+ writer.writeAttribute(I18N_TRANSLATE_ATTR,"Formatted",null);
+ writer.write("Formatted");
+ writer.endElement(HTML.OPTION_ELEM);
+
+ writer.endElement(HTML.SELECT_ELEM);
+
+ 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: 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: 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: 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);
+ 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: 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: 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: 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", "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);
+ writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup", null);
+ if( ! editor.isAllowExternalLinks() ){
+ writer.writeAttribute(HTML.STYLE_ATTR, "display: none", null);
+ }
+ 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,"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: 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);
+ writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup kupu-spellchecker-span", null);
+ writer.writeAttribute(HTML.ID_ATTR, "kupu-spellchecker", null);
+ //if( ! editor.isAllowEditSource() ){
+ writer.writeAttribute(HTML.STYLE_ATTR, "display: none", null);
+ //}
+ writeButton(writer, "kupu-spellchecker", "Check spelling", null, editor,"title title_check_spelling;");
+ writer.endElement(HTML.SPAN_ELEM);
+
+ writer.startElement(HTML.SPAN_ELEM,editor);
+ writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tb-buttongroup kupu-source-span", null);
+ writer.writeAttribute(HTML.ID_ATTR, "kupu-source", null);
+ if( ! editor.isAllowEditSource() ){
+ writer.writeAttribute(HTML.STYLE_ATTR, "display: none", null);
+ }
+ 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
+
+ writer.startElement(HTML.SELECT_ELEM,editor);
+ writer.writeAttribute(HTML.ID_ATTR, "kupu-ulstyles", null);
+ writer.writeAttribute(HTML.CLASS_ATTR, "kupu-ulstyles", null);
+ writeOption(writer, "disc", "list-disc", "●", editor); // TODO : Check as last parameter has been removed.
+ writeOption(writer, "square", "list-square", "■", editor);
+ writeOption(writer, "circle", "list-circle", "○", editor);
+ writeOption(writer, "none", "list-nobullet", "no bullet", editor);
+ writer.endElement(HTML.SELECT_ELEM);
+
+ writer.startElement(HTML.SELECT_ELEM,editor);
+ writer.writeAttribute(HTML.ID_ATTR, "kupu-olstyles", null);
+ writer.writeAttribute(HTML.CLASS_ATTR, "kupu-olstyles", null);
+ writeOption(writer, "decimal", "list-decimal", "1", editor);
+ writeOption(writer, "upper-roman", "list-upperroman", "I", editor);
+ writeOption(writer, "lower-roman", "list-lowerroman", "i", editor);
+ writeOption(writer, "upper-alpha", "list-upperalpha", "A", editor);
+ writeOption(writer, "lower-alpha", "list-loweralpha", "a", editor);
+ writer.endElement(HTML.SELECT_ELEM);
+
+ writer.startElement(HTML.DIV_ELEM,editor);
+ writer.writeAttribute(HTML.STYLE_ATTR, "display:block;", 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
+ writer.startElement(HTML.DIV_ELEM,editor);
+ 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(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.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.CLASS_ATTR, "kupu-toolbox-label", null);
+ writer.startElement(HTML.SPAN_ELEM,editor);
+
+ 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);
+ writer.writeAttribute(HTML.ONKEYPRESS_ATTR, "return HandleDrawerEnter(event, 'linkdrawer-preview');", null);
+ writer.endElement(HTML.INPUT_ELEM);
+ 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.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);
+ //Resource kupublank = context.getApplication().getResourceHandler().createResource("kupublank.html",INPUT_HTML_LIBRARY);
+ //writer.writeAttribute(HTML.SRC_ATTR, kupublank.getRequestPath(), null);
+ 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.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 <object> or <embed> 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.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);
+
+ // Table drawer
+ writer.startElement(HTML.DIV_ELEM,editor);
+ 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);
+ writer.writeAttribute(HTML.CLASS_ATTR, "kupu-panels", null);
+ writer.startElement(HTML.TABLE_ELEM,editor);
+ writer.writeAttribute(HTML.WIDTH_ATTR, "300",null);
+ writer.startElement(HTML.TR_ELEM,editor);
+ 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", "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);
+ writer.writeAttribute(HTML.VALUE_ATTR, "3", null); // MyFaces special
+ writer.writeAttribute(HTML.ONKEYPRESS_ATTR, "return HandleDrawerEnter(event);", null);
+ writer.endElement(HTML.INPUT_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_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);
+ writer.writeAttribute(HTML.VALUE_ATTR, "3", null); // MyFaces special
+ writer.writeAttribute(HTML.ONKEYPRESS_ATTR, "return HandleDrawerEnter(event);", null);
+ writer.endElement(HTML.INPUT_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(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.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(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.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.TD_ELEM);
+ writer.endElement(HTML.TR_ELEM);
+
+ writer.endElement(HTML.TABLE_ELEM);
+ writer.endElement(HTML.DIV_ELEM);
+
+ writer.startElement(HTML.DIV_ELEM,editor);
+ writer.writeAttribute(HTML.CLASS_ATTR, "kupu-tabledrawer-edittable", null);
+ writer.startElement(HTML.TABLE_ELEM,editor);
+ 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", "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(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", "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);
+
+ 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.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.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);
+ 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(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.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.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);
+ 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(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.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);
+
+ writer.endElement(HTML.TABLE_ELEM);
+ writer.endElement(HTML.DIV_ELEM); // kupu-tabledrawer-edittable
+ 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(I18N_TRANSLATE_ATTR,"tabledrawer_close_button",null);
+ writer.writeAttribute(HTML.ONCLICK_ATTR, "drawertool.closeDrawer(this)", 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);
[... 706 lines stripped ...]