1 module widgets.longlists;
2
3 import dlangui;
4
5 class LongListsExample : HorizontalLayout
6 {
7 this(string ID)
8 {
9 super(ID);
10 layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
11
12 ListWidget list = new ListWidget("list1", Orientation.Vertical);
13 list.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
14
15 StringListAdapter stringList = new StringListAdapter();
16 WidgetListAdapter listAdapter = new WidgetListAdapter();
17 listAdapter.add((new TextWidget()).text("This is a list of widgets"d).styleId("LIST_ITEM"));
18 stringList.add("This is a list of strings from StringListAdapter"d);
19 stringList.add("If you type with your keyboard,"d);
20 stringList.add("then you can find the"d);
21 stringList.add("item in the list"d);
22 stringList.add("neat!"d);
23 for (int i = 1; i < 1000; i++) {
24 dstring label = "List item "d ~ to!dstring(i);
25 listAdapter.add((new TextWidget()).text("Widget list - "d ~ label).styleId("LIST_ITEM"));
26 stringList.add("Simple string - "d ~ label);
27 }
28 list.ownAdapter = listAdapter;
29 listAdapter.resetItemState(0, State.Enabled);
30 listAdapter.resetItemState(5, State.Enabled);
31 listAdapter.resetItemState(7, State.Enabled);
32 listAdapter.resetItemState(12, State.Enabled);
33 assert(list.itemEnabled(5) == false);
34 assert(list.itemEnabled(6) == true);
35 list.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
36 list.selectItem(0);
37
38 addChild(list);
39
40 ListWidget list2 = new StringListWidget("list2");
41 list2.ownAdapter = stringList;
42 list2.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
43 list2.selectItem(0);
44 addChild(list2);
45
46 VerticalLayout itemedit = new VerticalLayout();
47 itemedit.addChild(new TextWidget(null, "New item text:"d));
48 EditLine itemtext = new EditLine(null, "Text for new item"d);
49 itemedit.addChild(itemtext);
50 Button btn = new Button(null, "Add item"d);
51 itemedit.addChild(btn);
52 addChild(itemedit);
53 btn.click = delegate(Widget src)
54 {
55 stringList.add(itemtext.text);
56 listAdapter.add((new TextWidget()).text(itemtext.text).styleId("LIST_ITEM"));
57 return true;
58 };
59 }
60 }