我在WorkbenchWindowAdvisor的postWindowOpen方法中调用了这样的方法
windowConfigurer.setShowPerspectiveBar(真);
但透视栏仍然没有显示出来
我在Eclipse RCP应用程序中使用Viewer Framework,我遇到了一种情况,我需要从TableViewer获取(知道在UI中选择了哪一行)所选行.在UI中,用户可以选择一行.Below是我的Tableviewer声明
TableViewer viewer = new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION
| SWT.HIDE_SELECTION);
Run Code Online (Sandbox Code Playgroud)
当用户点击突出显示的特定行时,我能够选择某一行,我想知道用户是选择了哪一行并准确获取行详细信息?我怎样才能实现这一目标?
我有一个JFace表查看器,它包含大量的行,我认为如果每行都有一个简短的描述会更好,作为一种解决方法,我试图实现doubleclick listner,但这不适合我的需要,我不知道是否有像这样的悬停事件,它显示了一个工具提示,其中包含有关特定行的简要信息.
我已经'继承了'一个Eclipse RCP项目,它似乎可以在基于3.6的目标平台集上运行良好.但是,我们需要更新到平台的最新版本,但是当我将目标平台更改为3.7(或4.2)时,我会遇到一些错误.
Type mismatch: cannot convert from Class<capture#1-of ?> to Class<? extends IDatasetProvider>
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议/解释为什么这可能在3.6中正常工作,但在3.7(及更高版本)中没有?关于我将从哪里开始解决这个问题的任何想法也会很棒!
导致此错误的代码片段(出现在b.loadClass部分):
List<Class<? extends IDatasetProvider>> list = new LinkedList<Class<? extends IDatasetProvider>>();
ClassMap<IDatasetProvider, List<String>> map = new ClassMap<IDatasetProvider, List<String>>();
for (IConfigurationElement e : elements)
{
try
{
Bundle b = Platform.getBundle(e.getContributor().getName());
String viewId = e.getAttribute("viewId");
Class<? extends IDatasetProvider> datasetType = b.loadClass(e
.getAttribute("datasetProvider"));
...
...
...
}
}
Run Code Online (Sandbox Code Playgroud)
还有3个(可能)相关的警告
IDatasetProvider is a raw type. References to generic type IDatasetProvider<T> should be parameterized
Run Code Online (Sandbox Code Playgroud)
如果我改回我们的3.6平台,那一切都会再次运作.
编辑:感谢Alexy和gzukmin的帮助.
我使用了以下代码,特别是强制转换Class<? extends IDatasetProvider>而不仅仅是 …
我遇到运行时错误
org.eclipse.cpre.runtime-org.eclipse.ui-0- filename无法加载代理的处理程序
似乎找不到处理程序类文件。但是将执行处理程序文件中的代码。
有任何想法吗?
我正在注册一个生命周期监听器plugin.xml.如果我只定义一个,它运行正常Shell.
例如
@PostContextCreate
void postContextCreate(final IEventBroker eventBroker){
System.out.println("CALLED!");
final Shell shell = new Shell(SWT.TOOL | SWT.NO_TRIM);
shell.open();
eventBroker.subscribe(UIEvents.UILifeCycle.ACTIVATE, new EventHandler() {
@Override
public void handleEvent(Event event) {
System.out.println("Closing shell");
shell.close();
shell.dispose();
System.out.println("Closed");
eventBroker.unsubscribe(this);
}
});
Run Code Online (Sandbox Code Playgroud)
但如果我改变呼叫也使用Display:
@PostContextCreate
void postContextCreate(final IEventBroker eventBroker){
System.out.println("CALLED!");
Display display = new Display();
final Shell shell = createSplashShell(display);
shell.open();
while (!shell.isDisposed ()) {
if (!display .readAndDispatch ()) display.sleep ();
}
display.dispose ();
//etc
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
org.eclipse.e4.core.di.InjectionException:org.eclipse.swt.SWTException:在org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63)无效的线程访问在
org.eclipse位于org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:206)的.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:229)at
我知道这个异常必须对UI线程做一些事情,但我无法弄清楚如何使用Display …
如何在项目上添加鼠标右键单击侦听器TableViewer?
我想有一个rcp应用程序,它不会workspace在启动时创建任何文件夹.我的rcp应用程序不需要持久保存任何插件或用户数据.对于最终用户,工作空间创建似乎是一个令人困惑和烦人的副作用.我怎么能避免这个?
在我看来,每个rcp应用程序都需要插件org.eclipse.core.resources,而类ResourcesPlugin在启动时创建工作区.
我知道-data <workspace_dir>用于指定不同工作空间位置的选项,但我想完全避免创建工作空间.
谢谢你的建议!
我有一个Eclipse插件,可以为工具栏提供命令.我有一个默认隐藏的请求(但应该可以在Customize Perspective菜单中启用它).
我尝试使用该visibleWhen属性(通过仅使用不存在的透视图启用它),默认情况下隐藏命令,但在" 自定义透视图"菜单中,它显示为灰色,无法启用它.
有没有办法在默认情况下禁用对工具栏的命令贡献?
我想检查一下Job是否已经完成.目前我这样做:
if ( traceJob.getState() != Job.WAITING && traceJob.getState() != Job.RUNNING){
Run Code Online (Sandbox Code Playgroud)
但我认为应该有更好的方法来检查.有人有什么好主意吗?
eclipse-rcp ×10
eclipse ×6
java ×4
jface ×4
swt ×4
rcp ×1
startup ×1
tableviewer ×1
workspace ×1