in

The ORM Foundation

Get the facts!

ORM Stencil v13+ auto-rotate of text

Last post 09-03-2011 17:41 by Roger Cass. 13 replies.
Page 1 of 1 (14 items)
Sort Posts: Previous Next
  • 08-22-2011 11:20

    ORM Stencil v13+ auto-rotate of text

    I have to say that I don't like to way auto-rotation of text works in the Visio stencil version 13+. Specifically, I never use the style having the relationship vertical and the text horizontal. In my opinion that is a very space-hungry configuration and doesn't read well (ambiguous which way to read the roles when the text is orthogonal to the role boxes). In addition, for relationships with more than one short word, the relationship text has to be moved if the relationship is rotated, which is not easy.

    I would really prefer that the text be rotated so that in the top of the text is always towards the role boxes except when the roles are rotated between +/-135 degrees (i.e. the text is "on top" of the role boxes), in which case the bottom of the text is towards the role boxes.

    There are two "reversal" scenarios to consider:

    First, the user wants to simply change the direction of the reading leaving the text as it is. The current context menu to add an arrow solves this problem.

    Second, the user wants to completely reverse the relationship (i.e. a "flip"). I do this all the time when copying relationships to re-use them. A context menu that swaps all the connection points relative to the left-right centerline of the shape would do this (i.e. swap all the relative "x" coordinates). I do this in some of my custom shapes that have connection points.

    In my opinion, automatically adding the text arrow as I rotate through 360 degrees "almost" works. Here is an idea for horizontal text.

    As the roles rotate to nominally 180 degrees (past +/- 135 degrees), move the text anchor to the other side so it always remains on the bottom of the role boxes, and rotate the text 180 degrees. At the same time, add the reversal arrow. As the shape rotates back, move the text back and remove the arrow.

    Vertical text is trickier because there is no convention in English for which way to orient vertical text (top-to-bottom or bottom-to-top). Add the convention that vertical text must always read top-to-bottom in the "natural" English reading, and we also add the constraint that the text must always be on the left of the role boxes. If we add this convention and constraint, then we can use the same rules for horizontal text with vertical text.

    I'm not sure if I'd like this "left-side top-to-bottom" convention because I have to admit I use both top-to-bottom and bottom-to-top text in order to eliminate the need for a text arrow. I think I could live with it. This would constrain the relationship text to be on the left or bottom or the relationship and to always be read top-to-bottom or left-to-right for English.

    Lots of comments, but I have to say that I CANNOT use the roles in their current form with the auto-rotating text. Until that is changed, I have to stick with the v12- shapes.

    (On the bright side, I really like the results of my first test with the v14 macro for shadow corrections--great idea)

    Roger Cass

    Dr. Roger Cass
    Enterprise Architect
  • 08-22-2011 13:25 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    Hi Roger,

     Thanks for the comments, I always appreciate your thoughtful and pertinent feedback. Indeed, it is so thoughtful that I'm afraid I'm going to have to give it more time than I have available immediately, in order to appreciate fully what you're getting at, simply because it's 1:21 AM where I am... So, with your understanding, please let me return to this after a few hours sleep? I'm very interested in your viewpoint on this, so please be patient:-) Thanks again,

     Best regards,

    Andy

  • 08-23-2011 8:08 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    Hi Roger,

     You have very helpfully made clear to me that there is less than I had imagined that one can really assume about people's preferences on this. Thank you. So I think you're right, a more flexible solution is in order.

    I think I should allow people to adjust the text-angle manually (through the text-rotate button on the Action Toolbar), but also to set (through the fact type's context menu) the style of automatic text-angle management they prefer -- of say, two different options (one keeping text horizontal, the other keeping it parallel to the fact type) . But then, they should also be able to have their preference as the original setting, when the shape is first pulled over from the stencil -- so that they don't need to change anything to get the behavior they prefer. One idea is that for v15, say, there will be a v15 plain (no automatic text-angle management, by default), a v15a (Style A automatic text-angle management, by default), a v15b (Style B text-angle management, by default), ...

    In any case: toward the goal of a more flexible solution, I'm trying to understand the automatic behavior you're suggesting. (It is obviously not an easy thing, to describe completely such behavior via prose text.) I guess what I'm least clear on is, exactly at what angle of rotation the text would rotate and flip over to the other side (and the angle be inserted/removed). If you never want text on the "underside" of the fact type, it seems to me the point at which these changes much take place would be the point at which the fact type is perfectly vertical (i.e. 90 deg. or -90 deg.). Isn't this correct?

    But another possibility is that you'd prefer there to be a range, of +- 45 deg., around both the perfectly horizontal position (with text going left to right, below the fact type shape) and the perfectly vertical position (with text going from top to bottom, to the left of the fact type shape), within which no change would occur. In the latter case, it seems to me that the changes of position, text-angle, and text-arrow would happen whenever the fact type moves through an angle that is at a 45 deg angle (running from lower left to upper right). Does this make sense? And, is this what you'd actually prefer? Or is there a third interpretation, which is the real intent? I hope these questions will lead me to a clearer understanding,

    Regards,

    Andy

  • 08-24-2011 13:14 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    Hi Roger, P.S., I wanted to ask whether you are aware of the following features, with which your comments suggested, you might be unfamiliar:

    1) You can enter line-feeds into the shape-text, in Visio, to spread the text over more than one line. This can significantly reduce the space-hungriness of horizontal text on a vertical fact type...

    2) On the Action Toolbar, there are buttons to flip the shape horizontally or vertically...

    Also, I've been asking some other users of ORM tools, and one cited studies that have been done on predicate-text angle. These studies concluded that it was much preferable to have the predicate text horizontal: the vertical approach causes people to have to twist their necks to read at a 90-deg. angle to horizontal, and the consensus was that this was unacceptable.

    Let me make it clear, I'm not tryig to convince you to change. I doubt I could do that anyway, if you are strongly committed to keeping the text parallel. I just thought you should be made aware of any of the above you might not know. I look forward to your responses to my earlier questions.

    Best regards,

    Andy

  • 08-24-2011 20:17 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    I did know about the line breaks, though I admit I use them sparingly today because the text rotates with the fact type in versions before 13.

    To be fair, I just played around with a fact type rotated to vertical orientation. I created a fact type with the text "is related to" just as an example. In the default horizontal orientation, it works great. When I rotate it clockwise 90 degrees to put the text anchor on the left, the text spans the fact type and is obviously not very readable.

    I tried two things to make it readable:

    • I dragged the text anchor to the left. This works, of course, but the text must be moved again if I change the length of the text. Also, the length of the text makes it difficult to put fact types close together.
    • I put line breaks in the text (i.e. "is/related/to"). The also works, of course, but the text anchor is still too close to the fact type, and I have to move the text anchor to the left. To be fair, the text is now a bit narrower.

    If I rotate the fact type back to the other three positions, the text anchor position is reset. While resetting anything has it's drawbacks, I think this is reasonable behavior that has more benefit than penalty. Good idea :)

    One side effect of relying on line breaks is that if I insert line breaks because the text is vertical then rotate to horizontal, the line breaks now cause problems, and I have to take them back out.

    So here are a couple more ideas that might help.

    First, automatically move the text anchor so that the text box does not overlap the fact type regardless of orientation. For example, if I begin with a horizontal fact type with the text "is related to", when I rotate to vertical, move the text anchor so that it the text box does not overlap the role boxes (i.e. it would move left half the width of the text). This would also help when I embed line breaks in the horizontal orientation. You would have to recalculate the position of the text box whenever the text changes or the orientation changes.

    Second, automatically size the text box and turn on wrap text. The trouble with this one is that there is no natural width to the text box, though I could think of some conventions that might help like no more than 2 role box widths wider than the fact type when horizontal; and no more than three role box widths and no less than the width of the longest word when vertical.

    Anyway, I think the auto-rotating text is growing on me :) With a few minor improvements (like auto positioning) I think I could really like it!

    Dr. Roger Cass
    Enterprise Architect
  • 08-26-2011 3:44 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    Hi Roger,

    Thanks. The suggestion about better auto-text-repositioning is super. I invite you to give my first attempt a test-drive. Please see the attached, and do let me know to what extent this solves your problem.

    Regards,

    Andy


  • 08-26-2011 8:49 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    Andy,

    Wow! Very nice. I really like the way the text moves to the right or left when rotating.

    Here are some observations...

    • I'd like to see the text move up or down to clear the fact type when in the horizontal orientation. If I embed line breaks in the text, then in the horizontal position it still overlaps the fact type.
    • I notice that it is possible to rotate to orientations other than 0, 90, 180, and 270 degrees. Is that on purpose? I personally would have constrained the shape rotation to a multiple of 90 degrees.

    I think the shape is right on track for being very usable. Thanks for the preview!

    Dr. Roger Cass
    Enterprise Architect
  • 08-27-2011 1:38 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    Roger,

     Another super suggestion. Please give the attached a try, and let me know whether this needs further improvement. Many thanks,

    Best regards,

    Andy


  • 08-27-2011 13:32 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    This is terrific! Thank you for making such a great shape.

    The only thing I would add is the following:

    • EventXFMod = SETF(GetRef(Angle),90 deg*(ROUND(Angle/90 deg,0)))

    This formula will force the shape to snap to 90 degree increments when using the free rotation handle.

    I also saw the context menu flags for the flip status. Were you thinking of leaving those in, or were they just for help during testing?

    Dr. Roger Cass
    Enterprise Architect
  • 08-27-2011 23:15 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    Roger,

    You've helped immensely with your suggestions. I must say, I'd never thought of such fixes before; and also, even then I never foresaw how nicely the fixes, as I chose to implement them, would make the shape behave. So these are all gifts from heaven and from you.

    And I must say your final suggestion is growing on me. Naturally, I wouldn't put something in just to restrict the user; but in this case, it might be the sort of restriction that makes life easier for them. It all depends on whether, when they need to rotate a fact type, most people these days (and especially since Visio 2007) would use the rotate-handles rather than the Rotate button on the Action toolbar. I'm guessing they use the former... in which case your fix would help them. Which do you tend to use?

    Yes, the things I added to the context menu were just for testing. I forgot to take them out before I sent you that first shape to try, so then I decided just to leave them in for the moment. Thanks again for your terrific suggestions,

    Best regards,

    Andy

  • 09-01-2011 0:34 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    And Roger,

    This last suggestion also raises some other interesting questions: If we're going to force the 90-degree increments on the fact types, wouldn't this include the objectified fact types? And if it's useful to force these 90-degree jumps on those, wouldn't it be useful to force them on all object-type shapes?

    Regards,

    Andy

  • 09-01-2011 8:18 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    Andy,

    It seems to make sense to me that any rotatable shape in the stencil, which appears to be just the Fact Type shapes, should only be able to be oriented at 90 degree intervals. Perhaps there is a need for diagonal or even freely oriented Fact Types, but I, for one, have never used Fact Types in anything but horizontal and vertical orientations.

    I downloaded the v15 stencil (just saw it) and created one of each Fact Type shape. Everything worked as expected: shapes snapped to 90 degree increments, and the Fact Type text was placed appropriately.

    I have to say that from where I sit, this is a great new feature! Thanks!

    I did find two things that I might suggest.

    • The "exterior" text of objectified Fact Types should probably behave similar to the "interior" text. I am not sure if there is a convention for the placement of the exterior text, but I always place the text outside the object box just like the enclosed Fact Type text is centered outside the role boxes. Perhaps automatically recomputing the placement of the objectified Fact Type text can follow the same rules as the enclosed Fact Type text.
    • The point of rotation of the Adjustable n-ary Fact Types is at the corner of the Fact Type and not at the centroid. Would it be possible to place the point of rotation to be at the centroid when the NrRoles property is first set or subsequently changed?

    Thanks again!

    Dr. Roger Cass
    Enterprise Architect
  • 09-03-2011 2:38 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    Hi Roger,

    Thanks, great suggestions both. They are now implemented. (I was pleased but embarrassed by the ease of the second one...:-) Also, I've disabled rotation altogether on non-nested object types. Anything else you can think of that should go into v16?

    Regards,

    Andy

  • 09-03-2011 17:41 In reply to

    Re: ORM Stencil v13+ auto-rotate of text

    I'll think about that based on my experiences modeling in the last couple of weeks and put them in a new thread. I think one has played out well :-)

    Thanks again for the great improvements to Fact Types.

    Dr. Roger Cass
    Enterprise Architect
Page 1 of 1 (14 items)
© 2008-2014 The ORM Foundation: A UK not-for-profit organisation -------------- Terms of Service