protected override SimpleShapeType GetFeatureSimpleShapeTypeCore(FeatureLayer featureLayer)
        {
            SimpleShapeType       result = SimpleShapeType.Unknown;
            ShapeFileFeatureLayer shapeFileFeatureLayer = featureLayer as ShapeFileFeatureLayer;
            bool isDataSourceAvailable = DataSourceResolveTool.IsDataSourceAvailable(featureLayer);

            if (shapeFileFeatureLayer != null && isDataSourceAvailable)
            {
                ShapeFileType shapeFileType = ShapeFileType.Null;
                shapeFileFeatureLayer.SafeProcess(()
                                                  => shapeFileType = shapeFileFeatureLayer.GetShapeFileType());

                switch (shapeFileType)
                {
                case ShapeFileType.Point:
                case ShapeFileType.PointZ:
                case ShapeFileType.Multipoint:
                case ShapeFileType.PointM:
                case ShapeFileType.MultipointM:
                    result = SimpleShapeType.Point;
                    break;

                case ShapeFileType.Polyline:
                case ShapeFileType.PolylineZ:
                case ShapeFileType.PolylineM:
                case ShapeFileType.Multipatch:
                    result = SimpleShapeType.Line;
                    break;

                case ShapeFileType.Polygon:
                case ShapeFileType.PolygonM:
                case ShapeFileType.PolygonZ:
                    result = SimpleShapeType.Area;
                    break;
                }
            }

            return(result);
        }
 protected override bool IsDataSourceAvailableCore(Layer layer)
 {
     return(DataSourceResolveTool.IsDataSourceAvailable(layer));
 }