diff --git a/src/org/idp/laf/ColorTheme.java b/src/org/idp/laf/ColorTheme.java index 50d4563..60454bc 100644 --- a/src/org/idp/laf/ColorTheme.java +++ b/src/org/idp/laf/ColorTheme.java @@ -370,6 +370,18 @@ public static final org.idp.laf.Color[] HG = { }; // +// +public static final org.idp.laf.Color[] DIFF = { + new org.idp.laf.Color("addedColor", org.idp.laf.Color.ColorClass.AT, 48, 94, 9, 255, ""), + new org.idp.laf.Color("changedColor", org.idp.laf.Color.ColorClass.AT, 6, 63, 63, 255, ""), + new org.idp.laf.Color("deletedColor", org.idp.laf.Color.ColorClass.AT, 94, 9, 35, 255, ""), + new org.idp.laf.Color("merge.appliedColor", org.idp.laf.Color.ColorClass.AT, 30, 93, 93, 255, ""), + new org.idp.laf.Color("merge.notappliedColor", org.idp.laf.Color.ColorClass.AT, 138, 45, 73, 255, ""), + new org.idp.laf.Color("merge.unresolvedColor", org.idp.laf.Color.ColorClass.AT, 155, 98, 50, 255, ""), + new org.idp.laf.Color("sidebar.changedColor", org.idp.laf.Color.ColorClass.AT, 155, 98, 50, 255, ""), + new org.idp.laf.Color("sidebar.deletedColor", org.idp.laf.Color.ColorClass.AT, 87, 138, 45, 255, "") +}; +// public static final HashMap > color_map; diff --git a/src/org/idp/laf/TitanEditor.java b/src/org/idp/laf/TitanEditor.java index be53ba7..746f80e 100644 --- a/src/org/idp/laf/TitanEditor.java +++ b/src/org/idp/laf/TitanEditor.java @@ -17,6 +17,7 @@ import java.util.Map; import java.util.Set; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; +import javax.swing.UIManager; import javax.swing.text.AttributeSet; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; @@ -37,6 +38,7 @@ public class TitanEditor { private static final String PROVIDER_GIT_CLASS_NAME = "org.netbeans.modules.git.options.AnnotationColorProvider"; //NOI18N private static final String PROVIDER_SVN_CLASS_NAME = "org.netbeans.modules.subversion.options.AnnotationColorProvider"; //NOI18N private static final String PROVIDER_HG_CLASS_NAME = "org.netbeans.modules.mercurial.options.AnnotationColorProvider"; //NOI18N + private static final String PROVIDER_DIFF_CLASS_NAME = "org.netbeans.modules.diff.DiffModuleConfig"; //NOI18N private static final boolean no_load = false; @@ -86,16 +88,101 @@ public class TitanEditor { private static Class provider_SVN = null; private static Class provider_HG = null; private static Class provider_CLASS = null; + private static Class provider_DIFF = null; private static Method provider_getInstance; private static Method provider_getColors; private static Method provider_colorsChanged; - private static ClassLoader working_classLoader = null; - + private static Method provider_getDefault; + private static Method provider_getPreferences; + private static ClassLoader working_classLoader = null; + + private static void extractDiffModule () throws IllegalAccessException + { + HashMap linkMap = new HashMap(); + + java.awt.Color nb_diff_added_color = (java.awt.Color) UIManager.get ("nb.diff.added.color"); + java.awt.Color nb_diff_changed_color = (java.awt.Color) UIManager.get ("nb.diff.changed.color"); + java.awt.Color nb_diff_deleted_color = (java.awt.Color) UIManager.get ("nb.diff.deleted.color"); + java.awt.Color nb_diff_applied_color = (java.awt.Color) UIManager.get ("nb.diff.applied.color"); + java.awt.Color nb_diff_notapplied_color = (java.awt.Color) UIManager.get ("nb.diff.notapplied.color"); + java.awt.Color nb_diff_unresolved_color = (java.awt.Color) UIManager.get ("nb.diff.unresolved.color"); + java.awt.Color nb_diff_sidebar_deleted_color = (java.awt.Color) UIManager.get ("nb.diff.sidebar.deleted.color"); + java.awt.Color nb_diff_sidebar_changed_color = (java.awt.Color) UIManager.get ("nb.diff.sidebar.changed.color"); + + String[] keys = + { + "addedColor", + "changedColor", + "deletedColor", + "merge.appliedColor", + "merge.notappliedColor", + "merge.unresolvedColor", + "sidebar.changedColor", + "sidebar.deletedColor" + }; + + linkMap.put("addedColor" , nb_diff_added_color.getRGB()); + linkMap.put("changedColor" , nb_diff_changed_color.getRGB()); + linkMap.put("deletedColor" , nb_diff_deleted_color.getRGB()); + linkMap.put("merge.appliedColor" , nb_diff_applied_color.getRGB()); + linkMap.put("merge.notappliedColor" , nb_diff_notapplied_color.getRGB()); + linkMap.put("merge.unresolvedColor" , nb_diff_unresolved_color.getRGB()); + linkMap.put("sidebar.changedColor" , nb_diff_sidebar_deleted_color.getRGB()); + linkMap.put("sidebar.deletedColor" , nb_diff_sidebar_changed_color.getRGB()); + + String res = "// " + + "\npublic static final org.idp.laf.Color[] DIFF = {\n"; + + if (provider_DIFF != null) + { + try + { + Object defaults = provider_getDefault.invoke(null, new Object[0]); + Preferences preferences = (Preferences) provider_getPreferences.invoke(defaults, new Object[0]); + for (int i = 0; i < keys.length; i ++) + { + java.awt.Color c = new java.awt.Color(preferences.getInt(keys[i], linkMap.get(keys[i]))); + + res += " " + (new Color(keys[i], Color.ColorClass.AT, + c.getRed(), + c.getGreen(), + c.getBlue(), + c.getAlpha(), "")).getString(); + + if (i != keys.length - 1) + { + res += ", \n"; + } + else + { + res += "\n"; + } + } + } catch (InvocationTargetException ex) { + Exceptions.printStackTrace(ex); + } + } + + res += "};\n"; + res += "// \n"; + System.out.println(res); + } + + private static void applyColorForDiffModule () throws IllegalAccessException, IllegalArgumentException, InvocationTargetException + { + Object defaults = provider_getDefault.invoke(null, new Object[0]); + Preferences preferences = (Preferences) provider_getPreferences.invoke(defaults, new Object[0]); + + for (org.idp.laf.Color cc : ColorTheme.DIFF) + { + preferences.putInt(cc.getPname(), ((java.awt.Color)cc.getObject()).getRGB()); + } + } private static boolean pre_load () @@ -105,71 +192,72 @@ public class TitanEditor { { try { - COLOR_MODEL = working_classLoader.loadClass( COLOR_MODEL_CLASS_NAME ); - EDITOR_SETTINGS = working_classLoader.loadClass(EDITOR_SETTINGS_CLASS_NAME); - ANNOTATION_TYPE = working_classLoader.loadClass(ANNOTATION_TYPE_CLASS_NAME); + COLOR_MODEL = working_classLoader.loadClass( COLOR_MODEL_CLASS_NAME ); + EDITOR_SETTINGS = working_classLoader.loadClass(EDITOR_SETTINGS_CLASS_NAME); + ANNOTATION_TYPE = working_classLoader.loadClass(ANNOTATION_TYPE_CLASS_NAME); - DisplayName = EDITOR_SETTINGS.getField("DisplayName"); //NOI18N - WaveUnderlineColor = EDITOR_SETTINGS.getField("WaveUnderlineColor"); //NOI18N + DisplayName = EDITOR_SETTINGS.getField("DisplayName"); //NOI18N + WaveUnderlineColor = EDITOR_SETTINGS.getField("WaveUnderlineColor"); //NOI18N - getProfiles = COLOR_MODEL.getDeclaredMethod( "getProfiles", new Class[0] ); //NOI18N - getCurrentProfile = COLOR_MODEL.getDeclaredMethod( "getCurrentProfile", new Class[0] ); //NOI18N - setCurrentProfile = COLOR_MODEL.getDeclaredMethod( "setCurrentProfile", String.class ); //NOI18N + getProfiles = COLOR_MODEL.getDeclaredMethod( "getProfiles", new Class[0] ); //NOI18N + getCurrentProfile = COLOR_MODEL.getDeclaredMethod( "getCurrentProfile", new Class[0] ); //NOI18N + setCurrentProfile = COLOR_MODEL.getDeclaredMethod( "setCurrentProfile", String.class ); //NOI18N - getHighlight = ANNOTATION_TYPE.getDeclaredMethod( "getHighlight", new Class[0] ); //NOI18N - getForegroundColor = ANNOTATION_TYPE.getDeclaredMethod( "getForegroundColor", new Class[0] ); //NOI18N - getWaveUnderlineColor = ANNOTATION_TYPE.getDeclaredMethod( "getWaveUnderlineColor", new Class[0] ); //NOI18N + getHighlight = ANNOTATION_TYPE.getDeclaredMethod( "getHighlight", new Class[0] ); //NOI18N + getForegroundColor = ANNOTATION_TYPE.getDeclaredMethod( "getForegroundColor", new Class[0] ); //NOI18N + getWaveUnderlineColor = ANNOTATION_TYPE.getDeclaredMethod( "getWaveUnderlineColor", new Class[0] ); //NOI18N - setHighlight = ANNOTATION_TYPE.getDeclaredMethod( "setHighlight", java.awt.Color.class ); //NOI18N - setForegroundColor = ANNOTATION_TYPE.getDeclaredMethod( "setForegroundColor", java.awt.Color.class ); //NOI18N - setWaveUnderlineColor = ANNOTATION_TYPE.getDeclaredMethod( "setWaveUnderlineColor", java.awt.Color.class ); //NOI18N + setHighlight = ANNOTATION_TYPE.getDeclaredMethod( "setHighlight", java.awt.Color.class ); //NOI18N + setForegroundColor = ANNOTATION_TYPE.getDeclaredMethod( "setForegroundColor", java.awt.Color.class ); //NOI18N + setWaveUnderlineColor = ANNOTATION_TYPE.getDeclaredMethod( "setWaveUnderlineColor", java.awt.Color.class ); //NOI18N - isUseHighlightColor = ANNOTATION_TYPE.getDeclaredMethod( "isUseHighlightColor", new Class[0] ); //NOI18N - isInheritForegroundColor = ANNOTATION_TYPE.getDeclaredMethod( "isInheritForegroundColor", new Class[0] ); //NOI18N - isUseWaveUnderlineColor = ANNOTATION_TYPE.getDeclaredMethod( "isUseWaveUnderlineColor", new Class[0] ); //NOI18N + isUseHighlightColor = ANNOTATION_TYPE.getDeclaredMethod( "isUseHighlightColor", new Class[0] ); //NOI18N + isInheritForegroundColor = ANNOTATION_TYPE.getDeclaredMethod( "isInheritForegroundColor", new Class[0] ); //NOI18N + isUseWaveUnderlineColor = ANNOTATION_TYPE.getDeclaredMethod( "isUseWaveUnderlineColor", new Class[0] ); //NOI18N - getAnnotations = COLOR_MODEL.getDeclaredMethod( "getAnnotations", String.class ); //NOI18N - getHighlightings = COLOR_MODEL.getDeclaredMethod( "getHighlightings", String.class ); //NOI18N - getCategories = COLOR_MODEL.getDeclaredMethod( "getCategories",String.class, String.class ); //NOI18N + getAnnotations = COLOR_MODEL.getDeclaredMethod( "getAnnotations", String.class ); //NOI18N + getHighlightings = COLOR_MODEL.getDeclaredMethod( "getHighlightings", String.class ); //NOI18N + getCategories = COLOR_MODEL.getDeclaredMethod( "getCategories",String.class, String.class ); //NOI18N - setAnnotations = COLOR_MODEL.getDeclaredMethod( "setAnnotations", String.class, Collection.class ); //NOI18N - setHighlightings = COLOR_MODEL.getDeclaredMethod( "setHighlightings", String.class, Collection.class ); //NOI18N - setCategories = COLOR_MODEL.getDeclaredMethod( "setCategories",String.class, String.class, Collection.class ); //NOI18N + setAnnotations = COLOR_MODEL.getDeclaredMethod( "setAnnotations", String.class, Collection.class ); //NOI18N + setHighlightings = COLOR_MODEL.getDeclaredMethod( "setHighlightings", String.class, Collection.class ); //NOI18N + setCategories = COLOR_MODEL.getDeclaredMethod( "setCategories",String.class, String.class, Collection.class ); //NOI18N - getLanguages = COLOR_MODEL.getDeclaredMethod( "getLanguages", new Class[0] ); //NOI18N + getLanguages = COLOR_MODEL.getDeclaredMethod( "getLanguages", new Class[0] ); //NOI18N - const_DisplayName = DisplayName.get(EDITOR_SETTINGS); - const_WaveUnderlineColor = WaveUnderlineColor.get(EDITOR_SETTINGS); - colorModel = COLOR_MODEL.newInstance(); + const_DisplayName = DisplayName.get(EDITOR_SETTINGS); + const_WaveUnderlineColor = WaveUnderlineColor.get(EDITOR_SETTINGS); + colorModel = COLOR_MODEL.newInstance(); + + provider_CLASS = working_classLoader.loadClass(PROVIDER_CLASS_NAME); + provider_DIFF = working_classLoader.loadClass(PROVIDER_DIFF_CLASS_NAME); + + if (provider_DIFF != null) + { + provider_getDefault = provider_DIFF.getDeclaredMethod( "getDefault", new Class[0] ); //NOI18N + provider_getPreferences = provider_DIFF.getDeclaredMethod( "getPreferences", new Class[0] ); //NOI18N + } - provider_CLASS = working_classLoader.loadClass(PROVIDER_CLASS_NAME); - if (provider_CLASS != null) { try { provider_HG = working_classLoader.loadClass(PROVIDER_HG_CLASS_NAME); - } catch (ClassNotFoundException ex) { - //Exceptions.printStackTrace(ex); - } + } catch (ClassNotFoundException ex) {} try { provider_SVN = working_classLoader.loadClass(PROVIDER_SVN_CLASS_NAME); - } catch (ClassNotFoundException ex) { - //Exceptions.printStackTrace(ex); - } + } catch (ClassNotFoundException ex) {} try { provider_GIT = working_classLoader.loadClass(PROVIDER_GIT_CLASS_NAME); - } catch (ClassNotFoundException ex) { - //Exceptions.printStackTrace(ex); - } + } catch (ClassNotFoundException ex) {} - provider_getColors = provider_CLASS.getDeclaredMethod( "getColors", new Class[0] ); //NOI18N - provider_colorsChanged = provider_CLASS.getDeclaredMethod( "colorsChanged", Map.class ); //NOI18N + provider_getColors = provider_CLASS.getDeclaredMethod( "getColors", new Class[0] ); //NOI18N + provider_colorsChanged = provider_CLASS.getDeclaredMethod( "colorsChanged", Map.class ); //NOI18N } - + return true; } catch (ClassNotFoundException ex) { Exceptions.printStackTrace(ex); @@ -347,7 +435,7 @@ public class TitanEditor { extractColorsForModule ("HG", provider_HG); - + extractDiffModule(); } else @@ -381,6 +469,9 @@ public class TitanEditor { applyColorForModule (provider_SVN, ColorTheme.SVN); applyColorForModule (provider_HG, ColorTheme.HG); + applyColorForDiffModule (); + + } } catch (IllegalAccessException ex) { Exceptions.printStackTrace(ex);