private void _textBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            try {
                if (!_tab.ItemsEventsDisabled)
                {
                    DisplayableProperty <TKey, TValue> .ApplyCommand(_tab, _attribute, _textBox.Text);
                }

                try {
                    byte[] data = _tab.ProjectDatabase.MetaGrf.GetDataBuffered(EncodingService.FromAnyToDisplayEncoding(GrfPath.Combine(_grfPath1, _textBox.Text.ExpandString()) + _ext));

                    if (data != null)
                    {
                        WpfUtilities.TextBoxOk(_textBox);
                        _wrapper1.Image = ImageProvider.GetImage(data, _ext);
                        _wrapper1.Image.MakePinkTransparent();
                        _imageResource.Tag    = _textBox.Text;
                        _imageResource.Source = _wrapper1.Image.Cast <BitmapSource>();
                    }
                    else
                    {
                        WpfUtilities.TextBoxError(_textBox);
                        _wrapper1.Image       = null;
                        _imageResource.Source = null;
                    }
                }
                catch (ArgumentException) {
                    WpfUtilities.TextBoxError(_textBox);
                    _wrapper1.Image       = null;
                    _imageResource.Source = null;
                }

                try {
                    byte[] data2 = _tab.ProjectDatabase.MetaGrf.GetDataBuffered(EncodingService.FromAnyToDisplayEncoding(GrfPath.Combine(_grfPath2, _textBox.Text.ExpandString()) + _ext));

                    if (data2 != null)
                    {
                        _wrapper2.Image = ImageProvider.GetImage(data2, _ext);
                        _wrapper2.Image.MakePinkTransparent();
                        _imagePreview.Tag    = _textBox.Text;
                        _imagePreview.Source = _wrapper2.Image.Cast <BitmapSource>();
                        //_imagePreview.Source.Freeze();
                    }
                    else
                    {
                        _wrapper2.Image      = null;
                        _imagePreview.Source = null;
                    }
                }
                catch (ArgumentException) {
                    _wrapper2.Image      = null;
                    _imagePreview.Source = null;
                }
            }
            catch (Exception err) {
                ErrorHandler.HandleException(err);
            }
        }
        private void _preview_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (!_boxEventsEnabled)
            {
                return;
            }

            try {
                _boxEventsEnabled = false;
                int value;

                try {
                    value = Convert.ToInt32(_preview.Text, 16);
                    WpfUtilities.TextBoxOk(_preview);
                }
                catch {
                    WpfUtilities.TextBoxError(_preview);
                    return;
                }

                foreach (CheckBox box in _boxes)
                {
                    Job job = (Job)box.Tag;

                    if ((job.Id & value) == job.Id)
                    {
                        box.IsChecked = true;
                    }
                    else
                    {
                        box.IsChecked = false;
                    }
                }

                _updateClassPreview();
            }
            finally {
                _boxEventsEnabled = true;
            }
        }
        private void _preview_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (!_boxEventsEnabled)
            {
                return;
            }

            if (!_previewEventsEnabled)
            {
                return;
            }

            try {
                _boxEventsEnabled     = false;
                _previewEventsEnabled = false;
                int value;

                try {
                    value = Convert.ToInt32(_preview.Text, 16);
                    WpfUtilities.TextBoxOk(_preview);
                }
                catch {
                    WpfUtilities.TextBoxError(_preview);
                    return;
                }

                if (value < 0)
                {
                    value ^= -1;

                    foreach (CheckBox box in _boxes)
                    {
                        Job job = (Job)box.Tag;

                        if (!box.IsEnabled)
                        {
                            box.IsChecked = false;
                            continue;
                        }

                        if ((job.Id & value) == job.Id)
                        {
                            box.IsChecked = true;
                        }
                        else
                        {
                            box.IsChecked = false;
                        }
                    }

                    _cbJobMode.SelectedIndex = 1;
                }
                else
                {
                    foreach (CheckBox box in _boxes)
                    {
                        Job job = (Job)box.Tag;

                        if (!box.IsEnabled)
                        {
                            box.IsChecked = false;
                            continue;
                        }

                        if ((job.Id & value) == job.Id)
                        {
                            box.IsChecked = true;
                        }
                        else
                        {
                            box.IsChecked = false;
                        }
                    }

                    _cbJobMode.SelectedIndex = 0;
                }
            }
            finally {
                _boxEventsEnabled = true;
                _update();
                _previewEventsEnabled = true;
            }
        }