Files
friction/PanelResult.cs
2017-06-24 15:34:18 +09:00

204 lines
5.4 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
namespace friction
{
public partial class PanelResult : DockContent
{
MainForm m_Owner = null;
public PanelResult(MainForm owner)
{
InitializeComponent();
m_Owner = owner;
Theme.Apply(this);
Theme.Apply(dgvData);
Theme.Apply(lvColumn);
dgvData.CellFormatting += DgvData_CellFormatting;
}
private void DgvData_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridViewRow row = dgvData.Rows[e.RowIndex];
if(e.ColumnIndex == row.Cells[Config.COLUMN_NAME.RPN].ColumnIndex)
{
if ((float)e.Value <= 3)
e.CellStyle.BackColor = Theme.Green;
else if ((float)e.Value <= 5)
e.CellStyle.BackColor = Theme.Yellow;
else
e.CellStyle.BackColor = Theme.Red;
}
}
public void UpdateData(DataHandler data)
{
dgvData.DataSource = data.GetData();
dgvData.DefaultCellStyle.Format = "N2";
if(lvColumn.Items.Count > 0)
{
Config.OPTION.CheckedColumns = GetCheckedColumns();
Config.OPTION.UncheckedColumns = GetUncheckedColumns();
}
lvColumn.Items.Clear();
List<List<string>> Columns = new List<List<string>>() { data.GetActiveColumns(), data.GetNonactiveColumns() };
for(int iGroup=0; iGroup<Columns.Count; iGroup++)
{
foreach(string col in Columns[iGroup])
{
ListViewItem item = new ListViewItem(new string[] { col });
item.Text = col;
if(Config.OPTION.CheckedColumns != null && Config.OPTION.CheckedColumns.Exists(s => s==col) == true)
item.Checked = true;
else if(Config.OPTION.UncheckedColumns != null && Config.OPTION.UncheckedColumns.Exists(s => s == col) == true)
item.Checked = false;
else if (iGroup == 0)
item.Checked = true;
else
item.Checked = false;
item.ForeColor = (iGroup == 0) ? Theme.Forecolor : Theme.Gray;
lvColumn.Items.Add(item);
}
}
}
private void lvColumn_ItemChecked(object sender, ItemCheckedEventArgs e)
{
string strColName = e.Item.SubItems[0].Text;
bool bShow = e.Item.Checked;
dgvData.Columns[strColName].Visible = bShow;
}
private void lvColumn_SizeChanged(object sender, EventArgs e)
{
Theme.ResizeFullColumn(lvColumn);
}
public void SelectRowByHumidity(string strSpring, string strTable, float fHumidity, float fRPN)
{
dgvData.ClearSelection();
DataGridViewRow row = dgvData.Rows
.Cast<DataGridViewRow>()
.Where(r =>
r.Cells[Config.COLUMN_NAME.SPRING].Value.Equals(strSpring) &&
r.Cells[Config.COLUMN_NAME.TABLE].Value.Equals(strTable) &&
r.Cells[Config.COLUMN_NAME.RPN].Value.Equals(fRPN) &&
r.Cells[Config.COLUMN_NAME.HUMIDITY].Value.Equals(fHumidity)
)
.First();
if (row != null)
{
row.Selected = true;
dgvData.FirstDisplayedScrollingRowIndex = row.Index;
}
}
public void SelectRowByTemperature(string strSpring, string strTable, float fTemperature, float fRPN)
{
dgvData.ClearSelection();
DataGridViewRow row = dgvData.Rows
.Cast<DataGridViewRow>()
.Where(r =>
r.Cells[Config.COLUMN_NAME.SPRING].Value.Equals(strSpring) &&
r.Cells[Config.COLUMN_NAME.TABLE].Value.Equals(strTable) &&
r.Cells[Config.COLUMN_NAME.RPN].Value.Equals(fRPN) &&
r.Cells[Config.COLUMN_NAME.TEMP].Value.Equals(fTemperature)
)
.First();
if (row != null)
{
row.Selected = true;
dgvData.FirstDisplayedScrollingRowIndex = row.Index;
}
}
public void SelectRowByForce(string strSpring, string strTable, float fForce, float fRPN)
{
dgvData.ClearSelection();
DataGridViewRow row = dgvData.Rows
.Cast<DataGridViewRow>()
.Where(r =>
r.Cells[Config.COLUMN_NAME.SPRING].Value.Equals(strSpring) &&
r.Cells[Config.COLUMN_NAME.TABLE].Value.Equals(strTable) &&
r.Cells[Config.COLUMN_NAME.RPN].Value.Equals(fRPN) &&
r.Cells[Config.COLUMN_NAME.FORCE].Value.Equals(fForce)
)
.First();
if (row != null)
{
row.Selected = true;
dgvData.FirstDisplayedScrollingRowIndex = row.Index;
}
}
public void SelectRowByVelocity(string strSpring, string strTable, float fVelocity, float fRPN)
{
dgvData.ClearSelection();
DataGridViewRow row = dgvData.Rows
.Cast<DataGridViewRow>()
.Where(r =>
r.Cells[Config.COLUMN_NAME.SPRING].Value.Equals(strSpring) &&
r.Cells[Config.COLUMN_NAME.TABLE].Value.Equals(strTable) &&
r.Cells[Config.COLUMN_NAME.RPN].Value.Equals(fRPN) &&
r.Cells[Config.COLUMN_NAME.VELOCITY].Value.Equals(fVelocity)
)
.First();
if (row != null)
{
row.Selected = true;
dgvData.FirstDisplayedScrollingRowIndex = row.Index;
}
}
public List<string> GetCheckedColumns()
{
List<string> result = new List<string>();
foreach(ListViewItem item in lvColumn.Items)
{
if (item.Checked == true)
result.Add(item.Text);
}
return result;
}
public List<string> GetUncheckedColumns()
{
List<string> result = new List<string>();
foreach (ListViewItem item in lvColumn.Items)
{
if (item.Checked == false)
result.Add(item.Text);
}
return result;
}
}
}