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; }
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); }
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); }
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); }
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); }
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); }
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; }
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); } } }
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(); } }
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); } } }
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(); } } } } } } }
public IList <ILogLineColumnizer> GetRegisteredColumnizers() { return(PluginRegistry.GetInstance().RegisteredColumnizers); }
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; }