package ro.emilianbold; import com.sun.btrace.annotations.*; import java.awt.AWTEvent; import java.awt.event.InvocationEvent; import java.lang.reflect.Field; import static com.sun.btrace.BTraceUtils.*; @BTrace public class JScrollBarBTrace { static boolean created = false; @OnMethod(clazz="org.netbeans.modules.progress.ui.StatusLineComponent", method="createBar") public static void createBar(@Self Object o){ println("createBar"); printFields(o); } @OnMethod(method="discardBar", clazz="org.netbeans.modules.progress.ui.StatusLineComponent") public static void discardBar(@Self Object o){ println("discardBar"); printFields(o); // Object v = get(field("org.netbeans.modules.progress.ui.StatusLineComponent","bar"),o); // println(strcat("Discard bar", str(v))); } @OnMethod(clazz="org.netbeans.modules.progress.ui.NbProgressBar", method="") public static void instantiate(@Self Object o ){ created = true; println(strcat("Instantiated org.netbeans.modules.progress.ui.NbProgressBar: ",str(o))); jstack(); println("----"); } @OnMethod(clazz="org.netbeans.core.TimableEventQueue", method="postEvent") public static void event(AWTEvent theEvent){ if(theEvent instanceof InvocationEvent){ // println(str(theEvent)); } // if(theEvent.getSource()) } @OnMethod(clazz="apple.laf.CUIAquaProgressBar$Animator", method="actionPerformed") public static void lnfaction(@Self Object animator){ if(!created){ return; } println( strcat(strcat(str(timeNanos()), " : animator called "),str(animator))); // printFields(animator); Field f = field("apple.laf.CUIAquaProgressBar$Animator", "this$0"); /*apple.laf.CUIAquaProgressBar*/ Object pbar = get(f,animator); println(pbar); // printFields(pbar); Field f2 = field("apple.laf.CUIAquaProgressBar", "progressBar"); /*org.netbeans.modules.progress.ui.NbProgressBar*/ Object swingbar = get(f2, pbar); println(swingbar); } }