2010-10-18 55 views
0

我有一個我正在開發的自定義Eclipse插件。它有一個可有效替換「Project Explorer」的CustomerExplorer視圖(部分),並且它有許多MultiPageEditorParts,每個都有一個XML編輯器和一個Form編輯器,它們都修改相同的配置文件。 XML編輯器是一個TextEditor。表單和XML鏈接在一起,每當有一個pageChange()時,它們都會更新另一個。爲什麼我的Eclipse插件中沒有刷新我的資源?

我的問題在於我的Eclipse插件中打開的文件的外部修改。如果我在外部編輯器中編輯一個文件,然後加載它(從CustomerExplorer查看),在切換到XML標籤,我將收到的消息:

"Resource is out of sync with the file system: '/example/example.xml'. 

Press 'F5' or select File > Refresh to refresh the file.

我熟悉這個錯誤使用Eclipse通常只是按F5,右鍵單擊相關文件並選擇刷新,或者從菜單欄中選擇文件>刷新通常可以解決此問題。然而,在這種情況下,F5什麼也不做,文件>刷新爲灰色,並在文件上右擊(在我的自定義視圖),上下文菜單中不包含「刷新」。我試圖打開'項目資源管理器'視圖,其中'刷新'在上下文菜單中可用,但這沒有任何作用。

從閱讀我周圍已經導致理解的是,這些資源應該由日食被刷新,但事實並非如此。任何指針爲什麼?

回答

0

很難說究竟是什麼在這裏發生的事情,但你可能需要明確用於刷新資源添加動作設置爲自定義視圖。

+0

這正是我最終做了。 – Andrew 2010-11-08 09:54:35

0

解決你的問題可能是跟蹤更改文件的更新您的看法時,有一個的另一種方式:

ResourcesPlugin.getWorkspace().addResourceChangeListener(new MyResourceTracker(), IResourceChangeEvent.POST_CHANGE); 

有了類似的東西:

public class MyResourceTrackerimplements IResourceChangeListener { 
    @Override 
    public void resourceChanged(final IResourceChangeEvent ev) { 
     if (ev.getDelta() != null) { 
      try { 
       ev.getDelta().accept(new IResourceDeltaVisitor() { 
        @Override 
        public boolean visit(final IResourceDelta delta) 
          throws CoreException { 
         // TODO do something 
         return true; 
        } 
       }); 
      } catch (CoreException e) { 
       // TODO 
      } 
     } 
    } 
}