2010-03-18 2 views
2

Я использую лоток Eclipse RCP, который описан in Vogellas tutorials.Изменить подсказку TrayIcon от ProgressMonitorDialog

Требование теперь заключается не только в том, чтобы показать имя приложения во всплывающей подсказке, но и в процентах при выполнении длительных операций.

Я понимаю, что атрибут trayitem является частным от ApplicationWorkbenchWindowAdvisor, поэтому я добавил метод getter и setter.

Единственное, чего не хватает, - это получить доступ к экземпляру лотка из моего экземпляра ProgressMonitorDialog.

Можете ли вы сказать мне, как вы решили эту головоломку?
Благодаря

ответ

1

Так как вы можете построить TrayItem вокруг SystemTray из любых окон:

final Tray tray = window.getShell().getDisplay().getSystemTray(); 
TrayItem trayItem = new TrayItem(tray, SWT.NONE); 

, у вас есть доступ к чтоTrayItem экземпляр из ApplicationWorkbenchWindowAdvisor?

Вы можете поместить его в более доступный класс или даже построить там, где и когда вам это нужно.


Говоря показывает процент при выполнении длительных операций, я просто хотел упомянутых последних задач иконки improvements in Eclipse3.6M6 (не системный трей, но связанные в настоящее время они могут обеспечить хороший индикатор состояния). См. Пример Snippet 336.

  • TaskItem наложенное изображение

Новый API TaskItem#setOverlayImage(Image) позволяет клиентам установить изображение, которое будет отображаться в верхней части кнопки приложения на панели задач.

alt text http://download.eclipse.org/eclipse/downloads/drops/S-3.6M6-201003121448/images/overlayimage.png

  • TaskItem наложение текста

Новый API TaskItem#setOverlayText(String) позволяет клиентам установить короткий текст, который будет отображаться в верхней части кнопки приложения на панели задач.

alt text http://download.eclipse.org/eclipse/downloads/drops/S-3.6M6-201003121448/images/overlaytext.png

  • TaskItem прогресс

Новые интерфейсы TaskItem#setProgress(int) и TaskItem#setProgressState(int) позволяет клиентам показывать индикацию прогресса в кнопке приложения в панели задач.

alt text http://download.eclipse.org/eclipse/downloads/drops/S-3.6M6-201003121448/images/progress.png

+0

Спасибо! Насколько я знаю в классе/потоке ProgressMonitorDialog, у меня нет доступа к экрану или окну ... Я также попытался открыть почтовый ящик с этим классом, и из-за этого он не удался. Или я делаю что-то неправильно? – Raven

+0

@Raven: Я не понимаю: «Диалог» - это «Окно». метод getShell() 'должен быть доступен. – VonC

+0

Вызвано: org.eclipse.swt.SWTException: Недопустимый доступ к потоку Это сообщение об ошибке, которое я получил после доступа к оболочке/дисплею. Я использую ProgressDialog из этого урока: http://www.vogella.de/articles/EclipseJobs/article.html – Raven

Смежные вопросы