Java 如何使用喷射器创建GEF4 FXView/FXEditor

Java 如何使用喷射器创建GEF4 FXView/FXEditor,java,eclipse-plugin,eclipse-rcp,rcp,eclipse-gef,Java,Eclipse Plugin,Eclipse Rcp,Rcp,Eclipse Gef,我正在尝试在我的eclipse rcp应用程序中创建一个GEF4FXView(或FXEditor),该应用程序使用GEF4。我想构建一个看起来像GEF4的视图,这就是我创建扩展FXView的视图的原因: import java.util.List; import org.eclipse.gef4.mvc.fx.MvcFxModule; import org.eclipse.gef4.mvc.fx.ui.MvcFxUiModule; import org.eclipse.gef4.mvc.fx.

我正在尝试在我的eclipse rcp应用程序中创建一个GEF4FXView(或FXEditor),该应用程序使用GEF4。我想构建一个看起来像GEF4的视图,这就是我创建扩展FXView的视图的原因:

import java.util.List;

import org.eclipse.gef4.mvc.fx.MvcFxModule;
import org.eclipse.gef4.mvc.fx.ui.MvcFxUiModule;
import org.eclipse.gef4.mvc.fx.ui.parts.FXView;

import com.google.inject.Guice;
import com.google.inject.util.Modules;


public class MyView extends FXView {

    public MyView() {
        super(Guice.createInjector(Modules.override(new MvcFxModule())
                .with(new MvcFxUiModule())));
    }

    @Override
    protected List<? extends Object> getContents() {
        // TODO Auto-generated method stub
        return null;
    }

}
MyMVCFX模块:

public class MyMvcFxModule extends MvcModule<Node> {

    ...

    protected void bindIHandlePartFactory() {
        // TODO: bind to viewer scope, otherwise stateful factories might not
        // work properly
        binder().bind(new TypeLiteral<IHandlePartFactory<Node>>() {
        }).to(FXDefaultHandlePartFactory.class) // <---- error here
                .in(AdaptableScopes.typed(FXViewer.class));
    }

    ...

    @Override
    protected void configure() {
        super.configure();

        // bind default factories for handles and feedback
        bindIHandlePartFactory(); // error
        bindIFeedbackPartFactory(); // error
        // error on next binding also

        ...
    }

}
目标:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?><target name="Running Platform" sequenceNumber="8">
<locations>
<location path="${eclipse_home}" type="Profile"/>
</locations>
<includeBundles>
...
<plugin id="com.google.gerrit.common"/>
<plugin id="com.google.gerrit.prettify"/>
<plugin id="com.google.gerrit.reviewdb"/>
<plugin id="com.google.gson"/>
<plugin id="com.google.guava"/>
<plugin id="com.google.guava.source"/>
<plugin id="com.google.gwt.servlet"/>
<plugin id="com.google.gwtjsonrpc"/>
<plugin id="com.google.gwtorm"/>
<plugin id="com.google.inject"/>
<plugin id="com.google.inject.multibindings"/>
...
<plugin id="javax.activation"/>
<plugin id="javax.annotation"/>
<plugin id="javax.annotation.jre"/>
<plugin id="javax.annotation.source"/>
<plugin id="javax.el"/>
<plugin id="javax.el.source"/>
<plugin id="javax.inject"/>
<plugin id="javax.inject.source"/>
<plugin id="javax.servlet"/>
<plugin id="javax.servlet.jsp"/>
<plugin id="javax.servlet.jsp.source"/>
<plugin id="javax.servlet.source"/>
<plugin id="javax.xml"/>
<plugin id="javax.xml.bind"/>
<plugin id="javax.xml.stream"/>
...
<plugin id="org.eclipse.fx.core"/>
<plugin id="org.eclipse.fx.core.databinding"/>
<plugin id="org.eclipse.fx.core.databinding.source"/>
<plugin id="org.eclipse.fx.core.di"/>
<plugin id="org.eclipse.fx.core.di.context"/>
<plugin id="org.eclipse.fx.core.di.context.source"/>
<plugin id="org.eclipse.fx.core.di.source"/>
<plugin id="org.eclipse.fx.core.fxml"/>
<plugin id="org.eclipse.fx.core.fxml.source"/>
<plugin id="org.eclipse.fx.core.guice"/>
<plugin id="org.eclipse.fx.core.guice.source"/>
<plugin id="org.eclipse.fx.core.log4j"/>
<plugin id="org.eclipse.fx.core.log4j.source"/>
<plugin id="org.eclipse.fx.core.p2"/>
<plugin id="org.eclipse.fx.core.p2.source"/>
<plugin id="org.eclipse.fx.core.slf4j"/>
<plugin id="org.eclipse.fx.core.slf4j.source"/>
<plugin id="org.eclipse.fx.core.source"/>
<plugin id="org.eclipse.fx.emf.databinding"/>
<plugin id="org.eclipse.fx.emf.databinding.source"/>
<plugin id="org.eclipse.fx.emf.edit.ui"/>
<plugin id="org.eclipse.fx.emf.edit.ui.source"/>
<plugin id="org.eclipse.fx.formats.svg"/>
<plugin id="org.eclipse.fx.formats.svg.source"/>
<plugin id="org.eclipse.fx.javafx"/>
<plugin id="org.eclipse.fx.javafx.source"/>
<plugin id="org.eclipse.fx.osgi"/>
<plugin id="org.eclipse.fx.osgi.source"/>
<plugin id="org.eclipse.fx.osgi.util"/>
<plugin id="org.eclipse.fx.osgi.util.source"/>
<plugin id="org.eclipse.fx.ui.animation"/>
<plugin id="org.eclipse.fx.ui.animation.source"/>
<plugin id="org.eclipse.fx.ui.controls"/>
<plugin id="org.eclipse.fx.ui.controls.source"/>
<plugin id="org.eclipse.fx.ui.databinding"/>
<plugin id="org.eclipse.fx.ui.databinding.source"/>
<plugin id="org.eclipse.fx.ui.di"/>
<plugin id="org.eclipse.fx.ui.di.interopt"/>
<plugin id="org.eclipse.fx.ui.di.source"/>
<plugin id="org.eclipse.fx.ui.dialogs"/>
<plugin id="org.eclipse.fx.ui.dialogs.source"/>
<plugin id="org.eclipse.fx.ui.keybindings"/>
<plugin id="org.eclipse.fx.ui.keybindings.e4"/>
<plugin id="org.eclipse.fx.ui.keybindings.e4.source"/>
<plugin id="org.eclipse.fx.ui.keybindings.generic"/>
<plugin id="org.eclipse.fx.ui.keybindings.generic.source"/>
<plugin id="org.eclipse.fx.ui.keybindings.source"/>
<plugin id="org.eclipse.fx.ui.mobile"/>
<plugin id="org.eclipse.fx.ui.mobile.source"/>
<plugin id="org.eclipse.fx.ui.panes"/>
<plugin id="org.eclipse.fx.ui.panes.source"/>
<plugin id="org.eclipse.fx.ui.services"/>
<plugin id="org.eclipse.fx.ui.services.source"/>
<plugin id="org.eclipse.fx.ui.theme"/>
<plugin id="org.eclipse.fx.ui.theme.source"/>
<plugin id="org.eclipse.fx.ui.workbench.base"/>
<plugin id="org.eclipse.fx.ui.workbench.base.source"/>
<plugin id="org.eclipse.fx.ui.workbench.fx"/>
<plugin id="org.eclipse.fx.ui.workbench.fx.source"/>
<plugin id="org.eclipse.fx.ui.workbench.renderers.base"/>
<plugin id="org.eclipse.fx.ui.workbench.renderers.base.source"/>
<plugin id="org.eclipse.fx.ui.workbench.renderers.fx"/>
<plugin id="org.eclipse.fx.ui.workbench.renderers.fx.source"/>
<plugin id="org.eclipse.fx.ui.workbench.services"/>
<plugin id="org.eclipse.fx.ui.workbench.services.source"/>
<plugin id="org.eclipse.fx.ui.workbench3"/>
<plugin id="org.eclipse.gef"/>
<plugin id="org.eclipse.gef4.cloudio"/>
<plugin id="org.eclipse.gef4.cloudio.doc"/>
<plugin id="org.eclipse.gef4.cloudio.tests"/>
<plugin id="org.eclipse.gef4.cloudio.ui"/>
<plugin id="org.eclipse.gef4.common"/>
<plugin id="org.eclipse.gef4.common.doc"/>
<plugin id="org.eclipse.gef4.dot"/>
<plugin id="org.eclipse.gef4.dot.ui"/>
<plugin id="org.eclipse.gef4.fx"/>
<plugin id="org.eclipse.gef4.fx.doc"/>
<plugin id="org.eclipse.gef4.fx.ui"/>
<plugin id="org.eclipse.gef4.geometry"/>
<plugin id="org.eclipse.gef4.geometry.convert.fx"/>
<plugin id="org.eclipse.gef4.geometry.convert.swt"/>
<plugin id="org.eclipse.gef4.geometry.convert.swt.tests"/>
<plugin id="org.eclipse.gef4.geometry.doc"/>
<plugin id="org.eclipse.gef4.geometry.tests"/>
<plugin id="org.eclipse.gef4.graph"/>
<plugin id="org.eclipse.gef4.graph.doc"/>
<plugin id="org.eclipse.gef4.graph.source"/>
<plugin id="org.eclipse.gef4.graph.ui.source"/>
<plugin id="org.eclipse.gef4.graphics"/>
<plugin id="org.eclipse.gef4.graphics.doc"/>
<plugin id="org.eclipse.gef4.graphics.swt"/>
<plugin id="org.eclipse.gef4.graphics.swt.tests"/>
<plugin id="org.eclipse.gef4.graphics.tests"/>
<plugin id="org.eclipse.gef4.layout"/>
<plugin id="org.eclipse.gef4.layout.doc"/>
<plugin id="org.eclipse.gef4.layout.source"/>
<plugin id="org.eclipse.gef4.mvc"/>
<plugin id="org.eclipse.gef4.mvc.doc"/>
<plugin id="org.eclipse.gef4.mvc.examples"/>
<plugin id="org.eclipse.gef4.mvc.examples.logo"/>
<plugin id="org.eclipse.gef4.mvc.examples.logo.ui"/>
<plugin id="org.eclipse.gef4.mvc.fx"/>
<plugin id="org.eclipse.gef4.mvc.fx.ui"/>
<plugin id="org.eclipse.gef4.mvc.ui"/>
<plugin id="org.eclipse.gef4.swtfx" version="0.1.0.201408081506"/>
<plugin id="org.eclipse.gef4.swtfx" version="0.1.0.201311151505"/>
<plugin id="org.eclipse.gef4.swtfx.doc"/>
<plugin id="org.eclipse.gef4.swtfx.tests"/>
<plugin id="org.eclipse.gef4.zest.core"/>
<plugin id="org.eclipse.gef4.zest.core.source"/>
<plugin id="org.eclipse.gef4.zest.doc"/>
<plugin id="org.eclipse.gef4.zest.examples"/>
<plugin id="org.eclipse.gef4.zest.examples.graph"/>
<plugin id="org.eclipse.gef4.zest.examples.graph.ui"/>
<plugin id="org.eclipse.gef4.zest.fx"/>
<plugin id="org.eclipse.gef4.zest.fx.ui"/>
<plugin id="org.eclipse.gef4.zest.jface"/>
<plugin id="org.eclipse.gef4.zest.jface.source"/>
<plugin id="org.eclipse.gef4.zest.ui"/>
...
<plugin id="org.eclipse.ui"/>
<plugin id="org.eclipse.ui.browser"/>
<plugin id="org.eclipse.ui.browser.source"/>
<plugin id="org.eclipse.ui.cheatsheets"/>
<plugin id="org.eclipse.ui.cheatsheets.source"/>
<plugin id="org.eclipse.ui.console"/>
<plugin id="org.eclipse.ui.console.source"/>
<plugin id="org.eclipse.ui.editors"/>
<plugin id="org.eclipse.ui.editors.source"/>
<plugin id="org.eclipse.ui.externaltools"/>
<plugin id="org.eclipse.ui.externaltools.source"/>
<plugin id="org.eclipse.ui.forms"/>
<plugin id="org.eclipse.ui.forms.source"/>
<plugin id="org.eclipse.ui.ide"/>
<plugin id="org.eclipse.ui.ide.application"/>
<plugin id="org.eclipse.ui.ide.application.source"/>
<plugin id="org.eclipse.ui.ide.source"/>
<plugin id="org.eclipse.ui.intro"/>
<plugin id="org.eclipse.ui.intro.source"/>
<plugin id="org.eclipse.ui.intro.universal"/>
<plugin id="org.eclipse.ui.intro.universal.source"/>
<plugin id="org.eclipse.ui.monitoring"/>
<plugin id="org.eclipse.ui.monitoring.source"/>
<plugin id="org.eclipse.ui.navigator"/>
<plugin id="org.eclipse.ui.navigator.resources"/>
<plugin id="org.eclipse.ui.navigator.resources.source"/>
<plugin id="org.eclipse.ui.navigator.source"/>
<plugin id="org.eclipse.ui.net"/>
<plugin id="org.eclipse.ui.net.source"/>
<plugin id="org.eclipse.ui.source"/>
<plugin id="org.eclipse.ui.themes"/>
<plugin id="org.eclipse.ui.themes.source"/>
<plugin id="org.eclipse.ui.trace"/>
<plugin id="org.eclipse.ui.views"/>
<plugin id="org.eclipse.ui.views.log"/>
<plugin id="org.eclipse.ui.views.properties.tabbed"/>
<plugin id="org.eclipse.ui.views.properties.tabbed.source"/>
<plugin id="org.eclipse.ui.views.source"/>
<plugin id="org.eclipse.ui.win32"/>
<plugin id="org.eclipse.ui.win32.source"/>
<plugin id="org.eclipse.ui.workbench"/>
<plugin id="org.eclipse.ui.workbench.source"/>
<plugin id="org.eclipse.ui.workbench.texteditor"/>
<plugin id="org.eclipse.ui.workbench.texteditor.source"/>
...
</includeBundles>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
<nl>fr_FR</nl>
</environment>
<launcherArgs>
<vmArgs>-Dosgi.requiredJavaVersion=1.7 -Xms40m -Xmx512m</vmArgs>
</launcherArgs>
</target>
编辑:

最后,我通过在FireMVC模块中添加此绑定解决了问题:

protected void bindIContentPartFactory() {
    binder().bind(new TypeLiteral<IContentPartFactory<Node>>() {
    }).toInstance(new FXLogoContentPartFactory());
}

protected void configure() {
    super.configure();
    bindIContentPartFactory();
}
FireView:

public FireView() {
    super(Guice.createInjector(Modules.override(new FireMvcModule()).with(new FireMvcUiModule())));
}
FireMVC模块:

protected void bindIContentPartFactory() {
    binder().bind(new TypeLiteral<IContentPartFactory<Node>>() {
    }).toInstance(new FXLogoContentPartFactory());
}

protected void configure() {
    super.configure();
    bindIContentPartFactory();
}
受保护的void bindIContentPartFactory(){
binder().bind(新的TypeLiteral()){
}).toInstance(新的FXLogoContentPartFactory());
}
受保护的void configure(){
super.configure();
bindIContentPartFactory();
}

请确保您的MANIFEST.MF没有通过导入包以及所需的包引用com.google.inject包。从所需捆绑包列表中删除com.google.inject,因为包导入已足够。

我的清单正常,我的目标和运行时也正常。我在第一篇文章中添加了一些信息。谢谢
args : -os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -clearPersistedState
vm args : -Dosgi.requiredJavaVersion=1.7 -Xms40m -Xmx512m -Dosgi.framework.extensions=org.eclipse.fx.osgi
public FireView() {
    super(Guice.createInjector(Modules.override(new FireMvcModule()).with(new FireMvcUiModule())));
}
protected void bindIContentPartFactory() {
    binder().bind(new TypeLiteral<IContentPartFactory<Node>>() {
    }).toInstance(new FXLogoContentPartFactory());
}

protected void configure() {
    super.configure();
    bindIContentPartFactory();
}