小编cgr*_*gcn的帖子

如何从Java评估我自己的Groovy脚本?

我尝试从Java类调用我自己的groovy脚本函数,用户也可以使用标准表达式.

例如:

GroovyShell shell = new GroovyShell();
Script scrpt = shell.parse("C:/Users/Cagri/Desktop/MyCustomScript.groovy");

Binding binding = new Binding();
binding.setVariable("str1", "foo");
binding.setVariable("str2", "boo");             

scrpt.setBinding(binding);
System.out.println(scrpt.evaluate("customConcat(str1, str2)")); //my custom method
System.out.println(scrpt.evaluate("str1.concat(str2)"));
Run Code Online (Sandbox Code Playgroud)

这是MyCustomScript.groovy

def area(def sf) {
    Feature f = new Feature(sf);
    f.getGeom().area;
}

def customConcat(def string1, def string2) {
    string1.concat(string2)
}
Run Code Online (Sandbox Code Playgroud)

运行时,此行scrpt.evaluate("str1.concat(str2)")按预期工作,但scrpt.evaluate("customConcat(str1, str2)")会引发异常:

groovy.lang.MissingMethodException: No signature of method: Script1.customConcat() is applicable for argument types: (java.lang.String, java.lang.String) values: [foo, boo]
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
at …
Run Code Online (Sandbox Code Playgroud)

java groovy groovyshell scriptengine groovyclassloader

3
推荐指数
1
解决办法
6630
查看次数

如何在Eclipse RCP中向Window菜单添加视图?

我想将自定义视图添加到"窗口"菜单中.此代码仅添加打开的视图

    IMenuManager pencereler = new MenuManager("sample");
    pencereler.add(ContributionItemFactory.VIEWS_SHORTLIST.create(window));
    viewMenu.add(pencereler);
Run Code Online (Sandbox Code Playgroud)

如果我打开自定义视图,则会将其添加到此菜单中.但是,我想在此菜单中始终显示我的自定义视图,而不仅仅是在打开它之后.

那么我可以从视图中创建"ContributionItem"还是有任何其他方式,例如向"plugin.xml"添加一些行或将我的视图的id添加到任何扩展名?

eclipse-plugin menu view eclipse-rcp

2
推荐指数
1
解决办法
2377
查看次数

Eclipse RCP - 如何以编程方式创建和打开View?

我想在执行操作时打开包含表的View.

我可以通过viewId打开该代码的视图:

    display.asyncExec(new Runnable(){

        public void run() {
        ApplicationGIS.getView(true, viewId);

    }});
Run Code Online (Sandbox Code Playgroud)

此视图的id在plugin.xml上定义,但我必须将一些参数传递给此视图上的表.我可以以编程方式创建我的自定义视图,但这次我无法打开它,因为我没有它的id.这是我的观点类:

public class MyCustomView extends ViewPart {

    private Text text;
    private Table table;
    private TableViewer tableViewer;


    @Override
    public void createPartControl(Composite parent) {
        // TODO Auto-generated method stub
        parent.setLayout(new GridLayout(4, false));

        Composite composite = new Composite(parent, SWT.NONE);
        composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1));
        composite.setLayout(new GridLayout(2, false));

        text = new Text(composite, SWT.BORDER);
        text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

        Composite composite_1 = new Composite(composite, SWT.NONE);
        composite_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, …
Run Code Online (Sandbox Code Playgroud)

swt eclipse-plugin view eclipse-rcp

0
推荐指数
1
解决办法
1万
查看次数