Files
friction/PanelMaterial.cs
mjjo53 a810a5b118 table, spring 전체 선택/해제
Potential S-Slip Risk -> Potential Stick-Slip Risk
Radar Graph Popup
2017-08-20 20:18:16 +09:00

344 lines
7.8 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 PanelMaterial : DockContent
{
MainForm m_Owner = null;
ListViewItem m_SelectedSpring = null;
ListViewItem m_SelectedTable = null;
public PanelMaterial(MainForm owner)
{
InitializeComponent();
m_Owner = owner;
this.ApplyTheme();
Theme.Apply(this);
Theme.Apply(lvSpring);
Theme.Apply(lvTable);
lvSpring.ListViewItemSorter = new ListViewItemCheckboxComparer();
lvSpring.ItemChecked += Listview_ItemChecked;
lvTable.ListViewItemSorter = new ListViewItemCheckboxComparer();
lvTable.ItemChecked += Listview_ItemChecked;
}
public void UpdateData(DataHandler data)
{
m_SelectedSpring = null;
m_SelectedTable = null;
var SpringList = data.GetSpringList();
var TableList = data.GetTableList();
lvSpring.Items.Clear();
lvSpring.Items.Add("All");
foreach (var x in SpringList)
{
ListViewItem item = lvSpring.Items.Add(x);
item.Checked = true;
}
lvTable.Items.Clear();
lvTable.Items.Add("All");
foreach (var x in TableList)
{
ListViewItem item = lvTable.Items.Add(x);
item.Checked = true;
}
lvSpring.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
lvTable.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
lbFileName.Text = data.GetFileName();
SelectSpring(0);
SelectTable(0);
}
private void lvSpring_SizeChanged(object sender, EventArgs e)
{
Theme.ResizeFullColumn(lvSpring);
}
private void lvTable_SizeChanged(object sender, EventArgs e)
{
Theme.ResizeFullColumn(lvTable);
}
#region select
private void SelectSpring(int iIdx)
{
if(iIdx == 0 && lvSpring.Items[iIdx].Text == "All")
{
if(m_SelectedSpring == null)
SelectSpring(1);
return;
}
if (m_SelectedSpring != null)
{
m_SelectedSpring.Font = lvSpring.Font;
m_SelectedSpring.ForeColor = Theme.Forecolor;
}
m_SelectedSpring = lvSpring.Items[iIdx];
m_SelectedSpring.Font = new Font(lvSpring.Font, FontStyle.Bold);
m_SelectedSpring.ForeColor = Theme.Orange;
if(m_SelectedSpring != null && m_SelectedTable != null)
m_Owner.OnApplyData(this, m_SelectedSpring.Text, m_SelectedTable.Text);
}
public void SelectSpring(string strSpring)
{
if (m_SelectedSpring != null)
{
m_SelectedSpring.Font = lvSpring.Font;
m_SelectedSpring.ForeColor = Theme.Forecolor;
}
foreach (ListViewItem item in lvSpring.Items)
{
if (item.Text == strSpring)
{
m_SelectedSpring = item;
item.Font = new Font(lvSpring.Font, FontStyle.Bold);
item.ForeColor = Theme.Orange;
break;
}
}
}
private void SelectTable(int iIdx)
{
if (m_SelectedTable != null)
{
m_SelectedTable.Font = lvTable.Font;
m_SelectedTable.ForeColor = Theme.Forecolor;
}
m_SelectedTable = lvTable.Items[iIdx];
m_SelectedTable.Font = new Font(lvTable.Font, FontStyle.Bold);
m_SelectedTable.ForeColor = Theme.Orange;
if (m_SelectedSpring != null && m_SelectedTable != null)
m_Owner.OnApplyData(this, m_SelectedSpring.Text, m_SelectedTable.Text);
}
public void SelectTable(string strTable)
{
if (m_SelectedTable != null)
{
m_SelectedTable.Font = lvTable.Font;
m_SelectedTable.ForeColor = Theme.Forecolor;
}
foreach(ListViewItem item in lvTable.Items)
{
if(item.Text == strTable)
{
m_SelectedTable = item;
item.Font = new Font(lvTable.Font, FontStyle.Bold);
item.ForeColor = Theme.Orange;
break;
}
}
}
private void lvSpring_MouseDoubleClick(object sender, MouseEventArgs e)
{
if(lvSpring.SelectedIndices.Count == 1)
SelectSpring(lvSpring.SelectedIndices[0]);
}
private void lvTable_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (lvTable.SelectedIndices.Count == 1)
SelectTable(lvTable.SelectedIndices[0]);
}
#endregion select
#region check
public void LoadUncheckedMaterial(string strPrefName)
{
Config.UncheckedMaterial cm = Config.GetInstance().m_UncheckedMaterial[strPrefName];
List<string> UncheckedSprings = new List<string>();
List<string> UncheckedTables = new List<string>();
foreach (string s in cm.m_Springs)
UncheckedSprings.Add(s);
foreach (string s in cm.m_Tables)
UncheckedTables.Add(s);
foreach (ListViewItem item in lvSpring.Items)
{
item.Checked = true;
}
foreach (string strSpring in UncheckedSprings)
{
foreach (ListViewItem item in lvSpring.Items)
{
if (item.Text == strSpring)
{
item.Checked = false;
break;
}
}
}
foreach (ListViewItem item in lvTable.Items)
{
item.Checked = true;
}
foreach (string strTable in UncheckedTables)
{
foreach (ListViewItem item in lvTable.Items)
{
if (item.Text == strTable)
{
item.Checked = false;
break;
}
}
}
}
public void SaveUncheckedMaterial(string strPrefName)
{
Config.UncheckedMaterial cm = Config.GetInstance().m_UncheckedMaterial[strPrefName];
cm.m_Springs.Clear();
foreach (ListViewItem item in lvSpring.Items)
{
if (item.Checked == false)
cm.m_Springs.Add(item.Text);
}
cm.m_Tables.Clear();
foreach (ListViewItem item in lvTable.Items)
{
if (item.Checked == false)
cm.m_Tables.Add(item.Text);
}
}
private void Listview_ItemChecked(object sender, ItemCheckedEventArgs e)
{
ListView view = (ListView)sender;
if (e.Item.Text == "All")
{
foreach(ListViewItem item in view.Items)
{
if(item != null && item.Text != "All")
item.Checked = e.Item.Checked;
}
return;
}
List<string> UncheckedItems = new List<string>();
foreach (ListViewItem item in view.Items)
{
if(item.Checked == false)
UncheckedItems.Add(item.Text);
}
if (view == lvTable)
Config.GetInstance().SetTableChecked(UncheckedItems);
else
Config.GetInstance().SetSpringChecked(UncheckedItems);
view.Sort();
if (view == lvSpring)
m_Owner.OnSpringCheckChanged(e.Item.Text, e.Item.Checked);
else
m_Owner.OnTableCheckChanged(e.Item.Text, e.Item.Checked);
}
#endregion check
private class ListViewItemCheckboxComparer : IComparer<ListViewItem>, System.Collections.IComparer
{
public int Compare(ListViewItem x, ListViewItem y)
{
if (x.Text == "All")
return -1;
else if (y.Text == "All")
return 1;
else if (x.Checked != y.Checked)
return -(x.Checked ? 1 : 0).CompareTo(y.Checked ? 1 : 0);
else
return x.Text.CompareTo(y.Text);
}
public int Compare(object x, object y)
{
return Compare(x as ListViewItem, y as ListViewItem);
}
}
private void lvSpring_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
SelectSpring(lvSpring.SelectedIndices[0]);
}
private void lvTable_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
SelectTable(lvTable.SelectedIndices[0]);
}
}
public class NoDoubleClickAutoCheckListview : ListView
{
private bool checkFromDoubleClick = false;
protected override void OnItemCheck(ItemCheckEventArgs ice)
{
if (this.checkFromDoubleClick)
{
ice.NewValue = ice.CurrentValue;
this.checkFromDoubleClick = false;
}
else
base.OnItemCheck(ice);
}
protected override void OnMouseDown(MouseEventArgs e)
{
// Is this a double-click?
if ((e.Button == MouseButtons.Left) && (e.Clicks > 1))
{
this.checkFromDoubleClick = true;
}
base.OnMouseDown(e);
}
protected override void OnKeyDown(KeyEventArgs e)
{
this.checkFromDoubleClick = false;
base.OnKeyDown(e);
}
}
}