Esempio n. 1
0
        private static void AddChartTransitionVariables(SyncroSimLayoutItemCollection items, Project project)
        {
            string          AmountLabel = null;
            string          UnitsLabel  = null;
            TerminologyUnit TermUnit    = 0;
            DataSheet       dsterm      = project.GetDataSheet(Strings.DATASHEET_TERMINOLOGY_NAME);

            TerminologyUtilities.GetAmountLabelTerminology(dsterm, ref AmountLabel, ref TermUnit);
            UnitsLabel = TerminologyUtilities.TerminologyUnitToString(TermUnit);

            string disp = string.Format(CultureInfo.InvariantCulture, "{0} ({1})", AmountLabel, UnitsLabel);
            SyncroSimLayoutItem Normal     = new SyncroSimLayoutItem(Strings.TRANSITION_AMOUNT_VARIABLE_NAME, disp, false);
            SyncroSimLayoutItem Proportion = new SyncroSimLayoutItem(Strings.TRANSITION_PROPORTION_VARIABLE_NAME, "Proportion", false);

            Normal.Properties.Add(new MetaDataProperty("dataSheet", "stsim_OutputStratumTransition"));
            Proportion.Properties.Add(new MetaDataProperty("dataSheet", "stsim_OutputStratumTransition"));

            Normal.Properties.Add(new MetaDataProperty("column", "Amount"));
            Proportion.Properties.Add(new MetaDataProperty("column", "Amount"));

            Normal.Properties.Add(new MetaDataProperty("skipTimestepZero", "True"));
            Proportion.Properties.Add(new MetaDataProperty("skipTimestepZero", "True"));

            Normal.Properties.Add(new MetaDataProperty("defaultValue", "0.0"));
            Proportion.Properties.Add(new MetaDataProperty("defaultValue", "0.0"));

            items.Add(Normal);
            items.Add(Proportion);
        }
Esempio n. 2
0
        private static void AddStockGroupChartVariables(Project project, SyncroSimLayoutItemCollection items)
        {
            DataSheet ds = project.GetDataSheet(Constants.DATASHEET_STOCK_GROUP_NAME);

            if (ds.HasData())
            {
                //Normal
                SyncroSimLayoutItem ItemNormal = new SyncroSimLayoutItem(STOCK_GROUP_VAR_NAME, "Total", false);

                ItemNormal.Properties.Add(new MetaDataProperty("dataSheet", Constants.DATASHEET_OUTPUT_STOCK_NAME));
                ItemNormal.Properties.Add(new MetaDataProperty("column", "Amount"));
                ItemNormal.Properties.Add(new MetaDataProperty("defaultValue", "0.0"));

                items.Add(ItemNormal);

                //Density
                SyncroSimLayoutItem ItemDensity = new SyncroSimLayoutItem(STOCK_GROUP_DENSITY_VAR_NAME, "Density", false);

                ItemDensity.Properties.Add(new MetaDataProperty("dataSheet", Constants.DATASHEET_OUTPUT_STOCK_NAME));
                ItemDensity.Properties.Add(new MetaDataProperty("column", "Amount"));
                ItemDensity.Properties.Add(new MetaDataProperty("defaultValue", "0.0"));

                items.Add(ItemDensity);
            }
        }
Esempio n. 3
0
        public override void RefreshCriteria(SyncroSimLayout layout, Project project)
        {
            //Stock Groups
            SyncroSimLayoutItem StockGroupsGroup = new SyncroSimLayoutItem(STOCK_GROUP_NAME, "Stocks", true);

            StockGroupsGroup.Properties.Add(new MetaDataProperty("dataSheet", Constants.DATASHEET_OUTPUT_STOCK_NAME));
            StockGroupsGroup.Properties.Add(new MetaDataProperty("filter", "StratumID|SecondaryStratumID|TertiaryStratumID|StateClassID|StockGroupID"));

            AddStockGroupChartVariables(project, StockGroupsGroup.Items);

            if (StockGroupsGroup.Items.Count > 0)
            {
                layout.Items.Add(StockGroupsGroup);
            }

            //Flow Groups
            SyncroSimLayoutItem FlowGroupsGroup = new SyncroSimLayoutItem(FLOW_GROUP_NAME, "Flows", true);

            FlowGroupsGroup.Properties.Add(new MetaDataProperty("dataSheet", Constants.DATASHEET_OUTPUT_FLOW_NAME));
            FlowGroupsGroup.Properties.Add(new MetaDataProperty("filter", "FromStratumID|FromSecondaryStratumID|FromTertiaryStratumID|FromStateClassID|FromStockTypeID|TransitionTypeID|ToStratumID|ToStateClassID|ToStockTypeID|FlowGroupID|EndStratumID|EndSecondaryStratumID|EndTertiaryStratumID|EndStateClassID"));

            AddFlowGroupChartVariables(project, FlowGroupsGroup.Items);

            if (FlowGroupsGroup.Items.Count > 0)
            {
                layout.Items.Add(FlowGroupsGroup);
            }
        }
Esempio n. 4
0
        protected override void ModifyLayout(SyncroSimLayout layout)
        {
            if (this.Library == null)
            {
                Debug.Assert(false);
                return;
            }

            if (this.Library.Session.ActiveProject == null)
            {
                Debug.Assert(false);
                return;
            }

            SyncroSimLayoutItem PrimaryStrataGroup = layout.Items.FindItem("stsim_PrimaryStrata", true);

            if (PrimaryStrataGroup == null)
            {
                Debug.Assert(false);
                return;
            }

            string psl = null;
            string ssl = null;
            string tsl = null;

            DataSheet dsterm = this.Library.Session.ActiveProject.GetDataSheet(Strings.DATASHEET_TERMINOLOGY_NAME);

            TerminologyUtilities.GetStratumLabelTerminology(dsterm, ref psl, ref ssl, ref tsl);

            PrimaryStrataGroup.DisplayName = psl;
        }
Esempio n. 5
0
        protected override void ModifyLayout(SyncroSimLayout layout)
        {
            SyncroSimLayoutItem ExportGroup = layout.Items.GetItem("stsim_Export");

            if (ExportGroup != null)
            {
                SyncroSimLayoutItem ReportsGroup = ExportGroup.Items.GetItem("stsim_Reports");
                SyncroSimLayoutItem MapsGroup    = ExportGroup.Items.GetItem("stsim_Maps");

                if (ReportsGroup != null)
                {
                    ReportsGroup.Items.Add(new SyncroSimLayoutItem("stsimsf_SummaryStockReport", "Stock Type/Group", false));
                    ReportsGroup.Items.Add(new SyncroSimLayoutItem("stsimsf_SummaryFlowReport", "Flow Type/Group", false));
                }

                if (MapsGroup != null)
                {
                    SyncroSimLayoutItem StkGroup = new SyncroSimLayoutItem("stsimsf_StockGroups", "Stocks Groups", true);
                    StkGroup.Items.Add(new SyncroSimLayoutItem("stsimsf_StockRasterMap", "Iteration", false));
                    StkGroup.Items.Add(new SyncroSimLayoutItem("stsimsf_AvgStockRasterMap", "Average", false));
                    MapsGroup.Items.Add(StkGroup);

                    SyncroSimLayoutItem FloGroup = new SyncroSimLayoutItem("stsimsf_FlowGroups", "Flow Groups", true);
                    FloGroup.Items.Add(new SyncroSimLayoutItem("stsimsf_FlowRasterMap", "Iteration", false));
                    FloGroup.Items.Add(new SyncroSimLayoutItem("stsimsf_LateralFlowRasterMap", "Iteration - Lateral", false));
                    FloGroup.Items.Add(new SyncroSimLayoutItem("stsimsf_AvgFlowRasterMap", "Average", false));
                    FloGroup.Items.Add(new SyncroSimLayoutItem("stsimsf_AvgLateralFlowRasterMap", "Average - Lateral", false));

                    MapsGroup.Items.Add(FloGroup);
                }
            }
        }
Esempio n. 6
0
        private static void AddChartTSTVariables(SyncroSimLayoutItemCollection items, Project project)
        {
            SyncroSimLayoutItem v = new SyncroSimLayoutItem(Strings.TST_VARIABLE_NAME, "Amount", false);

            v.Properties.Add(new MetaDataProperty("dataSheet", "stsim_OutputTST"));
            v.Properties.Add(new MetaDataProperty("column", "Amount"));
            v.Properties.Add(new MetaDataProperty("defaultValue", "0.0"));

            items.Add(v);
        }
Esempio n. 7
0
        private static void AddChartAttributeVariables(SyncroSimLayoutItemCollection items, DataView attrGroupView, DataSheet attrGroupDataSheet, DataView attrView, DataSheet attrDataSheet, string outputTableName, string attributeTypeColumnName, bool skipTimestepZero)
        {
            Debug.Assert(Strings.DATASHEET_STATE_ATTRIBUTE_TYPE_UNITS_COLUMN_NAME == Strings.DATASHEET_TRANSITION_ATTRIBUTE_TYPE_UNITS_COLUMN_NAME);
            SyncroSimLayoutItem NonGroupedDensityGroup = new SyncroSimLayoutItem(DENSITY_GROUP_NAME + "STSIM_NON_GROUPED", "Density", true);

            AddChartNonGroupedAttributes(
                items, attrView, attrDataSheet, outputTableName, attributeTypeColumnName,
                skipTimestepZero, NonGroupedDensityGroup);

            if (NonGroupedDensityGroup.Items.Count > 0)
            {
                items.Add(NonGroupedDensityGroup);
            }

            Dictionary <string, SyncroSimLayoutItem> GroupsDict = new Dictionary <string, SyncroSimLayoutItem>();
            List <SyncroSimLayoutItem> GroupsList = new List <SyncroSimLayoutItem>();

            foreach (DataRowView drv in attrGroupView)
            {
                string GroupName                 = Convert.ToString(drv.Row[Strings.DATASHEET_NAME_COLUMN_NAME], CultureInfo.InvariantCulture);
                string DensityGroupName          = DENSITY_GROUP_NAME + GroupName;
                SyncroSimLayoutItem Group        = new SyncroSimLayoutItem(GroupName, GroupName, true);
                SyncroSimLayoutItem DensityGroup = new SyncroSimLayoutItem(DensityGroupName, "Density", true);

                GroupsDict.Add(GroupName, Group);
                GroupsList.Add(Group);

                GroupsDict.Add(DensityGroupName, DensityGroup);
            }

            AddChartGroupedAttributes(
                GroupsDict, attrGroupDataSheet, attrView, attrDataSheet,
                outputTableName, attributeTypeColumnName, skipTimestepZero);

            foreach (SyncroSimLayoutItem g in GroupsList)
            {
                if (g.Items.Count > 0)
                {
                    string DensityGroupName = DENSITY_GROUP_NAME + g.Name;

                    g.Items.Add(GroupsDict[DensityGroupName]);
                    items.Add(g);
                }
            }
        }
Esempio n. 8
0
        private static void AddChartExternalVariables(SyncroSimLayoutItemCollection items, Project project)
        {
            DataSheet ds = project.GetDataSheet(Strings.CORESTIME_EXTERNAL_VAR_TYPE_DATASHEET_NAME);

            foreach (DataRow dr in ds.GetData().Rows)
            {
                int    Id                = Convert.ToInt32(dr[ds.ValueMember], CultureInfo.InvariantCulture);
                string Name              = Convert.ToString(dr[ds.DisplayMember], CultureInfo.InvariantCulture);
                string VarName           = string.Format(CultureInfo.InvariantCulture, "stsim_ExternalVariable-{0}", Id);
                SyncroSimLayoutItem Item = new SyncroSimLayoutItem(VarName, Name, false);

                Item.Properties.Add(new MetaDataProperty("dataSheet", Strings.OUTPUT_EXTERNAL_VARIABLE_VALUE_DATASHEET_NAME));
                Item.Properties.Add(new MetaDataProperty("column", Strings.OUTPUT_EXTERNAL_VARIABLE_VALUE_VALUE_COLUMN_NAME));
                Item.Properties.Add(new MetaDataProperty("defaultValue", "0.0"));

                items.Add(Item);
            }
        }
Esempio n. 9
0
        private static void AddChartGroupedAttributes(
            Dictionary <string, SyncroSimLayoutItem> groupsDict,
            DataSheet groupsDataSheet,
            DataView attrsView,
            DataSheet attrsDataSheet,
            string outputDataSheetName,
            string outputColumnName, bool skipTimestepZero)
        {
            //The density groups have already been created and added to the groups.  Howver, we want the
            //attributes themselves to appear before this group so we must insert them in reverse order.

            for (int i = attrsView.Count - 1; i >= 0; i--)
            {
                DataRowView drv = attrsView[i];

                if (drv.Row[Strings.DATASHEET_ATTRIBUTE_GROUP_ID_COLUMN_NAME] != DBNull.Value)
                {
                    int    GroupId   = Convert.ToInt32(drv.Row[Strings.DATASHEET_ATTRIBUTE_GROUP_ID_COLUMN_NAME], CultureInfo.InvariantCulture);
                    string GroupName = groupsDataSheet.ValidationTable.GetDisplayName(GroupId);
                    int    AttrId    = Convert.ToInt32(drv.Row[attrsDataSheet.ValueMember], CultureInfo.InvariantCulture);
                    SyncroSimLayoutItem MainGroup    = groupsDict[GroupName];
                    SyncroSimLayoutItem DensityGroup = groupsDict[DENSITY_GROUP_NAME + GroupName];
                    string Units = DataTableUtilities.GetDataStr(drv.Row, Strings.DATASHEET_STATE_ATTRIBUTE_TYPE_UNITS_COLUMN_NAME);

                    //Normal Attribute
                    //----------------

                    string AttrNameNormal    = string.Format(CultureInfo.InvariantCulture, "stsim_AttrNormal-{0}", AttrId);
                    string DisplayNameNormal = Convert.ToString(drv.Row[attrsDataSheet.ValidationTable.DisplayMember], CultureInfo.InvariantCulture);

                    if (Units != null)
                    {
                        DisplayNameNormal = string.Format(CultureInfo.InvariantCulture, "{0} ({1})", DisplayNameNormal, Units);
                    }

                    SyncroSimLayoutItem ItemNormal = new SyncroSimLayoutItem(AttrNameNormal, DisplayNameNormal, false);

                    ItemNormal.Properties.Add(new MetaDataProperty("dataSheet", outputDataSheetName));
                    ItemNormal.Properties.Add(new MetaDataProperty("column", outputColumnName));
                    ItemNormal.Properties.Add(new MetaDataProperty("prefixFolderName", "False"));
                    ItemNormal.Properties.Add(new MetaDataProperty("customTitle", GroupName + ": " + DisplayNameNormal));
                    ItemNormal.Properties.Add(new MetaDataProperty("defaultValue", "0.0"));

                    if (skipTimestepZero)
                    {
                        ItemNormal.Properties.Add(new MetaDataProperty("skipTimestepZero", "True"));
                    }

                    MainGroup.Items.Insert(0, ItemNormal);

                    //Density Attribute
                    //-----------------

                    string AttrNameDensity    = string.Format(CultureInfo.InvariantCulture, "stsim_AttrDensity-{0}", AttrId);
                    string DisplayNameDensity = Convert.ToString(drv.Row[attrsDataSheet.ValidationTable.DisplayMember], CultureInfo.InvariantCulture);

                    if (Units != null)
                    {
                        DisplayNameDensity = string.Format(CultureInfo.InvariantCulture, "{0} ({1})", DisplayNameDensity, Units);
                    }

                    SyncroSimLayoutItem ItemDensity = new SyncroSimLayoutItem(AttrNameDensity, DisplayNameDensity, false);

                    ItemDensity.Properties.Add(new MetaDataProperty("dataSheet", outputDataSheetName));
                    ItemDensity.Properties.Add(new MetaDataProperty("column", outputColumnName));
                    ItemDensity.Properties.Add(new MetaDataProperty("prefixFolderName", "False"));
                    ItemDensity.Properties.Add(new MetaDataProperty("customTitle", GroupName + " (Density): " + DisplayNameNormal));
                    ItemDensity.Properties.Add(new MetaDataProperty("defaultValue", "0.0"));

                    if (skipTimestepZero)
                    {
                        ItemDensity.Properties.Add(new MetaDataProperty("skipTimestepZero", "True"));
                    }

                    DensityGroup.Items.Insert(0, ItemDensity);
                }
            }
        }
Esempio n. 10
0
        private static void AddChartNonGroupedAttributes(
            SyncroSimLayoutItemCollection items,
            DataView attrsView,
            DataSheet attrsDataSheet,
            string outputDataSheetName,
            string outputColumnName,
            bool skipTimestepZero,
            SyncroSimLayoutItem densityGroup)
        {
            foreach (DataRowView drv in attrsView)
            {
                if (drv.Row[Strings.DATASHEET_ATTRIBUTE_GROUP_ID_COLUMN_NAME] == DBNull.Value)
                {
                    int    AttrId = Convert.ToInt32(drv.Row[attrsDataSheet.ValueMember], CultureInfo.InvariantCulture);
                    string Units  = DataTableUtilities.GetDataStr(drv.Row, Strings.DATASHEET_STATE_ATTRIBUTE_TYPE_UNITS_COLUMN_NAME);

                    //Normal Attribute
                    //----------------

                    string AttrNameNormal    = string.Format(CultureInfo.InvariantCulture, "stsim_AttrNormal-{0}", AttrId);
                    string DisplayNameNormal = Convert.ToString(drv.Row[attrsDataSheet.ValidationTable.DisplayMember], CultureInfo.InvariantCulture);

                    if (Units != null)
                    {
                        DisplayNameNormal = string.Format(CultureInfo.InvariantCulture, "{0} ({1})", DisplayNameNormal, Units);
                    }

                    SyncroSimLayoutItem ItemNormal = new SyncroSimLayoutItem(AttrNameNormal, DisplayNameNormal, false);

                    ItemNormal.Properties.Add(new MetaDataProperty("dataSheet", outputDataSheetName));
                    ItemNormal.Properties.Add(new MetaDataProperty("column", outputColumnName));
                    ItemNormal.Properties.Add(new MetaDataProperty("prefixFolderName", "False"));
                    ItemNormal.Properties.Add(new MetaDataProperty("customTitle", DisplayNameNormal));
                    ItemNormal.Properties.Add(new MetaDataProperty("defaultValue", "0.0"));

                    if (skipTimestepZero)
                    {
                        ItemNormal.Properties.Add(new MetaDataProperty("skipTimestepZero", "True"));
                    }

                    items.Add(ItemNormal);

                    //Density Attribute
                    //-----------------

                    string AttrNameDensity    = string.Format(CultureInfo.InvariantCulture, "stsim_AttrDensity-{0}", AttrId);
                    string DisplayNameDensity = Convert.ToString(drv.Row[attrsDataSheet.ValidationTable.DisplayMember], CultureInfo.InvariantCulture);

                    if (Units != null)
                    {
                        DisplayNameDensity = string.Format(CultureInfo.InvariantCulture, "{0} ({1})", DisplayNameDensity, Units);
                    }

                    SyncroSimLayoutItem ItemDensity = new SyncroSimLayoutItem(AttrNameDensity, DisplayNameDensity, false);

                    ItemDensity.Properties.Add(new MetaDataProperty("dataSheet", outputDataSheetName));
                    ItemDensity.Properties.Add(new MetaDataProperty("column", outputColumnName));
                    ItemDensity.Properties.Add(new MetaDataProperty("prefixFolderName", "False"));
                    ItemDensity.Properties.Add(new MetaDataProperty("customTitle", "(Density): " + DisplayNameNormal));
                    ItemDensity.Properties.Add(new MetaDataProperty("defaultValue", "0.0"));

                    if (skipTimestepZero)
                    {
                        ItemDensity.Properties.Add(new MetaDataProperty("skipTimestepZero", "True"));
                    }

                    densityGroup.Items.Add(ItemDensity);
                }
            }
        }
Esempio n. 11
0
        public override void RefreshCriteria(SyncroSimLayout layout, Project project)
        {
            using (DataStore store = project.Library.CreateDataStore())
            {
                SyncroSimLayoutItem StateClassGroup          = new SyncroSimLayoutItem("stsim_StateClassVariableGroup", "State Classes", true);
                SyncroSimLayoutItem TransitionGroup          = new SyncroSimLayoutItem("stsim_TransitionVariableGroup", "Transitions", true);
                SyncroSimLayoutItem TSTGroup                 = new SyncroSimLayoutItem("stsim_TSTGroup", "Time-Since-Transition", true);
                SyncroSimLayoutItem StateAttributeGroup      = new SyncroSimLayoutItem("stsim_StateAttributeVariableGroup", "State Attributes", true);
                SyncroSimLayoutItem TransitionAttributeGroup = new SyncroSimLayoutItem("stsim_TransitionAttributeVariableGroup", "Transition Attributes", true);
                SyncroSimLayoutItem ExternalVariableGroup    = new SyncroSimLayoutItem("stsim_ExternalVariableGroup", "External Variables", true);

                DataSheet AttrGroupDataSheet      = project.GetDataSheet(Strings.DATASHEET_ATTRIBUTE_GROUP_NAME);
                DataView  AttrGroupView           = CreateChartAttributeGroupsView(project, store);
                DataSheet StateAttrDataSheet      = project.GetDataSheet(Strings.DATASHEET_STATE_ATTRIBUTE_TYPE_NAME);
                DataView  StateAttrDataView       = new DataView(StateAttrDataSheet.GetData(store), null, StateAttrDataSheet.ValidationTable.DisplayMember, DataViewRowState.CurrentRows);
                DataSheet TransitionAttrDataSheet = project.GetDataSheet(Strings.DATASHEET_TRANSITION_ATTRIBUTE_TYPE_NAME);
                DataView  TransitionAttrDataView  = new DataView(TransitionAttrDataSheet.GetData(store), null, TransitionAttrDataSheet.ValidationTable.DisplayMember, DataViewRowState.CurrentRows);

                StateClassGroup.Properties.Add(new MetaDataProperty("dataSheet", "stsim_OutputStratumState"));
                StateClassGroup.Properties.Add(new MetaDataProperty("filter", "StratumID|SecondaryStratumID|TertiaryStratumID|StateClassID|StateLabelXID|StateLabelYID|AgeClass"));

                TransitionGroup.Properties.Add(new MetaDataProperty("dataSheet", "stsim_OutputStratumTransition"));
                TransitionGroup.Properties.Add(new MetaDataProperty("filter", "StratumID|SecondaryStratumID|TertiaryStratumID|TransitionGroupID|AgeClass|SizeClassID"));

                TSTGroup.Properties.Add(new MetaDataProperty("dataSheet", "stsim_OutputTST"));
                TSTGroup.Properties.Add(new MetaDataProperty("filter", "StratumID|SecondaryStratumID|TertiaryStratumID|TransitionGroupID|TSTClass"));

                StateAttributeGroup.Properties.Add(new MetaDataProperty("dataSheet", "stsim_OutputStateAttribute"));
                StateAttributeGroup.Properties.Add(new MetaDataProperty("filter", "StratumID|SecondaryStratumID|TertiaryStratumID|AgeClass"));

                TransitionAttributeGroup.Properties.Add(new MetaDataProperty("dataSheet", "stsim_OutputTransitionAttribute"));
                TransitionAttributeGroup.Properties.Add(new MetaDataProperty("filter", "StratumID|SecondaryStratumID|TertiaryStratumID|AgeClass"));

                RefreshChartAgeClassValidationTable(Strings.DATASHEET_OUTPUT_STRATUM_STATE_NAME, project);
                RefreshChartAgeClassValidationTable(Strings.DATASHEET_OUTPUT_STRATUM_TRANSITION_NAME, project);
                RefreshChartAgeClassValidationTable(Strings.DATASHEET_OUTPUT_STATE_ATTRIBUTE_NAME, project);
                RefreshChartAgeClassValidationTable(Strings.DATASHEET_OUTPUT_TRANSITION_ATTRIBUTE_NAME, project);
                RefreshChartTSTClassValidationTable(Strings.DATASHEET_OUTPUT_TST_NAME, project);

                AddChartStateClassVariables(StateClassGroup.Items, project);
                AddChartTransitionVariables(TransitionGroup.Items, project);
                AddChartTSTVariables(TSTGroup.Items, project);
                AddChartExternalVariables(ExternalVariableGroup.Items, project);

                AddChartAttributeVariables(
                    StateAttributeGroup.Items, AttrGroupView, AttrGroupDataSheet, StateAttrDataView, StateAttrDataSheet,
                    Strings.DATASHEET_OUTPUT_STATE_ATTRIBUTE_NAME, Strings.DATASHEET_STATE_ATTRIBUTE_TYPE_ID_COLUMN_NAME, false);

                AddChartAttributeVariables(TransitionAttributeGroup.Items, AttrGroupView, AttrGroupDataSheet, TransitionAttrDataView, TransitionAttrDataSheet,
                                           Strings.DATASHEET_OUTPUT_TRANSITION_ATTRIBUTE_NAME, Strings.DATASHEET_TRANSITION_ATTRIBUTE_TYPE_ID_COLUMN_NAME, true);

                layout.Items.Add(StateClassGroup);
                layout.Items.Add(TransitionGroup);
                layout.Items.Add(TSTGroup);

                if (StateAttributeGroup.Items.Count > 0)
                {
                    layout.Items.Add(StateAttributeGroup);
                }

                if (TransitionAttributeGroup.Items.Count > 0)
                {
                    layout.Items.Add(TransitionAttributeGroup);
                }

                if (ExternalVariableGroup.Items.Count > 0)
                {
                    layout.Items.Add(ExternalVariableGroup);
                }
            }
        }