CP-5749: Created new NavigationView control and moved the search box from the main window into there.

Signed-off-by: Konstantina Chremmou <konstantina.chremmou@citrix.com>
This commit is contained in:
Konstantina Chremmou 2013-08-23 12:23:35 +01:00
parent e5b8bc6cf1
commit d128abe4f9
9 changed files with 535 additions and 59 deletions

View File

@ -0,0 +1,58 @@
namespace XenAdmin.Controls.MainWindowControls
{
partial class NavigationView
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.searchTextBox = new XenAdmin.Controls.SearchTextBox();
this.SuspendLayout();
//
// searchTextBox
//
this.searchTextBox.Dock = System.Windows.Forms.DockStyle.Top;
this.searchTextBox.Location = new System.Drawing.Point(0, 0);
this.searchTextBox.Name = "searchTextBox";
this.searchTextBox.Size = new System.Drawing.Size(210, 23);
this.searchTextBox.TabIndex = 3;
this.searchTextBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
//
// NavigationView
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.searchTextBox);
this.Name = "NavigationView";
this.Size = new System.Drawing.Size(210, 288);
this.ResumeLayout(false);
}
#endregion
private SearchTextBox searchTextBox;
}
}

View File

@ -0,0 +1,79 @@
/* Copyright (c) Citrix Systems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace XenAdmin.Controls.MainWindowControls
{
public partial class NavigationView : UserControl
{
[Browsable(true)]
public event Action SearchTextChanged;
public NavigationView()
{
InitializeComponent();
}
public string SearchText
{
get { return searchTextBox.Text; }
}
public void SaveSearchBoxState()
{
searchTextBox.SaveState();
}
public void RestoreSearchBoxState()
{
searchTextBox.RestoreState();
}
public void ResetSeachBox()
{
searchTextBox.Reset();
}
private void searchTextBox_TextChanged(object sender, EventArgs e)
{
if (SearchTextChanged != null)
SearchTextChanged();
}
}
}

View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -69,7 +69,6 @@ namespace XenAdmin
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainWindow));
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.treeView = new XenAdmin.Controls.FlickerFreeTreeView();
this.searchTextBox = new XenAdmin.Controls.SearchTextBox();
this.TreeSearchBox = new XenAdmin.Controls.TreeSearchBox();
this.TitleBackPanel = new XenAdmin.Controls.GradientPanel.GradientPanel();
this.TitleIcon = new System.Windows.Forms.PictureBox();
@ -254,7 +253,7 @@ namespace XenAdmin
this.pluginItemsPlaceHolderToolStripMenuItem6 = new System.Windows.Forms.ToolStripMenuItem();
this.templatePropertiesToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.bugToolToolStripMenuItem = new CommandToolStripMenuItem();
this.bugToolToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.AlertsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator();
this.LicenseManagerMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -281,6 +280,7 @@ namespace XenAdmin
this.MainMenuBar = new XenAdmin.Controls.MenuStripEx();
this.securityGroupsToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.MenuPanel = new System.Windows.Forms.Panel();
this.navigationView = new XenAdmin.Controls.MainWindowControls.NavigationView();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
@ -306,8 +306,8 @@ namespace XenAdmin
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.navigationView);
this.splitContainer1.Panel1.Controls.Add(this.treeView);
this.splitContainer1.Panel1.Controls.Add(this.searchTextBox);
this.splitContainer1.Panel1.Controls.Add(this.TreeSearchBox);
resources.ApplyResources(this.splitContainer1.Panel1, "splitContainer1.Panel1");
//
@ -340,12 +340,6 @@ namespace XenAdmin
this.treeView.DragOver += new System.Windows.Forms.DragEventHandler(this.treeView_DragOver);
this.treeView.SelectionsChanged += new System.EventHandler(this.treeView_SelectionsChanged);
//
// searchTextBox
//
resources.ApplyResources(this.searchTextBox, "searchTextBox");
this.searchTextBox.Name = "searchTextBox";
this.searchTextBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
//
// TreeSearchBox
//
resources.ApplyResources(this.TreeSearchBox, "TreeSearchBox");
@ -1822,6 +1816,12 @@ namespace XenAdmin
resources.ApplyResources(this.MenuPanel, "MenuPanel");
this.MenuPanel.Name = "MenuPanel";
//
// navigationView
//
resources.ApplyResources(this.navigationView, "navigationView");
this.navigationView.Name = "navigationView";
this.navigationView.SearchTextChanged += new Action(navigationView_SearchTextChanged);
//
// MainWindow
//
resources.ApplyResources(this, "$this");
@ -1839,6 +1839,7 @@ namespace XenAdmin
this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.MainWindow_HelpRequested);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainWindow_KeyDown);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel1.PerformLayout();
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.ResumeLayout(false);
this.TitleBackPanel.ResumeLayout(false);
@ -2080,7 +2081,7 @@ namespace XenAdmin
private ToolStripSeparator toolStripSeparator31;
private CommandToolStripMenuItem destroyServerToolStripMenuItem;
private CommandToolStripMenuItem restartToolstackToolStripMenuItem;
private SearchTextBox searchTextBox;
private XenAdmin.Controls.MainWindowControls.NavigationView navigationView;
}
}

View File

@ -1372,7 +1372,7 @@ namespace XenAdmin
/// </summary>
private void RefreshTreeView()
{
VirtualTreeNode newRootNode = treeBuilder.CreateNewRootNode(TreeSearchBox.Search.AddFullTextFilter(searchTextBox.Text), TreeSearchBoxMode);
VirtualTreeNode newRootNode = treeBuilder.CreateNewRootNode(TreeSearchBox.Search.AddFullTextFilter(navigationView.SearchText), TreeSearchBoxMode);
Program.Invoke(this, () =>
{
@ -1386,7 +1386,7 @@ namespace XenAdmin
try
{
treeBuilder.RefreshTreeView(newRootNode, searchTextBox.Text, TreeSearchBoxMode);
treeBuilder.RefreshTreeView(newRootNode,navigationView.SearchText, TreeSearchBoxMode);
}
catch (Exception exn)
{
@ -1563,13 +1563,14 @@ namespace XenAdmin
MajorChange(() =>
{
bool treeViewHasFocus = treeView.ContainsFocus;
searchTextBox.SaveState();
navigationView.SaveSearchBoxState();
ChangeToNewTabs();
if (!searchMode && treeViewHasFocus)
treeView.Focus();
searchTextBox.RestoreState();
navigationView.RestoreSearchBoxState();
});
}
@ -3165,14 +3166,14 @@ namespace XenAdmin
bool success = SelectObject(o, treeView.Nodes[0], expand, ref cancelled);
if (!success && !cancelled && searchTextBox.Text.Length > 0)
if (!success && !cancelled && navigationView.SearchText.Length > 0)
{
// if the node could not be found and the node *is* selectable then it means that
// node isn't visible with the current search. So clear the search and try and
// select the object again.
// clear search.
searchTextBox.Reset();
navigationView.ResetSeachBox();
// update the treeview
RefreshTreeView();
@ -3412,20 +3413,20 @@ namespace XenAdmin
return name;
}
private void searchTextBox_TextChanged(object sender, EventArgs e)
{
RequestRefreshTreeView();
}
void TreeSearchBox_SearchChanged(TreeSearchBox.Mode mode)
{
TreeSearchBoxMode = mode;
searchTextBox.Reset();
navigationView.ResetSeachBox();
RequestRefreshTreeView();
FocusTreeView();
SelectObject(null);
}
private void navigationView_SearchTextChanged()
{
RequestRefreshTreeView();
}
#endregion
private void AlertsToolbarButton_Click(object sender, EventArgs e)

View File

@ -128,19 +128,43 @@
<data name="splitContainer1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="treeView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<data name="navigationView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="navigationView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 25</value>
</data>
<data name="navigationView.Size" type="System.Drawing.Size, System.Drawing">
<value>243, 67</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="navigationView.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;navigationView.Name" xml:space="preserve">
<value>navigationView</value>
</data>
<data name="&gt;&gt;navigationView.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;navigationView.Parent" xml:space="preserve">
<value>splitContainer1.Panel1</value>
</data>
<data name="&gt;&gt;navigationView.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="treeView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="treeView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 48</value>
<value>0, 92</value>
</data>
<data name="treeView.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 0</value>
</data>
<data name="treeView.Size" type="System.Drawing.Size, System.Drawing">
<value>243, 629</value>
<value>243, 584</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="treeView.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
@ -154,32 +178,14 @@
<value>splitContainer1.Panel1</value>
</data>
<data name="&gt;&gt;treeView.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="searchTextBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="searchTextBox.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 25</value>
</data>
<data name="searchTextBox.Size" type="System.Drawing.Size, System.Drawing">
<value>243, 23</value>
</data>
<data name="searchTextBox.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;searchTextBox.Name" xml:space="preserve">
<value>searchTextBox</value>
</data>
<data name="&gt;&gt;searchTextBox.Type" xml:space="preserve">
<value>XenAdmin.Controls.SearchTextBox, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;searchTextBox.Parent" xml:space="preserve">
<value>splitContainer1.Panel1</value>
</data>
<data name="&gt;&gt;searchTextBox.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="TreeSearchBox.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="TreeSearchBox.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="TreeSearchBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
@ -204,12 +210,6 @@
<data name="&gt;&gt;TreeSearchBox.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="TreeSearchBox.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="TreeSearchBox.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="splitContainer1.Panel1.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
<value>No</value>
</data>
@ -1588,11 +1588,11 @@
SfzPlMB1BCpKPODLETroXx/6j6eI5ytTPEcFVJg4wJHJt9l/rf935Y3a/5lT2V5BhYkDrOlc/V7T/V4Z
HbD+z17K/p4piaMIKsXAwJ7Cr8iayf2MOZ0zECqEApjTOIM0mnSeBpwI/y+2XO4/cwLrM6gUBLBmcD+b
fnL2f5VqtdvMGZzdUGEwABkqVSZ/uf5qy3+JDYr/WVI4P7IkcVhCpSGAJZXTXKxA4d3Rdyf+h84IewB0
7lFQaIMwazbfs/op9f/UN+v/564X/seUxH4eqg0VsKXz1FlNsf+59eX2/xP2T3rLmsn+liWF7U3f0Ylf
7lFQaIMwazbfs/pJ9f/UN+v/564X/seUxH4eqg0VsKXz1FlNsf+59eX2/xP2T3rLmsn+liWF7U3f0Ylf
fA4E/eddJ/6fOYPtNdAFFlAtmIA7R+BE2KbQ/6uervi/6emmX+uurX9ZeK70v9Q2pf8ccwV+AW0/BVWK
AwCdLFAi/Db5YMz/iTf6/nff7PlvftjuP9ce0f/M6RwfwN4iBNhSef0E40V/ux5x/+9w0v2/+CFgwPXy
fmeO55gGVUIYcObzLBWeJPVf6pjaf47DYv+Z09jfEmU7MmCp4HvKv0r6P3M9xwfmZPZ+qDDxgCWJ04TF
nvsvMzDeSbYdCbAAMSOEiQswMAAAvmChyMGFDr0AAAAASUVORK5CYII=
nvsvMzDeSbYdCbAAMSOEiQswMAAAuhKhxkr34QYAAAAASUVORK5CYII=
</value>
</data>
<data name="AlertsToolbarButtonSmall.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
@ -3509,7 +3509,7 @@
<value>bugToolToolStripMenuItem</value>
</data>
<data name="&gt;&gt;bugToolToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>XenAdmin.Commands.CommandToolStripMenuItem, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;AlertsToolStripMenuItem.Name" xml:space="preserve">
<value>AlertsToolStripMenuItem</value>

View File

@ -2281,6 +2281,12 @@
<Compile Include="Controls\LunPerVdiPicker.Designer.cs">
<DependentUpon>LunPerVdiPicker.cs</DependentUpon>
</Compile>
<Compile Include="Controls\MainWindowControls\NavigationView.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Controls\MainWindowControls\NavigationView.Designer.cs">
<DependentUpon>NavigationView.cs</DependentUpon>
</Compile>
<Compile Include="Controls\NetworkComboBox.cs">
<SubType>Component</SubType>
</Compile>
@ -4203,6 +4209,15 @@
<EmbeddedResource Include="Controls\LunPerVdiPicker.zh-CN.resx">
<DependentUpon>LunPerVdiPicker.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\MainWindowControls\NavigationView.ja.resx">
<DependentUpon>NavigationView.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\MainWindowControls\NavigationView.resx">
<DependentUpon>NavigationView.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\MainWindowControls\NavigationView.zh-CN.resx">
<DependentUpon>NavigationView.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Controls\NetworkComboBox.ja.resx">
<DependentUpon>NetworkComboBox.cs</DependentUpon>
</EmbeddedResource>