On Wed, May 9, 2012 at 11:38 AM, Usman Bhatti usman.bhatti@gmail.comwrote:
On Wed, May 9, 2012 at 11:23 AM, Tudor Girba tudor@tudorgirba.com wrote:
Hi Usman,
Ok, so what you want is definitely not a class based specification of the menu (as I see it now in your proposed changes), but a browser-specific one.
So, in this case, why is it not enough to just build the menu manually?
Here is an example:
t := GLMTabulator new. t column: #one. t transmit to: #one; andShow: [:a | a list display: [:model | model allClasses ]; selectionAct: [:list | list selection viewBlueprint ] entitled: 'Blueprint' ] t openOn: MooseModel root allModels anyOne
Another option would be to just create your own polymorphic method for MooseEntities that provides your desired set actions. So, instead of using the default mooseFinderActions, you would use your own like this:
yourOwnActions ... ^ aCollectionOfGlamourActions
And then in the browser:
a list ... dynamicActionsOnSelection: [ :list | list
selection yourOwnActions ]
Would that not be enough?
That's perfect because I want to reuse some existing menus... That's resolves my problem.
Not all :-) For example, this method in MooseEntity does not allow me to polymorphically invoke my own actions. My browser is collecting this method because of the pragma moosePresentationOrder: and the default mooseFinderActions gets executed again populating undesirable menus. I want to use the method to keep the finder-type navigation. Any idea of a neat solution to this problem?
mooseFinderNavigationIn: composite <moosePresentationOrder: 1> composite list title: 'Navigation'; titleIcon: MooseIcons mooseNavigation; updateOn: MooseEntityAdded from: [ :anObject | anObject announcer ]; updateOn: MooseEntityRemoved from: [ :anObject | anObject announcer ]; display: [ :anObject | |entity col| entity := anObject mooseInterestingEntity. entity propertiesToDisplay: entity complexPropertySelectors ]; icon: [:each | each mooseInterestingEntity mooseIcon]; format: #mooseDisplayString; " when: [:input | input mooseInterestingEntity isCollection not or: [ input mooseInterestingEntity isKindOf: MooseModel] ]; " dynamicActionsOnSelection: [ :list | list selection mooseInterestingEntity *mooseFinderActions* ]
thanx a lot. Usman
Cheers, Doru
On Wed, May 9, 2012 at 11:02 AM, Usman Bhatti usman.bhatti@gmail.com wrote:
On Tue, May 8, 2012 at 10:47 PM, Tudor Girba tudor@tudorgirba.com
wrote:
Hi Usman,
Could we start from your actual requirement?
As I understood, you would just want to have a subclass of MooseModel,
and
then have a MoosePanel that has a special menu for this entity. Is
that so?
This is just one requirement and it was not difficult to resolve and its done away with.
The problem is occurring from the requirement that I need to build customized menus for entities in the model (FAMIXClass, FAMIXMethod,
etc.)
in my browser: I want to eliminate some menus (inspect, evaluate, etc.)
for
my entities.
Now, the menus are defined in MooseEntity hierarchy so even if I am
creating
a different browser/finder, my patch blocks the menus for all browser
and
not just mine. So, the change set provides a way to resolve this
problem,
though not completely :-).
hence the question: how to resolve the problem of customized menus for
moose
entities without impacting other browsers and without making the
solution
complicated?
we can talk about it if you want.
Usman
If yes, the simplest way would be to define a YourPanel and build the
menu
you want there. Would this not work?
Cheers, Doru
On 8 May 2012, at 21:53, Usman Bhatti wrote:
On Tue, May 8, 2012 at 3:03 PM, Tudor Girba tudor@tudorgirba.com wrote: Hi,
I took a quick look, and I think this is the wrong way to approach
the
problem. The default Moose menu relies on a lightweight
implementation
that is useful for just that: being a default menu. If you are adding multiple layers to this mechanism it will become too complex.
I agree that adapting the current system for customization will make
it
more complex and difficult to manage.
If you want to go into customization, than the way to go is to reify each action as an object and then assembly the menu by putting those objects together in the menu logic. Basically, you would need to implement a command hierarchy (like the hierarchy of MoosePanelCommand).
So, you mean we need to create a default object for menu construction and customization are done by subclassing the default object?
Usman
So meaning that
Cheers, Doru
On Tue, May 8, 2012 at 2:25 PM, Usman Bhatti <usman.bhatti@gmail.com
wrote:
Hi,
As discussed, I am working on the idea how to customize menus for entities in Moose Finder. As the menu construction depends on the pragmas defined on moose entity hierarchy, the idea is to read pragmas in some
specific
way. We tried something with Stéphane yesterday and here I am sending you
the
change set. Can you please have a look?
The change set does not complete resolve the problem :-). The
problem
is that menus are duplicated and changes are still invasive (that is
the
code overrides the default moose finder behavior). But this can be a possible approach to resolve it.
tx
Usman
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Every thing has its own flow"
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Presenting is storytelling."
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Every thing has its own flow"
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev