Recently, I am working on a new and powerful dynamic UI creation framework component that will allow UI components to be defined entirely in XML and to be decorated with a dictionary /JSON format similar to CSS. It's a hard job.
Of course, you can also use pure Blocky code to create UI components on the fly.
For example,here is a xml document to declare the ui components.
<VerticalArrangement Width="fill" Height="auto"
	Image="http://appinventor.mit.edu/images/logo.png">
	<HorizontalArrangement id="c1" class="container">
		<Label Text="Id:" class="label" />
		<TextBox class="input" />
	</HorizontalArrangement>
	<HorizontalArrangement id="c2" class="container">
		<Label Text="Passward:" class="label" />
		<PasswordTextBox class="input" />
	</HorizontalArrangement>
	<HorizontalArrangement id="c3" class="container">
		<Label Text="Enter Passward:" class="label" />
		<PasswordTextBox class="input" />
	</HorizontalArrangement>
	<Button Text="Register" />
</VerticalArrangement>
And this is a json to set these components' style.
If you've ever developed a web page, which you're probably familiar with, the key for the following json is the CSS selector.
{
	".label": {
		"TextColor": "Black",
		"Height": "auto",
		"Width":"100px",
		"BackgroundColor": "argb(0x7e,128,34,123)",
		"TextAlignment":"center"
	},
	".container":{
		"AlignVertical":"Center"
	},
	".input,.container,Button": {
		"Width": "fill"
	},
	"[Text=Register]":{
		"BackgroundColor":"#7fef0f"
	},
	"#c1": {
		"BackgroundColor": "NAME(69%,Red)"
	},
	"#c2": {
		"BackgroundColor": "hsv(128,0.5,1)"
	},
	"#c3": {
		"BackgroundColor": "#1fff00ff"
	}
} 
By this block it can compile xml and css to the final xml.
The output:
<VerticalArrangement Width="fill" Height="auto"
	Image="http://appinventor.mit.edu/images/logo.png">
	<HorizontalArrangement id="c1" class="container"
		AlignVertical="2" Width="fill" BackgroundColor="NAME(69%,Red)">
		<Label Text="Id:" class="label" TextColor="Black" Height="auto"
			Width="100px" BackgroundColor="argb(0x7e,128,34,123)"
			TextAlignment="center" />
		<TextBox class="input" Width="fill" />
	</HorizontalArrangement>
	<HorizontalArrangement id="c2" class="container"
		AlignVertical="2" Width="fill" BackgroundColor="hsv(128,0.5,1)">
		<Label Text="Passward:" class="label" TextColor="Black"
			Height="auto" Width="100px" BackgroundColor="argb(0x7e,128,34,123)"
			TextAlignment="center" />
		<PasswordTextBox class="input" Width="fill" />
	</HorizontalArrangement>
	<HorizontalArrangement id="c3" class="container"
		AlignVertical="2" Width="fill" BackgroundColor="#1fff00ff">
		<Label Text="Enter Passward:" class="label" TextColor="Black"
			Height="auto" Width="100px" BackgroundColor="argb(0x7e,128,34,123)"
			TextAlignment="center" />
		<PasswordTextBox class="input" Width="fill" />
	</HorizontalArrangement>
	<Button Text="Register" Width="fill" BackgroundColor="#7fef0f" />
</VerticalArrangement>
After use Add block to create all ui components.

The UI components will generate automatic.

It's also can set/get property,invoke method by reflection.
And it alse can use event and Any Component Blocks.
If the platform support the PR and support intercept the component event in java:
it would be more easily to use dynamic component event as the following:

So I hope to this powerful PR will be merged. And is there any method to intercept the component's event?




