static public ComponentFabric GetInstance() { if (instance == null) { instance = new ComponentFabric(); } return(instance); }
public void UpdatePortsInComponentInstances() { /* Remove unexists port in defenition */ foreach (CompositionInstance composition in Compositions) { foreach (ComponentInstance compInstance in composition.ComponentInstances) { ComponentDefenition compDefenition = compInstance.ComponentDefenition; for (int i = compInstance.Ports.Count - 1; i >= 0; i--) { PortPainter portPainter = compInstance.Ports[i]; PortDefenition portDefenition = compDefenition.Ports.FindObject(portPainter.PortDefenitionGuid); if (portDefenition == null) { DeletePort(portPainter); } } } } /* Add new or missing ports */ foreach (CompositionInstance composition in Compositions) { foreach (ComponentInstance compInstance in composition.ComponentInstances) { ComponentDefenition compDefenition = compInstance.ComponentDefenition; foreach (PortDefenition portDef in compDefenition.Ports) { bool find = false; foreach (PortPainter portPainter in compInstance.Ports) { if (portPainter.PortDefenition.Equals(portDef)) { find = true; break; } } if (!find) { double x = compInstance.Painter.Left - PortPainter.DefaultWidth / 2.0; double y = (compInstance.Painter.Top + compInstance.Painter.Bottom) / 2; PortPainter portPainter = ComponentFabric.GetInstance().CreatePortPainter(portDef, x, y); compInstance.Ports.Add(portPainter); } } } } }