Jypeli 10
The simple game programming library
StringListWidget.cs
Siirry tämän tiedoston dokumentaatioon.
1#region MIT License
2/*
3 * Copyright (c) 2009-2011 University of Jyväskylä, Department of Mathematical
4 * Information Technology.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 * THE SOFTWARE.
23 */
24#endregion
25
26/*
27 * Authors: Tomi Karppinen, Tero Jäntti
28 */
29
30using System;
31using Microsoft.Xna.Framework;
32using System.Text;
33using Microsoft.Xna.Framework.Graphics;
34using FontStashSharp;
35
36namespace Jypeli
37{
41 public class StringListWidget : ListWidget<string, Label>
42 {
46
50 public Font Font
51 {
52 get { return _font; }
53 set
54 {
55 _font = value;
56 for ( int i = 0; i < Content.ItemCount; i++ )
57 Content[i].Font = value;
58 }
59 }
60
65 {
66 get { return _textColor; }
67 set
68 {
69 _textColor = value;
70 for ( int i = 0; i < Content.ItemCount; i++ )
71 Content[i].TextColor = value;
72 }
73 }
74
79 {
80 get { return _hAlignment; }
81 set
82 {
83 _hAlignment = value;
84 for ( int i = 0; i < Content.ItemCount; i++ )
86 }
87 }
88
92 public string Text
93 {
94 get
95 {
96 StringBuilder result = new StringBuilder();
97
98 foreach ( var item in Items )
99 {
100 result.Append( item ).Append( "\n" );
101 }
102
103 return result.RemoveLast( 2 ).ToString();
104 }
105 set
106 {
107 if ( Width == 0 )
108 throw new InvalidOperationException( "You must set the list width before assigning text!" );
109
110 DynamicSpriteFont xnaFont = this.Font.XnaFont;
111 Vector2 textDims = xnaFont.MeasureString( value );
112 double softWidth = 4 * Font.CharacterWidth < Width ? Width - 4 * Font.CharacterWidth : Width;
113 string wrapped = Font.WrapText( value, softWidth, Width );
114
115 StringList newList = new StringList( wrapped.Split( '\n' ) );
116 this.Bind( newList );
117 }
118 }
119
126 : base( list )
127 {
128 }
129
134 : base( new StringList() )
135 {
136 SizingByLayout = false;
137 }
138
140 internal protected override Label CreateWidget( string item )
141 {
142 return new Label( item )
143 {
144 HorizontalSizing = Sizing.Expanding,
145 Font = Font,
147 SizeMode = TextSizeMode.None,
150 };
151 }
152 }
153}
System.Numerics.Vector2 Vector2
Fontti.
Definition: Font.cs:24
DynamicSpriteFont XnaFont
Definition: Font.cs:50
static readonly Font Default
Oletusfontti.
Definition: Font.cs:31
string WrapText(string text, double softLineWidth, double hardLineWidth)
Rivittää tekstin.
Definition: Font.cs:298
double CharacterWidth
Merkin leveys.
Definition: Font.cs:129
Tekstikenttä.
Definition: Label.cs:70
Listakomponentti. Voidaan liittää listaan, joka toteuttaa INotifyList-rajapinnan. Tällöin listaan teh...
Definition: ListWidget.cs:175
INotifyList< T > Items
Listan alkiot.
Definition: ListWidget.cs:194
ScrollableList< O > Content
Listan sisältö
Definition: ListWidget.cs:188
void Bind(INotifyList< T > list)
Sitoo olemassaolevan listan tähän näyttöön. Kun listaa muutetaan, näytetyt arvot päivittyvät automaat...
Definition: ListWidget.cs:318
Järjestetty lista merkkijonoja.
Definition: StringList.cs:11
Käyttöliittymäkomponentti, joka näyttää listan merkkijonoja.
StringListWidget()
Luo uuden (tyhjän) merkkijonolistakomponentin.
HorizontalAlignment _hAlignment
override Label CreateWidget(string item)
string? Text
Kaikki listan alkiot rivinvaihdoilla erotettuna.
Color TextColor
Tekstin väri.
HorizontalAlignment ItemAligment
Listan alkioiden sijoitus vaakasuunnassa.
StringListWidget(StringList list)
Luo uuden (tyhjän) merkkijonolistakomponentin, joka on sidottu olemassaolevaan listaan.
Font Font
Tekstifontti.
Sizing
Olion koon asettaminen asettelijan sisällä.
Definition: ILayout.cs:39
TextSizeMode
Kuinka tekstikentän kokoa käsitellään.
Definition: Label.cs:42
HorizontalAlignment
Asemointi vaakasuunnassa.
Definition: View.cs:466
Väri.
Definition: Color.cs:13
static readonly Color Transparent
Läpinäkyvä väri.
Definition: Color.cs:931
static readonly Color Black
Musta.
Definition: Color.cs:556