/* * Copyright (c) 2012 Data Harmonisation Panel * * All rights reserved. This program and the accompanying materials are made * available under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution. If not, see <http://www.gnu.org/licenses/>. * * Contributors: * HUMBOLDT EU Integrated Project #030962 * Data Harmonisation Panel <http://www.dhpanel.eu> */ package eu.esdihumboldt.hale.io.csv.ui; import javax.xml.namespace.QName; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.SWT; 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.Label; import org.eclipse.ui.PlatformUI; import eu.esdihumboldt.hale.common.core.io.Value; import eu.esdihumboldt.hale.common.instance.io.InstanceReader; import eu.esdihumboldt.hale.common.schema.SchemaSpaceID; import eu.esdihumboldt.hale.common.schema.model.TypeDefinition; import eu.esdihumboldt.hale.io.csv.reader.CSVConstants; import eu.esdihumboldt.hale.io.csv.reader.CommonSchemaConstants; import eu.esdihumboldt.hale.io.csv.reader.internal.CSVConfiguration; import eu.esdihumboldt.hale.ui.common.definition.selector.TypeDefinitionSelector; import eu.esdihumboldt.hale.ui.io.instance.InstanceReaderConfigurationPage; import eu.esdihumboldt.hale.ui.service.schema.SchemaService; /** * Advanced configuration for the instance reader * * @author Kevin Mais */ public class TypeSelectionPage extends InstanceReaderConfigurationPage implements CSVConstants { private TypeDefinitionSelector sel; private Button button; private Label label; /** * default constructor */ public TypeSelectionPage() { super("InstanceReader"); setTitle("Type Settings"); setDescription("Select your Type and Data reading setting"); } /** * @see eu.esdihumboldt.hale.ui.io.config.AbstractConfigurationPage#enable() */ @Override public void enable() { // not required } /** * @see eu.esdihumboldt.hale.ui.io.config.AbstractConfigurationPage#disable() */ @Override public void disable() { // not required } /** * @see eu.esdihumboldt.hale.ui.HaleWizardPage#createContent(org.eclipse.swt.widgets.Composite) */ @Override protected void createContent(Composite page) { page.setLayout(new GridLayout(2, false)); // XXX needed? GridData layoutData = new GridData(); layoutData.widthHint = 200; label = new Label(page, SWT.NONE); label.setText("Choose your Type:"); SchemaService ss = PlatformUI.getWorkbench().getService(SchemaService.class); sel = new TypeDefinitionSelector(page, "Select the corresponding schema type", ss.getSchemas(SchemaSpaceID.SOURCE), null); sel.getControl().setLayoutData( GridDataFactory.fillDefaults().grab(true, false).span(1, 1).create()); sel.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { setPageComplete(!(event.getSelection().isEmpty())); if (sel.getSelectedObject() != null) { TypeDefinition type = sel.getSelectedObject(); CSVConfiguration conf = type.getConstraint(CSVConfiguration.class); Boolean skip = conf.skipFirst(); button.setSelection(skip); label.getParent().layout(); } } }); button = new Button(page, SWT.CHECK); button.setText("Skip first line"); button.setSelection(true); page.pack(); setPageComplete(false); } @Override public boolean updateConfiguration(InstanceReader provider) { provider.setParameter(CommonSchemaConstants.PARAM_SKIP_FIRST_LINE, Value.of(button.getSelection())); if (sel.getSelectedObject() != null) { QName name = sel.getSelectedObject().getName(); String param_name = name.toString(); provider.setParameter(CommonSchemaConstants.PARAM_TYPENAME, Value.of(param_name)); } else { return false; } return true; } }