How to integrate CKEditor in GWT

后端 未结 4 875
挽巷
挽巷 2021-01-13 12:35

I\'m looking for a way to integrate CKEditor in my GWT project.

I\'ve made some googling and found this project: https://code.google.com/p/gwt-ckeditor/ which has be

相关标签:
4条回答
  • 2021-01-13 12:58

    Patrice's answer was very helpful, however it initially did not work for me because TextArea text = new TextArea(); was creating a TextArea with no id field. To solve this I just manually added an id field with:

    text.getElement().setId("make_up_an_id_name_here");
    

    Also make sure you put the ckeditor folder in your war directory.

    If you choose to link to it in your project_name.html file, add this line above the line that inserts your main ...nocache.js script:

    <script type="text/javascript" src="ckeditor/ckeditor.js"></script>
    
    0 讨论(0)
  • 2021-01-13 13:06

    text.getElement().setId(DOM.createUniqueId());

    0 讨论(0)
  • 2021-01-13 13:09

    You can use JSNI for activate the CKEditor. For loadning the javascript file, either you load this in the html page, or by using ScriptInjector and StyleInjector.

    In GWT, create a componant :

    package com.google.editor;
    
    import com.google.gwt.core.client.JavaScriptObject;
    import com.google.gwt.user.client.TakesValue;
    import com.google.gwt.user.client.ui.Composite;
    import com.google.gwt.user.client.ui.TextArea;
    
    public class CKeditor extends Composite implements TakesValue<String> {
      TextArea text = new TextArea();
      protected JavaScriptObject editor;
    
      public CKeditor() {
        initWidget(text);
      }
    
      @Override
      protected void onAttach() {
        super.onAttach();
        initCKEditor(text.getElement().getId());
      }
    
      private native void initCKEditor(String id) /*-{
        this.@com.google.editor.CKeditor::editor =  CKEDITOR.replace( id );
      }-*/;
    
      @Override
      public native void setValue(String value) /*-{
        this.@com.google.editor.CKeditor::editor.setData(value);
      }-*/;
    
      @Override
      public native String getValue() /*-{
        this.@com.google.editor.CKeditor::editor.setData(value);
      }-*/;
    }
    

    It's a sample, add all config you want to set in CKEditor

    0 讨论(0)
  • 2021-01-13 13:21

    I'd also suggest ScriptInjector as it gives you a callback that the script has finally loaded and everything's fine.

    Thereafter you have to use $wnd to address CKEDITOR properly and replace the textarea in native code:

      private native void initCKEditor(String id) /*-{
        this.@com.google.editor.CKeditor::editor =  $wnd.CKEDITOR.replace( id );
      }-*/;
    
    0 讨论(0)
提交回复
热议问题