Files
advertising-profit-control/AdvertsingProfitControl/FrmLogFileViewer.cs
T

99 lines
3.7 KiB
C#

using System;
using System.IO;
using System.Windows.Forms;
namespace AdvertsingProfitControl
{
public partial class FrmLogFileViewer : Form
{
private string _clickedNode;
//Create the right-click context menu.
private readonly ContextMenu _menu = new ContextMenu();
private readonly MenuItem _item = new MenuItem("Delete File");
public FrmLogFileViewer()
{
InitializeComponent();
RefreshLogFileListing();
fileListTreeView.NodeMouseClick += NodeSelectionChangedOnMouseClick;
_menu.MenuItems.Add(_item);
_item.Click += DeleteFile;
}
private void DeleteFile(object sender, EventArgs e)
{
if (_clickedNode == string.Empty) return;
if (!File.Exists(_clickedNode)) return;
if (_clickedNode != null) File.Delete(_clickedNode);
RefreshLogFileListing();
}
private void NodeSelectionChangedOnMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
//Refresh the text boxes.
ReadSelectedFile(e.Node.Index);
}
else if(e.Button == MouseButtons.Right)
{
_clickedNode = e.Node.Name;
_menu.Show(fileListTreeView, e.Location);
fileListTreeView.SelectedNode = e.Node;
ReadSelectedFile(e.Node.Index);
}
}
private void RefreshLogFileListing()
{
var fileNames = Directory.GetFiles(GlobalClasses.LogFilePath);
fileListTreeView.Nodes.Clear();
foreach (var fileName in fileNames)
{
var file = new FileInfo(fileName);
var node = new TreeNode(file.Name) { Name = file.FullName };
fileListTreeView.Nodes.Add(node);
}
//Grab the HTML files
fileNames = Directory.GetFiles(Application.StartupPath, "*.html", SearchOption.TopDirectoryOnly);
foreach (var fileName in fileNames)
{
var file = new FileInfo(fileName);
var node = new TreeNode(file.Name) { Name = file.FullName };
fileListTreeView.Nodes.Add(node);
}
if (fileListTreeView.Nodes.Count <= 0) return;
ReadSelectedFile();
}
private void ReadSelectedFile(int selectedIndex = -1)
{
var lines = File.ReadAllLines(selectedIndex == -1 ? fileListTreeView.Nodes[0].Name : fileListTreeView.Nodes[selectedIndex].Name);
selectedFileNameLabel.Text = selectedIndex == -1
? fileListTreeView.Nodes[0].Text
: fileListTreeView.Nodes[selectedIndex].Text;
friendlyViewTextBox.Text = string.Empty;
rawViewTextBox.Text = string.Empty;
var lastCharWasWhiteSpace = false;
foreach (var line in lines)
{
if (line == string.Empty)
{
rawViewTextBox.Text += Environment.NewLine;
if (!lastCharWasWhiteSpace)
{
friendlyViewTextBox.Text += Environment.NewLine;
}
lastCharWasWhiteSpace = true;
continue;
}
if (!line.Trim().StartsWith("at"))
{
friendlyViewTextBox.Text += line + Environment.NewLine;
}
rawViewTextBox.Text += line + Environment.NewLine;
lastCharWasWhiteSpace = false;
}
}
}
}