Maksim Melnik
Maksim Melnik

Reputation: 555

Eclipse plugin, custom Run command

So, for learning purposes, I am writing an eclipse plugin which should take an already existing launch configuration, and rerun it with just some new VM - attributes.

Through the org.eclipse.ui.commands extension point i was able to create the command.

  <extension point="org.eclipse.ui.commands">
  <command
        defaultHandler="launchconfigurator.LaunchConfiguratorCommandHandler"
        id="launchconfigurator.toolbar.command"
        name="JCCRun">
  </command>
  </extension>

Next I added the button to the toolbar :

   <extension
     point="org.eclipse.ui.menus">
  <menuContribution
        locationURI="toolbar:org.eclipse.ui.main.toolbar">
  </menuContribution>
  <menuContribution
        locationURI="toolbar:org.eclipse.debug.ui.launchActionSet">
     <command
           commandId="launchconfigurator.toolbar.command"
           icon="favicon_1_-3.png"
           style="pulldown">
        <visibleWhen
              checkEnabled="true">
        </visibleWhen>
     </command>
  </menuContribution>

At this point i have a button on my toolbar which shows me my button and has an arrow for a drop down menu. But when i click on the menue arrow, nothing happens...

What i want to have is exactly the same menu like the eclipse run or debug buttons have... Does anyone know how i could aproach this?

I guess there should be something what i need to do with my plugin.xml to make eclipse see my button as a run button, but i am not sure what exactly does eclipse need... Maybe there is some eclipse source code i could look at?

I even implemented own delegates and tab groups, which i didn't need for my execution but thought it would help... But , sadly, it didn't...

Thx in advance for your answer, May the force be with you

Upvotes: 2

Views: 928

Answers (1)

greg-449
greg-449

Reputation: 111142

The 'Run' button is defined using the old style org.eclipse.ui.actionSets extension point:

   <action
           id="org.eclipse.debug.internal.ui.actions.RunDropDownAction"
           toolbarPath="org.eclipse.debug.ui.launchActionSet/debug"
           hoverIcon="$nl$/icons/full/etool16/run_exc.png"
           class="org.eclipse.debug.internal.ui.actions.RunToolbarAction"
           disabledIcon="$nl$/icons/full/dtool16/run_exc.png"
           icon="$nl$/icons/full/etool16/run_exc.png"
           helpContextId="run_action_context"
           label="%RunDropDownAction.label"
           style="pulldown">
     </action>

So the code that creates the Run dropdown menu is org.eclipse.debug.internal.ui.actions.RunToolbarAction. This is just a tiny class:

public class RunToolbarAction extends AbstractLaunchToolbarAction {
  public RunToolbarAction() {
    super(IDebugUIConstants.ID_RUN_LAUNCH_GROUP);
  }
}

So this is using the more general class AbstractLaunchToolbarAction and specifying the launch group to be shown. You may be able to do something similar.

Upvotes: 2

Related Questions