2012-02-14 20 views
4

私はそれが何かを待っている間に何か他のものを読んだり、作業したりすることをしばしば最小限に抑えます(例えば、大規模なJUnitテストスイートを実行し、膨大な数のファイルをレポと同期させ、 、など)。 30秒ごとにチェックして、まだ完了しているかどうかを確認する必要があります。時間のかかる操作が終わったら、タスクバーのアイコンを点滅させて、Eclipseに警告して欲しいです。これを可能にする設定やプラグインはありますか?時間のかかるタスクが終了したらEclipseのタスクバーアイコンをフラッシュする方法はありますか?

+1

OSは、このようなことを行うAPIを提供していると思いますか? Windows 7のEclipseのタスクバーアイコンは、新しいソフトウェアのインストールの進行状況を報告することができます。基本的にプラットフォーム/ swtは特定のOS上でそれをサポートしますが、プラグインは進捗状況を報告する機能を使用するように適応する必要があります。 – Kane

答えて

4

Mylynがインストールされていると思いますが、これはWindows 7ではデフォルトで有効になっているはずです。herehereを参照してください。ビルド後のアクションに関して、私はこれを行う既存のEclipseプラグインについて知らない。しかし、私は網羅的に検索していませんthe marketplace。しかし、これは既存のEclipse APIで実現できますが、誰かに新しいEclipseプラグインを作成する必要があります。

​​ジョブフレームワークにはというIJobManagerがあります。

  1. は、Eclipseのプラグインを作成し、起動時にIJobManagerにリスナーを登録します。開発者は、ジョブの変更をリッスンするために、このAPIを使用して、次の操作を行うことができ、新たなEclipseプラグインを書くことができます。
  2. 何か面白いジョブが完了したら、それはJDK

で通常のJavaプロセス実行APIを使用してこれを何らかの外部タスク/スクリプトをオフに解雇ことができるすべては、500未満の行の長おそらく、1つのJavaファイルで達成することができます。 this templateを使用して、build systemを含む基本的なEclipseプラグインプロジェクトをセットアップし、それをビルドして既存のEclipseにインストールする準備ができました。

更新ちょっとhereのEclipseプラグインをビルドするためのmavenのアーキタイプが見つかりました。それは、Eclipseのフィーチャー/ updatesiteを構築するための新しい人のための私の推薦です。

+0

これはタスクバーアイコンを点滅させてもよろしいですか? – Mot

1

新しいプラグインプロジェクトを作成し、この種の機能を自分で作成することができます。 Eclipse Jobs APIIJobchangeListenerはおそらく非常に興味深いです。

IJobChangeListenerは、さまざまなタイプのジョブ状態に関する通知を受け取ることができるインターフェイスです。

というクラスを作成しました。IJobchangeListenerJobManagerに追加しました。 SampleActionアクションでは、リスナーを登録または登録解除できます。つまり、リスナーが登録されていてアプリケーションが最小化されている場合は、MessageDialog(点滅するタスクバーなし)で通知されます。

link誰かが自分のスイングアプリケーションを点滅させました。この機能は、public void done(final IJobChangeEvent event)メソッドに含める必要があります。私はテストクラスでこれをやっていない。

String jobName = event.getJob().getName(); 

ジョブの名前は、例えば、読める人間である」:

また、あなたはジョブ名を確認することができます

ここ
event.getJob(); 

Jobに関する追加情報を得ることができます「ゴミの回収」、「装飾完了のための更新」、「作業スペースの作成」などが含まれる。

JobListenerクラス。

/** 
* 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()); 
     } 
    } 
} 

私はあなたが新しいプラグインプロジェクト作成することで、Eclipseプラグインの開発を始めることができます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); 
    } 

と呼ばれるクラスから、このクラスと呼ばれる:私はHello Worldプラグインを使用

File > New > Project > Plugin Project 

を上記のコードをテストするプロジェクトテンプレート。

関連する問題