Я разрабатываю приложение RCP, которое использует Groovy в качестве языка сценариев. Я включил плагин Groovy-Eclipse, чтобы пользователь приложения мог писать код Groovy в приложении с помощью редактора Groovy.Использование редактора Groovy из плагина Groovy-Eclipse в приложении RCP
Скрипты Groovy должны использовать некоторые Java-классы из приложения, как я могу добавить видимость к этим классам в редакторе Groovy, чтобы предоставить пользователю такие функции, как завершение кода, насколько это возможно.
Чтобы выполнить скрипты Groovy, я использую GroovyShell, и я добавляю свойство связыванию, которое передается конструктору GroovyShell.
Это свойство является карта, где я ставлю некоторые объекты, имеющие отношение к моему заявлению:
HashMap<String, Object> plx = new HashMap<String, Object>();
plx.put("element", new Element("xxx"));
Binding binding = new Binding();
binding.setProperty("plx", plx);
Представьте себе, что элемент является классом Java определяется таким образом
class Element
{
String name;
public Element(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}
я могу написать и выполнить следующее Groovy скрипт без проблем
println plx.element.name
и я получаю правильный результат: xxx
Проблемы, которые возникают у меня, это то, что я не знаю, как изменить путь к классу, который использует редактор, чтобы разрешить класс Element для включения завершения кода, когда я редактирую скрипт в своем приложении.
Спасибо @kittaakos за ваш ответ. Я только что редактировал свой вопрос, чтобы попытаться его прояснить. Моя проблема не во время выполнения, а редактирование времени. –
Все понятно, что делает [groovy inferencing engine] (http://contraptionsforprogramming.blogspot.de/2009/11/how-type-inferencing-for-groovy-in.html). Вы можете создать свою собственную реализацию и подключить ее к своему RCP. И у меня такое ощущение, что вы должны его реализовать вручную. По крайней мере, у меня нет лучшей идеи для этого прямо сейчас. Это не ракетостроение, это просто требует некоторых усилий, чтобы это сделать. Также найдите
org.eclipse.jdt.groovy.core.typeLookup
пункт расширения. – kittaakosБольшое спасибо, я буду следовать вашим предложениям. –