1

問題は次のとおりです。私が Web で読んだほとんどのことは、コマンド フレームワークがより多くの分離を可能にするため、ポップアップ メニューを作成するときはアクションを避けるべきだと言っています。

例: http://wiki.eclipse.org/FAQ_What_is_the_difference_between_a_command_and_an_action%3F

けっこうだ。

しかし、エディター内で .java ファイルを右クリックしたときに、コマンド フレームワークにメニューを追加するのに時間がかかっています。エディター内をクリックしたときだけです。('with' と activeEditor 変数を使用して) 表示するメニューを取得できますが、パッケージ エクスプローラー内の Java ファイルを右クリックしたときにも表示されますが、これは望ましくありません。ファイルがエディター内で既に開かれているためだと思われます。

IComplilationUnit を使用して、パッケージ エクスプローラー内の Java ファイルを右クリックすると追加されるメニューもあります。それはうまくいきます。

だから私の問題は、ファイル内をクリックしたときのポップアップメニューアクションを使用して解決されます。そこにあるすべての ISelection にもアクセスできます。しかし、カップリングが高すぎて、ハンドラーを使用する柔軟性が失われています。

私は次のいずれかを探しています。または Java ファイル エディタを右クリックしたときにのみポップアップを表示する方法を教えてください。

よろしく

4

1 に答える 1

2

結局、それは本当に簡単でした。以下の例では、コマンド フレームワークを使用しています。ハンドラーがないため、クラスを生成する必要があるときはいつでも、クラスのハイパーリンクをクリックするだけです。

com.test.plugin.project という新しい Eclipse プラグイン プロジェクトを作成します。

plugin.xml ファイルの依存関係タブで、次の依存関係を追加します。

  • org.eclipse.jdt
  • org.eclipse.jdt.core
  • org.eclipse.jdt.ui
  • org.eclipse.jface.text

これを plugin.xml タブセクションに入れます:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="true"
            locationURI="popup:org.eclipse.ui.popup.any">
         <menu
               label="Test Project Sub Menu">
            <command
                  commandId="com.test.plugin.project.command.packageexplorer"
                  id="packageexplorerId"
                  style="push">
               <visibleWhen
                     checkEnabled="false">
                  <iterate
                        ifEmpty="false"
                        operator="or">
                     <instanceof
                           value="org.eclipse.jdt.internal.core.CompilationUnit">
                     </instanceof>
                  </iterate>
               </visibleWhen>
            </command>
            <command
                  commandId="com.test.plugin.project.command.classfile"
                  id="classfileId"
                  style="push">
               <visibleWhen
                     checkEnabled="false">
                  <iterate
                        ifEmpty="false"
                        operator="or">
                     <and>
                        <with
                              variable="selection">
                           <instanceof
                                 value="org.eclipse.jface.text.TextSelection">
                           </instanceof>
                        </with>
                        <with
                              variable="activeEditorId">
                           <equals
                                 value="org.eclipse.jdt.ui.CompilationUnitEditor">
                           </equals>
                        </with>
                     </and>
                  </iterate>
               </visibleWhen>
            </command>
         </menu>
      </menuContribution>
   </extension>
   <extension
         point="org.eclipse.ui.commands">
      <command
            id="com.test.plugin.project.command.packageexplorer"
            name="Only Show In Package Explorer">
      </command>
      <command
            id="com.test.plugin.project.command.classfile"
            name="Only Show In Class File">
      </command>
   </extension>

</plugin>

これが何をするか

  • パッケージエクスプローラー内のJavaファイルを右クリックすると(Javaファイルをクリックした場合のみ)、サブメニューにポップアップメニューが1つ作成されます。
  • Java ファイルを右クリックすると、サブ メニューに別のポップアップ メニューが作成されます。
于 2012-12-14T10:43:19.187 に答える