forked from nicogis/RemoveClassExtension
/
removeAllExt.cs
103 lines (84 loc) · 3.94 KB
/
removeAllExt.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Catalog;
using ESRI.ArcGIS.CatalogUI;
using ESRI.ArcGIS.Geodatabase;
using StudioAT.ArcGIS.ArcCatalog.AddIn.RemoveClassExtension.Generic;
using System;
using System.Windows.Forms;
namespace StudioAT.ArcGIS.ArcCatalog.AddIn.RemoveClassExtension
{
public class removeAllExt : ESRI.ArcGIS.Desktop.AddIns.Button
{
IGxApplication pGxApp = null;
IGxContentsView contentsView = null;
public removeAllExt()
{
this.pGxApp = ArcCatalog.Application as IGxApplication;
this.contentsView = this.pGxApp as IGxContentsView;
}
protected override void OnClick()
{
try
{
if (this.pGxApp.Selection.Count != 1)
{
return;
}
IGxObject pGxObject = this.pGxApp.SelectedObject;
if (!(pGxObject is IGxDataset))
{
return;
}
IGxDataset pGxDataset = pGxObject as IGxDataset;
if (pGxDataset == null)
{
return;
}
if (((pGxObject as IGxDataset).Type) != esriDatasetType.esriDTFeatureDataset)
{
MessageBox.Show("Select a Feature Dataset!", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
IFeatureDataset fDataset = pGxDataset.Dataset as IFeatureDataset;
IWorkspace2 workspace = fDataset.Workspace as IWorkspace2;
IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
DialogResult dialogResult =
MessageBox.Show($@"Remove custom extension for all Feature Classes in {fDataset.Name}", "Attention", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dialogResult == DialogResult.Yes)
{
IEnumDataset enumDataset = fDataset.Subsets;
IDataset dataset = null;
IObjectClassDescription ocDescriptionAnnotation = new AnnotationFeatureClassDescriptionClass();
IObjectClassDescription ocDescriptionDimension = new DimensionClassDescriptionClass();
while ((dataset = enumDataset.Next()) != null)
{
if (dataset is IClass)
{
IClass pClass = dataset as IClass;
if (pClass.EXTCLSID != null)
{
if ((pClass.EXTCLSID.Value.ToString().ToLower() != ocDescriptionAnnotation.ClassExtensionCLSID.Value.ToString().ToLower())
&& (pClass.EXTCLSID.SubType != ocDescriptionAnnotation.ClassExtensionCLSID.SubType)
&& (pClass.EXTCLSID.Value.ToString().ToLower() != ocDescriptionDimension.ClassExtensionCLSID.Value.ToString().ToLower())
&& (pClass.EXTCLSID.SubType != ocDescriptionDimension.ClassExtensionCLSID.SubType))
{
clsGenericStudioAT.RemoveClsExt(pClass);
}
}
}
}
MessageBox.Show("All Extension removed!", "Ok", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception errore)
{
MessageBox.Show(errore.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
throw;
}
}
protected override void OnUpdate()
{
this.Enabled = true;
}
}
}