Updating Eclipse context menu contributions on right click - eclipse

In my Eclipse RCP application, I have created a context menu in a tree viewer with some contributions that are added depending on the results of various property testers. Those property testers evaluate attributes of the model object which is selected with right click when opening the context menu.
When debugging, I noticed that the property testers are only executed when the selection in the tree viewer changes, but not on right clicking when opening the context menu. How do I get the property testers called when right clicking?
I need the property testers executed when right clicking because some actions change the underlying model objects and therefore should result in a different context menu. And the user might execute such an action and and open the context menu right after without changing the selection.

Have a look at IEvaluationService.requestEvaluation(String propertyName)... It does exactly what you need. You get the evaluation service from the site like all the other services:
IEvaluationService es = (IEvaluationService)getSite().getService(IEvaluationService.class);

Related

Removing "Show In" menu items in Eclipse RCP application

I am developing an Eclipse RCP application, and would like to remove some of the items displayed in the "Show In" context menu. The items are placed in this menu by various plug-ins, and I would prefer to not have them there.
Adding a new entry to this menu is well documented: https://wiki.eclipse.org/FAQ_How_do_I_make_my_view_appear_in_the_Show_In_menu%3F
However, removing an existing entry seems problematic, since Views are listed in the "Show In" menu by virtue of them implementing the IShowInTarget interface. The resulting menu items do not have unique IDs that could be used to disable them via an Activity.
It seems to me like the only way to avoid listing a View defined by an existing plug-in in the "Show In" menu is to extend the plug-in class implementing this View.
The source code for the 'Show In' menu is org.eclipse.ui.internal.ShowInMenu.
This gets contributions from a number of places but I don't see anything that could be used to filter them.
'Extending the plug-in class implementing the view' is not really possible.

Hide Resource Management Context Menu entries from a view

I have a custom view in my eclipse RCP and want to hide some of the actions from org.eclipse.ui.navigator.resources.ResourceMgmtActions when a user right clicks on a IProject resource. I just want to display "refresh" action and hide Close, Open, Close Unrelated projects, Build option from the context menu. Is there a way to do this declaratively via plugin.xml or pro grammatically without copying the code from ResourceMgmtActionProvider.java?

Adding New Components in WindowBuilder Design View

At risk of this being a trivial question, I need to know how to add more components (in the components explorer) in WindowBuilder for Eclipse Juno. I'm taking a dive and trying learn how to add a GUI to one of my personal projects. Right now all I have mustered up is just a JFrame that has a button that launches my program in the console with a little notification saying so. But what I am thinking about having is a "Start up Window" with just some stuff and button or something that says Enter application or something. So then I want a new window to pop up as a "Run Window". I have created a new JFrame as a "run window" and hide/set visibility of "startWindow" to false and get the result I want. But I want to be able to edit this new JFrame in the design window along with the default JFrame I started with.
Is there a way to do this? I tried right-clicking in the components window in the design view and it doesn't do anything. I also tried right-click the object from the project explorer and couldn't find anything. Am I missing something? Is this even possible?
The question seems to have 2 parts, so I will try to answer both of them.
1) Adding components directly in the components explorer
The only thing you could do, to get new components into there via right-click is "Surround with". For example you have a JPanel, right-click on it and click "Surround with...". You could try and put a JScrollPanel in there, so you can scroll your JPanel.
But the usual way to add components is by the "Palette", it contains a lot of components, that you can drag&drop into either the components-explorer or directly into your app Window -> Show View -> Palette.
2) Showing a certain window
If I understand this correctly, you want to show one window, click on a button and then show another window which has the same size etc. like the one before.
Setting the visibility for the first window to false and the second does work.
But under certain circumstances it's easier to use CardLayout.
Imagine a stack of cards, you can see only the first card. Then you click a button and now see the second card and so on.
See this: https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html
for information and examples.

How to programmatically (or via eclipse plugin.xml) enable context menu which is disabled by eclipse IDE?

In CDT, How can I programmatically (or via eclipse plugin.xml) enable the context menu of a project "Build Project" when It is right clicked. So that I can make the Build Action enabled in order to solve this problem.
Please Check this forum link for more information:
https://www.eclipse.org/forums/index.php/m/1709440/#msg_1709440
I have tried MenuManager but it returns the top menu? I want to access the pop-up menu when it is right clicked on a project.
What I experienced so far is I can programatically get the flow of program when I right-click a project via CommonActionProvider by defining a class at org.eclipse.ui.navigator.navigatorContent at plugin.xml under which I have a defined actionProvider. Now at this ActionProvider I can halt at debug when I right click the project first at setContext method via ActionContext parameter. And this is the point where I want to get access to the right-click menu of selection.
I can acess the selection I get it from context at this point and because I right-clicked at it the context menu will hapen but how I get the access to this right click menu programatically ? When I right click the project after selecting it via control button I get now the access to method fillContextMenu with parameter IMenuManager menu but the bug is not at this part so I dont need to do anything at this method. I need the access to right click menu when I right click an unselected project (via holding control button). Any idea?
I solved the bug via an actionProvider (enablement for a instanceof IProject.) Here in the class that I extended from CommonActionProvider at the method setContext I got the command via commandService and getCommand method. Then calling buildCommand.isEnabled(); solved the bug.

Adding menu listener for Paste option in SWT Browser

I have a org.eclipse.swt.browser.Browser instance created in a composite. I would like to know when some content is pasted in the browser using the (platform specific) right click context menu and selecting the paste option.
In the menuDetected() of MenuDetectListener, I get a notification when the context menu is detected in the browser.
How can I know if the Paste option is selected from the context menu?
Regards,
Noopur
No you can't access the selected context menu item. There is no direct provision for that. At least not in eclipse 3.7. Although, you could try different combinations of events for determining the menu item. For example, in windows the internet explorer populates the status bar with 'inserts the clipboard...' when your mouse pointer hovers over the Paste menu item, you can capture this using StatusTextListener event.
Note: The hack is not an elegant solution, even if you get it working, there is still some possibility that it may break with new or older releases of SWT or in fact its behavior may vary with operating systems !!