If i have lots of group, the horizontal axis gets full with the square 4x4 groups, but the vertacal axis has lots of empty space.
I could break the squareness of the groups to make them longer in the vertical axis, but that seems a bit ugly.
However, I cannot seem to find a way to put a group under another group, therefore utilising both the X and Y dimensions well.
Can it be done?
i.e.
--Group 1-- --Group2--
Tile Tile Tile Tile
Tile Tile Tile Tile
--Group 3--
Tile Tile
Tile Tile
Before (How it is now):

After (How I'm proposing it can be):

To reproduce: 1. Add a RadPanorama with several tiles at design time. 2. Open the RadItem Collection Editor and try to reorder the items by using the arrows. Press OK. As a result, the tiles in the form are not ordered as expected although the order in the Collection Editor is the desired one. Workaround: add the tiles at run-time in the correct order.
It would be nice if the user is allowed to edit the tiles.
ADD. RadPanorama - add selection support with checkboxes
Currently RadPanorama animates all visible tiles when clicking on a tile.
example:
RadLiveTileElement tileElement = new RadLiveTileElement();
tileElement.Text = "&Applications";
tileElement.UseMnemonic = true;
panorama.Items.Add(tileElement);
This will allow the users to scroll through the tiles in all rows when the available height is insufficient.
WORKAROUND:
class CustomPanorama : RadPanorama
{
RadScrollBarElement vScroll;
protected override void CreateChildItems(Telerik.WinControls.RadElement parent)
{
base.CreateChildItems(parent);
this.vScroll = new RadScrollBarElement();
this.vScroll.ScrollType = ScrollType.Vertical;
this.vScroll.StretchHorizontally = false;
this.vScroll.StretchVertically = true;
this.vScroll.MinSize = new System.Drawing.Size(16, 0);
this.vScroll.Alignment = System.Drawing.ContentAlignment.TopRight;
this.PanoramaElement.Children.Add(vScroll);
this.vScroll.ValueChanged += new EventHandler(vScroll_ValueChanged);
this.PanoramaElement.GroupLayout.RadPropertyChanged += new Telerik.WinControls.RadPropertyChangedEventHandler(GroupLayout_RadPropertyChanged);
this.PanoramaElement.TileLayout.RadPropertyChanged += new Telerik.WinControls.RadPropertyChangedEventHandler(GroupLayout_RadPropertyChanged);
this.ScrollBarAlignment = HorizontalScrollAlignment.Bottom;
}
void GroupLayout_RadPropertyChanged(object sender, Telerik.WinControls.RadPropertyChangedEventArgs e)
{
if (e.Property == RadElement.BoundsProperty && sender == this.GetCurrentLayout())
{
UpdateVScroll();
}
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
UpdateVScroll();
}
private void UpdateVScroll()
{
vScroll.Maximum = this.GetCurrentLayout().Size.Height;
vScroll.LargeChange = Math.Max(0, (int)(this.Size.Height - this.PanoramaElement.ScrollBar.Size.Height));
if (vScroll.LargeChange >= vScroll.Maximum)
{
vScroll.Visibility = ElementVisibility.Hidden;
}
else
{
vScroll.Visibility = ElementVisibility.Visible;
}
if (this.PanoramaElement.ScrollBar.Visibility == ElementVisibility.Visible)
{
vScroll.Margin = new System.Windows.Forms.Padding(0, 0, 0, this.PanoramaElement.ScrollBar.Size.Height);
}
else
{
vScroll.Margin = new System.Windows.Forms.Padding(0);
}
}
void vScroll_ValueChanged(object sender, EventArgs e)
{
this.GetCurrentLayout().PositionOffset = new System.Drawing.SizeF(0, -this.vScroll.Value);
}
private LayoutPanel GetCurrentLayout()
{
if (this.ShowGroups)
{
return this.PanoramaElement.GroupLayout;
}
return this.PanoramaElement.TileLayout;
}
public override string ThemeClassName
{
get
{
return typeof(RadPanorama).FullName;
}
set
{
base.ThemeClassName = value;
}
}
}
The user should be able to select tiles with the mouse or with the arrow keys.
IMPROVE. RadPanorama - increase the RowsCount when the form's size is increased, so the user will be able to drag items there.