You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cayenne.apache.org by Marcel <em...@gmail.com> on 2006/07/24 08:19:22 UTC

rop-browser design

Hi folks,

I guess most of you haven't seen what I'm doing, but I thought I'd ask 
for some input via the mailing list since that's The Way It's Done Round 
Here. I am working on an Eclipse plugin which allows DB editing via 
Cayenne's object model and ROP.

There is a picture at [1] which shows the problem at hand. Using the 
Artist - Painting - Gallery DB, when a new Painting is created, its 
Gallery needs to be set. It can easily be set to a new Gallery, but I 
may want to set it to an existing one, which may not be displayed in the 
diagram. More generally, I need a way to set an object in the diagram to 
an instance which is already in the DB, but not yet displayed in the 
diagram. All the other processes are entirely visual at present, so I'm 
reluctant to add dialogs, but...

At the moment I think the best (read 'only practical') way to do it is 
via a wizard. The user selects a NamedQuery from the map, sets key/value 
parameters, and picks from the results.

I was wondering if anyone had any other ideas, or suggestions that would 
improve a process like that.

Cheers,

Marcel

[1] http://www.uow.edu.au/~mgordon/insert.png

Re: rop-browser design

Posted by Marcel <em...@gmail.com>.

>>> At the moment I think the best (read 'only practical') way to do it 
>>> is via a wizard. The user selects a NamedQuery from the map, sets 
>>> key/value parameters, and picks from the results.
>>
>> How about expanding the control panel capabilities? Current control 
>> panel opens a new "Object Editor" window on every query run. We can 
>> do two things:
>>
>> * (optionally) open the results in the same Object Editor.
> I see where you are coming from, but this would introduce quite some 
> complexity because the automatic graph layout algorithm relies on the 
> graph being fully connected. I have seen an application where dummy 
> edges are introduced to counter this, but it compromises the algorithm 
> to a certain extent - in the normal case the layout isn't as good.
>
Just a note: the latest version of GEF seems to allow for graphs which 
are not fully connected - nice! So I'll work this in.

Marcel

Re: rop-browser design

Posted by Marcel <em...@gmail.com>.
Jumping back a little bit as I catch up...
>> All the other processes are entirely visual at present, so I'm 
>> reluctant to add dialogs, but...
>
> Actually I wouldn't mind dropdowns in other places, such as collection 
> navigation.
I agree, it would be nice to have a 'jump to' for collections. However I 
can't draw controls on the canvas, so it would have to come in some sort 
of dialog or sit in the control panel (actually I might be able to place 
it in the Properties view). There would have to be two drop-downs, one 
which selects the attribute to use for navigation and the other for 
selecting the actual record using that attribute. How does that sound?

Actually I can do better (I'll leave those ideas there though in case 
they inspire any others). I can place two buttons side by side at the 
bottom of the collection (basic buttons can be drawn), and have clicking 
on them trigger popup/context menus so that they effectively function 
like combo boxes.
>
>> At the moment I think the best (read 'only practical') way to do it 
>> is via a wizard. The user selects a NamedQuery from the map, sets 
>> key/value parameters, and picks from the results.
>
> How about expanding the control panel capabilities? Current control 
> panel opens a new "Object Editor" window on every query run. We can do 
> two things:
>
> * (optionally) open the results in the same Object Editor.
I see where you are coming from, but this would introduce quite some 
complexity because the automatic graph layout algorithm relies on the 
graph being fully connected. I have seen an application where dummy 
edges are introduced to counter this, but it compromises the algorithm 
to a certain extent - in the normal case the layout isn't as good.
> * support entering query parameters when running the query (judging by 
> your earlier questions, you were looking at parameterized queries 
> already). This way users can pinpoint the right object.
>
> One catch with the last point is that supported parameter names are 
> not available via the metadata. So the user will have to specify 
> values and *keys*. In the future we may provide a collection of valid 
> keys via EntityResolver.
The other thing I can do is allow users to run SelectQueries against a 
specified entity name, entering criteria. That is how the wizard for 
Insert Existing runs at the moment.

Dealing with inserting existing objects has been difficult. There are a 
few idiosyncrasies that I need to iron out, but it is mostly functional. 
Next is 'Remove from collection'.

Marcel

Re: rop-browser design

Posted by Andrus Adamchik <an...@objectstyle.org>.
Rereading your message, I almost repeated what you said, only placed  
it in control panel :-)

So yeah, either way would work... And user-friendly collection  
navigator should help here as well.

Andrus

On Jul 24, 2006, at 4:35 PM, Andrus Adamchik wrote:

>
>> At the moment I think the best (read 'only practical') way to do  
>> it is via a wizard. The user selects a NamedQuery from the map,  
>> sets key/value parameters, and picks from the results.
>
> How about expanding the control panel capabilities? Current control  
> panel opens a new "Object Editor" window on every query run. We can  
> do two things:
>
> * (optionally) open the results in the same Object Editor.
> * support entering query parameters when running the query (judging  
> by your earlier questions, you were looking at parameterized  
> queries already). This way users can pinpoint the right object.
>
> One catch with the last point is that supported parameter names are  
> not available via the metadata. So the user will have to specify  
> values and *keys*. In the future we may provide a collection of  
> valid keys via EntityResolver.


Re: rop-browser design

Posted by Andrus Adamchik <an...@objectstyle.org>.
On Jul 24, 2006, at 2:19 AM, Marcel wrote:
> I guess most of you haven't seen what I'm doing, but I thought I'd  
> ask for some input via the mailing list since that's The Way It's  
> Done Round Here.

yep.

> There is a picture at [1] which shows the problem at hand. Using  
> the Artist - Painting - Gallery DB, when a new Painting is created,  
> its Gallery needs to be set. It can easily be set to a new Gallery,  
> but I may want to set it to an existing one, which may not be  
> displayed in the diagram. More generally, I need a way to set an  
> object in the diagram to an instance which is already in the DB,  
> but not yet displayed in the diagram.

I was going to point out to that problem before as well. I beat me on  
that.


> All the other processes are entirely visual at present, so I'm  
> reluctant to add dialogs, but...

Actually I wouldn't mind dropdowns in other places, such as  
collection navigation. While I like the latest UI a lot, I still find  
it hard to get around finding an object in a collection, and often  
confuse collections with single objects cause they look the same. But  
that's beyond the point...

> At the moment I think the best (read 'only practical') way to do it  
> is via a wizard. The user selects a NamedQuery from the map, sets  
> key/value parameters, and picks from the results.

How about expanding the control panel capabilities? Current control  
panel opens a new "Object Editor" window on every query run. We can  
do two things:

* (optionally) open the results in the same Object Editor.
* support entering query parameters when running the query (judging  
by your earlier questions, you were looking at parameterized queries  
already). This way users can pinpoint the right object.

One catch with the last point is that supported parameter names are  
not available via the metadata. So the user will have to specify  
values and *keys*. In the future we may provide a collection of valid  
keys via EntityResolver.

Andrus