tesis-dynaware / graph-editor

Eclipse Public License 1.0
132 stars 42 forks source link

GJoint Positions while moving GNode(s) #8

Closed eckig closed 9 years ago

eckig commented 9 years ago

The current approach places GJoint(s) absolutely in the graph editor. When moving the GNodes where the corresponding GConnections connectors are attached to, the GJoints do not move accordingly and will eventually get behind a node.

Wouldn't it be better to place the GJoints relatively instead of absolutely? One solution could be to place the GJoints with Bindings? Or another solution, if you want to stick with absolute positioning, would be to adjust the GJoint positions if they get into / behind other nodes?

rmfisher commented 9 years ago

Wouldn't it be better to place the GJoints relatively instead of absolutely?

What does it mean to position the joints relatively? Relative to what?

One solution could be to place the GJoints with Bindings?

Could you elaborate? I'm not sure what you're getting at here.

Right now the behaviour is quite rudimentary - the objects that are selected will move. If you select 2 nodes and you want the connection between them to maintain its shape, you need to select the joints as well.

One could imagine a more sophisticated solution where dragging a node could also influence joint positions, e.g. to stop them going behind another node, as you say. But I have a suspicion that this is not an easy task.

eckig commented 9 years ago

For example relative to the source node. Example (pseudo code):

Node1 and Node2 are to be connected and the user creates a connection between them.

and so on.. you get the idea. Since the path is relative, you can draw a straight line from the last joint to the source connector.

rmfisher commented 9 years ago

Imagine the user drags a node. Some joints will move with it, others won't, depending on which of the node's connectors are sources and which are targets. This could lead to confusing and inconsistent behaviour.

In the short term you will have to create custom skins to try this. If you get something that works cleanly and consistently I would love to see it, but I have to say I am sceptical that it will work out.

eckig commented 9 years ago

With custom skins this is hardly possible, because everything is strongly tied to absolute X/Y coordinates, getting the correct coordinate properties is not always easy in the skin, but maybe I find a working solution to post..

eckig commented 9 years ago

This won't be fixed?

rmfisher commented 9 years ago

No, I don't see any solution that is transparent to the user. I would prefer to keep it simple. If you want the joints to be bound to the source node and move with it, you will have to implement this yourself. The current skins do not distinguish graphically between what the source and target nodes are, so it would be very confusing.