/**
* 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.internal.ui.preferences;
import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jface.preference.ComboFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
import tern.eclipse.ide.core.ITernServerType;
import tern.eclipse.ide.core.TernCorePlugin;
import tern.eclipse.ide.core.preferences.TernCorePreferenceConstants;
import tern.eclipse.ide.internal.ui.TernUIMessages;
import tern.eclipse.ide.ui.ImageResource;
/**
* Tern Server preferences page.
*
*/
public class TernServerPreferencesPage extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage {
public TernServerPreferencesPage() {
super(GRID);
setDescription(TernUIMessages.TernServerPreferencesPage_desc);
setImageDescriptor(ImageResource
.getImageDescriptor(ImageResource.IMG_LOGO));
}
@Override
protected void createFieldEditors() {
// Tern Server type combo
ITernServerType[] serverTypes = TernCorePlugin
.getTernServerTypeManager().getTernServerTypes();
String[][] types = new String[serverTypes.length + 1][2];
types[0][0] = " -- Choose your server type --"; //$NON-NLS-1$
types[0][1] = ""; //$NON-NLS-1$
for (int i = 0; i < serverTypes.length; i++) {
types[i + 1][0] = serverTypes[i].getName();
types[i + 1][1] = serverTypes[i].getId();
}
ComboFieldEditor ternServerEditor = new ComboFieldEditor(
TernCorePreferenceConstants.TERN_SERVER_TYPE,
TernUIMessages.TernServerPreferencesPage_serverType, types,
getFieldEditorParent());
addField(ternServerEditor);
}
@Override
public void init(IWorkbench workbench) {
}
@Override
protected IPreferenceStore doGetPreferenceStore() {
// IProject project = getProject();
// ScopedPreferenceStore store;
// if (project == null) {
// // workspace settings
// IScopeContext scope = new InstanceScope();
// return new ScopedPreferenceStore(scope, TernCorePlugin.PLUGIN_ID);
// } else {
// // project settings
// IScopeContext projectScope = new ProjectScope(project);
// preferences = projectScope.getNode(TernCorePlugin.PLUGIN_ID);
// store = new ScopedPreferenceStore(projectScope,
// TernCorePlugin.PLUGIN_ID);
// }
// return store;
IScopeContext scope = new InstanceScope();
return new ScopedPreferenceStore(scope, TernCorePlugin.PLUGIN_ID);
}
@Override
public void propertyChange(PropertyChangeEvent event) {
super.propertyChange(event);
TernCorePlugin.getTernServerTypeManager().refresh();
}
}