From 409519b13b5e50b9351a61954c20f158381a418f Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 7 Apr 2010 19:09:49 +0000 Subject: [PATCH] FR [2982910] Usability - Color of consecutive rows - thanks to waqarazeem and jmpiloq Link to SF Tracker: http://sourceforge.net/support/tracker.php?aid=2982910 --- .../src/org/adempiere/plaf/AdempierePLAF.java | 34 ++++++++++++++++--- base/src/org/compiere/swing/CTable.java | 19 ++++++++++- .../src/org/compiere/swing/ExtendedTheme.java | 6 +++- 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/base/src/org/adempiere/plaf/AdempierePLAF.java b/base/src/org/adempiere/plaf/AdempierePLAF.java index 9ec4ed2c38..7e86a7d51c 100644 --- a/base/src/org/adempiere/plaf/AdempierePLAF.java +++ b/base/src/org/adempiere/plaf/AdempierePLAF.java @@ -114,6 +114,30 @@ public final class AdempierePLAF return getFieldBackground_Normal(); } // getFieldBackground_Inactive + /** + * Return Selected field background color + * @return Color + */ + public static Color getFieldBackground_Selected() + { + Color c = UIManager.getColor(ExtendedTheme.SELECTED_BG_KEY); + if (c == null) + c = ExtendedTheme.DEFAULT_SELECTED_BG; + return ColorBlind.getDichromatColor(c); + } // getFieldBackground_Selected + + /** + * Return ReadOnly field background color + * @return Color + */ + public static Color getFieldBackground_ReadOnly() + { + Color c = UIManager.getColor(ExtendedTheme.READONLY_BG_KEY); + if (c == null) + c = ExtendedTheme.DEFAULT_READONLY_BG; + return ColorBlind.getDichromatColor(c); + } // getFieldBackground_ReadOnly + /** * Return form background color "control". * Windows = lightGray @@ -306,7 +330,7 @@ public final class AdempierePLAF s_vp_adempiereTheme = new ValueNamePair("org.adempiere.plaf.AdempiereTheme", AdempiereThemeInnova.NAME); plasticThemes.add (s_vp_adempiereTheme); - List installedThemes = AdempiereLookAndFeel.getInstalledThemes(); + List installedThemes = AdempiereLookAndFeel.getInstalledThemes(); for(Object t : installedThemes) { MetalTheme theme = (MetalTheme)t; vp = new ValueNamePair(theme.getClass().getName(), theme.getName()); @@ -337,7 +361,7 @@ public final class AdempierePLAF // Install discovered PLAFs for (int i = 0; i < plafList.size(); i++) { - vp = (ValueNamePair)plafList.get(i); + vp = plafList.get(i); UIManager.installLookAndFeel(vp.getName(), vp.getValue()); } @@ -451,7 +475,7 @@ public final class AdempierePLAF log.config(plaf + (theme == null ? "" : (" - " + theme))); // Look & Feel - Class lafClass = null; + Class lafClass = null; try { lafClass = Class.forName(plaf.getValue()); } @@ -484,7 +508,7 @@ public final class AdempierePLAF { try { - Class c = Class.forName(theme.getValue()); + Class c = Class.forName(theme.getValue()); MetalTheme t = (MetalTheme)c.newInstance(); if (compiere) CompiereLookAndFeel.setCurrentTheme(t); @@ -661,7 +685,7 @@ public final class AdempierePLAF String className = args[0]; // find class - Class startClass = null; + Class startClass = null; try { startClass = Class.forName(className); diff --git a/base/src/org/compiere/swing/CTable.java b/base/src/org/compiere/swing/CTable.java index edb5dcbbd1..d33a7d922d 100644 --- a/base/src/org/compiere/swing/CTable.java +++ b/base/src/org/compiere/swing/CTable.java @@ -48,6 +48,7 @@ import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableModel; +import org.adempiere.plaf.AdempierePLAF; import org.compiere.util.MSort; import org.jdesktop.swingx.icon.ColumnControlIcon; @@ -65,7 +66,7 @@ public class CTable extends JTable /** * */ - private static final long serialVersionUID = 772619961990977001L; + private static final long serialVersionUID = 975975420639030844L; /** * Default Constructor @@ -707,6 +708,22 @@ public class CTable extends JTable } } + public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, + int vColIndex) { + Component c = super.prepareRenderer(renderer, rowIndex, vColIndex); + if (!this.isCellEditable(rowIndex, vColIndex)) + return c; + if (rowIndex % 2 == 0 && !isCellSelected(rowIndex, vColIndex)) { + c.setBackground(AdempierePLAF.getFieldBackground_Selected()); + } else { + // If not shaded, match the table's background + c.setBackground(getBackground()); + } + if (isCellSelected(rowIndex, vColIndex)) + c.setBackground(AdempierePLAF.getFieldBackground_ReadOnly()); + return c; + } + class ColumnAttributes { protected TableCellEditor cellEditor; diff --git a/base/src/org/compiere/swing/ExtendedTheme.java b/base/src/org/compiere/swing/ExtendedTheme.java index 694e51a966..f77b18b7ff 100644 --- a/base/src/org/compiere/swing/ExtendedTheme.java +++ b/base/src/org/compiere/swing/ExtendedTheme.java @@ -19,12 +19,16 @@ public interface ExtendedTheme { public final static ColorUIResource DEFAULT_ERROR_FG = new ColorUIResource(204, 0, 0); // dark red public final static ColorUIResource DEFAULT_INACTIVE_BG = new ColorUIResource(234, 234, 234); // light gray public final static ColorUIResource DEFAULT_INFO_BG = new ColorUIResource(253, 237, 207); // light yellow + public final static ColorUIResource DEFAULT_SELECTED_BG = new ColorUIResource(240, 248, 255); // light gray + public final static ColorUIResource DEFAULT_READONLY_BG = new ColorUIResource(255, 245, 238); // light yellow - public void setUIProperties(Map propertyMap); + public void setUIProperties(Map propertyMap); public final static String ERROR_BG_KEY = "TextField.errorBackground"; public final static String ERROR_FG_KEY = "TextField.errorForeground"; public final static String MANDATORY_BG_KEY = "TextField.mandatoryBackground"; public final static String INACTIVE_BG_KEY = "TextField.inactiveBackground"; public final static String INFO_BG_KEY = "Info.background"; + public final static String SELECTED_BG_KEY = "TextField.selectedBackground"; + public final static String READONLY_BG_KEY = "TextField.readonlyBackground"; }