static PropertyName getContainerPropertyName()

in kit/src/main/java/com/oracle/javafx/scenebuilder/kit/editor/job/wrap/WrapJobUtils.java [64:161]


    static PropertyName getContainerPropertyName(
            final FXOMInstance container, final List<FXOMObject> children) {
        final DesignHierarchyMask mask = new DesignHierarchyMask(container);
        final PropertyName result;

        if (container.getSceneGraphObject() instanceof BorderPane) {
            // wrap/unwrap the child of a BorderPane
            assert mask.isAcceptingAccessory(Accessory.TOP);
            assert mask.isAcceptingAccessory(Accessory.LEFT);
            assert mask.isAcceptingAccessory(Accessory.CENTER);
            assert mask.isAcceptingAccessory(Accessory.RIGHT);
            assert mask.isAcceptingAccessory(Accessory.BOTTOM);
            assert children != null && children.size() == 1; // wrap job is executable
            final FXOMObject child = children.iterator().next();

            final FXOMObject top = mask.getAccessory(Accessory.TOP);
            final FXOMObject left = mask.getAccessory(Accessory.LEFT);
            final FXOMObject center = mask.getAccessory(Accessory.CENTER);
            final FXOMObject right = mask.getAccessory(Accessory.RIGHT);
            final FXOMObject bottom = mask.getAccessory(Accessory.BOTTOM);
            // Return same accessory as the child container one
            if (child.equals(top)) {
                result = mask.getPropertyNameForAccessory(Accessory.TOP);
            } else if (child.equals(bottom)) {
                result = mask.getPropertyNameForAccessory(Accessory.BOTTOM);
            } else if (child.equals(center)) {
                result = mask.getPropertyNameForAccessory(Accessory.CENTER);
            } else if (child.equals(left)) {
                result = mask.getPropertyNameForAccessory(Accessory.LEFT);
            } else if (child.equals(right)) {
                result = mask.getPropertyNameForAccessory(Accessory.RIGHT);
            } else {
                assert false;
                result = null;
            }
        } else if (container.getSceneGraphObject() instanceof DialogPane) {
            // wrap/unwrap the child of a DialodPane
            assert mask.isAcceptingAccessory(Accessory.DP_CONTENT);
            assert mask.isAcceptingAccessory(Accessory.DP_GRAPHIC);
            assert mask.isAcceptingAccessory(Accessory.EXPANDABLE_CONTENT);
            assert mask.isAcceptingAccessory(Accessory.HEADER);
            assert children != null && children.size() == 1; // wrap job is executable
            final FXOMObject child = children.iterator().next();

            final FXOMObject content = mask.getAccessory(Accessory.DP_CONTENT);
            final FXOMObject graphic = mask.getAccessory(Accessory.DP_GRAPHIC);
            final FXOMObject expandableContent = mask.getAccessory(Accessory.EXPANDABLE_CONTENT);
            final FXOMObject header = mask.getAccessory(Accessory.HEADER);
            // Return same accessory as the child container one
            if (child.equals(content)) {
                result = mask.getPropertyNameForAccessory(Accessory.DP_CONTENT);
            } else if (child.equals(graphic)) {
                result = mask.getPropertyNameForAccessory(Accessory.DP_GRAPHIC);
            } else if (child.equals(expandableContent)) {
                result = mask.getPropertyNameForAccessory(Accessory.EXPANDABLE_CONTENT);
            } else if (child.equals(header)) {
                result = mask.getPropertyNameForAccessory(Accessory.HEADER);
            } else {
                assert false;
                result = null;
            }
        } else if (mask.isAcceptingAccessory(Accessory.SCENE)) {
            result = mask.getPropertyNameForAccessory(Accessory.SCENE);
        } else if (mask.isAcceptingAccessory(Accessory.ROOT)) {
            result = mask.getPropertyNameForAccessory(Accessory.ROOT);
        } else if (mask.isAcceptingSubComponent()) {
            result = mask.getSubComponentPropertyName();
        } else {
            assert mask.isAcceptingAccessory(Accessory.CONTENT)
                    || mask.isAcceptingAccessory(Accessory.GRAPHIC);
            assert children != null && children.size() == 1; // wrap job is executable
            final FXOMObject child = children.iterator().next();

            if (mask.isAcceptingAccessory(Accessory.GRAPHIC) == false) {
                // Containers accepting CONTENT only
                assert mask.isAcceptingAccessory(Accessory.CONTENT);
                result = mask.getPropertyNameForAccessory(Accessory.CONTENT);
            } else if (mask.isAcceptingAccessory(Accessory.CONTENT) == false) {
                // Containers accepting GRAPHIC only
                assert mask.isAcceptingAccessory(Accessory.GRAPHIC);
                result = mask.getPropertyNameForAccessory(Accessory.GRAPHIC);
            } else {
                // Containers accepting both CONTENT and GRAPHIC
                final FXOMObject content = mask.getAccessory(Accessory.CONTENT);
                final FXOMObject graphic = mask.getAccessory(Accessory.GRAPHIC);
                // Return same accessory as the child container one
                if (child.equals(content)) {
                    result = mask.getPropertyNameForAccessory(Accessory.CONTENT);
                } else if (child.equals(graphic)) {
                    result = mask.getPropertyNameForAccessory(Accessory.GRAPHIC);
                } else {
                    assert false;
                    result = null;
                }
            }
        }
        return result;
    }