예제 #1
0
        /// <summary>
        /// Handles the Event if a word is selected and splits it up into the separate Events for
        /// <see cref="VariableSelected"/>, <see cref="ProcedureSelected"/>, <see cref="SectionSelected"/>
        /// and <see cref="CallReferenceSelected"/>.
        /// </summary>
        private void CodeBoxOnWordSelected(object sender, WordSelectedEventArgs eventArgs)
        {
            try
            {
                Logger.Info("Selected word {0}", eventArgs.Word);

                // 1. No CobolFile? Nothing to do.
                if (CobolFile == null)
                {
                    return;
                }

                // 2. No CobolTree? Show Program infos
                if (CobolFile.CobolTree == null)
                {
                    ShowProgramInfo();
                    return;
                }

                // 3. Is the word a variable?
                if (CobolFile.Variables.ContainsKey(eventArgs.Word) && VariableSelected != null)
                {
                    VariableSelected(sender, CobolFile.Variables[eventArgs.Word]);
                    return;
                }

                // 4. Is the word a procedure?
                var procedure = CobolFile.CobolTree.GetAllProcedures().FirstOrDefault(proc => proc.Name == eventArgs.Word);
                if (procedure != null && ProcedureSelected != null)
                {
                    ProcedureSelected(sender, new Tuple <Procedure, string>(procedure, eventArgs.LookFor));
                    return;
                }

                // 5. Is it a section?
                var section = CobolFile.CobolTree.GetAllSections().FirstOrDefault(sec => sec.Name == eventArgs.Word);
                if (section != null && SectionSelected != null)
                {
                    SectionSelected(sender, section);
                    return;
                }

                // 6. Call Reference? Open file, keep Info
                var callRef = CobolFile.CobolTree.CallReferences.FirstOrDefault(call => call.ProgramName == eventArgs.Word);
                if (callRef != null && CallReferenceSelected != null)
                {
                    CallReferenceSelected(sender, callRef);
                    return;
                }

                ShowProgramInfo();
            }
            catch (Exception exception)
            {
                Logger.Error(exception, "Error trying to show selected word {0}: {1}.", eventArgs.Word, exception.Message);
            }
        }
예제 #2
0
 private void CodeBoxOnWordSelected(object sender, WordSelectedEventArgs eventArgs)
 {
     try
     {
         Logger.Info("Selected word {0}", eventArgs.Word);
         ShowWordInfo(eventArgs.Word);
     }
     catch (Exception exception)
     {
         Logger.Error(exception, "Error trying to show selected word {0}: {1}.", eventArgs.Word, exception.Message);
     }
 }