public SlideCreationTool(SlideGraphController AController, Diagram ADiagram)
            : base(AController, ToolDescriptor.SlideCreationTool)
        {
            this.SingleActionTool = false;

            m_controller = AController;
            m_diagram = ADiagram;
        }
 public void Dispose()
 {
     PresentationController.Instance.OnSlideLockChanged -= new SlideLockChanged(Instance_OnSlideLockChanged);
     PresentationController.Instance.OnUnlockAllSlides -= new Changed(Instance_OnUnlockAllSlides);
     PresentationController.Instance.OnGetAllSlides -= new GetSlides(Instance_OnGetAllSlides);
     PresentationController.Instance.OnGetCreatedSlides -= new GetSlides(Instance_OnGetCreatedSlides);
     PresentationController.Instance.OnSavePresentation -= new SavePresentation(Instance_OnSavePresentation);
     PresentationController.Instance.OnPresentationChangedExternally -= new PresentationDataChanged(Instance_OnPresentationChangedExternally);
     PresentationController.Instance.OnSlideChangedExternally -= new SlideChanged(Instance_OnSlideChangedExternally);
     PresentationController.Instance.OnPresentationLockChanged -= new PresentationLockChanged(Instance_OnPresentationLockChanged);
     DesignerClient.Instance.PresentationNotifier.OnLabelDeleted -= PresentationNotifier_OnLabelDeleted;
     ShowClient.Instance.OnGoToSlide -= Instance_OnSlideChangedExternally;
     _instance = null;
 }
 /// <summary>
 /// Фабрика Контроллера
 /// </summary>
 /// <returns>Созданный контроллер</returns>
 public static SlideGraphController CreateSlideGraphController()
 {
     SlideGraphController result = new SlideGraphController();
     return result;
 }
 /// <summary>
 /// Конструктор по умолчанию
 /// </summary>
 public SlideGraphController()
 {
     _instance = this;
     identity = Thread.CurrentPrincipal as UserIdentity;
 }
        public SlidePropertiesForm(SlideGraphController AController)
        {
            InitializeComponent();
            m_controller = AController;
            CurrentSlideView = m_controller.SelectedSlideView;

            m_controller.OnLabelListChanhed += m_controller_OnLabelListChanhed;

            bool slideLocked = (CurrentSlideView.IsLocked && PresentationController.Instance.CanUnlockSlide(CurrentSlideView.Slide)) || DesignerClient.Instance.IsStandAlone;
            bool presentationLocked = PresentationController.Instance.PresentationLocked || DesignerClient.Instance.IsStandAlone;

            this.Text = CurrentSlideView.SlideName + " - Свойства";

            Slide = CurrentSlideView.Slide.Copy();
            Slide.SaveSlideLevelChanges(CurrentSlideView.Slide);

            if (CurrentSlideView.GetOutgoingLinks().Count > 0)
            {
                OldDefLink = NewDefLink = CurrentSlideView.GetOutgoingLinks().Where(l => l.IsDefault).First();
            }

            #region Add bindings
            nameText.DataBindings.Add("Text", Slide, "Name");
            nameText.ReadOnly = !slideLocked;
            labelsList.Enabled = slideLocked;
            labelsList.DataBindings.DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
            RefreshLabels();

            hourSpanEdit.DataBindings.Add("Value", Slide.Time, "Hours");
            hourSpanEdit.Enabled = slideLocked;
            minuteSpanEdit.DataBindings.Add("Value", Slide.Time, "Minutes");
            minuteSpanEdit.Enabled = slideLocked;
            secondSpanEdit.DataBindings.Add("Value", Slide.Time, "Seconds");
            secondSpanEdit.Enabled = slideLocked;
            authorText.DataBindings.Add("Text", Slide, "Author");
            modifiedLabel.DataBindings.Add("Text", Slide, "Modified");
            commentText.DataBindings.Add("Text", Slide, "Comment");
            commentText.ReadOnly = !slideLocked;
            #endregion

            if (nextSlideList.Enabled = NewDefLink != null && presentationLocked)
            {
                List<SlideView> list = CurrentSlideView.GetOutgoingSlideViews();
                list.ForEach(s => nextSlideList.Items.Add(s));
                nextSlideList.SelectedIndex = list.IndexOf(NewDefLink.ToSlideView);
            }

            bool flag = m_controller.StartSlide == CurrentSlideView;
            isStartupCheckBox.Checked = flag;

            bool flag2 = !flag & CurrentSlideView.GetIncomingSlideLinks().Count == 0;

            isStartupCheckBox.Enabled = flag2 & presentationLocked;
            
            bool visible =  presentationLocked | slideLocked;

            if (presentationLocked && !slideLocked)
            {
                visible = isStartupCheckBox.Enabled || nextSlideList.Items.Count > 0;
            }

            okButton.Visible = visible;

            if (!visible)
            {
                this.AcceptButton = cancelButton;
                cancelButton.Text = "OK";
            }

        }
        public void AssignController(SlideGraphController controller)
        {
            diagram.Controller = m_controller = controller;
            if (m_controller == null)
                throw new ApplicationException("Unknown type");

            //register tools for controller
            linkTool = new SlideLinkTool(m_controller);
            linkTool.OnToolDeactivate += new ToolDeactivate(linkTool_OnToolDeactivate);
            m_controller.RegisterTool(linkTool);
            Tool tmptool = m_controller.GetTool(ToolDescriptor.SelectTool);
            m_controller.UnRegisterTool(tmptool);

            selectTool = new PresentationSelectionTool(m_controller);
            selectTool.OnShowSlideContextMenu += new ShowSelectionContextMenu(selectTool_OnShowNodeContextMenu);
            selectTool.OnShowModelContextMenu += new ShowSelectionContextMenu(selectTool_OnShowModelContextMenu);
            m_controller.RegisterTool(selectTool);

            creationTool = new SlideCreationTool(m_controller, diagram);
            creationTool.ToolCursor = creationTool.ActionCursor = new Cursor(new MemoryStream(Properties.Resources.createSlide));
            creationTool.OnToolDeactivate += new ToolDeactivate(creationTool_OnToolDeactivate);
            m_controller.RegisterTool(creationTool);

            tmptool = m_controller.GetTool(ToolDescriptor.PanTool);
            m_controller.UnRegisterTool(tmptool);

            panTool = new PresentationPanTool(m_controller);
            m_controller.RegisterTool(panTool);

            panTool.OnToolDeactivate += new ToolDeactivate(panTool_OnToolDeactivate);

            zoomTool = (ZoomTool)m_controller.GetTool(ToolDescriptor.ZoomTool);

            PresentationController.Instance.OnSlideLockChanged += new SlideLockChanged(m_controller_OnSlideLockChanged);
            PresentationController.Instance.OnPresentationLockChanged += new PresentationLockChanged(m_controller_OnPresentationLockChanged);
            m_controller.OnCheckSelection += new ControllerCheckSelection(CheckSelection);
            m_controller.OnCurrentSlideChanged += new CurrentSlideChanged(m_controller_OnCurrentSlideChanged);
        }