如何在RCP-Perspective中保存编辑器?

时间:2016-09-29 13:22:08

标签: eclipse-rcp perspective

在我的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

1 个答案:

答案 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类中实现它们。但是,它有效!