Skip to content

Commit 4cbc99b

Browse files
committed
Fixes #2085: Only warn once per workspace
1 parent e8921f7 commit 4cbc99b

5 files changed

Lines changed: 28 additions & 12 deletions

File tree

org.eclipse.wildwebdeveloper.embedder.node.feature/feature.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<feature
33
id="org.eclipse.wildwebdeveloper.embedder.node.feature"
44
label="%name"
5-
version="1.2.5.qualifier"
5+
version="1.2.6.qualifier"
66
provider-name="Eclipse Wild Web Developer project"
77
license-feature="org.eclipse.license"
88
license-feature-version="0.0.0">

org.eclipse.wildwebdeveloper.embedder.node.feature/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
<version>1.0.0-SNAPSHOT</version>
88
</parent>
99
<packaging>eclipse-feature</packaging>
10-
<version>1.2.5-SNAPSHOT</version>
10+
<version>1.2.6-SNAPSHOT</version>
1111
</project>

org.eclipse.wildwebdeveloper.embedder.node/META-INF/MANIFEST.MF

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
22
Bundle-ManifestVersion: 2
33
Bundle-Name: Manager for embedded Node.js
44
Bundle-SymbolicName: org.eclipse.wildwebdeveloper.embedder.node
5-
Bundle-Version: 1.0.8.qualifier
5+
Bundle-Version: 1.0.9.qualifier
66
Bundle-License: EPL-2.0;link="http://www.eclipse.org/legal/epl-2.0"
77
Bundle-Vendor: Eclipse Wild Web Developer
88
Automatic-Module-Name: org.eclipse.wildwebdeveloper.embedder.node

org.eclipse.wildwebdeveloper.embedder.node/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<version>1.0.0-SNAPSHOT</version>
88
</parent>
99
<packaging>eclipse-plugin</packaging>
10-
<version>1.0.8-SNAPSHOT</version>
10+
<version>1.0.9-SNAPSHOT</version>
1111

1212
<build>
1313
<plugins>

org.eclipse.wildwebdeveloper.embedder.node/src/org/eclipse/wildwebdeveloper/embedder/node/NodeJSManager.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,19 @@
3131
import org.eclipse.core.runtime.IPath;
3232
import org.eclipse.core.runtime.Path;
3333
import org.eclipse.core.runtime.Platform;
34+
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
35+
import org.eclipse.core.runtime.preferences.InstanceScope;
3436
import org.eclipse.jface.dialogs.MessageDialog;
3537
import org.eclipse.osgi.service.datalocation.Location;
3638
import org.eclipse.swt.widgets.Display;
39+
import org.osgi.service.prefs.BackingStoreException;
3740

3841
public class NodeJSManager {
3942
public static final String NODE_ROOT_DIRECTORY = ".node";
4043

4144
private static final String MACOS_DSCL_SHELL_PREFIX = "UserShell: ";
45+
private static final String ALREADY_WARNED_NODEJS_MISSING = "alreadyWarnedNodeJsMissing";
4246

43-
private static boolean alreadyWarned;
4447
private static Properties cachedNodeJsInfoProperties;
4548
private static final Object EXPAND_LOCK = new Object();
4649

@@ -100,10 +103,9 @@ public static File getNodeJsLocation() {
100103
if (res != null) {
101104
validateNodeVersion(res);
102105
return res;
103-
} else if (!alreadyWarned) {
104-
warnNodeJSMissing();
105-
alreadyWarned = true;
106106
}
107+
warnNodeJSMissing();
108+
107109
return null;
108110
}
109111

@@ -332,20 +334,34 @@ private static void validateNodeVersion(File nodeJsLocation) {
332334
}
333335

334336
private static void warnNodeJSMissing() {
335-
if (!alreadyWarned) {
337+
if (!hasAlreadyWarnedNodeJsMissing()) {
336338
Display.getDefault().asyncExec(() -> MessageDialog.openWarning(Display.getCurrent().getActiveShell(),
337339
"Missing node.js", "Could not find node.js. This will result in editors missing key features.\n"
338340
+ "Please make sure node.js is installed and that your PATH environment variable contains the location to the `node` executable."));
341+
setAlreadyWarnedNodeJsMissing();
339342
}
340-
alreadyWarned = true;
341343
}
342344

343345
private static void warnNodeJSVersionCouldNotBeDetermined() {
344-
if (!alreadyWarned) {
346+
if (!hasAlreadyWarnedNodeJsMissing()) {
345347
Display.getDefault().asyncExec(() -> MessageDialog.openWarning(Display.getCurrent().getActiveShell(),
346348
"Node.js version could not be determined",
347349
"Node.js version could not be determined. Please make sure a recent version of node.js is installed, editors may be missing key features otherwise.\n"));
350+
setAlreadyWarnedNodeJsMissing();
348351
}
349-
alreadyWarned = true;
352+
}
353+
354+
private static boolean hasAlreadyWarnedNodeJsMissing() {
355+
return Platform.getPreferencesService().getBoolean(Activator.PLUGIN_ID, ALREADY_WARNED_NODEJS_MISSING, false, null);
356+
}
357+
358+
private static void setAlreadyWarnedNodeJsMissing() {
359+
try {
360+
IEclipsePreferences workspacePreferences = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID);
361+
workspacePreferences.putBoolean(ALREADY_WARNED_NODEJS_MISSING, true);
362+
workspacePreferences.flush();
363+
} catch (BackingStoreException e) {
364+
ILog.get().error(e.getMessage(), e);
365+
}
350366
}
351367
}

0 commit comments

Comments
 (0)