Я хочу создать виджет highchart с помощью Eclipse RAP и следую часто задаваемым вопросам RAP/Custom Widgets, но есть ошибка?

я хочу создать виджет highchart с помощью Eclipse RAP, и я следую официальному руководству, подобному этому

ручки:

var CKEDITOR_BASEPATH = "rwt-resources/";
(function(){
    'use strict';
    rap.registerTypeHandler( "rap.sunline.HighCharts", {
       factory : function( properties ) {
            var parent = rap.getObject( properties.parent );
            // var element = document.createElement( "div" );
            // parent.append( element );
            // $(element).html("askldfjaskljdk");
            return {};
       }
    });
}());

виджет.java:

public class HightChartComposite extends Composite {

    private static final String RESOURCES_PATH = "resources/";
    private static final String REGISTER_PATH = "hightcharts/";

    private static final String[] RESOURCE_FILES = { "jquery-2.1.0.min.js", "highcharts.js","ChartPaintListener.js" };
    private static final String REMOTE_TYPE = "rap.sunline.HightCharts";

    private final RemoteObject remoteObject;

    private final OperationHandler operationHandler = new AbstractOperationHandler() {
        @Override
        public void handleSet(JsonObject properties) {
//          JsonValue textValue = properties.get("text");
//          if (textValue != null) {
//              text = textValue.asString();
//          }
        }
    };

    public HightChartComposite(Composite parent, int style) {
        super(parent, style);
        registerResources();
        loadJavaScript();
        Connection connection = RWT.getUISession().getConnection();
        remoteObject = connection.createRemoteObject(REMOTE_TYPE);
        remoteObject.setHandler(operationHandler);
        remoteObject.set("parent", WidgetUtil.getId(this));
    }

    private void registerResources() {
        ResourceManager resourceManager = RWT.getResourceManager();
        boolean isRegistered = resourceManager.isRegistered(REGISTER_PATH + RESOURCE_FILES[0]);
        if (!isRegistered) {
            try {
                for (String fileName : RESOURCE_FILES) {
                    register(resourceManager, fileName);
                }
            } catch (IOException ioe) {
                throw new IllegalArgumentException("Failed to load resources", ioe);
            }
        }
    }

    private void loadJavaScript() {
        JavaScriptLoader jsLoader = RWT.getClient().getService(JavaScriptLoader.class);
        ResourceManager resourceManager = RWT.getResourceManager();
        jsLoader.require(resourceManager.getLocation(REGISTER_PATH + "jquery-2.1.0.min.js"));
        jsLoader.require(resourceManager.getLocation(REGISTER_PATH + "highcharts.js"));
        jsLoader.require(resourceManager.getLocation(REGISTER_PATH + "ChartPaintListener.js"));
    }

    private void register(ResourceManager resourceManager, String fileName) throws IOException {
        ClassLoader classLoader = HightChartComposite.class.getClassLoader();
        InputStream inputStream = classLoader.getResourceAsStream(RESOURCES_PATH + fileName);
        try {
            resourceManager.register(REGISTER_PATH + fileName, inputStream);
        } finally {
            inputStream.close();
        }
    }

    // //////////////////
    // overwrite methods

    @Override
    public void setLayout(Layout layout) {
        throw new UnsupportedOperationException("Cannot change internal layout of CkEditor");
    }

}

ошибка возникает:

Неперехваченная ошибка: операция «создать» для цели «r6» типа «null» не удалась: нет обработчика для типа rap.sunline.HightCharts Properties: parent = w5

и у меня есть вопрос по этому поводу, что отличается от extends Canvas и Composite;


person wykCN    schedule 10.07.2015    source источник


Ответы (1)


Вы забыли реализовать сеттеры в своем коде javascript.

Созданный объект сохраняется фреймворком под своим идентификатором объекта. Этот объект должен реализовать методы установки, которые соответствуют свойствам, определенным в обработчике, которые затем будут вызываться, когда сервер отправляет операцию установки для данного свойства.

person Paul    schedule 19.01.2016