/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.cluster.gui.properties;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
import de.rcenvironment.components.cluster.common.ClusterComponentConstants;
import de.rcenvironment.core.gui.workflow.executor.properties.AbstractScriptSection;
import de.rcenvironment.core.utils.common.StringUtils;
/**
* "Properties" view tab for configuring job script used for job submission.
*
* @author Doreen Seider
*/
public class ScriptSection extends AbstractScriptSection {
private Button isScriptProvidedbutton;
public ScriptSection() {
super(AbstractScriptSection.ALL, Messages.scriptname);
}
@Override
protected void createCompositeContentAtVeryTop(Composite composite, TabbedPropertySheetWidgetFactory factory) {
isScriptProvidedbutton = factory.createButton(composite,
StringUtils.format(Messages.isScriptProvided, ClusterComponentConstants.JOB_SCRIPT_NAME), SWT.CHECK);
isScriptProvidedbutton.setData(CONTROL_PROPERTY_KEY, ClusterComponentConstants.KEY_IS_SCRIPT_PROVIDED_WITHIN_INPUT_DIR);
super.createCompositeContentAtVeryTop(composite, factory);
factory.createCLabel(composite, "Note: Component is marked as failed, if a file with name 'cluster_job_failed' exists "
+ "in at least one of the job's output directories. See F1 help for more details.");
}
@Override
protected Updater createUpdater() {
return new DefaultUpdater() {
@Override
public void updateControl(Control control, String propertyName, String newValue, String oldValue) {
super.updateControl(control, propertyName, newValue, oldValue);
handleUpdate(propertyName, newValue);
}
@Override
public void initializeControl(Control control, String propertyName, String value) {
super.initializeControl(control, propertyName, value);
handleUpdate(propertyName, value);
}
private void handleUpdate(String propertyName, String value) {
if (propertyName.equals(ClusterComponentConstants.KEY_IS_SCRIPT_PROVIDED_WITHIN_INPUT_DIR)) {
isScriptProvidedbutton.setSelection(Boolean.valueOf(value));
enableButtonAndScriptArea(!Boolean.valueOf(value));
}
}
};
}
@Override
protected Synchronizer createSynchronizer() {
return new DefaultSynchronizer() {
@Override
public void handlePropertyChange(String propertyName, String newValue, String oldValue) {
super.handlePropertyChange(propertyName, newValue, oldValue);
if (propertyName.equals(ClusterComponentConstants.KEY_IS_SCRIPT_PROVIDED_WITHIN_INPUT_DIR)) {
enableButtonAndScriptArea(!Boolean.valueOf(newValue));
}
}
};
}
private void enableButtonAndScriptArea(boolean enabled) {
openInEditorButton.setEnabled(enabled);
scriptingText.setEditable(enabled);
scriptingText.setBackgroundEnabled(enabled);
}
}