// // (C) Copyright 2003-2013 by Autodesk, Inc. // // Permission to use, copy, modify, and distribute this software in // object code form for any purpose and without fee is hereby granted, // provided that the above copyright notice appears in all copies and // that both that copyright notice and the limited warranty and // restricted rights notice below appear in all supporting // documentation. // // AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. // AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF // MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC. // DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE // UNINTERRUPTED OR ERROR FREE. // // Use, duplication, or disclosure by the U.S. Government is subject to // restrictions set forth in FAR 52.227-19 (Commercial Computer // Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) // (Rights in Technical Data and Computer Software), as applicable. // using System; using Autodesk.Revit.DB; using Autodesk.Revit.DB.ExtensibleStorage; using Autodesk.Revit.DB.ExtensibleStorage.Framework; using Autodesk.Revit.DB.ExtensibleStorage.Framework.Attributes; using Autodesk.Revit.UI.ExtensibleStorage.Framework.Attributes; namespace ExtensibleStorageUI { /// /// this class explains how to define a schema and associated UIField related to ComboBox. /// ComboBox Items could be defined directly, based on data sources or on an enum. /// [Schema("tabComboBoxSchema", "8c1bdb2d-75bf-4d56-bfd5-fbafd30d18d0")] public class TabComboBoxSchema : SchemaClass { # region Constructors /// /// Default constructor /// public TabComboBoxSchema() { this.ComboBoxString = "Choice 1"; this.ComboBoxBool = true; this.ComboBoxInt16 = 1; this.ComboBoxInt32 = 2; this.ComboBoxGuid = new Guid("E72993A5-CDFE-4501-9A34-D3A6DA407CD6"); this.ComboBoxDouble = 10.0; this.ComboBoxEnumImage = EnumLocalized.Choice1; this.ComboBoxEnumImageText = EnumLocalized.Choice2; this.ComboBoxEnumText = EnumLocalized.Choice3; this.ComboBoxEnumTextNotLocalized = EnumNotLocalized.Item1; this.ComboBoxEnumImageTextNotLocalized = EnumNotLocalized.Item3; this.UnitComboBoxDouble = 20; // Value will be set on layoutInitialized when this.UnitComboBoxDoubleConstructor = 0; this.ComboBoxRebar = null; this.ComboBoxElementId = null; this.ComboBoxUV = null; ; this.ComboBoxXYZ = null; } /// /// /// /// public TabComboBoxSchema(Document document) { } /// /// /// /// /// public TabComboBoxSchema(Entity entity, Document document) : base(entity, document) { } #endregion Constructors # region UnitComboBox /// /// Unit ComboBox supporting double values. /// The unit type is set to length (DUT_METERS). /// Selected index value is stored in DUT_METERS. /// This comboBox is filled using "DataSourceDoubleList" data source. /// "DataSourceDoubleList" is based on doubleList values {10.0, 20.0, 30.0, 40.0}. /// [SchemaProperty(Unit = UnitType.UT_Length, DisplayUnit = DisplayUnitType.DUT_METERS )] [UnitComboBox( DataSourceKey = "DataSourceDoubleList", Category = "UnitComboBox", Description = "UnitComboBoxDouble", IsVisible = true, IsEnabled = true, Index = 0, Localizable = true, Tooltip = "UnitComboBoxDoubleToolTips" )] public Double UnitComboBoxDouble { get; set; } /// /// Unit ComboBox supporting double values. /// The unit type is set to length (DUT_METERS). /// Selected index value is stored in DUT_METERS. /// This comboBox is filled inline using {5,10,15,20) /// [SchemaProperty(Unit = UnitType.UT_Length, DisplayUnit = DisplayUnitType.DUT_METERS)] [UnitComboBox( 5.0, 10.0, 15.0, 20.0, Category = "UnitComboBox", Description = "UnitComboBoxDoubleConstructor", IsVisible = true, IsEnabled = true, Index = 1, Localizable = true, Tooltip = "UnitComboBoxDoubleConstructorToolTips" )] public Double UnitComboBoxDoubleConstructor { get; set; } # endregion UnitComboBox # region EnumComboBox /// /// EnumControl supporting strings values presented as ComboBox. /// This comboBox is filled using AnEnumLocalized. /// Strings associated to [Choice1,Choice2,Choice3] are part of the resources file. /// On the UI are visible strings "This is my choice 1","This is my choice 2","This is my choice 3" /// Enum field is stored as integer with default enumerator values. /// [SchemaProperty] [EnumControl( Description = "ComboBoxEnumText", Presentation = PresentationMode.Combobox, Item = PresentationItem.Text, Category = "EnumComboBox", IsVisible = true, IsEnabled = true, Index = 0, Localizable = true, Tooltip = "ComboBoxEnumTextToolTips" )] public EnumLocalized ComboBoxEnumText { get; set; } /// /// EnumControl supporting strings values presented as ComboBox. /// This comboBox is filled using AnEnumNotLocalized. /// Strings associated to [Item1,Item2,Item3] are not part of the resources file. /// On the UI are visible strings "Item1","Item2","Item3". /// Enum field is stored as integer with defined enumerator values. /// [SchemaProperty] [EnumControl( Description = "ComboBoxEnumTextNotLocalized", Presentation = PresentationMode.Combobox, Item = PresentationItem.Text, Category = "EnumComboBox", IsVisible = true, IsEnabled = true, Index = 3, Localizable = true, Tooltip = "ComboBoxEnumTextNotLocalizedToolTips" )] public EnumNotLocalized ComboBoxEnumTextNotLocalized { get; set; } /// /// EnumControl supporting strings values and images presented as ComboBox. /// This comboBox is filled using AnEnumLocalized. /// Strings associated to AnEnumLocalized.Choice1, AnEnumLocalized.Choice2, AnEnumLocalized.Choice3 are part of the resources file. /// On the UI are visible strings "This is my choice 1","This is my choice 2","This is my choice 3" /// Enum field is stored as integer with default enumerator values. /// Uri for associated images are returned by the GetResourceImage(string key) function. /// [SchemaProperty] [EnumControl( Description = "ComboBoxEnumImageText", Presentation = PresentationMode.Combobox, Item = PresentationItem.ImageWithText, Category = "EnumComboBox", IsVisible = true, IsEnabled = true, Index = 4, Localizable = true, Tooltip = "ComboBoxEnumImageTextToolTips" )] public EnumLocalized ComboBoxEnumImageText { get; set; } /// /// EnumControl supporting images and text presented as OptionList(List). /// Uri for associated images are returned by the GetResourceImage(string key) function. /// Text are coming from the not transalted enum /// [SchemaProperty] [EnumControl( Presentation = PresentationMode.Combobox, Item = PresentationItem.ImageWithText, Category = "EnumComboBox", IsVisible = true, IsEnabled = true, Index = 2, Localizable = true, Description = "ComboBoxEnumImageTextNotLocalized", Tooltip = "ComboBoxEnumImageTextNotLocalizedTooltips" )] public EnumNotLocalized ComboBoxEnumImageTextNotLocalized { get; set; } /// /// EnumControl supporting images presented as ComboBox. /// This comboBox is filled using AnEnumLocalized. /// Uri for associated images are returned by the GetResourceImage(string key) function. /// [SchemaProperty] [EnumControl( Description = "ComboBoxEnumImage", Presentation = PresentationMode.Combobox, Item = PresentationItem.Image, Category = "EnumComboBox", IsVisible = true, IsEnabled = true, Index = 5, Localizable = true, Tooltip = "ComboBoxEnumImageToolTips" )] public EnumLocalized ComboBoxEnumImage { get; set; } # endregion EnumComboBox # region ComboBox Category /// /// ComboBox supporting int16 values. /// This comboBox is filled using "DataSourceInt16List" data source. /// "DataSourceInt16List" is based on int16List values {1,2,3,4}. /// [SchemaProperty] [ComboBox( DataSourceKey = "DataSourceInt16List", Category = "ComboBox", Description = "ComboBoxInt16", IsVisible = true, IsEnabled = true, Index = 1, Localizable = true, Tooltip = "ComboBoxInt16ToolTips" )] public Int16 ComboBoxInt16 { get; set; } /// /// ComboBox supporting int32 values. /// This comboBox is filled using "DataSourceInt32List" data source. /// "DataSourceInt32List" is based on int32List values {1,2,3,4}. /// [SchemaProperty] [ComboBox( DataSourceKey = "DataSourceInt32List", Category = "ComboBox", Description = "ComboBoxInt32", IsVisible = true, IsEnabled = true, Index = 1, Localizable = true, Tooltip = "ComboBoxInt32ToolTips" )] public Int32 ComboBoxInt32 { get; set; } /// /// ComboBox supporting bool values. /// This comboBox is filled using "DataSourceBoolList" data source. /// "DataSourceBoolList" is based on boolList values {true,false}. /// [SchemaProperty] [ComboBox( DataSourceKey = "DataSourceBoolList", Category = "ComboBox", Description = "ComboBoxBool", IsVisible = true, IsEnabled = true, Index = 1, Localizable = true, Tooltip = "ComboBoxBoolToolTips" )] public bool ComboBoxBool { get; set; } /// /// ComboBox supporting UV values. /// This comboBox is filled using "DataSourceUVList" data source. /// "DataSourceUVList" is based on uvList values {(1,1),(2,2),(3,3)}. /// [SchemaProperty(Unit = UnitType.UT_Length, DisplayUnit = DisplayUnitType.DUT_METERS)] [ComboBox( DataSourceKey = "DataSourceUVList", Category = "ComboBox", Description = "ComboBoxUV", IsVisible = true, IsEnabled = true, Index = 1, Localizable = true, Tooltip = "ComboBoxUVToolTips" )] public UV ComboBoxUV { get; set; } /// /// ComboBox supporting XYZ values. /// This comboBox is filled using "DataSourceXYZList" data source. /// "DataSourceXYZList" is based on xyzList values {(1,1,1),(2,2,2),(3,3,3)}. /// [SchemaProperty(Unit = UnitType.UT_Length, DisplayUnit = DisplayUnitType.DUT_METERS)] [ComboBox( DataSourceKey = "DataSourceXYZList", Category = "ComboBox", Description = "ComboBoxXYZ", IsVisible = true, IsEnabled = true, Index = 1, Localizable = true, Tooltip = "ComboBoxXYZToolTips" )] public XYZ ComboBoxXYZ { get; set; } /// /// ComboBox supporting string values. /// This comboBox is filled using "DataSourceStringList" data source. /// "DataSourceStringList" is based on stringList values {"Choice 1", "Choice 2", "Choice 3", "Choice 4"}. /// [SchemaProperty] [ComboBox( DataSourceKey = "DataSourceStringList", Category = "ComboBox", Description = "ComboBoxString", IsVisible = true, IsEnabled = true, Index = 1, Localizable = true, Tooltip = "ComboBoxStringToolTips" )] public string ComboBoxString { get; set; } /// /// ComboBox supporting ElementId values. /// Selected index value is stored as ElementId. /// This comboBox is filled using "DataSourceElementIdList" data source. /// "DataSourceElementIdList" is the list of ElementID for the first five rebars form the current document /// [SchemaProperty] [ComboBox( Description = "ComboBoxElementId", Category = "ComboBox", IsVisible = true, IsEnabled = true, Index = 6, Localizable = true, DataSourceKey = "DataSourceElementIdList", Tooltip = "ComboElementIDToolTips" )] public ElementId ComboBoxElementId { get; set; } /// /// ComboBox supporting Rebar type values. /// This Element ComboBox is filled using "DataSourceRebarList" data source. /// "DataSourceRebarList" is the list of Rebars from current document. /// [SchemaProperty] [ElementComboBox( Description = "ComboBoxRebar", Category = "ComboBoxRebar", IsVisible = true, IsEnabled = true, Index = 6, Localizable = true, DataSourceKey = "DataSourceRebarList", Tooltip = "ComboBoxRebarToolTips" )] public Autodesk.Revit.DB.Structure.RebarBarType ComboBoxRebar { get; set; } /// /// ComboBox supporting guid values. /// This comboBox is filled using "DataSourceGuidList" data source. /// "DataSourceGuidList" is based on guidList values {"6AED35BD-9143-4AAB-B568-7FC69C946824"),"F6F9D635-6AF3-4336-9D52-E734DFA9F97E", "E72993A5-CDFE-4501-9A34-D3A6DA407CD6" ;. /// [SchemaProperty] [ComboBox( DataSourceKey = "DataSourceGuidList", Category = "ComboBox", Description = "ComboBoxGuid", IsVisible = true, IsEnabled = true, Index = 1, Localizable = true, Tooltip = "ComboBoxGuidToolTips" )] public Guid ComboBoxGuid { get; set; } /// /// ComboBox supporting double values. /// The unit type is set to length (DUT_METERS). /// Selected index value is stored in DUT_METERS. /// This comboBox is filled using "DataSourceDoubleList" data source. /// "DataSourceDoubleList" is based on doubleList values {10.0, 20.0, 30.0, 40.0}. /// [SchemaProperty(Unit = UnitType.UT_Length, DisplayUnit = DisplayUnitType.DUT_METERS)] [ComboBox( DataSourceKey = "DataSourceDoubleList", Category = "ComboBox", Description = "ComboBoxDouble", IsVisible = true, IsEnabled = true, Index = 0, Localizable = true, Tooltip = "ComboBoxDoubleToolTips" )] public Double ComboBoxDouble { get; set; } # endregion ComboBox Category } }