diff --git a/java/src/processing/mode/java/Debugger.java b/java/src/processing/mode/java/Debugger.java index db972c680..ae146f20c 100644 --- a/java/src/processing/mode/java/Debugger.java +++ b/java/src/processing/mode/java/Debugger.java @@ -71,28 +71,25 @@ public class Debugger implements VMEventListener { protected ReferenceType mainClass; /// holds all loaded classes in the debuggee VM - protected Set classes = new HashSet(); + protected Set classes = new HashSet<>(); /// listeners for class load events - protected List classLoadListeners = - new ArrayList(); + protected List classLoadListeners = new ArrayList<>(); /// path to the src folder of the current build protected String srcPath; /// list of current breakpoints - protected List breakpoints = - new ArrayList(); + protected List breakpoints = new ArrayList<>(); /// the step request we are currently in, or null if not in a step protected StepRequest requestedStep; /// maps line number changes at runtime (orig -> changed) - protected Map runtimeLineChanges = - new HashMap(); + protected Map runtimeLineChanges = new HashMap<>(); /// tab filenames which already have been tracked for runtime changes - protected Set runtimeTabsTracked = new HashSet(); + protected Set runtimeTabsTracked = new HashSet<>(); public Debugger(JavaEditor editor) { @@ -520,7 +517,7 @@ public class Debugger implements VMEventListener { * @return the list of breakpoints in the given tab */ synchronized List getBreakpoints(String tabFilename) { - List list = new ArrayList(); + List list = new ArrayList<>(); for (LineBreakpoint bp : breakpoints) { if (bp.lineID().fileName().equals(tabFilename)) { list.add(bp); @@ -661,7 +658,12 @@ public class Debugger implements VMEventListener { // disallow stepping into invisible lines if (!locationIsVisible(se.location())) { // TODO: this leads to stepping, should it run on the EDT? - stepOutIntoViewOrContinue(); + javax.swing.SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + stepOutIntoViewOrContinue(); + } + }); } } @@ -914,7 +916,8 @@ public class Debugger implements VMEventListener { if (!t.isSuspended() || t.frameCount() == 0) { return ""; } - return t.frame(0).thisObject().referenceType().name(); + ObjectReference ref = t.frame(0).thisObject(); + return ref == null ? "" : ref.referenceType().name(); } catch (IncompatibleThreadStateException ex) { log(Level.SEVERE, null, ex); @@ -966,7 +969,7 @@ public class Debugger implements VMEventListener { */ protected List getLocals(ThreadReference t, int depth) { //System.out.println("getting locals"); - List vars = new ArrayList(); + List vars = new ArrayList<>(); try { if (t.frameCount() > 0) { StackFrame sf = t.frame(0); @@ -1008,7 +1011,7 @@ public class Debugger implements VMEventListener { } catch (IncompatibleThreadStateException ex) { log(Level.SEVERE, null, ex); } - return new ArrayList(); + return new ArrayList<>(); } @@ -1023,7 +1026,7 @@ public class Debugger implements VMEventListener { protected List getFields(Value value, int depth, int maxDepth, boolean includeInherited) { // remember: Value <- ObjectReference, ArrayReference - List vars = new ArrayList(); + List vars = new ArrayList<>(); if (depth <= maxDepth) { if (value instanceof ArrayReference) { return getArrayFields((ArrayReference) value); @@ -1065,7 +1068,7 @@ public class Debugger implements VMEventListener { * @return list of array fields */ protected List getArrayFields(ArrayReference array) { - List fields = new ArrayList(); + List fields = new ArrayList<>(); if (array != null) { String arrayType = array.type().name(); if (arrayType.endsWith("[]")) { @@ -1089,7 +1092,7 @@ public class Debugger implements VMEventListener { * @return call stack as list of {@link DefaultMutableTreeNode}s */ protected List getStackTrace(ThreadReference t) { - List stack = new ArrayList(); + List stack = new ArrayList<>(); try { for (StackFrame f : t.frames()) { stack.add(new DefaultMutableTreeNode(locationToString(f.location()))); @@ -1117,13 +1120,13 @@ public class Debugger implements VMEventListener { } else { StackFrame sf = t.frame(0); ObjectReference thisObject = sf.thisObject(); - if (this != null) { + if (thisObject != null) { ReferenceType type = thisObject.referenceType(); System.out.println("fields in this (" + type.name() + "):"); for (Field f : type.visibleFields()) { System.out.println(f.typeName() + " " + f.name() + " = " + thisObject.getValue(f)); } - } else { // TODO [this is not reachable - fry] + } else { System.out.println("can't get this (in native or static method)"); } } diff --git a/java/src/processing/mode/java/JavaEditor.java b/java/src/processing/mode/java/JavaEditor.java index 4314d2c68..0fa66b537 100644 --- a/java/src/processing/mode/java/JavaEditor.java +++ b/java/src/processing/mode/java/JavaEditor.java @@ -1178,11 +1178,11 @@ public class JavaEditor extends Editor { Logger.getLogger(getClass().getName()).log(Level.INFO, "Invoked 'Step Over' menu item"); debugger.stepOver(); - } else if ((modifiers & KeyEvent.SHIFT_DOWN_MASK) != 0) { + } else if ((modifiers & ActionEvent.SHIFT_MASK) != 0) { Logger.getLogger(getClass().getName()).log(Level.INFO, "Invoked 'Step Into' menu item"); debugger.stepInto(); - } else if ((modifiers & KeyEvent.ALT_DOWN_MASK) != 0) { + } else if ((modifiers & ActionEvent.ALT_MASK) != 0) { Logger.getLogger(getClass().getName()).log(Level.INFO, "Invoked 'Step Out' menu item"); debugger.stepOut(); } @@ -1494,7 +1494,7 @@ public class JavaEditor extends Editor { item = Toolkit.newJMenuItemShift(Language.text("menu.debug.step_into"), KeyEvent.VK_J); item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - handleStep(KeyEvent.SHIFT_DOWN_MASK); + handleStep(ActionEvent.SHIFT_MASK); } }); debugMenu.add(item); @@ -1503,7 +1503,7 @@ public class JavaEditor extends Editor { item = Toolkit.newJMenuItemAlt(Language.text("menu.debug.step_out"), KeyEvent.VK_J); item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - handleStep(KeyEvent.ALT_DOWN_MASK); + handleStep(ActionEvent.ALT_MASK); } }); debugMenu.add(item); diff --git a/java/src/processing/mode/java/JavaToolbar.java b/java/src/processing/mode/java/JavaToolbar.java index 6ac83ca88..105b3596d 100644 --- a/java/src/processing/mode/java/JavaToolbar.java +++ b/java/src/processing/mode/java/JavaToolbar.java @@ -79,7 +79,7 @@ public class JavaToolbar extends EditorToolbar { Language.text("menu.debug.step_out")) { @Override public void actionPerformed(ActionEvent e) { - final int mask = KeyEvent.SHIFT_DOWN_MASK | KeyEvent.ALT_DOWN_MASK; + final int mask = ActionEvent.SHIFT_MASK | ActionEvent.ALT_MASK; jeditor.handleStep(e.getModifiers() & mask); } };