Eclipse插件开发:如何通知视图内容已更改?

时间:2011-12-15 11:35:00

标签: java eclipse eclipse-plugin jface

我正在开发我的第一个Eclipse插件。为此,我使用了一个具有简单视图的示例。我添加了一个IStructuredContentProvider来为视图提供内容。第一次加载时它可以工作,但是当我更改内容时,视图不会更新。我该怎么办?

这是我的IStructuredContentProvider:

public class ViewContentProvider implements IStructuredContentProvider {

    private List<Project> projects = new ArrayList<Project>();

    private void addProject(Project project) {
        if (!projects.contains(project)) {
            projects.add(project);
        }
    }

    public void addProjects(List<Project> projects) {
        for (Project project : projects) {
            addProject(project);
        }
    }

    @Override
    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

    }

    @Override
    public void dispose() {

    }

    @Override
    public Object[] getElements(Object parent) {
        return projects.toArray();
    }
}

1 个答案:

答案 0 :(得分:4)

这来自inputChanged()方法的描述:

  

此方法的典型用途是将内容提供程序注册为新输入更改的侦听器(使用特定于模型的方法),并从旧输入中取消注册查看器。为响应这些更改通知,内容提供商应更新查看器(查看查看器上的添加,删除,更新和刷新方法)。