/******************************************************************************* * Copyright (c) 2006-2013, Cloudsmith Inc. * The code, documentation and other materials contained herein have been * licensed under the Eclipse Public License - v 1.0 by the copyright holder * listed above, as the Initial Contributor under such license. The text of * such license is available at www.eclipse.org. ******************************************************************************/ package org.eclipse.buckminster.ui.editor.cspec; import java.util.List; import org.eclipse.buckminster.core.cspec.builder.CSpecBuilder; import org.eclipse.buckminster.core.cspec.builder.GeneratorBuilder; import org.eclipse.buckminster.core.cspec.model.ComponentIdentifier; import org.eclipse.buckminster.core.helpers.TextUtils; import org.eclipse.buckminster.ui.Messages; import org.eclipse.buckminster.ui.general.editor.IValidator; import org.eclipse.buckminster.ui.general.editor.ValidatorException; import org.eclipse.buckminster.ui.general.editor.simple.IWidgetin; import org.eclipse.buckminster.ui.general.editor.simple.SimpleTable; import org.eclipse.equinox.p2.metadata.Version; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; /** * @author Karel Brezina * */ public class GeneratorsTable extends SimpleTable<GeneratorBuilder> { private CSpecEditor editor; private CSpecBuilder cspecBuilder; public GeneratorsTable(CSpecEditor editor, List<GeneratorBuilder> data, CSpecBuilder cspecBuilder, boolean readOnly) { super(data, readOnly); this.editor = editor; this.cspecBuilder = cspecBuilder; } @Override public GeneratorBuilder createRowClass() { return cspecBuilder.createGeneratorBuilder(); } @Override public String[] getColumnHeaders() { return new String[] { Messages.generatesName, Messages.generatesType, Messages.generatesVersion, Messages.component, Messages.attribute }; } @Override public int[] getColumnWeights() { return new int[] { 25, 15, 15, 25, 15 }; } @Override public IValidator getFieldValidator(int idx) { switch (idx) { case 0: return SimpleTable.createNotEmptyStringValidator(Messages.generator_name_cannot_be_empty); case 4: return SimpleTable.createNotEmptyStringValidator(Messages.attribute_cannot_be_empty); default: return SimpleTable.getEmptyValidator(); } } @Override public IWidgetin getWidgetin(Composite parent, int idx, Object value) { switch (idx) { case 0: return getTextWidgetin(parent, idx, value); case 3: return getComboWidgetin(parent, idx, value, editor.getComponentNames(), SWT.NONE); case 4: return getComboWidgetin(parent, idx, value, editor.getAttributeNames(null), SWT.NONE); default: return getTextWidgetin(parent, idx, value); } } @Override public Object[] toRowArray(GeneratorBuilder t) { Object[] array = new Object[getColumns()]; ComponentIdentifier ci = t.getGeneratedIdentifier(); array[0] = ci.getName(); array[1] = ci.getComponentTypeID(); array[2] = ci.getVersion() == null ? null : ci.getVersion().toString(); array[3] = t.getComponent(); array[4] = t.getAttribute(); return array; } @Override public void updateRowClass(GeneratorBuilder builder, Object[] args) throws ValidatorException { builder.setName(TextUtils.notEmptyString((String) args[0])); builder.setGeneratesType(TextUtils.notEmptyString((String) args[1])); builder.setGeneratesVersion(Version.create(TextUtils.notEmptyString((String) args[2]))); builder.setComponent(TextUtils.notEmptyString((String) args[3])); builder.setAttribute(TextUtils.notEmptyString((String) args[4])); } }