public MainFormController(ICCTrayMultiConfiguration configuration, ISynchronizeInvoke owner, MainForm mainForm)
		{
            this.mainForm = mainForm;
			this.configuration = configuration;

			serverMonitors = configuration.GetServerMonitors();
			for (int i = 0; i < serverMonitors.Length; i++)
			{
				serverMonitors[i] = new SynchronizedServerMonitor(serverMonitors[i], owner);
			}
			aggregatedServerMonitor = new AggregatingServerMonitor(serverMonitors);
			queueIconProvider = new ResourceIntegrationQueueIconProvider();

			projectMonitors = configuration.GetProjectStatusMonitors(serverMonitors);
			execRunners = new BuildTransitionExecRunner[projectMonitors.Length];
			for (int i = 0; i < projectMonitors.Length; i++)
			{
				execRunners[i] = new BuildTransitionExecRunner(projectMonitors[i], configuration.Execs);
				projectMonitors[i] = new SynchronizedProjectMonitor(projectMonitors[i], owner);
			}
			aggregatedProjectMonitor = new AggregatingProjectMonitor(projectMonitors);
			projectStateIconProvider = new ConfigurableProjectStateIconProvider(configuration.Icons);
			projectStateIconAdaptor = new ProjectStateIconAdaptor(aggregatedProjectMonitor, projectStateIconProvider);
			soundPlayer = new BuildTransitionSoundPlayer(aggregatedProjectMonitor, new AudioPlayer(), configuration.Audio);
			LampController lampController = new LampController(configuration.X10,null);
			x10Controller = new X10Controller(aggregatedProjectMonitor,new DateTimeProvider(),configuration.X10,lampController);
			
			growlController = new GrowlController(aggregatedProjectMonitor, configuration.Growl);

#if !DISABLE_COM
			IBalloonMessageProvider balloonMessageProvider = new ConfigurableBalloonMessageProvider(configuration.BalloonMessages);
			speakerForTheDead = new SpeakingProjectMonitor(aggregatedProjectMonitor, balloonMessageProvider, configuration.Speech);
#endif
		}
Exemple #2
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.DoEvents();

            try
            {
                ICruiseManagerFactory remoteCruiseManagerFactory = new RemoteCruiseManagerFactory();
                ICruiseProjectManagerFactory cruiseProjectManagerFactory = new CruiseProjectManagerFactory( remoteCruiseManagerFactory );
                CCTrayMultiConfiguration configuration = new CCTrayMultiConfiguration( cruiseProjectManagerFactory, GetSettingsFilename() );

                MainForm mainForm = new MainForm(configuration);

                Application.Run(mainForm);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to start: " + ex, AppDomain.CurrentDomain.FriendlyName);
            }
        }
        public CCProjectsViewMgr(MainForm form, ImageList large, ImageList small)
            : base()
        {
            mainForm = form;
            this.SuspendLayout();
            largeImageList = large;
            smallImageList = small;


            CCProjectsViewMgrPanel = new System.Windows.Forms.Panel();
            CCProjectsViewMgrPanel.Tag = this;
            Controls.Add(CCProjectsViewMgrPanel);
            CCProjectsViewMgrPanel.Location = new System.Drawing.Point(0, 0);
            CCProjectsViewMgrPanel.Name = "CCProjectsViewMgrPanel";
            CCProjectsViewMgrPanel.BackColor = Color.AliceBlue;

            CCProjectsViewMgrPanel.MouseDoubleClick += new MouseEventHandler(CCProjectsViewMgrPanel_MouseDoubleClick);

            CCProjectsViewMgrPanel.Dock = DockStyle.Fill;

            // project views are added to the tabcontrol so it needs to be created first

            m_tabControl = new TabControl();
            m_tabControl.SuspendLayout();
            m_tabControl.Name = "tabControl";
            m_tabControl.SelectedIndex = 0;
            m_tabControl.TabIndex = 0;
            m_tabControl.MouseUp += new MouseEventHandler(TabControl_MouseUp);
            m_tabControl.MouseClick += new MouseEventHandler(CCProjectsViewMgr_MouseClick);
            m_tabControl.AllowDrop = true;
            m_tabControl.DragEnter += new DragEventHandler(TabControl_DragEnter);
            m_tabControl.DragDrop += new DragEventHandler(TabControl_DragDrop);
            m_tabControl.DragOver += new DragEventHandler(TabControl_DragOver);
            m_tabControl.DragLeave += new EventHandler(m_tabControl_DragLeave);
            m_tabControl.Dock = DockStyle.Fill;
            m_tabControl.ImageList = smallImageList;
            CCProjectsViewMgrPanel.Controls.Add(m_tabControl);

            form.DragEnter += new DragEventHandler(form_DragEnter);

            // create the container of views
            m_projectViews = new List<CCProjectsView>();

            // the 'all' view always has all the projects the user has subscribed to
            m_all = new CCProjectsView(this, "All");
            m_all.IsUserView = false;

            AddView(m_all);


            // the 'broken' view is dynamically updated with any broken projects
            m_broken = new CCProjectsView(this, "Broken");
            m_broken.IsUserView = false;
            m_broken.IsReadOnly = false;
            m_broken.TabPage.ImageIndex = ProjectState.Broken.ImageIndex;
            m_broken.TabPage.TabIndex = 1;

            // we don't add it to make  iterating over 'real' views more easy
            AddView(m_broken);

            this.ResumeLayout(false);
            m_tabControl.ResumeLayout(false);

            form.dummyDockingPanel.Controls.Add(CCProjectsViewMgrPanel);

            #region // menus

            projectContextMenu = new System.Windows.Forms.ContextMenuStrip();

            mnuForce = new System.Windows.Forms.ToolStripMenuItem();
            mnuAbort = new System.Windows.Forms.ToolStripMenuItem();
            mnuStart = new System.Windows.Forms.ToolStripMenuItem();
            mnuStop = new System.Windows.Forms.ToolStripMenuItem();
            mnuWebPage = new System.Windows.Forms.ToolStripMenuItem();
            mnuCancelPending = new System.Windows.Forms.ToolStripMenuItem();
            mnuFixBuild = new System.Windows.Forms.ToolStripMenuItem();
            mnuCopyBuildLabel = new System.Windows.Forms.ToolStripMenuItem();
            mnuSendToNewTab = new System.Windows.Forms.ToolStripMenuItem();
            mnuCreateTabFromPattern = new System.Windows.Forms.ToolStripMenuItem();
            mnuCreateTabFromCategory = new System.Windows.Forms.ToolStripMenuItem();

            projectContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripMenuItem[] 
         {
            mnuForce,
            mnuAbort,
            mnuStart,
            mnuStop,
            mnuWebPage,
            mnuCancelPending,
            mnuFixBuild,
            mnuCopyBuildLabel,
            mnuSendToNewTab,
            mnuCreateTabFromPattern,
            mnuCreateTabFromCategory
         });

            mnuForce.Text = "&Force Build";
            mnuForce.Click += new System.EventHandler(mnuForce_Click);
            mnuAbort.Text = "&Abort Build";
            mnuAbort.Click += new System.EventHandler(mnuAbort_Click);
            mnuStart.Text = "&Start Project";
            mnuStart.Click += new System.EventHandler(mnuStart_Click);
            mnuStop.Text = "&Stop Project";
            mnuStop.Click += new System.EventHandler(mnuStop_Click);
            mnuWebPage.Text = "Display &Web Page";
            mnuWebPage.Click += new System.EventHandler(mnuWebPage_Click);
            mnuCancelPending.Text = "&Cancel Pending";
            mnuCancelPending.Click += new System.EventHandler(mnuCancelPending_Click);
            mnuFixBuild.Text = "&Volunteer to Fix Build";
            mnuFixBuild.Click += new System.EventHandler(mnuFixBuild_Click);
            mnuCopyBuildLabel.Text = "Copy Build &Label";
            mnuCopyBuildLabel.Click += new System.EventHandler(mnuCopyBuildLabel_Click);

            mnuSendToNewTab.Text = "Send to New &Tab";
            mnuSendToNewTab.Click += new EventHandler(mnuSendToNewTab_Click);

            mnuCreateTabFromPattern.Text = "New Tab from &Pattern";
            mnuCreateTabFromPattern.Click += new EventHandler(mnuCreateTabFromPattern_Click);

            mnuCreateTabFromCategory.Text = "Create tabs from category";
            mnuCreateTabFromCategory.Click += new EventHandler(mnuCreateTabFromCategory_Click);

            tabContextMenu = new System.Windows.Forms.ContextMenuStrip();
            mnuEditName = new System.Windows.Forms.ToolStripMenuItem();
            mnuDeleteTab = new System.Windows.Forms.ToolStripMenuItem();
            tabContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripMenuItem[] {
                mnuEditName,
                mnuDeleteTab, 
            });

            mnuEditName.Text = "&Rename Tab";
            mnuEditName.Click += new System.EventHandler(mnuEditName_Click);
            mnuDeleteTab.Text = "&Delete Tab";
            mnuDeleteTab.Click += new System.EventHandler(mnuDeleteTab_Click);

            #endregion

            mainForm.MainFormController.BindToViewMgr(this);

            // restore users tabs
            LoadViewConfiguration();

            // colour in the icons on each tab
            UpdateAllTabPageIcons(null);


            // set up the general edit box
            // this needs a tidy up
            m_tb = new TextBox();
            m_tb.PreviewKeyDown += new PreviewKeyDownEventHandler(tb_PreviewKeyDown);
            m_tb.LostFocus += new EventHandler(tb_LostFocus);

            int timerPeriod = mainForm.Configuration.PollPeriodSeconds * 1000;
            m_bTimerRunning = false;
            m_viewUpdate = new System.Threading.Timer(new System.Threading.TimerCallback(UpdateAllTabPageIcons), this, 0, timerPeriod);

            this.Show();
        }