blob: 6dd92add795a9d25c1bdf945ca4c1a8a05e8e68a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2019 Mia-Software and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Nicolas Bros (Mia-Software) - initial API and implementation
*******************************************************************************/
package org.eclipse.modisco.infra.discovery.ui.internal.wizards;
import java.util.Arrays;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.modisco.infra.discovery.catalog.DirectionKind;
import org.eclipse.swt.widgets.TableItem;
/** Handles the modification of values in the parameters table */
public class ParameterCellModifier implements ICellModifier {
private final NewDiscovererMainWizardPage newDiscovererMainWizardPage;
public ParameterCellModifier(final NewDiscovererMainWizardPage newDiscovererMainWizardPage) {
this.newDiscovererMainWizardPage = newDiscovererMainWizardPage;
}
public boolean canModify(final Object element, final String property) {
if (AbstractModelDiscovererParameters.isInheritedParameter(element)) {
return false;
}
// out param => "required" is disabled
if (property == NewDiscovererMainWizardPage.REQUIRED_COLUMN_PROPERTY) {
if (element instanceof DiscoveryParameterLine) {
DiscoveryParameterLine parameter = (DiscoveryParameterLine) element;
if (parameter.getDirection() == DirectionKind.OUT) {
return false;
}
}
}
return true;
}
public Object getValue(final Object element, final String property) {
if (!(element instanceof DiscoveryParameterLine)) {
throw new IllegalArgumentException("element"); //$NON-NLS-1$
}
DiscoveryParameterLine discoveryParameterLine = (DiscoveryParameterLine) element;
if (property == NewDiscovererMainWizardPage.NAME_COLUMN_PROPERTY) {
return discoveryParameterLine.getName();
}
if (property == NewDiscovererMainWizardPage.DESCRIPTION_COLUMN_PROPERTY) {
return discoveryParameterLine.getDescription();
}
if (property == NewDiscovererMainWizardPage.TYPE_COLUMN_PROPERTY) {
return discoveryParameterLine.getType();
}
if (property == NewDiscovererMainWizardPage.DIRECTION_COLUMN_PROPERTY) {
return new Integer(Arrays.asList(DirectionKind.values()).indexOf(
discoveryParameterLine.getDirection().name()));
}
if (property == NewDiscovererMainWizardPage.REQUIRED_COLUMN_PROPERTY) {
return new Boolean(discoveryParameterLine.isRequired());
}
if (property == NewDiscovererMainWizardPage.MULTIVALUED_COLUMN_PROPERTY) {
return new Boolean(discoveryParameterLine.isMultivalued());
}
throw new IllegalArgumentException("property"); //$NON-NLS-1$
}
public void modify(final Object element, final String property, final Object value) {
TableItem tableItem = (TableItem) element;
Object data = tableItem.getData();
if (!(data instanceof DiscoveryParameterLine)) {
throw new IllegalArgumentException("element"); //$NON-NLS-1$
}
DiscoveryParameterLine discoveryParameterLine = (DiscoveryParameterLine) data;
if (property == NewDiscovererMainWizardPage.NAME_COLUMN_PROPERTY) {
discoveryParameterLine.setName((String) value);
} else if (property == NewDiscovererMainWizardPage.DESCRIPTION_COLUMN_PROPERTY) {
discoveryParameterLine.setDescription((String) value);
} else if (property == NewDiscovererMainWizardPage.TYPE_COLUMN_PROPERTY) {
discoveryParameterLine.setType((String) value);
} else if (property == NewDiscovererMainWizardPage.DIRECTION_COLUMN_PROPERTY) {
int iValue = ((Integer) value).intValue();
if (iValue == -1) {
discoveryParameterLine.setDirection(DirectionKind.IN);
} else {
discoveryParameterLine.setDirection(DirectionKind.values()[iValue]);
}
} else if (property == NewDiscovererMainWizardPage.REQUIRED_COLUMN_PROPERTY) {
discoveryParameterLine.setRequired(((Boolean) value).booleanValue());
} else if (property == NewDiscovererMainWizardPage.MULTIVALUED_COLUMN_PROPERTY) {
discoveryParameterLine.setMultivalued(((Boolean) value).booleanValue());
} else {
throw new IllegalArgumentException("property"); //$NON-NLS-1$
}
this.newDiscovererMainWizardPage.parameterDataWasModified();
}
}