aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/demo/LayoutDemo.java
blob: cedebf84a7cc5bc933bc7e16276f4310b7387d81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package com.itmill.toolkit.demo;

import com.itmill.toolkit.terminal.ClassResource;
import com.itmill.toolkit.ui.*;

/**
 * This example demonstrates layouts. Layouts are populated with sample Toolkit
 * UI components.
 * 
 * @author IT Mill Ltd.
 * @since 4.0.0
 * 
 */
public class LayoutDemo extends com.itmill.toolkit.Application {

	/**
	 * Initialize Application. Demo components are added to main window.
	 */
	public void init() {
		Window mainWindow = new Window("Layout demo");
		setMainWindow(mainWindow);

		// set the application to use Corporate -theme
		setTheme("corporate");

		//
		// Create horizontal ordered layout
		//
		OrderedLayout layoutA = new OrderedLayout(
				OrderedLayout.ORIENTATION_HORIZONTAL);
		// Add 4 panels
		fillLayout(layoutA, 4);

		//
		// Create vertical ordered layout
		//
		OrderedLayout layoutB = new OrderedLayout(
				OrderedLayout.ORIENTATION_VERTICAL);
		// Add 4 panels
		fillLayout(layoutB, 4);

		//
		// Create grid layout
		//
		GridLayout layoutG = new GridLayout(4, 4);
		// Add 16 panels components
		fillLayout(layoutG, 16);

		//
		// Create grid layout
		//
		GridLayout layoutG2 = new GridLayout(4, 4);
		// Add 4 panels with absolute coordinates (diagonally)
		layoutG2.addComponent(getExampleComponent("x=0, y=0"), 0, 0);
		layoutG2.addComponent(getExampleComponent("x=1, y=1"), 1, 1);
		layoutG2.addComponent(getExampleComponent("x=2, y=2"), 2, 2);
		layoutG2.addComponent(getExampleComponent("x=3, y=3"), 3, 3);
		// Add 4 pictures with absolute coordinates (diagonally)
		layoutG2.addComponent(getExamplePicture("x=3, y=0"), 3, 0);
		layoutG2.addComponent(getExamplePicture("x=2, y=1"), 2, 1);
		layoutG2.addComponent(getExamplePicture("x=1, y=2"), 1, 2);
		layoutG2.addComponent(getExamplePicture("x=0, y=3"), 0, 3);

		//
		// Create TabSheet
		//
		TabSheet tabsheet = new TabSheet();
		tabsheet
				.setCaption("Tabsheet, above layouts are added to this component");
		tabsheet.addTab(layoutA, "Horizontal ordered layout", null);
		tabsheet.addTab(layoutB, "Vertical ordered layout", null);
		tabsheet.addTab(layoutG, "First grid layout", null);
		tabsheet.addTab(layoutG2, "Second grid layout", null);

		//
		// Add demo layouts to main window
		//
		mainWindow.addComponent(new Label(
				"<h3>Horizontal ordered layout</h3>Added four components.",
				Label.CONTENT_XHTML));
		mainWindow.addComponent(layoutA);
		mainWindow.addComponent(new Label(
				"<br /><h3>Vertical ordered layout</h3>Added four components.",
				Label.CONTENT_XHTML));
		mainWindow.addComponent(layoutB);
		mainWindow.addComponent(new Label(
				"<br /><h3>Grid Layout (4 x 4)</h3>Added 16 components.",
				Label.CONTENT_XHTML));
		mainWindow.addComponent(layoutG);
		mainWindow
				.addComponent(new Label("<br /><h3>Grid Layout (4 x 4)</h3>"
						+ "Added four panels and four embedded components "
						+ "diagonally with absolute coordinates.",
						Label.CONTENT_XHTML));
		mainWindow.addComponent(layoutG2);
		mainWindow.addComponent(new Label(
				"<br /><h3>TabSheet</h3>Added above layouts as tabs.",
				Label.CONTENT_XHTML));
		mainWindow.addComponent(tabsheet);

	}

	private Component getExamplePicture(String caption) {
		ClassResource cr = new ClassResource("features/m-bullet-blue.gif", this);
		Embedded em = new Embedded("Embedded " + caption, cr);
		em.setWidth(170);
		return em;
	}

	private Component getExampleComponent(String caption) {
		Panel panel = new Panel();
		panel.setCaption("Panel component " + caption);
		panel
				.addComponent(new Label(
						"Panel is a container for other components, by default it draws a frame around it's "
								+ "extremities and may have a caption to clarify the nature of the contained components' purpose."
								+ " Panel contains an layout where the actual contained components are added, "
								+ "this layout may be switched on the fly.",
						Label.CONTENT_XHTML));
		panel.setWidth(222);
		return panel;
	}

	/**
	 * Add multiple demo component to given layout.
	 * 
	 * @param layout
	 *            where components are added
	 * @param numberOfComponents
	 *            to add
	 */
	private void fillLayout(Layout layout, int numberOfComponents) {
		for (int i = 1; i <= numberOfComponents; i++) {
			layout.addComponent(getExampleComponent(Integer.toString(i)));
		}
	}

}