private void ShaderComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ShaderComboBox.SelectedValue == null)
            {
                return;
            }

            var shader  = (MtrlShader)ShaderComboBox.SelectedValue;
            var presets = ShaderInfo.GetAvailablePresets(shader);

            PresetSource.Clear();
            foreach (var p in presets)
            {
                PresetSource.Add(new KeyValuePair <MtrlShaderPreset, string>(p, p.ToString()));
            }

            // Disable the box if the user has no choice anyways.
            if (PresetSource.Count > 1)
            {
                PresetComboBox.IsEnabled = true;
            }
            else
            {
                PresetComboBox.IsEnabled = false;
            }


            PresetComboBox.SelectedValue = MtrlShaderPreset.Default;
            // Ensure the UI is updated for the new selection.
            PresetComboBox_SelectionChanged(null, null);

            if (shader == MtrlShader.Furniture || shader == MtrlShader.DyeableFurniture || shader == MtrlShader.Other)
            {
                // Disable all the editable options except transparency for these items.
                NormalTextBox.IsEnabled    = false;
                DiffuseTextBox.IsEnabled   = false;
                SpecularTextBox.IsEnabled  = false;
                ColorsetComboBox.IsEnabled = false;
                PresetComboBox.IsEnabled   = false;
            }

            if (shader == MtrlShader.Other)
            {
                // Disable everything.
                TransparencyComboBox.IsEnabled = false;
                ShaderComboBox.IsEnabled       = false;
                SaveButton.IsEnabled           = false;
                SaveButton.Visibility          = Visibility.Hidden;
            }
        }