public IExplorerObject CreateInstanceByFullName(string FullName, ISerializableExplorerObjectCache cache) { if (cache.Contains(FullName)) { return(cache[FullName]); } FullName = FullName.Replace("/", @"\"); int lastIndex = FullName.LastIndexOf(@"\"); if (lastIndex == -1) { return(null); } string dsName = FullName.Substring(0, lastIndex); string fcName = FullName.Substring(lastIndex + 1, FullName.Length - lastIndex - 1); AccessFDBDatasetExplorerObject dsObject = new AccessFDBDatasetExplorerObject(); dsObject = dsObject.CreateInstanceByFullName(dsName, cache) as AccessFDBDatasetExplorerObject; if (dsObject == null || dsObject.ChildObjects == null) { return(null); } foreach (IExplorerObject exObject in dsObject.ChildObjects) { if (exObject.Name == fcName) { cache.Append(exObject); return(exObject); } } return(null); }
public AccessFDBFeatureClassExplorerObject(AccessFDBDatasetExplorerObject parent, string filename, string dsname, IDatasetElement element) : base(parent, typeof(FeatureClass)) { if (element == null) { return; } _parent = parent; _filename = filename; _dsname = dsname; _fcname = element.Title; string typePrefix = String.Empty; bool isLinked = false; if (element.Class is LinkedFeatureClass) { typePrefix = "Linked "; isLinked = true; } if (element.Class is IRasterCatalogClass) { _icon = new AccessFDBRasterIcon(); _type = typePrefix + "Raster Catalog Layer"; _rc = (IRasterClass)element.Class; } else if (element.Class is IRasterClass) { _icon = new AccessFDBRasterIcon(); _type = typePrefix + "Raster Layer"; _rc = (IRasterClass)element.Class; } else if (element.Class is IFeatureClass) { _fc = (IFeatureClass)element.Class; switch (_fc.GeometryType) { case geometryType.Envelope: case geometryType.Polygon: if (isLinked) { _icon = new AccessFDBLinkedPolygonIcon(); } else { _icon = new AccessFDBPolygonIcon(); } _type = typePrefix + "Polygon Featureclass"; break; case geometryType.Multipoint: case geometryType.Point: if (isLinked) { _icon = new AccessFDBLinkedPointIcon(); } else { _icon = new AccessFDBPointIcon(); } _type = typePrefix + "Point Featureclass"; break; case geometryType.Polyline: if (isLinked) { _icon = new AccessFDBLinkedLineIcon(); } else { _icon = new AccessFDBLineIcon(); } _type = typePrefix + "Polyline Featureclass"; break; } } _contextItems = new ToolStripItem[1]; _contextItems[0] = new ToolStripMenuItem("Tasks"); //_contextItems = new ToolStripItem[1]; //_contextItems[0] = new ToolStripMenuItem("Rebuild Spatial Index..."); //_contextItems[0].Click += new EventHandler(RebuildSpatialIndex_Click); ToolStripMenuItem item = new ToolStripMenuItem("Shrink Spatial Index..."); item.Click += new EventHandler(ShrinkSpatialIndex_Click); ((ToolStripMenuItem)_contextItems[0]).DropDownItems.Add(item); item = new ToolStripMenuItem("Spatial Index Definition..."); item.Click += new EventHandler(SpatialIndexDef_Click); ((ToolStripMenuItem)_contextItems[0]).DropDownItems.Add(item); item = new ToolStripMenuItem("Repair Spatial Index..."); item.Click += new EventHandler(RepairSpatialIndex_Click); ((ToolStripMenuItem)_contextItems[0]).DropDownItems.Add(item); ((ToolStripMenuItem)_contextItems[0]).DropDownItems.Add(new ToolStripSeparator()); item = new ToolStripMenuItem("Truncate"); item.Click += new EventHandler(Truncate_Click); ((ToolStripMenuItem)_contextItems[0]).DropDownItems.Add(item); }