Exemplo n.º 1
0
        /// <summary>
        /// Changes selected issue marker in given document's tracking
        /// </summary>
        /// <param name="document">A Revit document</param>
        /// <param name="controlIndex">Id of the clicked In-Canvas control</param>
        public static void SelectMarker(Document document, int controlIndex)
        {
            TemporaryGraphicsManager tempGraphicsManager = TemporaryGraphicsManager.GetTemporaryGraphicsManager(document);
            IssueMarkerTracking      issueMarkerTracking = IssueMarkerTrackingManager.GetInstance().GetTracking(document);
            ResourceProvider         provider            = ResourceProvider.GetInstance();

            // Check if the new selection is valid
            IssueMarker newSelectedMarker = issueMarkerTracking.GetMarkerByIndex(controlIndex);

            if (newSelectedMarker == null)
            {
                return;
            }

            // clear previous selection
            IssueMarker selectedMarker = issueMarkerTracking.GetMarkerByIndex(issueMarkerTracking.GetSelected());

            if (selectedMarker != null)
            {
                selectedMarker.InCanvasControlData.ImagePath = provider.IssueImage;

                // This is how to set updated data to a control
                tempGraphicsManager.UpdateControl(selectedMarker.ControlIndex, selectedMarker.InCanvasControlData);

                issueMarkerTracking.SetSelected(-1);
            }

            if (newSelectedMarker != selectedMarker)
            {
                newSelectedMarker.InCanvasControlData.ImagePath = provider.SelectedIssueImage;

                // This is how to set updated data to a control
                tempGraphicsManager.UpdateControl(newSelectedMarker.ControlIndex, newSelectedMarker.InCanvasControlData);

                issueMarkerTracking.SetSelected(controlIndex);
            }
        }