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

Is it possible, with app.execDialog(), to get the selected parent node of a heir_box_list?

Explorer ,
Dec 10, 2016 Dec 10, 2016

So when creating a dialogue using app.execDialog(), it is possible to have a hierarchical box list with the element type "hier_box_list".

It is then possible to get a return of the child node that is selected. However, I haven't find a way to get anything returned if I have a parent node selected.

I used the example 4 from the JavaScript API, page 84-87, to create the code below. Unfortunately this just returns a "undefined" when a parent node (like "Chapter 1", "Section 1", or "Section 2") is selected.

var dialog4 = {

    selection : {

        "Chapter 1" : {

            "Section 1" : {

                "SubSection 1" : -1,

                "SubSection 2" : -2,

            },

            "Section 2" : {

                "SubSection 1" : -3,

                "SubSection 2" : -4,

            }

        },

        "Chapter 3" : -5,

        "Chapter 4" : -6,

    },

    Return : "",

    initialize : function (dialog) {

        dialog.load({

            subl : this.selection

        })

    },

    subl : function (dialog) {

        var element = dialog.store()["subl"];

        this.Return = this.getHierChoice(element);

        console.println("\nSelection Box Hit: " + this.Return);

    },

    getHierChoice : function (e) {

        if (typeof e == "object") {

            for (var i in e) {

                if (typeof e == "object") {

                    var retn = this.getHierChoice(e);

                    if (retn) {

                        retn = i + ", " + retn;

                        return retn;

                    }

                    // if e > 0, we’ve found the selected item

                } else if (e > 0)

                    return i;

            }

        } else {

            if (e > 0)

                return e;

        }

    },

    commit : function (dialog) {

        this.selection = dialog.store()["subl"];

    },

    cncl : function (dialog) {

        dialog.end("cancel")

    },

    // Dialog box description

    description : {

        name : "My Novel",

        elements :

        [{

                type : "view",

                align_children : "align_left",

                elements :

                [{

                        type : "cluster",

                        name : "Book Headings",

                        elements :

                        [{

                                type : "static_text",

                                name : "Make a selection",

                            }, {

                                type : "hier_list_box",

                                item_id : "subl",

                                char_width : 20,

                                height : 200

                            }

                        ]

                    }, {

                        type : "ok_cancel",

                    }

                ]

            }

        ]

    }

};

function dotheDialog(dialog, doc) {

    dialog.doc = doc;

    var retn = app.execDialog(dialog)

};

dotheDialog(dialog4, this);

Does anybody know how I could have this return something if the user selects a parent node?

TOPICS
Acrobat SDK and JavaScript , Windows
971
Translate
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 Expert ,
Dec 10, 2016 Dec 10, 2016

It doesn't seem like it's possible. You can only return the lowest-level nodes of the hierarchy. A workaround could be to use something like this (see what I did with "Chapter 1":

selection : {

    "Chapter 1" : -1,

    "-" : {

        "Section 1" : {

            "SubSection 1" : -2,

            "SubSection 2" : -3,

        },

        "Section 2" : {

            "SubSection 1" : -4,

            "SubSection 2" : -5,

        }

    },

    "Chapter 3" : -6,

    "Chapter 4" : -7,

},

Translate
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
Explorer ,
Dec 12, 2016 Dec 12, 2016

This doesn't really work, because the "-" will always appear as the first entry, because entries are ordered alphabetically. It might work by using the undocumented dialog.insertEntryInList() function and adding all the elements one at a time.

However, this isn't very self-explanatory for users. I am thinking about going an alternative route where the user gets a (second) pop-up to select the node, if the code doesn't detect any positive values.

Translate
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 Expert ,
Dec 12, 2016 Dec 12, 2016
LATEST

Then use "Chapter 1 Options", and it will appear directly after it.

Translate
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