mirror of
				https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
				synced 2025-10-31 02:05:33 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			173 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			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();
 | |
|         }
 | |
|     }
 | |
| }
 | 
