有没有一种方法可让Eclipse在任务耗尽任务完成后闪烁其任务栏图标?
我经常最小化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
插件项目模板来测试上面的代码。
您是否认为操作系统提供了API来执行此类操作?在Windows 7上,Eclipse的任务栏图标可以报告安装新软件的进度。基本上,platform/swt支持它在特定的操作系统上,但插件需要适应使用该功能来报告进度。 – Kane 2012-02-14 03:18:11