Как сохранить состояние редактора в eclipse

Я создал редактор, который открывается из представления.

В частности, я создал класс редактора, который расширяет EditorPart, и ввод редактора, который расширяет IEditorInput. Я также создал представление, в котором, если дважды щелкнуть элемент в представлении, откроется редактор. Редактор просто показывает дерево.

Все работает хорошо. Что мне нужно сделать, так это сохранить состояние редактора при его изменении, например, когда я добавляю элемент дерева в дерево.

Я прочитал несколько руководств, но в большинстве из них объясняется, как сохранить состояние просмотра с помощью сувениров. Я новичок в разработке Eclipse, поэтому, пожалуйста, потерпите меня: P


person Emmanouil Skordalakis    schedule 10.08.2015    source источник
comment
Это довольно широкий вопрос. Большинство редакторов редактируют или создают файл, здесь не так?   -  person greg-449    schedule 10.08.2015
comment
Если редактор поддерживает расширение файла, например .txt, процесс сохранения происходит автоматически, поскольку в файл вносятся изменения. В моем случае он какой-то графический, а не текстовый, так как он показывает дерево, поэтому его нельзя сохранить в виде файла. Я предполагаю, что вы каким-то образом сохраняете элементы дерева внутри сувенира, затем сувенир сохраняется в виде файла xml, как представление, но я не могу это сделать, атм: P   -  person Emmanouil Skordalakis    schedule 10.08.2015


Ответы (1)


Если у вас нет файла для сохранения, вы можете поместить данные в «местоположение состояния» для вашего плагина — это папка в каталоге рабочей области .metadata/.plugins, которую ваш плагин может использовать по своему усмотрению.

Вы получаете местоположение состояния, используя:

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

IPath stateLoc = Platform.getStateLocation(bundle);

Примечание. Есть несколько способов получить Bundle, например, вы также можете использовать:

Bundle bundle = FrameworkUtil.getBundle(getClass());

который возвращает пакет для текущего класса.

Вы можете сохранить/восстановить файл в любом удобном для вас формате. Вы упоминаете формат Memento. Напишите памятку, используя:

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
 }
person greg-449    schedule 10.08.2015
comment
Большое спасибо за ответ. Этот путь, безусловно, очень полезен для сохранения данных. Я нахожу ваш подход очень хорошим. Я сделаю это таким образом. - person Emmanouil Skordalakis; 12.08.2015