Aragas/Bannerlord.MBOptionScreen

View on GitHub
src/MCM.UI/GUI/Prefabs/DropdownWithHorizontalControl.Checkbox.xml

Summary

Maintainability
Test Coverage
<Prefab>
  <Parameters>
    <Parameter Name="SelectorDataSource" DefaultValue="SelectorDataSource" />
  </Parameters>
  <Constants>
    <Constant Name="Extension.Width" BrushLayer="Default" BrushName="SPOptions.Dropdown.Extension" BrushValueType="Width" />
    <Constant Name="DropdownCenter.Width" BrushLayer="Default" BrushName="SPOptions.Dropdown.Center" BrushValueType="Width" />
    <Constant Name="DropdownCenter.Height" BrushLayer="Default" BrushName="SPOptions.Dropdown.Center" BrushValueType="Height" />
  </Constants>
  <Window>
    <ListPanel Id="HorizontalControlParent" DataSource="*SelectorDataSource" WidthSizePolicy="CoverChildren" HeightSizePolicy="CoverChildren">
      <Children>

        <!--Type Selection-->
        <OptionsDropdownWidget Id="DropdownParent" WidthSizePolicy="Fixed" HeightSizePolicy="CoverChildren" SuggestedWidth="362" HorizontalAlignment="Center" VerticalAlignment="Center" DropdownContainerWidget="DropdownClipWidget\DropdownContainerWidget"  ListPanel="DropdownClipWidget\DropdownContainerWidget\ScrollablePanel\ClipRect\PrimaryUsageSelectorList" Button="DropdownButton" CurrentSelectedIndex="@SelectedIndex"  RichTextWidget="DropdownButton\SelectedTextWidget" DropdownClipWidget="DropdownClipWidget">
          <Children>

            <ButtonWidget Id="DropdownButton" DoNotPassEventsToChildren="true" WidthSizePolicy="StretchToParent" HeightSizePolicy="Fixed" SuggestedHeight="!DropdownCenter.Height" HorizontalAlignment="Center" VerticalAlignment="Center" Brush="SPOptions.Dropdown.Center">
              <Children>
                <RichTextWidget Id="SelectedTextWidget" WidthSizePolicy="StretchToParent" HeightSizePolicy="StretchToParent" HorizontalAlignment="Center" VerticalAlignment="Center" PositionYOffset="1" Brush="SPOptions.Dropdown.Center.Text"/>
              </Children>
            </ButtonWidget>

            <!--Dropdown Visual-->
            <Widget Id="DropdownClipWidget" WidthSizePolicy="CoverChildren" HeightSizePolicy="Fixed" ClipContents="true" WidgetToCopyHeightFrom="DropdownContainerWidget\ScrollablePanel">
              <Children>

                <BrushWidget Id="DropdownContainerWidget" WidthSizePolicy="Fixed" HeightSizePolicy="Fixed" VerticalAlignment="Bottom" SuggestedWidth="!Extension.Width" SuggestedHeight="380" HorizontalAlignment="Center" Brush="SPOptions.Dropdown.Extension" >
                  <Children>

                    <ScrollablePanel Id="ScrollablePanel" WidthSizePolicy="StretchToParent" HeightSizePolicy="CoverChildren" AutoHideScrollBars="true" ClipRect="ClipRect" MarginBottom="20" VerticalAlignment="Bottom" InnerPanel="ClipRect\PrimaryUsageSelectorList" MaxHeight="355" VerticalScrollbar="..\VerticalScrollbar">
                      <Children>
                        <Widget Id="ClipRect" WidthSizePolicy="StretchToParent" HeightSizePolicy="CoverChildren" ClipContents="true" MaxHeight="355">
                          <Children>

                            <ListPanel Id="PrimaryUsageSelectorList" DataSource="{ItemList}" WidthSizePolicy="Fixed" HeightSizePolicy="CoverChildren" SuggestedWidth="330" HorizontalAlignment="Center" LayoutImp.LayoutMethod="VerticalBottomToTop">
                              <ItemTemplate>
                                <ListPanel HeightSizePolicy="Fixed" WidthSizePolicy="StretchToParent" SuggestedHeight="50" VerticalAlignment="Bottom" HorizontalAlignment="Center" LayoutImp.LayoutMethod="HorizontalLeftToRight" UpdateChildrenStates="true" IsEnabled="@CanBeSelected" >
                                  <Children>
                                    <RichTextWidget HeightSizePolicy="Fixed" WidthSizePolicy="StretchToParent" SuggestedWidth="40" SuggestedHeight="100" HorizontalAlignment="Left" VerticalAlignment="Center" Brush="SPOptions.Dropdown.Center.Text" Text="@StringItem"/>
                                    <ButtonWidget DoNotPassEventsToChildren="true" WidthSizePolicy="Fixed" HeightSizePolicy="Fixed" SuggestedWidth="40" SuggestedHeight="40" VerticalAlignment="Center" HorizontalAlignment="Right" Brush="SPOptions.Checkbox.Empty.Button" ButtonType="Toggle" IsSelected="@IsSelected" ToggleIndicator="ToggleIndicator" UpdateChildrenStates="true" MarginRight="25">
                                      <Children>
                                        <ImageWidget Id="ToggleIndicator" WidthSizePolicy="StretchToParent" HeightSizePolicy="StretchToParent" HorizontalAlignment="Center" VerticalAlignment="Center" Brush="SPOptions.Checkbox.Full.Button"/>
                                      </Children>
                                    </ButtonWidget>
                                  </Children>
                                </ListPanel>
                              </ItemTemplate>
                            </ListPanel>
                          </Children>
                        </Widget>

                      </Children>
                    </ScrollablePanel>

                    <ScrollbarWidget Id="VerticalScrollbar" WidthSizePolicy="Fixed" HeightSizePolicy="StretchToParent" SuggestedWidth="8" HorizontalAlignment="Right" VerticalAlignment="Center" MarginTop="15" MarginBottom="15" AlignmentAxis="Vertical" Handle="VerticalScrollbarHandle" IsVisible="false" MaxValue="100" MinValue="0">
                      <Children>
                        <Widget WidthSizePolicy="Fixed" HeightSizePolicy="StretchToParent" SuggestedWidth="4" HorizontalAlignment="Center" Sprite="BlankWhiteSquare_9" Brush.AlphaFactor="0.2" Brush.Color="#5a4033FF" />
                        <ImageWidget Id="VerticalScrollbarHandle" WidthSizePolicy="Fixed" HeightSizePolicy="Fixed" SuggestedWidth="8" SuggestedHeight="10" HorizontalAlignment="Center" Brush="FaceGen.Scrollbar.Handle" />
                      </Children>
                    </ScrollbarWidget>

                  </Children>
                </BrushWidget>
              </Children>
            </Widget>

          </Children>
        </OptionsDropdownWidget>

      </Children>
    </ListPanel>
  </Window>
</Prefab>