Exemple #1
0
        // Receives only events in EventMask
        public void HandleEvent(object sender, NotifyEvent e)
        {
            TextEvent te = e as TextEvent;

            switch (e.Type)
            {
            // replace @MACRO type stuff with things we know about
            case EventType.ProcessArgs:
                if (Project != null)
                {
                    // steal macro names and values from the very useful
                    // BuildEvent macros, except instead of $(Var) we expect @VAR
                    string[]       globalCP = Settings.GlobalClasspaths.Split(';');
                    BuildEventVars vars     = new BuildEventVars(Project, globalCP);

                    foreach (BuildEventInfo info in vars.GetVars())
                    {
                        te.Text = te.Text.Replace("@" + info.Name.ToUpper(), info.Value);
                    }
                }
                break;

            case EventType.FileOpening:
                // if this is an .fdp file, we can handle it ourselves
                if (Path.GetExtension(te.Text).ToLower() == ".fdp")
                {
                    te.Handled = true;
                    OpenProjectSilent(te.Text);
                    menus.RecentComboBox.Add(Project);
                }
                break;

            case EventType.FileOpen:

                if (fileActions.DocumentSeekRequest > 0)
                {
                    // we just created a new class, put the cursor between the brackets.
                    MainForm.CurSciControl.GotoPos(fileActions.DocumentSeekRequest);
                    fileActions.DocumentSeekRequest = 0;
                }
                // add some support for additional known xml files (like asml)
                if (MainForm.CurSciControl.ConfigurationLanguage == "text" &&
                    FileHelper.IsXml(MainForm.CurFile))
                {
                    MainForm.CallCommand("ChangeSyntax", "xml");
                }

                OpenNextFile();                         // it's safe to open any other files on the queue
                break;

            case EventType.ProcessStart:
                buildActions.NotifyBuildStarted();
                break;

            case EventType.ProcessEnd:
                string result = (e as TextEvent).Text;
                buildActions.NotifyBuildEnded(result);
                break;

            case EventType.Command:
                if (te.Text == COMMAND_SENDPROJECTINFO)
                {
                    BroadcastProjectInfo();
                    e.Handled = true;
                }
                else if (te.Text == COMMAND_BUILDPROJECT)
                {
                    if (Project != null)
                    {
                        buildActions.Build(Project, false, pluginUI.IsTraceDisabled);
                        e.Handled = true;
                    }
                }
                else if (te.Text == COMMAND_HOTBUILD)
                {
                    if (Project != null && Project.OutputPath.Length > 0)
                    {
                        buildActions.Build(Project, true, pluginUI.IsTraceDisabled);
                        e.Handled = true;
                    }
                }
                break;

            case EventType.SettingUpdate:
                if (Project == null)
                {
                    return;
                }

                if (showProjectClasspaths != Settings.ShowProjectClasspaths ||
                    showGlobalClasspaths != Settings.ShowGlobalClasspaths)
                {
                    showProjectClasspaths = Settings.ShowProjectClasspaths;
                    showGlobalClasspaths  = Settings.ShowGlobalClasspaths;
                    pluginUI.Tree.RebuildTree(true);
                }
                break;

            // PHILIPPE: handle copy/paste shortcuts
            case EventType.Shortcut:
                KeyEvent ke = e as KeyEvent;
                if (pluginUI.Tree.Focused && !pluginUI.IsEditingLabel && ke != null)
                {
                    switch (ke.Value)
                    {
                    case Keys.Control | Keys.C:
                        if (pluginUI.Menu.Copy.IsEnabled)
                        {
                            TreeCopyItems(null, null);
                        }
                        ke.Handled = true;
                        break;

                    case Keys.Control | Keys.X:
                        if (pluginUI.Menu.Cut.IsEnabled)
                        {
                            TreeCutItems(null, null);
                        }
                        ke.Handled = true;
                        break;

                    case Keys.Control | Keys.V:
                        if (pluginUI.Menu.Paste.IsEnabled)
                        {
                            TreePasteItems(null, null);
                        }
                        ke.Handled = true;
                        break;

                    case Keys.Delete:
                        if (pluginUI.Menu.Delete.IsEnabled)
                        {
                            TreeDeleteItems(null, null);
                        }
                        ke.Handled = true;
                        break;

                    case Keys.Enter:

                        break;
                    }
                }
                break;
            }
        }