/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.xpathchooser; import java.util.Map; import java.util.Set; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Widget; import de.rcenvironment.core.component.model.endpoint.api.EndpointMetaDataDefinition; import de.rcenvironment.core.component.workflow.model.spi.ComponentInstanceProperties; import de.rcenvironment.core.datamodel.api.EndpointActionType; import de.rcenvironment.core.datamodel.api.EndpointType; import de.rcenvironment.core.gui.workflow.editor.properties.EndpointEditDialog; /** * A dialog for defining and editing xpath as additional endpoints. * * @author Markus Kunde */ public class XPathEditDialog extends EndpointEditDialog { private static final String CHANNEL_XPATH = "variable.xpath"; public XPathEditDialog(Shell parentShell, EndpointActionType actionType, ComponentInstanceProperties configuration, EndpointType direction, String id, boolean isStatic, Image icon, EndpointMetaDataDefinition metaData, Map<String, String> metadataValues) { super(parentShell, actionType, configuration, direction, id, isStatic, metaData, metadataValues); } @Override protected Control createConfigurationArea(Composite parent) { Control superControl = super.createConfigurationArea(parent); Button selectButton = new Button(parent, SWT.NONE); selectButton.setText(Messages.selectButton); selectButton.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(Event event) { createXPathDialog(); } }); return superControl; } private void createXPathDialog() { final XPathChooserDialog dialog = new XPathChooserDialog(super.getShell(), null); if (dialog.getChooser() != null && dialog.open() == TitleAreaDialog.OK) { final Set<VariableEntry> newVars = dialog.getSelectedVariables(); for (final VariableEntry entry : newVars) { String xpath = entry.getXpath(); if (xpath != null && !xpath.isEmpty()) { Widget address = super.getWidget(CHANNEL_XPATH); if (address instanceof Text) { ((Text) address).setText(xpath); } } } } } }