我如何制作 IEditorInput,它将从内存中读取文件?
How can I make IEditorInput, that will read file from memory?
我正在为 eclipse 编写插件,我需要为加载到 RAM 中的文件打开编辑器。当我打开新编辑器时,它从 IEditorInput 获取输入。有很多类实现了这个接口,但它们通常是从硬盘读取文件,或者它们对此没有用。
所以问题是:
如何制作将从内存中读取文件的 IEditorInput?
您可以使用实现 IStorageEditorInput
的对象作为编辑器输入。这使用 IStorage
对象来保存要编辑的内存数据。
一个简单的 IStorageEditorInput
实现类似于:
class StorageEditorInput extends PlatformObject implements IStorageEditorInput {
private IStorage fStorage;
public StorageEditorInput(IStorage storage) {
fStorage = storage;
}
@Override
public IStorage getStorage() {
return fStorage;
}
@Override
public ImageDescriptor getImageDescriptor() {
return null;
}
@Override
public String getName() {
return getStorage().getName();
}
@Override
public IPersistableElement getPersistable() {
return null;
}
@Override
public String getToolTipText() {
return getStorage().getFullPath().toOSString();
}
@Override
public boolean equals(Object object) {
return object instanceof StorageEditorInput &&
getStorage().equals(((StorageEditorInput)object).getStorage());
}
@Override
public int hashCode() {
return getStorage().hashCode();
}
@Override
public boolean exists() {
return true;
}
}
(以上改编自org.eclipse.debug.internal.ui.views.console.ProcessConsole
)
您还必须提供自己的 IStorage
实现,实际上您应该实现 IEncodedStorage
,它扩展 IStorage
以包含字符编码。
注意部分编辑可能看不懂IStorageEditorInput
.
我正在为 eclipse 编写插件,我需要为加载到 RAM 中的文件打开编辑器。当我打开新编辑器时,它从 IEditorInput 获取输入。有很多类实现了这个接口,但它们通常是从硬盘读取文件,或者它们对此没有用。
所以问题是: 如何制作将从内存中读取文件的 IEditorInput?
您可以使用实现 IStorageEditorInput
的对象作为编辑器输入。这使用 IStorage
对象来保存要编辑的内存数据。
一个简单的 IStorageEditorInput
实现类似于:
class StorageEditorInput extends PlatformObject implements IStorageEditorInput {
private IStorage fStorage;
public StorageEditorInput(IStorage storage) {
fStorage = storage;
}
@Override
public IStorage getStorage() {
return fStorage;
}
@Override
public ImageDescriptor getImageDescriptor() {
return null;
}
@Override
public String getName() {
return getStorage().getName();
}
@Override
public IPersistableElement getPersistable() {
return null;
}
@Override
public String getToolTipText() {
return getStorage().getFullPath().toOSString();
}
@Override
public boolean equals(Object object) {
return object instanceof StorageEditorInput &&
getStorage().equals(((StorageEditorInput)object).getStorage());
}
@Override
public int hashCode() {
return getStorage().hashCode();
}
@Override
public boolean exists() {
return true;
}
}
(以上改编自org.eclipse.debug.internal.ui.views.console.ProcessConsole
)
您还必须提供自己的 IStorage
实现,实际上您应该实现 IEncodedStorage
,它扩展 IStorage
以包含字符编码。
注意部分编辑可能看不懂IStorageEditorInput
.