Exemple #1
0
		internal void removeItem(ChartObject item)
		{
			selection.RemoveObject(item);
			if (item == autoHandlesObj) autoHandlesObj = null;
			if (item == autoAnchorsObj) autoAnchorsObj = null;

			switch (item.getType())
			{
				case ItemType.Box:
					boxes.Remove((Box)item);
					break;
				case ItemType.ControlHost:
					controlHosts.Remove((ControlHost)item);
					break;
				case ItemType.Table:
					tables.Remove((Table)item);
					break;
				case ItemType.Arrow:
					arrows.Remove((Arrow)item);
					break;
			}

			removeFromZOrder(item);

			MethodCallVisitor visitor =
				new MethodCallVisitor(new VisitOperation(removeFromSelection));

			switch (item.getType())
			{
				case ItemType.ControlHost:
				{
					ControlHost host = (ControlHost)item;
					host.visitArrows(visitor);
					host.deleteArrows();
				}
					break;
				case ItemType.Box:
				{
					Box box = (Box)item;
					box.visitArrows(visitor);
					box.deleteArrows();
				}
					break;
				case ItemType.Table:
				{
					Table table = (Table)item;
					table.visitArrows(visitor);
					table.deleteArrows();
				}
					break;
				case ItemType.Arrow:
				{
					Arrow arrow = (Arrow)item;
					arrow.resetCrossings();
					arrow.getDestLink().removeArrowFromObj();
					arrow.getOrgnLink().removeArrowFromObj();
				}
					break;
			}

			item.onRemove();

			// update document size if needed
			if (autoSizeDoc != MindFusion.FlowChartX.AutoSize.None)
				sizeDocForItems();
		}