Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [e4-dev] Show / hide a menu according to the perspective

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 <tom.schindl@xxxxxxxxxxxxxxx> 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
>> <tom.schindl@xxxxxxxxxxxxxxx <mailto:tom.schindl@xxxxxxxxxxxxxxx>> 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
>>     <nicolas.sarazin.pro@xxxxxxxxx <mailto:nicolas.sarazin.pro@xxxxxxxxx>
>>     > <mailto:nicolas.sarazin.pro@xxxxxxxxx
>>     <mailto:nicolas.sarazin.pro@xxxxxxxxx>>> 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 <dirk.fauth@xxxxxxxxx
>>     <mailto:dirk.fauth@xxxxxxxxx>
>>     >     <mailto:dirk.fauth@xxxxxxxxx <mailto:dirk.fauth@xxxxxxxxx>>>
>>     >
>>     >         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
>>     >         <nicolas.sarazin.pro@xxxxxxxxx
>>     <mailto:nicolas.sarazin.pro@xxxxxxxxx>
>>     >         <mailto:nicolas.sarazin.pro@xxxxxxxxx
>>     <mailto:nicolas.sarazin.pro@xxxxxxxxx>>> 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
>>     >             e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
>>     <mailto:e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>>
>>     >             https://dev.eclipse.org/mailman/listinfo/e4-dev
>>     >
>>     >
>>     >
>>     >         _______________________________________________
>>     >         e4-dev mailing list
>>     >         e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
>>     <mailto:e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>>
>>     >         https://dev.eclipse.org/mailman/listinfo/e4-dev
>>     >
>>     >
>>     >
>>     >     _______________________________________________
>>     >     e4-dev mailing list
>>     >     e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
>>     <mailto:e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>>
>>     >     https://dev.eclipse.org/mailman/listinfo/e4-dev
>>     >
>>     >
>>     >
>>     >
>>     > _______________________________________________
>>     > e4-dev mailing list
>>     > e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
>>     > https://dev.eclipse.org/mailman/listinfo/e4-dev
>>     >
>>
>>     _______________________________________________
>>     e4-dev mailing list
>>     e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
>>     https://dev.eclipse.org/mailman/listinfo/e4-dev
>>
>>
>>
>>
>> _______________________________________________
>> e4-dev mailing list
>> e4-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/e4-dev
>>
>
> _______________________________________________
> e4-dev mailing list
> e4-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/e4-dev
>

_______________________________________________
e4-dev mailing list
e4-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/e4-dev


Back to the top