/// <summary> /// Shows the FeatureWindow modally, using the specified window as the owner. /// </summary> /// <param name="owner">The window that owns the FeatureWindow</param> /// <returns></returns> public static DialogResult ShowFeatureWindow(IWin32Window owner, object sender) { DialogResult result = DialogResult.Cancel; // get the executing window manager WindowManager windowManager = WindowManager.GetExecutingInstance(); // create the features window FeatureWindow window = new FeatureWindow(); // ask the window manager if we can show the window if (windowManager.CanShow(window, new object[] {})) { // ask the window manager to track the window windowManager.BeginTrackingLifetime(window, SnapIns.SnapInHostingEngine.WindowKeys.FeaturesWindowKey); // build the list of features to display FeatureCollectionEventArgs cea = new FeatureCollectionEventArgs(); FeatureEngine.OnBuildingFeatureList(sender, cea); // select the features into the feature window window.SelectedFeatures = cea.Features; // show the window modally result = (owner == null ? window.ShowDialog() : window.ShowDialog(owner)); } // if the result is ok, then something may need to be dealt with if (result == DialogResult.OK) { // grab the checked features FeatureCollection features = window.CheckedFeatures; // iterate over each feature foreach (Feature feature in features) { // see if anyone wants to cancel the action on the feature FeatureCancelEventArgs fcea = new FeatureCancelEventArgs(feature, false); FeatureEngine.OnBeforeActionTakenForFeature(sender, fcea); if (!fcea.Cancel) { // take the action on the feature FeatureEventArgs fea = new FeatureEventArgs(feature); FeatureEngine.OnTakeActionForFeature(sender, fea); // notify others that an action has been taken on a feature FeatureEngine.OnAfterActionTakenForFeature(sender, fea); } } } return(result); }
/// <summary> /// Raises the AfterActionTakenForFeature event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected static void OnAfterActionTakenForFeature(object sender, FeatureEventArgs e) { try { if (FeatureEngine.AfterActionTakenForFeature != null) { FeatureEngine.AfterActionTakenForFeature(sender, e); } } catch (System.Exception systemException) { System.Diagnostics.Trace.WriteLine(systemException); } }
/// <summary> /// Raises the BuildingFeatureList event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected static void OnBuildingFeatureList(object sender, FeatureCollectionEventArgs e) { try { if (FeatureEngine.BuildingFeatureList != null) { FeatureEngine.BuildingFeatureList(sender, e); } } catch (System.Exception systemException) { System.Diagnostics.Trace.WriteLine(systemException); } }
/// <summary> /// Shows the FeatureWindow modally, without an owner window. /// </summary> /// <returns></returns> public static DialogResult ShowFeatureWindow(object sender) { return(FeatureEngine.ShowFeatureWindow(null, sender)); }