Exemple #1
0
        /// <summary>
        /// Sets the application model on the given pad.
        /// Pad refreshes its information according to the given application model.
        /// </summary>
        /// <param name='applicationViewModel'>
        /// Application model.
        /// </param>
        /// <param name='subExperiment'>
        /// Scope SubExperiment
        /// </param>
        public void SetScopeApplicationModel(ScopeNodeControl scopeNodeControl, ApplicationViewModel applicationViewModel, CompositeComponentGraph subExperiment)
        {
            // HERZUM SPRINT 1.0
            scopeNodeControlCurrent = scopeNodeControl;
            // END HERZUM SPRINT 1.0

            if (m_initialized == false || m_dockFrame.GdkWindow == null)
            {
                //GdkWindow is for each dock frame is assigned when windowShell calls ShowAll(). See DockContainer.OnRealize method
                throw new InvalidOperationException("ExperimentCanvasPad must be first initialized and dockFrame must have assigned GdkWindow before setting application model.");
            }

            m_applicationViewModel = applicationViewModel;

            // HERZUM SPRINT 1.0
            // Experiment e = new Experiment ();
            // m_applicationViewModel = ApplicationViewModel.CreateNewApplicationViewModel (applicationViewModel, e);
            // m_applicationContext = new ApplicationContext (m_applicationViewModel);
            // END HERZUM SPRINT 1.0

            if (m_applicationViewModel.Experiment == null)
            {
                m_experimentPad.Content = new WelcomePageWidget(m_applicationContext);
            }
            else
            {
                // CreateExperimentControlToolbar();


                // HERZUM SPRINT 1.0
                m_subExperiment = new CompositeComponentEditableGraph(subExperiment);
                // END HERZUM SPRINT 1.0

                // HERZUM SPRINT 1.0 PROGRESS
                m_subExperiment.OwnerNode   = subExperiment.OwnerNode;
                m_subExperiment.GraphIdPath = subExperiment.GraphIdPath;
                // END HERZUM SPRINT 1.0

                // HERZUM SPRINT 1.1 LOOP
                // ScopeMetadata scopeMetadata = scopeNodeControlCurrent.ExperimentNode.Data.Metadata as ScopeMetadata;
                ScopeBaseMetadata scopeMetadata = scopeNodeControlCurrent.ExperimentNode.Data.Metadata as ScopeBaseMetadata;
                // END HERZUM SPRINT 1.1 LOOP

                scopeMetadata.SetSubExperiment(m_subExperiment);


                m_experimentCanvasWidget = new ExperimentCanvasWidget();


                m_experimentPad.Content = m_experimentCanvasWidget;

                bool isExperimentEditable = m_applicationViewModel.Experiment is IEditableExperiment;


                m_scopeDrawer = new ExperimentDrawer(m_experimentCanvasWidget, m_applicationContext.NodeControlFactory,
                                                     m_applicationContext.NodeConnectionControlFactory);


                //m_experimentDrawer.DrawExperiment(m_applicationViewModel.Experiment, isExperimentEditable);


                m_scopeDrawer.DrawExperiment(m_subExperiment, isExperimentEditable);


                // HERZUM SPRINT 1.0
                m_subExperiment.NodeRemoved += OnNodeRemoved;
                m_subExperiment.EdgeRemoved += OnEdgeRemoved;
                //


                //m_applicationViewModel.Experiment.NodeRemoved += OnNodeRemoved;
                //m_applicationViewModel.Experiment.EdgeRemoved += OnEdgeRemoved;
                // END HERZUM SPRINT 1.0

                if (isExperimentEditable)
                {
                    //enable drop of components to canvas
                    EnableDrop();
                }
            }
        }