gwt jsni集成tinyMCE

[b]gwt代码 TinyMCE类[/b]

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 : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getMode()(),
theme : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getTheme()(),
elements : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getElements()(),
skin : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getSkin()(),
entity_encoding : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getEntityEncoding()(),
plugins : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getPlugins()(),

// Theme options
// excluded buttons: ,fontselect,fontsizeselect,preview,image,help,|,forecolor,backcolor tablecontrols,|,,emotions,media,|,print
theme_advanced_buttons1 : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getThemeAdvancedButtons1()(),
theme_advanced_buttons2 : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getThemeAdvancedButtons2()(),
theme_advanced_buttons3 : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getThemeAdvancedButtons3()(),
//theme_advanced_buttons4 : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getThemeAdvancedButtons4()(),
theme_advanced_toolbar_location : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getThemeAdvancedToolbarLocation()(),
theme_advanced_toolbar_align : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getThemeAdvancedToolbarAlign()(),
theme_advanced_statusbar_location : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getThemeAdvancedStatusbarLocation()(),
theme_advanced_resizing : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getThemeAdvancedResizing()(),

// Example content CSS (should be your site CSS)
content_css : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getContentCss()(),

// Drop lists for link/image/media/template dialogs
template_external_list_url : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getTemplateExternalListUrl()(),
external_link_list_url : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getExternalLinkListUrl()(),
external_image_list_url : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getExternalImageListUrl()(),
media_external_list_url : conf.@com.orclh.gwt.client.client.AbstractTinyMCEConfiguration::getMediaExternalListUrl()(),

// Replace values for the template plugin
template_replace_values : {
username : "Some User",
staffid : "991234"
}

});


}-*/;

public AbstractTinyMCEConfiguration getConfig() {
return config;
}
}


[b]gwt代码 AbstractTinyMCEConfiguration类,里面的参数用于配置tinyMCE的功能键;[/b]
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;
}

}


[b]gwt代码 DefaultTinyMCEConfiguration tinyMCE默认配置类[/b]
public class DefaultTinyMCEConfiguration extends AbstractTinyMCEConfiguration {

}

目录结构:

[img]http://dl.iteye.com/upload/attachment/582296/1b5fa5a3-5a4e-3438-8199-d0316bbd1779.jpg[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值