2013-04-18 59 views
0

我在netbeans中使用了一個自定義按鈕,它引用了打開的項目中的一個文件。但是,我有一個問題根據打開的項目檢索該文件的位置。 因此,我需要的東西可以返回我正在工作的項目的位置或我正在使用的文件的位置。
從本質上講,我需要能夠調用在netbeans中檢索當前打開的文件或項目的位置

String projectLocation = methodOrVarToGetOpenProjectLocation(); 

我不能使用當前目錄,因爲我已經有按鈕創建的插件並不住在同一個地方作爲項目我正在工作。

有什麼想法?

回答

3

你可以找到項目目錄,如下所示:

Lookup lookup = Utilities.actionsGlobalContext(); 
Project project = lookup.lookup(Project.class); 
FileObject projectDir = project.getProjectDirectory(); 
String projectLocation = projectDir.getPath(); 

的所有類都從NetBeans API:UtilitiesLookupProjectFileObject

如果你不想只是使用當前的Project可以使用OpenProjects類。你可以先開項目如下:

Project project = OpenProjects.getDefault().getOpenProjects()[0]; 

根據您的按鈕做什麼它可能是有意義的使用the Main Project:以上

Project mainProject = OpenProjects.getDefault().getMainProject(); 
+0

這就是我正在尋找的東西,除了一件事...我如何告訴它選擇第一個打開的項目,如果當前沒有選擇項目?現在,除非明確選擇項目,否則它將無法工作。 –

+0

@JoshJohnson - 添加了代碼,顯示如何獲得第一個打開的項目和主項目。 –

+0

非常感謝!我實際上嘗試使用[...]。getMainProject();昨天當我進行研究時,它與第一個代碼具有相同的問題:除非在單擊按鈕之前直接單擊項目名稱,否則不會將該項目視爲主項目。例如,如果您在項目中編輯文件,然後單擊該按鈕,則不會將任何項目視爲「主」項目。每次,項目名稱必須點擊才能被視爲「主」。有關如何獲取正在編輯的當前文件的位置或項目的任何想法? –

1

戴夫·韋伯的回答了獲取項目位置的照顧。但是,如果在點擊按鈕之前沒有直接選擇所需的項目,就不會認爲該項目是主要項目。
例如,在文件中進行編輯,然後單擊按鈕將不再找到該項目,因爲項目名稱不是最後一次點擊的事情。
我發現一些代碼,抓起打開的文件名:

TopComponent activeTC = TopComponent.getRegistry().getActivated(); 
DataObject dataLookup = activeTC.getLookup().lookup(DataObject.class); 
String filePath = FileUtil.toFile(dataLookup.getPrimaryFile()).getAbsolutePath(); 

project是空的情況下使用這種在if語句(後,他的第一個代碼塊的第二行)。

這給了我正在工作的文件的路徑,然後它花了一小筆工作與字符串來獲取項目的位置。

相關問題