Feature request: Notes attached to connections

As a software developer I very often do graphs which are state transition diagrams. Each node is a state. Each transition to another state is an arrow. On the arrow is an event that causes the transition. It’s the single best mental tool I have, I think.

Right now, for the events I just create a note with no border and place it on the connection. I’ve attached an illustration. The problem is that when I move nodes and connections around, I have to move and place the event notes as well. It would be a great convenience if a note could be “attached” to the connection. Dropping a note on a connection could attach it and dragging away could detach it. Dragging along the connection could place it at “x% of the way along the line”.

It would seem to me that a “labeled connection” would be useful in many circumstances other than state transition diagrams. I came to the “attach a note” idea as being more in keeping with the overall simplicity and power you have already.

This is by no means a deal breaker, but would be a real convenience.

-Bob
Screen Shot 2013-03-02 at 14.44.24 .png

You can sort of do this already. Double-click on the connecting line and the connector splits, & a new note is inserted at the split.

Before:
Screen Shot 2013-03-03 at 5.56.41pm.jpg

After:

Screen Shot 2013-03-03 at 5.58.11pm.jpg

The problem is that the type of connector is respected; as you can see, the outbound arrow is duplicated when the connector is split; fine in some cases but not in the one you’re talking about, when it becomes not (in your terms) a transition, but a state.

What you want, I think, is for Scapple to lock the arrowhead to the original destination. I can’t see how to do this even manually. But I agree; it would be an excellent addition and would enable us to do a simple version of “concept maps” without the power, but also without the complexity, of Cmap Tools (q.v.)

One solution (not perfect) is to make the line between “The first note” and the “Label note” a dotted line.

Cheers,
Mats

Make your first and second note, linked with an arrow as in the first screenshot, then make a new unlinked note elsewhere with the label and drag it over the link-line.

Screen Shot 2013-03-04 at 16.48.32.png
Mark

@Mark - yes but doing it that way, the “Label Note” doesn’t split the connecting line between First Note and Second Note. It just looks that way, until you move one of the other notes.

Your way:

Screen Shot 2013-03-04 at 6.55.51pm.jpg

Now I move Second Note:

Screen Shot 2013-03-04 at 6.56.54pm.jpg

My way (splitting the connector by double-clicking):

Screen Shot 2013-03-04 at 6.58.54pm.jpg

(continued from above post, due to 3-image limits on the board)

…and now I move Second Note:

Screen Shot 2013-03-04 at 7.00.12pm.jpg

…and it remains attached to the others. BUT the pesky arrowhead between First Note and “Comment Note” is the fly in the ointment. Yes, we can remove it manually but I think if would be a fine thing to have it removed automatically. Perhaps command-double-click on the connector line should replace it with a plain solid line (dependent on the direction of the original arrow, but I don’t know what Scapple understands about arrowhead directions.

C-Map Tools can do it easily,

Screen Shot 2013-03-04 at 7.08.19pm.jpg

… but it knows the difference between states and transitions (nouns and verbs if you like). You can’t have a connection between two “concepts” without a connecting comment, even if you leave it blank. But this is an application for a very specific area of knowledge/process/concept modelling, and may be beyond the scope of an Infinite Spidergram like Scapple, whose very power lies in the fact that it knows nothing and thus enforces nothing…

Scapple could certainly make it so that double-clicking a line with an arrow has the arrow leading from the new note but not from the other note to the new note. The current behaviour just uses the same line/arrow type both ways - it has to make some assumption here, and which assumption that is will be somewhat arbitrary. I have no strong opinion, so am happy to change it if that makes more sense to most.

If it’s as easy as you say, Keith, to do this: Namely to make Scapple insert a note on the line with no arrow to it, but one from it — thereby making such a note ‘belong to’ the line, without being an end of the line — and so move with it if notes at either end are moved, that’d be well worth doing, in my opinion. It just makes available another means of expression to help clarify thinking. I hope enough others will agree.

No, that part’s not easy, as there is no concept of labels in Scapple, sorry.

All the best,
Keith

I don’t really see the problem. Is it that the line (the one that isn’t an arrow) has to be solid (like the arrow) and not dotted? It’s easy to substitute an arrow for a dotted line.

If that is essential (can’t see why), then the request boils down to solid lines. Because as I’ve understood it, it’s all about visual impact. Scapple doesn’t know what is a first, second or comment note anyhow, does it?

That’s exactly what I do now except that the label note has no border.

I would not say the coding is easy, but it seems to fit into the current model quite easily if one can simply attach a note to a line as I originally requested. All the note rendering and so on would be unchanged. What would change is that the attached note would move when one of the endpoint notes move and require movement of the connection. I’m guessing your connection object looks something like
fromNote
toNote
…attributes

To this would have to be added
attachedNote
attachedPosition

The code to attach and detach a note would probably not be that easy, but I imagine the change to the algorithm that repositions the connection would not be very difficult. But then you probably know all this already.

The addition would be well worth the effort IMHO and I think it would be heavily used.

-Bob

I thought I should comment also on the line splitting idea. I wasn’t aware of this feature and it certainly could be useful here.

When I have done state transition diagrams in Scapple so far, I have differentiated states by a border. The event labels that I put on the arrows are borderless, which effectively marks them as “comments” or events or whatever. I figured out how to create Styles for “!State” and “!Event”. I use the “!” to sort my styles to the top.

I think the current standard of applying the same connector style to both parts of a split Note makes sense, but doesn’t work for me in this case. Two arrows doesn’t seem to convey the meaning as will as an arrowless connector on the from side and the arrow on the to side.

So to use this method I would double click the connection, and write the note. Click the note and select the style. Click the from note and then the event note. Right click and select Disconnect. Right click again and select Connect. [BUG: you cannot change an arrow directly to a dotted connection, you have to disconnect first.]

This is cumbersome and still doen’t help too much when it is time to rearrange the diagram. If the treatment of arrows were made a preference then I would set it to split into a “connection” and an “arrow connection” and that would save a lot of this effort.

There is also another BUG that affects this. I found that you cannot dbl-click and split a vertical connection.

-Bob

No. Not note-items should be posted on a connector, but labels!
When I like to insert a note between to existing notes, it has to be connected to the note before and next.

I find a concept of labels very useful. A label, which will be »glued« on the connector without disrupting it.

If you take a look at the data model in the XML, you may see the challenge in implementing labels. The schema would have to be completely reworked. Because the way it is right now, lines don’t really “exist” as separate entities. They are components, or attributes, of the notes involved, and employ a shorthand to make multiple assignments more efficient. So you end up with stuff like:

<Note ID="0" FontSize="12.0" Position="206.0,155.0" Width="29.0"> <Appearance></Appearance> <String>Connected to multiple notes...</String> <ConnectedNoteIDs>1-4</ConnectedNoteIDs> </Note>

It is the last element pair that draws lines. This indicates that the note in question is connected to note IDs 1 thru 4, and that is it. Arrows are just a different element, otherwise defined identically. It’s not that implementing labels is impossible, this is programming after all, it would just entail a rather comprehensive redesign of how connecting lines are drawn, potentially making them into stand-alone entities with their own attributes and child elements.