//Copyright 2012-2019 Keysight Technologies // //Licensed under the Apache License, Version 2.0 (the "License"); //you may not use this file except in compliance with the License. //You may obtain a copy of the License at // //http://www.apache.org/licenses/LICENSE-2.0 // //Unless required by applicable law or agreed to in writing, software //distributed under the License is distributed on an "AS IS" BASIS, //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. //See the License for the specific language governing permissions and //limitations under the License. using OpenTap; namespace OpenTap.Plugins.PluginDevelopment { // The Display attribute is used to customize the appearance of an item in the GUI. // Parameters can be set to configure the name, hierarchical grouping, display order, and help description. // The Display attribute can be applied to classes such as TestStep, Instrument, and DUT as well as their associated Settings. [Display(Name: "Display Attribute Example", Groups: new[] { "Examples", "Plugin Development", "Attributes" }, Description: "An example of using the Display attribute.")] public class DisplayAttributeExample : TestStep { #region Settings // Name (Required) // Name is the string displayed in the GUI. // This allows for names to be displayed with spaces, not have to look like they were derived from code. // It allows for spaces and other special characters within the name. [Display("Display Name")] public string DisplayName { get; set; } // Description (Optional, default value of "") // Description is shown in editors and tools tips on the GUI. [Display("Display Name w/ Description", Description: "Example of a help description.")] public string DisplayNameWithDescription { get; set; } // Group (Optional, default value of "") // This can be used for hierarchical sorting. // For 1 level of nesting use the singular Group. // This will appear as: // Group1 > // Display Name w/ Group [Display("Display Name w/ Group", Group: "Group1")] public string DisplayNameWithGroup { get; set; } // Groups (Optional, default value of string [] = null) // Note this only applies to TestSteps, Instruments, and DUTs. It does not apply to Step Settings. // This can be used for hierarchical sorting of multiple levels. // Multiple Groups can be defined using they array initializer syntax. // Either Group or Groups can be used, but not both. // See the top of this page for an example. // In the New Step window this Test Step will appear as: // Examples > // Plugin Development > // Attributes > // Display Attribute Example // Collapsed (Optional, default value of false) // Above all of our Groups defaulted to being expanded. // Collapsed is a bool, and indicates if a group/groups default appearance should be collapsed. [Display("Display Name Collapsed Group", Group: "Collapsed Group", Collapsed: true)] public string DisplayNameCollapsedGroup { get; set; } // Order (Optional, default value of -10000) // Order is used to sort items within a group (ungrouped items are also sorted by Order). // Items are sorted lowest value to highest value. Meaning the lowest Order value will appear at the top of the Group. // Items with equal order magnitudes are sorted alphabetically. // This will appear as: // Ordered Group > // DisplayNameOrder1 // DisplayNameOrder2 [Display(Name: "Display Name Order 1", Group: "Ordered Group", Order: 1)] public string DisplayNameOrder1 { get; set; } [Display(Name: "Display Name Order 2", Group: "Ordered Group", Order: 2)] public string DisplayNameOrder2 { get; set; } // Groups are sorted by the average value of all the Settings they contain. // The average order of Ordered Group1 is 10.05, where Ordered Group2 is 20.05. // This means Ordered Group1 will appear first. Items within a group as still sorted as described by Order above. // This will appear as: // Ordered Group1 > // First In Group1 // Second In Group2 // Ordered Group2 > // First In Group2 // Second in Group2 // Notice Double values can be used. This is a recommended practice for sorting items within a group. [Display(Name: "Second In Group1", Group: "Ordered Group1", Order: 10.1)] public string SecondInGroup1 { get; set; } [Display(Name: "First In Group1", Group: "Ordered Group1", Order: 10.0)] public string FirstInGroup1 { get; set; } [Display(Name: "First In Group2", Group: "Ordered Group2", Order: 20)] public string FirstInGroup2 { get; set; } [Display(Name: "Second In Group2", Group: "Ordered Group2", Order: 20.1)] public string SecondInGroup2 { get; set; } #endregion public override void Run() { // Do nothing } } }