So if I understand you correctly, instead of having a "Visible-When"-Core Expression, it would be better to have a mechanism that uses DI.
To get a picture, we could introduce a new annotation like @Visible, which works similar to @CanExecute, so the visible state is calculated on request. Or would you suggest to create a new service that needs to be called manually to enable/disable the visible state? The @Visible annotation seems to be the approach that matches the E4 concepts, not sure about the implementation details. :) On Mon, Jan 20, 2014 at 2:01 PM, Tom Schindl <[email protected]>wrote: > Just one more note: The enabled handling is working in the opposite! > > Tom > > On 20.01.14 14:00, Tom Schindl wrote: > > Hi, > > > > Well the model is the backing state of the UI which is represented by > > the visible-attribute and the renderer should act according to this > > attribute. > > > > Now we have the situation that this value is calculated based upon 2 > > informations: > > a) the value of the attribute > > b) the value of the expression > > > > The renderer need to check both of them and changes must be propagated > > by both so that the renderer is able to update the UI. > > > > I would have found it more logical if the visible-when concept would > > have been implemented by a service where you connect the visible-when > > calculation to a certain *workbench-element* and this service would > > simply set the visible-attribute of the model element. > > > > Tom > > > > On 20.01.14 13:08, Dirk Fauth wrote: > >> @Pawel > >> According to this IMHO it should work: > >> > http://www.vogella.com/tutorials/EclipseRCP/article.html#commandsmore_coreexpressions > >> > >> I used this some time ago and the Visible-When Core Expression is > >> working fine so far. > >> > >> @Tom > >> Why was it wrong to add it to the application model? The use cases for > >> visible-when exist. Is it just the implementation you think that is > wrong? > >> > >> IMHO the visible-when concept in E4 is really not easy to understand. > >> And you still need the plugin.xml to get it working with the application > >> model. It feels a bit too complicated the way it is now. > >> > >> @Nicolas > >> You could set a value for the active perspective to the IEclipseContext > >> as described in the tutorial I posted above. And then let your > >> expression evaluate your custom value. In that case you would need to > >> implement a listener that reacts on perspective change so you are able > >> to change the value for your expression in the context. > >> I didn't found a special perspective change event, but as a starting > >> point you could try to listen for UIEvents.Perspective.TOPIC_ALL and > >> evaluate the current active perspective. > >> > >> To be honest, I didn't try this myself, but from my understanding this > >> would be the first thing to try. > >> > >> > >> On Mon, Jan 20, 2014 at 12:11 PM, Tom Schindl > >> <[email protected] <mailto:[email protected]>> > wrote: > >> > >> I think it was wrong to add the visible-when expression to the > model. > >> > >> Tom > >> > >> On 20.01.14 12:09, Paweł Doleciński wrote: > >> > Hi Nicolas, > >> > > >> > what you need to do is to implement and register your own > Visible-When > >> > Expression which will look up Active Perspective. To do so, you > simple > >> > can inject MPerspectiveStack from which you can retrieve selected > >> > perspective. > >> > > >> > But this is only one step. Next one is that expressions are not > >> > supported if your menu item is directly placed in Application > Model > >> > under MenuToolbar. > >> > To have it working, your menu item with visible-when expression > >> needs to > >> > be under Menu Contributions node. > >> > > >> > Anyway, it seems to be a bug. Either visble-when expression > should be > >> > evaluated if menu is somewhere in Windows node or option to set > one > >> > should be not available. > >> > > >> > Cheers, > >> > Paweł. > >> > > >> > -- > >> > Pozdrawiam / Best regards > >> > Paweł Doleciński > >> > > >> > > >> > On 20 January 2014 11:57, Nicolas Sarazin > >> <[email protected] <mailto: > [email protected]> > >> > <mailto:[email protected] > >> <mailto:[email protected]>>> wrote: > >> > > >> > Thank you for answer ! > >> > > >> > But : > >> > > >> > MPerspective mpOffers = (MPerspective) > >> > modelService.find("fr.sogeti.e4.sogeti.perspective.vdoffers", > >> > application); > >> > MMenu mmOffers = (MMenu) > >> > modelService.find("fr.sogeti.e4.sogeti.menu.business", > >> application); > >> > partService.switchPerspective(mpOffers); > >> > mmOffers.setEnabled(false); > >> > > >> > In this code, mmOffers is null, and I think that it is bound > >> to this > >> > bug : https://bugs.eclipse.org/bugs/show_bug.cgi?id=383403 > >> > > >> > I think that I can't change programatically the state of menu. > >> No ? > >> > > >> > Thank you in advance > >> > > >> > > >> > 2014/1/20 Dirk Fauth <[email protected] > >> <mailto:[email protected]> > >> > <mailto:[email protected] <mailto:[email protected]>>> > >> > > >> > Hi, > >> > > >> > this question was asked on the forum a while ago: > >> > > >> > http://www.eclipse.org/forums/index.php/t/627845/ > >> > > >> > > >> > There is no equivalent for that, as there is no > >> workbenchWindow > >> > in e4. You could try to workaround that by providing your > own > >> > value for the definition which is set by a event listener > that > >> > reacts on perspective changes for example. > >> > > >> > Greez, > >> > Dirk > >> > > >> > > >> > On Mon, Jan 20, 2014 at 10:32 AM, Nicolas Sarazin > >> > <[email protected] > >> <mailto:[email protected]> > >> > <mailto:[email protected] > >> <mailto:[email protected]>>> wrote: > >> > > >> > Hello, > >> > > >> > I use Eclipse 4.3.1 and Eclipse e4 Tools 0.14.0. > >> > > >> > How can I show / hide a menu according to the current > >> > perspective ? > >> > > >> > Menu : Trimmed Window -> Main Menu -> Menu > >> > > >> > I looked for "Visible-When Expression", but I don't > >> find the > >> > variable equivalent of > >> > "|activeWorkbenchWindow.activePerspective|" in e4. > >> > > >> > Thanks in advance ! > >> > > >> > _______________________________________________ > >> > e4-dev mailing list > >> > [email protected] <mailto:[email protected]> > >> <mailto:[email protected] <mailto:[email protected]>> > >> > https://dev.eclipse.org/mailman/listinfo/e4-dev > >> > > >> > > >> > > >> > _______________________________________________ > >> > e4-dev mailing list > >> > [email protected] <mailto:[email protected]> > >> <mailto:[email protected] <mailto:[email protected]>> > >> > https://dev.eclipse.org/mailman/listinfo/e4-dev > >> > > >> > > >> > > >> > _______________________________________________ > >> > e4-dev mailing list > >> > [email protected] <mailto:[email protected]> > >> <mailto:[email protected] <mailto:[email protected]>> > >> > https://dev.eclipse.org/mailman/listinfo/e4-dev > >> > > >> > > >> > > >> > > >> > _______________________________________________ > >> > e4-dev mailing list > >> > [email protected] <mailto:[email protected]> > >> > https://dev.eclipse.org/mailman/listinfo/e4-dev > >> > > >> > >> _______________________________________________ > >> e4-dev mailing list > >> [email protected] <mailto:[email protected]> > >> https://dev.eclipse.org/mailman/listinfo/e4-dev > >> > >> > >> > >> > >> _______________________________________________ > >> e4-dev mailing list > >> [email protected] > >> https://dev.eclipse.org/mailman/listinfo/e4-dev > >> > > > > _______________________________________________ > > e4-dev mailing list > > [email protected] > > https://dev.eclipse.org/mailman/listinfo/e4-dev > > > > _______________________________________________ > e4-dev mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/e4-dev >
_______________________________________________ e4-dev mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/e4-dev
