/** * Copyright (c) 2013-2016 Angelo ZERR. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation */ package tern.eclipse.ide.server.nodejs.internal.core.preferences; import org.eclipse.core.runtime.preferences.DefaultScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import tern.eclipse.ide.server.nodejs.core.IDENodejsProcessHelper; import tern.eclipse.ide.server.nodejs.core.INodejsInstall; import tern.eclipse.ide.server.nodejs.core.INodejsInstallManager; import tern.eclipse.ide.server.nodejs.core.TernNodejsCoreConstants; import tern.eclipse.ide.server.nodejs.core.TernNodejsCorePlugin; import tern.eclipse.ide.server.nodejs.internal.core.NodejsInstall; import tern.server.nodejs.NodejsTernHelper; /** * Initialize default tern core preferences. * */ public class TernNodejsCorePreferenceConstants { /** * Initializes the given preference store with the default values. * * @param store * the preference store to be initialized */ public static void initializeDefaultValues() { IEclipsePreferences node = new DefaultScope() .getNode(TernNodejsCorePlugin.PLUGIN_ID); // initialize properties for remote access of node.js server initializeRemoteAccess(node); // initialize properties for direct access of node.js server (start an // internal process) initializeDirectAccess(node); } /** * initialize properties for for remote access of node.js server * * @param node */ private static void initializeRemoteAccess(IEclipsePreferences node) { // is remote access? node.putBoolean(TernNodejsCoreConstants.NODEJS_REMOTE_ACCESS, NodejsTernHelper.DEFAULT_REMOTE_ACCESS); // port of the remote node.js server node.putInt(TernNodejsCoreConstants.NODEJS_REMOTE_PORT, NodejsTernHelper.DEFAULT_REMOTE_PORT); } /** * initialize properties for direct access of node.js server (start an * internal process) * * @param node */ private static void initializeDirectAccess(IEclipsePreferences node) { // By default use the embedded Node.js install (if exists) if (!useBundledNodeJsInstall(node)) { // Use native node.js install in case there is no embedded install. node.put(TernNodejsCoreConstants.NODEJS_INSTALL, NodejsInstall.NODE_NATIVE); node.put(TernNodejsCoreConstants.NODEJS_PATH, IDENodejsProcessHelper.getNodejsPath()); } // timeout to start node.js node.putLong(TernNodejsCoreConstants.NODEJS_TIMEOUT, NodejsTernHelper.DEFAULT_TIMEOUT); // test number to start node.js node.putInt(TernNodejsCoreConstants.NODEJS_TEST_NUMBER, NodejsTernHelper.DEFAULT_TEST_NUMBER); // node.js persistent (not auto-shutdown ?) node.putBoolean(TernNodejsCoreConstants.NODEJS_PERSISTENT, NodejsTernHelper.DEFAULT_PERSISTENT); } private static boolean useBundledNodeJsInstall(IEclipsePreferences node) { INodejsInstallManager installManager = TernNodejsCorePlugin .getNodejsInstallManager(); INodejsInstall[] installs = installManager.getNodejsInstalls(); for (INodejsInstall install : installs) { if (!install.isNative()) { node.put(TernNodejsCoreConstants.NODEJS_INSTALL, install.getId()); return true; } } return false; } // Don't instantiate private TernNodejsCorePreferenceConstants() { } }