Плагин Eclipse для загруженного проекта - PullRequest
2 голосов
/ 08 октября 2011

У меня есть плагин, и я хочу определить, когда проекты добавляются в рабочую область, чтобы установить некоторые настройки проекта из кода моего плагина, Any Ideas.

Особенно я хочу вызвать setHidden в некоторых ресурсах, которые являются производными файлами, так как эти настройки, кажется, не являются частью проекта, я имею в виду, что всякий раз, когда ресурсы скрыты, кажется, что они не сохраняются, если я импортирую проект в новую рабочую область.

Ответы [ 2 ]

8 голосов
/ 08 октября 2011

Как ни странно, я только что написал что-то подобное вчера. Это немного сложнее, чем хотелось бы. Вот фрагмент кода для игры:

public class ProjectListener implements IResourceChangeListener {

public void resourceChanged(IResourceChangeEvent event) {
    if (event.getType() == IResourceChangeEvent.POST_CHANGE) {
        List<IProject> projects = getProjects(event.getDelta());
        // do something with new projects
    }
}

private List<IProject> getProjects(IResourceDelta delta) {
    final List<IProject> projects = new ArrayList<IProject>();
    try {
        delta.accept(new IResourceDeltaVisitor() {
            public boolean visit(IResourceDelta delta) throws CoreException {
                if (delta.getKind() == IResourceDelta.ADDED && 
                  delta.getResource().getType() == IResource.PROJECT) {
                    IProject project = (IProject) delta.getResource();
                    if (project.isAccessible()) {
                        projects.add(project);
                    }
                }
                // only continue for the workspace root
                return delta.getResource().getType() == IResource.ROOT;
            }
        });
    } catch (CoreException e) {
        // handle error
    }
    return projects;
}

Затем вам нужно добавить этот ProjectListener в рабочую область, предпочтительно в start методе вашего активатора плагина:

ResourcesPlugin.getWorkspace().addResourceChangeListener(ProjectListener.LISTENER, IResourceChangeEvent.POST_CHANGE);

А затем вы хотите удалить его методом stop. Я буквально только что написал этот код вчера. Надеюсь, это поможет.

1 голос
/ 08 октября 2011

Вы можете определить список ресурсов для рабочей области и искать изменения в корне ресурса.Подробности смотрите в следующей статье: http://www.eclipse.org/articles/Article-Resource-deltas/resource-deltas.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...