/**
* This file is protected by Copyright.
* Please refer to the COPYRIGHT file distributed with this source distribution.
*
* This file is part of REDHAWK IDE.
*
* 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.
*
*/
package gov.redhawk.sca.ui.preferences;
import gov.redhawk.common.ui.doc.HelpConstants;
import gov.redhawk.model.sca.ScaDomainManagerRegistry;
import gov.redhawk.model.sca.commands.ScaModelCommand;
import gov.redhawk.sca.ScaPlugin;
import gov.redhawk.sca.preferences.ScaPreferenceConstants;
import gov.redhawk.sca.ui.ScaUiPlugin;
import java.io.IOException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.RadioGroupFieldEditor;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.statushandlers.StatusManager;
public class RedhawkScaPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
public static final String PREFERENCE_PAGE_ID = "gov.redhawk.ui.preferences.sca";
private DomainListEditor domList = null;
private ScaDomainManagerRegistry registry;
@Override
protected void createFieldEditors() {
final StringFieldEditor field = new StringFieldEditor(ScaPreferenceConstants.SCA_DEFAULT_NAMING_SERVICE, "Default Naming Service:",
getFieldEditorParent());
addField(field);
this.registry = ScaPlugin.getDefault().getDomainManagerRegistry(getFieldEditorParent().getDisplay());
this.domList = new DomainListEditor(this.registry, "Domains:", getFieldEditorParent());
addField(this.domList);
/** We bind this field editor to a fake preference because we just use it to set the auto-connect
preference on all domains when selected */
final RadioGroupFieldEditor autoConnect = new RadioGroupFieldEditor("FAKE", "All Domains: Reconnect on startup", 2, new String[][] {
{ "Auto", "true" }, { "Manual", "false" } }, getFieldEditorParent(), false);
autoConnect.setPropertyChangeListener(new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
Boolean auto = Boolean.valueOf((String) event.getNewValue());
RedhawkScaPreferencePage.this.domList.setAllAutoConnect(auto);
}
});
final StringListFieldEditor listField = new StringListFieldEditor(ScaPreferenceConstants.SCA_DOMAIN_WAVEFORMS_SEARCH_PATH, "Waveforms Search Path:",
getFieldEditorParent());
addField(listField);
listField.getUpButton().setVisible(false);
listField.getDownButton().setVisible(false);
PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), HelpConstants.reference_preferences_domainConnections);
}
@Override
public boolean performOk() {
super.performOk();
final boolean[] success = {false};
final boolean[] done = {false};
ScaModelCommand.execute(RedhawkScaPreferencePage.this.registry, new ScaModelCommand() {
@Override
public void execute() {
try {
RedhawkScaPreferencePage.this.registry.eResource().save(null);
success[0] = true;
} catch (IOException e) {
StatusManager.getManager().handle(new Status(IStatus.ERROR, ScaUiPlugin.PLUGIN_ID, "Failed to save REDHAWK Domain Connections to configuration file.", e),
StatusManager.LOG | StatusManager.SHOW);
} finally {
done[0] = true;
}
}
});
while (!done[0]) {
if (!getShell().getDisplay().readAndDispatch()) {
getShell().getDisplay().sleep();
}
}
return success[0];
}
@Override
protected void checkState() {
super.checkState();
}
@Override
public void init(final IWorkbench workbench) {
setPreferenceStore(ScaUiPlugin.getDefault().getScaPreferenceStore());
}
}