在Eclipse的PDE,什麼時候創建尋找資源的變化(使用IResourceChangeEvent
),我怎麼找出來的時候一個項目?在這種情況下,我可以訪問該項目嗎?(作爲IProject
)?Eclipse項目創建檢測
回答
幾個部分這樣的回答:
當資源的變化,你的聽衆得到的事件。從這個事件中,你可以得到一個描述變化資源的變量。你實現了一個訪問者(用accept()方法傳遞給delta),它實際上實現了你對變化的響應,並通過從它的visit()方法回答一個布爾值來控制你想要遍歷的delta增量。由於任何新項目都將位於三角洲的頂部,因此您可能不會走得太遠。一旦你意識到你正在訪問代表新項目的delta節點(你使用flags()和getKind()來查看它是否是一個新項目),你可以採取任何你想要的操作。
這個答案的另一部分是提醒你經常資源的變化是成批的,通常是出於性能的考慮,所以你可能會經過很多文件被創建到該項目正在創建通知新項目。
來補充參考資源變化監聽對方的回答...
可靠地檢測項目創建實際上是相當困難的。問題在於你定義爲項目創建。對於Eclipse資源層,項目創建是在創建空白項目時(沒有任何類型的元數據或文件),但是在典型情況下,您想知道何時創建特定類型的項目。
這意味着你不能假定,當你的代碼接收一個項目創建活動,你將能夠詢問有關該項目的問題。項目創建事件可能與單個批次中的後續文件事件一起傳遞,或者這些事件可能會分開滴入。
另一個考慮是Eclipse項目的創建有許多不同的場景。它可以是用戶運行項目創建嚮導,或從磁盤導入現有項目,或從Git導入,或者任何其他方式,第三方插件可能會導致項目添加到工作區。每個這些情景將有哪些事件是成批的或細流以稍微不同的方式。
唯一的解決辦法是看文件的事件,而不是項目事件。找出您的聽衆需要詢問項目的問題,然後找出哪些文件包含答案並跟蹤這些文件。例如,如果您需要檢查自然和類路徑條目,請監視.project和.classpath文件。不要以爲項目總是處於一致的狀態。如果您正在通過Git導入部分查看它,可能不會。
- 1. 創建eclipse建模項目
- 2. 從舊項目創建eclipse項目
- 3. Android創建項目Eclipse
- 4. 創建Eclipse Java Gradle項目
- 5. 創建GAE eclipse項目
- 6. 創建Eclipse項目預設
- 7. Eclipse PDE創建新項目
- 8. 在Eclipse中創建一個項目(我們想測試)的測試項目?
- 9. Maven項目的創建 - 雖然從Eclipse創建項目失敗
- 10. 創建測試項目
- 11. 檢測誰創建了線程(w。Eclipse)
- 12. 在Eclipse中創建一個Android測試項目
- 13. Eclipse的ADT插件無法創建Android測試項目
- 14. 在Eclipse中創建新的Android測試項目時出錯
- 15. 在eclipse中創建一個新項目
- 16. 無法使用eclipse創建cloudbees項目
- 17. 在eclipse中創建java/C++項目
- 18. 在Eclipse中爲項目創建jar
- 19. 關注在Eclipse中創建Java項目
- 20. 用java程序創建Eclipse java項目
- 21. 在Eclipse中創建新的PHP項目
- 22. 使用Eclipse創建Camel項目
- 23. 無法使用Eclipse創建MapReduce項目
- 24. 如何使用EGit創建Eclipse項目
- 25. 創建Android項目在Eclipse中
- 26. Eclipse不會創建一個Android項目
- 27. 創建沒有eclipse的Java項目?
- 28. 創建Android項目後Eclipse Juno崩潰
- 29. eclipse爲tfs創建團隊項目
- 30. 使用eclipse創建新的svn項目
謝謝克里斯, 偶然,你知道我該如何強制這樣的事件嗎?爲了確保項目剛創建並且沒有批處理? –
參見http://www.eclipse.org/articles/Article-Resource-deltas/resource-deltas.html – nitind
無論發生什麼事件都會發生。只是,如果該工具批量處理一堆資源模塊,那麼您將使用增量樹來調用一次。訪問者遞歸地遍歷(見上),並且該樹中的增量將代表該項目。換句話說,在用戶重新獲得對UI的控制之前,你總是會被調用。 –