Я хотел бы вызвать или открыть Перспективу (или Представления) из функции 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;
}
};