diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties index 4b4b73d..b10ea6f 100644 --- a/nbproject/genfiles.properties +++ b/nbproject/genfiles.properties @@ -1,8 +1,8 @@ -build.xml.data.CRC32=22fb9f16 +build.xml.data.CRC32=45912724 build.xml.script.CRC32=1097797e build.xml.stylesheet.CRC32=a56c6a5b@2.67.1 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=22fb9f16 +nbproject/build-impl.xml.data.CRC32=45912724 nbproject/build-impl.xml.script.CRC32=e0c60086 nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.67.1 diff --git a/nbproject/project.xml b/nbproject/project.xml index 154e67c..1b9e74d 100644 --- a/nbproject/project.xml +++ b/nbproject/project.xml @@ -31,6 +31,14 @@ 1.51.1 + + org.openide.actions + + + + 6.35.1 + + org.openide.awt diff --git a/src/org/idp/laf/Color.java b/src/org/idp/laf/Color.java index 8de7f24..a420874 100644 --- a/src/org/idp/laf/Color.java +++ b/src/org/idp/laf/Color.java @@ -18,16 +18,24 @@ public class Color implements Serializable{ public void printJava() { - String res = "color_map.add(new Color(\""; + String res = "color_map.add("; + res += this.getString(); + res += ");"; + System.out.println(res); + } + + public String getString() { + + String res = "new org.idp.laf.Color(\""; res += this.pname + "\", "; if (this.cls ==SF) { - res += "Color.ColorClass.SF, "; + res += "org.idp.laf.Color.ColorClass.SF, "; } else { - res += "Color.ColorClass.AT, "; + res += "org.idp.laf.Color.ColorClass.AT, "; } res += R + ", "; @@ -36,9 +44,10 @@ public class Color implements Serializable{ res += A + ", "; res += "\"" +this.description + "\""; - res += "));"; - System.out.println(res); + res += ")"; + return res; } + public enum ColorClass { diff --git a/src/org/idp/laf/ColorTheme.java b/src/org/idp/laf/ColorTheme.java index de400f2..50d4563 100644 --- a/src/org/idp/laf/ColorTheme.java +++ b/src/org/idp/laf/ColorTheme.java @@ -14,6 +14,8 @@ import java.util.HashMap; */ public class ColorTheme { +// EDITOR THEME + // private static final AttributeSetConfigured [] annotations = { new AttributeSetConfigured ("Multiple Enabled and Disabled Breakpoints", new Color (255, 0, 255, 255), null, null, true, true, false, null, new Color (255, 0, 255, 255), null, null, null), @@ -344,6 +346,32 @@ private static final AttributeSetConfigured [] lang_All_Languages = { }; // +// VERSIONONING THEME + +// +public static final org.idp.laf.Color[] GIT = { + new org.idp.laf.Color("Modified In Working Tree", org.idp.laf.Color.ColorClass.AT, 62, 176, 176, 255, ""), + new org.idp.laf.Color("Conflict", org.idp.laf.Color.ColorClass.AT, 230, 31, 91, 255, ""), + new org.idp.laf.Color("Removed In Working Tree", org.idp.laf.Color.ColorClass.AT, 255, 135, 35, 255, ""), + new org.idp.laf.Color("Added In Working Tree", org.idp.laf.Color.ColorClass.AT, 121, 229, 31, 255, ""), + new org.idp.laf.Color("Added To Index", org.idp.laf.Color.ColorClass.AT, 150, 233, 82, 255, ""), + new org.idp.laf.Color("Additional Text Annotation", org.idp.laf.Color.ColorClass.AT, 166, 165, 165, 255, ""), + new org.idp.laf.Color("Ignored", org.idp.laf.Color.ColorClass.AT, 134, 134, 134, 255, ""), +}; +// + +// +public static final org.idp.laf.Color[] SVN = { +}; +// + +// +public static final org.idp.laf.Color[] HG = { +}; +// + + + public static final HashMap > color_map; static diff --git a/src/org/idp/laf/Defaults.java b/src/org/idp/laf/Defaults.java index 6419025..e01d195 100644 --- a/src/org/idp/laf/Defaults.java +++ b/src/org/idp/laf/Defaults.java @@ -378,6 +378,16 @@ public class Defaults { color_map.add(new Color("nb.diff.sidebar.changed.color", Color.ColorClass.SF, 38, 29, 2, 255, "...")); color_map.add(new Color("nb.diff.sidebar.deleted.color", Color.ColorClass.SF, 171, 66, 200, 255, "...")); color_map.add(new Color("nb.versioning.tooltip.background.color", Color.ColorClass.SF, 0, 0, 255, 255, "...")); + +// "nb.versioning.added.color" +// "nb.versioning.modified.color" +// "nb.versioning.deleted.color" +// "nb.versioning.conflicted.color" +// "nb.versioning.ignored.color" +// "nb.versioning.textannotation.color" + + + color_map.add(new Color("nb.formdesigner.gap.fixed.color", Color.ColorClass.SF, 142, 200, 230, 255, "...")); color_map.add(new Color("nb.formdesigner.gap.resizing.color", Color.ColorClass.SF, 26, 72, 208, 255, "...")); color_map.add(new Color("nb.formdesigner.gap.min.color", Color.ColorClass.SF, 134, 54, 215, 255, "...")); diff --git a/src/org/idp/laf/TitanEditor.java b/src/org/idp/laf/TitanEditor.java index 3429932..be53ba7 100644 --- a/src/org/idp/laf/TitanEditor.java +++ b/src/org/idp/laf/TitanEditor.java @@ -8,10 +8,15 @@ package org.idp.laf; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.AbstractMap; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; +import java.util.Map; import java.util.Set; +import java.util.prefs.BackingStoreException; +import java.util.prefs.Preferences; import javax.swing.text.AttributeSet; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; @@ -28,12 +33,17 @@ public class TitanEditor { private static final String EDITOR_SETTINGS_CLASS_NAME = "org.netbeans.api.editor.settings.EditorStyleConstants"; //NOI18N private static final String ANNOTATION_TYPE_CLASS_NAME = "org.netbeans.editor.AnnotationType"; //NOI18N + private static final String PROVIDER_CLASS_NAME = "org.netbeans.modules.versioning.util.OptionsPanelColorProvider"; //NOI18N + 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 boolean no_load = false; private static Class COLOR_MODEL; private static Class EDITOR_SETTINGS; private static Class ANNOTATION_TYPE; - + private static Field DisplayName; private static Field WaveUnderlineColor; @@ -71,16 +81,33 @@ public class TitanEditor { private static final String DEFAULT_THEME_NAME = "NetBeans"; //NOI18N private static final String TITAN_THEME_NAME = "[idP!] Titan"; //NOI18N + + private static Class provider_GIT = null; + private static Class provider_SVN = null; + private static Class provider_HG = null; + private static Class provider_CLASS = null; + + + private static Method provider_getInstance; + private static Method provider_getColors; + private static Method provider_colorsChanged; + + private static ClassLoader working_classLoader = null; + + + + private static boolean pre_load () { - ClassLoader cl = Lookup.getDefault().lookup( ClassLoader.class ); - if( null != cl ) + working_classLoader = Lookup.getDefault().lookup( ClassLoader.class ); + if( null != working_classLoader ) { try { - COLOR_MODEL = cl.loadClass( COLOR_MODEL_CLASS_NAME ); - EDITOR_SETTINGS = cl.loadClass(EDITOR_SETTINGS_CLASS_NAME); - ANNOTATION_TYPE = cl.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 @@ -88,10 +115,7 @@ public class TitanEditor { 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 - - - //public java.net.URL getGlyph() - + 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 @@ -100,15 +124,10 @@ public class TitanEditor { 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 - - + 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 @@ -122,6 +141,35 @@ public class TitanEditor { const_DisplayName = DisplayName.get(EDITOR_SETTINGS); const_WaveUnderlineColor = WaveUnderlineColor.get(EDITOR_SETTINGS); colorModel = COLOR_MODEL.newInstance(); + + 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); + } + + try { + provider_SVN = working_classLoader.loadClass(PROVIDER_SVN_CLASS_NAME); + } catch (ClassNotFoundException ex) { + //Exceptions.printStackTrace(ex); + } + + try { + provider_GIT = working_classLoader.loadClass(PROVIDER_GIT_CLASS_NAME); + } catch (ClassNotFoundException ex) { + //Exceptions.printStackTrace(ex); + } + + 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); @@ -166,6 +214,103 @@ public class TitanEditor { //} } + private static void extractColorsForModule (String name, Class provider) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException + { + ; + String res = "// " + + "\npublic static final org.idp.laf.Color[] " + name + " = {\n"; + if (provider != null) + { + ArrayList colors_list = new ArrayList(); + + try { + provider_getInstance = provider.getDeclaredMethod( "getInstance", new Class[0] ); //NOI18N + + Object provider_obj = provider_getInstance.invoke(null, new Object[0]); + + Map colors = (Map) provider_getColors.invoke(provider_obj, new Object[0]); + + + + for (String str : colors.keySet()) + { + + java.awt.Color[] val_arr = colors.get(str); + java.awt.Color cc = val_arr[0]; + //System.out.println("val_arr L = " + val_arr.length); + + res += " " + (new Color(str, Color.ColorClass.AT, + cc.getRed(), + cc.getGreen(), + cc.getBlue(), + cc.getAlpha(), "")).getString() + ",\n"; + + +// colors_list.add); + } + } catch (NoSuchMethodException ex) { + Exceptions.printStackTrace(ex); + } catch (SecurityException ex) { + Exceptions.printStackTrace(ex); + } + + for (org.idp.laf.Color cc : colors_list) + { + res += cc.getString() + ",\n"; + } + + } + res += "};\n"; + res += "// \n"; + + + System.out.println(res); + } + + private static void applyColorForModule (Class provider, org.idp.laf.Color[] colors_theme) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException + { + if (provider != null) + { + try + { + provider_getInstance = provider.getDeclaredMethod( "getInstance", new Class[0] ); //NOI18N + + Object provider_obj = provider_getInstance.invoke(null, new Object[0]); + + Map colors = (Map) provider_getColors.invoke(provider_obj, new Object[0]); + + Map new_colours = new HashMap(); + boolean found_new = false; + for (String str : colors.keySet()) + { + found_new = false; + for (org.idp.laf.Color cc : colors_theme) + { + if (cc.getName().equals(str)) + { + java.awt.Color toSet = (java.awt.Color) cc.getObject(); + new_colours.put(str, toSet); + found_new = true; + break; + } + } + if (!found_new) + { + new_colours.put(str, colors.get(str)[0]); + } + } + + provider_colorsChanged.invoke(provider_obj, new_colours); + + } catch (NoSuchMethodException ex) { + Exceptions.printStackTrace(ex); + } catch (SecurityException ex) { + Exceptions.printStackTrace(ex); + } + + } + } + public static void load_editor () { if (!pre_load()) return; @@ -196,6 +341,14 @@ public class TitanEditor { process_set (str, category, false); } } + + extractColorsForModule ("GIT", provider_GIT); + extractColorsForModule ("SVN", provider_SVN); + extractColorsForModule ("HG", provider_HG); + + + + } else { @@ -223,7 +376,11 @@ public class TitanEditor { } } - + + applyColorForModule (provider_GIT, ColorTheme.GIT); + applyColorForModule (provider_SVN, ColorTheme.SVN); + applyColorForModule (provider_HG, ColorTheme.HG); + } } catch (IllegalAccessException ex) { Exceptions.printStackTrace(ex);