/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.components.evaluationmemory.gui; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; import de.rcenvironment.components.evaluationmemory.common.EvaluationMemoryComponentConstants; import de.rcenvironment.core.component.workflow.model.api.WorkflowNode; import de.rcenvironment.core.gui.workflow.editor.properties.ValidatingWorkflowNodePropertySection; import de.rcenvironment.core.gui.workflow.editor.properties.WorkflowNodePropertiesSection; /** * Section to set the path to the memory file. * * @author Doreen Seider */ public class EvaluationMemoryFileSection extends ValidatingWorkflowNodePropertySection { private Text memoryFilePathText; private Button selectFilePathButton; private Button selectAtWfStartButton; private Button storeLoopFailures; @Override protected void createCompositeContent(final Composite parent, final TabbedPropertySheetPage propSheetPage) { super.createCompositeContent(parent, propSheetPage); parent.setLayout(new GridLayout(1, false)); parent.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL)); Section memFileSection = propSheetPage.getWidgetFactory().createSection(parent, Section.TITLE_BAR); memFileSection.setLayout(new GridLayout()); memFileSection.setLayoutData(new GridData(GridData.FILL | GridData.FILL_HORIZONTAL)); memFileSection.setText("Evaluation Memory File"); final Composite memFileComposite = propSheetPage.getWidgetFactory().createComposite(parent); memFileComposite.setLayout(new GridLayout(2, true)); memFileComposite.setLayoutData(new GridData(GridData.FILL | GridData.FILL_HORIZONTAL)); selectAtWfStartButton = new Button(memFileComposite, SWT.CHECK); selectAtWfStartButton.setText("Select at workflow start"); selectAtWfStartButton.setBackground(memFileComposite.getDisplay().getSystemColor(SWT.COLOR_WHITE)); selectAtWfStartButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent event) { enableWidgets(!selectAtWfStartButton.getSelection()); } @Override public void widgetDefaultSelected(SelectionEvent event) { widgetSelected(event); } }); selectAtWfStartButton.setData(WorkflowNodePropertiesSection.CONTROL_PROPERTY_KEY, EvaluationMemoryComponentConstants.CONFIG_SELECT_AT_WF_START); GridData gridData = new GridData(); gridData.horizontalSpan = 2; selectAtWfStartButton.setLayoutData(gridData); memoryFilePathText = new Text(memFileComposite, SWT.WRAP | SWT.BORDER | SWT.SINGLE); memoryFilePathText.setData(CONTROL_PROPERTY_KEY, EvaluationMemoryComponentConstants.CONFIG_MEMORY_FILE); memoryFilePathText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL)); selectFilePathButton = new Button(memFileComposite, SWT.PUSH); selectFilePathButton.setText("..."); selectFilePathButton.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(Event event) { FileDialog dialog = new FileDialog(parent.getShell(), SWT.OPEN); String path = dialog.open(); if (path != null) { memoryFilePathText.setText(path); } } }); Section memOptionsSection = propSheetPage.getWidgetFactory().createSection(parent, Section.TITLE_BAR); memOptionsSection.setLayout(new GridLayout()); memOptionsSection.setLayoutData(new GridData(GridData.FILL | GridData.FILL_HORIZONTAL)); memOptionsSection.setText("Evaluation Memory Options"); final Composite memOptionsComposite = propSheetPage.getWidgetFactory().createComposite(parent); memOptionsComposite.setLayout(new GridLayout(2, true)); memOptionsComposite.setLayoutData(new GridData(GridData.FILL | GridData.FILL_HORIZONTAL)); storeLoopFailures = new Button(memOptionsComposite, SWT.CHECK); storeLoopFailures.setData(CONTROL_PROPERTY_KEY, EvaluationMemoryComponentConstants.CONFIG_CONSIDER_LOOP_FAILURES); storeLoopFailures.setText("Consider loop failures as valid loop results" + " (values of type not-a-value that are explicitly sent by components)"); storeLoopFailures.setBackground(memOptionsComposite.getDisplay().getSystemColor(SWT.COLOR_WHITE)); } @Override protected void setWorkflowNode(WorkflowNode workflowNode) { super.setWorkflowNode(workflowNode); Boolean selectAtWfStart = Boolean.valueOf(getConfiguration().getConfigurationDescription() .getConfigurationValue(EvaluationMemoryComponentConstants.CONFIG_SELECT_AT_WF_START)); enableWidgets(!selectAtWfStart); } private void enableWidgets(boolean enabled) { memoryFilePathText.setEnabled(enabled); selectFilePathButton.setEnabled(enabled); } }