### Eclipse Workspace Patch 1.0
#P org.eclipse.jdt.ui
Index: ui/org/eclipse/jdt/internal/ui/IJavaThemeConstants.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/IJavaThemeConstants.java,v
retrieving revision 1.6
diff -u -r1.6 IJavaThemeConstants.java
--- ui/org/eclipse/jdt/internal/ui/IJavaThemeConstants.java 11 Sep 2008 11:59:33 -0000 1.6
+++ ui/org/eclipse/jdt/internal/ui/IJavaThemeConstants.java 10 Nov 2010 18:45:05 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
+ * Copyright (c) 2007, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -29,6 +29,11 @@
public final String EDITOR_MATCHING_BRACKETS_COLOR= ID_PREFIX + PreferenceConstants.EDITOR_MATCHING_BRACKETS_COLOR;
/**
+ * Theme constant for the color used to render method boundary lines.
+ */
+ public final String METHOD_BOUNDARY_LINES_COLOR= ID_PREFIX + PreferenceConstants.METHOD_BOUNDARY_LINES_COLOR;
+
+ /**
* Theme constant for the color used to render multi-line comments.
*/
public final String EDITOR_MULTI_LINE_COMMENT_COLOR= ID_PREFIX + PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR;
Index: ui/org/eclipse/jdt/internal/ui/JavaUIPreferenceInitializer.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaUIPreferenceInitializer.java,v
retrieving revision 1.5
diff -u -r1.5 JavaUIPreferenceInitializer.java
--- ui/org/eclipse/jdt/internal/ui/JavaUIPreferenceInitializer.java 11 Sep 2008 11:59:34 -0000 1.5
+++ ui/org/eclipse/jdt/internal/ui/JavaUIPreferenceInitializer.java 10 Nov 2010 18:45:05 -0000
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -125,6 +125,10 @@
findRGB(registry, IJavaThemeConstants.CODEASSIST_REPLACEMENT_BACKGROUND, new RGB(255, 255, 0)), fireEvent);
setDefault(
store,
+ PreferenceConstants.METHOD_BOUNDARY_LINES_COLOR,
+ findRGB(registry, IJavaThemeConstants.METHOD_BOUNDARY_LINES_COLOR, new RGB(192, 192, 192)), fireEvent);
+ setDefault(
+ store,
PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND,
findRGB(registry, IJavaThemeConstants.CODEASSIST_REPLACEMENT_FOREGROUND, new RGB(255, 0, 0)), fireEvent);
Index: ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java,v
retrieving revision 1.485
diff -u -r1.485 JavaEditor.java
--- ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java 5 Nov 2010 11:12:57 -0000 1.485
+++ ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java 10 Nov 2010 18:45:09 -0000
@@ -30,6 +30,9 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ST;
import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
@@ -63,6 +66,7 @@
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.DoubleClickEvent;
@@ -82,6 +86,8 @@
import org.eclipse.jface.text.IDocumentListener;
import org.eclipse.jface.text.IInformationControl;
import org.eclipse.jface.text.IInformationControlCreator;
+import org.eclipse.jface.text.IPaintPositionManager;
+import org.eclipse.jface.text.IPainter;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ISelectionValidator;
import org.eclipse.jface.text.ISynchronizable;
@@ -114,6 +120,7 @@
import org.eclipse.jface.text.source.IVerticalRulerColumn;
import org.eclipse.jface.text.source.LineChangeHover;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
+import org.eclipse.jface.text.source.projection.ProjectionAnnotation;
import org.eclipse.jface.text.source.projection.ProjectionSupport;
import org.eclipse.jface.text.source.projection.ProjectionViewer;
@@ -1507,6 +1514,206 @@
}
+ /**
+ * Draws lines that demarcate the boundary of a method in the editor.
+ *
+ * @since 3.7
+ */
+ private class MethodBoundaryLinesProvider {
+
+ /**
+ * Paints the method boundary lines.
+ */
+ private class MethodBoundaryLinesPainter implements IPainter, PaintListener {
+
+ /**
+ * Tracks if the painter has been deactivated or not.
+ */
+ private boolean fIsActive= false;
+
+ /**
+ * The text widget associated with the source viewer.
+ */
+ private StyledText fTextWidget;
+
+ /**
+ * Constructs a new MethodSeparatorPainter
.
+ */
+ public MethodBoundaryLinesPainter() {
+ fTextWidget= fViewer.getTextWidget();
+ }
+
+ /*
+ * @see org.eclipse.swt.events.PaintListener#paintControl(org.eclipse.swt.events.PaintEvent)
+ * Paints the method boundary lines by locating the method elements in the damaged area.
+ */
+ public void paintControl(PaintEvent event) {
+ if (fTextWidget != null) {
+ boolean drawBoundaryForCollapsedMethods= true;
+ event.gc.setForeground(fMethodBoundaryLinesColor);
+ int eventRegionTopLine= fTextWidget.getLineIndex(event.y);
+ //Accounting for partial line at the top
+ if (eventRegionTopLine > 0)
+ eventRegionTopLine--;
+ int eventRegionLastLine= fTextWidget.getLineIndex(event.y + event.height);
+ //Accounting for partial line at the bottom
+ if (eventRegionLastLine < fTextWidget.getLineCount() - 1)
+ eventRegionLastLine++;
+
+ int currentLine= eventRegionTopLine;
+ while (currentLine <= eventRegionLastLine) {
+ int currentLineLength= fTextWidget.getLine(currentLine).length();
+ if (currentLineLength > 0)
+ currentLineLength--;
+ int currentLineOffset= fTextWidget.getOffsetAtLine(currentLine) + currentLineLength;
+ IJavaElement element= getElementAt(fViewer.widgetOffset2ModelOffset(currentLineOffset), true);
+ try {
+ if (element != null && element.getElementType() == IJavaElement.METHOD) {
+ ISourceRange elementModelRegion= ((ISourceReference)element).getSourceRange();
+ IRegion elementWidgetRegion= fViewer.modelRange2WidgetRange(new Region(elementModelRegion.getOffset(), elementModelRegion.getLength()));
+ int elementWidgetRegionOffset= elementWidgetRegion.getOffset();
+ int elementWidgetRegionLength= elementWidgetRegion.getLength();
+
+ if (drawBoundaryForCollapsedMethods || !isElementCollapsed(elementModelRegion)) {
+ int boundaryLineWidth= fTextWidget.getClientArea().width;
+ int elementTopLine= fTextWidget.getLineAtOffset(elementWidgetRegionOffset);
+ int visibleRegionTopLine= fTextWidget.getLineIndex(0);
+ if (elementTopLine >= visibleRegionTopLine) {
+ int eventRegionOffset= fTextWidget.getOffsetAtLine(eventRegionTopLine);
+ if (elementWidgetRegionOffset >= eventRegionOffset) {
+ int elementTopY= fTextWidget.getLocationAtOffset(elementWidgetRegionOffset).y;
+ event.gc.drawLine(2, elementTopY, boundaryLineWidth, elementTopY);
+ }
+ }
+ int visibleRegionLastLine= fTextWidget.getLineIndex((fTextWidget.getClientArea().height - 1));
+ int elementBottomOffset= elementWidgetRegionOffset + elementWidgetRegionLength - 1;
+ int elementLastLine= fTextWidget.getLineAtOffset(elementBottomOffset);
+ if (elementLastLine <= visibleRegionLastLine) {
+ if (elementLastLine <= eventRegionLastLine) {
+ int elementBottomY= fTextWidget.getLocationAtOffset(elementBottomOffset).y + fTextWidget.getLineHeight(elementBottomOffset);
+ event.gc.drawLine(2, elementBottomY, boundaryLineWidth, elementBottomY);
+ }
+ }
+ }
+ currentLine= fTextWidget.getLineAtOffset(elementWidgetRegionOffset + elementWidgetRegionLength) + 1;
+ } else {
+ currentLine++;
+ }
+ } catch (JavaModelException exception) {
+ JavaPlugin.log(exception);
+ }
+ }
+ }
+ }
+
+ /**
+ * Checks with the projection annotation model if a element is collapsed.
+ *
+ * @param elementModelRange the source range for the element
+ * @return true
if the element is in collapsed state
+ */
+ private boolean isElementCollapsed(ISourceRange elementModelRange) {
+ Iterator annotationIterator= (fViewer.getProjectionAnnotationModel().getAnnotationIterator(elementModelRange.getOffset(), elementModelRange.getLength(), true, true));
+ while (annotationIterator.hasNext()) {
+ ProjectionAnnotation annotation= (ProjectionAnnotation)(annotationIterator.next());
+ if (annotation != null && !annotation.isCollapsed())
+ return false;
+ }
+ return true;
+ }
+
+ /*
+ * @see IPainter#dispose()
+ */
+ public void dispose() {
+ fTextWidget= null;
+ }
+
+ /*
+ * @see IPainter#paint(int)
+ */
+ public void paint(int reason) {
+ if (!fIsActive) {
+ fIsActive= true;
+ fTextWidget.addPaintListener(this);
+ fTextWidget.redraw();
+ } else if (CONFIGURATION == reason || INTERNAL == reason)
+ fTextWidget.redraw();
+ }
+
+ /*
+ * @see IPainter#deactivate(boolean)
+ */
+ public void deactivate(boolean redraw) {
+ if (fIsActive) {
+ fIsActive= false;
+ fTextWidget.removePaintListener(this);
+ if (redraw)
+ fTextWidget.redraw();
+ }
+ }
+
+ /*
+ * @see IPainter#setPositionManager(IPaintPositionManager)
+ */
+ public void setPositionManager(IPaintPositionManager manager) {
+ }
+ }
+
+ /**
+ * The source viewer associated with the editor.
+ */
+ private JavaSourceViewer fViewer;
+
+ /**
+ * The the method boundary lines color.
+ */
+ private Color fMethodBoundaryLinesColor;
+
+ /**
+ * The method boundary painter that paints the boundary lines.
+ */
+ private MethodBoundaryLinesPainter fPainter;
+
+ /**
+ * Constructs the MethodBoundaryLinesProvider
.
+ *
+ * @param viewer the source viewer associated with the editor.
+ * @param methodBoundaryColor the color to be used for drawing the method boundary lines.
+ */
+ public MethodBoundaryLinesProvider(JavaSourceViewer viewer, Color methodBoundaryColor) {
+ fViewer= viewer;
+ fMethodBoundaryLinesColor= methodBoundaryColor;
+ if (fPainter == null) {
+ fPainter= new MethodBoundaryLinesPainter();
+ fViewer.addPainter(fPainter);
+ }
+ }
+
+ /**
+ * Disposes the method boundary lines provider and associated painter.
+ */
+ public void dispose() {
+ if (fPainter != null) {
+ fViewer.removePainter(fPainter);
+ fPainter.deactivate(false);
+ fPainter.dispose();
+ fPainter= null;
+ }
+ fMethodBoundaryLinesColor= null;
+ }
+
+ /**
+ * Sets the color for the method boundary lines.
+ *
+ * @param methodBoundaryColor the color to be used for drawing the method boundary lines.
+ */
+ public void setColor(Color methodBoundaryColor) {
+ fMethodBoundaryLinesColor= methodBoundaryColor;
+ fPainter.paint(IPainter.CONFIGURATION);
+ }
+ }
+
/** Preference key for matching brackets */
protected final static String MATCHING_BRACKETS= PreferenceConstants.EDITOR_MATCHING_BRACKETS;
@@ -1743,6 +1950,13 @@
private long fErrorMessageTime;
/**
+ * The method boundary lines capability provider.
+ *
+ * @since 3.7
+ */
+ private MethodBoundaryLinesProvider fMethodBoundaryLinesProvider;
+
+ /**
* Timeout for the error message.
*
* @since 3.5
@@ -1885,6 +2099,11 @@
fProjectionModelUpdater.install(this, (ProjectionViewer)sourceViewer);
}
+ if (JavaPlugin.getDefault().getPreferenceStore().getBoolean(PreferenceConstants.SHOW_METHOD_BOUNDARY_LINES)) {
+ Color methodBoundaryColor= getSharedColors().getColor(PreferenceConverter.getColor(getPreferenceStore(), PreferenceConstants.METHOD_BOUNDARY_LINES_COLOR));
+ fMethodBoundaryLinesProvider= new MethodBoundaryLinesProvider((JavaSourceViewer)sourceViewer, methodBoundaryColor);
+ }
+
// ensure source viewer decoration support has been created and configured
getSourceViewerDecorationSupport(sourceViewer);
@@ -2586,6 +2805,11 @@
fProjectionSupport= null;
}
+ if (fMethodBoundaryLinesProvider != null) {
+ fMethodBoundaryLinesProvider.dispose();
+ fMethodBoundaryLinesProvider= null;
+ }
+
// cancel possible running computation
fMarkOccurrenceAnnotations= false;
uninstallOccurrencesFinder();
@@ -2944,6 +3168,27 @@
return;
}
+ if (PreferenceConstants.METHOD_BOUNDARY_LINES_COLOR.equals(property)) {
+ if (fMethodBoundaryLinesProvider != null) {
+ Color methodBoundaryColor= getSharedColors().getColor(PreferenceConverter.getColor(getPreferenceStore(), PreferenceConstants.METHOD_BOUNDARY_LINES_COLOR));
+ fMethodBoundaryLinesProvider.setColor(methodBoundaryColor);
+ }
+ }
+
+ if (PreferenceConstants.SHOW_METHOD_BOUNDARY_LINES.equals(property)) {
+ if (!JavaPlugin.getDefault().getPreferenceStore().getBoolean(PreferenceConstants.SHOW_METHOD_BOUNDARY_LINES)) {
+ if (fMethodBoundaryLinesProvider != null) {
+ fMethodBoundaryLinesProvider.dispose();
+ fMethodBoundaryLinesProvider= null;
+ }
+ } else {
+ if (fMethodBoundaryLinesProvider == null) {
+ Color methodBoundaryColor= getSharedColors().getColor(PreferenceConverter.getColor(getPreferenceStore(), PreferenceConstants.METHOD_BOUNDARY_LINES_COLOR));
+ fMethodBoundaryLinesProvider= new MethodBoundaryLinesProvider((JavaSourceViewer)sourceViewer, methodBoundaryColor);
+ }
+ }
+ }
+
} finally {
super.handlePreferenceStoreChanged(event);
}
Index: ui/org/eclipse/jdt/internal/ui/preferences/JavaEditorAppearanceConfigurationBlock.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/JavaEditorAppearanceConfigurationBlock.java,v
retrieving revision 1.29
diff -u -r1.29 JavaEditorAppearanceConfigurationBlock.java
--- ui/org/eclipse/jdt/internal/ui/preferences/JavaEditorAppearanceConfigurationBlock.java 7 Oct 2010 09:57:54 -0000 1.29
+++ ui/org/eclipse/jdt/internal/ui/preferences/JavaEditorAppearanceConfigurationBlock.java 10 Nov 2010 18:45:09 -0000
@@ -59,6 +59,7 @@
{PreferencesMessages.JavaEditorPreferencePage_backgroundForCompletionReplacement, PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND, null },
{PreferencesMessages.JavaEditorPreferencePage_foregroundForCompletionReplacement, PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND, null },
{PreferencesMessages.JavaEditorPreferencePage_sourceHoverBackgroundColor, PreferenceConstants.EDITOR_SOURCE_HOVER_BACKGROUND_COLOR, PreferenceConstants.EDITOR_SOURCE_HOVER_BACKGROUND_COLOR_SYSTEM_DEFAULT},
+ { PreferencesMessages.JavaEditorPreferencePage_methodBoundaryLinesColor, PreferenceConstants.METHOD_BOUNDARY_LINES_COLOR, null },
};
@@ -84,6 +85,8 @@
overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_SUB_WORD_NAVIGATION));
overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_EVALUTE_TEMPORARY_PROBLEMS));
overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_SHOW_SEGMENTS));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.SHOW_METHOD_BOUNDARY_LINES));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, PreferenceConstants.METHOD_BOUNDARY_LINES_COLOR));
overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, PreferenceConstants.CODEASSIST_PARAMETERS_BACKGROUND));
overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, PreferenceConstants.CODEASSIST_PARAMETERS_FOREGROUND));
overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND));
@@ -234,6 +237,9 @@
label= PreferencesMessages.JavaEditorPreferencePage_showJavaElementOnly;
addCheckBox(appearanceComposite, label, PreferenceConstants.EDITOR_SHOW_SEGMENTS, 0);
+ label= PreferencesMessages.JavaEditorPreferencePage_ShowMethodBoundaryLines;
+ addCheckBox(appearanceComposite, label, PreferenceConstants.SHOW_METHOD_BOUNDARY_LINES, 0);
+
Label l= new Label(appearanceComposite, SWT.LEFT );
gd= new GridData(GridData.HORIZONTAL_ALIGN_FILL);
gd.horizontalSpan= 2;
Index: ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.java,v
retrieving revision 1.137
diff -u -r1.137 PreferencesMessages.java
--- ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.java 5 Nov 2010 05:49:58 -0000 1.137
+++ ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.java 10 Nov 2010 18:45:10 -0000
@@ -151,6 +151,8 @@
public static String JavaEditorPreferencePage_enable;
public static String JavaEditorPreferencePage_preview;
public static String JavaEditorPreferencePage_highlightMatchingBrackets;
+
+ public static String JavaEditorPreferencePage_ShowMethodBoundaryLines;
public static String JavaEditorPreferencePage_insertSingleProposalsAutomatically;
public static String JavaEditorPreferencePage_showOnlyProposalsVisibleInTheInvocationContext;
public static String JavaEditorPreferencePage_presentProposalsInAlphabeticalOrder;
@@ -178,6 +180,8 @@
public static String JavaEditorPreferencePage_empty_input;
public static String JavaEditorPreferencePage_invalid_input;
public static String JavaEditorPreferencePage_matchingBracketsHighlightColor2;
+
+ public static String JavaEditorPreferencePage_methodBoundaryLinesColor;
public static String JavaEditorPreferencePage_appearanceOptions;
public static String JavaEditorPreferencePage_typing_tabTitle;
public static String JavaEditorPreferencePage_closeStrings;
Index: ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties,v
retrieving revision 1.521
diff -u -r1.521 PreferencesMessages.properties
--- ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties 5 Nov 2010 05:49:58 -0000 1.521
+++ ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties 10 Nov 2010 18:45:12 -0000
@@ -131,6 +131,7 @@
JavaEditorPreferencePage_enable=Enab&le
JavaEditorPreferencePage_preview=Previe&w:
JavaEditorPreferencePage_highlightMatchingBrackets=Highlight &matching brackets
+JavaEditorPreferencePage_ShowMethodBoundaryLines=Method &boundary lines
JavaEditorPreferencePage_insertSingleProposalsAutomatically=Insert single &proposals automatically
JavaEditorPreferencePage_showOnlyProposalsVisibleInTheInvocationContext=Hide proposals not visible in the in&vocation context
JavaEditorPreferencePage_presentProposalsInAlphabeticalOrder=&Sort proposals
@@ -160,6 +161,7 @@
JavaEditorPreferencePage_empty_input=Empty input
JavaEditorPreferencePage_invalid_input=''{0}'' is not a valid input.
JavaEditorPreferencePage_matchingBracketsHighlightColor2=Matching brackets highlight
+JavaEditorPreferencePage_methodBoundaryLinesColor= Method boundary lines
JavaEditorPreferencePage_appearanceOptions=Appearance co&lor options:
JavaEditorPreferencePage_typing_tabTitle=T&yping
Index: ui/org/eclipse/jdt/ui/PreferenceConstants.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/PreferenceConstants.java,v
retrieving revision 1.257
diff -u -r1.257 PreferenceConstants.java
--- ui/org/eclipse/jdt/ui/PreferenceConstants.java 5 Nov 2010 05:49:58 -0000 1.257
+++ ui/org/eclipse/jdt/ui/PreferenceConstants.java 10 Nov 2010 18:45:15 -0000
@@ -2275,11 +2275,32 @@
public static final String EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK= "browserLikeLinksKeyModifierMask"; //$NON-NLS-1$
/**
+ * A named preference that controls whether method boundary lines are shown in the editor.
+ *
+ * Value is of type Boolean
.
+ *
+ * Value is of type String
. A RGB color value encoded as a string using class
+ * PreferenceConverter
+ *
* Value is of type Boolean
.
*