コード例 #1
0
        /// <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);
        }
コード例 #2
0
 /// <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);
     }
 }
コード例 #3
0
 /// <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);
     }
 }
コード例 #4
0
 /// <summary>
 /// Shows the FeatureWindow modally, without an owner window.
 /// </summary>
 /// <returns></returns>
 public static DialogResult ShowFeatureWindow(object sender)
 {
     return(FeatureEngine.ShowFeatureWindow(null, sender));
 }