Beispiel #1
0
 private void SavePluginSettings()
 {
     if (this.selectedPlugin != null)
     {
         this.selectedPlugin.HideConfigForm();
     }
     foreach (IContextMenuEntry entry in PluginRegistry.GetInstance().RegisteredContextMenuPlugins)
     {
         if (entry is ILogExpertPluginConfigurator)
         {
             (entry as ILogExpertPluginConfigurator).SaveConfig(ConfigManager.ConfigDir);
         }
     }
     foreach (IKeywordAction entry in PluginRegistry.GetInstance().RegisteredKeywordActions)
     {
         if (entry is ILogExpertPluginConfigurator)
         {
             (entry as ILogExpertPluginConfigurator).SaveConfig(ConfigManager.ConfigDir);
         }
     }
     foreach (IFileSystemPlugin entry in PluginRegistry.GetInstance().RegisteredFileSystemPlugins)
     {
         if (entry is ILogExpertPluginConfigurator)
         {
             (entry as ILogExpertPluginConfigurator).SaveConfig(ConfigManager.ConfigDir);
         }
     }
 }
        private void FillPluginList()
        {
            this.pluginListBox.Items.Clear();
            foreach (IContextMenuEntry entry in PluginRegistry.GetInstance().RegisteredContextMenuPlugins)
            {
                this.pluginListBox.Items.Add(entry);
                if (entry is ILogExpertPluginConfigurator)
                {
                    (entry as ILogExpertPluginConfigurator).StartConfig();
                }
            }
            foreach (IKeywordAction entry in PluginRegistry.GetInstance().RegisteredKeywordActions)
            {
                this.pluginListBox.Items.Add(entry);
                if (entry is ILogExpertPluginConfigurator)
                {
                    (entry as ILogExpertPluginConfigurator).StartConfig();
                }
            }
            foreach (IFileSystemPlugin entry in PluginRegistry.GetInstance().RegisteredFileSystemPlugins)
            {
                this.pluginListBox.Items.Add(entry);
                if (entry is ILogExpertPluginConfigurator)
                {
                    (entry as ILogExpertPluginConfigurator).StartConfig();
                }
            }

            this.configPluginButton.Enabled = false;
        }
Beispiel #3
0
        private bool FileExists(string filePath)
        {
            IFileSystemPlugin fs   = PluginRegistry.GetInstance().FindFileSystemForUri(filePath);
            ILogFileInfo      info = fs.GetLogfileInfo(filePath);

            return(info.FileExists);
        }
        /// <summary>
        /// Checks if the file name is a settings file. If so, the contained logfile name
        /// is returned. If not, the given file name is returned unchanged.
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        private string FindFilenameForSettings(string fileName)
        {
            if (fileName.EndsWith(".lxp"))
            {
                PersistenceData persistenceData = Persister.LoadOptionsOnly(fileName);
                if (persistenceData == null)
                {
                    return(fileName);
                }

                if (!string.IsNullOrEmpty(persistenceData.fileName))
                {
                    IFileSystemPlugin fs = PluginRegistry.GetInstance().FindFileSystemForUri(persistenceData.fileName);
                    if (fs != null && !fs.GetType().Equals(typeof(LocalFileSystem)))
                    {
                        return(persistenceData.fileName);
                    }

                    // On relative paths the URI check (and therefore the file system plugin check) will fail.
                    // So fs == null and fs == LocalFileSystem are handled here like normal files.
                    if (Path.IsPathRooted(persistenceData.fileName))
                    {
                        return(persistenceData.fileName);
                    }

                    // handle relative paths in .lxp files
                    string dir = Path.GetDirectoryName(fileName);
                    return(Path.Combine(dir, persistenceData.fileName));
                }
            }

            return(fileName);
        }
Beispiel #5
0
        public void Instantiate_AnyFile_NotCrash(string fileName)
        {
            PluginRegistry.GetInstance().RegisteredColumnizers.Add(new Log4jXmlColumnizer());

            LogTabWindow logTabWindow = new LogTabWindow(null, 0, false);
            LogWindow    logWindow    =
                new LogWindow(logTabWindow, fileName, false, false);

            Assert.True(true);
        }
Beispiel #6
0
        public void DecideColumnizerByName_WhenReaderIsNotReady_ReturnCorrectColumnizer(
            string fileName, Type columnizerType)
        {
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);

            // TODO: When DI container is ready, we can mock this set up.
            PluginRegistry.GetInstance().RegisteredColumnizers.Add(new JsonCompactColumnizer());
            var result = ColumnizerPicker.DecideColumnizerByName(fileName,
                                                                 PluginRegistry.GetInstance().RegisteredColumnizers);

            Assert.AreEqual(result.GetType(), columnizerType);
        }
Beispiel #7
0
        private void FillColumnizerList()
        {
            columnizerDataGridView.Rows.Clear();

            DataGridViewComboBoxColumn
                comboColumn = (DataGridViewComboBoxColumn)columnizerDataGridView.Columns[1];

            comboColumn.Items.Clear();

            DataGridViewTextBoxColumn textColumn = (DataGridViewTextBoxColumn)columnizerDataGridView.Columns[0];

            IList <ILogLineColumnizer> columnizers = PluginRegistry.GetInstance().RegisteredColumnizers;

            foreach (ILogLineColumnizer columnizer in columnizers)
            {
                int index = comboColumn.Items.Add(columnizer.GetName());
            }
            //comboColumn.DisplayMember = "Name";
            //comboColumn.ValueMember = "Columnizer";

            foreach (ColumnizerMaskEntry maskEntry in Preferences.columnizerMaskList)
            {
                DataGridViewRow row = new DataGridViewRow();
                row.Cells.Add(new DataGridViewTextBoxCell());
                DataGridViewComboBoxCell cell = new DataGridViewComboBoxCell();

                foreach (ILogLineColumnizer logColumnizer in columnizers)
                {
                    int index = cell.Items.Add(logColumnizer.GetName());
                }

                row.Cells.Add(cell);
                row.Cells[0].Value = maskEntry.mask;
                ILogLineColumnizer columnizer = Util.FindColumnizerByName(maskEntry.columnizerName,
                                                                          PluginRegistry.GetInstance().RegisteredColumnizers);
                if (columnizer == null)
                {
                    columnizer = PluginRegistry.GetInstance().RegisteredColumnizers[0];
                }

                row.Cells[1].Value = columnizer.GetName();
                columnizerDataGridView.Rows.Add(row);
            }

            int count = columnizerDataGridView.RowCount;

            if (count > 0 && !columnizerDataGridView.Rows[count - 1].IsNewRow)
            {
                DataGridViewComboBoxCell comboCell =
                    (DataGridViewComboBoxCell)columnizerDataGridView.Rows[count - 1].Cells[1];
                comboCell.Value = comboCell.Items[0];
            }
        }
        /// <summary>
        /// This method will search all registered columnizer and return one according to the priority that returned
        /// by the each columnizer.
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="logFileReader"></param>
        /// <returns></returns>
        public static ILogLineColumnizer FindColumnizer(string fileName, IAutoLogLineColumnizerCallback logFileReader)
        {
            if (string.IsNullOrEmpty(fileName))
            {
                return(new DefaultLogfileColumnizer());
            }

            List <ILogLine> loglines = new List <ILogLine>();

            if (logFileReader != null)
            {
                loglines = new List <ILogLine>()
                {
                    // Sampling a few lines to select the correct columnizer
                    logFileReader.GetLogLine(0),
                    logFileReader.GetLogLine(1),
                    logFileReader.GetLogLine(2),
                    logFileReader.GetLogLine(3),
                    logFileReader.GetLogLine(4),
                    logFileReader.GetLogLine(5),
                    logFileReader.GetLogLine(25),
                    logFileReader.GetLogLine(100),
                    logFileReader.GetLogLine(200),
                    logFileReader.GetLogLine(400)
                };
            }

            var registeredColumnizer = PluginRegistry.GetInstance().RegisteredColumnizers;

            List <Tuple <Priority, ILogLineColumnizer> > priorityListOfColumnizers = new List <Tuple <Priority, ILogLineColumnizer> >();

            foreach (ILogLineColumnizer logLineColumnizer in registeredColumnizer)
            {
                Priority priority = default(Priority);
                if (logLineColumnizer is IColumnizerPriority columnizerPriority)
                {
                    priority = columnizerPriority.GetPriority(fileName, loglines);
                }

                priorityListOfColumnizers.Add(new Tuple <Priority, ILogLineColumnizer>(priority, logLineColumnizer));
            }

            ILogLineColumnizer lineColumnizer = priorityListOfColumnizers.OrderByDescending(a => a.Item1).Select(a => a.Item2).First();

            return(lineColumnizer);
        }
Beispiel #9
0
        public void FindReplacementForAutoColumnizer_ValidTextFile_ReturnCorrectColumnizer(
            string fileName, Type columnizerType)
        {
            string        path   = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
            LogfileReader reader = new LogfileReader(path, new EncodingOptions(), true, 40, 50, new MultiFileOptions());

            reader.ReadFiles();

            Mock <ILogLineColumnizer> autoColumnizer = new Mock <ILogLineColumnizer>();

            autoColumnizer.Setup(a => a.GetName()).Returns("Auto Columnizer");

            // TODO: When DI container is ready, we can mock this set up.
            PluginRegistry.GetInstance().RegisteredColumnizers.Add(new JsonCompactColumnizer());
            var result = ColumnizerPicker.FindReplacementForAutoColumnizer(fileName, reader, autoColumnizer.Object);

            Assert.AreEqual(result.GetType(), columnizerType);
        }
Beispiel #10
0
        public ILogLineColumnizer GetColumnizerHistoryEntry(string fileName)
        {
            ColumnizerHistoryEntry entry = FindColumnizerHistoryEntry(fileName);

            if (entry != null)
            {
                foreach (ILogLineColumnizer columnizer in PluginRegistry.GetInstance().RegisteredColumnizers)
                {
                    if (columnizer.GetName().Equals(entry.ColumnizerName))
                    {
                        return(columnizer);
                    }
                }

                ConfigManager.Settings.columnizerHistoryList.Remove(entry); // no valid name -> remove entry
            }

            return(null);
        }
        private void FillColumnizerForToolsList(ComboBox comboBox, string columnizerName)
        {
            int selIndex = 0;

            comboBox.Items.Clear();
            IList <ILogLineColumnizer> columnizers = PluginRegistry.GetInstance().RegisteredColumnizers;

            foreach (ILogLineColumnizer columnizer in columnizers)
            {
                int index = comboBox.Items.Add(columnizer.GetName());
                if (columnizer.GetName().Equals(columnizerName))
                {
                    selIndex = index;
                }
            }
            //ILogLineColumnizer columnizer = Util.FindColumnizerByName(columnizerName, this.logTabWin.RegisteredColumnizers);
            //if (columnizer == null)
            //  columnizer = this.logTabWin.RegisteredColumnizers[0];
            comboBox.SelectedIndex = selIndex;
        }
Beispiel #12
0
        private void SavePluginSettings()
        {
            _selectedPlugin?.HideConfigForm();

            foreach (IContextMenuEntry entry in PluginRegistry.GetInstance().RegisteredContextMenuPlugins)
            {
                if (entry is ILogExpertPluginConfigurator configurator)
                {
                    configurator.SaveConfig(ConfigManager.ConfigDir);
                }
            }

            foreach (IKeywordAction entry in PluginRegistry.GetInstance().RegisteredKeywordActions)
            {
                if (entry is ILogExpertPluginConfigurator configurator)
                {
                    configurator.SaveConfig(ConfigManager.ConfigDir);
                }
            }
        }
Beispiel #13
0
        private void ShowHighlightSettingsDialog()
        {
            HighlightDialog dlg = new HighlightDialog();

            dlg.KeywordActionList    = PluginRegistry.GetInstance().RegisteredKeywordActions;
            dlg.Owner                = this;
            dlg.TopMost              = TopMost;
            dlg.HighlightGroupList   = HilightGroupList;
            dlg.PreSelectedGroupName = groupsComboBoxHighlightGroups.Text;

            DialogResult res = dlg.ShowDialog();

            if (res == DialogResult.OK)
            {
                HilightGroupList = dlg.HighlightGroupList;
                FillHighlightComboBox();
                ConfigManager.Settings.hilightGroupList = HilightGroupList;
                ConfigManager.Save(SettingsFlags.HighlightSettings);
                OnHighlightSettingsChanged();
            }
        }
Beispiel #14
0
        private void StartTool(string cmd, string args, bool sysoutPipe, string columnizerName, string workingDir)
        {
            if (string.IsNullOrEmpty(cmd))
            {
                return;
            }

            Process          process   = new Process();
            ProcessStartInfo startInfo = new ProcessStartInfo(cmd, args);

            if (!Util.IsNull(workingDir))
            {
                startInfo.WorkingDirectory = workingDir;
            }

            process.StartInfo           = startInfo;
            process.EnableRaisingEvents = true;

            if (sysoutPipe)
            {
                ILogLineColumnizer columnizer = ColumnizerPicker.DecideColumnizerByName(columnizerName,
                                                                                        PluginRegistry.GetInstance().RegisteredColumnizers);

                _logger.Info("Starting external tool with sysout redirection: {0} {1}", cmd, args);
                startInfo.UseShellExecute        = false;
                startInfo.RedirectStandardOutput = true;
                //process.OutputDataReceived += pipe.DataReceivedEventHandler;
                try
                {
                    process.Start();
                }
                catch (Win32Exception e)
                {
                    _logger.Error(e);
                    MessageBox.Show(e.Message);
                    return;
                }

                SysoutPipe          pipe   = new SysoutPipe(process.StandardOutput);
                LogWindow.LogWindow logWin = AddTempFileTab(pipe.FileName,
                                                            CurrentLogWindow.IsTempFile
                        ? CurrentLogWindow.TempTitleName
                        : Util.GetNameFromPath(CurrentLogWindow.FileName) + "->E");
                logWin.ForceColumnizer(columnizer);
                process.Exited += pipe.ProcessExitedEventHandler;
                //process.BeginOutputReadLine();
            }
            else
            {
                _logger.Info("Starting external tool: {0} {1}", cmd, args);
                try
                {
                    startInfo.UseShellExecute = false;
                    process.Start();
                }
                catch (Exception e)
                {
                    _logger.Error(e);
                    MessageBox.Show(e.Message);
                }
            }
        }
Beispiel #15
0
        public ILogLineColumnizer FindColumnizerByFileMask(string fileName)
        {
            foreach (ColumnizerMaskEntry entry in ConfigManager.Settings.preferences.columnizerMaskList)
            {
                if (entry.mask != null)
                {
                    try
                    {
                        if (Regex.IsMatch(fileName, entry.mask))
                        {
                            ILogLineColumnizer columnizer = ColumnizerPicker.FindColumnizerByName(entry.columnizerName, PluginRegistry.GetInstance().RegisteredColumnizers);
                            return(columnizer);
                        }
                    }
                    catch (ArgumentException e)
                    {
                        _logger.Error(e, "RegEx-error while finding columnizer: ");
                        // occurs on invalid regex patterns
                    }
                }
            }

            return(null);
        }
        private void OnSelectFilterToolStripMenuItemClick(object sender, EventArgs e)
        {
            if (CurrentLogWindow == null)
            {
                return;
            }

            CurrentLogWindow.ColumnizerCallbackObject.LineNum = CurrentLogWindow.GetCurrentLineNum();
            FilterSelectorForm form = new FilterSelectorForm(PluginRegistry.GetInstance().RegisteredColumnizers, CurrentLogWindow.CurrentColumnizer, CurrentLogWindow.ColumnizerCallbackObject);

            form.Owner   = this;
            form.TopMost = TopMost;
            DialogResult res = form.ShowDialog();

            if (res == DialogResult.OK)
            {
                if (form.ApplyToAll)
                {
                    lock (_logWindowList)
                    {
                        foreach (LogWindow.LogWindow logWindow in _logWindowList)
                        {
                            if (logWindow.CurrentColumnizer.GetType() != form.SelectedColumnizer.GetType())
                            {
                                //logWindow.SetColumnizer(form.SelectedColumnizer);
                                SetColumnizerFx fx = logWindow.ForceColumnizer;
                                logWindow.Invoke(fx, form.SelectedColumnizer);
                                SetColumnizerHistoryEntry(logWindow.FileName, form.SelectedColumnizer);
                            }
                            else
                            {
                                if (form.IsConfigPressed)
                                {
                                    logWindow.ColumnizerConfigChanged();
                                }
                            }
                        }
                    }
                }
                else
                {
                    if (CurrentLogWindow.CurrentColumnizer.GetType() != form.SelectedColumnizer.GetType())
                    {
                        SetColumnizerFx fx = CurrentLogWindow.ForceColumnizer;
                        CurrentLogWindow.Invoke(fx, form.SelectedColumnizer);
                        SetColumnizerHistoryEntry(CurrentLogWindow.FileName, form.SelectedColumnizer);
                    }

                    if (form.IsConfigPressed)
                    {
                        lock (_logWindowList)
                        {
                            foreach (LogWindow.LogWindow logWindow in _logWindowList)
                            {
                                if (logWindow.CurrentColumnizer.GetType() == form.SelectedColumnizer.GetType())
                                {
                                    logWindow.ColumnizerConfigChanged();
                                }
                            }
                        }
                    }
                }
            }
        }
Beispiel #17
0
 public IList <ILogLineColumnizer> GetRegisteredColumnizers()
 {
     return(PluginRegistry.GetInstance().RegisteredColumnizers);
 }
Beispiel #18
0
        public LogWindow(LogTabWindow.LogTabWindow parent, string fileName, bool isTempFile, bool forcePersistenceLoading)
        {
            SuspendLayout();

            InitializeComponent();

            columnNamesLabel.Text = ""; // no filtering on columns by default

            _parentLogTabWin = parent;
            IsTempFile       = isTempFile;
            //Thread.CurrentThread.Name = "LogWindowThread";
            ColumnizerCallbackObject = new ColumnizerCallback(this);

            FileName = fileName;
            ForcePersistenceLoading = forcePersistenceLoading;

            dataGridView.CellValueNeeded += OnDataGridViewCellValueNeeded;
            dataGridView.CellPainting    += dataGridView_CellPainting;

            filterGridView.CellValueNeeded += OnFilterGridViewCellValueNeeded;
            filterGridView.CellPainting    += OnFilterGridViewCellPainting;

            Closing  += OnLogWindowClosing;
            Disposed += OnLogWindowDisposed;
            Load     += OnLogWindowLoad;

            _timeSpreadCalc = new TimeSpreadCalculator(this);
            timeSpreadingControl.TimeSpreadCalc        = _timeSpreadCalc;
            timeSpreadingControl.LineSelected         += OnTimeSpreadingControlLineSelected;
            tableLayoutPanel1.ColumnStyles[1].SizeType = SizeType.Absolute;
            tableLayoutPanel1.ColumnStyles[1].Width    = 20;
            tableLayoutPanel1.ColumnStyles[0].SizeType = SizeType.Percent;
            tableLayoutPanel1.ColumnStyles[0].Width    = 100;

            _parentLogTabWin.HighlightSettingsChanged += OnParentHighlightSettingsChanged;
            SetColumnizer(PluginRegistry.GetInstance().RegisteredColumnizers[0]);

            _patternArgs.maxMisses      = 5;
            _patternArgs.minWeight      = 1;
            _patternArgs.maxDiffInBlock = 5;
            _patternArgs.fuzzy          = 5;

            //InitPatternWindow();

            //this.toolwinTabControl.TabPages.Add(this.patternWindow);
            //this.toolwinTabControl.TabPages.Add(this.bookmarkWindow);

            _filterParams = new FilterParams();
            foreach (string item in ConfigManager.Settings.filterHistoryList)
            {
                filterComboBox.Items.Add(item);
            }

            filterComboBox.DropDownHeight = filterComboBox.ItemHeight * ConfigManager.Settings.preferences.maximumFilterEntriesDisplayed;
            AutoResizeFilterBox();

            filterRegexCheckBox.Checked         = _filterParams.isRegex;
            filterCaseSensitiveCheckBox.Checked = _filterParams.isCaseSensitive;
            filterTailCheckBox.Checked          = _filterParams.isFilterTail;

            splitContainerLogWindow.Panel2Collapsed       = true;
            advancedFilterSplitContainer.SplitterDistance = FILTER_ADVANCED_SPLITTER_DISTANCE;

            _timeShiftSyncThread = new Thread(SyncTimestampDisplayWorker);
            _timeShiftSyncThread.IsBackground = true;
            _timeShiftSyncThread.Start();

            _logEventHandlerThread = new Thread(LogEventWorker);
            _logEventHandlerThread.IsBackground = true;
            _logEventHandlerThread.Start();

            //this.filterUpdateThread = new Thread(new ThreadStart(this.FilterUpdateWorker));
            //this.filterUpdateThread.Start();

            _advancedButtonImage     = advancedButton.Image;
            _searchButtonImage       = filterSearchButton.Image;
            filterSearchButton.Image = null;

            dataGridView.EditModeMenuStrip        = editModeContextMenuStrip;
            markEditModeToolStripMenuItem.Enabled = true;

            _panelOpenButtonImage  = Properties.Resources.PanelOpen;
            _panelCloseButtonImage = Properties.Resources.PanelClose;

            Settings settings = ConfigManager.Settings;

            if (settings.appBounds != null && settings.appBounds.Right > 0)
            {
                Bounds = settings.appBounds;
            }

            _waitingForClose     = false;
            dataGridView.Enabled = false;
            dataGridView.ColumnDividerDoubleClick += OnDataGridViewColumnDividerDoubleClick;
            ShowAdvancedFilterPanel(false);
            filterKnobBackSpread.MinValue      = 0;
            filterKnobBackSpread.MaxValue      = SPREAD_MAX;
            filterKnobBackSpread.ValueChanged += OnFilterKnobControlValueChanged;
            filterKnobForeSpread.MinValue      = 0;
            filterKnobForeSpread.MaxValue      = SPREAD_MAX;
            filterKnobForeSpread.ValueChanged += OnFilterKnobControlValueChanged;
            fuzzyKnobControl.MinValue          = 0;
            fuzzyKnobControl.MaxValue          = 10;
            //PreferencesChanged(settings.preferences, true);
            AdjustHighlightSplitterWidth();
            ToggleHighlightPanel(false); // hidden

            _bookmarkProvider.BookmarkAdded       += OnBookmarkProviderBookmarkAdded;
            _bookmarkProvider.BookmarkRemoved     += OnBookmarkProviderBookmarkRemoved;
            _bookmarkProvider.AllBookmarksRemoved += OnBookmarkProviderAllBookmarksRemoved;

            ResumeLayout();

            _statusLineTrigger.Signal       += OnStatusLineTriggerSignal;
            _selectionChangedTrigger.Signal += OnSelectionChangedTriggerSignal;
        }