fixed NPE in CompletionPanel

This commit is contained in:
Manindra Moharana
2015-04-12 02:12:10 -07:00
parent 8e1f185fe7
commit aa2641af22
3 changed files with 31 additions and 20 deletions

View File

@@ -29,6 +29,8 @@ import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import processing.app.*;
import processing.mode.java.runner.Runner;
import processing.mode.java.tweak.SketchParser;
@@ -46,6 +48,17 @@ public class JavaMode extends Mode {
initLogger();
loadPreferences();
loadIcons();
}
/**
* Needed by code completion panel. See {@link processing.mode.java.pdex.CompletionPanel}
*/
private void loadIcons(){
classIcon = loadIcon("theme/icon_class_obj.png");
methodIcon = loadIcon("theme/icon_methpub_obj.png");
fieldIcon = loadIcon("theme/icon_field_protected_obj.png");
localVarIcon = loadIcon("theme/icon_field_default_obj.png");
}
@@ -316,6 +329,11 @@ public class JavaMode extends Mode {
static public final String prefImportSuggestEnabled = "pdex.importSuggestEnabled";
static volatile public boolean enableTweak = false;
static public ImageIcon classIcon;
static public ImageIcon fieldIcon;
static public ImageIcon methodIcon;
static public ImageIcon localVarIcon;
public void loadPreferences() {

View File

@@ -54,6 +54,7 @@ import processing.app.Base;
import processing.app.Mode;
import processing.app.syntax.JEditTextArea;
import processing.mode.java.JavaEditor;
import processing.mode.java.JavaMode;
/**
@@ -93,9 +94,6 @@ public class CompletionPanel {
public static final int MOUSE_COMPLETION = 10, KEYBOARD_COMPLETION = 20;
ImageIcon classIcon, fieldIcon, methodIcon, localVarIcon;
/**
* Triggers the completion popup
* @param textarea
@@ -129,11 +127,6 @@ public class CompletionPanel {
+ location.y);
//log("Suggestion shown: " + System.currentTimeMillis());
Mode mode = editor.getMode();
classIcon = mode.loadIcon("theme/icon_class_obj.png");
methodIcon = mode.loadIcon("theme/icon_methpub_obj.png");
fieldIcon = mode.loadIcon("theme/icon_field_protected_obj.png");
localVarIcon = mode.loadIcon("theme/icon_field_default_obj.png");
}
private void styleScrollPane() {
@@ -210,7 +203,7 @@ public class CompletionPanel {
int maxHeight = 250;
FontMetrics fm = textarea.getGraphics().getFontMetrics();
float itemHeight = Math.max((fm.getHeight() + (fm.getDescent()) * 0.5f),
classIcon.getIconHeight() * 1.2f);
JavaMode.classIcon.getIconHeight() * 1.2f);
if (horizontalScrollBarVisible)
itemCount++;
@@ -244,7 +237,7 @@ public class CompletionPanel {
int w = Math.min((int) min, maxWidth);
if(w == maxWidth)
horizontalScrollBarVisible = true;
w += classIcon.getIconWidth(); // add icon width too!
w += JavaMode.classIcon.getIconWidth(); // add icon width too!
w += fm.stringWidth(" "); // a bit of offset
//log("popup width " + w);
return w; // popup menu width
@@ -556,19 +549,19 @@ public class CompletionPanel {
CompletionCandidate cc = (CompletionCandidate) value;
switch (cc.getType()) {
case CompletionCandidate.LOCAL_VAR:
label.setIcon(localVarIcon);
label.setIcon(JavaMode.localVarIcon);
break;
case CompletionCandidate.LOCAL_FIELD:
case CompletionCandidate.PREDEF_FIELD:
label.setIcon(fieldIcon);
label.setIcon(JavaMode.fieldIcon);
break;
case CompletionCandidate.LOCAL_METHOD:
case CompletionCandidate.PREDEF_METHOD:
label.setIcon(methodIcon);
label.setIcon(JavaMode.methodIcon);
break;
case CompletionCandidate.LOCAL_CLASS:
case CompletionCandidate.PREDEF_CLASS:
label.setIcon(classIcon);
label.setIcon(JavaMode.classIcon);
break;
default:

View File

@@ -87,12 +87,12 @@ public class ErrorMessageSimplifier {
return null;
IProblem iprob = problem.getIProblem();
String args[] = iprob.getArguments();
Base.log("Simplifying message: " + problem.getMessage() + " ID: "
+ getIDName(iprob.getID()));
Base.log("Arg count: " + args.length);
for (int i = 0; i < args.length; i++) {
Base.log("Arg " + args[i]);
}
// Base.log("Simplifying message: " + problem.getMessage() + " ID: "
// + getIDName(iprob.getID()));
// Base.log("Arg count: " + args.length);
// for (int i = 0; i < args.length; i++) {
// Base.log("Arg " + args[i]);
// }
String result = null;