Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 141579 Details for
Bug 282575
[CSS] CTabItem should support color, background-color
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
CTabItem color attributes patch v2b
bug282575-patch-v2b.txt (text/plain), 26.66 KB, created by
Remy Suen
on 2009-07-14 18:06:49 EDT
(
hide
)
Description:
CTabItem color attributes patch v2b
Filename:
MIME Type:
Creator:
Remy Suen
Created:
2009-07-14 18:06:49 EDT
Size:
26.66 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.e4.ui.tests.css.swt >Index: src/org/eclipse/e4/ui/tests/css/swt/CTabFolderTest.java >=================================================================== >RCS file: /cvsroot/eclipse/e4/org.eclipse.e4.ui/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/CTabFolderTest.java,v >retrieving revision 1.15 >diff -u -r1.15 CTabFolderTest.java >--- src/org/eclipse/e4/ui/tests/css/swt/CTabFolderTest.java 8 Jul 2009 15:45:45 -0000 1.15 >+++ src/org/eclipse/e4/ui/tests/css/swt/CTabFolderTest.java 14 Jul 2009 21:57:30 -0000 >@@ -72,16 +72,6 @@ > assertEquals(BLUE, folderToTest.getForeground().getRGB()); > } > >- public void testSelectedPseudo() throws Exception { >- CTabFolder folderToTest = createTestCTabFolder( >- "CTabFolder { color: #FFFFFF; background-color: #0000FF }\n" + >- "CTabFolder:selected { color: #FF0000; background-color: #00FF00 }"); >- assertEquals(WHITE, folderToTest.getForeground().getRGB()); >- assertEquals(BLUE, folderToTest.getBackground().getRGB()); >- assertEquals(RED, folderToTest.getSelectionForeground().getRGB()); >- assertEquals(GREEN, folderToTest.getSelectionBackground().getRGB()); >- } >- > //See GradientTest for testing background gradient > > public void testFontRegular() throws Exception { >Index: src/org/eclipse/e4/ui/tests/css/swt/GradientTest.java >=================================================================== >RCS file: /cvsroot/eclipse/e4/org.eclipse.e4.ui/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/GradientTest.java,v >retrieving revision 1.2 >diff -u -r1.2 GradientTest.java >--- src/org/eclipse/e4/ui/tests/css/swt/GradientTest.java 28 May 2009 21:21:20 -0000 1.2 >+++ src/org/eclipse/e4/ui/tests/css/swt/GradientTest.java 14 Jul 2009 21:57:30 -0000 >@@ -60,14 +60,14 @@ > > public void testGradients() throws Exception { > CTabFolder folderToTest = createTestCTabFolder( >- "CTabFolder:selected { background-color: #FF0000 #0000FF}"); >+ "CTabItem:selected { background-color: #FF0000 #0000FF}"); > assertEquals(RED, getSelectionBackgroundBegin(folderToTest).getRGB()); //gradient begin > assertEquals(BLUE, folderToTest.getSelectionBackground().getRGB()); //gradient end > } > > public void testDefaultPercents() throws Exception { > CTabFolder folderToTest = createTestCTabFolder( >- "CTabFolder:selected { background-color: #FF0000 #0000FF}"); >+ "CTabItem:selected { background-color: #FF0000 #0000FF}"); > assertEquals(RED, getSelectionBackgroundBegin(folderToTest).getRGB()); //gradient begin > assertEquals(BLUE, folderToTest.getSelectionBackground().getRGB()); //gradient end > assertEquals(new int[] {100}, getSelectionGradientPercents(folderToTest)); //default percent >@@ -75,19 +75,19 @@ > > public void testDefaultManyPercents() throws Exception { > CTabFolder folderToTest = createTestCTabFolder( >- "CTabFolder:selected { background-color: red green blue yellow}"); >+ "CTabItem:selected { background-color: red green blue yellow}"); > assertEquals(new int[] {33, 67, 100}, getSelectionGradientPercents(folderToTest)); //default percent > } > > public void testSpecifiedPercents() throws Exception { > CTabFolder folderToTest = createTestCTabFolder( >- "CTabFolder:selected { background-color: #FF0000 #0000FF 53%}"); >+ "CTabItem:selected { background-color: #FF0000 #0000FF 53%}"); > assertEquals(new int[] {53}, getSelectionGradientPercents(folderToTest)); > } > > public void testManyColorsAndSpecifiedManyPercents() throws Exception { > CTabFolder folderToTest = createTestCTabFolder( >- "CTabFolder:selected { background-color: #FF0000 #00FF00 #0000FF 22% 44%}"); >+ "CTabItem:selected { background-color: #FF0000 #00FF00 #0000FF 22% 44%}"); > assertEquals(RED, getSelectionBackgroundBegin(folderToTest).getRGB()); //gradient begin > assertEquals(GREEN, getSelectionBackground(folderToTest, 1).getRGB()); //2nd gradient > assertEquals(BLUE, folderToTest.getSelectionBackground().getRGB()); //gradient end >@@ -100,7 +100,7 @@ > public void testBadPercents() throws Exception { > //There should be either zero or three percent declarations, otherwise it acts as default > CTabFolder folderToTest = createTestCTabFolder( >- "CTabFolder:selected { background-color: red green blue yellow 10%}"); >+ "CTabItem:selected { background-color: red green blue yellow 10%}"); > assertEquals(new int[] {33, 67, 100}, getSelectionGradientPercents(folderToTest)); //default percent > } > >@@ -110,7 +110,7 @@ > */ > public void testBadColors() throws Exception { > CTabFolder folderToTest = createTestCTabFolder( >- "CTabFolder:selected { background-color: #FF0000 notAColor #0000FF}"); >+ "CTabItem:selected { background-color: #FF0000 notAColor #0000FF}"); > assertEquals(RED, getSelectionBackgroundBegin(folderToTest).getRGB()); //gradient begin > assertEquals(BLUE, folderToTest.getSelectionBackground().getRGB()); //gradient end > assertEquals(new int[] {100}, getSelectionGradientPercents(folderToTest)); //default percent >@@ -121,7 +121,7 @@ > */ > public void testAboveRangePercents() throws Exception { > CTabFolder folderToTest = createTestCTabFolder( >- "CTabFolder:selected { background-color: #FF0000 #00FF00 #0000FF 20% 110%}"); >+ "CTabItem:selected { background-color: #FF0000 #00FF00 #0000FF 20% 110%}"); > assertEquals(RED, getSelectionBackgroundBegin(folderToTest).getRGB()); //gradient begin > assertEquals(BLUE, folderToTest.getSelectionBackground().getRGB()); //gradient end > assertEquals(new int[] {50, 100}, getSelectionGradientPercents(folderToTest)); //default percent >@@ -132,7 +132,7 @@ > */ > public void testBelowRangePercents() throws Exception { > CTabFolder folderToTest = createTestCTabFolder( >- "CTabFolder:selected { background-color: #FF0000 #00FF00 #0000FF -20% 50%}"); >+ "CTabItem:selected { background-color: #FF0000 #00FF00 #0000FF -20% 50%}"); > assertEquals(RED, getSelectionBackgroundBegin(folderToTest).getRGB()); //gradient begin > assertEquals(BLUE, folderToTest.getSelectionBackground().getRGB()); //gradient end > assertEquals(new int[] {50, 100}, getSelectionGradientPercents(folderToTest)); //default percent >@@ -147,7 +147,7 @@ > */ > public void testAltSyntax() throws Exception { > CTabFolder folderToTest = createTestCTabFolder( >- "CTabFolder:selected { background-color: gradient, rgb(140,140,140), rgb(48,48,48), 100%;"); >+ "CTabItem:selected { background-color: gradient, rgb(140,140,140), rgb(48,48,48), 100%;"); > assertEquals(new RGB(140,140,140), getSelectionBackgroundBegin(folderToTest).getRGB()); //gradient begin > assertEquals(new RGB(48,48,48), folderToTest.getSelectionBackground().getRGB()); //gradient end > assertEquals(new int[] {100}, getSelectionGradientPercents(folderToTest)); //default percent >Index: src/org/eclipse/e4/ui/tests/css/swt/CTabItemTest.java >=================================================================== >RCS file: /cvsroot/eclipse/e4/org.eclipse.e4.ui/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/CTabItemTest.java,v >retrieving revision 1.2 >diff -u -r1.2 CTabItemTest.java >--- src/org/eclipse/e4/ui/tests/css/swt/CTabItemTest.java 8 Jul 2009 15:45:45 -0000 1.2 >+++ src/org/eclipse/e4/ui/tests/css/swt/CTabItemTest.java 14 Jul 2009 21:57:30 -0000 >@@ -15,7 +15,9 @@ > import org.eclipse.swt.SWT; > import org.eclipse.swt.custom.CTabFolder; > import org.eclipse.swt.custom.CTabItem; >+import org.eclipse.swt.graphics.Color; > import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.RGB; > import org.eclipse.swt.layout.FillLayout; > import org.eclipse.swt.widgets.Button; > import org.eclipse.swt.widgets.Composite; >@@ -74,8 +76,12 @@ > return folderToTest; > } > >- protected CTabFolder createTestTabFolder(String styleSheet) { >- CTabFolder folder = createTestTabFolder(); >+ private CTabFolder createTestTabFolder(String styleSheet) { >+ return createTestTabFolder(styleSheet, true); >+ } >+ >+ protected CTabFolder createTestTabFolder(String styleSheet, boolean open) { >+ CTabFolder folder = createTestTabFolder(open); > > engine = createEngine(styleSheet, folder.getDisplay()); > >@@ -367,7 +373,7 @@ > assertEquals(SWT.NORMAL, data.getStyle()); > } > } >- >+ > for (int i = 0; i < folder2.getItemCount(); i++) { > CTabItem item = folder2.getItem(i); > FontData data = item.getFont().getFontData()[0]; >@@ -375,7 +381,7 @@ > assertEquals(11, data.getHeight()); > assertEquals(SWT.NORMAL, data.getStyle()); > } >- >+ > folder2.setSelection(0); > spinEventLoop(); > >@@ -425,7 +431,7 @@ > assertEquals(SWT.NORMAL, data.getStyle()); > } > } >- >+ > for (int i = 0; i < folder2.getItemCount(); i++) { > CTabItem item = folder2.getItem(i); > FontData data = item.getFont().getFontData()[0]; >@@ -433,7 +439,7 @@ > assertEquals(11, data.getHeight()); > assertEquals(SWT.NORMAL, data.getStyle()); > } >- >+ > folder2.setSelection(0); > spinEventLoop(); > >@@ -482,7 +488,7 @@ > CTabItem item = folder2.getItem(i); > assertTrue(item.getShowClose()); > } >- >+ > folder2.setSelection(0); > spinEventLoop(); > >@@ -497,10 +503,11 @@ > CTabFolder folder2 = createFolder(folder.getShell()); > > SWTElement.setCSSClass(folder2, "viewStack"); >- engine = createEngine("CTabItem { show-close: false }" >- + "CTabItem:selected { show-close: true }" >- + "CTabFolder.viewStack CTabItem { show-close: false }" >- + "CTabFolder.viewStack CTabItem.selected { show-close: true }", >+ engine = createEngine( >+ "CTabItem { show-close: false }" >+ + "CTabItem:selected { show-close: true }" >+ + "CTabFolder.viewStack CTabItem { show-close: false }" >+ + "CTabFolder.viewStack CTabItem.selected { show-close: true }", > folder.getDisplay()); > engine.applyStyles(folder.getShell(), true); > >@@ -525,7 +532,7 @@ > CTabItem item = folder2.getItem(i); > assertFalse(item.getShowClose()); > } >- >+ > folder2.setSelection(0); > spinEventLoop(); > >@@ -538,4 +545,106 @@ > } > } > } >+ >+ public void testBackground() throws Exception { >+ CTabFolder folder = createTestTabFolder( >+ "CTabItem { background-color: #0000ff }", false); >+ assertEquals(new RGB(0, 0, 255), folder.getBackground().getRGB()); >+ >+ for (int i = 0; i < folder.getItemCount(); i++) { >+ assertEquals("#0000ff", engine.retrieveCSSProperty(folder >+ .getItem(i), "background-color", null)); >+ } >+ } >+ >+ public void testBackground2() throws Exception { >+ CTabFolder folder = createTestTabFolder(false); >+ Color preStyledSelectionBackground = folder.getSelectionBackground(); >+ >+ RGB rgb = new RGB(0, 0, 255); >+ String colour = "#0000ff"; >+ >+ // we want to make sure we pick a unique colour so that we actually test that the selection's colour has not changed >+ if (rgb.equals(preStyledSelectionBackground.getRGB())) { >+ rgb = new RGB(0, 255, 0); >+ colour = "#00ff00"; >+ } >+ >+ CSSEngine engine = createEngine("CTabItem { background-color: " + colour + " }", >+ folder.getDisplay()); >+ engine.applyStyles(folder, true); >+ >+ assertEquals(rgb, folder.getBackground().getRGB()); >+ >+ for (int i = 0; i < folder.getItemCount(); i++) { >+ assertEquals(colour, engine.retrieveCSSProperty(folder.getItem(i), >+ "background-color", null)); >+ } >+ >+ assertEquals(preStyledSelectionBackground.getRGB(), folder >+ .getSelectionBackground().getRGB()); >+ } >+ >+ public void testSelectionBackground() throws Exception { >+ CTabFolder folder = createTestTabFolder( >+ "CTabItem:selected { background-color: #00ff00 }", false); >+ assertEquals(new RGB(0, 255, 0), folder.getSelectionBackground() >+ .getRGB()); >+ >+ for (int i = 0; i < folder.getItemCount(); i++) { >+ assertEquals("#00ff00", engine.retrieveCSSProperty(folder >+ .getItem(i), "background-color", "selected")); >+ } >+ } >+ >+ public void testForeground() throws Exception { >+ CTabFolder folder = createTestTabFolder("CTabItem { color: #0000ff }", >+ false); >+ assertEquals(new RGB(0, 0, 255), folder.getForeground().getRGB()); >+ >+ for (int i = 0; i < folder.getItemCount(); i++) { >+ assertEquals("#0000ff", engine.retrieveCSSProperty(folder >+ .getItem(i), "color", null)); >+ } >+ } >+ >+ public void testForeground2() throws Exception { >+ CTabFolder folder = createTestTabFolder(false); >+ Color preStyledSelectionForeground = folder.getSelectionForeground(); >+ >+ RGB rgb = new RGB(0, 0, 255); >+ String colour = "#0000ff"; >+ >+ // we want to make sure we pick a unique colour so that we actually test that the selection's colour has not changed >+ if (rgb.equals(preStyledSelectionForeground.getRGB())) { >+ rgb = new RGB(0, 255, 0); >+ colour = "#00ff00"; >+ } >+ >+ CSSEngine engine = createEngine("CTabItem { color: " + colour + " }", >+ folder.getDisplay()); >+ engine.applyStyles(folder, true); >+ >+ assertEquals(rgb, folder.getForeground().getRGB()); >+ >+ for (int i = 0; i < folder.getItemCount(); i++) { >+ assertEquals(colour, engine.retrieveCSSProperty(folder.getItem(i), >+ "color", null)); >+ } >+ >+ assertEquals(preStyledSelectionForeground.getRGB(), folder >+ .getSelectionForeground().getRGB()); >+ } >+ >+ public void testSelectionForeground() throws Exception { >+ CTabFolder folder = createTestTabFolder( >+ "CTabItem:selected { color: #00ff00 }", false); >+ assertEquals(new RGB(0, 255, 0), folder.getSelectionForeground() >+ .getRGB()); >+ >+ for (int i = 0; i < folder.getItemCount(); i++) { >+ assertEquals("#00ff00", engine.retrieveCSSProperty(folder >+ .getItem(i), "color", "selected")); >+ } >+ } > } >#P org.eclipse.e4.ui.css.swt >Index: src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyTextSWTHandler.java >=================================================================== >RCS file: /cvsroot/eclipse/e4/org.eclipse.e4.ui/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyTextSWTHandler.java,v >retrieving revision 1.2 >diff -u -r1.2 CSSPropertyTextSWTHandler.java >--- src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyTextSWTHandler.java 27 Nov 2008 23:22:36 -0000 1.2 >+++ src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyTextSWTHandler.java 14 Jul 2009 21:57:30 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2008 Angelo Zerr and others. >+ * Copyright (c) 2008, 2009 Angelo Zerr 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 >@@ -16,6 +16,7 @@ > import org.eclipse.e4.ui.css.swt.CSSSWTConstants; > import org.eclipse.e4.ui.css.swt.helpers.SWTElementHelpers; > import org.eclipse.swt.custom.CTabFolder; >+import org.eclipse.swt.custom.CTabItem; > import org.eclipse.swt.events.VerifyEvent; > import org.eclipse.swt.events.VerifyListener; > import org.eclipse.swt.graphics.Color; >@@ -23,6 +24,7 @@ > import org.eclipse.swt.widgets.Control; > import org.eclipse.swt.widgets.Label; > import org.eclipse.swt.widgets.Text; >+import org.eclipse.swt.widgets.Widget; > import org.w3c.dom.css.CSSValue; > > public class CSSPropertyTextSWTHandler extends AbstractCSSPropertyTextHandler { >@@ -31,9 +33,9 @@ > > public boolean applyCSSProperty(Object element, String property, > CSSValue value, String pseudo, CSSEngine engine) throws Exception { >- Control control = SWTElementHelpers.getControl(element); >- if (control != null) { >- super.applyCSSProperty(control, property, value, pseudo, engine); >+ Widget widget = SWTElementHelpers.getWidget(element); >+ if (widget != null) { >+ super.applyCSSProperty(widget, property, value, pseudo, engine); > return true; > } > return false; >@@ -42,23 +44,28 @@ > > public String retrieveCSSProperty(Object element, String property, > String pseudo, CSSEngine engine) throws Exception { >- Control control = SWTElementHelpers.getControl(element); >- if (control != null) { >- return super.retrieveCSSProperty(control, property, pseudo, engine); >+ Widget widget = SWTElementHelpers.getWidget(element); >+ if (widget != null) { >+ return super.retrieveCSSProperty(widget, property, pseudo, engine); > } > return null; > } > > public void applyCSSPropertyColor(Object element, CSSValue value, > String pseudo, CSSEngine engine) throws Exception { >- Control control = (Control) element; >+ Widget widget = (Widget) element; > if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) { >- Color newColor = (Color) engine.convert(value, Color.class, control >+ Color newColor = (Color) engine.convert(value, Color.class, widget > .getDisplay()); >- if (control instanceof CTabFolder && "selected".equals(pseudo)) { >- ((CTabFolder) control).setSelectionForeground(newColor); >- } else { >- control.setForeground(newColor); >+ if (widget instanceof CTabItem) { >+ CTabFolder folder = ((CTabItem) widget).getParent(); >+ if ("selected".equals(pseudo)) { >+ folder.setSelectionForeground(newColor); >+ } else { >+ folder.setForeground(newColor); >+ } >+ } else if (widget instanceof Control) { >+ ((Control) widget).setForeground(newColor); > } > } > } >@@ -116,8 +123,17 @@ > > public String retrieveCSSPropertyColor(Object element, String pseudo, > CSSEngine engine) throws Exception { >- Control control = (Control) element; >- Color color = control.getForeground(); >+ Widget widget = (Widget) element; >+ Color color = null; >+ if (widget instanceof CTabItem) { >+ if ("selected".equals(pseudo)) { >+ color = ((CTabItem) widget).getParent().getSelectionForeground(); >+ } else { >+ color = ((CTabItem) widget).getParent().getForeground(); >+ } >+ } else if (widget instanceof Control) { >+ color = ((Control) widget).getForeground(); >+ } > return engine.convert(color, Color.class, null); > } > >Index: src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyBackgroundSWTHandler.java >=================================================================== >RCS file: /cvsroot/eclipse/e4/org.eclipse.e4.ui/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyBackgroundSWTHandler.java,v >retrieving revision 1.4 >diff -u -r1.4 CSSPropertyBackgroundSWTHandler.java >--- src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyBackgroundSWTHandler.java 27 May 2009 17:57:06 -0000 1.4 >+++ src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyBackgroundSWTHandler.java 14 Jul 2009 21:57:30 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2008 Angelo Zerr and others. >+ * Copyright (c) 2008, 2009 Angelo Zerr 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 >@@ -19,10 +19,12 @@ > import org.eclipse.e4.ui.css.swt.helpers.SWTElementHelpers; > import org.eclipse.e4.ui.css.swt.properties.GradientBackgroundListener; > import org.eclipse.swt.custom.CTabFolder; >+import org.eclipse.swt.custom.CTabItem; > import org.eclipse.swt.graphics.Color; > import org.eclipse.swt.graphics.Image; > import org.eclipse.swt.widgets.Button; > import org.eclipse.swt.widgets.Control; >+import org.eclipse.swt.widgets.Widget; > import org.w3c.dom.css.CSSValue; > > public class CSSPropertyBackgroundSWTHandler extends >@@ -32,9 +34,9 @@ > > public boolean applyCSSProperty(Object element, String property, > CSSValue value, String pseudo, CSSEngine engine) throws Exception { >- Control control = SWTElementHelpers.getControl(element); >- if (control != null) { >- super.applyCSSProperty(control, property, value, pseudo, engine); >+ Widget widget = SWTElementHelpers.getWidget(element); >+ if (widget != null) { >+ super.applyCSSProperty(widget, property, value, pseudo, engine); > return true; > } > return false; >@@ -43,9 +45,9 @@ > > public String retrieveCSSProperty(Object element, String property, > String pseudo, CSSEngine engine) throws Exception { >- Control control = SWTElementHelpers.getControl(element); >- if (control != null) { >- return super.retrieveCSSProperty(control, property, pseudo, engine); >+ Widget widget = SWTElementHelpers.getWidget(element); >+ if (widget != null) { >+ return super.retrieveCSSProperty(widget, property, pseudo, engine); > } > return null; > } >@@ -59,25 +61,31 @@ > */ > public void applyCSSPropertyBackgroundColor(Object element, CSSValue value, > String pseudo, CSSEngine engine) throws Exception { >- Control control = (Control) element; >+ Widget widget = (Widget) element; > if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) { >- Color newColor = (Color) engine.convert(value, Color.class, control >+ Color newColor = (Color) engine.convert(value, Color.class, widget > .getDisplay()); >- if (control instanceof CTabFolder && "selected".equals(pseudo)) { >- ((CTabFolder) control).setSelectionBackground(newColor); >- } else { >- control.setBackground(newColor); >+ if (widget instanceof CTabItem) { >+ CTabFolder folder = ((CTabItem) widget).getParent(); >+ if ("selected".equals(pseudo)) { >+ folder.setSelectionBackground(newColor); >+ } else { >+ folder.setBackground(newColor); >+ } >+ } else if (widget instanceof Control) { >+ ((Control) widget).setBackground(newColor); > } > } else if (value.getCssValueType() == CSSValue.CSS_VALUE_LIST) { > Gradient grad = (Gradient) engine.convert(value, Gradient.class, >- control.getDisplay()); >- if (control instanceof CTabFolder && "selected".equals(pseudo)) { >- ((CTabFolder) control).setSelectionBackground( >- CSSSWTColorHelper.getSWTColors(grad, control.getDisplay()), >+ widget.getDisplay()); >+ if (widget instanceof CTabItem && "selected".equals(pseudo)) { >+ CTabFolder folder = ((CTabItem) widget).getParent(); >+ folder.setSelectionBackground( >+ CSSSWTColorHelper.getSWTColors(grad, folder.getDisplay()), > CSSSWTColorHelper.getPercents(grad), > true); >- } else { >- GradientBackgroundListener.handle(control, grad); >+ } else if (widget instanceof Control) { >+ GradientBackgroundListener.handle((Control) widget, grad); > } > } > } >@@ -121,8 +129,17 @@ > > public String retrieveCSSPropertyBackgroundColor(Object element, > String pseudo, CSSEngine engine) throws Exception { >- Control control = (Control) element; >- Color color = control.getBackground(); >+ Widget widget = (Widget) element; >+ Color color = null; >+ if (widget instanceof CTabItem) { >+ if ("selected".equals(pseudo)) { >+ color = ((CTabItem) widget).getParent().getSelectionBackground(); >+ } else { >+ color = ((CTabItem) widget).getParent().getBackground(); >+ } >+ } else if (widget instanceof Control) { >+ color = ((Control) widget).getBackground(); >+ } > return engine.convert(color, Color.class, null); > } > >#P org.eclipse.e4.ui.css.core >Index: src/org/eclipse/e4/ui/css/core/impl/engine/AbstractCSSEngine.java >=================================================================== >RCS file: /cvsroot/eclipse/e4/org.eclipse.e4.ui/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/AbstractCSSEngine.java,v >retrieving revision 1.3 >diff -u -r1.3 AbstractCSSEngine.java >--- src/org/eclipse/e4/ui/css/core/impl/engine/AbstractCSSEngine.java 17 Dec 2008 06:29:27 -0000 1.3 >+++ src/org/eclipse/e4/ui/css/core/impl/engine/AbstractCSSEngine.java 14 Jul 2009 21:57:31 -0000 >@@ -21,10 +21,8 @@ > import java.util.List; > import java.util.Map; > >-import org.eclipse.e4.ui.css.core.util.impl.resources.ResourcesLocatorManager; >-import org.eclipse.e4.ui.css.core.util.resources.IResourcesLocatorManager; >-import org.eclipse.e4.ui.css.core.utils.StringUtils; > import org.eclipse.e4.ui.css.core.dom.CSSStylableElement; >+import org.eclipse.e4.ui.css.core.dom.ExtendedCSSRule; > import org.eclipse.e4.ui.css.core.dom.ExtendedDocumentCSS; > import org.eclipse.e4.ui.css.core.dom.IElementProvider; > import org.eclipse.e4.ui.css.core.dom.parsers.CSSParser; >@@ -44,13 +42,18 @@ > import org.eclipse.e4.ui.css.core.impl.sac.ExtendedSelector; > import org.eclipse.e4.ui.css.core.resources.CSSResourcesHelpers; > import org.eclipse.e4.ui.css.core.resources.IResourcesRegistry; >+import org.eclipse.e4.ui.css.core.util.impl.resources.ResourcesLocatorManager; >+import org.eclipse.e4.ui.css.core.util.resources.IResourcesLocatorManager; >+import org.eclipse.e4.ui.css.core.utils.StringUtils; > import org.w3c.css.sac.AttributeCondition; > import org.w3c.css.sac.Condition; > import org.w3c.css.sac.ConditionalSelector; > import org.w3c.css.sac.InputSource; > import org.w3c.css.sac.Selector; >+import org.w3c.css.sac.SelectorList; > import org.w3c.dom.Element; > import org.w3c.dom.NodeList; >+import org.w3c.dom.css.CSSRule; > import org.w3c.dom.css.CSSStyleDeclaration; > import org.w3c.dom.css.CSSStyleSheet; > import org.w3c.dom.css.CSSValue; >@@ -166,7 +169,7 @@ > CSSParser parser = makeCSSParser(); > CSSStyleSheet styleSheet = parser.parseStyleSheet(source); > if (documentCSS instanceof ExtendedDocumentCSS) { >- ((ExtendedDocumentCSS) documentCSS).addStyleSheet(styleSheet); >+ (documentCSS).addStyleSheet(styleSheet); > } > return styleSheet; > } >@@ -338,9 +341,15 @@ > applyDefaultStyleDeclaration(element, false, > styleWithPseudoInstance, pseudoInstance); > } >+ > if (styleWithPseudoInstance != null) { >- applyStyleDeclaration(element, styleWithPseudoInstance, >- pseudoInstance); >+ CSSRule parentRule = styleWithPseudoInstance.getParentRule(); >+ if (parentRule instanceof ExtendedCSSRule) { >+ applyConditionalPseudoStyle((ExtendedCSSRule) parentRule, pseudoInstance, element, styleWithPseudoInstance); >+ } else { >+ applyStyleDeclaration(element, styleWithPseudoInstance, >+ pseudoInstance); >+ } > } > } > } >@@ -370,6 +379,27 @@ > } > > } >+ >+ private void applyConditionalPseudoStyle(ExtendedCSSRule parentRule, String pseudoInstance, Object element, CSSStyleDeclaration styleWithPseudoInstance) { >+ SelectorList selectorList = parentRule.getSelectorList(); >+ for (int j = 0; j < selectorList.getLength(); j++) { >+ Selector item = selectorList.item(j); >+ // search for conditional selectors >+ if (item instanceof ConditionalSelector) { >+ Condition condition = ((ConditionalSelector) item).getCondition(); >+ // we're only interested in attribute selector conditions >+ if (condition instanceof AttributeCondition) { >+ String value = ((AttributeCondition) condition).getValue(); >+ if (value.equals(pseudoInstance)) { >+ // if we match the pseudo, apply the style >+ applyStyleDeclaration(element, styleWithPseudoInstance, >+ pseudoInstance); >+ return; >+ } >+ } >+ } >+ } >+ } > > protected String[] getStaticPseudoInstances(Element element) { > if (element instanceof CSSStylableElement) { >@@ -878,7 +908,7 @@ > > public void reset() { > // Remove All Style Sheets >- ((ExtendedDocumentCSS) documentCSS).removeAllStyleSheets(); >+ (documentCSS).removeAllStyleSheets(); > if (elementsWithDynamicPseudoClasses != null) { > Collection elements = elementsWithDynamicPseudoClasses.values(); > for (Iterator iterator = elements.iterator(); iterator.hasNext();) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 282575
:
141376
|
141377
| 141579