public void Create(PxPre.FileBrowse.FileBrowseProp prop, FileBrowser browser)
            {
                this.parentBrowser = browser;
                this.properties    = prop;

                const float scrollHorizHeight = 40.0f;
                const float scrollVertWidth   = 40.0f;

                GameObject goBrowseView = new GameObject("BrowseView");

                goBrowseView.transform.SetParent(this.gameObject.transform);
                goBrowseView.transform.localScale    = Vector3.one;
                goBrowseView.transform.localRotation = Quaternion.identity;
                RectTransform rtBrowseView = goBrowseView.AddComponent <RectTransform>();

                rtBrowseView.anchorMin = Vector2.zero;
                rtBrowseView.anchorMax = Vector2.one;
                rtBrowseView.pivot     = new Vector2(0.0f, 1.0f);
                rtBrowseView.offsetMin = new Vector2(5.0f, 5.0f);
                rtBrowseView.offsetMax = new Vector2(-5.0f, -5.0f);

                GameObject goViewport = new GameObject("Viewport");

                goViewport.transform.SetParent(goBrowseView.transform);
                goViewport.transform.localScale    = Vector3.one;
                goViewport.transform.localRotation = Quaternion.identity;
                RectTransform rtVP = goViewport.AddComponent <RectTransform>();

                rtVP.anchorMin = Vector2.zero;
                rtVP.anchorMax = Vector2.one;
                rtVP.pivot     = new Vector2(0.0f, 1.0f);
                rtVP.offsetMin = new Vector2(0.0f, scrollHorizHeight);
                rtVP.offsetMax = new Vector2(-scrollVertWidth, 0.0f);
                UnityEngine.UI.Image imgViewport = goViewport.AddComponent <UnityEngine.UI.Image>();
                UnityEngine.UI.Mask  maskVP      = goViewport.AddComponent <UnityEngine.UI.Mask>();


                GameObject goContent = new GameObject("Content");

                goContent.transform.SetParent(goViewport.transform);
                goContent.transform.localScale    = Vector3.one;
                goContent.transform.localRotation = Quaternion.identity;
                RectTransform rtContent = goContent.AddComponent <RectTransform>();

                rtContent.anchorMin = new Vector2(0.0f, 1.0f);
                rtContent.anchorMax = new Vector2(0.0f, 1.0f);
                rtContent.pivot     = new Vector2(0.0f, 1.0f);
                rtContent.offsetMin = new Vector2(0.0f, -10.0f);
                rtContent.offsetMax = new Vector2(10.0f, 0.0f);

                //      VERT SCROLL
                //
                ////////////////////////////////////////////////////////////////////////////////
                ///
                GameObject goVertScroll = new GameObject("VertScroll");

                goVertScroll.transform.SetParent(goBrowseView.transform);
                goVertScroll.transform.localScale    = Vector3.one;
                goVertScroll.transform.localRotation = Quaternion.identity;
                RectTransform rtVertScr = goVertScroll.AddComponent <RectTransform>();

                rtVertScr.anchorMin = new Vector2(1.0f, 0.0f);
                rtVertScr.anchorMax = new Vector2(1.0f, 1.0f);
                rtVertScr.pivot     = new Vector2(0.0f, 1.0f);
                rtVertScr.offsetMin = new Vector2(-scrollVertWidth, scrollHorizHeight);
                rtVertScr.offsetMax = new Vector2(0.0f, 0.0f);
                UnityEngine.UI.Image imgVertScr = goVertScroll.AddComponent <UnityEngine.UI.Image>();
                imgVertScr.sprite = this.properties.sliderSprite;
                imgVertScr.type   = UnityEngine.UI.Image.Type.Sliced;


                GameObject goVertThumb = new GameObject("VertThumb");

                goVertThumb.transform.SetParent(goVertScroll.transform);
                goVertThumb.transform.localScale    = Vector3.one;
                goVertThumb.transform.localRotation = Quaternion.identity;
                RectTransform rtVertThumb = goVertThumb.AddComponent <RectTransform>();

                rtVertThumb.pivot     = new Vector2(0.0f, 1.0f);
                rtVertThumb.offsetMin = Vector2.zero;
                rtVertThumb.offsetMax = Vector2.zero;
                UnityEngine.UI.Image imgVertThumb = goVertThumb.AddComponent <UnityEngine.UI.Image>();

                UnityEngine.UI.Scrollbar sbVert = goVertScroll.AddComponent <UnityEngine.UI.Scrollbar>();
                sbVert.handleRect    = rtVertThumb;
                sbVert.direction     = UnityEngine.UI.Scrollbar.Direction.BottomToTop;
                sbVert.targetGraphic = imgVertThumb;

                this.properties.sliderThumb.Apply(sbVert, imgVertThumb);

                //      HORIZ SCROLL
                //
                ////////////////////////////////////////////////////////////////////////////////
                ///
                GameObject goHorizScroll = new GameObject("HorizScroll");

                goHorizScroll.transform.SetParent(goBrowseView.transform);
                goHorizScroll.transform.localScale    = Vector3.one;
                goHorizScroll.transform.localRotation = Quaternion.identity;
                RectTransform rtHorizScr = goHorizScroll.AddComponent <RectTransform>();

                rtHorizScr.anchorMin = new Vector2(0.0f, 0.0f);
                rtHorizScr.anchorMax = new Vector2(1.0f, 0.0f);
                rtHorizScr.pivot     = new Vector2(0.0f, 1.0f);
                rtHorizScr.offsetMin = Vector2.zero;
                rtHorizScr.offsetMax = new Vector2(-scrollVertWidth, scrollHorizHeight);
                UnityEngine.UI.Image imgHorzScr = goHorizScroll.AddComponent <UnityEngine.UI.Image>();
                imgHorzScr.sprite = this.properties.sliderSprite;
                imgHorzScr.type   = UnityEngine.UI.Image.Type.Sliced;

                GameObject goHorizThumb = new GameObject("HorizThumb");

                goHorizThumb.transform.SetParent(rtHorizScr);
                goHorizThumb.transform.localScale    = Vector3.one;
                goHorizThumb.transform.localRotation = Quaternion.identity;
                RectTransform rtHorizThumb = goHorizThumb.AddComponent <RectTransform>();

                rtHorizThumb.pivot     = new Vector2(0.0f, 1.0f);
                rtHorizThumb.offsetMin = Vector2.zero;
                rtHorizThumb.offsetMax = Vector2.zero;
                UnityEngine.UI.Image imgHorizThumb = goHorizThumb.AddComponent <UnityEngine.UI.Image>();

                UnityEngine.UI.Scrollbar sbHoriz = goHorizScroll.AddComponent <UnityEngine.UI.Scrollbar>();
                sbHoriz.handleRect = rtHorizThumb;
                sbHoriz.direction  = UnityEngine.UI.Scrollbar.Direction.LeftToRight;

                this.properties.sliderThumb.Apply(sbHoriz, imgHorizThumb);

                //      RECT
                //
                ////////////////////////////////////////////////////////////////////////////////

                this.scrollRect                     = goBrowseView.AddComponent <UnityEngine.UI.ScrollRect>();
                this.scrollRect.viewport            = rtVP;
                this.scrollRect.content             = rtContent;
                this.scrollRect.horizontalScrollbar = sbHoriz;
                this.scrollRect.verticalScrollbar   = sbVert;
                this.scrollRect.scrollSensitivity   = this.properties.fileScrollSensitivity;

                //      FIN
                //
                ////////////////////////////////////////////////////////////////////////////////

                // Make dirty
                this.scrollRect.gameObject.SetActive(false);
                this.scrollRect.gameObject.SetActive(true);
            }
            public void Create(PxPre.FileBrowse.FileBrowseProp prop, FileBrowser browser)
            {
                this.prop    = prop;
                this.browser = browser;

                GameObject goLabel = new GameObject("FontLabel");

                goLabel.transform.SetParent(this.transform);
                goLabel.transform.localScale    = Vector3.one;
                goLabel.transform.localRotation = Quaternion.identity;
                UnityEngine.UI.Text txtLabel = goLabel.AddComponent <UnityEngine.UI.Text>();
                this.prop.inputLabel.Apply(txtLabel);
                txtLabel.horizontalOverflow = HorizontalWrapMode.Overflow;
                txtLabel.verticalOverflow   = VerticalWrapMode.Overflow;
                txtLabel.alignment          = TextAnchor.MiddleLeft;
                txtLabel.text = "Filename";
                RectTransform          rtLabel  = txtLabel.rectTransform;
                TextGenerationSettings tgsLabel = txtLabel.GetGenerationSettings(new Vector2(float.PositiveInfinity, float.PositiveInfinity));

                tgsLabel.scaleFactor = 1.0f;
                TextGenerator tgLabel    = txtLabel.cachedTextGenerator;
                float         labelWidth = tgLabel.GetPreferredWidth(txtLabel.text, tgsLabel);

                rtLabel.pivot     = new Vector2(0.0f, 0.5f);
                rtLabel.anchorMin = new Vector2(0.0f, 0.0f);
                rtLabel.anchorMax = new Vector2(0.0f, 1.0f);
                rtLabel.offsetMin = new Vector2(0.0f, 0.0f);
                rtLabel.offsetMax = new Vector2(labelWidth, 0.0f);

                GameObject goInput = new GameObject("Input");

                goInput.transform.SetParent(this.transform);
                goInput.transform.localScale    = Vector3.one;
                goInput.transform.localRotation = Quaternion.identity;
                UnityEngine.UI.Image imgInput = goInput.AddComponent <UnityEngine.UI.Image>();
                imgInput.type   = UnityEngine.UI.Image.Type.Sliced;
                imgInput.sprite = this.prop.inputPlateSprite;
                RectTransform rtInput = imgInput.rectTransform;

                rtInput.anchorMin = Vector2.zero;
                rtInput.anchorMax = Vector2.one;
                rtInput.offsetMin = new Vector2(labelWidth + this.prop.inputLabelInputPadding, 0.0f);
                rtInput.offsetMax = Vector2.zero;

                GameObject goInputText = new GameObject("InputText");

                goInputText.transform.SetParent(goInput.transform);
                goInputText.transform.localScale    = Vector3.one;
                goInputText.transform.localRotation = Quaternion.identity;
                UnityEngine.UI.Text textInput = goInputText.AddComponent <UnityEngine.UI.Text>();
                this.prop.inputText.Apply(textInput);
                textInput.alignment        = TextAnchor.MiddleLeft;
                textInput.verticalOverflow = VerticalWrapMode.Overflow;
                RectTransform rtText = textInput.rectTransform;

                rtText.anchorMin = Vector2.zero;
                rtText.anchorMax = Vector2.one;
                rtText.pivot     = new Vector2(0.0f, 0.5f);
                rtText.offsetMin = new Vector2(this.prop.inputPadding, 0.0f);
                rtText.offsetMax = new Vector2(-this.prop.inputPadding, 0.0f);

                this.input = goInput.AddComponent <UnityEngine.UI.InputField>();
                this.input.textComponent    = textInput;
                this.input.onValidateInput += this.OnValidateInput;
                this.input.lineType         = UnityEngine.UI.InputField.LineType.MultiLineNewline;
            }