У меня есть много файлов XML в Workbench Project Explorer, каждый из которых является экземпляром одной из десяти различных моделей ecore. Для каждой модели ecore я хотел бы внести commonFilter
в точку расширения навигатора navigatorContent
, чтобы позволить пользователю показывать или скрыть соответствующие файлы XML. Это внешние файлы инструментов, поэтому нет возможности идентифицировать контент, просто наблюдая за именем файла или расширением xml
, а переименование не представляется возможным. Используя, возможно, класс, основанный на org.eclipse.jface.viewers.ViewerFilter
, каков наилучший способ определить, какая из моделей ecore содержится в файле XML? Я предполагаю, что есть простой способ сделать это с помощью ресурсов EMF или с помощью EcoreUtil
или с адаптерами, но я не нашел успешной техники. Альтернативно, способ сделать это непосредственно из точки добавочного номера filterExpression
или viewerContentBinding
зрителя будет прекрасным. Все плагины genmodel
доступны для различных моделей ecore.Eclipse Project Explorer фильтр для файлов XML
package com.my.navigator;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
public class MyViewerFilter extends ViewerFilter {
public MyViewerFilter() {
}
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
if (element instanceof IFile) {
IFile file = (IFile)element;
// check whether file is one of our ecore models...
// ...
}
return true;
}
}