Quantcast
Channel: SmartClient Forums
Viewing all articles
Browse latest Browse all 4756

About ckEditor integration

$
0
0
Hi Isomorphic,I was attempting to integrate ckeditor with smartgwt.
First,I bind ckeditor for the "animals" datasource as follows:
Code:

        DataSource ds = DataSource.get("animals");
        DataSourceField information = ds.getField("information");
        ckEditor = new CKEditorItem("information", "信息");
        information.setEditorType(ckEditor);
        ckEditor.setValue(DEFAULT_HTML_CONTENT);
        ckEditor.setShowTitle(false);
        ckEditor.setWidth("100");
        ckEditor.setHeight("500");

My detail implementation code is shown as follows:
BuiltInDS.java
Code:

public void onModuleLoad() {
                try {
                        DataSource ds = DataSource.get("animals");
                        DataSourceField information = ds.getField("information");
                       
                        ckEditor = new CKEditorItem("information", "信息");
                        information.setEditorType(ckEditor);
                       
                        ckEditor.setValue(DEFAULT_HTML_CONTENT);
                        ckEditor.setShowTitle(false);
                        ckEditor.setWidth("100");
                        ckEditor.setHeight("500");
                       
                        VLayout main = new VLayout();
                        main.setSize("100%", "80%");
                        final DynamicForm form = new DynamicForm();
                        form.setBorder("2px solid blue");
                        form.setNumCols(2);
                        form.setAutoFocus(true);
                        form.setDataSource(ds);
                        IButton btnPrintHTML = new IButton("打印HTML");
                        btnPrintHTML.addClickHandler(btnPrintHTML_onClick);

                        IButton save = new IButton("保存");
                        save.addClickHandler( new ClickHandler() {
                               
                                @Override
                                public void onClick(ClickEvent event) {
                                        form.saveData();
                                }
                        });
                        form.setSize( "50%", "80%" );
                        HLayout hMain = new HLayout();
                       
                        /************************** start *************************/
                final ListGrid countryGrid = new ListGrid(); 
                countryGrid.setWidth(500); 
                countryGrid.setHeight(224); 
                countryGrid.setShowAllRecords(true); 
         
                ListGridField countryCodeField = new ListGridField("countryCode", "代码", 40); 
                ListGridField nameField = new ListGridField("countryName", "国家"); 
                ListGridField independenceField = new ListGridField("independence", "独立日", 225); 
                independenceField.setType(ListGridFieldType.DATE); 
                ListGridField populationField = new ListGridField("population", "人口"); 
                populationField.setType(ListGridFieldType.INTEGER); 
                ListGridField gdpField = new ListGridField("gdp", "GDP"); 
                gdpField.setType(ListGridFieldType.FLOAT); 
         
                countryGrid.setFields(new ListGridField[] {countryCodeField, nameField, independenceField, 
                                                          populationField, gdpField}); 
                countryGrid.setCanResizeFields(true); 
                countryGrid.setData(CountrySampleData.getRecords()); 
                        /************************** end *************************/
                       
                        hMain.setMembers(btnPrintHTML, save, countryGrid);
                        main.setMembers(form, hMain );
                        main.draw();
       
                } catch (Exception exc) {
                        SC.warn("An exception has occured:<br>" + exc.toString());
                }

        }

CKEditor.java
Code:

package com.smartgwt.sample.client;

import com.smartgwt.client.widgets.form.fields.CanvasItem;

public class CKEditorItem extends CanvasItem {
        private CKEditor ckeCanvas;

        public CKEditorItem(String name) {
                super(name);
                ckeCanvas = new CKEditor(name);
                this.setCanvas(ckeCanvas);
                setShouldSaveValue( true );
        }

        public CKEditorItem(String name, String title) {
                super( name, title );
               
                ckeCanvas = new CKEditor(name);
                this.setCanvas(ckeCanvas);
                setShouldSaveValue( true );
        }

        @Override
        public void setWidth(String width) {
                super.setWidth(width);
                ckeCanvas.setWidth(width);
        }
        @Override
        public void setWidth(int width) {
                super.setWidth(width);
                ckeCanvas.setWidth(width);
        }
        @Override
        public void setHeight(String height) {
                super.setHeight(height);
                ckeCanvas.setHeight(height);
        }
       
        @Override
        public void setHeight(int height) {
                super.setHeight(height);
                ckeCanvas.setHeight(height);
        }
       
        @Override
        public Object getValue() {
                return getCKEditorValue(ckeCanvas.getID()+"_ta");
        }       
        @Override
        public void setValue(String value) {
                super.setValue(value);
                if(ckeCanvas.isLoaded())
                        setCKEditorValue(ckeCanvas.getID()+"_ta", value);
                else
                        ckeCanvas.setContents(value);
        }
}

CKEditorItem.java
Code:

package com.smartgwt.sample.client;

import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.events.DrawEvent;
import com.smartgwt.client.widgets.events.DrawHandler;

public class CKEditor extends Canvas{
        {
                setOverflow(Overflow.VISIBLE);
                setCanDragResize(false);
                setRedrawOnResize(false);
                setZIndex(0);
        }
       
        private boolean loaded=false;

        public CKEditor(String id){
                super(id);
                addDrawHandler(new DrawHandler() {
                       
                        @Override
                        public void onDraw(DrawEvent event) {
                                loadCKEditor();
                        }
                });
        }
        @Override
        public String getInnerHTML() {
                if(this.getContents() != null){
                        return "<textarea style='width=100%;height=100%' id=" + this.getID() + "_ta>"+
                                getContents()+"</textarea>";
                }
                return "<textarea style='width=100%;height=100%' id=" + this.getID() + "_ta></textarea>";
        }
        public boolean isLoaded() {
                return loaded;
        }
}

I was wondering if my implementation method is appropriate. What's your suggestion about ckEditor integration.
. smartgwtee-4.0p、ie9.0、eclipse

Viewing all articles
Browse latest Browse all 4756

Trending Articles