Skip to content

Commit c28ef4f

Browse files
committed
fixed NPE in CompletionPanel
1 parent 5d17214 commit c28ef4f

File tree

3 files changed

+31
-20
lines changed

3 files changed

+31
-20
lines changed

java/src/processing/mode/java/JavaMode.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import java.util.logging.Level;
3030
import java.util.logging.Logger;
3131

32+
import javax.swing.ImageIcon;
33+
3234
import processing.app.*;
3335
import processing.mode.java.runner.Runner;
3436
import processing.mode.java.tweak.SketchParser;
@@ -46,6 +48,17 @@ public JavaMode(Base base, File folder) {
4648

4749
initLogger();
4850
loadPreferences();
51+
loadIcons();
52+
}
53+
54+
/**
55+
* Needed by code completion panel. See {@link processing.mode.java.pdex.CompletionPanel}
56+
*/
57+
private void loadIcons(){
58+
classIcon = loadIcon("theme/icon_class_obj.png");
59+
methodIcon = loadIcon("theme/icon_methpub_obj.png");
60+
fieldIcon = loadIcon("theme/icon_field_protected_obj.png");
61+
localVarIcon = loadIcon("theme/icon_field_default_obj.png");
4962
}
5063

5164

@@ -316,6 +329,11 @@ void initLogger() {
316329
static public final String prefImportSuggestEnabled = "pdex.importSuggestEnabled";
317330

318331
static volatile public boolean enableTweak = false;
332+
333+
static public ImageIcon classIcon;
334+
static public ImageIcon fieldIcon;
335+
static public ImageIcon methodIcon;
336+
static public ImageIcon localVarIcon;
319337

320338

321339
public void loadPreferences() {

java/src/processing/mode/java/pdex/CompletionPanel.java

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import processing.app.Mode;
5555
import processing.app.syntax.JEditTextArea;
5656
import processing.mode.java.JavaEditor;
57+
import processing.mode.java.JavaMode;
5758

5859

5960
/**
@@ -93,9 +94,6 @@ public class CompletionPanel {
9394

9495
public static final int MOUSE_COMPLETION = 10, KEYBOARD_COMPLETION = 20;
9596

96-
ImageIcon classIcon, fieldIcon, methodIcon, localVarIcon;
97-
98-
9997
/**
10098
* Triggers the completion popup
10199
* @param textarea
@@ -129,11 +127,6 @@ public CompletionPanel(final JEditTextArea textarea, int position, String subWor
129127
+ location.y);
130128
//log("Suggestion shown: " + System.currentTimeMillis());
131129

132-
Mode mode = editor.getMode();
133-
classIcon = mode.loadIcon("theme/icon_class_obj.png");
134-
methodIcon = mode.loadIcon("theme/icon_methpub_obj.png");
135-
fieldIcon = mode.loadIcon("theme/icon_field_protected_obj.png");
136-
localVarIcon = mode.loadIcon("theme/icon_field_default_obj.png");
137130
}
138131

139132
private void styleScrollPane() {
@@ -210,7 +203,7 @@ private int calcHeight(int itemCount) {
210203
int maxHeight = 250;
211204
FontMetrics fm = textarea.getGraphics().getFontMetrics();
212205
float itemHeight = Math.max((fm.getHeight() + (fm.getDescent()) * 0.5f),
213-
classIcon.getIconHeight() * 1.2f);
206+
JavaMode.classIcon.getIconHeight() * 1.2f);
214207

215208
if (horizontalScrollBarVisible)
216209
itemCount++;
@@ -244,7 +237,7 @@ private int calcWidth() {
244237
int w = Math.min((int) min, maxWidth);
245238
if(w == maxWidth)
246239
horizontalScrollBarVisible = true;
247-
w += classIcon.getIconWidth(); // add icon width too!
240+
w += JavaMode.classIcon.getIconWidth(); // add icon width too!
248241
w += fm.stringWidth(" "); // a bit of offset
249242
//log("popup width " + w);
250243
return w; // popup menu width
@@ -556,19 +549,19 @@ public Component getListCellRendererComponent(JList<?> list, Object value,
556549
CompletionCandidate cc = (CompletionCandidate) value;
557550
switch (cc.getType()) {
558551
case CompletionCandidate.LOCAL_VAR:
559-
label.setIcon(localVarIcon);
552+
label.setIcon(JavaMode.localVarIcon);
560553
break;
561554
case CompletionCandidate.LOCAL_FIELD:
562555
case CompletionCandidate.PREDEF_FIELD:
563-
label.setIcon(fieldIcon);
556+
label.setIcon(JavaMode.fieldIcon);
564557
break;
565558
case CompletionCandidate.LOCAL_METHOD:
566559
case CompletionCandidate.PREDEF_METHOD:
567-
label.setIcon(methodIcon);
560+
label.setIcon(JavaMode.methodIcon);
568561
break;
569562
case CompletionCandidate.LOCAL_CLASS:
570563
case CompletionCandidate.PREDEF_CLASS:
571-
label.setIcon(classIcon);
564+
label.setIcon(JavaMode.classIcon);
572565
break;
573566

574567
default:

java/src/processing/mode/java/pdex/ErrorMessageSimplifier.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,12 @@ public static String getSimplifiedErrorMessage(Problem problem) {
8787
return null;
8888
IProblem iprob = problem.getIProblem();
8989
String args[] = iprob.getArguments();
90-
Base.log("Simplifying message: " + problem.getMessage() + " ID: "
91-
+ getIDName(iprob.getID()));
92-
Base.log("Arg count: " + args.length);
93-
for (int i = 0; i < args.length; i++) {
94-
Base.log("Arg " + args[i]);
95-
}
90+
// Base.log("Simplifying message: " + problem.getMessage() + " ID: "
91+
// + getIDName(iprob.getID()));
92+
// Base.log("Arg count: " + args.length);
93+
// for (int i = 0; i < args.length; i++) {
94+
// Base.log("Arg " + args[i]);
95+
// }
9696

9797
String result = null;
9898

0 commit comments

Comments
 (0)