Skip to main content

GettingStartedControls Part 3

appear
depending

(Phoneon Connection)the Optionsitem Scene

selected in the List.

As basis for step 3 of our GettingStartedControls tutorial, please use your own created solution from the previous "GettingStartedControls" tutorial.

OurAnd this is what the final scene will look like this:like:

drawing-7-1676533392.png

Our


goal

Preparing is to create a Phone Connectionthe Options scene

with
a Dial Control and a List with a Sub-List Control, that will appear and disappear when an item in the List is clicked.

Create a new scene usingvia the Scenemenu menu's"Scene" - "New 2D Scene…Scene" or press < Ctrl+2 > on your keyboard
    The "Add menuNew item.Scene
    2D"
    dialog
    will
    be
    drawing-7-1676533421.png
    opened.

    Name

    In the newfirst scenerow select "/Scenes" from the drop-down menu. Enter "SceneOptions" as name and press [ OK ]. We always use the prefix "Scene" to have all scenes listed nearnext to each other in the Solution Explorer view.panel.
      A new scene "SceneOptions" is created and visible in the Solution Explorer panel in folder "Scenes". The new scene is opened in the Scene Editor and in the Scene Tree panel. In the Scene Tree panel you can see that the scene already has a camera. In the Render Targets panel you can see that the camera is already added to the RenderTarget.
      drawing-5-1743151576.png
      In the Render Targets panel check the checkbox of "SceneOptions\Camera" in order to enable rendering. In the Render Targets panel select the SceneOptions\Camera. In the Properties panel's [ Camera ] section change the sequence number to 2.
        The camera's sequence number is set to 2. In the Scene Tree panel the red Information/Warning/Error square disappears.
        drawing-5-1743153260.png

        Importing Images

        This scene uses the built-in Scene Composer controls but they will be customized with new images. Therefore these images have to be imported into the Scene Composer solution.

          In the main menu select Import > Import Resources...
            The "Import Resources" dialog will be opened. In the "Import Resources" dialog navigate to the path given in the table below. Select all 36 files and press [ Open ]
              The "Import Images" dialog will be opened.
              Import Resources
              Path

              /cgi_studio_content/Resources/GettingStartedControls/Options In the "Import Images" dialog select folder "/Resources", make sure to create a new folder "Options" for the imported images and click [ OK ].
                In the Solution Explorer you can see that there is a new folder "Options" in folder "Resources" that contains the 16 imported images. The images have been imported and can be used in the Scene Composer solution.
                drawing-5-1731685091.pngdrawing-5-1743158462.png

                The

                Configuring scenethe isBackground

                now
                createdFrom andthe alreadyToolbox openedpanel's inside[ Node 2D ] section drag a 2D Group nodes into the Scene Tree panel.directly Itonto alreadythe containsnode "SceneOptions".
                  In the Scene Tree panel you can see a standard2D camera.Group Thenode. Viewport size From the Toolbox panel's [ Node 2D ] section drag a BitmapNodes onto the 2D Group node.
                    In the Scene Tree panel you can see that a BitmapNodes has been created. In the Scene Tree panel select the 2D Group and create a copy either via the context menu entries "Copy" and "Paste" or via the keyboard <Ctrl>+C and <Ctrl>+V.
                      A copy of the camera2D followsGroup with its BitmapNode has been created. In Scene Tree panel the sizename of the Rendercopy is "Group_1". In the Scene Tree panel select the nodes added in the steps before one after the other and rename them either via the context menu entry "Rename" or by pressing <F2> on your keyboard. Apply the names provided in the table below.
                        In the Scene Tree panel you can see that the nodes have been renamed.
                        Target (1024x768)Item Name
                        Group
                        Connection   BitmapNode Background Group_1
                        Devices   BitmapNode Background
                        drawing-5-1743165446.png
                        In the Scene Tree panel select both BitmapNodes called "Background". TheThis new scene's camera should automaticallycan be connectedachieved by selecting one BitmapNode, holding down the <Ctrl> key and keeping it pressed while clicking on the second BitmapNode. In Scene Tree panel's right side select the "BitmapBrushBlend" effect. In the Properties panel's [ Effect ] section click on the magnifying glass icon next to the RenderImage Target.property. If
                        itIn isn't,the pleaseProperties panel you can now edit the BitmapBrushBlend effect for both BitmapNodes. The "Choose Item" dialog will be opened.
                        drawing-5-1743171341.png
                        In the "Choose Item" dialog select the image as in the table below and click [ OK ].
                          The Choose Item dialog will be closed. In the Scene Editor a background image is visible displaying a vertical grey-black gradient.
                          drawing-5-1743171365.png
                          Property
                          Path
                          Image
                          /Resources/Options/ConnectionOptionsENBOSBmp In the Scene Tree panel select the "Connection" group. In the Properties panel's [ Transformations ] section adjust the "Position" property according to the table below. Repeat this step with the "Devices" group.
                            In Scene Editor two rectangles with a gradient background are visible.
                            Target Name
                            Position X
                            Position Y

                            Connection

                            78.00
                            58.00

                            Devices

                            551.00
                            58.00
                            drawing-5-1743172201.png


                            Configuration of the "Connection" Nodes

                            Creation and Positioning of the Dial Control

                              From the Toolbox panel's [ Controls ] section under Touchable drag a Dial control into the CameraScene Tree panel directly onto the default"Connection" RenderTargetgroup.
                                In the Scene Tree panel a Dial control has been added into the "Connection" group. In the Scene Editor the Dial control is visible in the Rendertop Targetsleft panel.corner Changeof the Sequenceleft Numbergradient image. In the Scene Tree panel select the Dial control. In the Properties panel's [ Transformation ] section adjust its position according to the table below.
                                  In the Scene Editor the Dial control is positioned in the lower center of the gradient image.
                                  Target Name
                                  Position X
                                  Position Y

                                  Dial

                                  72.00
                                  163.00

                                  Configuration of the Dial Control

                                    In the Properties panel's [ Control ] section click on the magnifying glass icon next to property "Knob Image".
                                      The "Choose Item" dialog will be opened. In the "Choose Item" dialog select the image as in the table below and click [ OK ].
                                        The Choose Item dialog will be closed. In the Scene Editor an orange ring will become visible.
                                        Property
                                        Path
                                        Knob Image
                                        /Resources/Options/NewDial_arrow_middleBmp In the Properties panel's [ Control ] section click on the the "BackgroundImages" section.
                                          In the Properties panel the "BackgroundImages" section will be expanded. In the Properties panel click on the magnifying glass next to "BackgroundImages 0".
                                            The "Choose Item" dialog will be opened. In the Choose Item dialog navigate to "/Resources/Options/NewDial_background_leftBmp", select this image and click [ OK ].
                                              In the Properties panel the first BackgroundImage has been configured. Repeat steps 4 and 5 to configure the remaining BackgroundImages as in the table below.
                                                In Properties panel all BackgroundImages are configured. In Scene Editor you can see the newly configured images.

                                                If the new images are not visible try refreshing the screen by pressing the <F5> key on your keyboard.

                                                StateImages
                                                Image Path
                                                BackgroundImages 0 /Resources/Options/NewDial_background_leftBmp BackgroundImages 1
                                                /Resources/Options/NewDial_background_middleBmp BackgroundImages 2
                                                /Resources/Options/NewDial_background_rightBmp
                                                drawing-5-1743176307.png
                                                In the Solution Explorer panel select the new Knob Image "/Resources/Options/NewDial_arrow_middleBmp". In the Properties panel's [ Bitmap ] section enable "Pivot Hint" by checking the respective checkbox.
                                                  A new property "Pivot Hint" becomes visible. Configure the "Pivot Hint" as in the table below.
                                                    The Pivot Hint for the Knob Image is configured correctly. In the Solution Explorer select the three images that were configured as BackgroundImages. In the Properties panel proceed similar to steps 10 and 11, enabling and configuring the Pivot Hint of these three images according to the table below.
                                                      The Pivot Hint is configured correctly. In Scene Editor the Dial's images are neatly aligned. The images have a common center.

                                                      If the the images are still not aligned correctly try refreshing the screen by pressing the <F5> key on your keyboard.

                                                      Target Name
                                                      Enable Pivot Hint Pivot Hint X
                                                      Pivot Hint Y
                                                      NewDial_arrow_middleBmp true 84,50

                                                      88,00

                                                      NewDial_background_leftBmp true
                                                      130,50
                                                      130,50 NewDial_background_middleBmp true
                                                      130,50 130,50 NewDial_Background_rightBmp true
                                                      130,50 130,50

                                                      Adding TextNodes as Connection Labels

                                                        From the Toolbox panel's [ Nodes 2D ] drag and drop a TextNode into the Scene Tree panel directly onto the "Connection" group node.
                                                          In the Scene Tree panel a TextNode will become visible. In the Scene Editor the text "Text" will appear.

                                                          If the text does not appear in Scene Editor, the BitmapNode "Background" might be covering the TextNode. Make sure that "Background" is the first (top) item inside the "Connection" group. Nodes can be re-arranged in the Scene Tree panel via drag&drop.

                                                          In the Scene Tree panel select the new TextNode. In the Properties panel's [ 2D Text Node ] section click on the magnifying glass icon next to property "Style".
                                                            The "Text Style Palette" dialog will be opened. In the "Text Style Palette" dialog select "OpenSans25" and click [ OK ].
                                                              In Scene Editor the Text Style of the TextNode will change. In the Scene Tree panel right click onto Connection and select "Clone..." from the context menu.
                                                                The "Clone Item" dialog will be opened. In the "Clone Item" dialog change to the "Multiple Clone" tab. Configure "Number of Copies" to "3" and click [ OK ].
                                                                  In the Scene Tree panel 4 TextNodes are now available inside the "Connection" group.
                                                                  drawing-5-1743178223.png
                                                                  In the Scene Tree panel select the newly created TextNodes one after the other and configure their names in the Scene Tree panel and the remaining properties in the Properties panel soas that this scene will be rendered abovein the SceneClimate.table
                                                                  drawing-5-1731685199.png
                                                                  below.

                                                                  Before

                                                                  anything else, let's import a few images for the Options scene by clicking (Import > Import Resources) and selecting the files in /cgi_studio_content/Resources/GettingStartedControls/Options:
                                                                  drawing-5-1731685329.png

                                                                  First, drag two Group Nodes from the Toolbox into the Scene Tree.

                                                                  The firstTextNodes groupare willfully representconfigured. theThe "Connection"final Dial and the second group will be for the "Devices" List. Rename the first Group Node to "Connection" and the second Group Node to "Devices". Under each group, add a Bitmap Node from the Toolbox and rename it to "Background".
                                                                  drawing-5-1731685473.png

                                                                  Select oneresult of the BitmapConnection Nodepart can be seen in the Scene Tree Panel. Then, select the BitmapBrushBlend Effect and set the Image property to the recently imported background image as shown below: And do the same for the other Bitmap Node.

                                                                  drawing-5-1731685708.png

                                                                  Change the Position property of "Connection" to X: 78 and Y: 58. Change the Position property of "Devices" to X: 551 and Y: 58. Now we have two background images for Connection group and Devices group.

                                                                  drawing-5-1732270723.png

                                                                  Setting up the "Connection" Nodes

                                                                  Drag a Dial Control to the "Connection" Group Node. Set the Position property to X: 72.00 and Y: 163.00.

                                                                  drawing-5-1731686697.png

                                                                  Replace the default background images to images from recent import, as follows:

                                                                  drawing-5-1731687075.png

                                                                  In order to arrange the images of the Dial correctly, the "Pivot Hint" property of each image should be set. This step is necessary for images like the Dial image, which need to rotate. To do this, go to the Solution Explorer panel, and select each of the following images:

                                                                  drawing-5-1731687154.png

                                                                  For the knob image "NewDial_arrow_middleBmp", enable the "Pivot Hint" property and set the values as follows:

                                                                  drawing-5-1731687336.png

                                                                  As you can see the knob needs to be repositioned to be in the center of the Dial.

                                                                  Select the three other background images (multiple selection), enable the "Pivot Hint" property and set the pivot hint as follows:

                                                                  drawing-5-1731688023.png

                                                                  Add 4 Text Nodes to "Connection" Group Node and move them below Background Node with Ctrl key dragging. Rename them as follows:

                                                                  drawing-5-1731688795.png

                                                                  Configure the Text Nodes with the following values: Text Style should be OpenSans25.

                                                                  below.
                                                                  TextNode Name 2D Text Node
                                                                  - Text Transformations Text Position X Position Y TextNode_Connection Connection 141 61 TextNode_Bluetooth Bluetooth 149 134 TextNode_Cable Cable 20 200 TextNode_Other Other 315 200
                                                                  drawing-5-1743180340.png

                                                                  Setting up the "Connection" Nodes


                                                                  Add 4 Text Nodes to "Connection" Group Node and move them below Background Node with Ctrl key dragging. Rename them as follows:


                                                                  Configure the Text Nodes with the following values: Text Style should be OpenSans25.


                                                                  Make sure that the "Background" is the first (top) item in the "Connection" group in order to appear in the background and not cover other nodes.

                                                                  At this point, you will now have created the Connection options Dial:

                                                                  drawing-7-1676534080.png

                                                                  Setting up the "Devices" nodes

                                                                  First, add a TextNode to the GroupNode "Devices" for the "Devices" label.

                                                                  Rename it to TextNode_Devices and set its text to "Devices" and set its position to X:145 Y: 61.

                                                                  drawing-5-1731689340.png

                                                                  Next step is to customize an existing List control and set its color of the Scrollbar to orange (original color is blue). At first, drag and drop List Control from ConstructionKit > Controls in Solution Explorer onto SceneOptions in Scene Tree panel.

                                                                  drawing-5-1731689862.png

                                                                  Select [ Expand Control Node ] from the context menu of List in Scene Tree panel.

                                                                  drawing-5-1731690268.png

                                                                  Open List and select [ Expand Control Node ] from the context menu of the Scrollbar.

                                                                  drawing-5-1731692001.png

                                                                  Select the List in Scene Tree and choose [ Save as Control... ] from List context menu. Then Add New Templates dialog will appear and press [ OK ] button. As the result of that, you can add the control as a customizable control in Solution Explorer's Solution > Controls. After confirming this addition, delete List group node in Scene Tree panel.

                                                                  drawing-5-1731692295.png

                                                                  You have now created a customizable List control.

                                                                  Select [ Control Properties... ] from List context menu of Solution Explorer's Solution > Controls. The Configure Public Control Properties dialog will appear, check Is Public for ScrollbarVisibility under Internal properties, and press [ OK ] button.

                                                                  drawing-5-1731692509.png
                                                                  drawing-5-1731692730.png

                                                                  Delete the expanded List Control from SceneOptions in the Scene Tree Panel. Drag and drop the newly created List from Solution Explorer's Solution > Controls to Scene Tree panel's SceneOptions > Devices.

                                                                  drawing-5-1731692941.png

                                                                  Set Scrollbal Visibility (Properties > Control) of List to "Visible."

                                                                  drawing-5-1731693087.png

                                                                  Double-click on the List in the Devices group to customize it on Scene Tree.

                                                                  drawing-5-1731693169.png

                                                                  Select the "Thumb" button and replace its images as follows:

                                                                  drawing-5-1731693342.png

                                                                  Then select the "VerticalPrevItem" button from inside the PrevItem group node and replace the images as follows:

                                                                  drawing-5-1731693706.png

                                                                  Lastly, select the "VerticalNextItem" button from inside the NextItem group node and replace the images as follows:

                                                                  drawing-5-1731693682.png

                                                                  We want a main list with a sub-list that will expand when an item in the main list is clicked.
                                                                  To do that, first we need a Group Node with an OverlayLayout which will contain the device entry name and the focus image. Therefore, drag a Render Node and a TextNode from the ToolBox "Nodes 2D" into the OverlayLayout.
                                                                  Rename the OverlayLayout to "MainItem".
                                                                  Rename the RenderNode to "FocusImage".
                                                                  Rename the TextNode to "EntryName".

                                                                  The "MainItem" you have now assembled will be the main list item that will be visible.

                                                                  drawing-5-1731693990.png

                                                                  Set the position of the GroupNode List to X:58 and Y:134 and configure its size to X:300 and Y:300.

                                                                  drawing-5-1731694406.png

                                                                  In our list the currently selected main list item shall be highlighted with an orange outline.
                                                                  Therefore drag a BitmapBrushColorBlend effect from the ToolBox onto the FocusImage node. Now select the BitmapBrushColorBlend Effect on the right side of the Scene Tree Panel and set its Image to the BorderFocusedBmp image (which is part of the ConstructionKit) and its Color properties as follows:

                                                                  drawing-5-1731695449.png

                                                                  Now, select the FocusImage node and change its layout properties: Set the StretchBehavior to "Fill".

                                                                  drawing-5-1732264208.png

                                                                  In the following steps we will create a sub-list. Drag a Sub-List control from the Toolbox to the List's ListContentGroup.

                                                                  drawing-5-1732264487.png

                                                                  The Sub-List control has a SublistAnchor. Drag a StackLayout onto this SubListAnchor. Now, drag a TextButton into the StackLayout and change its name to "TextButton_Connect".
                                                                  The resulting structure should look like this:

                                                                  drawing-5-1732264602.png

                                                                  The next step is to configure the TextButton:

                                                                  • Scale: X:0.75 and Y:0.75.
                                                                  • Margin Left: 12
                                                                  • Text: "Connect".
                                                                    drawing-5-1732265837.png

                                                                  The TextButton's images (Normal Image, Pressed Image and Focused Image) need to be adjusted:

                                                                  drawing-5-1732267095.png

                                                                  Copy and paste the TextButton to make another copy. Rename the other as "TextButton_Unpair", and set its Text property to "Unpair". Resulting structure should look like this:

                                                                  drawing-5-1732267192.png

                                                                  Setting up the "Devices" List behaviors

                                                                  Focus Handling behaviors

                                                                  For the Devices entry items, we need to set the behaviors for focus handling. We want the item to be highlighted only when it is focused. So first, we need to disable Rendering of the FocusImage by default. In the FocusImage properties, uncheck "Enable Rendering":

                                                                  drawing-5-1732268041.png


                                                                  Next, in order for the "MainItem" Group Node to send events such as Focus Event when clicked, we have to add a "Handle Control State" behavior (Behaviors > Control > Internal) to MainItem Group Node.

                                                                  Then, to handle these events received, add a "Focus" and "FocusLeave" Event Handler from the Toolbox under Behaviors > Control onto the MainItem Group Node.

                                                                  Under each "Actions" of each Focus Event Handler, add an "Enable Rendering" behavior from the Toolbox under Behaviors > Action > Property.

                                                                  drawing-5-1732268359.png

                                                                  This is what the configured Behaviors look like now:

                                                                  drawing-5-1732268449.png

                                                                  As soon as the MainItem gets the focus, the FocusImage shall be visible. Therefore you have to configure the "EnableRendering" behavior of the "Focus" Event Handler as follows: Set the "Visible" property to TRUE and configure the scene's "FocusImage" as TargetNode. To do this, click the magnifying glass icon and selecting the "FocusImage" in the Choose Item dialog.

                                                                  drawing-5-1732268741.pngdrawing-5-1732268741.png

                                                                  As soon as the MainItem loses the focus, the FocusImage shall be made invisible again. Therefore you have to configure the "EnableRendering" behavior of the "FocusLeave" Event Handler as follows: Set the "Visible" property to FALSE. The scene's "FocusImage" has to be configured as TargetNode similar to the steps above.

                                                                  drawing-5-1732269476.pngdrawing-5-1732269476.png

                                                                  If you run CGI Player and click on a list item, an orange highlight should indicate that this item is in focus.


                                                                  Sub-List Handling behaviors

                                                                  Next, we will set the behaviors so that when a Device entry item ("MainItem") is clicked, a sub-list containing buttons will be visible. These buttons are for connecting/disconnecting the phone device to another.

                                                                  Drag an "Event Handler" behavior (under Behaviors > Control) onto the "MainItem" Group Node. Then, add a "Check Logic Condition" to the Condition of this Event Handler since we want to put 2 conditions together. Under the "Check Logic Condition" add a "Check Click" condition and another "Check Key Input" condition.

                                                                  drawing-5-1732272337.png
                                                                  In the "Check Logic Condition" properties, set the Operation to "Or", since we want the condition to be either a click or a key input.
                                                                  drawing-5-1732272393.png
                                                                  The "Check Key Input" condition, checks if the enter key is pressed. Therefore the KeyCode property will be set to "Key_Enter".
                                                                  drawing-5-1732272458.png

                                                                  Add a "Send Value as Event" behavior to the "Actions" section of the "Event Handler".

                                                                  drawing-5-1732272530.png

                                                                  For this action behavior, we want to send a boolean value to the Sub-List as a signal that it should toggle its visibility. So please set the properties of "Send Value as Event" behavior as follows:

                                                                  drawing-5-1732272835.pngdrawing-5-1732272835.png

                                                                  The Sub-List control will be the one to receive the boolean value. So let's add a Value behavior to the Sub-List control.

                                                                  drawing-5-1732273650.png

                                                                  The value that will be sent to the Sub-List control will be of type "Bool", so the Variant type of the Value behavior has to be changed to "Bool" as well:

                                                                  drawing-5-1732273866.pngdrawing-5-1732273866.png

                                                                  To configure the action that is performed when the visibility of the Sub-List is toggled, we have to add an "Action on Value" behavior to the Value behavior's receivers.

                                                                  drawing-5-1732275521.png

                                                                  Only if the value received from "MainItem/Send Value as Event" is TRUE, an action (which will be defined in later steps) shall be performed. Therefore, we will add a "Check processed Value" condition and configure its properties as follows.

                                                                  drawing-5-1732276713.png
                                                                  The action that shall be performed is a "Set Control State" behavior, which will actually enable the Sub-List when the condition above is met. Please drag it onto the Actions part of the "Action on Value" behavior and configure it as depicted below.
                                                                  drawing-5-1732277001.png

                                                                  Add another "Action on Value" behavior with a "Check processed Value" condition and "Set Control State" action, same as above. But this time, set the ConditionValue property of "Check processed Value" condition to false (Bool + unchecked). And set the "ChangeTo" property of "Set Control State" to false (unchecked).
                                                                  drawing-5-1732277437.png

                                                                  Try to run your solution in the CGI Player. When you click a main item in the list, the sub-list should appear. When clicking it a second time, it will disappear again.

                                                                  Copy and paste the "MainItem" Group nodes and Sub-List nodes onto the ListContentGroup to create 4 more instances.

                                                                  drawing-5-1732278984.png

                                                                  Make sure to update the "Send Value as Event" behavior's "TargetNode" property for each MainItem so that it will enable/disable the appropriate sub-lists.

                                                                  drawing-5-1732279032.png

                                                                  As final step, set the Text of the first 2 list items as "Phone(Private)" and "Phone(Work)" and the last 3 items as "New Device".

                                                                  drawing-5-1732279125.png

                                                                  You have finished the (Phone Connection) Options Scene tutorial. Generate an asset file as described at the end of Step 1. Load the generated asset into the Player and select the Options scene. You can now play around with the controls. Turn the Dial to select the type of Connection. Click on an item in the Devices list to make the sub-list buttons appear and disappear.

                                                                  drawing-7-1676537670.png