public CardViewHelper(ISectorView sectorView, bool supportSelectionBox) { this.sectorView = sectorView; this.supportSelectionBox = supportSelectionBox; sectorView.CardContainer.GiveFeedback += new GiveFeedbackEventHandler(sectorView_GiveFeedback); sectorView.CardContainer.Click += new EventHandler(sectorView_Click); sectorView.CardContainer.MouseDown += new MouseEventHandler(sectorView_MouseDown); sectorView.CardContainer.MouseUp += new MouseEventHandler(sectorView_MouseUp); sectorView.CardContainer.MouseMove += new MouseEventHandler(sectorView_MouseMove); if(supportSelectionBox) { pnlSelectionBox = new TransparentLabel(); pnlSelectionBox.Visible = false; pnlSelectionBox.BorderStyle = BorderStyle.FixedSingle; sectorView.CardContainer.Controls.Add(pnlSelectionBox); } }
static bool TryGetSectorValidCardPositions(ISectorView sectorView, CardPositionOffset offset, int positionAmount, out List<CardPosition> cardPositions) { cardPositions = new List<CardPosition>(); bool valid = true; if(sectorView is StaticFreeSectorView) { Rectangle cardRect = CardMetricsService.CardRect(CardStyleBehaviorsService.BEHAVIORS_SMALL); StaticFreeSectorView staticFreeSectorView = (StaticFreeSectorView)sectorView; Point startPoint = new Point(); startPoint.X = (staticFreeSectorView.Width / 2) - (cardRect.Width / 2); startPoint.Y = (staticFreeSectorView.Height / 3) - (cardRect.Height / 2); List<PointF> normalizedPoints; valid = staticFreeSectorView.TryGetValidCardPositions(startPoint, positionAmount, new List<CardView>(), out normalizedPoints); if(valid) { for(int i = 0; i < positionAmount; i++) { int z = offset == CardPositionOffset.Top ? i : sectorView.CardViews.Count + i; cardPositions.Add(new CardPosition(normalizedPoints[i].X, normalizedPoints[i].Y, z)); } } } else { for(int i = 0; i < positionAmount; i++) cardPositions.Add(new CardPosition(0, 0, offset == CardPositionOffset.Top ? i : sectorView.CardViews.Count + i)); } return valid; }