private void Model_ElementRemoved(object sender, ElementsEventArgs e) { // Check Terrain if (this._terrain == null) { return; } // Get Element Element element = e.Value; if (element == null) { return; } EsriLine <TerrainDataSource> line = element as EsriLine <TerrainDataSource>; if (line == null) { return; } // Get Rule TerrainDataSource terrainDataSource = line.Parent; // DiagrammerEnvironment diagrammerEnvironment = DiagrammerEnvironment.Default; SchemaModel schemaModel = diagrammerEnvironment.SchemaModel; Terrain terrain = schemaModel.FindParent(terrainDataSource); if (terrain != null) { terrain.TerrainDataSources.Remove(terrainDataSource); } }
private void Model_ElementRemoved(object sender, ElementsEventArgs e) { // Check Relationship if (this._geometricNetwork == null) { return; } // Get Element Element element = e.Value; if (element == null) { return; } EsriLine <GeometricNetworkControllerMembership> line = element as EsriLine <GeometricNetworkControllerMembership>; if (line == null) { return; } // Get Rule GeometricNetworkControllerMembership controller = line.Parent; // DiagrammerEnvironment diagrammerEnvironment = DiagrammerEnvironment.Default; SchemaModel schemaModel = diagrammerEnvironment.SchemaModel; ObjectClass objectClass = schemaModel.FindParent(controller); if (objectClass != null) { objectClass.ControllerMemberships.Remove(controller); } }
public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { if (context == null) { return(null); } if (context.Instance == null) { return(null); } // FeatureClass::ShapeFieldName, AreaFieldName, LengthFieldName, ShapeFieldName // GeometricNetworkControllerMembership::EnabledFieldName, AncillaryRoleFieldName // IndexField::Name // ObjectClass::OIDFieldName, GlobalIDFieldName, RasterFieldName, SubtypeFieldName, OIDFieldName, GlobalIDFieldName // RelationshipClass::OriginPrimary, OriginForeign, DestinationPrimary, DestinationForeign // SubtypeField::FieldName // NetWeightAssociation::FieldName // TerrainDataSource::HeightField, TagValueField // Create List List <string> list = new List <string>(); DiagrammerEnvironment diagrammerEnvironment = DiagrammerEnvironment.Default; SchemaModel schemaModel = diagrammerEnvironment.SchemaModel; if (context.PropertyDescriptor.ComponentType == typeof(IndexField)) { IndexField indexField = (IndexField)context.Instance; ObjectClass objectClass = (ObjectClass)indexField.Table; foreach (Field field in objectClass.GetFields()) { list.Add(field.Name); } } else if (context.PropertyDescriptor.ComponentType == typeof(GeometricNetworkControllerMembership)) { GeometricNetworkControllerMembership geometricNetworkControllerMembership = (GeometricNetworkControllerMembership)context.Instance; ObjectClass objectClass = schemaModel.FindParent(geometricNetworkControllerMembership); foreach (Field field in objectClass.GetFields()) { list.Add(field.Name); } } else if (context.PropertyDescriptor.ComponentType == typeof(SubtypeField)) { SubtypeField subtypeField = (SubtypeField)context.Instance; Subtype subtype = (Subtype)subtypeField.Table; ObjectClass objectClass = subtype.GetParent(); foreach (Field field in objectClass.GetFields()) { list.Add(field.Name); } } else if (context.PropertyDescriptor.ComponentType == typeof(ObjectClass)) { ObjectClass objectClass = (ObjectClass)context.Instance; foreach (Field field in objectClass.GetFields()) { list.Add(field.Name); } } else if (context.PropertyDescriptor.ComponentType == typeof(RelationshipClass)) { RelationshipClass relationshipClass = (RelationshipClass)context.Instance; if (relationshipClass.IsAttributed) { switch (context.PropertyDescriptor.Name) { case "OIDFieldName": case "GlobalIDFieldName": case "RasterFieldName": case "SubtypeFieldName": foreach (Field field in relationshipClass.GetFields()) { list.Add(field.Name); } break; case "OriginPrimary": ObjectClass objectClass1 = schemaModel.FindObjectClass(relationshipClass.OriginClassName); foreach (Field field in objectClass1.GetFields()) { list.Add(field.Name); } break; case "OriginForeign": case "DestinationForeign": foreach (Field field in relationshipClass.GetFields()) { list.Add(field.Name); } break; case "DestinationPrimary": ObjectClass objectClass2 = schemaModel.FindObjectClass(relationshipClass.DestinationClassName); foreach (Field field in objectClass2.GetFields()) { list.Add(field.Name); } break; } } else { switch (context.PropertyDescriptor.Name) { case "OIDFieldName": case "GlobalIDFieldName": case "RasterFieldName": case "SubtypeFieldName": foreach (Field field in relationshipClass.GetFields()) { list.Add(field.Name); } break; case "OriginPrimary": ObjectClass objectClass1 = schemaModel.FindObjectClass(relationshipClass.OriginClassName); foreach (Field field in objectClass1.GetFields()) { list.Add(field.Name); } break; case "OriginForeign": ObjectClass objectClass2 = schemaModel.FindObjectClass(relationshipClass.DestinationClassName); foreach (Field field in objectClass2.GetFields()) { list.Add(field.Name); } break; case "DestinationPrimary": case "DestinationForeign": break; } } } else if ( context.PropertyDescriptor.ComponentType == typeof(FeatureClass) || context.PropertyDescriptor.ComponentType == typeof(RasterCatalog)) { FeatureClass featureClass = (FeatureClass)context.Instance; foreach (Field field in featureClass.GetFields()) { list.Add(field.Name); } } else if (context.PropertyDescriptor.ComponentType == typeof(NetWeightAssociation)) { NetWeightAssociation netWeightAssociation = (NetWeightAssociation)context.Instance; if (netWeightAssociation != null) { if (!string.IsNullOrEmpty(netWeightAssociation.TableName)) { ObjectClass objectClass = schemaModel.FindObjectClass(netWeightAssociation.TableName); if (objectClass != null) { foreach (Field field in objectClass.GetFields()) { list.Add(field.Name); } } } } } else if (context.PropertyDescriptor.ComponentType == typeof(TerrainDataSource)) { TerrainDataSource terrainDataSource = (TerrainDataSource)context.Instance; if (terrainDataSource != null) { if (!string.IsNullOrEmpty(terrainDataSource.FeatureClassName)) { ObjectClass objectClass = schemaModel.FindObjectClass(terrainDataSource.FeatureClassName); if (objectClass != null) { foreach (Field field in objectClass.GetFields()) { list.Add(field.Name); } } } } } // Sort field name list and insert "None" item list.Sort(); list.Insert(0, Resources.TEXT_NONE_BR); // Return sort field name list StandardValuesCollection svc = new StandardValuesCollection(list); return(svc); }
private void Model_ElementInvalid(object sender, ElementEventArgs e) { // Exit if GeometricNetwork Does not Exist if (this._geometricNetwork == null) { return; } // Get Element Element element = e.Value; if (element == null) { return; } EsriLine <GeometricNetworkControllerMembership> line = element as EsriLine <GeometricNetworkControllerMembership>; if (line == null) { return; } // Get Controller GeometricNetworkControllerMembership controller = line.Parent; // Suspend Rule Events controller.Suspend(); // Get Start and End Elements Element elementStart = line.Start.Shape; Element elementEnd = line.End.Shape; // Update GeometricNetwork Name Property if (elementStart == null) { controller.GeometricNetworkName = string.Empty; } else if (elementStart is EsriShape <GeometricNetwork> ) { EsriShape <GeometricNetwork> shape = (EsriShape <GeometricNetwork>)elementStart; GeometricNetwork geometricNetwork = shape.Parent; controller.GeometricNetworkName = geometricNetwork.Name; } // DiagrammerEnvironment diagrammerEnvironment = DiagrammerEnvironment.Default; SchemaModel schemaModel = diagrammerEnvironment.SchemaModel; ObjectClass objectClass = schemaModel.FindParent(controller); if (objectClass != null) { objectClass.ControllerMemberships.Remove(controller); } if (elementEnd == null) { controller.AncillaryRoleFieldName = string.Empty; controller.EnabledFieldName = string.Empty; } else if (elementEnd is EsriShape <FeatureClass> ) { EsriShape <FeatureClass> es = (EsriShape <FeatureClass>)elementEnd; FeatureClass featureClass = es.Parent; featureClass.ControllerMemberships.Add(controller); } // Resume Controller Events controller.Resume(); }
public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { if (context == null) { return(null); } if (context.Instance == null) { return(null); } // RelationshipClass: OriginClassName, DestinationClassName // EdgeConnectivityRule: DefaultJunctionID, FromClassID, ToClassID // JunctionSubtype: ClassID // RelationshipRule: OriginClass, DestinationClass // JunctionConnectivityRule: EdgeClassID, JunctionClassID // TopologyRule: OriginClassId, DestinationClassId // NetWeightAssociation: TableName // TerrainDataSource: FeatureClassName // Get Model DiagrammerEnvironment diagrammerEnvironment = DiagrammerEnvironment.Default; if (diagrammerEnvironment == null) { return(null); } SchemaModel schemaModel = diagrammerEnvironment.SchemaModel; if (schemaModel == null) { return(null); } // Get ObjectClasses List <ObjectClass> objectClasses = schemaModel.GetObjectClasses(); // Create List List <string> list = new List <string>(); if (context.PropertyDescriptor.ComponentType == typeof(RelationshipClass)) { switch (context.PropertyDescriptor.Name) { case "OriginClassName": case "DestinationClassName": foreach (ObjectClass objectClass in objectClasses) { if (objectClass.GetType() == typeof(ObjectClass) || objectClass.GetType() == typeof(FeatureClass) || objectClass.GetType() == typeof(RasterCatalog)) { list.Add(objectClass.Name); } } break; } } else if (context.PropertyDescriptor.ComponentType == typeof(EdgeConnectivityRule)) { switch (context.PropertyDescriptor.Name) { case "DefaultJunctionID": foreach (ObjectClass objectClass in objectClasses) { FeatureClass featureClass = objectClass as FeatureClass; if (featureClass == null) { continue; } switch (featureClass.FeatureType) // (objectClass.CLSID) { { case esriFeatureType.esriFTSimpleJunction: // EsriRegistry.CLASS_SIMPLEJUNCTION: list.Add(objectClass.Name); break; } } break; case "FromClassID": case "ToClassID": foreach (ObjectClass objectClass in objectClasses) { FeatureClass featureClass = objectClass as FeatureClass; if (featureClass == null) { continue; } switch (featureClass.FeatureType) // (objectClass.CLSID) { { case esriFeatureType.esriFTComplexEdge: // EsriRegistry.CLASS_COMPLEXEDGE: case esriFeatureType.esriFTSimpleEdge: // EsriRegistry.CLASS_SIMPLEEDGE: list.Add(objectClass.Name); break; } } break; } } else if (context.PropertyDescriptor.ComponentType == typeof(JunctionSubtype)) { switch (context.PropertyDescriptor.Name) { case "ClassID": foreach (ObjectClass objectClass in objectClasses) { FeatureClass featureClass = objectClass as FeatureClass; if (featureClass == null) { continue; } switch (featureClass.FeatureType) // (objectClass.CLSID) { { case esriFeatureType.esriFTSimpleJunction: // EsriRegistry.CLASS_SIMPLEJUNCTION: list.Add(objectClass.Name); break; } } break; } } else if (context.PropertyDescriptor.ComponentType == typeof(RelationshipRule)) { switch (context.PropertyDescriptor.Name) { case "OriginClass": case "DestinationClass": foreach (ObjectClass objectClass in objectClasses) { if (objectClass.GetType() == typeof(ObjectClass) || objectClass.GetType() == typeof(FeatureClass)) { list.Add(objectClass.Name); } } break; } } else if (context.PropertyDescriptor.ComponentType == typeof(JunctionConnectivityRule)) { switch (context.PropertyDescriptor.Name) { case "EdgeClassID": foreach (ObjectClass objectClass in objectClasses) { FeatureClass featureClass = objectClass as FeatureClass; if (featureClass == null) { continue; } switch (featureClass.FeatureType) // (objectClass.CLSID) { { case esriFeatureType.esriFTComplexEdge: // EsriRegistry.CLASS_COMPLEXEDGE: case esriFeatureType.esriFTSimpleEdge: // EsriRegistry.CLASS_SIMPLEEDGE: list.Add(objectClass.Name); break; } } break; case "JunctionClassID": foreach (ObjectClass objectClass in objectClasses) { FeatureClass featureClass = objectClass as FeatureClass; if (featureClass == null) { continue; } switch (featureClass.FeatureType) // (objectClass.CLSID) { { case esriFeatureType.esriFTSimpleJunction: // EsriRegistry.CLASS_SIMPLEJUNCTION: list.Add(objectClass.Name); break; } } break; } } else if (context.PropertyDescriptor.ComponentType == typeof(TopologyRule)) { switch (context.PropertyDescriptor.Name) { case "OriginClassId": case "DestinationClassId": foreach (ObjectClass objectClass in objectClasses) { if (objectClass.GetType() == typeof(FeatureClass)) { list.Add(objectClass.Name); } } break; } } else if (context.PropertyDescriptor.ComponentType == typeof(NetWeightAssociation)) { switch (context.PropertyDescriptor.Name) { case "TableName": foreach (ObjectClass objectClass in objectClasses) { FeatureClass featureClass = objectClass as FeatureClass; if (featureClass == null) { continue; } switch (featureClass.FeatureType) // (objectClass.CLSID) { { case esriFeatureType.esriFTComplexEdge: // EsriRegistry.CLASS_COMPLEXEDGE: case esriFeatureType.esriFTSimpleEdge: // EsriRegistry.CLASS_SIMPLEEDGE: case esriFeatureType.esriFTSimpleJunction: // EsriRegistry.CLASS_SIMPLEJUNCTION: list.Add(objectClass.Name); break; } } break; } } else if (context.PropertyDescriptor.ComponentType == typeof(TerrainDataSource)) { switch (context.PropertyDescriptor.Name) { case "FeatureClassName": TerrainDataSource terrainDataSource = (TerrainDataSource)context.Instance; SchemaModel model = DiagrammerEnvironment.Default.SchemaModel; if (model == null) { break; } Terrain terrain = model.FindParent(terrainDataSource); FeatureDataset featureDataset = terrain.GetParent() as FeatureDataset; if (featureDataset == null) { break; } foreach (Dataset dataset in featureDataset.GetChildren()) { if (dataset.DatasetType == esriDatasetType.esriDTFeatureClass) { list.Add(dataset.Name); } } break; } } // Sort List list.Sort(); list.Insert(0, Resources.TEXT_NONE_BR); // Return List StandardValuesCollection svc = new StandardValuesCollection(list); return(svc); }