Eclipse/プラグイン開発のTIPS集/タスクトレイにアイコンを表示する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
Eclipse プラグインでタスクトレイのアイコンを制御する方法...
Windowsのタスクトレイや、Macのメニューバーにアイコンを表...
private TrayItem initTaskItem(IWorkbenchWindow window, S...
final Tray tray = window.getShell().getDisplay().get...
TrayItem trayItem = new TrayItem(tray, SWT.NONE);
trayItem.setImage(appIconImage);
trayItem.setToolTipText(toolTip);
return trayItem;
}
という感じでTrayItemを生成し、
final Shell shell = window.getShell();
final MenuManager trayMenu = new MenuManager();
final Menu menu = trayMenu.createContextMenu(shell);
trayMenu.add(ActionFactory.PREFERENCES.create(window)); ...
とやってMenuManagerを生成、最後に
trayItem.addMenuDetectListener(new MenuDetectListener() {
public void menuDetected(MenuDetectEvent e) {
menu.setVisible(true);
}
});
動かしてみると、、、
#ref(taskTray.png)
表示されました。。
終了時のDisposeなど含め、全体のソースはこんな感じ。
package nu.mine.kino.plugin.tasktray;
import org.apache.log4j.Logger;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MenuDetectEvent;
import org.eclipse.swt.events.MenuDetectListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.ActionFactory.IWorkbenchAc...
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfig...
import org.eclipse.ui.application.WorkbenchWindowAdvisor;
import org.eclipse.ui.plugin.AbstractUIPlugin;
public class ApplicationWorkbenchWindowAdvisor extends W...
/**
* Logger for this class
*/
private static final Logger logger = Logger
.getLogger(ApplicationWorkbenchWindowAdvisor...
private TrayItem trayItem;
private Image appIconImage;
private IWorkbenchWindow window;
public ApplicationWorkbenchWindowAdvisor(
IWorkbenchWindowConfigurer configurer) {
super(configurer);
// Task Tray のアイコンイメージ
appIconImage = AbstractUIPlugin.imageDescriptorF...
TaskTrayPlugin.PLUGIN_ID, "/icons/applic...
.createImage();
}
public ActionBarAdvisor createActionBarAdvisor(
IActionBarConfigurer configurer) {
return new ApplicationActionBarAdvisor(configure...
}
public void preWindowOpen() {
// ここはアプリ(GUI)を画面に表示しないための処理...
IWorkbenchWindowConfigurer configurer = getWindo...
configurer.setInitialSize(new Point(1, 1));
configurer.setShowCoolBar(false);
configurer.setShowStatusLine(false);
configurer.setShellStyle(SWT.NONE);
// configurer.setTitle("TaskTray RCP"); /...
}
@Override
public void postWindowOpen() {
window = getWindowConfigurer().getWindow();
// ここはアプリ(GUI)を画面に表示しないための処理...
Shell shell = window.getShell();
shell.setMinimized(true);
shell.setVisible(false);
super.postWindowOpen();
initTrayItem("Retrieving information ...");
}
private void initTrayItem(String toolTip) {
if (trayItem != null) {
trayItem.dispose();
}
trayItem = initTaskItem(window, toolTip);
final Shell shell = window.getShell();
final MenuManager trayMenu = new MenuManager();
final Menu menu = trayMenu.createContextMenu(she...
trayMenu.add(ActionFactory.PREFERENCES.create(wi...
final IWorkbenchAction quitAction = ActionFactor...
trayMenu.add(new Action() {
{
setText("Quit");
}
@Override
public void run() {
// defaultのquitActionだと、場合によって...
// 自前で終了処理。どうも画面にUIがない...
shell.setVisible(true);
shell.setMinimized(false);
quitAction.run();
}
});
trayItem.addMenuDetectListener(new MenuDetectLis...
public void menuDetected(MenuDetectEvent e) {
menu.setVisible(true);
}
});
trayItem.addSelectionListener(new SelectionAdapt...
@Override
public void widgetDefaultSelected(SelectionE...
// トレイのアイコンをダブルクリックした...
}
});
}
private TrayItem initTaskItem(IWorkbenchWindow windo...
final Tray tray = window.getShell().getDisplay()...
TrayItem trayItem = new TrayItem(tray, SWT.NONE);
trayItem.setImage(appIconImage);
trayItem.setToolTipText(toolTip);
return trayItem;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.application.WorkbenchWindowAd...
*/
@Override
public void dispose() {
logger.debug("dispose() - start");
appIconImage.dispose();
trayItem.dispose();
super.dispose();
logger.debug("dispose() - end");
}
}
----
この記事は
#vote(おもしろかった[3],そうでもない[10])
-やりかたはわかったんだけどーじかんが。。。 -- [[きの]] &...
- 気づいたら、七年ぶりの更新。。 -- [[きの]] &new{2014-01...
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
Eclipse プラグインでタスクトレイのアイコンを制御する方法...
Windowsのタスクトレイや、Macのメニューバーにアイコンを表...
private TrayItem initTaskItem(IWorkbenchWindow window, S...
final Tray tray = window.getShell().getDisplay().get...
TrayItem trayItem = new TrayItem(tray, SWT.NONE);
trayItem.setImage(appIconImage);
trayItem.setToolTipText(toolTip);
return trayItem;
}
という感じでTrayItemを生成し、
final Shell shell = window.getShell();
final MenuManager trayMenu = new MenuManager();
final Menu menu = trayMenu.createContextMenu(shell);
trayMenu.add(ActionFactory.PREFERENCES.create(window)); ...
とやってMenuManagerを生成、最後に
trayItem.addMenuDetectListener(new MenuDetectListener() {
public void menuDetected(MenuDetectEvent e) {
menu.setVisible(true);
}
});
動かしてみると、、、
#ref(taskTray.png)
表示されました。。
終了時のDisposeなど含め、全体のソースはこんな感じ。
package nu.mine.kino.plugin.tasktray;
import org.apache.log4j.Logger;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MenuDetectEvent;
import org.eclipse.swt.events.MenuDetectListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.ActionFactory.IWorkbenchAc...
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfig...
import org.eclipse.ui.application.WorkbenchWindowAdvisor;
import org.eclipse.ui.plugin.AbstractUIPlugin;
public class ApplicationWorkbenchWindowAdvisor extends W...
/**
* Logger for this class
*/
private static final Logger logger = Logger
.getLogger(ApplicationWorkbenchWindowAdvisor...
private TrayItem trayItem;
private Image appIconImage;
private IWorkbenchWindow window;
public ApplicationWorkbenchWindowAdvisor(
IWorkbenchWindowConfigurer configurer) {
super(configurer);
// Task Tray のアイコンイメージ
appIconImage = AbstractUIPlugin.imageDescriptorF...
TaskTrayPlugin.PLUGIN_ID, "/icons/applic...
.createImage();
}
public ActionBarAdvisor createActionBarAdvisor(
IActionBarConfigurer configurer) {
return new ApplicationActionBarAdvisor(configure...
}
public void preWindowOpen() {
// ここはアプリ(GUI)を画面に表示しないための処理...
IWorkbenchWindowConfigurer configurer = getWindo...
configurer.setInitialSize(new Point(1, 1));
configurer.setShowCoolBar(false);
configurer.setShowStatusLine(false);
configurer.setShellStyle(SWT.NONE);
// configurer.setTitle("TaskTray RCP"); /...
}
@Override
public void postWindowOpen() {
window = getWindowConfigurer().getWindow();
// ここはアプリ(GUI)を画面に表示しないための処理...
Shell shell = window.getShell();
shell.setMinimized(true);
shell.setVisible(false);
super.postWindowOpen();
initTrayItem("Retrieving information ...");
}
private void initTrayItem(String toolTip) {
if (trayItem != null) {
trayItem.dispose();
}
trayItem = initTaskItem(window, toolTip);
final Shell shell = window.getShell();
final MenuManager trayMenu = new MenuManager();
final Menu menu = trayMenu.createContextMenu(she...
trayMenu.add(ActionFactory.PREFERENCES.create(wi...
final IWorkbenchAction quitAction = ActionFactor...
trayMenu.add(new Action() {
{
setText("Quit");
}
@Override
public void run() {
// defaultのquitActionだと、場合によって...
// 自前で終了処理。どうも画面にUIがない...
shell.setVisible(true);
shell.setMinimized(false);
quitAction.run();
}
});
trayItem.addMenuDetectListener(new MenuDetectLis...
public void menuDetected(MenuDetectEvent e) {
menu.setVisible(true);
}
});
trayItem.addSelectionListener(new SelectionAdapt...
@Override
public void widgetDefaultSelected(SelectionE...
// トレイのアイコンをダブルクリックした...
}
});
}
private TrayItem initTaskItem(IWorkbenchWindow windo...
final Tray tray = window.getShell().getDisplay()...
TrayItem trayItem = new TrayItem(tray, SWT.NONE);
trayItem.setImage(appIconImage);
trayItem.setToolTipText(toolTip);
return trayItem;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.application.WorkbenchWindowAd...
*/
@Override
public void dispose() {
logger.debug("dispose() - start");
appIconImage.dispose();
trayItem.dispose();
super.dispose();
logger.debug("dispose() - end");
}
}
----
この記事は
#vote(おもしろかった[3],そうでもない[10])
-やりかたはわかったんだけどーじかんが。。。 -- [[きの]] &...
- 気づいたら、七年ぶりの更新。。 -- [[きの]] &new{2014-01...
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: