561 lines
15 KiB
C#
561 lines
15 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using WeifenLuo.WinFormsUI.Docking;
|
|
|
|
namespace friction
|
|
{
|
|
public partial class MainForm : Form
|
|
{
|
|
string m_DBFileName = "";
|
|
DataHandler m_DataHandler = new DataHandler();
|
|
PanelMaterial m_MaterialPanel = null;
|
|
PanelResult m_ResultPanel = null;
|
|
PanelAnalysis m_AnalysisPanel = null;
|
|
PanelCompatibility m_CompatibilityPanel = null;
|
|
PanelRadarGraph m_RadarGraphPanel = null;
|
|
PanelTrendGraph m_TrendGraphPanel = null;
|
|
|
|
Report m_Report = null;
|
|
|
|
ToolStripMenuItem m_CurPref = null;
|
|
|
|
public MainForm()
|
|
{
|
|
InitializeComponent();
|
|
|
|
dockPanel.Theme = new VS2015DarkTheme();
|
|
m_MaterialPanel = new PanelMaterial(this);
|
|
m_ResultPanel = new PanelResult(this);
|
|
m_AnalysisPanel = new PanelAnalysis(this);
|
|
m_CompatibilityPanel = new PanelCompatibility(this, m_DataHandler);
|
|
m_RadarGraphPanel = new PanelRadarGraph(this, m_DataHandler);
|
|
m_TrendGraphPanel = new PanelTrendGraph(this, m_DataHandler);
|
|
|
|
Config.GetInstance().Init();
|
|
UpdateRecentFile();
|
|
UpdatePreference();
|
|
if(Config.OPTION.GetInstance().WindowBound.Width > 0)
|
|
Bounds = Config.OPTION.GetInstance().WindowBound;
|
|
|
|
|
|
Theme.Apply(this);
|
|
Theme.Apply(menuStrip);
|
|
Theme.Apply(toolStripMain);
|
|
Theme.Apply(statusStrip);
|
|
|
|
dockPanel.Font = new Font(dockPanel.Font.FontFamily, 12.0f);
|
|
}
|
|
|
|
void UpdateRecentFile()
|
|
{
|
|
recentToolStripMenuItem.DropDownItems.Clear();
|
|
|
|
foreach (string file in Enumerable.Reverse(Config.OPTION.GetInstance().m_RecentList))
|
|
{
|
|
ToolStripItem item = recentToolStripMenuItem.DropDownItems.Add(file);
|
|
item.BackColor = Theme.Backcolor;
|
|
item.ForeColor = Theme.Forecolor;
|
|
item.Click += RecentToolStripMenuItem_Click;
|
|
}
|
|
}
|
|
|
|
private void RecentToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
string strFile = ((ToolStripItem)sender).Text;
|
|
OpenDB(strFile);
|
|
}
|
|
|
|
public void OnSpringCheckChanged(string strItem, bool bChecked)
|
|
{
|
|
m_CompatibilityPanel.SpringCheckChanged(strItem, bChecked);
|
|
}
|
|
|
|
public void OnTableCheckChanged(string strItem, bool bChecked)
|
|
{
|
|
m_CompatibilityPanel.TableCheckChanged(strItem, bChecked);
|
|
m_AnalysisPanel.TableCheckChanged(strItem, bChecked);
|
|
m_RadarGraphPanel.UpdateGraph();
|
|
}
|
|
|
|
|
|
private void OpenDB(string strFile=null)
|
|
{
|
|
if (strFile == null)
|
|
{
|
|
OpenFileDialog ofd = new OpenFileDialog();
|
|
ofd.Filter = "엑셀 파일 (*.xlsx)|*.xlsx|엑셀 파일 (*.xls)|*.xls|전체|*";
|
|
DialogResult result = ofd.ShowDialog();
|
|
if (result == DialogResult.OK)
|
|
m_DBFileName = ofd.FileName;
|
|
else
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
m_DBFileName = strFile;
|
|
}
|
|
|
|
Config.GetInstance().m_bOnLoad = true;
|
|
Config.GetInstance().Load();
|
|
|
|
Cursor.Current = Cursors.WaitCursor;
|
|
|
|
m_DataHandler.LoadData(m_DBFileName);
|
|
|
|
m_MaterialPanel.UpdateData(m_DataHandler);
|
|
OpenPanel(m_MaterialPanel);
|
|
|
|
m_ResultPanel.UpdateData(m_DataHandler);
|
|
OpenPanel(m_ResultPanel);
|
|
|
|
m_AnalysisPanel.Reset();
|
|
m_AnalysisPanel.UpdateData(m_DataHandler);
|
|
OpenPanel(m_AnalysisPanel);
|
|
|
|
m_TrendGraphPanel.UpdateGraph();
|
|
OpenPanel(m_TrendGraphPanel);
|
|
|
|
m_RadarGraphPanel.UpdateGraph();
|
|
OpenPanel(m_RadarGraphPanel);
|
|
|
|
m_CompatibilityPanel.UpdateData();
|
|
OpenPanel(m_CompatibilityPanel);
|
|
|
|
toolStripStatusLabel.Text = m_DBFileName;
|
|
|
|
Config.OPTION.GetInstance().AddRecentFile(m_DBFileName);
|
|
UpdateRecentFile();
|
|
|
|
Config.GetInstance().m_bOnLoad = false;
|
|
LoadPref(Config.GetInstance().m_strCurMaterial);
|
|
|
|
Cursor.Current = Cursors.Default;
|
|
}
|
|
|
|
public void OpenPanel(DockContent panel)
|
|
{
|
|
if (panel.Visible == false)
|
|
panel.Show(dockPanel);
|
|
if (panel.IsHidden == true)
|
|
panel.IsHidden = false;
|
|
|
|
panel.ShowIcon = true;
|
|
|
|
if (panel.DockState == DockState.DockTopAutoHide ||
|
|
panel.DockState == DockState.DockBottomAutoHide ||
|
|
panel.DockState == DockState.DockLeftAutoHide ||
|
|
panel.DockState == DockState.DockRightAutoHide)
|
|
{
|
|
dockPanel.ActiveAutoHideContent = panel;
|
|
}
|
|
}
|
|
|
|
#region Events from menu
|
|
private void openDBToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
OpenDB();
|
|
}
|
|
|
|
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
Application.Exit();
|
|
}
|
|
|
|
private void resultTableToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
OpenPanel(m_ResultPanel);
|
|
}
|
|
|
|
private void analysisTableToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
OpenPanel(m_AnalysisPanel);
|
|
}
|
|
|
|
private void materialCompatibilityMapToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
OpenPanel(m_CompatibilityPanel);
|
|
m_CompatibilityPanel.UpdateData();
|
|
}
|
|
|
|
private void radarGraphToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (m_DataHandler.GetCurTable() != "All")
|
|
OnApplyData(this, m_DataHandler.GetCurSpring(), "All");
|
|
|
|
OpenPanel(m_RadarGraphPanel);
|
|
m_RadarGraphPanel.UpdateGraph();
|
|
}
|
|
|
|
private void trendGraphToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (m_DataHandler.GetCurTable() == "All")
|
|
OnApplyData(this, m_DataHandler.GetCurSpring(), m_DataHandler.GetTableList()[0]);
|
|
|
|
OpenPanel(m_TrendGraphPanel);
|
|
m_TrendGraphPanel.UpdateGraph();
|
|
}
|
|
|
|
private void allToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
SaveFileDialog sfd = new SaveFileDialog();
|
|
sfd.Filter = "엑셀 파일 (*.xlsx)|*.xlsx|엑셀 파일 (*.xls)|*.xls|전체|*";
|
|
DialogResult result = sfd.ShowDialog();
|
|
string strFilePath = "";
|
|
if (result == DialogResult.OK)
|
|
strFilePath = sfd.FileName;
|
|
else
|
|
return;
|
|
|
|
|
|
Cursor.Current = Cursors.WaitCursor;
|
|
|
|
m_Report = new Report();
|
|
m_Report.FilePath = strFilePath;
|
|
m_Report.MaterialSpring = m_DataHandler.GetCurSpring();
|
|
m_Report.MaterialTable = m_DataHandler.GetCurTable();
|
|
m_Report.AnalysisData = m_AnalysisPanel.GetData();
|
|
object[] CompData = m_CompatibilityPanel.GetData();
|
|
m_Report.CompatibilityData = (DataTable)CompData[0];
|
|
m_Report.CompatibilityColumns = (List<string>)CompData[1];
|
|
m_Report.CompatibilityRows = (List<string>)CompData[2];
|
|
|
|
m_Report.RadarChart = m_RadarGraphPanel.CopyChart();
|
|
|
|
if(m_DataHandler.GetCurTable() != "" && m_DataHandler.GetCurTable() != "All")
|
|
{
|
|
if (m_DataHandler.GetCurTable() == "All")
|
|
OnApplyData(this, m_DataHandler.GetCurSpring(), m_DataHandler.GetTableList()[0]);
|
|
|
|
OpenPanel(m_TrendGraphPanel);
|
|
m_TrendGraphPanel.CopyChart(PanelTrendGraph.GRAPH_TYPE.HUMIDITY);
|
|
}
|
|
else
|
|
{
|
|
m_Report.Export();
|
|
m_Report = null;
|
|
Cursor.Current = Cursors.Default;
|
|
}
|
|
}
|
|
|
|
public void OnChartUpdate(Bitmap bm, PanelTrendGraph.GRAPH_TYPE Type)
|
|
{
|
|
switch(Type)
|
|
{
|
|
case PanelTrendGraph.GRAPH_TYPE.HUMIDITY:
|
|
m_Report.TrendChartByHumidity = bm;
|
|
m_TrendGraphPanel.CopyChart(PanelTrendGraph.GRAPH_TYPE.TEMPERATURE);
|
|
break;
|
|
|
|
case PanelTrendGraph.GRAPH_TYPE.TEMPERATURE:
|
|
m_Report.TrendChartByTemperature = bm;
|
|
m_TrendGraphPanel.CopyChart(PanelTrendGraph.GRAPH_TYPE.FORCE);
|
|
break;
|
|
|
|
case PanelTrendGraph.GRAPH_TYPE.FORCE:
|
|
m_Report.TrendChartByForce = bm;
|
|
m_TrendGraphPanel.CopyChart(PanelTrendGraph.GRAPH_TYPE.VELOCITY);
|
|
break;
|
|
|
|
case PanelTrendGraph.GRAPH_TYPE.VELOCITY:
|
|
m_Report.TrendChartByVelocity = bm;
|
|
m_Report.Export();
|
|
m_Report = null;
|
|
Cursor.Current = Cursors.Default;
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
AboutBox aboutWindow = new AboutBox();
|
|
aboutWindow.ShowDialog();
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
#region Events from toolbox
|
|
private void toolStripButtonOpen_Click(object sender, EventArgs e)
|
|
{
|
|
OpenDB();
|
|
}
|
|
|
|
private void toolStripButtonMaterial_Click(object sender, EventArgs e)
|
|
{
|
|
OpenPanel(m_MaterialPanel);
|
|
}
|
|
|
|
private void toolStripButtonResult_Click(object sender, EventArgs e)
|
|
{
|
|
OpenPanel(m_ResultPanel);
|
|
}
|
|
|
|
private void toolStripButtonAnalysis_Click(object sender, EventArgs e)
|
|
{
|
|
OpenPanel(m_AnalysisPanel);
|
|
}
|
|
|
|
private void toolStripButtonMap_Click(object sender, EventArgs e)
|
|
{
|
|
OpenPanel(m_CompatibilityPanel);
|
|
m_CompatibilityPanel.UpdateData();
|
|
}
|
|
|
|
private void toolStripButtonRadarGraph_Click(object sender, EventArgs e)
|
|
{
|
|
if (m_DataHandler.GetCurTable() != "All")
|
|
OnApplyData(this, m_DataHandler.GetCurSpring(), "All");
|
|
|
|
OpenPanel(m_RadarGraphPanel);
|
|
m_RadarGraphPanel.UpdateGraph();
|
|
}
|
|
|
|
private void toolStripButtonTrendGraph_Click(object sender, EventArgs e)
|
|
{
|
|
if (m_DataHandler.GetCurTable() == "All")
|
|
{
|
|
string strSpring = m_DataHandler.GetCurSpring();
|
|
List<string> tableList = m_DataHandler.GetTableList();
|
|
|
|
if(tableList.Count > 0)
|
|
OnApplyData(this, strSpring, tableList[0]);
|
|
}
|
|
|
|
OpenPanel(m_TrendGraphPanel);
|
|
m_TrendGraphPanel.UpdateGraph();
|
|
}
|
|
#endregion
|
|
|
|
#region Events from panels
|
|
public void OnApplyData(object sender, string strSpring, string strTable)
|
|
{
|
|
Console.WriteLine("[MainForm::OnApply] start");
|
|
|
|
m_DataHandler.SetSelectedMaterial(strSpring, strTable);
|
|
|
|
if (strTable == "All")
|
|
{
|
|
if (m_RadarGraphPanel != null)
|
|
m_RadarGraphPanel.UpdateGraph();
|
|
if (m_TrendGraphPanel != null)
|
|
m_TrendGraphPanel.UpdateGraph();
|
|
}
|
|
else
|
|
{
|
|
if (m_TrendGraphPanel != null)
|
|
m_TrendGraphPanel.UpdateGraph();
|
|
}
|
|
|
|
if (sender != m_MaterialPanel)
|
|
{
|
|
m_MaterialPanel.SelectSpring(strSpring);
|
|
m_MaterialPanel.SelectTable(strTable);
|
|
}
|
|
|
|
m_AnalysisPanel.UpdateData(m_DataHandler);
|
|
}
|
|
|
|
public void OnRadarSelectTable(string strTable)
|
|
{
|
|
if (m_AnalysisPanel != null)
|
|
m_AnalysisPanel.SelectRow(strTable);
|
|
OpenPanel(m_AnalysisPanel);
|
|
}
|
|
|
|
public void OnTrendSelectByHumidity(string strSpring, string strTable, float fHumidity, float fRPN)
|
|
{
|
|
if (m_ResultPanel != null)
|
|
m_ResultPanel.SelectRowByHumidity(strSpring, strTable, fHumidity, fRPN);
|
|
OpenPanel(m_ResultPanel);
|
|
}
|
|
|
|
public void OnTrendSelectByTemperature(string strSpring, string strTable, float fTemperature, float fRPN)
|
|
{
|
|
if (m_ResultPanel != null)
|
|
m_ResultPanel.SelectRowByTemperature(strSpring, strTable, fTemperature, fRPN);
|
|
OpenPanel(m_ResultPanel);
|
|
}
|
|
|
|
public void OnTrendSelectByForce(string strSpring, string strTable, float fTemperature, float fRPN)
|
|
{
|
|
if (m_ResultPanel != null)
|
|
m_ResultPanel.SelectRowByForce(strSpring, strTable, fTemperature, fRPN);
|
|
OpenPanel(m_ResultPanel);
|
|
}
|
|
|
|
public void OnTrendSelectByVelocity(string strSpring, string strTable, float fTemperature, float fRPN)
|
|
{
|
|
if (m_ResultPanel != null)
|
|
m_ResultPanel.SelectRowByVelocity(strSpring, strTable, fTemperature, fRPN);
|
|
OpenPanel(m_ResultPanel);
|
|
}
|
|
#endregion
|
|
|
|
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
Config.OPTION.GetInstance().WindowBound = this.Bounds;
|
|
Config.OPTION.GetInstance().CheckedColumns = m_ResultPanel.GetCheckedColumns();
|
|
Config.OPTION.GetInstance().UncheckedColumns = m_ResultPanel.GetUncheckedColumns();
|
|
Config.GetInstance().Save(false);
|
|
}
|
|
|
|
#region preference
|
|
void UpdatePreference()
|
|
{
|
|
foreach (string pref in Config.GetInstance().m_UncheckedMaterial.Keys)
|
|
{
|
|
ToolStripMenuItem item = new ToolStripMenuItem(pref);
|
|
ToolStripItem load = item.DropDownItems.Add("Load");
|
|
load.Click += PreferenceLoadClick;
|
|
ToolStripItem save = item.DropDownItems.Add("Save");
|
|
save.Click += PreferenceSaveClick;
|
|
if (pref != "Default")
|
|
{
|
|
ToolStripItem remove = item.DropDownItems.Add("Remove");
|
|
remove.Click += PreferenceRemoveClick;
|
|
}
|
|
|
|
preferenceToolStripMenuItem.DropDownItems.Add(item);
|
|
|
|
if (pref == Config.GetInstance().m_strCurMaterial)
|
|
{
|
|
item.Text = "ㆍ" + pref;
|
|
m_CurPref = item;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SelectPref(string strPrefName)
|
|
{
|
|
foreach (ToolStripItem menuitem in preferenceToolStripMenuItem.DropDownItems)
|
|
{
|
|
if (menuitem.Text.StartsWith("ㆍ") == true)
|
|
menuitem.Text = menuitem.Text.Substring("ㆍ".Length);
|
|
|
|
if (menuitem.Text == strPrefName)
|
|
{
|
|
menuitem.Text = "ㆍ" + menuitem.Text;
|
|
m_CurPref = (ToolStripMenuItem)menuitem;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void LoadPref(string strPrefName)
|
|
{
|
|
Config.GetInstance().m_strCurMaterial = strPrefName;
|
|
|
|
m_MaterialPanel.LoadUncheckedMaterial(strPrefName);
|
|
m_CompatibilityPanel.SetMaterialChecked(strPrefName);
|
|
|
|
SelectPref(strPrefName);
|
|
Config.GetInstance().Save(false);
|
|
}
|
|
|
|
private void PreferenceLoadClick(object sender, EventArgs e)
|
|
{
|
|
ToolStripItem item = (ToolStripItem)sender;
|
|
ToolStripMenuItem parent = (ToolStripMenuItem)item.OwnerItem;
|
|
string strPrefName = parent.Text;
|
|
if (strPrefName.StartsWith("ㆍ"))
|
|
strPrefName = strPrefName.Substring("ㆍ".Length);
|
|
|
|
LoadPref(strPrefName);
|
|
}
|
|
|
|
private void PreferenceSaveClick(object sender, EventArgs e)
|
|
{
|
|
ToolStripItem item = (ToolStripItem)sender;
|
|
ToolStripMenuItem parent = (ToolStripMenuItem)item.OwnerItem;
|
|
string strPrefName = parent.Text;
|
|
if (strPrefName.StartsWith("ㆍ"))
|
|
strPrefName = strPrefName.Substring("ㆍ".Length);
|
|
Config.GetInstance().m_strCurMaterial = strPrefName;
|
|
|
|
m_MaterialPanel.SaveUncheckedMaterial(strPrefName);
|
|
|
|
SelectPref(strPrefName);
|
|
Config.GetInstance().Save(true);
|
|
}
|
|
|
|
private void PreferenceRemoveClick(object sender, EventArgs e)
|
|
{
|
|
ToolStripItem item = (ToolStripItem)sender;
|
|
ToolStripMenuItem parent = (ToolStripMenuItem)item.OwnerItem;
|
|
string strPrefName = parent.Text;
|
|
if (strPrefName.StartsWith("ㆍ"))
|
|
strPrefName = strPrefName.Substring("ㆍ".Length);
|
|
|
|
Config.GetInstance().RemovePref(strPrefName);
|
|
preferenceToolStripMenuItem.DropDownItems.Remove(parent);
|
|
|
|
if (parent == m_CurPref)
|
|
PreferenceLoadClick(((ToolStripMenuItem)preferenceToolStripMenuItem.DropDownItems[2]).DropDownItems[0], null);
|
|
|
|
Config.GetInstance().Save(true);
|
|
}
|
|
|
|
private void newToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
NewPreference popup = new NewPreference(this);
|
|
popup.Show();
|
|
}
|
|
|
|
public void OnPreferenceAdd(string strName)
|
|
{
|
|
if(Config.GetInstance().HasPref(strName) == true)
|
|
{
|
|
MessageBox.Show("Preference name should be different from others.");
|
|
NewPreference popup = new NewPreference(this);
|
|
popup.Show();
|
|
return;
|
|
}
|
|
|
|
Config.GetInstance().InsertPref(strName);
|
|
Config.GetInstance().m_strCurMaterial = strName;
|
|
|
|
ToolStripMenuItem item = new ToolStripMenuItem(strName);
|
|
ToolStripItem load = item.DropDownItems.Add("Load");
|
|
load.Click += PreferenceLoadClick;
|
|
ToolStripItem save = item.DropDownItems.Add("Save");
|
|
save.Click += PreferenceSaveClick;
|
|
ToolStripItem remove = item.DropDownItems.Add("Remove");
|
|
remove.Click += PreferenceRemoveClick;
|
|
|
|
preferenceToolStripMenuItem.DropDownItems.Add(item);
|
|
|
|
|
|
if(m_CurPref != null)
|
|
m_CurPref.Text = m_CurPref.Text.Substring("ㆍ".Length);
|
|
m_CurPref = item;
|
|
m_CurPref.Text = "ㆍ" + m_CurPref.Text;
|
|
|
|
Theme.Apply(menuStrip);
|
|
}
|
|
#endregion
|
|
|
|
public void OnRadarGraphActivated()
|
|
{
|
|
if (m_DataHandler.GetCurTable() != "All")
|
|
OnApplyData(this, m_DataHandler.GetCurSpring(), "All");
|
|
}
|
|
|
|
public void OnTrendGraphActivated()
|
|
{
|
|
if (m_DataHandler.GetCurTable() == "All")
|
|
{
|
|
List<string> tableList = m_DataHandler.GetTableList();
|
|
if(tableList.Count > 0)
|
|
OnApplyData(this, m_DataHandler.GetCurSpring(), tableList[1]);
|
|
}
|
|
}
|
|
}
|
|
}
|