Как вызвать перспективу Eclipse RCP (метод Java Class) из кода JavaScript? - PullRequest
0 голосов
/ 11 января 2019

Я хотел бы вызвать или открыть Перспективу (или Представления) из функции JavaScript.

У меня есть приложение Eclipse RCP, в которое я встроил свою HTML-страницу. При нажатии кнопки со страницы HTML, я хотел бы открыть перспективу Eclipse RCP или View.

Я попытался, как показано ниже из функции JavaScript

function populateGeometryData(){
alert('Inside populateGeometryData() function !!!!!');
var geoMetryDataClass = Java.type("com.test.app.ui.view.PageView");
geoMetryDataClass.populateGemetryData("TestVal");
}

Где PageView - одна из моих перспектив. Но я получил «Uncaught ReferenceError: Java не определена».
Я думаю, эта ошибка из-за того, что Chrome больше не поддерживает NPAPI (технология, необходимая для апплетов Java). Итак, есть ли другие способы вызвать метод класса Java из JavaScript?

Ниже показано, как я запускаю свою HTML-страницу из кода Eclipse RCP.

   @Override
   public void createPartControl(Composite parent) {

    String user = ExecuteRestService.getLoggedInUser();
    System.out.println("Login User "+user);


    String html = "/Pages/index.html";
    Bundle appBundle = FrameworkUtil.getBundle(this.getClass());
    if(appBundle == null) {
        System.out.println("bundle  is null");
        return;
    }

    URL url = FileLocator.find(appBundle, new Path(html), null);

    try {
        url = FileLocator.toFileURL(url);
    } catch (IOException e) {
        // TODO Auto-generated catch block@*
        e.printStackTrace();
    }
    Browser  browser = new Browser(parent, SWT.None);
    String urlVal = url.toString()+"?LoginUser="+user;
    browser.setUrl(urlVal);

}

Я ищу несколько предложений для вызова метода класса Java или для вызова перспективы Eclipse RCP из функции JavaScript. Заранее спасибо.

ОБНОВЛЕНИЕ

Как и Грег , предложенный в разделе комментариев, используя " BrowserFunction ", мы можем вызвать метод класса Java в Eclipse RCP из javascript, если вы используете браузер SWT для запуска своей HTML-страницы.

new BrowserFunction(browser, "populateGeometricData")
    {
        @Override
        public Object function(Object[] objects)
        {

            if(objects.length == 0) {
                System.out.println(" array is zero");
            }else {
                System.out.println("Call from Javascript" 
                         + objects.length);
                System.out.println("Request Id "+ objects[0]);
            }


            return null;
        }
    };
...