public void EditParameter(EffectParameterDefinition param)
        {
            // populate the editing panel
            paramNameBox.Text = param.Name;
            paramTypeBox.SelectedItem = param.Type.Type.ToString();

            if (param.Name != HlslType.Texture.ToString())
            {
                if (param.Type.IsVector)
                {
                    paramTypeSizeBox.SelectedItem = "Vector";
                    paramTypeSizeA.Value = param.Type.Size;
                }
                else if (param.Type.IsArray)
                {
                    paramTypeSizeBox.SelectedItem = "Array";
                    paramTypeSizeA.Value = param.Type.Size;
                }
                else if (param.Type.IsMatrix)
                {
                    paramTypeSizeBox.SelectedItem = "Matrix";
                    paramTypeSizeA.Value = param.Type.Size;
                    paramTypeSizeB.Value = param.Type.MatrixColumns;
                }
                else
                {
                    paramTypeSizeBox.SelectedItem = "Scalar";
                }
            }

            bool semanticChanged = false;

            if (mSemanticEnabled)
            {
                if (param.Semantic.Name == null || param.Semantic.Name == String.Empty)
                {
                    param.Semantic = mSemantics[0];
                    param.Semantic.ResourceNumber = 0;
                    semanticChanged = true;
                }

                // Find the index to select
                int index = -1;
                if (semanticBox.Items.Contains(param.Semantic))
                {
                    index = semanticBox.Items.IndexOf(param.Semantic);
                }
                else
                {
                    for (int i = 0; i < semanticBox.Items.Count; i++)
                    {
                        if (param.Semantic.Name.Equals(((HlslSemantic)semanticBox.Items[i]).Name))
                        {
                            index = i;
                        }
                    }
                }
                if (index == -1) index = 0;

                semanticBox.SelectedIndex = index;
            }

            if (mStorageClassEnabled)
            {
                storageClassBox.Text = (param.StorageClass == StorageClass.None) ?
                    String.Empty : param.StorageClass.ToString();
            }

            if (semanticChanged) EditParameter(parameterListBox.SelectedIndex);
        }
        public void AddParameter(EffectParameterDefinition param)
        {
            mParameters.Add(param);
            mParameters.Sort();

            UpdateList();

            parameterListBox.SelectedItem = param;

            DoParametersChanged();
        }