org.eclipse.debug.ui.launchShortcuts の拡張ポイントを使うと、プロジェクトの 右クリック→Run AS にショートカットを表示させる事ができます。 ![]() ↑は、AIR Application を追加してみた所。 この時のplugin.xmlは、こんな感じ。 <extension point="org.eclipse.debug.ui.launchShortcuts"> <shortcut class="net.sf.amateras.air.launch.LaunchAIRShortcut" icon="icons/air.gif" id="net.sf.amateras.air.launch.LaunchAIRShortcut" label="AIR Application" modes="run"> <perspective id="net.sf.amateras.air.perspective"/> </shortcut> </extension> でも、これだと全てのプロジェクトに表示されちゃいます。 たとえば、Flex関連のプロジェクト用にこのShortcutを追加したつもりでも、Javaプロジェクトなど...関係ない所に表示される。 はっきりいってそれは邪魔っ! ということで、特定の状態のみshortcutを追加する方法をご紹介。 launchShortcutsのEclipseのドキュメントは http://publib.boulder.ibm.com/infocenter/rsmhelp/v7r0m0/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/extension-points/org_eclipse_debug_ui_launchShortcuts.html に少しあったりします。 表示の判定は、shortcut/enablement で条件が書けるようになっています。 選択されたファイル名称が特定のもののみ表示させる方法 <extension point="org.eclipse.debug.ui.launchShortcuts"> <shortcut (省略) <contextualLaunch> <enablement> <with variable="selection"> <count value="1"/> <iterate> <instanceof value="org.eclipse.core.resources.IFile"/> <test value="*.mxml" property="org.eclipse.debug.ui.matchesPattern"/> </iterate> </with> </enablement> <contextualLaunch> </shortcut> </extension> org.eclipse.debug.ui.matchesPatternってのを使えば、ファイル名でチェックできるみたい。 この場合、plugin.xmlを修正するだけですむのでラクチン。 選択されたものが特定のNatureの場合のみ表示させる方法特定のNatureのときのみ表示させる方法が知りたくて調べていたのですが、<test property="org.eclipse.jdt.launching.hasProjectNature" args=""/> ...という、hasProjectNatureというpropertyはどうやらJavaProjectである前提のような感じがします。 JavaProjectでない場合には、どう頑張っても表示されなかったので。。多分ですけども。 package net.sf.amateras.air.expressions; 次に plugin.xmlに登録していきます。import org.eclipse.core.expressions.PropertyTester; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; public class NaturePropertyTester extends PropertyTester { public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { if (receiver instanceof IResource) { IProject project = ((IResource) receiver).getProject(); try { return project.hasNature(expectedValue.toString()); } catch (CoreException e) { return false; } } return false; } } まずは、org.eclipse.core.expressions.propertyTestersの拡張ポイントに登録 <extension point="org.eclipse.core.expressions.propertyTesters"> <propertyTester id="net.sf.amateras.NaturePropertyTester" namespace="net.sf.amateras" properties="hasNature" type="org.eclipse.core.resources.IResource" class="net.sf.amateras.air.expressions.NaturePropertyTester"> </propertyTester> </extension> そして、shortcutのenablement要素に設定。 <extension point="org.eclipse.debug.ui.launchShortcuts"> <shortcut (省略)> <contextualLaunch> <enablement> <with variable="selection"> <count value="1"/> <iterate> <or> <test property="net.sf.amateras.hasNature" value="net.sf.amateras.air.AIRFlexProjectNature"/> <test property="net.sf.amateras.hasNature" value="net.sf.amateras.air.AIRHTMLProjectNature"/> </or> </iterate> </with> </enablement> </contextualLaunch> <perspective id="net.sf.amateras.air.perspective"/> </shortcut> </extension> 上記の設定は、net.sf.amateras.air.AIRFlexProjectNatureもしくはnet.sf.amateras.air.AIRHTMLProjectNatureのプロジェクトであれば表示する設定になっています。 これで無事に表示できるはずっ! |
