在我的RCP-Plug-In-Project中,我有一个视图和一个编辑器。我还设置了一个透视图,其中创建了视图和编辑器。
问题是编辑器的内容(在DELETE FROM Reporters
WHERE EXISTS (SELECT 1 FROM Cases WHERE Cases.ID = Reporters.CaseId AND Cases.Court = @Court)
- 方法中描述)未显示。如果我更改createPartControl
并在run configurations
中设置clear
,我会获得默认视角,当我点击Workspace Data
时,我可以选择我的“BDD视角”和编辑器它的内容和视图是可见的。 Perspective with editor and view
如果未设置Window -> Perspective -> Open Perspective -> Other...
中的clear
,则会显示“BDD Perspective”,但会显示空编辑器。 Perspective with empty editor and view
是否有人知道如何在用户定义的视角中显示编辑器的内容?
这是相关代码。在透视图中是一个名为“CallBDDEditor”的处理程序,它打开编辑器:
Workspace Data
答案 0 :(得分:1)
我已添加到Extensions
ElementFactory
,就像您在ElementFactory看到的那样。这是我的ElementFactory代码:
public class ElementFactory implements IElementFactory, IAdaptable {
String ID = "bdd.klighd.factory";
@Override
public IAdaptable createElement(IMemento memento) {
return new BDDEditorInput("test of editor input");
}
@Override
public <T> T getAdapter(Class<T> adapter) {
// TODO Auto-generated method stub
return null;
}
}
这是我的EditorInput代码:
public class BDDEditorInput implements IStorageEditorInput, IPersistableElement {
private final String inputString;
public BDDEditorInput(String inputString) {
this.inputString = inputString;
}
public boolean exists() {
return true;
}
public ImageDescriptor getImageDescriptor() {
return null;
}
@Override
public void saveState(IMemento memento) {
// TODO Auto-generated method stub
}
@Override
public String getFactoryId() {
return "bdd.klighd.factory";
}
public IPersistableElement getPersistable() {
return this;
}
public IStorage getStorage() throws CoreException {
return new IStorage() {
public InputStream getContents() throws CoreException {
return new StringBufferInputStream(inputString);
}
public IPath getFullPath() {
return null;
}
public String getName() {
return BDDEditorInput.this.getName();
}
public boolean isReadOnly() {
return false;
}
public Object getAdapter(Class adapter) {
return null;
}
};
}
public Object getAdapter(Class adapter) {
return null;
}
public String getName() {
return "input name";
}
public String getToolTipText() {
return "BDD Editor";
}
}
是的,它有效,我的项目/按钮现在可见。但我不知道为什么,因为我没有在EditorInput类中实现它们。但是,它有效!