public void GridLayouterRequestLayout() { tlog.Debug(tag, $"GridLayouterRequestLayout START"); var view = new CollectionView(new List <string>() { "123", "456", "789" }) { Header = new RecyclerViewItem(), Footer = new RecyclerViewItem(), IsGrouped = true, }; Assert.IsNotNull(view, "Should not be null"); view.GroupFooterTemplate = new DataTemplate(typeof(RecyclerViewItem)); view.GroupHeaderTemplate = new DataTemplate(typeof(RecyclerViewItem)); view.ItemTemplate = new DataTemplate(typeof(RecyclerViewItem)); var gridLayouter = new GridLayouter(); Assert.IsNotNull(gridLayouter, "Should not be null"); gridLayouter.Initialize(view); gridLayouter.RequestLayout(5.0f); gridLayouter.RequestLayout(150.0f, true); view.Dispose(); gridLayouter.Dispose(); tlog.Debug(tag, $"GridLayouterRequestLayout END (OK)"); }
public void GridLayouterNotifyItemInserted() { tlog.Debug(tag, $"GridLayouterNotifyItemInserted"); var view = new CollectionView(new List <string>() { "123", "456" }) { Header = new RecyclerViewItem(), Footer = new RecyclerViewItem(), IsGrouped = true, }; Assert.IsNotNull(view, "Should not be null"); view.GroupFooterTemplate = new DataTemplate(typeof(RecyclerViewItem)); view.GroupHeaderTemplate = new DataTemplate(typeof(RecyclerViewItem)); view.ItemTemplate = new DataTemplate(typeof(RecyclerViewItem)); var gridLayouter = new GridLayouter(); Assert.IsNotNull(gridLayouter, "Should not be null"); gridLayouter.Initialize(view); gridLayouter.RequestLayout(100.0f); var source = new CustomGroupItemSource(view) { Position = 1, }; gridLayouter.NotifyItemInserted(source, 0); source.Position = 4; gridLayouter.NotifyItemInserted(source, 0); gridLayouter.NotifyItemInserted(source, 1); var emptySource = new CustomEmptySource(); gridLayouter.NotifyItemInserted(emptySource, 1); var item = new RecyclerViewItem() { Size = new Size(200, 100), }; gridLayouter.NotifyItemSizeChanged(item); item.Dispose(); view.Dispose(); gridLayouter.Dispose(); source.Dispose(); emptySource.Dispose(); tlog.Debug(tag, $"GridLayouterNotifyItemInserted END (OK)"); }
public void GridLayouterRequestNextFocusableView() { tlog.Debug(tag, $"GridLayouterRequestNextFocusableView"); var view = new CollectionView(new List <string>() { "123", "456" }) { Header = new RecyclerViewItem(), Footer = new RecyclerViewItem(), IsGrouped = true, }; Assert.IsNotNull(view, "Should not be null"); view.GroupFooterTemplate = new DataTemplate(typeof(RecyclerViewItem)); view.GroupHeaderTemplate = new DataTemplate(typeof(RecyclerViewItem)); view.ItemTemplate = new DataTemplate(typeof(RecyclerViewItem)); var gridLayouter = new GridLayouter(); Assert.IsNotNull(gridLayouter, "Should not be null"); gridLayouter.Initialize(view); gridLayouter.RequestLayout(100.0f); var source = new CustomGroupItemSource(view) { Position = 1, }; var orientationSize = gridLayouter.CalculateLayoutOrientationSize(); Assert.AreEqual(orientationSize, 6); var scrollPosition = gridLayouter.CalculateCandidateScrollPosition(0.0f); Assert.AreEqual(scrollPosition, 0.0f); gridLayouter.NotifyItemRangeInserted(source, 0, 10); gridLayouter.RequestNextFocusableView(view, View.FocusDirection.Up, true); gridLayouter.RequestNextFocusableView(view, View.FocusDirection.Down, true); gridLayouter.RequestNextFocusableView(view, View.FocusDirection.PageUp, true); gridLayouter.RequestNextFocusableView(view, View.FocusDirection.PageDown, true); gridLayouter.RequestNextFocusableView(view, View.FocusDirection.Left, true); gridLayouter.RequestNextFocusableView(view, View.FocusDirection.Right, true); view.Dispose(); gridLayouter.Dispose(); source.Dispose(); tlog.Debug(tag, $"GridLayouterRequestNextFocusableView END (OK)"); }
public void GridLayouterGetItemSize() { tlog.Debug(tag, $"GridLayouterGetItemSize START"); var view = new CollectionView(new List <string>() { "123", "456", "789" }) { Header = new RecyclerViewItem(), Footer = new RecyclerViewItem(), IsGrouped = true, }; Assert.IsNotNull(view, "Should not be null"); view.GroupFooterTemplate = new DataTemplate(typeof(RecyclerViewItem)); view.GroupHeaderTemplate = new DataTemplate(typeof(RecyclerViewItem)); view.ItemTemplate = new DataTemplate(typeof(RecyclerViewItem)); var gridLayouter = new GridLayouter(); Assert.IsNotNull(gridLayouter, "Should not be null"); gridLayouter.Initialize(view); try { gridLayouter.GetItemSize(1); } catch (Exception e) { tlog.Debug(tag, e.Message.ToString()); Assert.Fail("Caught Exception : Failed!"); } view.Dispose(); gridLayouter.Dispose(); tlog.Debug(tag, $"GridLayouterGetItemSize END (OK)"); }
private void PrepareLayouter() { switch ((string)currentPanel.Tag) { case "Expansion": // Distribution if (layouter == null || !(layouter is ExpansionLayouter)) { layouter = new ExpansionLayouter(Project); } ExpansionLayouter dl = (ExpansionLayouter)layouter; dl.HorizontalCompression = horizontalCompressionTrackBar.Value; dl.VerticalCompression = verticalCompressionTrackBar.Value; break; case "Alignment": if (layouter == null || !(layouter is GridLayouter)) { layouter = new GridLayouter(Project); } GridLayouter gl = (GridLayouter)layouter; gl.CoarsenessX = columnDistanceTrackBar.Value; gl.CoarsenessY = rowDistanceTrackBar.Value; /* gl.ColumnDistance = columnDistanceTrackBar.Value; * gl.RowDistance = rowDistanceTrackBar.Value; */ break; case "Clusters": if (layouter == null || !(layouter is RepulsionLayouter)) { layouter = new RepulsionLayouter(Project); } RepulsionLayouter rl = (RepulsionLayouter)layouter; // The default distance between connected elements should be 100 display units. // The default distance between unconnected elements should be 300 display units. rl.Friction = 0; // 300; rl.Repulsion = repulsionStrengthTrackBar.Value; rl.RepulsionRange = repulsionRangeTrackBar.Value; rl.SpringRate = attractionStrengthTrackBar.Value; // Two unconnected elements at the same position should move to their default distance // within two steps rl.Mass = 50; break; case "Flow": if (layouter == null || !(layouter is FlowLayouter)) { layouter = new FlowLayouter(Project); } FlowLayouter fl = (FlowLayouter)layouter; if (bottomUpRadioButton.Checked) { fl.Direction = FlowLayouter.FlowDirection.BottomUp; } else if (leftToRightRadioButton.Checked) { fl.Direction = FlowLayouter.FlowDirection.LeftToRight; } else if (topDownRadioButton.Checked) { fl.Direction = FlowLayouter.FlowDirection.TopDown; } else if (rightToLeftRadioButton.Checked) { fl.Direction = FlowLayouter.FlowDirection.RightToLeft; } fl.LayerDistance = flowLayerDistanceTrackBar.Value; fl.RowDistance = flowRowDistanceTrackBar.Value; break; default: Debug.Assert(false); break; } }
private void PrepareLayouter() { switch ((string) currentPanel.Tag) { case "Expansion": // Distribution if (layouter == null || !(layouter is ExpansionLayouter)) layouter = new ExpansionLayouter(Project); ExpansionLayouter dl = (ExpansionLayouter) layouter; dl.HorizontalCompression = horizontalCompressionTrackBar.Value; dl.VerticalCompression = verticalCompressionTrackBar.Value; break; case "Alignment": if (layouter == null || !(layouter is GridLayouter)) layouter = new GridLayouter(Project); GridLayouter gl = (GridLayouter) layouter; gl.CoarsenessX = columnDistanceTrackBar.Value; gl.CoarsenessY = rowDistanceTrackBar.Value; /* gl.ColumnDistance = columnDistanceTrackBar.Value; gl.RowDistance = rowDistanceTrackBar.Value; */ break; case "Clusters": if (layouter == null || !(layouter is RepulsionLayouter)) layouter = new RepulsionLayouter(Project); RepulsionLayouter rl = (RepulsionLayouter) layouter; // The default distance between connected elements should be 100 display units. // The default distance between unconnected elements should be 300 display units. rl.Friction = 0; // 300; rl.Repulsion = repulsionStrengthTrackBar.Value; rl.RepulsionRange = repulsionRangeTrackBar.Value; rl.SpringRate = attractionStrengthTrackBar.Value; // Two unconnected elements at the same position should move to their default distance // within two steps rl.Mass = 50; break; case "Flow": if (layouter == null || !(layouter is FlowLayouter)) layouter = new FlowLayouter(Project); FlowLayouter fl = (FlowLayouter) layouter; if (bottomUpRadioButton.Checked) fl.Direction = FlowLayouter.FlowDirection.BottomUp; else if (leftToRightRadioButton.Checked) fl.Direction = FlowLayouter.FlowDirection.LeftToRight; else if (topDownRadioButton.Checked) fl.Direction = FlowLayouter.FlowDirection.TopDown; else if (rightToLeftRadioButton.Checked) fl.Direction = FlowLayouter.FlowDirection.RightToLeft; fl.LayerDistance = flowLayerDistanceTrackBar.Value; fl.RowDistance = flowRowDistanceTrackBar.Value; break; default: Debug.Assert(false); break; } }