/** * {@inheritDoc} After the error is handled by its underlying {@link IEditErrorHandler}, the * configured error style will be applied to the editor control. */ @Override public void displayError(ICellEditor cellEditor, Exception e) { super.displayError(cellEditor, e); if (!this.errorStylingActive) { Control editorControl = cellEditor.getEditorControl(); // store the current rendering information to be able to reset again originalBgColor = editorControl.getBackground(); originalFgColor = editorControl.getForeground(); originalFont = editorControl.getFont(); // set the rendering information out of the error style editorControl.setBackground( this.errorStyle.getAttributeValue(CellStyleAttributes.BACKGROUND_COLOR)); editorControl.setForeground( this.errorStyle.getAttributeValue(CellStyleAttributes.FOREGROUND_COLOR)); editorControl.setFont(this.errorStyle.getAttributeValue(CellStyleAttributes.FONT)); if (decorationProvider != null) { decorationProvider.showDecoration(); } this.errorStylingActive = true; } }
/** * {@inheritDoc} After the error remove is handled by its underlying {@link IEditErrorHandler}, * the original style will be applied to the editor control. */ @Override public void removeError(ICellEditor cellEditor) { super.removeError(cellEditor); if (this.errorStylingActive) { Control editorControl = cellEditor.getEditorControl(); // reset the rendering information to normal editorControl.setBackground(originalBgColor); editorControl.setForeground(originalFgColor); editorControl.setFont(originalFont); // ensure to reset the stored original values so possible // dynamic rendering aspects are also covered originalBgColor = null; originalFgColor = null; originalFont = null; if (decorationProvider != null) { decorationProvider.hideDecoration(); } this.errorStylingActive = false; } }