Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在eclipse中保存编辑器状态_Java_Eclipse_Save_Editor_Pde - Fatal编程技术网

Java 如何在eclipse中保存编辑器状态

Java 如何在eclipse中保存编辑器状态,java,eclipse,save,editor,pde,Java,Eclipse,Save,Editor,Pde,我创建了一个从视图打开的编辑器 更具体地说,我创建了一个扩展EditorPart的编辑器类和一个扩展IEditorInput的编辑器输入。我还创建了一个视图,如果双击视图中的某个元素,编辑器将打开。编辑器只显示一棵树 一切正常。我需要做的是,当我更改编辑器时保存它的状态,例如当我向树中添加一个treeItem时 我读过一些教程,但其中大部分都解释了如何使用memento保存视图状态。我是Eclipse开发的新手,所以请耐心听我说:P如果您没有要保存的文件,您可以将数据放在插件的“状态位置”——这

我创建了一个从视图打开的编辑器

更具体地说,我创建了一个扩展
EditorPart
的编辑器类和一个扩展
IEditorInput
的编辑器输入。我还创建了一个视图,如果双击视图中的某个元素,编辑器将打开。编辑器只显示一棵树

一切正常。我需要做的是,当我更改编辑器时保存它的状态,例如当我向树中添加一个treeItem时


我读过一些教程,但其中大部分都解释了如何使用memento保存视图状态。我是Eclipse开发的新手,所以请耐心听我说:P

如果您没有要保存的文件,您可以将数据放在插件的“状态位置”——这是workspace.metadata/.plugins目录中的一个文件夹,您的插件可以随意使用

您可以使用以下方法获取状态位置:

Bundle bundle = Platform.getBundle("your plugin id");

IPath stateLoc = Platform.getStateLocation(bundle);
注意:有几种方法可以获取
捆绑包
,例如,您还可以使用:

Bundle bundle = FrameworkUtil.getBundle(getClass());
返回当前类的绑定

您可以用任何喜欢的格式保存/恢复文件。你提到了纪念品的形式。使用以下方法书写纪念品:

XMLMemento memento = XMLMemento.createWriteRoot("root");

 ... add your entries

try (Writer writer = new OutputStreamWriter(new FileOutputStream("file name"), StandardCharsets.UTF_8)) 
 {
    memento.save(writer);
 }
请阅读带有以下内容的纪念品:

try (Reader reader = new InputStreamReader(new FileInputStream("file name"), StandardCharsets.UTF_8)) 
 {
   IMemento memento = XMLMemento.createReadRoot(reader);

   ... read the memento contents
 }

这是一个相当广泛的问题。大多数编辑器都在编辑或创建文件,不是吗?如果编辑器支持文件扩展名,例如.txt,则保存过程是自动的,因为对文件进行了更改。在我的例子中,它是一种图形,而不是文本,因为它显示一棵树,所以不能保存为文件。我的猜测是,您以某种方式将树元素保存在memento中,然后将memento保存为类似视图的xml文件,但我无法做到这一点,atm:P非常感谢您的回答。该路径对于保存数据肯定非常有用。我觉得你的方法很好。我会那样做的。