/// <summary> /// To make shapes collection panel invisible when item is getting unselection /// </summary> /// <param name="param"> /// </param> private void OnItemUnselectCommandExecute(object param) { if ((param as DiagramEventArgs).Item is NodeVM) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; sd.PanelVisibility = Visibility.Collapsed; } }
/// <summary> /// To make shapes collection panel visible when item is getting selection /// </summary> /// <param name="param"> /// The param. /// </param> private void OnItemSelectionCommandExecute(object param) { int val = ((this.SelectedItems as FlowChartSelectorVm).Nodes as ObservableCollection <object>).Count(); if (val == 1) { if ((param as DiagramEventArgs).Item is NodeVM) { this.FindQuickCommandVisibility(param as DiagramEventArgs); } } else if (val > 1) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; sd.LeftButtonVisibility = Visibility.Hidden; sd.RightButtonVisibility = Visibility.Hidden; sd.TopButtonVisibility = Visibility.Hidden; sd.BottomButtonVisibility = Visibility.Hidden; } }
/// <summary> /// The find quick command visibilty method handles the visibility of the quickcommand. /// </summary> /// <param name="param"> /// The param. /// </param> private void FindQuickCommandVisibility(DiagramEventArgs param) { // right side intersecting bounds Rect nodeBounds = ((param.Item as NodeVM).Info as INodeInfo).Bounds; double right_x = nodeBounds.Right + 50; double right_y = (param.Item as NodeVM).OffsetY - 25; Rect rightintersectbounds = new Rect(right_x, right_y, 100, 50); // left side intersecting bounds double left_x = nodeBounds.Left - 150; double left_y = (param.Item as NodeVM).OffsetY - 25; Rect leftIntersectBounds = new Rect(left_x, left_y, 100, 50); // bottom side intersecting bounds double bottom_x = (param.Item as NodeVM).OffsetX - 50; double bottom_y = nodeBounds.Bottom + 50; Rect bottomIntersectbounds = new Rect(bottom_x, bottom_y, 100, 50); // top side intersecting bounds double top_x = (param.Item as NodeVM).OffsetX - 50; double top_y = nodeBounds.Top - 100; Rect topIntersectbounds = new Rect(top_x, top_y, 100, 50); ObservableCollection <NodeVM> nodesCollection = this.Nodes as ObservableCollection <NodeVM>; double Nodeangle = (param.Item as NodeVM).RotateAngle; if (nodesCollection != null) { if (Nodeangle >= 315 && Nodeangle <= 360 || Nodeangle >= 0 && Nodeangle <= 45) { // To hide or show right side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(rightintersectbounds)) { sd.RightButtonVisibility = Visibility.Hidden; break; } sd.RightButtonVisibility = Visibility.Visible; } ; // To hide or show left side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(leftIntersectBounds)) { sd.LeftButtonVisibility = Visibility.Hidden; break; } sd.LeftButtonVisibility = Visibility.Visible; } ; // To hide or show top side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(topIntersectbounds)) { sd.TopButtonVisibility = Visibility.Hidden; break; } sd.TopButtonVisibility = Visibility.Visible; } ; // To hide or show bottom side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(bottomIntersectbounds)) { sd.BottomButtonVisibility = Visibility.Hidden; break; } sd.BottomButtonVisibility = Visibility.Visible; } ; } else if (Nodeangle >= 45 && Nodeangle <= 135) { // To hide or show right side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(rightintersectbounds)) { sd.TopButtonVisibility = Visibility.Hidden; break; } sd.TopButtonVisibility = Visibility.Visible; } ; // To hide or show left side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(leftIntersectBounds)) { sd.BottomButtonVisibility = Visibility.Hidden; break; } sd.BottomButtonVisibility = Visibility.Visible; } ; // To hide or show top side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(topIntersectbounds)) { sd.LeftButtonVisibility = Visibility.Hidden; break; } sd.LeftButtonVisibility = Visibility.Visible; } ; // To hide or show bottom side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(bottomIntersectbounds)) { sd.RightButtonVisibility = Visibility.Hidden; break; } sd.RightButtonVisibility = Visibility.Visible; } ; } else if (Nodeangle >= 135 && Nodeangle <= 225) { // To hide or show right side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(rightintersectbounds)) { sd.LeftButtonVisibility = Visibility.Hidden; break; } sd.LeftButtonVisibility = Visibility.Visible; } ; // To hide or show left side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(leftIntersectBounds)) { sd.RightButtonVisibility = Visibility.Hidden; break; } sd.RightButtonVisibility = Visibility.Visible; } ; // To hide or show top side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(topIntersectbounds)) { sd.BottomButtonVisibility = Visibility.Hidden; break; } sd.BottomButtonVisibility = Visibility.Visible; } ; // To hide or show bottom side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(bottomIntersectbounds)) { sd.TopButtonVisibility = Visibility.Hidden; break; } sd.TopButtonVisibility = Visibility.Visible; } ; } else if (Nodeangle >= 225 && Nodeangle <= 325) { // To hide or show right side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(rightintersectbounds)) { sd.BottomButtonVisibility = Visibility.Hidden; break; } sd.BottomButtonVisibility = Visibility.Visible; } ; // To hide or show left side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(leftIntersectBounds)) { sd.TopButtonVisibility = Visibility.Hidden; break; } sd.TopButtonVisibility = Visibility.Visible; } ; // To hide or show top side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(topIntersectbounds)) { sd.RightButtonVisibility = Visibility.Hidden; break; } sd.RightButtonVisibility = Visibility.Visible; } ; // To hide or show bottom side button foreach (NodeVM node in nodesCollection) { FlowChartSelectorVm sd = this.SelectedItems as FlowChartSelectorVm; if ((node.Info as INodeInfo).Bounds.IntersectsWith(bottomIntersectbounds)) { sd.LeftButtonVisibility = Visibility.Hidden; break; } sd.LeftButtonVisibility = Visibility.Visible; } ; } } }