1 19 package org.netbeans.modules.retouche.editor.semantic; 20 21 import java.awt.Color ; 22 import java.awt.Font ; 23 import java.util.Collection ; 24 import java.util.EnumSet ; 25 import java.util.HashMap ; 26 import java.util.Map ; 27 import org.netbeans.api.gsf.ColoringAttributes; 28 import org.netbeans.editor.Coloring; 29 import org.netbeans.editor.SettingsDefaults; 30 31 40 public final class ColoringManager { 41 42 private static Map <ColoringAttributes, Coloring> type2Coloring; 43 44 private static final Font ITALIC = SettingsDefaults.defaultFont.deriveFont(Font.ITALIC); 45 private static final Font BOLD = SettingsDefaults.defaultFont.deriveFont(Font.BOLD); 46 48 static { 49 type2Coloring = new HashMap <ColoringAttributes, Coloring>(); 50 51 type2Coloring.put(ColoringAttributes.UNUSED, new Coloring(null, 0, Color.GRAY, null)); 52 type2Coloring.put(ColoringAttributes.ABSTRACT, new Coloring(null, 0, null, null)); 53 type2Coloring.put(ColoringAttributes.FIELD, new Coloring(BOLD, Coloring.FONT_MODE_APPLY_STYLE, new Color (9, 134, 24), null)); 54 type2Coloring.put(ColoringAttributes.LOCAL_VARIABLE, new Coloring(null, 0, null, null)); 55 type2Coloring.put(ColoringAttributes.PARAMETER, new Coloring(null, Coloring.FONT_MODE_APPLY_STYLE, new Color (160, 96, 1), null)); 56 type2Coloring.put(ColoringAttributes.METHOD, new Coloring(BOLD, Coloring.FONT_MODE_APPLY_STYLE, null, null)); 57 type2Coloring.put(ColoringAttributes.CONSTRUCTOR, new Coloring(BOLD, Coloring.FONT_MODE_APPLY_STYLE, null, null)); 58 type2Coloring.put(ColoringAttributes.CLASS, new Coloring(null, 0, null, null)); 59 type2Coloring.put(ColoringAttributes.DEPRECATED, new Coloring(null, 0, null, null, null, new Color (64, 64, 64))); 60 type2Coloring.put(ColoringAttributes.STATIC, new Coloring(ITALIC, Coloring.FONT_MODE_APPLY_STYLE, null, null)); 61 62 type2Coloring.put(ColoringAttributes.PRIVATE, new Coloring(null, 0, null, null)); 63 type2Coloring.put(ColoringAttributes.PACKAGE_PRIVATE, new Coloring(null, 0, null, null)); 64 type2Coloring.put(ColoringAttributes.PROTECTED, new Coloring(null, 0, null, null)); 65 type2Coloring.put(ColoringAttributes.PUBLIC, new Coloring(null, 0, null, null)); 66 67 type2Coloring.put(ColoringAttributes.TYPE_PARAMETER_DECLARATION, new Coloring(null, 0, null, Color.LIGHT_GRAY)); 68 type2Coloring.put(ColoringAttributes.TYPE_PARAMETER_USE, new Coloring(null, 0, null, Color.GREEN)); 69 70 type2Coloring.put(ColoringAttributes.UNDEFINED, new Coloring(null, 0, Color.RED, null)); 71 72 type2Coloring.put(ColoringAttributes.MARK_OCCURRENCES, new Coloring(null, 0, null, new Color ( 236, 235, 163 ))); 73 } 74 75 public static Coloring getColoring(Collection <ColoringAttributes> colorings) { 76 colorings = EnumSet.copyOf(colorings); 77 if (colorings.contains(ColoringAttributes.UNUSED)) { 79 colorings.removeAll(EnumSet.of(ColoringAttributes.ABSTRACT, ColoringAttributes.FIELD, ColoringAttributes.LOCAL_VARIABLE, ColoringAttributes.PARAMETER, ColoringAttributes.CLASS, ColoringAttributes.PRIVATE, ColoringAttributes.PACKAGE_PRIVATE, ColoringAttributes.PROTECTED, ColoringAttributes.PUBLIC, ColoringAttributes.UNDEFINED)); 80 } 81 82 if (colorings.contains(ColoringAttributes.UNDEFINED)) { 83 colorings.removeAll(EnumSet.of(ColoringAttributes.ABSTRACT, ColoringAttributes.FIELD, ColoringAttributes.LOCAL_VARIABLE, ColoringAttributes.PARAMETER, ColoringAttributes.CLASS, ColoringAttributes.PRIVATE, ColoringAttributes.PACKAGE_PRIVATE, ColoringAttributes.PROTECTED, ColoringAttributes.PUBLIC)); 84 } 85 86 Coloring c = new Coloring(null, 0, null, null); 87 88 for (ColoringAttributes type : ColoringAttributes.values()) { 89 if (colorings.contains(type)) { 91 Coloring remote = type2Coloring.get(type); 93 Coloring nue = remote.apply(c); 94 98 Font myFont = c.getFont(); 99 Font remoteFont = remote.getFont(); 100 Font nueFont = null; 101 102 if (myFont == null) { 103 nueFont = remoteFont; 104 } else { 105 if (remoteFont == null) { 106 nueFont = myFont; 107 } else { 108 int style = myFont.getStyle() | remoteFont.getStyle(); 109 110 nueFont = myFont.deriveFont(style); 111 } 112 } 113 114 c = new Coloring(nueFont, Coloring.FONT_MODE_APPLY_STYLE, nue.getForeColor(), nue.getBackColor(), nue.getUnderlineColor(), nue.getStrikeThroughColor(), nue.getWaveUnderlineColor()); 115 116 } 118 } 119 120 return c; 122 } 123 124 } 125 | Popular Tags |