• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

How can I align UI elements in a dialog box?

Community Beginner ,
May 31, 2017 May 31, 2017

Copy link to clipboard

Copied

I have been trying to align elements within a dialog box by using the locate or bounds properties, but they are not consistent, so I am looking for sage advice. For example, if I write this line

    myLRowPreStart = myLRow2.add("staticText", undefined, "Text",{bounds: [20, 0, 50, 16]})

the text will appear indented on some lines of the interface, but not on others. Similarly, I've tried using the location property to position things, and that doesn't work consistently either. Any suggestions out there? Thanks.

TOPICS
Scripting

Views

1.8K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Advocate , Jun 01, 2017 Jun 01, 2017

You should have a look at the (Adobe) JavaScript Tools Guide.pdf, at : User Interface tools > Automatic Layout > The AutoLayout Manager Algorithm.

Basically, if the bounds of a container are specified, then the autolayout uses those bounds, but in counter part assumes that every child element in the container is also placed (that is, children elements bounds are fully specified). If the container's bounds are not specified, then the autolayout is run and uses properties like "alignment", "orienta

...

Votes

Translate

Translate
Advocate ,
Jun 01, 2017 Jun 01, 2017

Copy link to clipboard

Copied

I think it should be like this:

myLRowPreStart = myLRow2.add("staticText", [20, 0, 50, 16], "Text", {});

arguments to add : add(type, bounds, text, creationProperties);

Only <type> is mandatory, the other 3 args are optionnal.

Creation properties for static texts can be 'multiline', 'scrolling', etc; <bounds> is not a creation property, so your bounds are simply ignored (ScriptUI doesnt know what to do with that creation property).

You can also use the autolayout (omit bounds, and specify 'alignment', 'size' or  'preferredSize' or 'characters', etc)

Xavier

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Jun 01, 2017 Jun 01, 2017

Copy link to clipboard

Copied

Take a look at this:

It's from Peter Kahrel's guide: https://indd.adobe.com/view/a0207571-ff5b-4bbf-a540-07079bd21d75

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Jun 01, 2017 Jun 01, 2017

Copy link to clipboard

Copied

Thanks for the tries, but neither of these suggestions does work for me. If I put the bounds in the second parameter, they're sort of ignored, in that the text starts at x = 0 and is truncated at about x = 50. If I work from the assumption that the bounds is not a static property and try to set the bounds upon "show," the alignment does not work, either. I have also tried creating groups along the line, which also sometimes works and sometimes does not - I had hoped the setting up groups would give me a place within which I could use the alignment property directly. I had been looking at Peter Kahrel's guide, which led me to think that I could use groups and position them by "location," which did work some of the time.

By the way, the reason that this question arose is that I was advised that it was not wise to use character widths as a way to lay out the dialog, because the meaning of "characters" might change in different operating systems, so the alignment would get messed up.  I do have a version of my dialog that uses spacing and is OK in my Windows environment.

Another issue that I had in the past (I had to code around it) was that when I moved to my laptop, some numeric entry fields disappeared! Their spaces were present, but there was no box to type into! It's all frustrating, I think you'll all agree......

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Jun 01, 2017 Jun 01, 2017

Copy link to clipboard

Copied

You should have a look at the (Adobe) JavaScript Tools Guide.pdf, at : User Interface tools > Automatic Layout > The AutoLayout Manager Algorithm.

Basically, if the bounds of a container are specified, then the autolayout uses those bounds, but in counter part assumes that every child element in the container is also placed (that is, children elements bounds are fully specified). If the container's bounds are not specified, then the autolayout is run and uses properties like "alignment", "orientation", "preferredSize", etc to determine the size/location of all children, but ignores the bounds property of children.

Said otherwise, if you want the bounds of the static text to be taken into account, you also need to specify the bounds of its parent group/panel (unless the parent is the window itself, in which case it'll still work).

There was a very similar thread recently in the After Effects Scripting forum, that might help you : Manual Layout of children of a Tabbed Panel in ScriptUI

Xavier

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Jun 02, 2017 Jun 02, 2017

Copy link to clipboard

Copied

LATEST

Thanks to Xavier for the parsing of the manual determining the (not obvious) hierarchy of bounds specification requirements.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines