Как да запазите състояние на редактор в eclipse

Създадох редактор, който се отваря от изглед.

По-конкретно, създадох клас редактор, който разширява EditorPart и въвеждане на редактор, който разширява IEditorInput. Също така създадох изглед, където ако щракнете два пъти върху елемент в изгледа, редакторът ще се отвори. Редакторът просто показва дърво.

Всичко работи добре. Това, което трябва да направя, е да запазя състоянието на редактора, когато го променя, например когато добавя treeItem към дървото.

Прочетох някои уроци, но повечето от тях обясняват как да запазите състояние на изглед с помощта на спомени. Аз съм начинаещ в разработката на Eclipse, така че, моля, изтърпете ме :P


person Emmanouil Skordalakis    schedule 10.08.2015    source източник
comment
Това е доста широк въпрос. Повечето редактори редактират или създават файл, тук не е ли така?   -  person greg-449    schedule 10.08.2015
comment
Ако редакторът поддържа файлово разширение, например .txt, процесът на записване е автоматичен, тъй като промените се правят във файла. В моя случай е нещо като графика, а не текст, тъй като показва дърво, така че не може да бъде запазено като файл. Предполагам, че по някакъв начин запазвате дървовидните елементи вътре в спомена, след което споменът се записва като xml файл като изглед, но не мога да го направя, atm :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