();
-
- foreach (ListViewItem item in ItemsLV.SelectedItems)
- {
- itemsToDelete.Add(item);
- }
-
- foreach (ListViewItem item in itemsToDelete)
- {
- item.Remove();
- }
- }
-
- ///
- /// Compares two items in the list.
- ///
- protected virtual int CompareItems(object item1, object item2)
- {
- IComparable comparable = item1 as IComparable;
-
- if (comparable != null)
- {
- return comparable.CompareTo(item2);
- }
-
- return 0;
- }
-
- ///
- /// Returns the data to drag.
- ///
- protected virtual object GetDataToDrag()
- {
- if (ItemsLV.SelectedItems.Count > 0)
- {
- ArrayList data = new ArrayList();
-
- foreach (ListViewItem listItem in ItemsLV.SelectedItems)
- {
- data.Add(listItem.Tag);
- }
-
- return data.ToArray();
- }
-
- return null;
- }
-
- ///
- /// Adds an item to the list.
- ///
- protected virtual ListViewItem AddItem(object item)
- {
- return AddItem(item, "SimpleItem", -1);
- }
-
- ///
- /// Adds an item to the list.
- ///
- protected virtual ListViewItem AddItem(object item, string icon, int index)
- {
- // switch to detail view as soon as an item is added.
- if (ItemsLV.View == View.List)
- {
- ItemsLV.Items.Clear();
- ItemsLV.View = View.Details;
- }
-
- ListViewItem listItem = null;
-
- if (m_updating)
- {
- if (m_updateCount < ItemsLV.Items.Count)
- {
- listItem = ItemsLV.Items[m_updateCount];
- }
-
- m_updateCount++;
- }
-
- if (listItem == null)
- {
- listItem = new ListViewItem();
- }
-
- listItem.Text = String.Format("{0}", item);
- listItem.ImageKey = icon;
- listItem.Tag = item;
-
- // fill columns with blanks.
- for (int ii = listItem.SubItems.Count; ii < ItemsLV.Columns.Count-1; ii++)
- {
- listItem.SubItems.Add(String.Empty);
- }
-
- // calculate new index.
- int newIndex = index;
-
- if (index < 0 || index > ItemsLV.Items.Count)
- {
- newIndex = ItemsLV.Items.Count;
- }
-
- // update columns.
- UpdateItem(listItem, item, newIndex);
-
- if (listItem.ListView == null)
- {
- // add to control.
- if (index >= 0 && index <= ItemsLV.Items.Count)
- {
- ItemsLV.Items.Insert(index, listItem);
- }
- else
- {
- ItemsLV.Items.Add(listItem);
- }
- }
-
- // return new item.
- return listItem;
- }
-
- ///
- /// Starts overwriting the contents of the control.
- ///
- protected void BeginUpdate()
- {
- m_updating = true;
- m_updateCount = 0;
- }
-
- ///
- /// Finishes overwriting the contents of the control.
- ///
- protected void EndUpdate()
- {
- m_updating = false;
-
- while (ItemsLV.Items.Count > m_updateCount)
- {
- ItemsLV.Items[ItemsLV.Items.Count-1].Remove();
- }
-
- m_updateCount = 0;
- AdjustColumns();
- }
-
- ///
- /// Updates a list item with the current contents of an object.
- ///
- protected virtual void UpdateItem(ListViewItem listItem, object item)
- {
- listItem.Tag = item;
- }
-
- ///
- /// Updates a list item with the current contents of an object.
- ///
- protected virtual void UpdateItem(ListViewItem listItem, object item, int index)
- {
- UpdateItem(listItem, item);
- }
-
- ///
- /// Sets the columns shown in the list view.
- ///
- protected virtual void SetColumns(object[][] columns)
- {
- ItemsLV.Clear();
-
- m_columns = columns;
-
- foreach (object[] column in columns)
- {
- ColumnHeader header = new ColumnHeader();
-
- header.Text = column[0] as string;
- header.TextAlign = (HorizontalAlignment)column[1];
-
- ItemsLV.Columns.Add(header);
- }
-
- ColumnHeader blank = new ColumnHeader();
- blank.Text = String.Empty;
- ItemsLV.Columns.Add(blank);
-
- AdjustColumns();
- }
-
- ///
- /// Adjusts the columns shown in the list view.
- ///
- protected virtual void AdjustColumns()
- {
- if (ItemsLV.View == View.List || ItemsLV.Items.Count == 0)
- {
- ItemsLV.View = View.List;
-
- if (ItemsLV.Items.Count == 0 && !String.IsNullOrEmpty(m_instructions))
- {
- ListViewItem item = new ListViewItem(m_instructions);
-
- item.ImageKey = "Info";
- item.ForeColor = Color.Gray;
-
- ItemsLV.Items.Add(item);
- }
-
- ItemsLV.Columns[0].Width = -2;
- return;
- }
-
- ItemsLV.View = View.Details;
-
- for (int ii = 0; ii < m_columns.Length && ii < ItemsLV.Columns.Count; ii++)
- {
- // check for fixed width columns.
- if (m_columns[ii].Length >= 4 && m_columns[ii][3] != null)
- {
- int width = (int)m_columns[ii][3];
-
- if (ItemsLV.Columns[ii].Width < width)
- {
- ItemsLV.Columns[ii].Width = width;
- }
-
- continue;
- }
-
- // check mandatory columns.
- if (m_columns[ii].Length < 3 || m_columns[ii][2] == null)
- {
- ItemsLV.Columns[ii].Width = -2;
- continue;
- }
-
- // check if all items have the default value for the column.
- bool display = false;
-
- foreach (ListViewItem listItem in ItemsLV.Items)
- {
- if (!m_columns[ii][2].Equals(listItem.SubItems[ii].Text))
- {
- display = true;
- break;
- }
- }
-
- // only display columns with non-default information.
- if (display)
- {
- ItemsLV.Columns[ii].Width = -2;
- }
- else
- {
- ItemsLV.Columns[ii].Width = 0;
- }
- }
-
- if (ItemsLV.Columns.Count > 0)
- {
- ItemsLV.Columns[ItemsLV.Columns.Count-1].Width = 0;
- }
- }
-
- ///
- /// Enables the state of menu items.
- ///
- protected virtual void EnableMenuItems(ListViewItem clickedItem)
- {
- // do nothing.
- }
-
- ///
- /// Sends notifications whenever items in the control are 'picked'.
- ///
- protected virtual void PickItems()
- {
- if (m_ItemsPicked != null)
- {
- ICollection data = GetDataToDrag() as ICollection;
-
- if (data != null)
- {
- m_ItemsPicked(this, new ListItemActionEventArgs(ListItemAction.Picked, data));
- }
- }
- }
-
- ///
- /// Sends notifications whenever items in the control are 'selected'.
- ///
- protected virtual void SelectItems()
- {
- if (m_ItemsSelected != null)
- {
- object[] selectedObjects = new object[ItemsLV.SelectedItems.Count];
-
- for (int ii = 0; ii < selectedObjects.Length; ii++)
- {
- selectedObjects[ii] = ItemsLV.SelectedItems[ii].Tag;
- }
-
- m_ItemsSelected(this, new ListItemActionEventArgs(ListItemAction.Selected, selectedObjects));
- }
- }
-
- ///
- /// Sends notifications that an item has been added to the control.
- ///
- protected virtual void NotifyItemAdded(object item)
- {
- NotifyItemsAdded(new object[] { item });
- }
-
- ///
- /// Sends notifications that items have been added to the control.
- ///
- protected virtual void NotifyItemsAdded(object[] items)
- {
- if (m_ItemsAdded != null && items != null && items.Length > 0)
- {
- m_ItemsAdded(this, new ListItemActionEventArgs(ListItemAction.Added, items));
- }
- }
-
- ///
- /// Sends notifications that an item has been modified in the control.
- ///
- protected virtual void NotifyItemModified(object item)
- {
- NotifyItemsModified(new object[] { item });
- }
-
- ///
- /// Sends notifications that items have been modified in the control.
- ///
- protected virtual void NotifyItemsModified(object[] items)
- {
- if (m_ItemsModified != null && items != null && items.Length > 0)
- {
- m_ItemsModified(this, new ListItemActionEventArgs(ListItemAction.Modified, items));
- }
- }
-
- ///
- /// Sends notifications that and item has been removed from the control.
- ///
- protected virtual void NotifyItemRemoved(object item)
- {
- NotifyItemsRemoved(new object[] { item });
- }
-
- ///
- /// Sends notifications that items have been removed from the control.
- ///
- protected virtual void NotifyItemsRemoved(object[] items)
- {
- if (m_ItemsRemoved != null && items != null && items.Length > 0)
- {
- m_ItemsRemoved(this, new ListItemActionEventArgs(ListItemAction.Removed, items));
- }
- }
-
- ///
- /// Finds the list item with specified tag in the control,
- ///
- protected ListViewItem FindItem(object tag)
- {
- foreach (ListViewItem listItem in ItemsLV.Items)
- {
- if (Object.ReferenceEquals(tag, listItem.Tag))
- {
- return listItem;
- }
- }
-
- return null;
- }
-
- ///
- /// Returns the tag associated with a selected item.
- ///
- protected object GetSelectedTag(int index)
- {
- if (ItemsLV.SelectedItems.Count > index)
- {
- return ItemsLV.SelectedItems[index].Tag;
- }
-
- return null;
- }
- #endregion
-
- #region BaseListCtrlSorter Class
- ///
- /// A class that allows the list to be sorted.
- ///
- private class BaseListCtrlSorter : IComparer
- {
- ///
- /// Initializes the sorter.
- ///
- public BaseListCtrlSorter(BaseListCtrl control)
- {
- m_control = control;
- }
-
- ///
- /// Compares the two items.
- ///
- public int Compare(object x, object y)
- {
- ListViewItem itemX = x as ListViewItem;
- ListViewItem itemY = y as ListViewItem;
-
- return m_control.CompareItems(itemX.Tag, itemY.Tag);
- }
-
- private BaseListCtrl m_control;
- }
- #endregion
-
- #region Event Handlers
- private void ItemsLV_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
- {
- try
- {
- // ignore non-right clicks.
- if (e.Button == MouseButtons.Left)
- {
- m_dragPosition = e.Location;
- return;
- }
-
- // disable everything.
- if (ItemsLV.ContextMenuStrip != null)
- {
- foreach (ToolStripItem item in ItemsLV.ContextMenuStrip.Items)
- {
- ToolStripMenuItem menuItem = item as ToolStripMenuItem;
-
- if (menuItem == null)
- {
- continue;
- }
-
- menuItem.Enabled = false;
-
- if (menuItem.DropDown != null)
- {
- foreach (ToolStripItem subItem in menuItem.DropDown.Items)
- {
- ToolStripMenuItem subMenuItem = subItem as ToolStripMenuItem;
-
- if (subMenuItem != null)
- {
- subMenuItem.Enabled = false;
- }
- }
- }
- }
- }
-
- // selects the item that was right clicked on.
- ListViewItem clickedItem = ItemsLV.GetItemAt(e.X, e.Y);
-
- // ensure clicked item is selected.
- if (clickedItem != null)
- {
- clickedItem.Selected = true;
- }
-
- // enable menu items according to context.
- EnableMenuItems(clickedItem);
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
-
- private void ItemsLV_MouseUp(object sender, MouseEventArgs e)
- {
- try
- {
- if (e.Button == MouseButtons.Left)
- {
- m_dragPosition = e.Location;
- return;
- }
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
-
- private void ItemsLV_DoubleClick(object sender, System.EventArgs e)
- {
- try
- {
- PickItems();
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
-
- private void ItemsLV_SelectedIndexChanged(object sender, System.EventArgs e)
- {
- try
- {
- SelectItems();
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
-
- private void ItemsLV_MouseMove(object sender, MouseEventArgs e)
- {
- if (m_enableDragging && e.Button == MouseButtons.Left && !m_dragPosition.Equals(e.Location))
- {
- object data = GetDataToDrag();
-
- if (data != null)
- {
- ItemsLV.DoDragDrop(data, DragDropEffects.Copy);
- }
- }
- }
-
- ///
- /// Handles the DragEnter event of the ItemsLV control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- protected virtual void ItemsLV_DragEnter(object sender, DragEventArgs e)
- {
- if (m_enableDragging)
- {
- e.Effect = DragDropEffects.Copy;
- }
- else
- {
- e.Effect = DragDropEffects.None;
- }
- }
-
- ///
- /// Handles the DragDrop event of the ItemsLV control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- protected virtual void ItemsLV_DragDrop(object sender, DragEventArgs e)
- {
- // overriden by sub-class.
- }
- #endregion
- }
-
- #region ListItemAction Enumeration
- ///
- /// The possible actions that could affect an item.
- ///
- public enum ListItemAction
- {
-
- ///
- /// The item was picked (double clicked).
- ///
- Picked,
-
- ///
- /// The item was selected.
- ///
- Selected,
-
- ///
- /// The item was added.
- ///
- Added,
-
- ///
- /// The item was modified.
- ///
- Modified,
-
- ///
- /// The item was removed.
- ///
- Removed
- }
- #endregion
-
- #region ListItemActionEventArgs Class
- ///
- /// The event argurments passed when an item event occurs.
- ///
- public class ListItemActionEventArgs : EventArgs
- {
- #region Constructors
- ///
- /// Initializes a new instance of the class.
- ///
- /// The action.
- /// The items.
- public ListItemActionEventArgs(ListItemAction action, ICollection items)
- {
- m_items = items;
- m_action = action;
- }
- #endregion
-
- #region Public Properties
- ///
- /// Gets the items.
- ///
- /// The items.
- public ICollection Items
- {
- get { return m_items; }
- }
-
- ///
- /// Gets the action.
- ///
- /// The action.
- public ListItemAction Action
- {
- get { return m_action; }
- }
- #endregion
-
- #region Private Fields
- private ICollection m_items;
- private ListItemAction m_action;
- #endregion
- }
-
- ///
- /// The delegate used to receive item action events.
- ///
- public delegate void ListItemActionEventHandler(object sender, ListItemActionEventArgs e);
- #endregion
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseListCtrl.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseListCtrl.resx
deleted file mode 100644
index 19dc0dd8b3..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseListCtrl.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseTreeCtrl.Designer.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseTreeCtrl.Designer.cs
deleted file mode 100644
index ef3f02ee97..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseTreeCtrl.Designer.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-namespace Opc.Ua.Client.Controls
-{
- partial class BaseTreeCtrl
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Component Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.NodesTV = new System.Windows.Forms.TreeView();
- this.SuspendLayout();
- //
- // NodesTV
- //
- this.NodesTV.AllowDrop = true;
- this.NodesTV.Dock = System.Windows.Forms.DockStyle.Fill;
- this.NodesTV.Location = new System.Drawing.Point(0, 0);
- this.NodesTV.Name = "NodesTV";
- this.NodesTV.Size = new System.Drawing.Size(489, 397);
- this.NodesTV.TabIndex = 1;
- this.NodesTV.GiveFeedback += new System.Windows.Forms.GiveFeedbackEventHandler(this.NodesTV_GiveFeedback);
- this.NodesTV.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.NodesTV_BeforeExpand);
- this.NodesTV.DoubleClick += new System.EventHandler(this.NodesTV_DoubleClick);
- this.NodesTV.DragDrop += new System.Windows.Forms.DragEventHandler(this.NodesTV_DragDrop);
- this.NodesTV.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.NodesTV_AfterSelect);
- this.NodesTV.MouseDown += new System.Windows.Forms.MouseEventHandler(this.NodesTV_MouseDown);
- this.NodesTV.DragEnter += new System.Windows.Forms.DragEventHandler(this.NodesTV_DragEnter);
- this.NodesTV.DragOver += new System.Windows.Forms.DragEventHandler(this.NodesTV_DragOver);
- //
- // BaseTreeCtrl
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Controls.Add(this.NodesTV);
- this.Name = "BaseTreeCtrl";
- this.Size = new System.Drawing.Size(489, 397);
- this.ResumeLayout(false);
-
- }
-
- #endregion
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseTreeCtrl.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseTreeCtrl.cs
deleted file mode 100644
index 6ca19f4a64..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseTreeCtrl.cs
+++ /dev/null
@@ -1,456 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using System.Reflection;
-
-namespace Opc.Ua.Client.Controls
-{
- ///
- /// A base class for tree controls.
- ///
- public partial class BaseTreeCtrl : UserControl
- {
- ///
- /// Initializes a new instance of the class.
- ///
- public BaseTreeCtrl()
- {
- InitializeComponent();
- NodesTV.ImageList = new GuiUtils().ImageList;
- NodesTV.ItemHeight = 18;
- }
-
- #region Public Interface
- ///
- /// The TreeView contained in the Control.
- ///
- protected System.Windows.Forms.TreeView NodesTV;
-
- ///
- /// Raised whenever a node is 'picked' in the control.
- ///
- public event TreeNodeActionEventHandler NodePicked
- {
- add { m_NodePicked += value; }
- remove { m_NodePicked -= value; }
- }
-
- ///
- /// Raised whenever a node is selected in the control.
- ///
- public event TreeNodeActionEventHandler NodeSelected
- {
- add { m_NodeSelected += value; }
- remove { m_NodeSelected -= value; }
- }
-
- ///
- /// Whether the control should allow items to be dragged.
- ///
- public bool EnableDragging
- {
- get { return m_enableDragging; }
- set { m_enableDragging = value; }
- }
- #endregion
-
- #region Private Fields
- private event TreeNodeActionEventHandler m_NodePicked;
- private event TreeNodeActionEventHandler m_NodeSelected;
- private bool m_enableDragging;
- #endregion
-
- #region Protected Methods
- ///
- /// Adds an item to the tree.
- ///
- protected virtual TreeNode AddNode(TreeNode treeNode, object item)
- {
- return AddNode(treeNode, item, String.Format("{0}", item), "ClosedFolder");
- }
-
- ///
- /// Adds an item to the tree.
- ///
- protected virtual TreeNode AddNode(TreeNode parent, object item, string text, string icon)
- {
- // create node.
- TreeNode treeNode = new TreeNode();
-
- // update text/icon.
- UpdateNode(treeNode, item, text, icon);
-
- // add to control.
- if (parent == null)
- {
- NodesTV.Nodes.Add(treeNode);
- }
- else
- {
- parent.Nodes.Add(treeNode);
- }
-
- // return new tree node.
- return treeNode;
- }
-
- ///
- /// Updates a tree node with the current contents of an object.
- ///
- protected virtual void UpdateNode(TreeNode treeNode, object item, string text, string icon)
- {
- treeNode.Text = text;
- treeNode.Tag = item;
- treeNode.ImageKey = icon;
- treeNode.SelectedImageKey = icon;
- }
-
- ///
- /// Returns the data to drag.
- ///
- protected virtual object GetDataToDrag(TreeNode node)
- {
- return node.Tag;
- }
-
- ///
- /// Enables the state of menu items.
- ///
- protected virtual void EnableMenuItems(TreeNode clickedNode)
- {
- // do nothing.
- }
-
- ///
- /// Initializes a node before expanding it.
- ///
- protected virtual bool BeforeExpand(TreeNode clickedNode)
- {
- return false;
- }
-
- ///
- /// Sends notifications whenever a node in the control is 'picked'.
- ///
- protected virtual void PickNode()
- {
- if (m_NodePicked != null)
- {
- if (NodesTV.SelectedNode != null)
- {
- object parent = null;
-
- if (NodesTV.SelectedNode.Parent != null)
- {
- parent = NodesTV.SelectedNode.Tag;
- }
-
- m_NodePicked(this, new TreeNodeActionEventArgs(TreeNodeAction.Picked, NodesTV.SelectedNode.Tag, parent));
- }
- }
- }
-
- ///
- /// Sends notifications whenever a node in the control is 'selected'.
- ///
- protected virtual void SelectNode()
- {
- if (m_NodeSelected != null)
- {
- if (NodesTV.SelectedNode != null)
- {
- object parent = null;
-
- if (NodesTV.SelectedNode.Parent != null)
- {
- parent = NodesTV.SelectedNode.Tag;
- }
-
- m_NodeSelected(this, new TreeNodeActionEventArgs(TreeNodeAction.Selected, NodesTV.SelectedNode.Tag, parent));
- }
- }
- }
-
- ///
- /// Returns the Tag for the current selection.
- ///
- protected object SelectedTag
- {
- get
- {
- if (NodesTV.SelectedNode != null)
- {
- return NodesTV.SelectedNode.Tag;
- }
-
- return null;
- }
- }
- #endregion
-
- #region Event Handlers
- private void NodesTV_AfterSelect(object sender, TreeViewEventArgs e)
- {
- try
- {
- SelectNode();
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
-
- private void NodesTV_BeforeExpand(object sender, TreeViewCancelEventArgs e)
- {
- try
- {
- Cursor = Cursors.WaitCursor;
- e.Cancel = BeforeExpand(e.Node);
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- finally
- {
- Cursor = Cursors.Default;
- }
- }
-
- private void NodesTV_DoubleClick(object sender, EventArgs e)
- {
- try
- {
- PickNode();
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
-
- private void NodesTV_MouseDown(object sender, MouseEventArgs e)
- {
- try
- {
- // selects the item that was right clicked on.
- TreeNode clickedNode = NodesTV.SelectedNode = NodesTV.GetNodeAt(e.X, e.Y);
-
- // no item clicked on - do nothing.
- if (clickedNode == null) return;
-
- // start drag operation.
- if (e.Button == MouseButtons.Left)
- {
- if (m_enableDragging)
- {
- object data = GetDataToDrag(clickedNode);
-
- if (data != null)
- {
- NodesTV.DoDragDrop(data, DragDropEffects.Copy);
- }
- }
-
- return;
- }
-
- // disable everything.
- if (NodesTV.ContextMenuStrip != null)
- {
- foreach (ToolStripItem item in NodesTV.ContextMenuStrip.Items)
- {
- ToolStripMenuItem menuItem = item as ToolStripMenuItem;
-
- if (menuItem == null)
- {
- continue;
- }
-
- menuItem.Enabled = false;
-
- if (menuItem.DropDown != null)
- {
- foreach (ToolStripItem subItem in menuItem.DropDown.Items)
- {
- ToolStripMenuItem subMenuItem = subItem as ToolStripMenuItem;
-
- if (subMenuItem != null)
- {
- subMenuItem.Enabled = false;
- }
- }
- }
- }
- }
-
- // enable menu items according to context.
- if (e.Button == MouseButtons.Right)
- {
- EnableMenuItems(clickedNode);
- }
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
-
- ///
- /// Handles the DragEnter event of the NodesTV control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- protected virtual void NodesTV_DragEnter(object sender, DragEventArgs e)
- {
- if (m_enableDragging)
- {
- e.Effect = DragDropEffects.Copy;
- }
- else
- {
- e.Effect = DragDropEffects.None;
- }
- }
-
- ///
- /// Handles the DragDrop event of the NodesTV control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- protected virtual void NodesTV_DragDrop(object sender, DragEventArgs e)
- {
- // overridden by sub-class.
- }
-
- ///
- /// Handles the GiveFeedback event of the NodesTV control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- protected virtual void NodesTV_GiveFeedback(object sender, GiveFeedbackEventArgs e)
- {
- // overridden by sub-class.
- }
-
- ///
- /// Handles the DragOver event of the NodesTV control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- protected virtual void NodesTV_DragOver(object sender, DragEventArgs e)
- {
- // overridden by sub-class.
- }
- #endregion
- }
-
- #region TreeNodeAction Eumeration
- ///
- /// The possible actions that could affect a node.
- ///
- public enum TreeNodeAction
- {
- ///
- /// A node was picked in the tree.
- ///
- Picked,
-
- ///
- /// A node was selected in the tree.
- ///
- Selected
- }
- #endregion
-
- #region TreeNodeActionEventArgs class
- ///
- /// The event argurments passed when an node event occurs.
- ///
- public class TreeNodeActionEventArgs : EventArgs
- {
- #region Constructor
- ///
- /// Initializes the object.
- ///
- public TreeNodeActionEventArgs(TreeNodeAction action, object node, object parent)
- {
- m_node = node;
- m_parent = parent;
- m_action = action;
- }
- #endregion
-
- #region Private Fields
- ///
- /// The tag associated with the node that was acted on.
- ///
- public object Node
- {
- get { return m_node; }
- }
-
- ///
- /// The tag associated with the parent of the node that was acted on.
- ///
- public object Parent
- {
- get { return m_parent; }
- }
-
- ///
- /// The action in question.
- ///
- public TreeNodeAction Action
- {
- get { return m_action; }
- }
- #endregion
-
- #region Private Fields
- private object m_node;
- private object m_parent;
- private TreeNodeAction m_action;
- #endregion
- }
-
- ///
- /// The delegate used to receive node action events.
- ///
- public delegate void TreeNodeActionEventHandler(object sender, TreeNodeActionEventArgs e);
- #endregion
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseTreeCtrl.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseTreeCtrl.resx
deleted file mode 100644
index 19dc0dd8b3..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/BaseTreeCtrl.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ClipboardHack.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ClipboardHack.cs
deleted file mode 100644
index 27959440ee..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ClipboardHack.cs
+++ /dev/null
@@ -1,155 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Windows.Forms;
-using System.Threading;
-
-namespace Opc.Ua.Client.Controls
-{
- ///
- /// This class is used to work around a bug in the MS VPC implementation.
- ///
- ///
- /// Clipborad operations will fail if this class is not used on VPCs with the
- /// virtual machine additions installed.
- ///
- public static class ClipboardHack
- {
- #region Public Methods
- ///
- /// Retrieves the data from the clipboard.
- ///
- public static object GetData(string format)
- {
- lock (m_lock)
- {
- m_format = format;
- m_data = null;
- m_error = null;
-
- Thread thread = new Thread(new ThreadStart(GetClipboardPrivate));
- thread.IsBackground = true;
-
- thread.SetApartmentState(ApartmentState.STA);
- thread.Start();
- thread.Join();
-
- if (m_error != null)
- {
- throw new ServiceResultException(m_error, StatusCodes.BadUnexpectedError);
- }
-
- return m_data;
- }
- }
-
- ///
- /// Saves the data in the clipboard.
- ///
- public static void SetData(string format, object data)
- {
- lock (m_lock)
- {
- m_format = format;
- m_data = data;
- m_error = null;
-
- Thread thread = new Thread(new ThreadStart(SetClipboardPrivate));
- thread.IsBackground = true;
-
- thread.SetApartmentState(ApartmentState.STA);
- thread.Start();
- thread.Join();
-
- if (m_error != null)
- {
- throw new ServiceResultException(m_error, StatusCodes.BadUnexpectedError);
- }
- }
- }
- #endregion
-
- #region Private Methods
- ///
- /// Gets the data in the clipboard if it is the correct format.
- ///
- private static void GetClipboardPrivate()
- {
- try
- {
- m_error = null;
-
- if (String.IsNullOrEmpty(m_format) || !Clipboard.ContainsData(m_format))
- {
- m_data = null;
- return;
- }
-
- m_data = Clipboard.GetData(m_format);
- }
- catch (Exception e)
- {
- m_error = e;
- }
- }
-
- ///
- /// Saves the data in the clipboard if it is the correct format.
- ///
- private static void SetClipboardPrivate()
- {
- try
- {
- m_error = null;
-
- if (String.IsNullOrEmpty(m_format) || m_data == null)
- {
- return;
- }
-
- Clipboard.SetData(m_format, m_data);
- }
- catch (Exception e)
- {
- m_error = e;
- }
- }
- #endregion
-
- #region Private Fields
- private static object m_lock = new object();
- private static string m_format = null;
- private static object m_data = null;
- private static Exception m_error = null;
- #endregion
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ComplexValueEditDlg.Designer.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ComplexValueEditDlg.Designer.cs
deleted file mode 100644
index 03d9335f7a..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ComplexValueEditDlg.Designer.cs
+++ /dev/null
@@ -1,148 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-namespace Opc.Ua.Client.Controls
-{
- partial class ComplexValueEditDlg
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.ButtonsPN = new System.Windows.Forms.Panel();
- this.OkBTN = new System.Windows.Forms.Button();
- this.CancelBTN = new System.Windows.Forms.Button();
- this.panel1 = new System.Windows.Forms.Panel();
- this.ValueCTRL = new Opc.Ua.Client.Controls.DataListCtrl();
- this.ButtonsPN.SuspendLayout();
- this.panel1.SuspendLayout();
- this.SuspendLayout();
- //
- // ButtonsPN
- //
- this.ButtonsPN.Controls.Add(this.OkBTN);
- this.ButtonsPN.Controls.Add(this.CancelBTN);
- this.ButtonsPN.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.ButtonsPN.Location = new System.Drawing.Point(0, 317);
- this.ButtonsPN.Name = "ButtonsPN";
- this.ButtonsPN.Size = new System.Drawing.Size(707, 28);
- this.ButtonsPN.TabIndex = 0;
- //
- // OkBTN
- //
- this.OkBTN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.OkBTN.Location = new System.Drawing.Point(4, 1);
- this.OkBTN.Name = "OkBTN";
- this.OkBTN.Size = new System.Drawing.Size(75, 23);
- this.OkBTN.TabIndex = 1;
- this.OkBTN.Text = "OK";
- this.OkBTN.UseVisualStyleBackColor = true;
- this.OkBTN.Click += new System.EventHandler(this.OkBTN_Click);
- //
- // CancelBTN
- //
- this.CancelBTN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.CancelBTN.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.CancelBTN.Location = new System.Drawing.Point(628, 1);
- this.CancelBTN.Name = "CancelBTN";
- this.CancelBTN.Size = new System.Drawing.Size(75, 23);
- this.CancelBTN.TabIndex = 0;
- this.CancelBTN.Text = "Cancel";
- this.CancelBTN.UseVisualStyleBackColor = true;
- //
- // panel1
- //
- this.panel1.Controls.Add(this.ValueCTRL);
- this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.panel1.Location = new System.Drawing.Point(0, 0);
- this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(707, 317);
- this.panel1.TabIndex = 1;
- //
- // ValueCTRL
- //
- this.ValueCTRL.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.ValueCTRL.AutoUpdate = true;
- this.ValueCTRL.Instructions = null;
- this.ValueCTRL.LatestValue = true;
- this.ValueCTRL.Location = new System.Drawing.Point(4, 3);
- this.ValueCTRL.Name = "ValueCTRL";
- this.ValueCTRL.Size = new System.Drawing.Size(699, 311);
- this.ValueCTRL.TabIndex = 0;
- //
- // ComplexValueEditDlg
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(707, 345);
- this.Controls.Add(this.panel1);
- this.Controls.Add(this.ButtonsPN);
- this.MinimumSize = new System.Drawing.Size(287, 98);
- this.Name = "ComplexValueEditDlg";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Edit Value";
- this.ButtonsPN.ResumeLayout(false);
- this.panel1.ResumeLayout(false);
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.Panel ButtonsPN;
- private System.Windows.Forms.Button OkBTN;
- private System.Windows.Forms.Button CancelBTN;
- private System.Windows.Forms.Panel panel1;
- private DataListCtrl ValueCTRL;
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ComplexValueEditDlg.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ComplexValueEditDlg.cs
deleted file mode 100644
index 31e23f2d44..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ComplexValueEditDlg.cs
+++ /dev/null
@@ -1,105 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using System.Reflection;
-
-using Opc.Ua.Client;
-using Opc.Ua.Client.Controls;
-
-namespace Opc.Ua.Client.Controls
-{
- ///
- /// A dialog to edit a complex value.
- ///
- public partial class ComplexValueEditDlg : Form
- {
- #region Constructors
- ///
- /// Initializes a new instance of the class.
- ///
- public ComplexValueEditDlg()
- {
- InitializeComponent();
- }
- #endregion
-
- #region Private Fields
- private object m_value;
- #endregion
-
- #region Public Interface
- ///
- /// Displays the dialog.
- ///
- public object ShowDialog(object value)
- {
- return ShowDialog(value, null);
- }
-
- ///
- /// Displays the dialog.
- ///
- public object ShowDialog(object value, MonitoredItem monitoredItem)
- {
- m_value = Utils.Clone(value);
-
- ValueCTRL.MonitoredItem = monitoredItem;
- ValueCTRL.ShowValue(m_value);
-
- if (ShowDialog() != DialogResult.OK)
- {
- return null;
- }
-
- return m_value;
- }
- #endregion
-
- #region Event Handlers
- private void OkBTN_Click(object sender, EventArgs e)
- {
- try
- {
- DialogResult = DialogResult.OK;
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
- #endregion
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ComplexValueEditDlg.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ComplexValueEditDlg.resx
deleted file mode 100644
index 19dc0dd8b3..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ComplexValueEditDlg.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DataListCtrl.Designer.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DataListCtrl.Designer.cs
deleted file mode 100644
index ea80ffc745..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DataListCtrl.Designer.cs
+++ /dev/null
@@ -1,144 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-namespace Opc.Ua.Client.Controls
-{
- ///
- ///
- ///
- partial class DataListCtrl
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- this.PopupMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.UpdatesMI = new System.Windows.Forms.ToolStripMenuItem();
- this.RefreshMI = new System.Windows.Forms.ToolStripMenuItem();
- this.ClearMI = new System.Windows.Forms.ToolStripMenuItem();
- this.Separator01 = new System.Windows.Forms.ToolStripSeparator();
- this.EditMI = new System.Windows.Forms.ToolStripMenuItem();
- this.PopupMenu.SuspendLayout();
- this.SuspendLayout();
- //
- // ItemsLV
- //
- this.ItemsLV.ContextMenuStrip = this.PopupMenu;
- this.ItemsLV.MultiSelect = false;
- this.ItemsLV.MouseClick += new System.Windows.Forms.MouseEventHandler(this.ItemsLV_MouseClick);
- //
- // PopupMenu
- //
- this.PopupMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.UpdatesMI,
- this.RefreshMI,
- this.ClearMI,
- this.Separator01,
- this.EditMI});
- this.PopupMenu.Name = "PopupMenu";
- this.PopupMenu.Size = new System.Drawing.Size(136, 98);
- //
- // UpdatesMI
- //
- this.UpdatesMI.Checked = true;
- this.UpdatesMI.CheckState = System.Windows.Forms.CheckState.Checked;
- this.UpdatesMI.Name = "UpdatesMI";
- this.UpdatesMI.Size = new System.Drawing.Size(135, 22);
- this.UpdatesMI.Text = "Auto Update";
- this.UpdatesMI.CheckedChanged += new System.EventHandler(this.UpdatesMI_CheckedChanged);
- //
- // RefreshMI
- //
- this.RefreshMI.Name = "RefreshMI";
- this.RefreshMI.Size = new System.Drawing.Size(135, 22);
- this.RefreshMI.Text = "Refresh";
- this.RefreshMI.Click += new System.EventHandler(this.RefreshMI_Click);
- //
- // ClearMI
- //
- this.ClearMI.Name = "ClearMI";
- this.ClearMI.Size = new System.Drawing.Size(135, 22);
- this.ClearMI.Text = "Clear";
- this.ClearMI.Click += new System.EventHandler(this.ClearMI_Click);
- //
- // Separator01
- //
- this.Separator01.Name = "Separator01";
- this.Separator01.Size = new System.Drawing.Size(132, 6);
- //
- // EditMI
- //
- this.EditMI.Name = "EditMI";
- this.EditMI.Size = new System.Drawing.Size(135, 22);
- this.EditMI.Text = "Edit Value...";
- this.EditMI.Click += new System.EventHandler(this.EditMI_Click);
- //
- // DataListCtrl
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.Name = "DataListCtrl";
- this.Controls.SetChildIndex(this.ItemsLV, 0);
- this.PopupMenu.ResumeLayout(false);
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.ContextMenuStrip PopupMenu;
- private System.Windows.Forms.ToolStripMenuItem UpdatesMI;
- private System.Windows.Forms.ToolStripMenuItem RefreshMI;
- private System.Windows.Forms.ToolStripMenuItem ClearMI;
- private System.Windows.Forms.ToolStripSeparator Separator01;
- private System.Windows.Forms.ToolStripMenuItem EditMI;
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DataListCtrl.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DataListCtrl.cs
deleted file mode 100644
index 9a6ba0410c..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DataListCtrl.cs
+++ /dev/null
@@ -1,1519 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using System.Reflection;
-using System.Runtime.Serialization;
-using System.Xml;
-using System.Xml.Serialization;
-
-using Opc.Ua.Client;
-using Opc.Ua.Client.Controls;
-
-namespace Opc.Ua.Client.Controls
-{
- ///
- /// Displays a hierarchical view of a complex value.
- ///
- public partial class DataListCtrl : Opc.Ua.Client.Controls.BaseListCtrl
- {
- ///
- /// Initializes a new instance of the class.
- ///
- public DataListCtrl()
- {
- InitializeComponent();
- SetColumns(m_ColumnNames);
- }
-
- #region Private Fields
- ///
- /// The columns to display in the control.
- ///
- private readonly object[][] m_ColumnNames = new object[][]
- {
- new object[] { "Name", HorizontalAlignment.Left, null },
- new object[] { "Value", HorizontalAlignment.Left, null, 250 },
- new object[] { "Type", HorizontalAlignment.Left, null }
- };
-
- private bool m_latestValue = true;
- private bool m_expanding;
- private int m_depth;
- private Font m_defaultFont;
- private MonitoredItem m_monitoredItem;
-
- private const string UnknownType = "(unknown)";
- private const string NullValue = "(null)";
- private const string ExpandIcon = "ExpandPlus";
- private const string CollapseIcon = "ExpandMinus";
- #endregion
-
- #region Public Interface
- ///
- /// Whether to update the control when the value changes.
- ///
- public bool AutoUpdate
- {
- get { return UpdatesMI.Checked; }
- set { UpdatesMI.Checked = value; }
- }
-
- ///
- /// Whether to only display the latest value for a monitored item.
- ///
- public bool LatestValue
- {
- get { return m_latestValue; }
- set { m_latestValue = value; }
- }
-
- ///
- /// The monitored item associated with the value.
- ///
- public MonitoredItem MonitoredItem
- {
- get { return m_monitoredItem; }
- set { m_monitoredItem = value; }
- }
-
- ///
- /// Clears the contents of the control,
- ///
- public void Clear()
- {
- ItemsLV.Items.Clear();
- AdjustColumns();
- }
-
- ///
- /// Displays a value in the control.
- ///
- public void ShowValue(object value)
- {
- ShowValue(value, false);
- }
-
- ///
- /// Displays a value in the control.
- ///
- public void ShowValue(object value, bool overwrite)
- {
- if (!overwrite)
- {
- Clear();
- }
-
- if (value is byte[])
- {
- m_defaultFont = new Font("Courier New", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
- }
- else
- {
- m_defaultFont = ItemsLV.Font;
- }
-
- m_expanding = false;
- m_depth = 0;
-
- // show the value.
- int index = 0;
- ShowValue(ref index, ref overwrite, value);
-
- // adjust columns.
- AdjustColumns();
- }
- #endregion
-
- #region Overridden Methods
- ///
- /// Enables the menu items.
- ///
- protected override void EnableMenuItems(ListViewItem clickedItem)
- {
- RefreshMI.Enabled = true;
- ClearMI.Enabled = true;
-
- if (ItemsLV.SelectedItems.Count == 1)
- {
- ValueState state = ItemsLV.SelectedItems[0].Tag as ValueState;
- EditMI.Enabled = IsEditableType(state.Component);
- }
- }
- #endregion
-
- #region ValueState Class
- ///
- /// Stores the state associated with an item.
- ///
- private class ValueState
- {
- public bool Expanded = false;
- public bool Expandable = false;
- public object Value = null;
- public object Component = null;
- public object ComponentId = null;
- }
- #endregion
-
- #region Private Members
- ///
- /// Returns true is the value is an editable type.
- ///
- private bool IsEditableType(object value)
- {
- if (value is bool) return true;
- if (value is sbyte) return true;
- if (value is byte) return true;
- if (value is short) return true;
- if (value is ushort) return true;
- if (value is int) return true;
- if (value is uint) return true;
- if (value is long) return true;
- if (value is ulong) return true;
- if (value is float) return true;
- if (value is double) return true;
- if (value is string) return true;
- if (value is DateTime) return true;
- if (value is Guid) return true;
-
- return false;
- }
-
- ///
- /// Shows the components of a value in the control.
- ///
- private void ShowChildren(ListViewItem listItem)
- {
- ValueState state = listItem.Tag as ValueState;
-
- if (state == null || !state.Expandable || state.Expanded)
- {
- return;
- }
-
- m_expanding = true;
- m_depth = listItem.IndentCount+1;
-
- state.Expanded = true;
- listItem.ImageKey = CollapseIcon;
-
- int index = listItem.Index+1;
- bool overwrite = false;
-
- ShowValue(ref index, ref overwrite, state.Component);
-
- AdjustColumns();
- }
-
- ///
- /// Hides the components of a value in the control.
- ///
- private void HideChildren(ListViewItem listItem)
- {
- ValueState state = listItem.Tag as ValueState;
-
- if (state == null || !state.Expandable || !state.Expanded)
- {
- return;
- }
-
- for (int ii = listItem.Index+1; ii < ItemsLV.Items.Count;)
- {
- ListViewItem childItem = ItemsLV.Items[ii];
-
- if (childItem.IndentCount <= listItem.IndentCount)
- {
- break;
- }
-
- childItem.Remove();
- }
-
- state.Expanded = false;
- listItem.ImageKey = ExpandIcon;
- }
-
- ///
- /// Returns the list item at the specified index.
- ///
- private ListViewItem GetListItem(int index, ref bool overwrite, string name, string type)
- {
- ListViewItem listitem = null;
-
- // switch to detail view as soon as an item is added.
- if (ItemsLV.View == View.List)
- {
- ItemsLV.Items.Clear();
- ItemsLV.View = View.Details;
- }
-
- // check if there is an item that could be re-used.
- if (!m_expanding && index < ItemsLV.Items.Count)
- {
- listitem = ItemsLV.Items[index];
-
- // check if still possible to overwrite values.
- if (overwrite)
- {
- if (listitem.SubItems[0].Text != name || listitem.SubItems[2].Text != type)
- {
- overwrite = false;
- }
- }
-
- listitem.SubItems[0].Text = name;
- listitem.SubItems[2].Text = type;
-
- return listitem;
- }
-
- overwrite = false;
-
- listitem = new ListViewItem(name);
-
- listitem.SubItems.Add(String.Empty);
- listitem.SubItems.Add(type);
-
- listitem.Font = m_defaultFont;
- listitem.ImageKey = ExpandIcon;
- listitem.IndentCount = m_depth;
- listitem.Tag = new ValueState();
-
- if (!m_expanding)
- {
- ItemsLV.Items.Add(listitem);
- }
- else
- {
- ItemsLV.Items.Insert(index, listitem);
- }
-
- return listitem;
- }
-
- ///
- /// Returns true if the type can be expanded.
- ///
- private bool IsExpandableType(object value)
- {
- // check for null.
- if (value == null)
- {
- return false;
- }
-
- // check for Variant.
- if (value is Variant)
- {
- return IsExpandableType(((Variant)value).Value);
- }
-
- // check for bytes.
- byte[] bytes = value as byte[];
-
- if (bytes != null)
- {
- return false;
- }
-
- // check for xml element.
- XmlElement xml = value as XmlElement;
-
- if (xml != null)
- {
- if (xml.ChildNodes.Count == 1 && xml.ChildNodes[0] is XmlText)
- {
- return false;
- }
-
- return xml.HasChildNodes;
- }
-
- // check for array.
- Array array = value as Array;
-
- if (array != null)
- {
- return array.Length > 0;
- }
-
- // check for list.
- IList list = value as IList;
-
- if (list != null)
- {
- return list.Count > 0;
- }
-
- // check for encodeable object.
- IEncodeable encodeable = value as IEncodeable;
-
- if (encodeable != null)
- {
- return true;
- }
-
- // check for extension object.
- ExtensionObject extension = value as ExtensionObject;
-
- if (extension != null)
- {
- return IsExpandableType(extension.Body);
- }
-
- // check for data value.
- DataValue datavalue = value as DataValue;
-
- if (datavalue != null)
- {
- return true;
- }
-
- // check for event value.
- EventFieldList eventFields = value as EventFieldList;
-
- if (eventFields != null)
- {
- return true;
- }
-
- // must be a simple value.
- return false;
- }
-
- ///
- /// Formats a value for display in the control.
- ///
- private string GetValueText(object value)
- {
- // check for null.
- if (value == null)
- {
- return "(null)";
- }
-
- // format bytes.
- byte[] bytes = value as byte[];
-
- if (bytes != null)
- {
- StringBuilder buffer = new StringBuilder();
-
- for (int ii = 0; ii < bytes.Length; ii++)
- {
- if (ii != 0 && ii%16 == 0)
- {
- buffer.Append(" ");
- }
-
- buffer.AppendFormat("{0:X2} ", bytes[ii]);
- }
-
- return buffer.ToString();
- }
-
- // format xml element.
- XmlElement xml = value as XmlElement;
-
- if (xml != null)
- {
- // return the entire element if not expandable.
- if (!IsExpandableType(xml))
- {
- return xml.OuterXml;
- }
-
- // show only the start tag.
- string text = xml.OuterXml;
-
- int index = text.IndexOf('>');
-
- if (index != -1)
- {
- text = text.Substring(0, index);
- }
-
- return text;
- }
-
- // format array.
- Array array = value as Array;
-
- if (array != null)
- {
- return Utils.Format("{1}[{0}]", array.Length, value.GetType().GetElementType().Name);
- }
-
- // format list.
- IList list = value as IList;
-
- if (list != null)
- {
- string type = value.GetType().Name;
-
- if (type.EndsWith("Collection"))
- {
- type = type.Substring(0, type.Length - "Collection".Length);
- }
- else
- {
- type = "Object";
- }
-
- return Utils.Format("{1}[{0}]", list.Count, type);
- }
-
- // format encodeable object.
- IEncodeable encodeable = value as IEncodeable;
-
- if (encodeable != null)
- {
- return encodeable.GetType().Name;
- }
-
- // format extension object.
- ExtensionObject extension = value as ExtensionObject;
-
- if (extension != null)
- {
- return GetValueText(extension.Body);
- }
-
- // check for event value.
- EventFieldList eventFields = value as EventFieldList;
-
- if (eventFields != null)
- {
- if (m_monitoredItem != null)
- {
- return String.Format("{0}", m_monitoredItem.GetEventType(eventFields));
- }
-
- return eventFields.GetType().Name;
- }
-
- // check for data value.
- DataValue dataValue = value as DataValue;
-
- if (dataValue != null)
- {
- if (StatusCode.IsBad(dataValue.StatusCode))
- {
- return String.Format("{0}", dataValue.StatusCode);
- }
-
- return String.Format("{0}", dataValue.Value);
- }
-
- // use default formatting.
- return Utils.Format("{0}", value);
- }
-
- ///
- /// Updates the list with the specified value.
- ///
- private void UpdateList(
- ref int index,
- ref bool overwrite,
- object value,
- object componentValue,
- object componentId,
- string name,
- string type)
- {
- // get the list item to update.
- ListViewItem listitem = GetListItem(index, ref overwrite, name, type);
-
- // update list item.
- listitem.SubItems[1].Text = GetValueText(componentValue);
-
- // move to next item.
- index++;
-
- ValueState state = listitem.Tag as ValueState;
-
- // recursively update sub-values if item is expanded.
- if (overwrite)
- {
- if (state.Expanded && state.Expandable)
- {
- m_depth++;
- ShowValue(ref index, ref overwrite, componentValue);
- m_depth--;
- }
- }
-
- // update state.
- state.Expandable = IsExpandableType(componentValue);
- state.Value = value;
- state.Component = componentValue;
- state.ComponentId = componentId;
-
- if (!state.Expandable)
- {
- listitem.ImageKey = CollapseIcon;
- }
- }
-
- ///
- /// Shows property of an encodeable object in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, IEncodeable value, PropertyInfo property)
- {
- // get the name of the property.
- string name = Utils.GetDataMemberName(property);
-
- if (name == null)
- {
- return;
- }
-
- // get the property value.
- object propertyValue = null;
-
- MethodInfo[] accessors = property.GetAccessors();
-
- for (int ii = 0; ii < accessors.Length; ii++)
- {
- if (accessors[ii].ReturnType == property.PropertyType)
- {
- propertyValue = accessors[ii].Invoke(value, null);
- break;
- }
- }
-
- if (propertyValue is Variant)
- {
- propertyValue = ((Variant)propertyValue).Value;
- }
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- propertyValue,
- property,
- name,
- property.PropertyType.Name);
- }
-
- ///
- /// Shows the element of an array in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, Array value, int element)
- {
- // get the name of the element.
- string name = Utils.Format("[{0}]", element);
-
- // get the element value.
- object elementValue = value.GetValue(element);
-
- // get the type name.
- string type = null;
-
- if (elementValue != null)
- {
- type = elementValue.GetType().Name;
- }
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- elementValue,
- element,
- name,
- type);
- }
-
- ///
- /// Asks for confirmation before expanding a long list.
- ///
- private bool PromptOnLongList(int length)
- {
- if (length < 256)
- {
- return true;
- }
-
- DialogResult result = MessageBox.Show("It may take a long time to display the list are you sure you want to continue?", "Warning", MessageBoxButtons.YesNo);
-
- if (result == DialogResult.Yes)
- {
- return true;
- }
-
- return false;
- }
-
- ///
- /// Shows the element of a list in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, IList value, int element)
- {
- // get the name of the element.
- string name = Utils.Format("[{0}]", element);
-
- // get the element value.
- object elementValue = value[element];
-
- // get the type name.
- string type = null;
-
- if (elementValue != null)
- {
- type = elementValue.GetType().Name;
- }
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- elementValue,
- element,
- name,
- type);
- }
-
- ///
- /// Shows an XML element in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, XmlElement value, int childIndex)
- {
- // ignore children that are not elements.
- XmlElement child = value.ChildNodes[childIndex] as XmlElement;
-
- if (child == null)
- {
- return;
- }
-
- // get the name of the element.
- string name = Utils.Format("{0}", child.Name);
-
- // get the type name.
- string type = value.GetType().Name;
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- child,
- childIndex,
- name,
- type);
- }
-
- ///
- /// Shows an event in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, EventFieldList value, int fieldIndex)
- {
- // ignore children that are not elements.
- object field = value.EventFields[fieldIndex].Value;
-
- if (field == null)
- {
- return;
- }
-
- // get the name of the element.
- string name = null;
-
- if (m_monitoredItem != null)
- {
- name = m_monitoredItem.GetFieldName(fieldIndex);
- }
-
- // get the type name.
- string type = value.GetType().Name;
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- field,
- fieldIndex,
- name,
- type);
- }
-
- ///
- /// Shows a byte array in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, byte[] value, int blockStart)
- {
- // get the name of the element.
- string name = Utils.Format("[{0:X4}]", blockStart);
-
- int bytesLeft = value.Length - blockStart;
-
- if (bytesLeft > 16)
- {
- bytesLeft = 16;
- }
-
- // get the element value.
- byte[] blockValue = new byte[bytesLeft];
- Array.Copy(value, blockStart, blockValue, 0, bytesLeft);
-
- // get the type name.
- string type = value.GetType().Name;
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- blockValue,
- blockStart,
- name,
- type);
- }
-
- ///
- /// Shows a data value in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, DataValue value, int component)
- {
- string name = null;
- object componentValue = null;
-
- switch (component)
- {
- case 0:
- {
- name = "Value";
- componentValue = value.Value;
-
- ExtensionObject extension = componentValue as ExtensionObject;
-
- if (extension != null)
- {
- componentValue = extension.Body;
- }
-
- break;
- }
-
- case 1:
- {
- name = "StatusCode";
- componentValue = value.StatusCode;
- break;
- }
-
- case 2:
- {
- if (value.SourceTimestamp != DateTime.MinValue)
- {
- name = "SourceTimestamp";
- componentValue = value.SourceTimestamp;
- }
-
- break;
- }
-
- case 3:
- {
- if (value.ServerTimestamp != DateTime.MinValue)
- {
- name = "ServerTimestamp";
- componentValue = value.ServerTimestamp;
- }
-
- break;
- }
- }
-
- // don't display empty components.
- if (name == null)
- {
- return;
- }
-
- // get the type name.
- string type = "(unknown)";
-
- if (componentValue != null)
- {
- type = componentValue.GetType().Name;
- }
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- componentValue,
- component,
- name,
- type);
- }
-
- ///
- /// Shows a node id in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, NodeId value, int component)
- {
- string name = null;
- object componentValue = null;
-
- switch (component)
- {
- case 0:
- {
- name = "IdType";
- componentValue = value.IdType;
- break;
- }
-
- case 1:
- {
- name = "Identifier";
- componentValue = value.Identifier;
- break;
- }
-
- case 2:
- {
- name = "NamespaceIndex";
- componentValue = value.NamespaceIndex;
- break;
- }
- }
-
- // don't display empty components.
- if (name == null)
- {
- return;
- }
-
- // get the type name.
- string type = "(unknown)";
-
- if (componentValue != null)
- {
- type = componentValue.GetType().Name;
- }
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- componentValue,
- component,
- name,
- type);
- }
-
- ///
- /// Shows am expanded node id in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, ExpandedNodeId value, int component)
- {
- string name = null;
- object componentValue = null;
-
- switch (component)
- {
- case 0:
- {
- name = "IdType";
- componentValue = value.IdType;
- break;
- }
-
- case 1:
- {
- name = "Identifier";
- componentValue = value.Identifier;
- break;
- }
-
- case 2:
- {
- name = "NamespaceIndex";
- componentValue = value.NamespaceIndex;
- break;
- }
-
- case 3:
- {
- name = "NamespaceUri";
- componentValue = value.NamespaceUri;
- break;
- }
- }
-
- // don't display empty components.
- if (name == null)
- {
- return;
- }
-
- // get the type name.
- string type = "(unknown)";
-
- if (componentValue != null)
- {
- type = componentValue.GetType().Name;
- }
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- componentValue,
- component,
- name,
- type);
- }
-
- ///
- /// Shows qualified name in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, QualifiedName value, int component)
- {
- string name = null;
- object componentValue = null;
-
- switch (component)
- {
- case 0:
- {
- name = "Name";
- componentValue = value.Name;
- break;
- }
-
- case 1:
- {
- name = "NamespaceIndex";
- componentValue = value.NamespaceIndex;
- break;
- }
- }
-
- // don't display empty components.
- if (name == null)
- {
- return;
- }
-
- // get the type name.
- string type = "(unknown)";
-
- if (componentValue != null)
- {
- type = componentValue.GetType().Name;
- }
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- componentValue,
- component,
- name,
- type);
- }
-
- ///
- /// Shows localized text in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, LocalizedText value, int component)
- {
- string name = null;
- object componentValue = null;
-
- switch (component)
- {
- case 0:
- {
- name = "Text";
- componentValue = value.Text;
- break;
- }
-
- case 1:
- {
- name = "Locale";
- componentValue = value.Locale;
- break;
- }
- }
-
- // don't display empty components.
- if (name == null)
- {
- return;
- }
-
- // get the type name.
- string type = "(unknown)";
-
- if (componentValue != null)
- {
- type = componentValue.GetType().Name;
- }
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- componentValue,
- component,
- name,
- type);
- }
-
- ///
- /// Shows a string in the control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, string value)
- {
- string name = "Value";
- object componentValue = value;
-
- // don't display empty components.
- if (name == null)
- {
- return;
- }
-
- // get the type name.
- string type = "(unknown)";
-
- if (componentValue != null)
- {
- type = componentValue.GetType().Name;
- }
-
- // update the list view.
- UpdateList(
- ref index,
- ref overwrite,
- value,
- componentValue,
- 0,
- name,
- type);
- }
-
- ///
- /// Shows a value in control.
- ///
- private void ShowValue(ref int index, ref bool overwrite, object value)
- {
- if (value == null)
- {
- return;
- }
-
- // show monitored items.
- MonitoredItem monitoredItem = value as MonitoredItem;
-
- if (monitoredItem != null)
- {
- m_monitoredItem = monitoredItem;
- ShowValue(ref index, ref overwrite, monitoredItem.LastValue);
- return;
- }
-
- // show data changes
- MonitoredItemNotification datachange = value as MonitoredItemNotification;
-
- if (datachange != null)
- {
- ShowValue(ref index, ref overwrite, datachange.Value);
- return;
- }
-
- // show events
- EventFieldList eventFields = value as EventFieldList;
-
- if (eventFields != null)
- {
- for (int ii = 0; ii < eventFields.EventFields.Count; ii++)
- {
- ShowValue(ref index, ref overwrite, eventFields, ii);
- }
-
- return;
- }
-
- // show extension bodies.
- ExtensionObject extension = value as ExtensionObject;
-
- if (extension != null)
- {
- ShowValue(ref index, ref overwrite, extension.Body);
- return;
- }
-
- // show encodeables.
- IEncodeable encodeable = value as IEncodeable;
-
- if (encodeable != null)
- {
- PropertyInfo[] properties = encodeable.GetType().GetProperties();
-
- foreach (PropertyInfo property in properties)
- {
- ShowValue(ref index, ref overwrite, encodeable, property);
- }
-
- return;
- }
-
- // show bytes.
- byte[] bytes = value as byte[];
-
- if (bytes != null)
- {
- if (!PromptOnLongList(bytes.Length/16))
- {
- return;
- }
-
- for (int ii = 0; ii < bytes.Length; ii+=16)
- {
- ShowValue(ref index, ref overwrite, bytes, ii);
- }
-
- return;
- }
-
- // show arrays
- Array array = value as Array;
-
- if (array != null)
- {
- if (!PromptOnLongList(array.Length))
- {
- return;
- }
-
- for (int ii = 0; ii < array.Length; ii++)
- {
- ShowValue(ref index, ref overwrite, array, ii);
- }
-
- return;
- }
-
- // show lists
- IList list = value as IList;
-
- if (list != null)
- {
- if (!PromptOnLongList(list.Count))
- {
- return;
- }
-
- for (int ii = 0; ii < list.Count; ii++)
- {
- ShowValue(ref index, ref overwrite, list, ii);
- }
-
- return;
- }
-
- // show xml elements
- XmlElement xml = value as XmlElement;
-
- if (xml != null)
- {
- if (!PromptOnLongList(xml.ChildNodes.Count))
- {
- return;
- }
-
- for (int ii = 0; ii < xml.ChildNodes.Count; ii++)
- {
- ShowValue(ref index, ref overwrite, xml, ii);
- }
-
- return;
- }
-
- // show data value.
- DataValue datavalue = value as DataValue;
-
- if (datavalue != null)
- {
- ShowValue(ref index, ref overwrite, datavalue, 0);
- ShowValue(ref index, ref overwrite, datavalue, 1);
- ShowValue(ref index, ref overwrite, datavalue, 2);
- ShowValue(ref index, ref overwrite, datavalue, 3);
- return;
- }
-
- // show node id value.
- NodeId nodeId = value as NodeId;
-
- if (nodeId != null)
- {
- ShowValue(ref index, ref overwrite, nodeId, 0);
- ShowValue(ref index, ref overwrite, nodeId, 1);
- ShowValue(ref index, ref overwrite, nodeId, 2);
- return;
- }
-
- // show expanded node id value.
- ExpandedNodeId expandedNodeId = value as ExpandedNodeId;
-
- if (expandedNodeId != null)
- {
- ShowValue(ref index, ref overwrite, expandedNodeId, 0);
- ShowValue(ref index, ref overwrite, expandedNodeId, 1);
- ShowValue(ref index, ref overwrite, expandedNodeId, 2);
- ShowValue(ref index, ref overwrite, expandedNodeId, 3);
- return;
- }
-
- // show qualified name value.
- QualifiedName qualifiedName = value as QualifiedName;
-
- if (qualifiedName != null)
- {
- ShowValue(ref index, ref overwrite, qualifiedName, 0);
- ShowValue(ref index, ref overwrite, qualifiedName, 1);
- return;
- }
-
- // show qualified name value.
- LocalizedText localizedText = value as LocalizedText;
-
- if (localizedText != null)
- {
- ShowValue(ref index, ref overwrite, localizedText, 0);
- ShowValue(ref index, ref overwrite, localizedText, 1);
- return;
- }
-
- // show variant.
- Variant? variant = value as Variant?;
-
- if (variant != null)
- {
- ShowValue(ref index, ref overwrite, variant.Value.Value);
- return;
- }
-
- // show unknown types as strings.
- ShowValue(ref index, ref overwrite, String.Format("{0}", value));
- }
-
- private void ItemsLV_MouseClick(object sender, MouseEventArgs e)
- {
- try
- {
- if (e.Button != MouseButtons.Left)
- {
- return;
- }
-
- ListViewItem listItem = ItemsLV.GetItemAt(e.X, e.Y);
-
- if (listItem == null)
- {
- return;
- }
-
- ValueState state = listItem.Tag as ValueState;
-
- if (state == null || !state.Expandable)
- {
- return;
- }
-
- if (state.Expanded)
- {
- HideChildren(listItem);
- }
- else
- {
- ShowChildren(listItem);
- }
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
- #endregion
-
- #region Event Handlers
- private void UpdatesMI_CheckedChanged(object sender, EventArgs e)
- {
- try
- {
- /*
- if (m_monitoredItem != null)
- {
- if (UpdatesMI.Checked)
- {
- m_monitoredItem.Notification += m_MonitoredItemNotification;
- }
- else
- {
- m_monitoredItem.Notification -= m_MonitoredItemNotification;
- }
- }
- */
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
-
- private void RefreshMI_Click(object sender, EventArgs e)
- {
- try
- {
- /*
- Clear();
- ShowValue(m_monitoredItem);
- */
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
-
- private void ClearMI_Click(object sender, EventArgs e)
- {
- try
- {
- Clear();
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
-
- private void EditMI_Click(object sender, EventArgs e)
- {
- try
- {
- if (ItemsLV.SelectedItems.Count != 1)
- {
- return;
- }
-
- ValueState state = ItemsLV.SelectedItems[0].Tag as ValueState;
-
- if (!IsEditableType(state.Component))
- {
- return;
- }
-
- object value = null;
-
- /*
- object value = new SimpleValueEditDlg().ShowDialog(state.Component, state.Component.GetType());
-
- if (value == null)
- {
- return;
- }
- * */
-
- if (state.Value is IEncodeable)
- {
- PropertyInfo property = (PropertyInfo)state.ComponentId;
-
- MethodInfo[] accessors = property.GetAccessors();
-
- for (int ii = 0; ii < accessors.Length; ii++)
- {
- if (accessors[ii].ReturnType == typeof(void))
- {
- accessors[ii].Invoke(state.Value, new object[] { value });
- state.Component = value;
- break;
- }
- }
- }
-
- DataValue datavalue = state.Value as DataValue;
-
- if (datavalue != null)
- {
- int component = (int)state.ComponentId;
-
- switch (component)
- {
- case 0: { datavalue.Value = value; break; }
- }
- }
-
- if (state.Value is IList)
- {
- int ii = (int)state.ComponentId;
- ((IList)state.Value)[ii] = value;
- state.Component = value;
- }
-
- m_expanding = false;
- int index = 0;
- bool overwrite = true;
- ShowValue(ref index, ref overwrite, state.Value);
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
- #endregion
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DataListCtrl.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DataListCtrl.resx
deleted file mode 100644
index edd3be8a4d..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DataListCtrl.resx
+++ /dev/null
@@ -1,123 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 17, 17
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DateTimeValueEditDlg.Designer.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DateTimeValueEditDlg.Designer.cs
deleted file mode 100644
index 2f09a26a32..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DateTimeValueEditDlg.Designer.cs
+++ /dev/null
@@ -1,148 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-namespace Opc.Ua.Client.Controls
-{
- partial class DateTimeValueEditDlg
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.ButtonsPN = new System.Windows.Forms.Panel();
- this.OkBTN = new System.Windows.Forms.Button();
- this.CancelBTN = new System.Windows.Forms.Button();
- this.MainPN = new System.Windows.Forms.Panel();
- this.ValueCTRL = new System.Windows.Forms.DateTimePicker();
- this.ButtonsPN.SuspendLayout();
- this.MainPN.SuspendLayout();
- this.SuspendLayout();
- //
- // ButtonsPN
- //
- this.ButtonsPN.Controls.Add(this.OkBTN);
- this.ButtonsPN.Controls.Add(this.CancelBTN);
- this.ButtonsPN.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.ButtonsPN.Location = new System.Drawing.Point(0, 28);
- this.ButtonsPN.Name = "ButtonsPN";
- this.ButtonsPN.Size = new System.Drawing.Size(215, 31);
- this.ButtonsPN.TabIndex = 0;
- //
- // OkBTN
- //
- this.OkBTN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.OkBTN.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.OkBTN.Location = new System.Drawing.Point(4, 4);
- this.OkBTN.Name = "OkBTN";
- this.OkBTN.Size = new System.Drawing.Size(75, 23);
- this.OkBTN.TabIndex = 1;
- this.OkBTN.Text = "OK";
- this.OkBTN.UseVisualStyleBackColor = true;
- //
- // CancelBTN
- //
- this.CancelBTN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.CancelBTN.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.CancelBTN.Location = new System.Drawing.Point(136, 4);
- this.CancelBTN.Name = "CancelBTN";
- this.CancelBTN.Size = new System.Drawing.Size(75, 23);
- this.CancelBTN.TabIndex = 0;
- this.CancelBTN.Text = "Cancel";
- this.CancelBTN.UseVisualStyleBackColor = true;
- //
- // MainPN
- //
- this.MainPN.Controls.Add(this.ValueCTRL);
- this.MainPN.Dock = System.Windows.Forms.DockStyle.Fill;
- this.MainPN.Location = new System.Drawing.Point(0, 0);
- this.MainPN.Name = "MainPN";
- this.MainPN.Size = new System.Drawing.Size(215, 28);
- this.MainPN.TabIndex = 1;
- //
- // ValueCTRL
- //
- this.ValueCTRL.CustomFormat = "yyyy-MM-dd HH:mm:ss";
- this.ValueCTRL.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
- this.ValueCTRL.Location = new System.Drawing.Point(4, 5);
- this.ValueCTRL.MaxDate = new System.DateTime(2100, 12, 21, 0, 0, 0, 0);
- this.ValueCTRL.MinDate = new System.DateTime(1900, 1, 1, 0, 0, 0, 0);
- this.ValueCTRL.Name = "ValueCTRL";
- this.ValueCTRL.Size = new System.Drawing.Size(207, 20);
- this.ValueCTRL.TabIndex = 0;
- //
- // DateTimeValueEditDlg
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(215, 59);
- this.Controls.Add(this.MainPN);
- this.Controls.Add(this.ButtonsPN);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
- this.MaximizeBox = false;
- this.MinimumSize = new System.Drawing.Size(221, 91);
- this.Name = "DateTimeValueEditDlg";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Edit DateTime Value";
- this.ButtonsPN.ResumeLayout(false);
- this.MainPN.ResumeLayout(false);
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.Panel ButtonsPN;
- private System.Windows.Forms.Button OkBTN;
- private System.Windows.Forms.Button CancelBTN;
- private System.Windows.Forms.Panel MainPN;
- private System.Windows.Forms.DateTimePicker ValueCTRL;
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DateTimeValueEditDlg.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DateTimeValueEditDlg.resx
deleted file mode 100644
index 19dc0dd8b3..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/DateTimeValueEditDlg.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ExceptionDlg.Designer.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ExceptionDlg.Designer.cs
deleted file mode 100644
index 7627d6db3d..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ExceptionDlg.Designer.cs
+++ /dev/null
@@ -1,131 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-namespace Opc.Ua.Client.Controls
-{
- partial class ExceptionDlg
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.BottomPanel = new System.Windows.Forms.Panel();
- this.OkButton = new System.Windows.Forms.Button();
- this.MainPN = new System.Windows.Forms.Panel();
- this.ExceptionBrowser = new System.Windows.Forms.WebBrowser();
- this.BottomPanel.SuspendLayout();
- this.MainPN.SuspendLayout();
- this.SuspendLayout();
- //
- // BottomPanel
- //
- this.BottomPanel.Controls.Add(this.OkButton);
- this.BottomPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.BottomPanel.Location = new System.Drawing.Point(0, 433);
- this.BottomPanel.Name = "BottomPanel";
- this.BottomPanel.Size = new System.Drawing.Size(770, 37);
- this.BottomPanel.TabIndex = 0;
- //
- // OkButton
- //
- this.OkButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
- this.OkButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.OkButton.Location = new System.Drawing.Point(348, 8);
- this.OkButton.Name = "OkButton";
- this.OkButton.Size = new System.Drawing.Size(75, 23);
- this.OkButton.TabIndex = 0;
- this.OkButton.Text = "OK";
- this.OkButton.UseVisualStyleBackColor = true;
- this.OkButton.Click += new System.EventHandler(this.OkButton_Click);
- //
- // MainPN
- //
- this.MainPN.Controls.Add(this.ExceptionBrowser);
- this.MainPN.Dock = System.Windows.Forms.DockStyle.Fill;
- this.MainPN.Location = new System.Drawing.Point(0, 0);
- this.MainPN.Name = "MainPN";
- this.MainPN.Padding = new System.Windows.Forms.Padding(3);
- this.MainPN.Size = new System.Drawing.Size(770, 433);
- this.MainPN.TabIndex = 1;
- //
- // ExceptionBrowser
- //
- this.ExceptionBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
- this.ExceptionBrowser.Location = new System.Drawing.Point(3, 3);
- this.ExceptionBrowser.MinimumSize = new System.Drawing.Size(20, 20);
- this.ExceptionBrowser.Name = "ExceptionBrowser";
- this.ExceptionBrowser.Size = new System.Drawing.Size(764, 427);
- this.ExceptionBrowser.TabIndex = 0;
- //
- // ExceptionDlg
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(770, 470);
- this.Controls.Add(this.MainPN);
- this.Controls.Add(this.BottomPanel);
- this.Name = "ExceptionDlg";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Exception";
- this.BottomPanel.ResumeLayout(false);
- this.MainPN.ResumeLayout(false);
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.Panel BottomPanel;
- private System.Windows.Forms.Button OkButton;
- private System.Windows.Forms.Panel MainPN;
- private System.Windows.Forms.WebBrowser ExceptionBrowser;
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ExceptionDlg.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ExceptionDlg.cs
deleted file mode 100644
index e2d48d479f..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ExceptionDlg.cs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-
-namespace Opc.Ua.Client.Controls
-{
- ///
- /// A dialog that displays an exception trace in an HTML page.
- ///
- public partial class ExceptionDlg : Form
- {
- ///
- /// Initializes a new instance of the class.
- ///
- public ExceptionDlg()
- {
- InitializeComponent();
- }
-
- ///
- /// Replaces all special characters in the message.
- ///
- private string ReplaceSpecialCharacters(string message)
- {
- message = message.Replace("&", "&");
- message = message.Replace("<", "<");
- message = message.Replace(">", ">");
- message = message.Replace("\"", """);
- message = message.Replace("'", "'");
- message = message.Replace("\r\n", "
");
-
- return message;
- }
-
- ///
- /// Display the exception in the dialog.
- ///
- public void ShowDialog(string caption, Exception e)
- {
- Text = caption;
-
- StringBuilder buffer = new StringBuilder();
-
- buffer.Append("");
-
- while (e != null)
- {
- string message = e.Message;
-
- ServiceResultException exception = e as ServiceResultException;
-
- if (exception != null)
- {
- message = exception.ToLongString();
- }
-
- message = ReplaceSpecialCharacters(message);
-
- if (exception != null)
- {
- buffer.Append("");
- buffer.Append("");
- buffer.Append(message);
- buffer.Append("");
- buffer.Append("
");
- }
- else
- {
- buffer.Append("");
- buffer.Append(message);
- buffer.Append("
");
- }
-
- message = e.StackTrace;
-
- if (!String.IsNullOrEmpty(message))
- {
- message = ReplaceSpecialCharacters(message);
-
- buffer.Append("");
- buffer.Append("");
- buffer.Append(message);
- buffer.Append("");
- buffer.Append("
");
- }
-
- e = e.InnerException;
- }
-
- buffer.Append("");
-
- ExceptionBrowser.DocumentText = buffer.ToString();
-
- ShowDialog();
- }
-
- private void OkButton_Click(object sender, EventArgs e)
- {
- Close();
- }
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ExceptionDlg.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ExceptionDlg.resx
deleted file mode 100644
index 19dc0dd8b3..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ExceptionDlg.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/GuiUtils.Designer.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/GuiUtils.Designer.cs
deleted file mode 100644
index 7d88864373..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/GuiUtils.Designer.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-namespace Opc.Ua.Client.Controls
-{
- partial class GuiUtils
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Component Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GuiUtils));
- this.ImageList = new System.Windows.Forms.ImageList(this.components);
- this.SuspendLayout();
- //
- // ImageList
- //
- this.ImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ImageList.ImageStream")));
- this.ImageList.TransparentColor = System.Drawing.Color.Transparent;
- this.ImageList.Images.SetKeyName(0, "SimpleItem");
- this.ImageList.Images.SetKeyName(1, "Object");
- this.ImageList.Images.SetKeyName(2, "FolderOld");
- this.ImageList.Images.SetKeyName(3, "Area");
- this.ImageList.Images.SetKeyName(4, "Variable");
- this.ImageList.Images.SetKeyName(5, "Property");
- this.ImageList.Images.SetKeyName(6, "Method");
- this.ImageList.Images.SetKeyName(7, "ReferenceType");
- this.ImageList.Images.SetKeyName(8, "DataType");
- this.ImageList.Images.SetKeyName(9, "View");
- this.ImageList.Images.SetKeyName(10, "ExpandPlus");
- this.ImageList.Images.SetKeyName(11, "ExpandMinus");
- this.ImageList.Images.SetKeyName(12, "VariableType");
- this.ImageList.Images.SetKeyName(13, "ObjectType");
- this.ImageList.Images.SetKeyName(14, "Info");
- this.ImageList.Images.SetKeyName(15, "Server");
- this.ImageList.Images.SetKeyName(16, "ServerStopped");
- this.ImageList.Images.SetKeyName(17, "Computer");
- this.ImageList.Images.SetKeyName(18, "Network");
- this.ImageList.Images.SetKeyName(19, "Folder");
- this.ImageList.Images.SetKeyName(20, "SelectedFolder");
- this.ImageList.Images.SetKeyName(21, "Process");
- this.ImageList.Images.SetKeyName(22, "Certificate");
- this.ImageList.Images.SetKeyName(23, "CertificateStore");
- this.ImageList.Images.SetKeyName(24, "Users");
- this.ImageList.Images.SetKeyName(25, "Service");
- this.ImageList.Images.SetKeyName(26, "InvalidCertificate");
- this.ImageList.Images.SetKeyName(27, "Drive");
- this.ImageList.Images.SetKeyName(28, "ServiceGroup");
- this.ImageList.Images.SetKeyName(29, "Desktop");
- this.ImageList.Images.SetKeyName(30, "SingleUser");
- this.ImageList.Images.SetKeyName(31, "UserGroup");
- this.ImageList.Images.SetKeyName(32, "RedCross");
- this.ImageList.Images.SetKeyName(33, "GreenCheck");
- this.ImageList.Images.SetKeyName(34, "UsersRedCross");
- //
- // GuiUtils
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Name = "GuiUtils";
- this.ResumeLayout(false);
-
- }
-
- #endregion
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/GuiUtils.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/GuiUtils.cs
deleted file mode 100644
index 52e9f7c578..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/GuiUtils.cs
+++ /dev/null
@@ -1,998 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Security.Cryptography;
-using System.Security.Cryptography.X509Certificates;
-using Opc.Ua.Configuration;
-
-namespace Opc.Ua.Client.Controls
-{
- ///
- /// A class that provide various common utility functions and shared resources.
- ///
- public partial class GuiUtils : UserControl
- {
- ///
- /// Initializes a new instance of the class.
- ///
- public GuiUtils()
- {
- InitializeComponent();
- }
-
- ///
- /// The list of icon images.
- ///
- public System.Windows.Forms.ImageList ImageList;
-
- ///
- /// Displays the details of an exception.
- ///
- public static void HandleException(string caption, MethodBase method, Exception e)
- {
- if (String.IsNullOrEmpty(caption))
- {
- caption = method.Name;
- }
-
- new ExceptionDlg().ShowDialog(caption, e);
- }
-
- ///
- /// Defines names for the available 16x16 icons.
- ///
- public static class Icons
- {
- ///
- /// An attribute
- ///
- public const string Attribute = "SimpleItem";
-
- ///
- /// A property
- ///
- public const string Property = "Property";
-
- ///
- /// A variable
- ///
- public const string Variable = "Variable";
-
- ///
- /// An object
- ///
- public const string Object = "Object";
-
- ///
- /// A method
- ///
- public const string Method = "Method";
-
- ///
- /// A single computer.
- ///
- public const string Computer = "Computer";
-
- ///
- /// A computer network.
- ///
- public const string Network = "Network";
-
- ///
- /// A folder.
- ///
- public const string Folder = "Folder";
-
- ///
- /// A selected folder.
- ///
- public const string SelectedFolder = "SelectedFolder";
-
- ///
- /// A process or application.
- ///
- public const string Process = "Process";
-
- ///
- /// A certificate
- ///
- public const string Certificate = "Certificate";
-
- ///
- /// An invalid certificate
- ///
- public const string InvalidCertificate = "InvalidCertificate";
-
- ///
- /// A certificate store
- ///
- public const string CertificateStore = "CertificateStore";
-
- ///
- /// A group of users.
- ///
- public const string Users = "Users";
-
- ///
- /// A service.
- ///
- public const string Service = "Service";
-
- ///
- /// A logical drive.
- ///
- public const string Drive = "Drive";
-
- ///
- /// The computer desktop.
- ///
- public const string Desktop = "Desktop";
-
- ///
- /// A single user.
- ///
- public const string SingleUser = "SingleUser";
-
- ///
- /// A group of services.
- ///
- public const string ServiceGroup = "ServiceGroup";
-
- ///
- /// A group of users.
- ///
- public const string UserGroup = "UserGroup";
-
- ///
- /// A green check
- ///
- public const string GreenCheck = "GreenCheck";
-
- ///
- /// A red cross
- ///
- public const string RedCross = "RedCross";
-
- ///
- /// A users icon with a red cross through it.
- ///
- public const string UsersRedCross = "UsersRedCross";
- }
-
- ///
- /// Uses the command line to override the UA TCP implementation specified in the configuration.
- ///
- /// The configuration instance that stores the configurable information for a UA application.
- ///
- public static void OverrideUaTcpImplementation(ApplicationConfiguration configuration)
- {
- // check if UA TCP configuration included.
- TransportConfiguration transport = null;
-
- for (int ii = 0; ii < configuration.TransportConfigurations.Count; ii++)
- {
- if (configuration.TransportConfigurations[ii].UriScheme == Utils.UriSchemeOpcTcp)
- {
- transport = configuration.TransportConfigurations[ii];
- break;
- }
- }
-
- // check if UA TCP implementation explicitly specified.
- if (transport != null)
- {
- string[] args = Environment.GetCommandLineArgs();
-
- if (args != null && args.Length > 1)
- {
- if (String.Compare(args[1], "-uaTcpAnsiC", StringComparison.InvariantCultureIgnoreCase) == 0)
- {
- transport.TypeName = Utils.UaTcpBindingNativeStack;
- }
- else if (String.Compare(args[1], "-uaTcpDotNet", StringComparison.InvariantCultureIgnoreCase) == 0)
- {
- transport.TypeName = Utils.UaTcpBindingDefault;
- }
- }
- }
- }
-
- ///
- /// Displays the UA-TCP configuration in the form.
- ///
- /// The form to display the UA-TCP configuration.
- /// The configuration instance that stores the configurable information for a UA application.
- public static void DisplayUaTcpImplementation(Form form, ApplicationConfiguration configuration)
- {
- // check if UA TCP configuration included.
- TransportConfiguration transport = null;
-
- for (int ii = 0; ii < configuration.TransportConfigurations.Count; ii++)
- {
- if (configuration.TransportConfigurations[ii].UriScheme == Utils.UriSchemeOpcTcp)
- {
- transport = configuration.TransportConfigurations[ii];
- break;
- }
- }
-
- // check if UA TCP implementation explicitly specified.
- if (transport != null)
- {
- string text = form.Text;
-
- int index = text.LastIndexOf("(UA TCP - ");
-
- if (index >= 0)
- {
- text = text.Substring(0, index);
- }
-
- if (transport.TypeName == Utils.UaTcpBindingNativeStack)
- {
- form.Text = Utils.Format("{0} (UA TCP - ANSI C)", text);
- }
- else
- {
- form.Text = Utils.Format("{0} (UA TCP - C#)", text);
- }
- }
- }
-
- ///
- /// Handles a certificate validation error.
- ///
- /// The caller's text is used as the caption of the shown to provide details about the error.
- /// The validator (not used).
- /// The instance event arguments provided when a certificate validation error occurs.
- public static void HandleCertificateValidationError(Form caller, CertificateValidator validator, CertificateValidationEventArgs e)
- {
- StringBuilder buffer = new StringBuilder();
-
- buffer.AppendFormat("Certificate could not validated: {0}\r\n\r\n", e.Error.StatusCode);
- buffer.AppendFormat("Subject: {0}\r\n", e.Certificate.Subject);
- buffer.AppendFormat("Issuer: {0}\r\n", (e.Certificate.Subject == e.Certificate.Issuer)?"Self-signed":e.Certificate.Issuer);
- buffer.AppendFormat("Valid From: {0}\r\n", e.Certificate.NotBefore);
- buffer.AppendFormat("Valid To: {0}\r\n", e.Certificate.NotAfter);
- buffer.AppendFormat("Thumbprint: {0}\r\n\r\n", e.Certificate.Thumbprint);
-
- buffer.AppendFormat("Accept anyways?");
-
- if (MessageBox.Show(buffer.ToString(), caller.Text, MessageBoxButtons.YesNo) == DialogResult.Yes)
- {
- e.Accept = true;
- }
- }
-
- ///
- /// Does any configuration checks before starting up.
- ///
- public static ApplicationConfiguration LoadConfiguration(
- string configSectionName,
- ApplicationType applicationType,
- string defaultConfigFile,
- bool interactive)
- {
- // get the location of the config file.
- string filePath = ApplicationConfiguration.GetFilePathFromAppConfig(configSectionName);
-
- if (filePath == null || !System.IO.File.Exists(filePath))
- {
- filePath = Utils.GetAbsoluteFilePath(defaultConfigFile, false, false, false);
- }
-
- try
- {
- // load the configuration file.
- ApplicationConfiguration configuration = ApplicationConfiguration.Load(new System.IO.FileInfo(filePath), applicationType, null);
-
- if (configuration == null)
- {
- return null;
- }
-
- return configuration;
- }
- catch (Exception e)
- {
- // warn user.
- if (interactive)
- {
- StringBuilder message = new StringBuilder();
-
- message.Append("Could not load configuration file.\r\n");
- message.Append(filePath);
- message.Append("\r\n");
- message.Append("\r\n");
- message.Append(e.Message);
-
- MessageBox.Show(message.ToString(), "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
-
- Utils.Trace(e, "Could not load configuration file. {0}", filePath);
- return null;
- }
- }
-
- ///
- /// Does any configuration checks before starting up.
- ///
- public static ApplicationConfiguration DoStartupChecks(
- string configSectionName,
- ApplicationType applicationType,
- string defaultConfigFile,
- bool interactive)
- {
- // load the configuration file.
- ApplicationConfiguration configuration = LoadConfiguration(configSectionName, applicationType, defaultConfigFile, interactive);
-
- if (configuration == null)
- {
- return null;
- }
-
- // check the certificate.
- X509Certificate2 certificate = CheckApplicationInstanceCertificate(configuration, 1024, interactive, true);
-
- if (certificate == null)
- {
- return null;
- }
-
- // ensure the application uri matches the certificate.
- string applicationUri = Utils.GetApplicationUriFromCertficate(certificate);
-
- if (applicationUri != null)
- {
- configuration.ApplicationUri = applicationUri;
- }
-
- return configuration;
- }
-
- ///
- /// Configures the firewall.
- ///
- /// The configuration.
- /// if set to true if the user should be prompted.
- public static void ConfigureFirewall(ApplicationConfiguration configuration, bool interactive)
- {
- // check if application configuration requires it.
- if (!configuration.SecurityConfiguration.ConfigureFirewall)
- {
- return;
- }
-
- // ensure the firewall is configured.
- if (configuration.ServerConfiguration == null && configuration.DiscoveryServerConfiguration == null)
- {
- return;
- }
-
- // check if there are any ports to open.
- StringCollection baseAddresses = null;
-
- if (configuration.ServerConfiguration != null)
- {
- baseAddresses = configuration.ServerConfiguration.BaseAddresses;
- }
-
- if (configuration.DiscoveryServerConfiguration != null)
- {
- baseAddresses = configuration.DiscoveryServerConfiguration.BaseAddresses;
- }
-
- if (baseAddresses == null || baseAddresses.Count == 0)
- {
- return;
- }
-
- // check if firewall needs configuration.
- try
- {
- if (!ConfigUtils.CheckFirewallAccess(Application.ExecutablePath, baseAddresses))
- {
- bool configure = true;
-
- if (interactive)
- {
- string message = "The firewall has not been configured to allow external access to the server. Configure firewall?";
-
- if (MessageBox.Show(message, configuration.ApplicationName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
- {
- configure = false;
- }
- }
-
- if (configure)
- {
- ConfigUtils.SetFirewallAccess(configuration.ApplicationName, Application.ExecutablePath, baseAddresses);
- }
- }
- }
- catch (Exception e)
- {
- Utils.Trace(e, "Unexpected error while checking or changing the firewall configuration.");
- }
- }
-
- ///
- /// Deletes an existing application instance certificate.
- ///
- /// The configuration instance that stores the configurable information for a UA application.
- public static void DeleteApplicationInstanceCertificate(ApplicationConfiguration configuration)
- {
- // create a default certificate id none specified.
- CertificateIdentifier id = configuration.SecurityConfiguration.ApplicationCertificate;
-
- if (id == null)
- {
- return;
- }
-
- // delete private key.
- X509Certificate2 certificate = id.Find();
-
- // delete trusted peer certificate.
- if (configuration.SecurityConfiguration != null && configuration.SecurityConfiguration.TrustedPeerCertificates != null)
- {
- string thumbprint = id.Thumbprint;
-
- if (certificate != null)
- {
- thumbprint = certificate.Thumbprint;
- }
-
- if (!String.IsNullOrEmpty(thumbprint))
- {
- using (ICertificateStore store = configuration.SecurityConfiguration.TrustedPeerCertificates.OpenStore())
- {
- store.Delete(thumbprint);
- }
- }
- }
-
- // delete private key.
- if (certificate != null)
- {
- using (ICertificateStore store = id.OpenStore())
- {
- store.Delete(certificate.Thumbprint);
- }
- }
- }
-
- ///
- /// Creates an application instance certificate if one does not already exist.
- ///
- public static X509Certificate2 CheckApplicationInstanceCertificate(ApplicationConfiguration configuration)
- {
- return CheckApplicationInstanceCertificate(configuration, 1024, Environment.UserInteractive, true);
- }
-
- ///
- /// Creates an application instance certificate if one does not already exist.
- ///
- public static X509Certificate2 CheckApplicationInstanceCertificate(
- ApplicationConfiguration configuration,
- ushort keySize,
- bool interactive,
- bool updateFile)
- {
- // create a default certificate id none specified.
- CertificateIdentifier id = configuration.SecurityConfiguration.ApplicationCertificate;
-
- if (id == null)
- {
- id = new CertificateIdentifier();
- id.StoreType = Utils.DefaultStoreType;
- id.StorePath = Utils.DefaultStorePath;
- id.SubjectName = configuration.ApplicationName;
- }
-
- bool createNewCertificate = false;
- IList serverDomainNames = configuration.GetServerDomainNames();
-
- // check for private key.
- X509Certificate2 certificate = id.Find(true);
-
- if (certificate == null)
- {
- // check if config file has wrong thumprint.
- if (!String.IsNullOrEmpty(id.SubjectName) && !String.IsNullOrEmpty(id.Thumbprint))
- {
- CertificateIdentifier id2 = new CertificateIdentifier();
- id2.StoreType = id.StoreType;
- id2.StorePath = id.StorePath;
- id2.SubjectName = id.SubjectName;
- id = id2;
-
- certificate = id2.Find(true);
-
- if (certificate != null)
- {
- string message = Utils.Format(
- "Matching certificate with SubjectName={0} found but with a different thumbprint. Use certificate?",
- id.SubjectName);
-
- if (interactive)
- {
- if (MessageBox.Show(message, configuration.ApplicationName, MessageBoxButtons.YesNo) == DialogResult.No)
- {
- certificate = null;
- }
- }
- }
- }
- }
-
- // check if private key is missing.
- if (certificate == null)
- {
- certificate = id.Find(false);
-
- if (certificate != null)
- {
- string message = Utils.Format(
- "Matching certificate with SubjectName={0} found but without a private key. Create a new certificate?",
- id.SubjectName);
-
- if (interactive)
- {
- if (MessageBox.Show(message, configuration.ApplicationName, MessageBoxButtons.YesNo) == DialogResult.No)
- {
- certificate = null;
- }
- }
- }
- }
-
- // check domains.
- if (certificate != null)
- {
- IList certificateDomainNames = Utils.GetDomainsFromCertficate(certificate);
-
- for (int ii = 0; ii < serverDomainNames.Count; ii++)
- {
- if (Utils.FindStringIgnoreCase(certificateDomainNames, serverDomainNames[ii]))
- {
- continue;
- }
-
- if (String.Compare(serverDomainNames[ii], "localhost", StringComparison.OrdinalIgnoreCase) == 0)
- {
- // check computer name.
- string computerName = System.Net.Dns.GetHostName();
-
- if (Utils.FindStringIgnoreCase(certificateDomainNames, computerName))
- {
- continue;
- }
-
- // check for aliases.
- System.Net.IPHostEntry entry = System.Net.Dns.GetHostEntry(computerName);
-
- bool found = false;
-
- for (int jj = 0; jj < entry.Aliases.Length; jj++)
- {
- if (Utils.FindStringIgnoreCase(certificateDomainNames, entry.Aliases[jj]))
- {
- found = true;
- break;
- }
- }
-
- if (found)
- {
- continue;
- }
-
- // check for ip addresses.
- for (int jj = 0; jj < entry.AddressList.Length; jj++)
- {
- if (Utils.FindStringIgnoreCase(certificateDomainNames, entry.AddressList[jj].ToString()))
- {
- found = true;
- break;
- }
- }
-
- if (found)
- {
- continue;
- }
- }
-
- string message = Utils.Format(
- "The server is configured to use domain '{0}' which does not appear in the certificate. Update certificate?",
- serverDomainNames[ii]);
-
- createNewCertificate = true;
-
- if (interactive)
- {
- if (MessageBox.Show(message, configuration.ApplicationName, MessageBoxButtons.YesNo) != DialogResult.Yes)
- {
- createNewCertificate = false;
- continue;
- }
- }
-
- Utils.Trace(message);
- break;
- }
-
- if (!createNewCertificate)
- {
- // check if key size matches.
- if (keySize == certificate.PublicKey.Key.KeySize)
- {
- AddToTrustedStore(configuration, certificate);
- return certificate;
- }
- }
- }
-
- // prompt user.
- if (interactive)
- {
- if (!createNewCertificate)
- {
- if (MessageBox.Show("Application does not have an instance certificate. Create one automatically?", configuration.ApplicationName, MessageBoxButtons.YesNo) == DialogResult.No)
- {
- return null;
- }
- }
- }
-
- // delete existing certificate.
- if (certificate != null)
- {
- DeleteApplicationInstanceCertificate(configuration);
- }
-
- // add the localhost.
- if (serverDomainNames.Count == 0)
- {
- serverDomainNames.Add(System.Net.Dns.GetHostName());
- }
-
- certificate = Opc.Ua.CertificateFactory.CreateCertificate(
- id.StoreType,
- id.StorePath,
- configuration.ApplicationUri,
- configuration.ApplicationName,
- null,
- serverDomainNames,
- keySize,
- 300);
-
- id.Certificate = certificate;
- AddToTrustedStore(configuration, certificate);
-
- if (updateFile && !String.IsNullOrEmpty(configuration.SourceFilePath))
- {
- configuration.SaveToFile(configuration.SourceFilePath);
- }
-
- configuration.CertificateValidator.Update(configuration.SecurityConfiguration);
-
- return configuration.SecurityConfiguration.ApplicationCertificate.LoadPrivateKey(null);
- }
-
- ///
- /// Adds the certificate to the Trusted Certificate Store
- ///
- /// The application's configuration which specifies the location of the TrustedStore.
- /// The certificate to register.
- public static void AddToTrustedStore(ApplicationConfiguration configuration, X509Certificate2 certificate)
- {
- ICertificateStore store = configuration.SecurityConfiguration.TrustedPeerCertificates.OpenStore();
-
- try
- {
- // check if it already exists.
- X509Certificate2 certificate2 = store.FindByThumbprint(certificate.Thumbprint);
-
- if (certificate2 != null)
- {
- return;
- }
-
- List subjectName = Utils.ParseDistinguishedName(certificate.Subject);
-
- // check for old certificate.
- X509Certificate2Collection certificates = store.Enumerate();
-
- for (int ii = 0; ii < certificates.Count; ii++)
- {
- if (Utils.CompareDistinguishedName(certificates[ii], subjectName))
- {
- if (certificates[ii].Thumbprint == certificate.Thumbprint)
- {
- return;
- }
-
- store.Delete(certificates[ii].Thumbprint);
- break;
- }
- }
-
- // add new certificate.
- X509Certificate2 publicKey = new X509Certificate2(certificate.GetRawCertData());
- store.Add(publicKey);
- }
- finally
- {
- store.Close();
- }
- }
-
- ///
- /// Returns a default value for the data type.
- ///
- public static object GetDefaultValue(NodeId datatypeId, int valueRank)
- {
- Type type = TypeInfo.GetSystemType(datatypeId, EncodeableFactory.GlobalFactory);
-
- if (type == null)
- {
- return null;
- }
-
- if (valueRank < 0)
- {
- if (type == typeof(String))
- {
- return System.String.Empty;
- }
-
- if (type == typeof(byte[]))
- {
- return new byte[0];
- }
-
- if (type == typeof(NodeId))
- {
- return Opc.Ua.NodeId.Null;
- }
-
- if (type == typeof(ExpandedNodeId))
- {
- return Opc.Ua.ExpandedNodeId.Null;
- }
-
- if (type == typeof(QualifiedName))
- {
- return Opc.Ua.QualifiedName.Null;
- }
-
- if (type == typeof(LocalizedText))
- {
- return Opc.Ua.LocalizedText.Null;
- }
-
- if (type == typeof(Guid))
- {
- return System.Guid.Empty;
- }
-
- if (type == typeof(System.Xml.XmlElement))
- {
- System.Xml.XmlDocument document = new System.Xml.XmlDocument();
- document.InnerXml = "";
- return document.DocumentElement;
- }
-
- return Activator.CreateInstance(type);
- }
-
- return Array.CreateInstance(type, new int[valueRank]);
- }
-
- ///
- /// Displays a dialog that allows a use to edit a value.
- ///
- public static object EditValue(Session session, object value)
- {
- TypeInfo typeInfo = TypeInfo.Construct(value);
-
- if (typeInfo != null)
- {
- return EditValue(session, value, (uint)typeInfo.BuiltInType, typeInfo.ValueRank);
- }
-
- return null;
- }
-
- ///
- /// Displays a dialog that allows a use to edit a value.
- ///
- public static object EditValue(Session session, object value, NodeId datatypeId, int valueRank)
- {
- if (value == null)
- {
- value = GetDefaultValue(datatypeId, valueRank);
- }
-
- if (valueRank >= 0)
- {
- return new ComplexValueEditDlg().ShowDialog(value);
- }
-
- BuiltInType builtinType = TypeInfo.GetBuiltInType(datatypeId, session.TypeTree);
-
- switch (builtinType)
- {
- case BuiltInType.Boolean:
- case BuiltInType.Byte:
- case BuiltInType.SByte:
- case BuiltInType.Int16:
- case BuiltInType.UInt16:
- case BuiltInType.Int32:
- case BuiltInType.UInt32:
- case BuiltInType.Int64:
- case BuiltInType.UInt64:
- case BuiltInType.Float:
- case BuiltInType.Double:
- case BuiltInType.Enumeration:
- {
- return new NumericValueEditDlg().ShowDialog(value, TypeInfo.GetSystemType(builtinType, valueRank));
- }
-
- case BuiltInType.Number:
- {
- return new NumericValueEditDlg().ShowDialog(value, TypeInfo.GetSystemType(BuiltInType.Double, valueRank));
- }
-
- case BuiltInType.Integer:
- {
- return new NumericValueEditDlg().ShowDialog(value, TypeInfo.GetSystemType(BuiltInType.Int64, valueRank));
- }
-
- case BuiltInType.UInteger:
- {
- return new NumericValueEditDlg().ShowDialog(value, TypeInfo.GetSystemType(BuiltInType.UInt64, valueRank));
- }
-
- case BuiltInType.NodeId:
- {
- return new NodeIdValueEditDlg().ShowDialog(session, (NodeId)value);
- }
-
- case BuiltInType.ExpandedNodeId:
- {
- return new NodeIdValueEditDlg().ShowDialog(session, (ExpandedNodeId)value);
- }
-
- case BuiltInType.DateTime:
- {
- DateTime datetime = (DateTime)value;
-
- if (new DateTimeValueEditDlg().ShowDialog(ref datetime))
- {
- return datetime;
- }
-
- return null;
- }
-
- case BuiltInType.QualifiedName:
- {
- QualifiedName qname = (QualifiedName)value;
-
- string name = new StringValueEditDlg().ShowDialog(qname.Name);
-
- if (name != null)
- {
- return new QualifiedName(name, qname.NamespaceIndex);
- }
-
- return null;
- }
-
- case BuiltInType.String:
- {
- return new StringValueEditDlg().ShowDialog((string)value);
- }
-
- case BuiltInType.LocalizedText:
- {
- LocalizedText ltext = (LocalizedText)value;
-
- string text = new StringValueEditDlg().ShowDialog(ltext.Text);
-
- if (text != null)
- {
- return new LocalizedText(text, ltext.Locale);
- }
-
- return null;
- }
- }
-
- return new ComplexValueEditDlg().ShowDialog(value);
- }
-
- ///
- /// Returns to display icon for the target of a reference.
- ///
- public static string GetTargetIcon(Session session, ReferenceDescription reference)
- {
- return GetTargetIcon(session, reference.NodeClass, reference.TypeDefinition);
- }
-
- ///
- /// Returns to display icon for the target of a reference.
- ///
- public static string GetTargetIcon(Session session, NodeClass nodeClass, ExpandedNodeId typeDefinitionId)
- {
- // make sure the type definition is in the cache.
- INode typeDefinition = session.NodeCache.Find(typeDefinitionId);
-
- switch (nodeClass)
- {
- case NodeClass.Object:
- {
- if (session.TypeTree.IsTypeOf(typeDefinitionId, ObjectTypes.FolderType))
- {
- return "Folder";
- }
-
- return "Object";
- }
-
- case NodeClass.Variable:
- {
- if (session.TypeTree.IsTypeOf(typeDefinitionId, VariableTypes.PropertyType))
- {
- return "Property";
- }
-
- return "Variable";
- }
- }
-
- return nodeClass.ToString();
- }
-
- #region Private Methods
- #endregion
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/GuiUtils.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/GuiUtils.resx
deleted file mode 100644
index e1e42bcd1d..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/GuiUtils.resx
+++ /dev/null
@@ -1,539 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 17, 17
-
-
- False
-
-
-
- AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
- LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
- ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAe
- XwAAAk1TRnQBSQFMAgEBIwEAASQBAAEEAQABEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA
- AwABkAMAAQEBAAEYBgABbBIAP/8DwQMqAzMDwUX/MAA8/wPBAywBCAF6AQ0BCAF6AQ0DMxX/A/cD7wPm
- BuED4gPmA+0D9RX3MAAD/wMyAzADLwMuA8AM/wPAAyUDJAMiAyEM/wPBAy8BCAF6AQ0BDgH0ARkBDgH0
- ARkDKgPBEv8D7QPKA6gGnAOdA6UDtQPMA90D3gPYA9YD1wPdA+kwAAP/AzMCAQHBAgEBwQIBAcEDLgPA
- Bv8DwAMnAgEBwQIBAcECAQHBAyIJ/wOnAyoBBgFpAQsBAAH/AgAB/wIAAf8BAAEGAWkBCwMtEv8B2QHK
- AcMBrQFuAVcCAQHBAgEBwQIBAcEBgwFMATcBcAFSAUUDZAN6A5MDlAIBAcECAQHBAgEBwQOUA70wAAP/
- AzQCAQHBAmkB/wJlAf8CAQHBAy4GwAMqAgEBwQJEAf8CPwH/AgEBwQMkBv8DwQMzAQgBegENAQ4B9AEZ
- AQ4B9AEZARQBpAEeAQ4B9AEZAQ4B9AEZAysDwQ//AcYBaAFFAd0BUwE0AgEBwQJpAf8CZQH/AgEBwQH4
- AWYBUgHNAU4BLQFOAVIBLgEzAW4BMwIBAcECRAH/Aj8B/wIBAcEBQAFiAUADlDAAA/8DpgMtAgABpwJp
- Af8CZQH/AgABpwMnAyYCAAGnAmAB/wJpAf8CAAGnAyADpgb/AzYBCAF6AQ0BDgH0ARkBDgH0ARkBFAGk
- AR4BCAF6AQ0BDgH0ARkBDgH0ARkBCAF6AQ0DNQ//Ac8BgQFkAfkBZAFRAf0BewFjAgABpwJpAf8CZQH/
- AgABpwH9AWsBWAGSAYcBPQIAAacCYAH/AmkB/wIAAacBOQG1ATkBKgGFASoDlTAACf8DNAIBAcECaQH/
- AmUB/wIBAcECAQHBAlcB/wJlAf8CAQHBAykDwAn/AzcBDgH0ARkBDgH0ARkBFAGkAR4DMgM7ARQBpAEe
- AQ4B9AEZAQ4B9AEZAywDwQz/AewB3QHWAeMBZwFKAf0BiAFsAeEBfgFSAgEBwQJpAf8CZQH/AgEBwQIB
- AcECVwH/AmUB/wIBAcEBdAHSAXQBUwHCAVMBOgGJAToDvTAACf8DwAM0AgEBwQJpAf8CZQH/AmAB/wJb
- Af8CAQHBAysDwAz/AzkBDAHTARUBEQGOARkDLQanAyoBAAH/AgAB/wEAAQYBaQELAy4M/wPrAboBowGZ
- AacBWAFPAUMBJAFbAUQBNwF5AgEBwQJpAf8CZQH/AmAB/wJbAf8CAQHBAboBzwGoAWQBwQFkAUYBpgFG
- AYUBmAGFA+IwAAz/A8ADNAIBAcECZQH/AmAB/wIBAcEDLgPAD/8DwQNCAzcDwQb/AzwBFAGkAR4BDgH0
- ARkBDgH0ARkDLgPBCf8DsQMWAQQBBwEOARABLAFyARUBOwGgAREBMgGXAgEBwQJlAf8CYAH/AgEBwQER
- AXcBuQEhAX4BuwEeAXQBXgFKAV0BSgOkA+YwAAn/A6YDLwIAAacCZQH/AmkB/wJlAf8CYAH/AgABpwMn
- A6Ye/wPBAzIBDgH0ARkBDgH0ARkBCAF6AQ0DOAn/AzwDGwETATABaQEbAU4BswEeAVgBvQIAAacCZQH/
- AmkB/wJlAf8CYAH/AgABpwE0AZkB/wEsAZEB7wE1AVUBaAODA9QwAAb/A8ADOQIBAcECfAH/AncB/wIB
- AcECAQHBAmkB/wJlAf8CAQHBAy4DwB7/Az0BFAGkAR4BDgH0ARkBDgH0ARkDLwPBBv8DFgMpARkBQwGB
- AScBdAHZAgEBwQJ8Af8CdwH/AgEBwQIBAcECaQH/AmUB/wIBAcEBPwGkAf8BJwGAAcADbAPDMAAG/wM8
- AgEBwQKGAf8CgQH/AgEBwQM1AzQCAQHBAmkB/wJlAf8CAQHBAy4DwBv/A6cDLAEAAf8CAAH/AQABBgFp
- AQsDMQb/Ay0DNgEmAUYBbAIBAcEChgH/AoEB/wIBAcEBUAFfAXEBTQGZAc8CAQHBAmkB/wJlAf8CAQHB
- ATIBlwHmAWABZgFqA70wAAP/Az4CAQHBAo8B/wKKAf8CAQHBAzgGwAM0AgEBwQJpAf8CZQH/AgEBwQMu
- Hv8DPgEUAaQBHgEOAfQBGQEOAfQBGQMwA8ED/wNoA0sCAQHBAo8B/wKKAf8CAQHBARYBSAF+AXYBgwGQ
- AVkBpAHVAU0BsgHyAgEBwQJpAf8CZQH/AgEBwQFXAXABfQPJMAAD/wM3AgABpwIAAacCAAGnAzMDpgb/
- A6YDLQIAAacCAAGnAgABpwMoHv8DwQM0AQ4B9AEZAQ4B9AEZAQgBegENAzAD/wPoAzsCAAGnAgABpwIA
- AacDUAE2AUABSAPKAWwBpgHDASoBhwG5AVMBpAHSAgABpwIAAacCAAGnA6ED4DAAA/8DQQNAAz4DPQPA
- DP8DwAM0AzMDMgMwIf8DQAEUAaQBHgEOAfQBGQEIAXoBDQM7A/8D9wPYA2sDXQNeA2YD0gPwAdcB5AHq
- ATYBiwG3AYsBxAHlAaEBzwHqAVgBpAHPAVkBkAGtA9kD8jAATv8DpwM3Ay0DNAOnA/8b9wHYAeUB6wGQ
- AboB0AGcAcEB1AGcAbwBzAPrA/QD9zAAA/8VABj/A+wDugOcA6UDugPLA9ED2gPuA/wV/wHyAfEB8AHY
- AdIBzgGmAZwBkQGfAZEBggGeAYsBeQGfAY0BfwHMAckBxwP7J/8D/AGpAaABmAGXAYYBdgGaAYgBdAGc
- AYkBdAGZAYYBcwGUAYcBfAPoBv8DhhLAA4YDABX/AcoBpAGHAZ0BVgEqAXQBSAExAWoBUAFEA2YDbgNx
- A4MDqwPIA88D2APqA/kG/wHPAcoBxgG7AZsBfgHAAaEBiwHkAboBkwHvAcMBlwHoAb0BlAHeAbMBhwGx
- AY8BbgG0AbIBsCf/AaUBkgGBAdgBuQGkAeoBxgGpAeYBvgGUAeQBvgGWAdoBtAGMAc8BpQF7AZUBiwGB
- Bv8DhgnAAgAB/wIAAf8DwAaGCQAM/wG2AVsBEgGtAUkBBAGnAUwBEQHBAXgBMAHBAXgBMAHBAXgBMAHB
- AXgBMAFeAUUBOAFhAVsBWANsA3ADgAOkA84D8gP/AcoBpwGAAeMBugGVAeUByQG5AeYBvgGaAeQBvAGS
- AeABvQGbAdgBswGNAdoBrgGEAXABaQFiAZoCnQGaAp0BngKhAaACoQz/AW4BpwGFAVcBmgFzAVYBmgFx
- AVUBlwFuAUkBjQFgAckBowF5Ac0BtQGkAfgB7gHnAekBwQGYAeoBxQGiAdsBuQGXAdUBqwGBAZ0BlAGK
- Bv8Dhg/ABgADhgQAAoADAAP/BgAD/wG2AVsBEgG2AVsBEgG/AdYBzAG+AfIB+wG3AfAB+wG3AfAB+wG3
- Ae4B+wHBAXgBMAHBAXgBMAHBAXgBMAHBAXgBMAFoAUIBLQFiAVUBTwONA9sD/wHJAboBmAHjAbIBkQHa
- AdABygH/AewBzgH2AcgBlwHnAckBrQHiAb8BnAHNAaMBegKOAYsBtwG7AbwBqQKtAaACoQPbCf8BbwGm
- AYgBVgGmAXsBWwGtAYQBSAGXAWgBdgGuAZABRAGOAWIBxwGvAYMBzAGxAaAB9wHyAe4B9AHJAZ8B7wHO
- AasB5wHFAaMB2wGxAYcBxAG8AbUG/wOGD8ABAAKAAQACgAcAAv8BAAKABAACgAEAAv8DAAG2AVsBEgHH
- AdABvQHFAfMB/AHFAfMB/AHMAXoBOwHMAXoBOwHMAXoBOwG3Ae4B+wG3Ae4B+wG3Ae4B+wHwAc4BpgG1
- AVABAQG1AVABAQNxA9ED/wHLAdgBwwH7AccBngHAAb0BvgGuAbkBwQHxAcQBmAH8AdMBqwH0AcoBoQGj
- AY0BegGfAqQBiQKLAZ4CoAHqAusM/wF2AaoBkgFxAcMBmAFrAboBkwFvAbsBkQHxAfcB8gFBAYwBXQGM
- AawBgQHEAawBlAFMAWwBjgGGAYkBjQHjAbsBlQG5AZwBfwGrAaEBmAn/A4YPwAQAAv8BAAKAAwAD/wEA
- AoABAAKAAQAC/wMAA/8B2AGBAScBywHRAbwBygH1AfsBygH1AfsB9wGjATAB/wHjAccB/wHlAswBegE7
- AcwBegE7AcwBegE7AdAB9gH8AfABzgGmAcwBZwEBA3ED0QP/AfYB+gH2AeoB2AG8AWwBbwF+AQ8BRwF+
- AYEBhQGJAeMBuAGMAaoBlQGAAqcBpgGxArQBqQKrAacBqAGpAaUBpwGmAaMBpQGkAaEBogGjAaACoQHH
- AsgBhAG0AZ4BswHiAcUBcwHIAZkBiAG+AasBywHbAdUBXQGsAYMBQwGNAWMBVgFyAYIBJwFOAXoBIQFO
- AXsBeQF0AW0BkgGQAYwBowGlAaQBoQGiAaMBoAKhAccCyAOGDMAEAAKABAAF/wEABf8BAAL/BAACgAMA
- AdgBgQEnAc8B0gG9AdAB9gH8AdAB9gH8AfcBowEwAf8B5QHMAf8B5QHMAf8B5QHMAf8B5QLMAXoBOwHQ
- AfYB/AHQAfYB/AHMAWcBAQNxA9EG/wHLAdAB1AEpAU0BdwEpAVcBiAEyAVQBdgGtAaoBowHDAskBxwHQ
- AdEBxAHPAdABwwHNAc4BwgHNAc4BwQHNAc4BwAHMAc0BwAHMAc0BvgHLAc0BoAKhA/8BkAG8AacBcgG0
- AZIBYAGKAaoBUQF2AY4BYAGFAW0BpwG4AcgBSwFyAaEBSQFwAZgBNQFbAYMBqAGzAbUBwQHNAc4BwAHM
- Ac0BwAHMAc0BvgHLAc0BoAKhA4YM/wQAAoABAAX/CQAD/wEAAv8BAAKAAwAB2AGBAScB1AHtAewB1AH2
- AfwB1AH2AfwB9wGjATAB/wHzAecBAQEOARQBAQEOARQB2QGHATcB2QGHATcB2QGHATcB1AH2AfwBzAFn
- AQEDZQO5A/UB8gH1AfgBbAGNAbABRAFvAZoBSgFzAZ4BRQFgAXwBhAEJAQcBiwEFAQABhwIAAZ0CAAG1
- ASIBDgHBAToBJgHEATkBIwHJAToBJQG+ATgBHAHAAcwBzQGhAqIG/wFuAYwBjwFgAYgBrwFiAYEBogFH
- ARwBIgFkAVoBdAF2AZ8ByAFkAYwBswFDAWoBkwGFAVUBVAHEATkBIwHJAToBJQG+ATgBHAHAAcwBzQGh
- AqIPhgEAAoADAAP/AwADwAP/BwACgAYAAdgBgQEnAdwB+AH9AdwB+AH9AdwB+AH9AfcBowEwAf8B8wHn
- Af8B8gHlAWEBhAGSAf8B5AHJAfUBwwGQAdkBhwE3AdkBhwE3AcwBZwEBA00DfQPFAeMB6QHvAW0BlQG7
- AW4BlwG9AVsBiAGxAToBYAGCAXoBPwE7AZwBKgEeAZsBEgEDAbIBFAEBAc0BUAE8AeEBewFpAeUBdgFi
- Ae0BfQFpAdYBZAFGAb8BzAHNAqMBpAP/AZgBpQGrAVMBhgGkAZUBuwHjAZUBvQHmAUkBWgFwAXQBYAFt
- AaMBygHxAXwBpwHQAUYBYQF6AU0BRQFGAeABdgFiAe0BfQFpAdYBZAFGAb8BzAHNAqMBpAOGD8AEAAKA
- AQAC/wPAA/8EAAKAAQAC/wMAA/8B2AGBAScB4QH5Af0B4QH5Af0B4QH5Af0B9wGjATAB/wH8AfkB/wHy
- AeUB/wHzAecB2QGHATcB/wHkAckB/wHlAcwB/AHRAaYB2QGHATcBEQExAbkDWQOhAeEB6QHyAZIBuAHe
- AZcBvwHoAWkBlwHCATYBTQFkAWEBRAFBAZoBLQEjAaMBEQEBAcABGgEGAeABdAFiAe4BmgGMAfEBkwGB
- AfYBnAGLAeoBhgFtAcABzQHOAaQBpQGmA/8BgwGgAagBfQGxAc8BywHrAf8BrQHXAfwBbgFMAVMBmwFd
- AVwBmAG4AdgBeQGZAbkBRwFRAVkBSwFBAT4B7AGRAYAB9gGcAYsB6gGGAW0BwAHNAc4BpAGlAaYDhg//
- AQACgAEAAv8DAAPAA/8HAAKAAwAD/wHYAYEBJwHlAeIB0AHoAfoB/gHoAfoB/gH3AaMBMAT/AfoB9QH/
- AfIB5QH/Ae0B3AHZAYcBNwHZAYcBNwH/AeUBzAEfAVwB1QEuAYYB8gERATEBuQPFAe0B8gH3AZcBtwHZ
- AZIBtwHcAWkBigGsATcBOAE7AVoBOQEzAZoBIAEUAa0BEAEAAc8BJwENAfABmgGLAfcBtAGoAfkBrgGe
- Af4BtQGnAfgBpQGSAcIBzgHPAaoCrAP/Ab0ByAHMAXEBrgHDAZoBxQHWAZQBvAHeAWABSAFTAZwBLwEk
- AZcBdwF0AXMBbwFtAV4BWAFXAbQBkwGOAfkBrgGeAf4BtQGnAfgBpQGSAcIBzgHPAaoCrBWGAQACgAOG
- BsADhgP/AwAG/wHYAYEBJwHYAYEBJwHsAfsB/gHsAfsB/gH3AaMBMAH7AbIBQQH7AbIBQQH/AfoB9QH/
- AfIB5QHMAXoBOwHsAfsB/gHZAYcBNwHZAYcBNwEeASQBlgO5A/UB9gL3AawBrgGxAXUBeAF8AmMBZAFL
- AUoBSAGIAUUBPwGrARUBBgHCARoBAAHqAUEBJAH+AcEBtAH/AcoBvQH/AckBuAH/Ac8BwAH8Ab8BqwHD
- Ac4BzwGsAa4Brwb/AZYBvAHEAXABtAHEAVwBngGxAT4BcQGGAYsBHAESAcIBGgEAAd4BSgExAfIBuwGv
- Af8BygG9Af8ByQG4Af8BzwHAAfwBvwGrAcMBzgHPAawBrgGvA4YSwAOGBgAS/wHYAYEBJwH/Ae0BugHY
- AYEBJwH0AfwB/gH0AfwB/gH0AfwB/gHwAdgBvwH7AbIBQQH7AbIBQQHMAXoBOwH0AfwB/gH0AfwB/gHZ
- AYcBNwNxA9ED/wP9Ad8B3gHcAZ4BmgGYAWwBaQFmA3IBnwEhARUBuQETAQAB0AEiAQAB+AFrAVYB/wHm
- AeAB/wHgAdgB/wHlAdwB/wHrAeIB/QHVAcgBxAHOAdABrwKyBv8B2QHxAfYBowHJAdMBnAHUAeMBlwF7
- AX4BrgEUAQEB0AEiAQAB+AFrAVYB/wHmAeAB/wHgAdgB/wHlAdwB/wHrAeIB/QHVAcgBxAHOAdABrwKy
- A4YS/waGAwAS/wHYAYEBJwHvAaYBRgHvAaYBRgHYAYEBJwHwAc4BpgHwAdgBvwH8Af4B/wH8Af4B/wH8
- Af4B/wH8Af4B/wH8Af4B/wHvAaYBRgHZAYcBNwNxA9EM/wHOAdQB1gGgAqEBrQIAAcQBDQEAAdoBEAEA
- Af8BiAFqAf8B1AG+Af8BxgGqAf8BxAGmAf8BwAGfAfsBrwGNAcUBzgHQAbEBtAG1Cf8BzgHUAdYBoAKh
- Aa0CAAHEAQ0BAAHaARABAAH/AYgBagH/AdQBvgH/AcYBqgH/AcQBpgH/AcABnwH7Aa8BjQHFAc4B0AGx
- AbQBtQOGFcADhgMAFf8B5AHLAb4B7AHdAc0B3gHBAagB7wGmAUYB7wGmAUYB7wGmAUYB7wGmAUYB8gHS
- AZ8B8gHRAaMB7wGmAUYB/AG9AXYB2QGHATcDlQPdDP8BzgHUAdYBoAKhAaACoQGgA6EBogGjAaUCpwGs
- A68DsQG0AbUBtAK4AbYBuwG8AcUBzwHRAbMBtwG4Cf8BzgHUAdYBoAKhAaACoQGgA6EBogGjAaUCpwGs
- A68DsQG0AbUBtAK4AbYBuwG8AcUBzwHRAbMBtwG4A/8Yhi3/Ae8BpgFGAe8BpgFGAe8BpgFGAe8BpgFG
- Ae8BpgFGA90D9Qz/AegB6gHrAc4B1AHWAc4B1AHWAc4B1AHWAc0B1AHWAc0B0wHVAcoB0gHUAcoB0gHT
- AckB0QHTAcgB0QHSAccB0AHRAcYBzwHRAdQB1gHXCf8B6AHqAesBzgHUAdYBzgHUAdYBzgHUAdYBzQHU
- AdYBzQHTAdUBygHSAdQBygHSAdMByQHRAdMByAHRAdIBxwHQAdEBxgHPAdEB1AHWAddL/wkAbP8D9wPv
- A+YG4QPiA+YD7QP1FfcS/wYAA/8EAAKAAwAD/wYAFf8BAAKAGAAz/wPtA8oDqAacA50DpQO1A8wD3QPe
- A9gD1gPXA90D6Q//BAAC/wEAAoAHAAL/BwACgAEAAoADAAP/DQACgAEAAv8BAAL/AQAC/wEAAv8BAAL/
- AQAC/wEAAv8BAAL/AQAC/wMAMP8B2QHKAcMBrQFuAVcBlQFUAT8BmAFTAUIBmAFTAUIBgwFMATcBcAFS
- AUUDZAN6A5MDlAOJA4UDhgOUA70S/wQAAv8BAAKAAQACgAP/BAACgAEAAv8DAAP/AQABgAIAAYACAAGA
- AgABgAIAAYACAAKAAQAC/wEAAv8BAAL/A8ADAAPAAQAC/wEAAv8BAAL/AwAV/wP2A+4D9AP9D/8BxgFo
- AUUB3QFTATQB+QFkAVEB/QFxAVwB8wFtAVMB0gFvAUIB+AFmAVIBzQFOAS0BTgFSAS4BMwFuAjMBhAEz
- AT0BjQE9ATEBhwExAScBeQEnAUABYgFAA5QP/wQAAoAEAAX/AQAF/wEAAv8EAAKABAABgAEAA4AJwAOA
- AQACgAEAAv8BAAL/AQAC/wEAAv8BAAL/AQAC/wEAAv8GAAz/A/0D8QPZA6sDigOjA9AD7QP6Cf8BzwGB
- AWQB+QFkAVEB/QF7AWMB/gGMAW8B3AGFAVcB9QHNAZsB7wFxAVMB/QFrAVgBkgGHAT0BVAGvAVABaAGu
- AV0BYgHKAWIBVgHDAVYBOQG1ATkBKgGFASoDlQ//BAACgAEABf8JAAP/AQAC/wEAAoAEAAGAAQADwAb/
- AQAF/wEAAoABAAL/AQAC/wPAAwADwAEAAv8BAAL/BgAG/wP6A+0DzwOTA2cBjgKEAVICTQNKA10DiQPA
- A+UD9gP/AewB3QHWAeMBZwFKAf0BiAFsAeEBfgFSAfoBxwGUAf8B0wGgAeUBeAFRAfgBdQFcAZEBnAFR
- AYYBwgGBAe8B9QHgAVYBrwFWAXQB0gF0AVMBwgFTAToBiQE6A70D/wYAA/8KAAKABgAD/wYAA/8HAAGA
- AQADwAb/AYACAAGAAgABgAMAAoABAAL/A4ADAAOAAQAC/wQAAYAEAAP/A+sDwAOBA3UDjQOlAXUCcAE/
- AjwBSQJEAVoCUgFOAkwDVgNyA6gD3APrAboBowGZAacBWAFPAUMBJAFbAUQBNwF5AWEBSQF4AbwBXgE8
- AZMBewE2AYIB2gGCAaQBxgGXAf8B9QHsAboBzwGoAWQBwQFkAUYBpgFGAYUBmAGFA+IDAAP/A4AGAAOA
- BAAC/wEABYAD/wQAAv8BAAKAAwAD/wEAAYABAAOAAQAO/wEAAoABAAL/CgAC/wQAAYAEAAPxBokDyQOj
- A4ADggF9AnwDTgNxA30BdAJuAXQCZQFWAlEDUgN7A7EDFgEEAQcBDgEQASwBcgEVATsBoAERATIBlwEU
- ASABZwFPAWgBTwFmAaUBZgFEAYgBjgERAXcBuQEhAX4BuwEeAXQBXgFKAV0BSgOkA+YD/wMAA8AGgAP/
- BAACgAYAA/8HAAL/AwAD/wEAAYABAAPABv8BAAj/AYADAAKAAQAC/wQAAv8DAAP/AQABgAQAA6YDrgOY
- A4IDpAO5A9EDjgN5A2wDgQNiAzQBtwKYAYoCdwNrAzwDGwETATABaQEbAU4BswEeAVgBvQEcAVABtQEO
- ATMBkwFQAVUBZgFsAYwBnwEuAZMB8gE0AZkB/wE0AZkB/wEsAZEB7wE1AVUBaAODA9QDAAOAAwAD/wOA
- Bv8DAAP/A8ADgAb/AwAG/wEAAYABAAPAA/8DwAEAAoADwAGAAwAC/wEAAoABAAL/AQAC/wEAAv8DAAP/
- AQABgAQAA6ADnAO1A8cD4QPmA9AD2APRA8MBmgKZAX0CeAFGAkMBkwKBAYQCdgN9AxYDKQEZAUMBgQEn
- AXQB2QEnAXQB2QEnAXQB2QEcAV0BvQFLAVUBagFHAYsBvgFAAaUB/wFBAaYB/wFBAaYB/wE/AaQB/wEn
- AYABwANsA8MDAAPABv8JAAn/AwAP/wEAAYABAAOAA/8BAAWAAQACgAP/AYACAAP/AQACgAEAAv8DAAb/
- AQABgAQAA7oD0wPeA8cD4QPfA/ID/APsA98D9wHuAuoB3gLMAY8CigGNAokD5wMtAzYBJgFGAWwBMQGQ
- AfYBNQGaAf8BNAGWAfoBIgF0AdIBUAFfAXEBTQGZAc8BTQGyAf8BTgGzAf8BTgGzAf8BSgGvAf8BMgGX
- AeYBYAFmAWoDvQOAAwADgAYAA/8GAAOABgAP/wEAAYABAAPAA/8DwAEAAoADwAz/AQACgAn/AQABgAQA
- A+MD4AO7A3kDbAO4A/ID/APsA98D9wPKA8EDywP5A/8DaANLA0MBNwFHAWYBHAFGAZABIwFjAcYBFgFI
- AX4BdgGDAZABWQGkAdUBTQGyAfIBSwGwAewBWAG9Af8BUQG2Af8BQwGlAeoBVwFwAX0DyQP/AwAG/wMA
- A/8DAAP/A8ADABL/AQABgAEAA8ABAAv/AQAI/wEAC/8DwAEAAYAEAAn/A+wD2wPIA9UD5gPNBtQD/Az/
- A+gDOwNqA40DpANQATYBQAFIA8oBbAGmAcMBKgGHAbkBUwGkAdIBYgGoAdMBUgGfAdABGQF2AaQDoQPg
- A/8DgAPAAwAD/wOABgAD/wMAEv8BAAGAAQADgAzAA4AJwAOABsADgAEAAYAEADD/A/cD2ANrA10DXgNm
- A9ID8AHXAeQB6gE2AYsBtwGLAcQB5QGhAc8B6gFYAaQBzwFZAZABrQPZA/IG/wOAA/8DAAP/AwAD/wMA
- Ff8BAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAIA
- AYABADP/G/cB2AHlAesBkAG6AdABnAHBAdQBnAG8AcwD6wP0A/cP/wOAxv8BnQFsAWsBmQJgA/8B0AG1
- AbMBlQFSAVNs/wP1A90e0QPdA/UD/wGtAZEBgQGMAXUBYwGHAW8BXAGCAWkBVgGKAXQBYwGSAX4BbgGa
- AYgBegGrAZwBkQGIAUcBRQGxAWIBZgFwAjwBlQFSAVMBcAI8PP8hAAz/A/UDxQOJHnEDiQPFA/UBsAGV
- AYUB+gHvAekB6wHjAd0B5wHcAdcB4gHXAdEB3wHRAcoBmAFXAVUBgAJFAcABbgFqAbsBYQFeAbkBXwFW
- AdoBcAFvAcQCYwGvAYYBgwFtATUBNgb/LgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGA
- AgABgAIAAYACAAGABAAJ/wPdAQ0BcwGlAQ0BcwGlAQ0BcwGlAQ0BcwGlAQ0BcwGlAQ0BcwGlAQ0BcwGl
- AQ0BcwGlAQ0BcwGlAQ0BcwGlAQ0BcwGlAQ0BcwGlA2UDiQPdAbMBmAGJAfsB8gHtAfoB8AHqAfkB7gHo
- AfoB7AHmAfkB6gHiAdwBhwGGAcABdQF3AdwBhwGGAawCbgGpAYIBfgGzAXcBcwHEAmMBsQFWAVcBsQFW
- AVcD/wEAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGA
- AgABgAUAAYABAAOGBsADhgbAA4YGwAOGAQABgAQACf8BGQGaAcYBHAGcAccBnAL/AWwB1wH/AWwB1wH/
- AWwB1wH/AWwB1wH/AWwB1wH/AWwB1wH/AWwB1wH/AWwB1wH/AWwB1wH/ASkBmQG/AQ0BcwGlA3ED0QG2
- AZwBjQH8AfQB8AH7AfIB7gHiAXIBOAHkAZQBbQHtAcUBrwHrAcQBsgHTAYcBhgHgAY8BjQGdAlYB1wHJ
- AcQBlgF1AWwBzQJuAbEBVgFXBv8BAAGAAQADgAnAA4AMwAOABsADgAEAAYAFAAGAAQADwAEAC/8BAAj/
- AQAC/wPAAQABgAoAA/8BGQGaAcYBGgGaAcYBegHkAfABnAL/AXwB4wH/AXwB4wH/AXwB4wH/AXwB4wH/
- AXwB4wH/AXwB4wH/AXwB4wH/AXwB3wH/AUMBsgHeARoBewGdA2UEuQGgAZIB/QH2AfMB/AH1AfEB+wHz
- Ae8B+wHxAe0B+wHvAeoB3QGQAY4B5QGkAaYB8AKoAc4BgQGCAZ8BXAFbAZwBcQFvAcIBbAFtAbEBVgFX
- AW0BNQE2A/8BAAGAAQADwAb/AQAR/wEACP8DwAEAAYAFAAGAAQADhgP/AYACAAGAAgABgAIAA/8BgAIA
- Bv8DhgEAAYAFAAGAAgABgAQAARkBmgHGASYBogHPAUABuAHXAZwC/wGEAesB/wGEAesB/wGEAesB/wGE
- AesB/wGEAesB/wGEAesB/wGEAesB/wGEAecB/wFDAboB7wEZAZoBxgNlA4kBvAGkAZYB/QH5AfcB/AH3
- AfQB/AH2AfMB2wFrATQB7wHKAbcB3gGYAYsB1wGLAYkB9QG3AbYB7QGpAagB3QGJAYYB1gF9AXcBwgFs
- AW0BwAJyAb0BcgFzA/8BAAGAAQADwAb/AYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAIA
- A8ABAAGABQABgAEAA8ABAAj/AQAI/wEABf8DwAEAAYAEAAOGAQABgAQAARkBmgHGAUMBswHiASEBoAHJ
- AaUC/wGUAfcB/wGUAfcB/wGUAfcB/wGUAfcB/wGUAfcB/wGUAfcB/wGUAfcB/wGUAfcB/wFTAb4B5wFc
- AbwBzgENAXMBpQNxAcABpwGbAf4B+wH5Af0B+gH3AfwB+AH1Af0B9gHzAfwB9AHxAfsB8wHuAfsB8QHs
- AeQBpgGpAdsBnwGeAdABggF+Ac4BfgF6AbkBbwFwCf8BAAGAAQADgAEAEf8BAA7/A4ABAAGABQABgAEA
- BsABAAKAA8ABgAIAA/8DwAGAAwAC/wPAAQABgAQAA8ABAAGABAABGQGaAcYBcAHVAf0BGQGaAcYBiQHw
- AfcBnAL/AZwC/wGcAv8BnAL/AZwC/wGcAv8BnAL/AZwC/wFbAccB/wGWAfkB+wEZAXsBmwNxAcIBqwGe
- Af4B/AH7Af4B+wH5AeEBcQE5AdsBawEzAdEBZgEvAdEBfgFVAegBxgG2Ad0BnAGbAeIBpwGjAeMB0wHN
- Ac4BfgF6Ab0BcgFzCf8BAAGAAQADwAb/AQAI/wGAAgAG/wGAAwAF/wPAAQABgAUAAYABAAOGAQACgAEA
- AoABAAKAA/8BgAIABv8DwAOGAQABgAQAA4YBAAGABAABGQGaAcYBhAHXAf8BGQGaAcYBbAG/AdoG/wH3
- AfsQ/wGEAecE/wEZAX4BoQOJAcUBrgGjBP4B/AH9Af4C+wH+AfoB+QH9AfkB9wH9AfcB9QH8AfUB8wH8
- AfQB8AH7AfIB7gHmAd0B2AGaAYYBdwz/AQABgAEAA8AD/wPAAQACgAPAAYADAAL/A8ABgAIAA/8BgAIA
- A/8DwAEAAYAFAAGAAQADwAP/AQACgAPABv8BAAX/AQAC/wPAAQABgAQAA8ABAAGABAABGQGaAcYBhAHr
- Af8BUAHBAeIBGQGaAcYBGQGaAcYBGQGaAcYBGQGaAcYBGQGaAcYBGQGaAcYBGQGaAcYBGQGaAcYBGQGa
- AcYBGQGaAcYBGQGaAcYBGQGJAbEDxQHIAbMBqAT/Av4B4gFyATkB2gFsATMB0QFlAS8BxgFfASwBuQFZ
- ASkBrQFSAScB/AH1AfEB6gHiAd4BkwF9AW0M/wEAAYABAAOAA/8BAAWAAQACgAP/AYACAAb/A8AG/wOA
- AQABgAUAAYABAAOGBsADhgbAA4YGwAOGAQABgAQAA8ABAAGABAABGQGaAcYBnAHzAf8BjAHzAf8BjAHz
- Af8BjAHzAf8BjAHzAf8BjAHzEP8BGQGaAcYBGgF7AZ0DxQP1AcsBtgGtB/8B/gL/Av0B/gH9AfwB/gH8
- AfsB/gH6AfkB/QH4AfcB/QH3AfQB7gHnAeQBjQF0AWIM/wEAAYABAAPAA/8DwAEAAoADwA//AQAF/wPA
- AQABgAUAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAEAA8ADhgEA
- AYAEAAEZAZoBxgP/AZwC/wGcAv8BnAL/AZwF/wEZAZoBxgEZAZoBxgEZAZoBxgEZAZoBxgEZAZoBxgEZ
- AZoBxgPdA/UD/wHOAbsBsQP/AecBeQFAAeEBcgE5AdsBbAEzBP4B/QH8Af4B/AH7Af4B+wH5Af4B+QH3
- AfIB7AHqAZIBegFpDP8BAAGAAQADwAEAC/8BAAj/AQAL/wPAAQABgAQACf8BAAGAAQADwAP/AQACgAPA
- Bv8BAAX/AQAC/wPAAQABgAQAA/8BIgGiAc4M/wEZAZoBxgPFA/UV/wHSAcABthD/BP4B/QH+AvwB/gH7
- AfoB9QHxAe8BlwGAAW8M/wEAAYABAAOADMADgAnAA4AGwAOAAQABgAQACf8BAAGAAQADhgbAA4YGwAOG
- BsADhgEAAYAEAAb/ASIBogHOASIBogHOASIBogHOASIBogHOA90D9Rj/AdUBxAG8Ff8C/gH9Af4C/QH+
- AfwB+wGdAYYBdQz/AQABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGA
- AgABgAIAAYACAAGAAQAM/wEAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGA
- AgABgAEAM/8B2AHJAcEB1QHEAbwB0gHAAbYBzwG8AbIBzAG4Aa0ByQG0AagBxgGwAaQBwwGsAaABwAGp
- AZwBvgGmAZkBuwGiAZQBuAGfAZCl/wH6AfgB+QHUAckBzgGmAYwBlwGBAV8BbAF2AVEBXwF1AVABXgF6
- AVcBZQGdAYMBjQHNAb8BxAH1AfIB8xv/AfEB7AHuAb8BrgG1AYoBagF3AWgBQAFQAWQBOgFLAWQBOgFL
- AWoBQgFSAZABcgF+AcABsAG2AfEB7AHuMP8DgCQAD/8B/QH8Af0BzwG9AcABsQGYAZwBxAGwAbEByQK0
- AccCrQG/ApoBqAGBAYUBhwFgAWsBjQFuAXoBxwG4Ab4B+gH4AfkV/wH2AfMB9QGxAZYBmwGwAZUBmAHK
- ArcByQKzAccCrAG9ApYBogF5An4BVAFfAXwBWAFmAa0BlwGgA/8D9gPfIdYD3wP2A4ASwAMAD/8DAAz/
- AekB3QHeAdYCzgPiAeAC3wHbAtYB0wK+Ab8CoAGhAm4BvQKPAY0BZAFtAakBkgGbAfMB7wHwFf8B1AHC
- AcMB3ALZA+MB3wLeAdsC1QHWAsEB3ALXAcACpwHDApgBjQFfAWcBjgFvAXwD9gPIA4MhbQODA8gDgAzA
- AQAB/wEAA4AV/wMACf8B4QLUA+kD8gPsAd8C3gHXAsIBugKPAZkCWwG1AoMBtAGHAYoBtgGiAaoB9gHy
- AfMV/wHNArcD7QPyA+sB3gLcAdgCwgHTArQBzAKoAcEClgGvAYIBhgGgAYUBkQPfAR0BggG1ARsBgQGz
- ARgBfgGwARYBfAGuARMBeQGrARABdgGoAQ0BcwGlAQsBcQGjAQgBbgGgAQYBbAGeAQQBagGcAQIBaAGa
- AQEBZwGZA0wDgwOADMADgAb/AgAB/wIAAf8CAAH/AgAB/wIAB/8DAAb/AesC3gPuAe8C4QPyAeIC4QHV
- ArQBpQJlAZkCUQG1AoEBtwGPAZMB5AHcAd8V/wH8AfoB+wHgAc8B0APxAewC2QPuAd4C2gHVArIBzQKO
- AcwCjAHBAo8BtgGOAZIB4gHaAd0BIgGHAboBZwHMAf8BIAGFAbgBmQL/AW8B1AH/AW8B1AH/AW8B1AH/
- AW8B1AH/AW8B1AH/AW8B1AH/AW8B1AH/AW8B1AH/ATsBoAHTAZkC/wEBAWcBmQNuA4AMwAOABv8CAAH/
- AgAB/wIAAf8CAAH/AgAH/wMACf8B5QLUAc8BmAGPAdwCtAHRAqUByQKXAZkCRgGZAkYBngFpAWwBwgGw
- AbYB9gHzAfQP/wH8AfsB/AHqAeUB5wHUAcgBzQHOAb4BxAHQAbUBuAHWAaQBmwHbArMB0QKnAc8CkgHM
- AnEBzAJxAZoBaQFuAbwBqAGvAfMB7wHxASUBigG9AWcBzAH/AScBjAG/AZkC/wF7AeAB/wF7AeAB/wF7
- AeAB/wF7AeAB/wF7AeAB/wF7AeAB/wF7AeAB/wF7AeAB/wFEAakB3AGZAv8BAgFoAZoDbQOADMADgAb/
- AgAB/wIAAf8CAAH/AgAB/wIAB/8DAAn/AeYB1AHVAeYBpAFnAf4BsQE4AfYBwgF/Ad4BrgGlAbsCbgGi
- AkYBggFbAWUBoAGHAZEB0AHDAcgB/AH6AfsJ/wH5AfcB+AHNAcABxQGiAXIBYAGIAVMBRwGDAU0BRQGb
- AW0BcAHsAaEBSgH+AbEBOQH1AcUBiwHeAaoBmgHJAngBvQJbAXUBSQFVAY4BbwF7AbcBpAGsASgBjQHA
- AWcBzAH/AS0BkgHFAZkC/wGFAesB/wGFAesB/wGFAesB/wGFAesB/wGFAesB/wGFAesB/wGFAesB/wGF
- AesB/wFOAbMB5gGZAv8BBAFqAZwDbQOADMADgAb/AgAB/wIAAf8CAAH/AgAB/wIAB/8DAAn/AdwBwwHE
- AegBpwFfAf8BsgEzAf8BtQE5Af8BtgE7AfQBvAFxAeABqAGJAbcBegF+AY4BWgFlAZQBdgGCAe8B6wHs
- Bv8B/AH7AfwB1QG4AagBwQFkAS4BrAFeAT0BsAFaATkBwAFbATwBywGRAYYB8QGnAT8B/wGzATYB/wG2
- ATsB/wG2AT0B9gG7AWgB4gGoAYEBugF6AX0BjgFRAVwBcQFKAVkBKgGPAcIBZwHMAf8BMwGYAcsBmQL/
- AZEB9wH/AZEB9wH/AZEB9wH/AZEB9wH/AZEB9wH/AZEB9wH/AZEB9wH/AZEB9wH/AVcBvAHvAZkC/wEG
- AWwBngNtA4AM/wOABv8CAAH/AgAB/wIAAf8CAAH/AgAH/wMACf8B1wG7AbwB7gGvAVYB/wG+AUsB/wHB
- AVEB/wHDAVQB/wHBAVEB/wG+AUsB+QG3AU8B2AGJAWsBigFqAXcB7wHrAewG/wH1AeQBzgGuAU8BFgGk
- AT8BBAGIAUwBBgFDAV0BDgGkAT8BAgHKAaMBoAH/AbsBRQH/Ab8BTgH/AcIBVAH/AcMBVQH/AcIBUwH/
- Ab4BTQH8AbgBSQHbAYoBZQFoAUABUAEtAZIBxQFvAdQB/wE0AZkBzAGZAv8BmQL/AZkC/wGZAv8BmQL/
- AZkC/wGZAv8BmQL/AZkC/wFgAcUB+AGZAv8BCAFuAaADbhWAFf8DAAn/AfwB+gH7AcwCrgH/AcMBVgH/
- AckBYgH/Ac0BaQH/Ac4BawH/Ac0BaQH/AcoBYwH/AcQBVwHjAZUBXAGYAXwBhwHyAe4B8Ab/AdIBlgFg
- AbEBTAEBAb8BWgEBAXwBawIBAXgBAQFpAWsBEgHiAb4BogH/AcYBWwH/AcsBZQH/Ac4BbAH/Ac8BbQH/
- Ac4BawH/AcoBYwH/AcQBWAHjAZUBXQGCAWABbgEvAZQBxwF7AeAB/wEtAZIBxRv/AYEB5gT/AQsBcQGj
- A4wDgBLAA4AP/wOADP8B5AHbAdwB4wHHAbMB/wHOAWoB/wHUAXgB/wHZAYEB/wHbAYMB/wHZAYEB/wHV
- AXkB/wHOAWsByAGGAWcBowGKAZQB8wHvAfAG/wHJAXQBIQHLAWYBAQHOAXkBAQFHAYwBAwEgAY4BAgGu
- AZMBRQHnAcMBlgH/AdABbwH/AdYBfAH/AdoBgwH/AdsBhQH/AdoBggH/AdUBegH/Ac8BbQG8AXsBZAGK
- AWoBdwExAZYByQGFAesB/wGBAeYB/wEtAZIBxQEtAZIBxQEtAZIBxQEtAZIBxQEtAZIBxQEtAZIBxQEo
- AY0BwAEkAYkBvAEgAYUBuAEcAYEBtAEbAYEBswEbAYEBswPfA4AV/w+AD/8B2gHQAdEB6AHMAacB/wHX
- AXwB/wHfAYwB/wHlAZgB/wHnAZwB/wHlAZgB/wHgAY0B/wHXAX4BvwGEAXABsgGeAaYB9gHzAfQG/wHX
- AYUBKQGpAYIBBwEfAacBIQElAa4BLAHgAaUBGwHmAbkBhAHrAcgBjAH/AdkBgQH/AeEBkQH/AeYBmwH/
- AegBnwH/AeYBmgH/AeABjgH/AdcBfgG6AX8BbAGdAYIBjQEzAZgBywGRAfcB/wGOAfQB/wGOAfQB/wGO
- AfQB/wGOAfQB/wGOAfQQ/wEWAXwBrgOMA94D/xiAAwAb/wHTAswB6wHOAZoB/wHeAYoB/wHoAZ4B/wHw
- Aa4B/wHzAbQB/wHwAa8B/wHpAaAB/wHfAYwBpQFwAXEBvAGpAbEB+AH1AfYG/wHjAZsBPwFpAaEBJAEu
- AcQBVwE+Ac0BagGeAdEBcQHiAdQBxQHtAcoBgQH/AeEBkAH/AeoBowH/AfIBsgH/AfUBtwH/AfEBsAH/
- AekBoAH/Ad8BjAGZAWIBaQGrAZQBnQE0AZkBzAP/AZkC/wGZAv8BmQL/AZkF/wElAYoBvQEiAYcBugEf
- AYQBtwEdAYIBtQEbAYEBswEYAX4BsAPfA/cD/wOAFcADABv/AdICzwGxAaABjwHQAbkBkQHjAdABogH5
- AfMBvgH/Af0ByQH/AfoBwgH/AfABrQH/AeQBlgGdAWwBcgHHAbgBvgH6AfgB+Qb/AtsBpAEnAb8BTQFf
- AdsBgwGUAesBpAGpAeMBqgHfAtwBtgGlAY8BygG2AZUB3QHMAaQB7gHmAboB/wH+AcsB/wH6AcIB/wHv
- Aa0B+gHdAZQBlQFjAWsBwAGwAbYD/wE0AZkBzAz/ASoBjwHCA8gD9hX/A4AV/wMAG/8D0wHXAtQBzALD
- AdECwwHCAq0BwAGnAaEBywGzAZ8B3AHCAZ0B3gG6AZABowF7AYEB1wHMAdAB/AH6AfsI/wH9AYoB1wGJ
- AXEB4QGPAa4B9QG4AZUB6gGhAX4BzwGVAb4BywGjAeABxwGvAcsCvQHGArIBvwGlAaIBwAGlAZcB1gG7
- AZoB2AGzAY0BnAF3AX8B1QHKAc8G/wE0AZkBzAEzAZgBywExAZYByQEvAZQBxwPfA/YY/xuAIf8B+gL5
- AecC5AHjAdsB3AHlAtoB3QHJAcoB1gK7AcYCnwHgAdEB0gH8AfoB+w7/Af0B2AHvAcEBnwHoAaIBkgHb
- AYMBYAHIAV8BrgG8AWEB8wHbAb0B/AH6AfsB7gLpAe0B5AHlAegC2gHXAsABwwKfAeMB1gHXAfwB+wH8
- P/8B+AHuAeMByQFzAUMB4wGfAUkBmQEzAQAB+AHuAeNR/wPVA6UDdwNrA24DhQO1A9pF/wH4Ae4B4wHJ
- AXMBQwHxAbYBcQHoAagBWgHjAZ8BSQGZATMBAAH4Ae4B4zD/Ac4BzwHHAZkBMwEAAcYByQHBEv8DwgOI
- A44DzAPzA+wDwgOEA30DwQb/A4AkABL/AfgB7gHjAdgBmwFbAf8BzQGZAfkBwwGJAfEBtgFxAekBqQFZ
- AeMBnwFJAZkBMwEAAfgB7gHjA/8B+wHnAfok/wHSAdEBygG1AWMBNQHYAZsBWwGZATMBAAHDAccBvQz/
- A78DmAPnA/4D+gP2A/MD7gPzA7UDaQPBA/8DgBLAAwAP/wMAEv8B+AHuAeMB2AGbAVsB/wHNAZkB+QHD
- AYkB8QG2AXEB6AGoAVkB4wGfAUkBmQEzAQAB+AHuAeMBjQEtAYwB+wHnAfoe/wHWAdQBzAHYAZsBWwH/
- Ac0BmQHpAbQBfAHYAZsBWwGZATMBAAG/AcQBuwb/A80DkQP0Bv8DtQNNA04DugP8A/gDrQNwA9gDgAzA
- AQAB/wEAA4AG/wEAAYABAAz/AwAD/wFqAV0BUgFqAV0BUgFqAV0BUgFqAV0BUgHSAd8B3gHSAd8B3gHY
- AZsBWwH/Ac0BmQH5AcMBiQHxAbYBcQHJAXMBQwH1AdoB3wGNAS0BjAHeAXMB3gGNAS0BjAH7AecB+h7/
- AdIB0QHKAdgBmwFbAf8BzQGZAekBtAF8AdgBmwFbAZkBMwEAA/8D4gOhA8MJ/wPSAzcDRAPrA/8D6wPx
- A3sDnQOADMADgAn/AQABgAIAAYABAAz/AwABtwGiAZMB/AH1AfIB+wHyAe0B2AHuAfYBDgF4AZ4BDAFi
- AYEB0gHfAd4B2AGbAVsB/wHNAZkByQFzAUMB9QHaAd8BnwE1AZ4B6gGQAeoB5AGEAeQB4AF3Ad4BjQEt
- AYwBtwGiAZMBagFdAVIBagFdAVIBagFdAVIBagFdAVIBagFdAVIBagFdAVIBagFdAVIJoQGqAaABlQHY
- AZsBWwH/Ac0BmQHJAXMBQwG/AcQBuwP/A80DlwP7Cf8D3wNWA2YD9wP/A/MD8gO8A3UDgAzAA4AJ/wEA
- AYACAAGAAgABgAEACf8DAAG3AaIBkwH8AfgB9QH8AfUB8gEOAXgBngEtAb0B7wEYAbMB7QEMAWIBgQHS
- Ad8B3gHYAZsBWwH1AdoB3wHTAWUB0gH2AawB9gHxAaEB8AHrAZQB6wHnAYgB5QHhAXsB4AG3AaIBkwP/
- AfwB9QHyAfsB8gHtAfkB7gHoAfgB6gHjAfcB5wHeAfYB4gHZA6EB9AHaAc4B8wHWAcgB8QHSAcMB7QG9
- AbYB2AGbAVsBwwHHAb0G/wO+A6ED/Qn/A9oDXANmA+0D/wP8A/ED2ANzA4AMwAOACf8BAAGAAgABgAIA
- AYACAAGAAQAG/wMAAbcBogGTAdgB7gH2AQ4BeAGeAVwB0QHzAUMBxgHxASwBvQHvARgBswHtAQwBYgGB
- As8B3AHlAXAB5AH7AbkB+wH6AbcB+gH2AbAB9gHyAaUB8wHtAZkB7QHcAWUB2wG3AaIBkwP/AfwB+AH1
- AfwB9QHyAREBcwGWAfoB7gHnAfkB6QHiAfcB5gHdA6EB9AHdAdIB9AHZAc0B8wHJAc8BjQEtAYwBkAFv
- AWwJ/wO3A6kM/wPWA1sDYQPpA/8D/QP1A+EDeAOADMADgAn/AQABgAIAAYACAAGAAQAJ/wMAAbcBogGT
- ARABfQGlAYsB4wH1AXUB2gH0AVwB0AHzAUQBxgHxASwBvQHvARgBtAHtAQwBYgGBAdQB2gHyAeUBcAHk
- AfsBuQL7AbkB+wH4AbIB+AHcAWUB2wH7AecB+gG3AaIBkwP/Af0B+gH5ARoBjgG4AQ0BrgHrAREBcwGW
- AfkB7QHmAfgB6QHhA6EB9gHhAdYB9AHQAdcBswE8AbIB3AFwAdsBjQEtAYwByAHEAdcG/wOvA6YM/wO/
- A1kDcQPsA/8D+wP5A9cDdAOADP8DgAn/AQABgAIAAYABAAz/AwABtwGiAZMBFQGnAd0BngHrAfcBiwHj
- AfUBdQHaAfMBXAHQAfMBQwHGAfEBLAG8Ae8BGAG0Ae0BDAFiAYEB1AHaAfIB3AFlAdsB+wG5AfsB5QFw
- AeQB+wHnAfoD/wG3AaIBkwP/ARoBjgG4AS0BvQHvAVQBzQHyAQ0BrgHrAREBcwGWBqEBrwGeAa8B2QFs
- AdgB+gGtAfoB+wGYAfoB3AFwAdsBjQEtAYwBwwHCAdUD/wPDA6EM/wPqA9kD6gb/A/kD/gO/A4EVgAb/
- AQABgAEADP8DAAP/AbcBogGTAdgB7gH2ARQBqgHhAZ0B6wH2AYsB4wH1AXQB2gH0AVwB0AHyAUMBxgHx
- ASwBvAHvARgBswHtAQwBYgGBAdgB7gH2AeUBcAHkAWoBXgFUBv8BtwGiAZMBOQG+Ae4BjwHlAfYBfQHe
- AfQBVAHNAfIBVAHNAfIBDQGuAesBEQFzAZYB+QHrAeQB+AHoAeAB9gHUAd4B0wFlAdIB+gGtAfoB+wGY
- AfoB3AFwAdsBjQEtAYwD/wPfA6kD5Qn/A/sDnwOdA/kG/wP+A3kDuQOAEsADgA//A4AG/wG3AaIBkwH8
- AfgB9QHYAe4B9gEUAaoB4QGeAeoB9gGLAeMB9QF0AdoB8wFcAdEB8wFDAccB8QEXAZgByAHYAe4B9gH8
- AfgB9QH7AecB+gGLAWEBTAb/AbcBogGTA/8BOQG+Ae4BjwHlAfYBfQHeAfQBVAHNAfIBVAHNAfIBDQGu
- AesBEQFzAZYB+QHrAeQB9wHmAd8B9gHUAd4B0wFlAdIB+gGtAfoB0wFlAdIBwwHCAdUG/wPGA64J/wPs
- A2cDYAPuBv8DqgONA98DgBX/D4AJ/wG3AaIBkwH8AfUB8gH7AfIB7QHYAe4B9gEUAaoB4QGdAesB9gGL
- AeMB9QF1AdsB9AEXAZgByAHYAe4B9gH8AfUB8gH5AesB5AH3AeYB3wFqAV4BVAb/AbcBogGTBv8BOQG+
- Ae4BjwHlAfYBfQHeAfQBVAHNAfIBVAHNAfIBFwGYAcgB+gHtAecB+QHqAeMB9wHmAd4B9wHUAd0B0wFl
- AdIByAHEAdcJ/wPjA70DwgP+Bv8G9AP/A/QDtAOIA9oD/xiAAwAV/wG3AaIBkwH8AfgB9QH8AfUB8gH8
- AfgB9QHYAe4B9gEUAaoB4QGdAeoB9gEXAZgByAG3Ad8B7gH8AfgB9QH8AfgB9QH6Ae0B5wH5AeoB4wGL
- AWEBTAb/AbcBogGTCf8BOQG+Ae4BjwHlAfYBfQHeAfQBFwGYAcgP/wGBAWYBbw//A+QDxAO4A9gD5QPp
- A+YDywOrA6cD3wb/A4AVwAMAFf8ByAGLAW0B/QG6AZYB/QG6AZYB9gGuAYkB7wGiAXkB2AHuAfYBFAGq
- AeEB2AHuAfYB5QGOAWEB4QGHAVkB3gGBAVEB2wF8AUsB4AF7AUgBagFeAVQG/wHIAYsBbQH9AboBlgH9
- AboBlgH2Aa4BiQHvAaIBeQE5Ab4B7gE5Ab4B7gHlAY4BYQHhAYcBWQHeAYEBUQHbAXwBSwHgAXsBSAHg
- AXsBSAFqAV4BVBX/A9QDwQO9A7sDtQO9A9YM/wOAFf8DABX/AdoBlwF2AdoBlwF2AdUBlAFzAc4BjwFw
- AcYBiQFrAb0BggFnAb0BggFnAbMBfAFhAagBdQFbAZ8BbwFXAZcBagFTAZABZQFOAYsBYQFMAYsBYQFM
- Bv8B2gGXAXYB2gGXAXYB1QGUAXMBzgGPAXABxgGJAWsBvQGCAWcBswF8AWEBqAF1AVsBnwFvAVcBlwFq
- AVMBkAFlAU4BiwFhAUwBiwFhAUwBiwFhAUw2/xuA//+W/wHFAa8BowGkAY0BfgGfAYgBdwGaAYIBcgGU
- AX0BbAGOAXcBZQGJAXIBYAGFAWsBWQF/AWcBUwF7AWIBTgF2AV0BSZ//AcgBtAGpAfwB9gHyAfsB8wHu
- AfoB8AHrAfoB7QHnAfkB6gHjAfgB5wHgAfcB5AHbAfYB4QHXAfUB3gHTAXwBYwFPEv8JAAz/CQAY/wHT
- AcIBsAG1AZgBeAG1AZgBeAG1AZgBeAG1AZgBeAG1AZgBeAG1AZgBeAG1AZgBeAHTAcIBsBX/AdMBwgGw
- AbUBmAF4AbUBmAF4AbUBmAF4AbUBmAF4AbUBmAF4AbUBmAF4AbUBmAF4AdMBwgGwDP8BzQG5Aa4B/QH4
- AfUBiQFyAWABiQFyAWABiQFyAWAB+gHtAeYBiQFyAWABiQFyAWABiQFyAWAB9gHhAdYBgQFpAVYP/wMA
- A8AB/wGAAQADwAMABv8DAAPAAf8BgAEAA8ADABX/AbUBmAF4Ab8BzAHSAa4BvgHGAagBuAHCAacBuAHB
- AacBuAHBAaYBtwHAAaoBugHDAbUBmAF4Ff8BtQGYAXgBvwHMAdIBrgG+AcYBqAG4AcIBpwG4AcEBpwG4
- AcEBpgG3AcABqgG6AcMBtQGYAXgM/wHRAb8BtgH9AfkB9wHEAb0BywGbAZcBuwHFAb8B0AH6Ae8B6gHF
- AcsBxAGVAawBmQHFAcoBwgH3AeMB2gGHAW8BXQ//AwAB/wGAAQADwAH/AYAEAAb/AwAB/wGAAQADwAH/
- AYAEABX/AbUBmAF4AdkB4QHkAc8B2AHcAckB0wHYAwABxgHRAdYBwAHMAdIBuwHIAc8BtQGYAXgV/wG1
- AZgBeAHZAeEB5AHPAdgB3AHJAdMB2AHHAdIB1wHGAdEB1gHAAcwB0gG7AcgBzwG1AZgBeAz/AdUBxQG8
- Af4B+wH6AVMBSgGJAZUBmgHaAVIBSgGIAfsB8gHtAUgBcAFNAWIBvwFpAUgBbwFNAfgB5gHdAY0BdgFk
- D/8DAAT/AYABAAPAAwAG/wMABP8BgAEAA8ADABX/AbUBmAF4Ae4C8gHsAvAB5wLtAwAB4wHpAeoB2QHg
- AeMBzAHWAdsBtQGYAXgV/wG1AZgBeAHuAvIB7ALwAecC7QHmAesB7AHjAekB6gHZAeAB4wHMAdYB2wG1
- AZgBeAz/AdkBywHDAf4B/AH7AcYBwQHUAW8BaQGdAZoBkQGwAfwB8wHwAZsBpwGcAYABnAGEAbkBwAG4
- AfgB6QHhAZMBfAFrD/8DAAf/AYAEAAb/AwAH/wGABAAV/wG1AZgBeAHxAvUPAAHSAdsB3wG1AZgBeBX/
- AbUBmAF4AfEC9Q8AAdIB2wHfAbUBmAF4DP8B3QHRAckB/wL9Af4B/AH7Af0B+wH5Af0B+AH2Af0B9gHz
- AfwB9AHvAfsB8AHrAfoB7gHpAfkB6wHkAZsBgwFzAUwBcQGLAUUBaQGEAT8BYgF+AToBXAF4AbMBwAHL
- A4YJAAP/BgAD/wkAA4YV/wG1AZgBeAH1AvcB9QL3AfQC9wMAAfQC9gHrAfAB8QHaAeEB5QG1AZgBeBX/
- AbUBmAF4AfUC9wH1AvcB9AL3AfQC9wH0AvYB6wHwAfEB2gHhAeUBtQGYAXgM/wHiAdcB0QHdAdAByQHY
- AcgBwQHTAcIBuQHPAbsBsgHKAbUBqgHFAa8BpAHBAaoBngG+AaUBmAG5AZ8BkQG0AZkBiwFkAcgB5wFZ
- AcMB5QFPAb0B4gFEAbcB4AE5AVoBdwP/AwAb/wMACf8DAAn/AbUBmAF4AfsC/AH7Av0B+wL9AwAB+wL8
- AfoC/AHzAfYB9wG1AZgBeBX/AbUBmAF4AfsC/AH7Av0B+wL9AfsC/QH7AvwB+gL8AfMB9gH3AbUBmAF4
- If8BTgG8AeIBjgHgAfEBhQHbAe8BpgGMAXoBmwGBAW4BlQF6AWcBWgHDAeUBUAG+AeMBPAFeAXoG/wMA
- Cf8DAA//AwAG/wMACf8BtQGYAXgV/wG1AZgBeBX/AbUBmAF4Ff8BtQGYAXgh/wFQAb4B4wGYAeYB9AGP
- AeEB8gGFAdwB7wF8AdYB7QFyAdEB6gFnAcoB6QFcAcUB5QFAAWIBfQn/AwAG/wMAEv8DAAP/AwAJ/wHT
- AcIBsAG1AZgBeAG1AZgBeAG1AZgBeAG1AZgBeAG1AZgBeAG1AZgBeAG1AZgBeAHTAcIBsBX/AdMBwgGw
- AbUBmAF4AbUBmAF4AbUBmAF4AbUBmAF4AbUBmAF4AbUBmAF4AbUBmAF4AdMBwgGwIf8BUAG+AeMBnwHr
- AfYBmQHmAfQBpwGLAXoBnAGBAW8BlQF6AWcBcwHRAesBaQHLAekBQwFmAYEM/wMAA/8DABX/AwB4/wFQ
- Ab4B4wGmAe0B9wGgAesB9QGZAecB9AGRAeMB8gGJAd4B8QF/AdgB7gF1AdIB6wFHAWwBhg//AwCT/wHP
- Ae0B9wFQAb4B4wFQAb4B4wFPAb0B4gFJAbgB3gFBAbAB2AE4AakB0gExAaIBzAGpAdEB4v////8S/wF8
- AXUBcwFOAksBVAFPAU0BVAFPAU0BVAFPAU0BVgFRAU0BUwFQAUwBUgFPAUsBUgFPAUwBUgFPAUsBUQFO
- AUsBVAFOAUac/wHZAc8ByAP/AfsB/QH/AfsB/QP/AfYC/wH2Av8B9gH/AfkB7AH/AfAB4QH/AeoB1QH/
- AeoB0gFUAU4BRpz/AdIByAHBA/8BxAGvAaIBxAGvAaIB/wH7AfkBxAGvAaIBxAGvAaIBxAGvAaIBxAGv
- AaIBxAGvAaIB/QHeAcsBVAFOAUYe/wHxAdsBxQGZATMBAAHeAb0BrDb/AewB0gHsAXIBJAFxAeYBzAHm
- Nv8B0gHIAcED/wH7Af0B/wH7Af0C/wH+AfwB/QH6AfgB+wH0Ae8B+wHuAeYB+gHpAd4B+AHiAdIB/wHi
- AdABVAFOAUYb/wHwAdkBwgHXAZoBWgGZATMBAAGZATMBAAHhAcQBtTD/Ae0B2AHtAakBUAGoAYABMAF/
- AXUBJwF1AesB0QHrM/8B0wHJAcID/wHEAa8BogHEAa8BogL/Af4BxAGvAaIBxAGvAaIBxAGvAaIBxAGv
- AaIBxAGvAaIB/wHlAdYBVAFOAUYY/wHvAdgBvwHXAZoBWgHYAZsBWwGZATMBAAGZATMBAAGZATMBAAHh
- AcQBtSr/AegB0QHoAaoBUAGpAcwBZwHLAX4BLgF+AZYBOAGVAXsBKwF6AfAB1QHwG/8B5gHdAdgBpAGK
- AXsBjwF0AWMBiAFtAVsB3QHTAcwG/wHRAccBwAP/AfsB/QH/AfsB/QT/Av4B/QH+AfsB+AH9AfYB8gH8
- AfAB6AH8AfAB6AH/AekB3AFUAU4BRhj/AdgBmwFcAdgBmwFbAdgBmwFbAZkBMwEAAZkBMwEAAZkBMwEA
- AZkBMwEAAeUBywG+Ev8BqwHwAfcBqwHiAeUBrAHOAcwBrQG7AbUBrgGnAZwD/wHkAcoB5AGpAVABqAHT
- AWsB0gHUAW4B0wF/ATABfgGfATwBnwGOATUBjQF9AS0BfAHhAdgB0gGzAZ4BjwGpAZQBhQHcAdMBzAz/
- AeYB3QHYAb8BqAGbAcUBsgGnAdMBxQG/AcgBuQGwAY4BcwFhAd0B0wHMA/8B0QHIAcED/wH7Af0B/wH7
- Af0H/wL+AfwBsAGtAawBQQFcAXIB4wHZAdMB/wHtAeMBVAFOAUYY/wHYAZsBWwHYAZsBWwHpAbQBfAH8
- AdYBrwG1AWMBNQGZATMBAAGZATMBAAGZATMBACT/AaoBUgGpAdIBagHRAdUBbwHVAb0BcAG8Ad4BmAHd
- AY8BRgGOAZ0BPAGcAX4BLgF+AdUBxAG8AdkBygHCAcYBsQGlAakBlAGFAbsBpwGZAaQBjgF9AYoBcgFg
- AXMBWQFFAbgBoQGUAcQBrQGhAeAB2QHUA/8B4AHZAdQBywG/AbYBiAFtAVsD/wHRAcgBwQP/AeIC6QFe
- AXUBhAHfAeQB5QP/AcIBygHOAUoBYQFwAS4BqQHWAQsBEAEbAV0BXAFgAaQBnQGWBv8BpAG+AacBHAFm
- ASkM/wHYAZsBWwHqAbcBggH7AdgBsgH+AdEBowH7AdgBsgGvAVcBKAGZATMBAAGZATMBAA//AasB8AH3
- AasB5QHpAawC1QGsAcQBwQGtAbUBrAGuAaQBmAP/AagBTwGnAdIBbQHRAbwBbwG7Ae8BpQHuAfsBnwH6
- Ae8BnQHuAZcBUgGWAXwBLgF8AeIB1wHRAfcB9AHyAdkBygHCAbMBngGPAbIBnQGPAZ4BiAF3AYYBbgFb
- AXABVwFCAdIBvwG3AbIBmwGMCf8B1AHHAcABjwF1AWMD/wHfAZ0BfQHxAcoBtwGPAaQBrAGGAdMB5QFL
- AWEBcAGnAZIBiQFKAWEBcAFhAcEB3gFXAU0BWQEfAdAB/wEVAScBMwEQAQcBCgECASEBLgFPAVYBZQFZ
- AXgBWwEYAYwBMgz/AecBswF8AfEBwwGRAf4BzwGdAf8BzQGZAf4B0AGfAfsB2AGyAakBTgEeAZkBMwEA
- JP8BpwFQAaYBvAFvAbsB7wGlAe4B+wGbAfoB+wGYAfoB+wGZAfoB5wGYAeYBkQFOAZAB7AHlAeEB4gHX
- AdEB1QHEAbsB4QHYAdIM/wHJAbcBrQGlAY8BfgHgAdkB1AP/AeAB2QHUAcIBrwGjAacBjQF9A/8B3wGd
- AX0B/wHFAaQB5QHJAbkBjwGkAawBgwHhAfYBSwFhAXABegHNAeIBUgFgAWcBaAHtAf8BQQE9AVABMgGy
- Ad8BHQGZAcgBFQGTAcQBFAFiAY4BQAFmAVEBKQGXAT8M/wH7AegB1QHlAbIBewH0AcABiwH/Ac0BmQH/
- Ac0BmQH+AdABoQHyAckBnQGwAVoBKRX/AasB8AH3AawC1QGuAbQBrAGuAZkBigP/Ac8BiAHPAeIBrwHi
- AfsBqwH6AfsBmAH6AfsBmAH6AeoBkAHpAc8BiAHPAfQB5gH0GP8B9wH0AfIB1AHHAb8BpQGPAX4BsgGb
- AY0BxAGsAaEBwQGpAZwB5gHdAdgD/wHfAZ0BfQHfAZ0BfQHfAZ0BfQHaAboBqgGPAaQBrAF/AeMB+QFT
- AYQBlQFoAe0B/wEwAToBTwFpAdsB9gFYAdIB8wFAAcMB7QExAbsB6gERAagB7AFQAZABjAEyAZ4BQQ//
- AfoB5wHTAeQBsAF5AfYBxAGQAf8BzQGZAfMBwgGOAeMBsAF5AfkB5gHSJP8B8AHUAfABzwGIAc8B7gG+
- Ae4B+wGuAfoB7AGRAesBzwGIAc8B8wHgAfIe/wH3AfQB8gHOAbwBsgHTAcEBuAG/AakBnAHmAd0B2BL/
- AecB6wHtAVcBawGAAWgB7QH/AVgBmAGuAW4B6wH/AXIB4QH5AWoB3QH3AVYBzwHyAUsBxwHtASIBugH6
- AV8BogGmAUEBrAFTEv8B+QHjAc0B4wGvAXgB7gG9AYoB4wGwAXkB+gHtAd4q/wHyAdsB8gHPAYgBzwHj
- AawB4wHPAYgBzwHzAeMB80L/AcIByAHQAbAB6wH6AVsBbQF/AW4B6wH/AW4B6wH/AW4B6wH/AXIB4gH6
- AWcB1wH0AVQBvQHcAVEBcgGLAWkBnAGJAYUBzAGFFf8B+AHmAdIB5QGyAX0B+wHxAecw/wHyAdsB8gHP
- AYgBzwHwAeMB8EX/AaMBrAG4AZUBuAHEAdQB2QHdAYEBpgG1AYABlwGjAYABlgGgAXoBjwGZAXMBhQGT
- AVwBcQGAAb8ByAHNAZkBuAGcAa4BwQGm//+i/wH4Ae4B47r/AfgB7gHjAZkBMwEAAfgB7gHjtP8B+AHu
- AeMBtQFjATUB2AGbAVsBmQEzAQAB+AHuAeMG/wF1AYQBjwFsAXoBhQFgAW0BdwFRAV0BZgFCAUwBVAEx
- AToBQQEjASoBMAEWARwBIQEOARMBGAEOARMBGAEOARMBGAEOARMBGAEOARMBGAEOARMBGAEOARMBGA//
- BvgJ/wb4VP8BlwGAAW8BlwGAAW8B2AGbAVsB/wHNAZkB6QG0AXwB2AGbAVsBmQEzAQAB+AHuAeMD/wF3
- AYcBkgGiAd8B8AFwAc0B6gFJAbgB4gE3Aa4B2wEtAakB2QEmAaEB0gEhAZgBxwEgAY4BvAEeAYMBrgEZ
- AX8BqwEVAXwBqQEbAXcBnwEfAXIBlgEWARwBIQz/A+4DiAMzA/gD/wP4AzMDiAPuHv8BdQFbAUYBbgFV
- AUEBagFQATsBZgFLATcBYwFIATMBYwFIATMBYwFIATMBYwFIATMBYwFIATMY/wGXAYABbwP/AfgB7gHj
- AdgBmwFbAf8BzQGZAekBtAF8AdgBmwFbAZkBMwEAAfgB7gHjAXoBigGVAaoB6AH2AZUB5QH8AYQB3wH7
- AXUB1gH6AWoB0AH3AV0BxgH0AVABvgHwAUEBtAHsATUBqgHoASsBpAHmASABmgHfARYBkAHXARsBdwGf
- ASABJwEtCf8D+AOIAwoD6An/A+gDCgOIA/gY/wGFAW0BWgHtAeYB4wG/AacBmgG4AZ8BkAGyAZcBiAGr
- AZABgAGlAYkBeQGgAYQBcgGbAYABbgGWAXwBaQFjAUgBMxX/AZcBgAFvBv8B+AHuAeMB2AGbAVsB/wHN
- AZkByQFzAUMB+AHuAeMD/wF9AY4BmAGwAeoB9gGfAekB+wGSAeQB/AGBAd0B+wF1AdYB+gFoAc4B9wFd
- AcYB9AFNAbwB8AFBAbQB7AE1AaoB6AEqAaMB5gEdAZYB3AEVAXwBqQEtATQBOwn/A/gDTQMKA/gJ/wP4
- AwoDTQP4Cf8BzgG7AbABtgGcAY0BpAGLAX0G/wGOAXYBZAHyAe0B6gHuAeYB4gHpAeAB3AHkAdkB1AHf
- AdIBywHaAcsBwwHVAcUBvAHRAb4BtAGaAX8BbAFjAUgBMwn/AdgB7gH2Cf8BlwGAAW8J/wH3Ad4B4gHY
- AZsBWwH4Ae4B4wb/AYABkQGcAbYB7QH4AaoB7AH7AZsB6AH7AY8B4wH8AYEB3QH7AXEB1QH5AWgBzgH3
- AVsBxQH0AU0BvAHwAT0BsgHsATIBqQHoASQBngHiARABggG0ATsBQwFLCf8D+ANNAwoD+An/A/gDCgNN
- A/gJ/wHcAc0BxQHHAbEBpQG2AZwBjgHHAbEBpQGqAY4BfgGXAYABbwH2AfIB8QHyAe0B6gHtAeYB4wHo
- AeAB3AHkAdkB0wHfAdIBywHaAcwBwwHVAcUBvAGdAYMBcQFjAUgBMwb/AdgB7gH2AQ4BeAGeAdgB7gH2
- Bv8BlwGAAW8G/wH9AewB/QGNAS0BjAH3Ad4B4gn/AYMBlQGfAb4B8AH5AasB8AH3AaUB7AH7AZgB5wH7
- AYkB4QH8AX8B3QH7AXEB1QH5AWUBzQH3AVgBxAHzAUsBuwHwAT0BsgHsASwBpAHjAQwBigG/AUkBUwFc
- Cf8D+AMKA78P/wO/AwoD+An/Ae4B5wHkAdsBzQHGAckBuAGvBv8BoAGKAXoB+QH3AvYB8gHxAfIB7QHq
- Ae0B5wHjAekB4AHcAeQB2QHUAd8B0gHMAdoBzAHDAaIBhwF1AWMBSAEzA/8B2AHuAfYBDgF4AZ4BHAG2
- Ae4BDgF4AZ4B2AHuAfYD/wGXAYABbwP/Af0B7AH9AbMBPAGyAdwBcAHbAY0BLQGMAf0B7AH9Bv8BhgGZ
- AaMBvgHwAfkBtgHtAfgBsAHuAfoBpAHrAfoBlQHmAfsBiQHhAfwBfQHcAfwBcQHVAfkBZQHNAfcBWAHE
- AfMBSQG5Ae8BNQGpAecBDAGPAccBVwFjAWsJ/wMKA2QD+A//A/gDZAMKA/gV/wGpAZQBhAH9AfsB/AH5
- AvcB9gHzAfAB8gHtAeoB7QHnAeMB6QHgAdwB5AHZAdQB3wHSAcwBpgGMAXsBZQFKATUB2AHuAfYBDgF4
- AZ4BTwHLAfEBNAHAAe8BLwG+Ae8BDAFiAYEBlwGAAW8BlwGAAW8BlwGAAW8B2QFsAdgB+gGtAfoB+wGY
- AfoB3AFwAdsBjQEtAYwB/QHsAf0D/wGJAZwBpgG+AfAB+QG2Ae0B+AG2Ae0B+AGrAfAB9wGiAewB+gGV
- AeYB+wGJAeEB/AF9AdwB/AFvAdMB+gFjAcwB9wFVAcMB8wFJAbkB7wEZAZkBzwFjAXABegn/A/gDMwO6
- D/8DugMzA/gY/wGyAZ0BjgP/AvwB+wH6AfgB9wH2AfIB8QHyAe0B6gHuAecB4wHpAeAB2wHkAdkB1AHf
- AdIBywFpAU4BOgEUAaoB4QGFAeEB9QFrAdcB9AFQAcsB8QE0AcAB8AEdAbUB7gEMAWIBgQHYAe4B9gP/
- Af0B7AH9AdMBZQHSAfoBrQH6AfsBmAH6AdwBcAHbAY0BLQGMAf0B7AH9AYsBoAGoAb4B8AH5Ab4B8AH5
- Ab4B8AH5Ab4B8AH5AbQB8gH4AaoB7AH7AaAB6QH7AZUB5QH8AYoB3wH8AX8B2AH7AXQB0gH4AWgBygH0
- AV0BwAHxAWMBcAF6Cf8D+ANNAzMD+An/A/gDMwNNA/gb/wG2AaEBkwGuAZoBiwGnAZEBgQGfAYkBeQGX
- AYABbwGPAXcBZQGHAW8BXQF/AWcBUwF4AV8BTAP/AdgB7gH2ARQBqgHhAYYB4QH1AWwB1gHzAVABywHy
- ATUBwAHwARwBtQHtAQwBYgGBAdgB7gH2A/8B/QHsAf0B0wFlAdIB+gGtAfoB0wFlAdIB/QHsAf0D/wGN
- AaEBqgGNAaEBqgGNAaEBqgGNAaEBqgGNAaEBqgGLAZ8BqAGJAZwBpgGJAZsBpgGHAZoBpAGGAZkBowGE
- AZYBoAGEAZYBoAGDAZUBoAGDAZUBoAF1AYQBjwn/A/gDTQMzA/gJ/wP4AzMDTQP4PP8B2AHuAfYBFAGq
- AeEBhQHgAfUBbAHWAfMBUAHLAfIBNAHAAe8BHQG1Ae0BDAFiAYEB2AHuAfYD/wH9AewB/QHTAWUB0gH9
- AewB/Qb/AY8BpAGsAbIB5AHsAbYB7QH4AbYB7QH4AakB7AH2AZIB4QHzAY0BoQGqAdUB3AHgHv8D+AOI
- AzMD3gn/A94DMwOIA/g//wHYAe4B9gEUAaoB4QGGAeEB9AFrAdYB9AFQAcsB8QEXAZgByAHYAe4B9gn/
- Af0B7AH9Cf8B2gHeAeEBjwGkAawBjwGkAawBjwGkAawBjwGkAawBjwGkAawB1QHcAeAk/wPuA4gDMwP4
- A/8D+AMzA4gD7kX/AdgB7gH2ARQBqgHhAYUB4QH1ARcBmAHIAdgB7gH2tP8B2AHuAfYBFAGqAeEB2AHu
- AfZ7/wFCAU0BPgcAAT4DAAEoAwABQAMAAZADAAEBAQABAQUAAYABBBYAA///AP8A/wD/AIUACw==
-
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdCtrl.Designer.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdCtrl.Designer.cs
deleted file mode 100644
index 9cad6797f0..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdCtrl.Designer.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-namespace Opc.Ua.Client.Controls
-{
- partial class NodeIdCtrl
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Component Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.NodeIdTB = new System.Windows.Forms.TextBox();
- this.BrowseBTN = new System.Windows.Forms.Button();
- this.SuspendLayout();
- //
- // NodeIdTB
- //
- this.NodeIdTB.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.NodeIdTB.Location = new System.Drawing.Point(0, 0);
- this.NodeIdTB.Name = "NodeIdTB";
- this.NodeIdTB.Size = new System.Drawing.Size(175, 20);
- this.NodeIdTB.TabIndex = 0;
- this.NodeIdTB.TextChanged += new System.EventHandler(this.NodeIdTB_TextChanged);
- //
- // BrowseBTN
- //
- this.BrowseBTN.Dock = System.Windows.Forms.DockStyle.Right;
- this.BrowseBTN.Location = new System.Drawing.Point(176, 0);
- this.BrowseBTN.Name = "BrowseBTN";
- this.BrowseBTN.Size = new System.Drawing.Size(24, 20);
- this.BrowseBTN.TabIndex = 5;
- this.BrowseBTN.Text = "...";
- this.BrowseBTN.UseVisualStyleBackColor = true;
- this.BrowseBTN.Click += new System.EventHandler(this.BrowseBTN_Click);
- //
- // NodeIdCtrl
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Controls.Add(this.BrowseBTN);
- this.Controls.Add(this.NodeIdTB);
- this.MaximumSize = new System.Drawing.Size(4096, 20);
- this.MinimumSize = new System.Drawing.Size(100, 20);
- this.Name = "NodeIdCtrl";
- this.Size = new System.Drawing.Size(200, 20);
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.TextBox NodeIdTB;
- private System.Windows.Forms.Button BrowseBTN;
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdCtrl.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdCtrl.cs
deleted file mode 100644
index 9d03afdc78..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdCtrl.cs
+++ /dev/null
@@ -1,206 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using System.Reflection;
-
-using Opc.Ua.Client;
-using Opc.Ua.Client.Controls;
-
-namespace Opc.Ua.Client.Controls
-{
- ///
- /// A list of node ids.
- ///
- public partial class NodeIdCtrl : UserControl
- {
- #region Constructors
- ///
- /// Initializes a new instance of the class.
- ///
- public NodeIdCtrl()
- {
- InitializeComponent();
-
- m_rootId = Objects.RootFolder;
- BrowseBTN.Enabled = false;
- }
- #endregion
-
- #region Event Handlers
- private Browser m_browser;
- private NodeId m_rootId;
- private ReferenceDescription m_reference;
- private event EventHandler m_IdentifierChanged;
- #endregion
-
- #region Public Interface
- ///
- /// Raised if the node id is changed.
- ///
- public event EventHandler IdentifierChanged
- {
- add { m_IdentifierChanged += value; }
- remove { m_IdentifierChanged -= value; }
- }
-
- ///
- /// The browser to used browse for a node id.
- ///
- [DefaultValue(null)]
- public Browser Browser
- {
- get
- {
- return m_browser;
- }
-
- set
- {
- m_browser = value;
- BrowseBTN.Enabled = m_browser != null;
- }
- }
-
- ///
- /// The root node id to display when browsing.
- ///
- [DefaultValue(null)]
- public NodeId RootId
- {
- get
- {
- return m_rootId;
- }
-
- set
- {
- m_rootId = value;
-
- if (NodeId.IsNull(m_rootId))
- {
- m_rootId = Objects.RootFolder;
- }
- }
- }
-
- ///
- /// Returns true if the control is empty.
- ///
- [DefaultValue(false)]
- public bool IsEmpty
- {
- get
- {
- return String.IsNullOrEmpty(NodeIdTB.Text);
- }
- }
-
- ///
- /// The node identifier specified in the control.
- ///
- [DefaultValue(null)]
- public NodeId Identifier
- {
- get
- {
- return NodeId.Parse(NodeIdTB.Text);
- }
-
- set
- {
- NodeIdTB.Text = Utils.Format("{0}", value);
- }
- }
-
- ///
- /// The reference seleected if the browse feature was used.
- ///
- [DefaultValue(null)]
- public ReferenceDescription Reference
- {
- get
- {
- return m_reference;
- }
-
- set
- {
- m_reference = value;
-
- if (m_reference != null)
- {
- NodeIdTB.Text = Utils.Format("{0}", m_reference.NodeId);
- }
- }
- }
- #endregion
-
- #region Event Handlers
- private void BrowseBTN_Click(object sender, EventArgs e)
- {
- try
- {
- /*
- ReferenceDescription reference = new SelectNodeDlg().ShowDialog(m_browser, RootId);
-
- if (reference != null)
- {
- NodeIdTB.Text = Utils.Format("{0}", reference.NodeId);
- m_reference = reference;
-
- if (m_IdentifierChanged != null)
- {
- m_IdentifierChanged(this, null);
- }
- }
- * */
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
-
- private void NodeIdTB_TextChanged(object sender, EventArgs e)
- {
- if (m_IdentifierChanged != null)
- {
- m_IdentifierChanged(this, null);
- }
- }
- #endregion
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdCtrl.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdCtrl.resx
deleted file mode 100644
index 19dc0dd8b3..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdCtrl.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdValueEditDlg.Designer.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdValueEditDlg.Designer.cs
deleted file mode 100644
index 57c9ff7ca2..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdValueEditDlg.Designer.cs
+++ /dev/null
@@ -1,148 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-namespace Opc.Ua.Client.Controls
-{
- partial class NodeIdValueEditDlg
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.ButtonsPN = new System.Windows.Forms.Panel();
- this.OkBTN = new System.Windows.Forms.Button();
- this.CancelBTN = new System.Windows.Forms.Button();
- this.MainPN = new System.Windows.Forms.Panel();
- this.ValueCTRL = new Opc.Ua.Client.Controls.NodeIdCtrl();
- this.ButtonsPN.SuspendLayout();
- this.MainPN.SuspendLayout();
- this.SuspendLayout();
- //
- // ButtonsPN
- //
- this.ButtonsPN.Controls.Add(this.OkBTN);
- this.ButtonsPN.Controls.Add(this.CancelBTN);
- this.ButtonsPN.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.ButtonsPN.Location = new System.Drawing.Point(0, 28);
- this.ButtonsPN.Name = "ButtonsPN";
- this.ButtonsPN.Size = new System.Drawing.Size(297, 31);
- this.ButtonsPN.TabIndex = 0;
- //
- // OkBTN
- //
- this.OkBTN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.OkBTN.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.OkBTN.Location = new System.Drawing.Point(4, 4);
- this.OkBTN.Name = "OkBTN";
- this.OkBTN.Size = new System.Drawing.Size(75, 23);
- this.OkBTN.TabIndex = 1;
- this.OkBTN.Text = "OK";
- this.OkBTN.UseVisualStyleBackColor = true;
- //
- // CancelBTN
- //
- this.CancelBTN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.CancelBTN.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.CancelBTN.Location = new System.Drawing.Point(218, 4);
- this.CancelBTN.Name = "CancelBTN";
- this.CancelBTN.Size = new System.Drawing.Size(75, 23);
- this.CancelBTN.TabIndex = 0;
- this.CancelBTN.Text = "Cancel";
- this.CancelBTN.UseVisualStyleBackColor = true;
- //
- // MainPN
- //
- this.MainPN.Controls.Add(this.ValueCTRL);
- this.MainPN.Dock = System.Windows.Forms.DockStyle.Fill;
- this.MainPN.Location = new System.Drawing.Point(0, 0);
- this.MainPN.Name = "MainPN";
- this.MainPN.Size = new System.Drawing.Size(297, 28);
- this.MainPN.TabIndex = 1;
- //
- // ValueCTRL
- //
- this.ValueCTRL.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.ValueCTRL.Location = new System.Drawing.Point(4, 4);
- this.ValueCTRL.MaximumSize = new System.Drawing.Size(4096, 20);
- this.ValueCTRL.MinimumSize = new System.Drawing.Size(100, 20);
- this.ValueCTRL.Name = "ValueCTRL";
- this.ValueCTRL.Size = new System.Drawing.Size(289, 20);
- this.ValueCTRL.TabIndex = 2;
- //
- // NumericValueEditDlg
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(297, 59);
- this.Controls.Add(this.MainPN);
- this.Controls.Add(this.ButtonsPN);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
- this.MaximizeBox = false;
- this.MinimumSize = new System.Drawing.Size(221, 91);
- this.Name = "NumericValueEditDlg";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Edit NodeId";
- this.ButtonsPN.ResumeLayout(false);
- this.MainPN.ResumeLayout(false);
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.Panel ButtonsPN;
- private System.Windows.Forms.Button OkBTN;
- private System.Windows.Forms.Button CancelBTN;
- private System.Windows.Forms.Panel MainPN;
- private Opc.Ua.Client.Controls.NodeIdCtrl ValueCTRL;
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdValueEditDlg.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdValueEditDlg.cs
deleted file mode 100644
index c09b73bcc8..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdValueEditDlg.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using System.Reflection;
-
-using Opc.Ua.Client;
-
-namespace Opc.Ua.Client.Controls
-{
- ///
- /// A dialog used to edit a NodeId.
- ///
- public partial class NodeIdValueEditDlg : Form
- {
- #region Constructors
- ///
- /// Initializes a new instance of the class.
- ///
- public NodeIdValueEditDlg()
- {
- InitializeComponent();
- }
- #endregion
-
- #region Public Interface
- ///
- /// Displays the dialog.
- ///
- public NodeId ShowDialog(Session session, NodeId value)
- {
- if (session == null) throw new ArgumentNullException("session");
-
- ValueCTRL.Browser = new Browser(session);
- ValueCTRL.RootId = Objects.RootFolder;
- ValueCTRL.Identifier = value;
-
- if (ShowDialog() != DialogResult.OK)
- {
- return null;
- }
-
- return ValueCTRL.Identifier;
- }
-
- ///
- /// Displays the dialog.
- ///
- public ExpandedNodeId ShowDialog(Session session, ExpandedNodeId value)
- {
- if (session == null) throw new ArgumentNullException("session");
-
- ValueCTRL.Browser = new Browser(session);
- ValueCTRL.RootId = Objects.RootFolder;
- ValueCTRL.Identifier = ExpandedNodeId.ToNodeId(value, session.NamespaceUris);
-
- if (ShowDialog() != DialogResult.OK)
- {
- return null;
- }
-
- return ValueCTRL.Identifier;
- }
- #endregion
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdValueEditDlg.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdValueEditDlg.resx
deleted file mode 100644
index 19dc0dd8b3..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NodeIdValueEditDlg.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NumericValueEditDlg.Designer.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NumericValueEditDlg.Designer.cs
deleted file mode 100644
index 47e4df17c2..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NumericValueEditDlg.Designer.cs
+++ /dev/null
@@ -1,149 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-namespace Opc.Ua.Client.Controls
-{
- partial class NumericValueEditDlg
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.ButtonsPN = new System.Windows.Forms.Panel();
- this.OkBTN = new System.Windows.Forms.Button();
- this.CancelBTN = new System.Windows.Forms.Button();
- this.MainPN = new System.Windows.Forms.Panel();
- this.ValueCTRL = new System.Windows.Forms.NumericUpDown();
- this.ButtonsPN.SuspendLayout();
- this.MainPN.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.ValueCTRL)).BeginInit();
- this.SuspendLayout();
- //
- // ButtonsPN
- //
- this.ButtonsPN.Controls.Add(this.OkBTN);
- this.ButtonsPN.Controls.Add(this.CancelBTN);
- this.ButtonsPN.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.ButtonsPN.Location = new System.Drawing.Point(0, 28);
- this.ButtonsPN.Name = "ButtonsPN";
- this.ButtonsPN.Size = new System.Drawing.Size(215, 31);
- this.ButtonsPN.TabIndex = 0;
- //
- // OkBTN
- //
- this.OkBTN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.OkBTN.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.OkBTN.Location = new System.Drawing.Point(4, 4);
- this.OkBTN.Name = "OkBTN";
- this.OkBTN.Size = new System.Drawing.Size(75, 23);
- this.OkBTN.TabIndex = 1;
- this.OkBTN.Text = "OK";
- this.OkBTN.UseVisualStyleBackColor = true;
- //
- // CancelBTN
- //
- this.CancelBTN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.CancelBTN.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.CancelBTN.Location = new System.Drawing.Point(136, 4);
- this.CancelBTN.Name = "CancelBTN";
- this.CancelBTN.Size = new System.Drawing.Size(75, 23);
- this.CancelBTN.TabIndex = 0;
- this.CancelBTN.Text = "Cancel";
- this.CancelBTN.UseVisualStyleBackColor = true;
- //
- // MainPN
- //
- this.MainPN.Controls.Add(this.ValueCTRL);
- this.MainPN.Dock = System.Windows.Forms.DockStyle.Fill;
- this.MainPN.Location = new System.Drawing.Point(0, 0);
- this.MainPN.Name = "MainPN";
- this.MainPN.Size = new System.Drawing.Size(215, 28);
- this.MainPN.TabIndex = 1;
- //
- // ValueCTRL
- //
- this.ValueCTRL.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.ValueCTRL.Location = new System.Drawing.Point(4, 5);
- this.ValueCTRL.Name = "ValueCTRL";
- this.ValueCTRL.Size = new System.Drawing.Size(207, 20);
- this.ValueCTRL.TabIndex = 0;
- //
- // NumericValueEditDlg
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(215, 59);
- this.Controls.Add(this.MainPN);
- this.Controls.Add(this.ButtonsPN);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
- this.MaximizeBox = false;
- this.MinimumSize = new System.Drawing.Size(221, 91);
- this.Name = "NumericValueEditDlg";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Edit Numeric Value";
- this.ButtonsPN.ResumeLayout(false);
- this.MainPN.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.ValueCTRL)).EndInit();
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.Panel ButtonsPN;
- private System.Windows.Forms.Button OkBTN;
- private System.Windows.Forms.Button CancelBTN;
- private System.Windows.Forms.Panel MainPN;
- private System.Windows.Forms.NumericUpDown ValueCTRL;
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NumericValueEditDlg.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NumericValueEditDlg.cs
deleted file mode 100644
index 8b9b55fbd5..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NumericValueEditDlg.cs
+++ /dev/null
@@ -1,163 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using System.Reflection;
-
-namespace Opc.Ua.Client.Controls
-{
- ///
- /// A dialog to edit a numeric value.
- ///
- public partial class NumericValueEditDlg : Form
- {
- #region Constructors
- ///
- /// Initializes a new instance of the class.
- ///
- public NumericValueEditDlg()
- {
- InitializeComponent();
- }
- #endregion
-
- #region Public Interface
- ///
- /// Displays the dialog.
- ///
- public object ShowDialog(object value, Type type)
- {
- if (type == null && value != null)
- {
- type = value.GetType();
- }
-
- if (type == typeof(Variant))
- {
- type = typeof(double);
- }
-
- SetLimits(type);
-
- ValueCTRL.Value = Convert.ToDecimal(value);
-
- if (ShowDialog() != DialogResult.OK)
- {
- return null;
- }
-
- return Convert.ChangeType(ValueCTRL.Value, type);
- }
- #endregion
-
- #region Private Methods
- ///
- /// Sets the limits according to the data type.
- ///
- private void SetLimits(Type type)
- {
- if (type == typeof(sbyte))
- {
- ValueCTRL.Minimum = SByte.MinValue;
- ValueCTRL.Maximum = SByte.MaxValue;
- ValueCTRL.DecimalPlaces = 0;
- }
-
- if (type == typeof(byte))
- {
- ValueCTRL.Minimum = Byte.MinValue;
- ValueCTRL.Maximum = Byte.MaxValue;
- ValueCTRL.DecimalPlaces = 0;
- }
-
- if (type == typeof(short))
- {
- ValueCTRL.Minimum = Int16.MinValue;
- ValueCTRL.Maximum = Int16.MaxValue;
- ValueCTRL.DecimalPlaces = 0;
- }
-
- if (type == typeof(ushort))
- {
- ValueCTRL.Minimum = UInt16.MinValue;
- ValueCTRL.Maximum = UInt16.MaxValue;
- ValueCTRL.DecimalPlaces = 0;
- }
-
- if (type == typeof(int))
- {
- ValueCTRL.Minimum = Int32.MinValue;
- ValueCTRL.Maximum = Int32.MaxValue;
- ValueCTRL.DecimalPlaces = 0;
- }
-
- if (type == typeof(uint))
- {
- ValueCTRL.Minimum = UInt32.MinValue;
- ValueCTRL.Maximum = UInt32.MaxValue;
- ValueCTRL.DecimalPlaces = 0;
- }
-
- if (type == typeof(long))
- {
- ValueCTRL.Minimum = Int64.MinValue;
- ValueCTRL.Maximum = Int64.MaxValue;
- ValueCTRL.DecimalPlaces = 0;
- }
-
- if (type == typeof(ulong))
- {
- ValueCTRL.Minimum = UInt64.MinValue;
- ValueCTRL.Maximum = UInt64.MaxValue;
- ValueCTRL.DecimalPlaces = 0;
- }
-
- if (type == typeof(float))
- {
- ValueCTRL.Minimum = Decimal.MinValue;
- ValueCTRL.Maximum = Decimal.MaxValue;
- ValueCTRL.DecimalPlaces = 6;
- }
-
- if (type == typeof(double))
- {
- ValueCTRL.Minimum = Decimal.MinValue;
- ValueCTRL.Maximum = Decimal.MaxValue;
- ValueCTRL.DecimalPlaces = 15;
- }
- }
- #endregion
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NumericValueEditDlg.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NumericValueEditDlg.resx
deleted file mode 100644
index 19dc0dd8b3..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/NumericValueEditDlg.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ReferenceTypeCtrl.Designer.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ReferenceTypeCtrl.Designer.cs
deleted file mode 100644
index fe7c6d5544..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ReferenceTypeCtrl.Designer.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-namespace Opc.Ua.Client.Controls
-{
- partial class ReferenceTypeCtrl
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Component Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.ReferenceTypesCB = new System.Windows.Forms.ComboBox();
- this.SuspendLayout();
- //
- // ReferenceTypesCB
- //
- this.ReferenceTypesCB.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.ReferenceTypesCB.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.ReferenceTypesCB.FormattingEnabled = true;
- this.ReferenceTypesCB.Location = new System.Drawing.Point(0, 0);
- this.ReferenceTypesCB.Name = "ReferenceTypesCB";
- this.ReferenceTypesCB.Size = new System.Drawing.Size(200, 21);
- this.ReferenceTypesCB.TabIndex = 0;
- this.ReferenceTypesCB.SelectedIndexChanged += new System.EventHandler(this.ReferenceTypesCB_SelectedIndexChanged);
- //
- // ReferenceTypeCtrl
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Controls.Add(this.ReferenceTypesCB);
- this.MaximumSize = new System.Drawing.Size(4096, 21);
- this.MinimumSize = new System.Drawing.Size(200, 21);
- this.Name = "ReferenceTypeCtrl";
- this.Size = new System.Drawing.Size(200, 21);
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.ComboBox ReferenceTypesCB;
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ReferenceTypeCtrl.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ReferenceTypeCtrl.cs
deleted file mode 100644
index dce9122b47..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ReferenceTypeCtrl.cs
+++ /dev/null
@@ -1,273 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using System.Reflection;
-
-namespace Opc.Ua.Client.Controls
-{
- ///
- /// Displays a drop down list of reference types.
- ///
- public partial class ReferenceTypeCtrl : UserControl
- {
- #region Constructors
- ///
- /// Initializes a new instance of the class.
- ///
- public ReferenceTypeCtrl()
- {
- InitializeComponent();
- m_baseTypeId = ReferenceTypes.References;
- }
- #endregion
-
- #region Private Fields
- private Session m_session;
- private NodeId m_baseTypeId;
- private event EventHandler m_referenceSelectionChanged;
- #endregion
-
- #region Public Interface
- ///
- /// Initializes the control with references starting with the specified based type.
- ///
- public void Initialize(Session session, NodeId baseTypeId)
- {
- m_session = session;
- m_baseTypeId = baseTypeId;
-
- if (NodeId.IsNull(m_baseTypeId))
- {
- m_baseTypeId = ReferenceTypes.References;
- }
-
- ReferenceTypesCB.Items.Clear();
-
- // recurcively fetch the reference types from the server.
- if (m_session != null)
- {
- AddReferenceTypes(m_baseTypeId, null);
- }
- }
-
- ///
- /// The currently seleected reference type id.
- ///
- public NodeId SelectedTypeId
- {
- get
- {
- ReferenceTypeChoice choice = ReferenceTypesCB.SelectedItem as ReferenceTypeChoice;
-
- if (choice == null)
- {
- return null;
- }
-
- return choice.ReferenceType.NodeId;
- }
-
- set
- {
- for (int ii = 0; ii < ReferenceTypesCB.Items.Count; ii++)
- {
- ReferenceTypeChoice choice = ReferenceTypesCB.Items[ii] as ReferenceTypeChoice;
-
- if (choice != null && choice.ReferenceType.NodeId == value)
- {
- ReferenceTypesCB.SelectedIndex = ii;
- return;
- }
- }
-
- if (ReferenceTypesCB.Items.Count > 0)
- {
- ReferenceTypesCB.SelectedIndex = 0;
- }
- }
- }
-
- ///
- /// Raised when the selected reference is changed.
- ///
- public event EventHandler ReferenceSelectionChanged
- {
- add { m_referenceSelectionChanged += value; }
- remove { m_referenceSelectionChanged -= value; }
- }
-
- #region ReferenceSelectedEventArgs Class
- ///
- /// Specifies the nodes that where selected in the control.
- ///
- public class ReferenceSelectedEventArgs : EventArgs
- {
- ///
- /// Constructs a new object.
- ///
- public ReferenceSelectedEventArgs(NodeId selectedTypeId)
- {
- m_referenceTypeId = selectedTypeId;
- }
-
- ///
- /// The reference type that was selected.
- ///
- public NodeId ReferenceTypeId
- {
- get { return m_referenceTypeId; }
- }
-
- private NodeId m_referenceTypeId;
- }
- #endregion
- #endregion
-
- #region ReferenceTypeChoice Class
- ///
- /// A reference type that may be used as a browse filter.
- ///
- private class ReferenceTypeChoice
- {
- ///
- /// The text to display in the control.
- ///
- public override string ToString()
- {
- if (ReferenceType == null)
- {
- return "";
- }
-
- StringBuilder text = new StringBuilder();
-
- GetPrefix(text);
-
- if (text.Length > 0)
- {
- text.Append("> ");
- }
-
- if (ReferenceType != null)
- {
- text.Append(ReferenceType.ToString());
- }
-
- return text.ToString();
- }
-
- ///
- /// Adds a prefix for subtypes.
- ///
- private void GetPrefix(StringBuilder prefix)
- {
- if (SuperType != null)
- {
- SuperType.GetPrefix(prefix);
- prefix.Append("--");
- }
- }
-
- public ReferenceTypeNode ReferenceType;
- public ReferenceTypeChoice SuperType;
- }
- #endregion
-
- #region Private Methods
- ///
- /// Adds the reference types to drop down box.
- ///
- private void AddReferenceTypes(ExpandedNodeId referenceTypeId, ReferenceTypeChoice supertype)
- {
- if (referenceTypeId == null) throw new ApplicationException("referenceTypeId");
-
- try
- {
- // find reference.
- ReferenceTypeNode node = m_session.NodeCache.Find(referenceTypeId) as ReferenceTypeNode;
-
- if (node == null)
- {
- return;
- }
-
- // add reference to combobox.
- ReferenceTypeChoice choice = new ReferenceTypeChoice();
-
- choice.ReferenceType = node;
- choice.SuperType = supertype;
-
- ReferenceTypesCB.Items.Add(choice);
-
- // recursively add subtypes.
- IList subtypes = m_session.NodeCache.FindReferences(node.NodeId, ReferenceTypeIds.HasSubtype, false, true);
-
- foreach (INode subtype in subtypes)
- {
- AddReferenceTypes(subtype.NodeId, choice);
- }
- }
- catch (Exception e)
- {
- Utils.Trace(e, "Ignoring unknown reference type.");
- return;
- }
- }
- #endregion
-
- #region Event Handlers
- private void ReferenceTypesCB_SelectedIndexChanged(object sender, EventArgs e)
- {
- try
- {
- if (m_referenceSelectionChanged != null)
- {
- NodeId referenceTypeId = SelectedTypeId;
-
- if (referenceTypeId != null)
- {
- m_referenceSelectionChanged(this, new ReferenceSelectedEventArgs(referenceTypeId));
- }
- }
- }
- catch (Exception exception)
- {
- GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
- }
- }
- #endregion
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ReferenceTypeCtrl.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ReferenceTypeCtrl.resx
deleted file mode 100644
index 19dc0dd8b3..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/ReferenceTypeCtrl.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/StringValueEditDlg.Designer.cs b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/StringValueEditDlg.Designer.cs
deleted file mode 100644
index 54348ad8a1..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/StringValueEditDlg.Designer.cs
+++ /dev/null
@@ -1,150 +0,0 @@
-/* ========================================================================
- * Copyright (c) 2005-2019 The OPC Foundation, Inc. All rights reserved.
- *
- * OPC Foundation MIT License 1.00
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * The complete license agreement can be found here:
- * http://opcfoundation.org/License/MIT/1.00/
- * ======================================================================*/
-
-namespace Opc.Ua.Client.Controls
-{
- partial class StringValueEditDlg
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.ButtonsPN = new System.Windows.Forms.Panel();
- this.OkBTN = new System.Windows.Forms.Button();
- this.CancelBTN = new System.Windows.Forms.Button();
- this.MainPN = new System.Windows.Forms.Panel();
- this.ValueTB = new System.Windows.Forms.TextBox();
- this.ButtonsPN.SuspendLayout();
- this.MainPN.SuspendLayout();
- this.SuspendLayout();
- //
- // ButtonsPN
- //
- this.ButtonsPN.Controls.Add(this.OkBTN);
- this.ButtonsPN.Controls.Add(this.CancelBTN);
- this.ButtonsPN.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.ButtonsPN.Location = new System.Drawing.Point(0, 24);
- this.ButtonsPN.Name = "ButtonsPN";
- this.ButtonsPN.Size = new System.Drawing.Size(252, 31);
- this.ButtonsPN.TabIndex = 0;
- //
- // OkBTN
- //
- this.OkBTN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.OkBTN.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.OkBTN.Location = new System.Drawing.Point(4, 4);
- this.OkBTN.Name = "OkBTN";
- this.OkBTN.Size = new System.Drawing.Size(75, 23);
- this.OkBTN.TabIndex = 1;
- this.OkBTN.Text = "OK";
- this.OkBTN.UseVisualStyleBackColor = true;
- //
- // CancelBTN
- //
- this.CancelBTN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.CancelBTN.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.CancelBTN.Location = new System.Drawing.Point(173, 4);
- this.CancelBTN.Name = "CancelBTN";
- this.CancelBTN.Size = new System.Drawing.Size(75, 23);
- this.CancelBTN.TabIndex = 0;
- this.CancelBTN.Text = "Cancel";
- this.CancelBTN.UseVisualStyleBackColor = true;
- //
- // MainPN
- //
- this.MainPN.Controls.Add(this.ValueTB);
- this.MainPN.Dock = System.Windows.Forms.DockStyle.Fill;
- this.MainPN.Location = new System.Drawing.Point(0, 0);
- this.MainPN.Name = "MainPN";
- this.MainPN.Padding = new System.Windows.Forms.Padding(3);
- this.MainPN.Size = new System.Drawing.Size(252, 24);
- this.MainPN.TabIndex = 1;
- //
- // ValueTB
- //
- this.ValueTB.Dock = System.Windows.Forms.DockStyle.Fill;
- this.ValueTB.Location = new System.Drawing.Point(3, 3);
- this.ValueTB.MinimumSize = new System.Drawing.Size(4, 20);
- this.ValueTB.Multiline = true;
- this.ValueTB.Name = "ValueTB";
- this.ValueTB.ScrollBars = System.Windows.Forms.ScrollBars.Both;
- this.ValueTB.Size = new System.Drawing.Size(246, 20);
- this.ValueTB.TabIndex = 0;
- this.ValueTB.Text = "Default";
- //
- // StringValueEditDlg
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(252, 55);
- this.Controls.Add(this.MainPN);
- this.Controls.Add(this.ButtonsPN);
- this.MaximizeBox = false;
- this.MinimumSize = new System.Drawing.Size(221, 89);
- this.Name = "StringValueEditDlg";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Edit String Value";
- this.ButtonsPN.ResumeLayout(false);
- this.MainPN.ResumeLayout(false);
- this.MainPN.PerformLayout();
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.Panel ButtonsPN;
- private System.Windows.Forms.Button OkBTN;
- private System.Windows.Forms.Button CancelBTN;
- private System.Windows.Forms.Panel MainPN;
- private System.Windows.Forms.TextBox ValueTB;
- }
-}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/StringValueEditDlg.resx b/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/StringValueEditDlg.resx
deleted file mode 100644
index 19dc0dd8b3..0000000000
--- a/SampleApplications/Samples/ClientControls.Net4/Common (OLD)/StringValueEditDlg.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/SampleApplications/Samples/ClientControls.Net4/Common/Client/ConnectServerCtrl.cs b/SampleApplications/Samples/ClientControls.Net4/Common/Client/ConnectServerCtrl.cs
index f8d6838d25..669daf5345 100644
--- a/SampleApplications/Samples/ClientControls.Net4/Common/Client/ConnectServerCtrl.cs
+++ b/SampleApplications/Samples/ClientControls.Net4/Common/Client/ConnectServerCtrl.cs
@@ -33,6 +33,7 @@ using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Threading.Tasks;
+using Opc.Ua.Client.ComplexTypes;
namespace Opc.Ua.Client.Controls
{
@@ -307,6 +308,9 @@ namespace Opc.Ua.Client.Controls
// raise an event.
DoConnectComplete(null);
+ var typeSystemLoader = new ComplexTypeSystem(m_session);
+ await typeSystemLoader.Load();
+
// return the new session.
return m_session;
}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/DataListCtrl.cs b/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/DataListCtrl.cs
index 4026c68f4f..92e9b1931d 100644
--- a/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/DataListCtrl.cs
+++ b/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/DataListCtrl.cs
@@ -557,12 +557,38 @@ namespace Opc.Ua.Client.Controls
if (dataValue != null)
{
- if (StatusCode.IsBad(dataValue.StatusCode))
+ StringBuilder formattedValue = new StringBuilder();
+
+ if (!StatusCode.IsGood(dataValue.StatusCode))
{
- return String.Format("{0}", dataValue.StatusCode);
+ formattedValue.Append("[");
+ formattedValue.AppendFormat("Q:{0}", dataValue.StatusCode);
}
- return String.Format("{0}", dataValue.Value);
+ DateTime now = DateTime.UtcNow;
+
+ if ((dataValue != null) &&
+ ((dataValue.ServerTimestamp > now) || (dataValue.SourceTimestamp > now)))
+ {
+ if (formattedValue.ToString().Length > 0)
+ {
+ formattedValue.Append(", ");
+ }
+ else
+ {
+ formattedValue.Append("[");
+ }
+
+ formattedValue.Append("T:future");
+ }
+
+ if (formattedValue.ToString().Length > 0)
+ {
+ formattedValue.Append("] ");
+ }
+
+ formattedValue.AppendFormat("{0}", dataValue.Value);
+ return formattedValue.ToString();
}
// use default formatting.
@@ -583,10 +609,16 @@ namespace Opc.Ua.Client.Controls
{
// get the list item to update.
ListViewItem listitem = GetListItem(index, ref overwrite, name, type);
-
- // update list item.
- listitem.SubItems[1].Text = GetValueText(componentValue);
-
+ if (componentValue is StatusCode)
+ {
+ listitem.SubItems[1].Text = componentValue.ToString();
+ }
+ else
+ {
+ // update list item.
+ listitem.SubItems[1].Text = GetValueText(componentValue);
+ }
+
// move to next item.
index++;
@@ -1700,12 +1732,12 @@ namespace Opc.Ua.Client.Controls
((IList)state.Value)[ii] = value;
state.Component = value;
}
-
+
m_expanding = false;
- int index = (int)state.ComponentIndex;
+ int index = (int)state.ComponentIndex - 1;
int indentCount = ItemsLV.Items[index].IndentCount;
- while (ItemsLV.Items[index - 1].IndentCount == indentCount)
+ while (index > 0 && ItemsLV.Items[index - 1].IndentCount == indentCount)
{
--index;
}
diff --git a/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/GuiUtils.cs b/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/GuiUtils.cs
index e222458214..baa69d3028 100644
--- a/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/GuiUtils.cs
+++ b/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/GuiUtils.cs
@@ -452,7 +452,7 @@ namespace Opc.Ua.Client.Controls
if (text != null)
{
- return new LocalizedText(text, ltext.Locale);
+ return new LocalizedText(ltext.Locale, text);
}
return null;
diff --git a/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/ReferenceTypeCtrl.cs b/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/ReferenceTypeCtrl.cs
index dce9122b47..83cb9c6d26 100644
--- a/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/ReferenceTypeCtrl.cs
+++ b/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/ReferenceTypeCtrl.cs
@@ -50,7 +50,7 @@ namespace Opc.Ua.Client.Controls
public ReferenceTypeCtrl()
{
InitializeComponent();
- m_baseTypeId = ReferenceTypes.References;
+ m_baseTypeId = Opc.Ua.ReferenceTypeIds.References;
}
#endregion
@@ -71,7 +71,7 @@ namespace Opc.Ua.Client.Controls
if (NodeId.IsNull(m_baseTypeId))
{
- m_baseTypeId = ReferenceTypes.References;
+ m_baseTypeId = ReferenceTypeIds.References;
}
ReferenceTypesCB.Items.Clear();
diff --git a/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/SimpleValueEditDlg.cs b/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/SimpleValueEditDlg.cs
index 45ee0a43d9..6a3e9debed 100644
--- a/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/SimpleValueEditDlg.cs
+++ b/SampleApplications/Samples/ClientControls.Net4/Configuration/Common (OLD)/SimpleValueEditDlg.cs
@@ -122,7 +122,7 @@ namespace Opc.Ua.Client.Controls
if (m_type == typeof(float)) return Convert.ToSingle(text);
if (m_type == typeof(double)) return Convert.ToDouble(text);
if (m_type == typeof(string)) return text;
- if (m_type == typeof(DateTime)) return DateTime.Parse(text);
+ if (m_type == typeof(DateTime)) return DateTime.ParseExact(text, "yyyy-MM-dd HH:mm:ss.fff", null);
if (m_type == typeof(Guid)) return new Guid(text);
if (m_type == typeof(QualifiedName)) return new QualifiedName(text);
if (m_type == typeof(LocalizedText)) return new LocalizedText(text);
diff --git a/SampleApplications/Samples/ClientControls.Net4/UA Client Controls.csproj b/SampleApplications/Samples/ClientControls.Net4/UA Client Controls.csproj
index afda1bcce2..929f3ebb00 100644
--- a/SampleApplications/Samples/ClientControls.Net4/UA Client Controls.csproj
+++ b/SampleApplications/Samples/ClientControls.Net4/UA Client Controls.csproj
@@ -1019,6 +1019,10 @@
{d918c0f6-39bd-4ed0-8323-e5a2eb9a85da}
Opc.Ua.Core