我經常最小化Eclipse來閱讀或處理其他東西幾分鐘,而我等待它做某事(例如,運行一個大的JUnit測試套件,用一個repo同步大量文件,運行一個長的Ant構建等)。我必須每隔30秒檢查一次,看看它是否完成。我希望Eclipse在完成耗時操作後提醒我,最好是通過閃爍其任務欄圖標。有任何設置或插件可以做到這一點?有沒有一種方法可讓Eclipse在任務耗盡任務完成後閃爍其任務欄圖標?
回答
我相信你已經安裝了Mylyn,這應該在Windows 7默認啓用。請參閱here和here。關於構建後操作,我不知道任何現有的Eclipse插件都是這樣做的。但是,我沒有詳盡搜索the marketplace。然而,這可以通過現有的Eclipse API來完成,但它需要有人來編寫一個新的Eclipse插件。
職位架構有an API調用IJobManager
。開發人員可以編寫出可使用該API來監聽工作變動,並執行以下一個新的Eclipse插件:
- 創建一個Eclipse插件,在啓動時註冊一個監聽器
IJobManager
。 - 一旦任何有趣的工作完成後,它可能會在JDK
這一切都可以在一個Java的文件,大概不到500線長來完成使用正常的java程序執行API火過一些外部任務/腳本。 您可以使用this template來設置一個基本的Eclipse插件項目,包括build system,並且已經構建並準備將其安裝到您現有的Eclipse中。
更新我剛剛發現了一個maven原型,用於構建tycho here的eclipse插件。這將是我的建議新人建立一個月蝕功能/ updatesite。
你確定這會閃爍任務欄圖標嗎? – Mot 2013-06-03 12:26:08
您可以創建一個新的插件項目併爲自己創建這種功能。 Eclipse Jobs API中的 IJobchangeListener對您來說可能非常有趣。
IJobChangeListener
是一個接口,您可以接收不同類型作業狀態的通知。
我創建了一個名爲JobListener
的類,它將IJobchangeListener
添加到JobManager
。通過動作SampleAction
,您可以註冊或取消註冊偵聽器。這意味着,如果聽衆註冊並且您的應用程序最小化,您將收到一個MessageDialog
(沒有閃爍的任務欄)的通知。
我發現一個link有人讓他的揮杆應用程序閃爍。該功能應包含在方法public void done(final IJobChangeEvent event)
中。我在測試課上沒有這樣做。
您還可以獲取有關Job附加信息與
event.getJob();
在這裏,您可以檢查作業名稱:
String jobName = event.getJob().getName();
作業的名稱是人類可讀的,例如「收集垃圾「,」裝修完工更新「,」建築工作區「等。
JobListener
class。
/**
* A job listener which may be added to a job manager
*/
public class JobListener {
private MyJobListener listener = null;
private IWorkbenchWindow window = null;
private boolean active = false;
public JobListener(IWorkbenchWindow window) {
this.window = window;
}
/**
* register the job listener
*/
public void register() {
listener = new MyJobListener(window);
IJobManager jobMan = Job.getJobManager();
jobMan.addJobChangeListener(listener);
active = true;
}
/**
* unregister the job listener
*/
public void unregister() {
IJobManager jobMan = Job.getJobManager();
jobMan.removeJobChangeListener(listener);
active = false;
}
public boolean isActive() {
return active;
}
class MyJobListener implements IJobChangeListener {
private IWorkbenchWindow window;
public MyJobListener(IWorkbenchWindow window) {
this.window = window;
}
@Override
public void sleeping(IJobChangeEvent event) {
}
@Override
public void scheduled(IJobChangeEvent event) {
}
@Override
public void running(IJobChangeEvent event) {
}
@Override
public void done(final IJobChangeEvent event) {
window.getShell().getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
if(window.getShell().getMinimized()) {
MessageDialog.openInformation(
window.getShell(),
"Test",
"Job " + event.getJob().getName() + " done.");
}
}
});
}
@Override
public void awake(IJobChangeEvent event) {
}
@Override
public void aboutToRun(IJobChangeEvent event) {
System.out.println("About to run: " + event.getJob().getName());
}
}
}
我打電話從一個叫SampleAction.java
public class SampleAction implements IWorkbenchWindowActionDelegate {
private IWorkbenchWindow window;
private JobListener listener;
/**
* The constructor.
*/
public SampleAction() {
}
public void run(IAction action) {
if(listener.isActive()) {
listener.unregister();
MessageDialog.openInformation(
window.getShell(),
"Lrt",
"Unregistered");
}
else {
listener.register();
MessageDialog.openInformation(
window.getShell(),
"Lrt",
"Registered");
}
}
public void selectionChanged(IAction action, ISelection selection) {
}
public void dispose() {
}
public void init(IWorkbenchWindow window) {
this.window = window;
this.listener = new JobListener(window);
}
類你可以開始使用Eclipse創建一個新的插件項目插件開發這個類:
File > New > Project > Plugin Project
我用Hello World
插件項目模板來測試上面的代碼。
- 1. 檢測任務欄圖標閃爍
- 2. 停止任務欄閃爍
- 3. browsersync.reload任務沒有完成
- 4. boost :: asio :: async_write沒有完成其任務
- 5. iOS的後臺任務沒有完成
- 6. SWT殼牌沒有任務欄圖標
- 7. AIR:使任務欄項閃爍?
- 8. 在其他幾項任務完成後運行任務
- 9. Azure啓動任務,等待所有其他任務完成
- 10. Yii無法完成任務,完全沒有任何錯誤
- 11. 任務。完成任務之前任務完成
- 12. 任務並行庫 - 知道當所有任務完成後
- 13. 完成其他任務後運行gulp任務
- 14. QDialog沒有任務欄中的任務欄
- 15. 任務完成
- 16. 完成任務
- 17. 在任務欄無圖標
- 18. 循環沒有完成它的任務
- 19. Java SwingWorker沒有終止任務完成
- 20. ContinueWith沒有等待任務完成
- 21. 顯示任務ALT + TAB,但沒有顯示在任務欄
- 22. 一次啓動多個任務,然後在完成其中一個任務時啓動另一個任務
- 23. C#6正在等待完成任務和所有子任務
- 24. 如何讓任務欄圖標消失?
- 25. ContinueWith任務完成前任務運行
- 26. 做任務讓用戶知道任務完成時的多個任務
- 27. 完成多個任務後如何調用一個任務
- 28. 等待任務完成後再繼續下一個任務
- 29. 咕嚕 - 排隊任務前一個任務後運行完成
- 30. SSIS - 完成第一項任務後執行第二項任務
您是否認爲操作系統提供了API來執行此類操作?在Windows 7上,Eclipse的任務欄圖標可以報告安裝新軟件的進度。基本上,platform/swt支持它在特定的操作系統上,但插件需要適應使用該功能來報告進度。 – Kane 2012-02-14 03:18:11