import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.TextArea; import com.google.gwt.user.client.ui.VerticalPanel; public class TinyMCE extends Composite { private TextArea ta; private String id; private AbstractTinyMCEConfiguration config; public TinyMCE(AbstractTinyMCEConfiguration config) { super(); if (config == null) { GWT.log("The configuration cannot be null", null); return; } this.config = config; initWidget(initTinyMCE()); init(config); } public TinyMCE() { this(new DefaultTinyMCEConfiguration()); } private VerticalPanel initTinyMCE() { int width = 65 ; int height = 30 ; VerticalPanel panel = new VerticalPanel(); panel.setWidth("100%"); id = HTMLPanel.createUniqueId(); ta = new TextArea(); ta.setCharacterWidth(width); ta.setVisibleLines(height); DOM.setElementAttribute(ta.getElement(), "id", id); DOM.setStyleAttribute(ta.getElement(), "width", "100%"); DOM.setStyleAttribute(ta.getElement(), "height", "250px"); // delete // line? panel.add(ta); return panel; } public String getID() { return id; } public void setText(String text) { ta.setText(text); } public String getText() { getTextData(); return ta.getText(); } protected native void focusMCE(String id) /*-{ $wnd.tinyMCE.execCommand('mceFocus', true, id); }-*/; protected native void resetMCE() /*-{ $wnd.tinyMCE.execCommand('mceResetDesignMode', true); }-*/; public void unload() { unloadMCE(id); } protected native void unloadMCE(String id) /*-{ $wnd.tinyMCE.execCommand('mceRemoveControl', false, id); }-*/; protected native void updateContent(String id) /*-{ $wnd.tinyMCE.selectedInstance = $wnd.tinyMCE.getInstanceById(id); $wnd.tinyMCE.setContent($wnd.document.getElementById(id).value); }-*/; protected native void getTextData() /*-{ $wnd.tinyMCE.triggerSave(); }-*/; protected native String encodeURIComponent(String text) /*-{ return encodeURIComponent(text); }-*/; protected native void setTextAreaToTinyMCE(String id) /*-{ $wnd.tinyMCE.execCommand('mceAddControl', true, id); }-*/; protected native void removeMCE(String id) /*-{ $wnd.tinyMCE.execCommand('mceRemoveControl', true, id); }-*/; public String initMode(){ return config.getMode(); } protected native void init(AbstractTinyMCEConfiguration conf) /*-{ $wnd.tinyMCE.init({ // General options mode : [email protected]::getMode()(), theme : [email protected]::getTheme()(), elements : [email protected]::getElements()(), skin : [email protected]::getSkin()(), entity_encoding : [email protected]::getEntityEncoding()(), plugins : [email protected]::getPlugins()(), // Theme options // excluded buttons: ,fontselect,fontsizeselect,preview,image,help,|,forecolor,backcolor tablecontrols,|,,emotions,media,|,print theme_advanced_buttons1 : [email protected]::getThemeAdvancedButtons1()(), theme_advanced_buttons2 : [email protected]::getThemeAdvancedButtons2()(), theme_advanced_buttons3 : [email protected]::getThemeAdvancedButtons3()(), //theme_advanced_buttons4 : [email protected]::getThemeAdvancedButtons4()(), theme_advanced_toolbar_location : [email protected]::getThemeAdvancedToolbarLocation()(), theme_advanced_toolbar_align : [email protected]::getThemeAdvancedToolbarAlign()(), theme_advanced_statusbar_location : [email protected]::getThemeAdvancedStatusbarLocation()(), theme_advanced_resizing : [email protected]::getThemeAdvancedResizing()(), // Example content CSS (should be your site CSS) content_css : [email protected]::getContentCss()(), // Drop lists for link/image/media/template dialogs template_external_list_url : [email protected]::getTemplateExternalListUrl()(), external_link_list_url : [email protected]::getExternalLinkListUrl()(), external_image_list_url : [email protected]::getExternalImageListUrl()(), media_external_list_url : [email protected]::getMediaExternalListUrl()(), // Replace values for the template plugin template_replace_values : { username : "Some User", staffid : "991234" } }); }-*/; public AbstractTinyMCEConfiguration getConfig() { return config; } }
gwt代码 AbstractTinyMCEConfiguration类,里面的参数用于配置tinyMCE的功能键;
package com.orclh.gwt.client.client; public abstract class AbstractTinyMCEConfiguration { private String mode = "textareas"; private String theme = "advanced"; private String elements = ""; private String skin = "o2k7"; private String entityEncoding = "raw"; private String themeAdvancedToolbarLocation = "top"; private String themeAdvancedToolbarAlign = "left"; private String themeAdvancedStatusbarLocation = "bottom"; private String themeAdvancedResizing = "true"; private String contentCss = "http://www.e-germanos.gr/e-germanos/eshop/css/all.css"; private String templateExternalListUrl = "editor_stuf/lists/template_list.js"; private String externalLinkListUrl = "editor_stuf/lists/link_list.js"; private String externalImageListUrl = "editor_stuf/lists/image_list.js"; private String mediaExternalListUrl = "editor_stuf/lists/media_list.js"; private String[] plugins = new String[] {"example","safari","pagebreak","style","layer","table","save","advhr","advimage","advlink","emotions","iespell","inlinepopups","insertdatetime","preview","media","searchreplace","print","contextmenu","paste","directionality","fullscreen","noneditable","visualchars","nonbreaking","xhtmlxtras","template"}; private String[] themeAdvancedButtons1 = new String[] {"mymenubutton" , "newdocument" , "|", "bold", "italic", "underline", "strikethrough", "|", "justifyleft", "justifycenter", "justifyright", "justifyfull", "formatselect"}; private String[] themeAdvancedButtons2 = new String[] {"cut", "copy", "paste", "pastetext", "pasteword", "|", "search,replace", "|", "bullist", "numlist", "|", "outdent", "indent", "blockquote", "|", "undo", "redo", "|", "link", "unlink", "anchor", "cleanup", "code", "|", "insertdate", "inserttime"}; private String[] themeAdvancedButtons3 = new String[] {"hr", "removeformat", "visualaid", "|", "sub", "sup", "|", "charmap", "iespell", "advhr", "|", "ltr", "rtl", "|", "fullscreen"}; private String[] themeAdvancedButtons4 = new String[] {"insertlayer", "moveforward", "movebackward", "absolute", "|", "styleprops", "|", "cite", "abbr", "acronym", "del", "ins", "attribs", "|", "visualchars", "nonbreaking", "template", "pagebreak"}; public String getMode() { return mode; } public void setMode(String mode) { this.mode = mode; } public String getTheme() { return theme; } public void setTheme(String theme) { this.theme = theme; } public String getSkin() { return skin; } public void setSkin(String skin) { this.skin = skin; } public String getEntityEncoding() { return entityEncoding; } public void setEntityEncoding(String entity_encoding) { this.entityEncoding = entity_encoding; } public String getThemeAdvancedToolbarLocation() { return themeAdvancedToolbarLocation; } public void setThemeAdvancedToolbarLocation(String theme_advanced_toolbar_location) { this.themeAdvancedToolbarLocation = theme_advanced_toolbar_location; } public String getThemeAdvancedToolbarAlign() { return themeAdvancedToolbarAlign; } public void setThemeAdvancedToolbarAlign(String theme_advanced_toolbar_align) { this.themeAdvancedToolbarAlign = theme_advanced_toolbar_align; } public String getThemeAdvancedStatusbarLocation() { return themeAdvancedStatusbarLocation; } public void setThemeAdvancedStatusbarLocation(String theme_advanced_statusbar_location) { this.themeAdvancedStatusbarLocation = theme_advanced_statusbar_location; } public String getThemeAdvancedResizing() { return themeAdvancedResizing; } public void setThemeAdvancedResizing(String theme_advanced_resizing) { this.themeAdvancedResizing = theme_advanced_resizing; } public String getContentCss() { return contentCss; } public void setContentCss(String content_css) { this.contentCss = content_css; } public String getTemplateExternalListUrl() { return templateExternalListUrl; } public void setTemplateExternalListUrl(String template_external_list_url) { this.templateExternalListUrl = template_external_list_url; } public String getExternalLinkListUrl() { return externalLinkListUrl; } public void setExternalLinkListUrl(String external_link_list_url) { this.externalLinkListUrl = external_link_list_url; } public String getExternalImageListUrl() { return externalImageListUrl; } public void setExternalImageListUrl(String external_image_list_url) { this.externalImageListUrl = external_image_list_url; } public String getMediaExternalListUrl() { return mediaExternalListUrl; } public void setMediaExternalListUrl(String media_external_list_url) { this.mediaExternalListUrl = media_external_list_url; } public String getPlugins() { String plug = ""; int c = 1; for (String p : plugins) { plug += p; if (c < plugins.length) { plug += ", "; } } return plug; } public void setPlugins(String[] plugins) { this.plugins = plugins; } public String getThemeAdvancedButtons1() { String button1 = ""; int c = 1; for (String p : themeAdvancedButtons1) { button1 += p; if (c < themeAdvancedButtons1.length) { button1 += ", "; } } return button1; } public void setThemeAdvancedButtons1(String[] theme_advanced_buttons1) { this.themeAdvancedButtons1 = theme_advanced_buttons1; } public String getThemeAdvancedButtons2() { String button2 = ""; int c = 1; for (String p : themeAdvancedButtons2) { button2 += p; if (c < themeAdvancedButtons2.length) { button2 += ", "; } } return button2; } public void setThemeAdvancedButtons2(String[] theme_advanced_buttons2) { this.themeAdvancedButtons2 = theme_advanced_buttons2; } public String getThemeAdvancedButtons3() { String button3 = ""; int c = 1; for (String p : themeAdvancedButtons3) { button3 += p; if (c < themeAdvancedButtons3.length) { button3 += ", "; } } return button3; } public void setThemeAdvancedButtons3(String[] theme_advanced_buttons3) { this.themeAdvancedButtons3 = theme_advanced_buttons3; } public String getThemeAdvancedButtons4() { String button4 = ""; int c = 1; for (String p : themeAdvancedButtons4) { button4 += p; if (c < themeAdvancedButtons4.length) { button4 += ", "; } } return button4; } public void setThemeAdvancedButtons4(String[] theme_advanced_buttons4) { this.themeAdvancedButtons4 = theme_advanced_buttons4; } public String getElements() { return elements; } public void setElements(String elements) { this.elements = elements; } }
gwt代码 DefaultTinyMCEConfiguration tinyMCE默认配置类
public class DefaultTinyMCEConfiguration extends AbstractTinyMCEConfiguration { }
目录结构: