Files
hamann-ausgabe-core/HaInformator/AttrValSelection.cs
2021-09-15 13:31:10 +02:00

173 lines
5.2 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
namespace HaInformator
{
public class AttrValSelection
{
private static ListBox _attrLView;
private static ListBox _valLView;
private static GroupBox _gBox;
private static ContextMenuSelection _cMenuSelection;
private static SelectionState _state;
private static AttributeTree _currAttributeTree;
public AttrValSelection(ListBox attrLView,
ListBox valLview,
GroupBox gBox,
ContextMenuSelection contextMenuSelection)
{
_attrLView = attrLView;
_valLView = valLview;
_gBox = gBox;
_cMenuSelection = contextMenuSelection;
_attrLView.MouseDown += new MouseEventHandler(_attrLView_Select);
_valLView.MouseDown += new MouseEventHandler(_valLView_Select);
_cMenuSelection.aNewBtn_Click =_aAddAttributeBtn_Click;
_cMenuSelection.aEditBtn_Click = _aEditBtn_Click;
_cMenuSelection.aDeleteBtn_Click = _aDeleteBtn_Click;
_cMenuSelection.vEditBtn_Click = _vEditBtn_Click;
}
private void _aAddAttributeBtn_Click(object sender, EventArgs e)
{
AddAttribute();
}
public void AddAttribute()
{
var str = "name";
var value = "wert";
if (_cMenuSelection.ShowDoubleInputDialog(ref str, ref value) == DialogResult.OK)
_state.AddAttribute(str, value);
Load(_state);
}
private void _aEditBtn_Click(object sender, EventArgs e)
{
EditAttribute();
}
private void EditAttribute()
{
var str = (String)_attrLView.SelectedItem;
if (_cMenuSelection.ShowInputDialog(ref str) == DialogResult.OK)
_state.EditAttribute((String)_attrLView.SelectedItem, str);
Load(_state);
}
private void _vEditBtn_Click(object sender, EventArgs e)
{
EditValue();
}
private void EditValue()
{
var str = (String)_valLView.SelectedItem;
if (_cMenuSelection.ShowInputDialog(ref str) == DialogResult.OK)
_state.EditValue((String)_attrLView.SelectedItem, (String)_valLView.SelectedItem, str);
Load(_state);
}
private void _aDeleteBtn_Click(object sender, EventArgs e)
{
RemoveAttribute();
}
private void RemoveAttribute()
{
_state.RemoveAttribute((string)_attrLView.SelectedItem);
Load(_state);
}
private void _attrLView_Select(object sender, MouseEventArgs e)
{
var node = _attrLView.IndexFromPoint(new System.Drawing.Point(e.X, e.Y));
if (node == -1)
{
_valLView.Items.Clear();
return;
}
else
_attrLView.SelectedIndex = node;
_update_valLView();
if (e.Button == MouseButtons.Right)
_attrLView.ContextMenuStrip = _cMenuSelection.Open(cMenuState.aView);
}
private void _valLView_Select(object sender, MouseEventArgs e)
{
var node = _valLView.IndexFromPoint(new System.Drawing.Point(e.X, e.Y));
if (node == null || node == -1)
{
return;
}
else
_valLView.SelectedIndex = node;
if (e.Button == MouseButtons.Right && _valLView.Items.Count > 0)
_valLView.ContextMenuStrip = _cMenuSelection.Open(cMenuState.vView);
}
public void Load(SelectionState state, string description = "")
{
_state = state;
_currAttributeTree = _state.GetAttributeTree();
if (!String.IsNullOrWhiteSpace(description))
_gBox.Text = description;
_draw();
}
private void _draw()
{
_update_attrLView();
_update_valLView();
}
private void _update_attrLView()
{
_attrLView.Items.Clear();
if (_currAttributeTree != null && _currAttributeTree.Any())
_attrLView.Items.AddRange(_currAttributeTree.Keys());
if (_attrLView.Items.Count > 0)
{
_attrLView.Enabled = true;
_attrLView.SelectedIndex = 0;
}
else
_attrLView.Enabled = false;
_attrLView.Update();
}
private void _update_valLView()
{
_valLView.Items.Clear();
if (_currAttributeTree != null && _attrLView.Items.Count > 0)
_valLView.Items.AddRange(_currAttributeTree.GetValue((String)_attrLView.SelectedItem).Keys.ToArray());
if (_valLView.Items.Count > 0)
{
_valLView.Enabled = true;
}
else
_valLView.Enabled = false;
_valLView.Update();
}
}
}