private static AnchorStyles GetRelativeSide(ViewSplit viewSplit, int index, int side) { var item = viewSplit[index]; var th = item as ViewHost; bool isDw = false; if(th != null) { isDw = th.IsDocumentWell; } else { var ts = item as ViewSplit; if(ts != null) { isDw = ts.ContainsDocumentWell; } } if(isDw) { switch(viewSplit.Orientation) { case Orientation.Horizontal: return side == -1 ? AnchorStyles.Right : AnchorStyles.Left; case Orientation.Vertical: return side == -1 ? AnchorStyles.Bottom : AnchorStyles.Top; default: throw new ApplicationException(); } } return AnchorStyles.None; }
private static AnchorStyles GetRelativeSide(ViewSplit viewSplit, Control control) { var index = viewSplit.IndexOf(control); for(int i = 0; i < index; ++i) { var anchor = GetRelativeSide(viewSplit, i, -1); if(anchor != AnchorStyles.None) return anchor; } for(int i = index + 1; i < viewSplit.Count; ++i) { var anchor = GetRelativeSide(viewSplit, i, 1); if(anchor != AnchorStyles.None) return anchor; } var parent = viewSplit.Parent as ViewSplit; if(parent != null) { return GetRelativeSide(parent, viewSplit); } return AnchorStyles.None; }
public SplitEntry(ViewSplit split) : this() { Verify.Argument.IsNotNull(split, "split"); _orientation = split.Orientation; foreach(var control in split) { _cells.Add(ToLayout(control)); } foreach(var splitter in split.Positions) { _splitters.Add(splitter); } }