2011-10-07 75 views
2

我有一個插件,希望檢測何時將項目添加到工作區,從我的插件代碼Any Ideas中設置一些項目設置。已加載項目的Eclipse插件

特別我想調用setHidden在一些資源是派生文件,因爲這個設置似乎不是項目的一部分,我的意思是每當一個資源被隱藏似乎不會堅持如果我在一個新的工作區導入項目。

回答

8

具有諷刺意味的是,我昨天剛寫了這樣的內容。這比你想要的要複雜一點。下面是一個代碼片段你一起玩:

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方法中將其刪除。我簡直就是昨天寫了這段代碼。我希望它有幫助。

+0

但我怎麼可以我的激活器調用啓動時,我的項目第一次建立時被調用,我的插件是IDL的自定義生成器。 –

+0

我發現org.eclipse.ui.startup擴展點解決了我的問題,因爲Activator在啓動過程中沒有啓動。 –

+1

這就是你應該這樣做的方式。 –