/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.ui.viewsupport; import org.eclipse.core.resources.IResource; import org.eclipse.jface.viewers.ColumnViewer; import org.eclipse.jface.viewers.StructuredSelection; import org.teiid.core.designer.properties.PropertyDefinition; import org.teiid.core.designer.util.StringUtilities; import org.teiid.designer.core.translators.TranslatorOverrideProperty; import org.teiid.designer.ui.common.table.PropertyEditingSupport; public class TranslatorOverridePropertyEditingSupport extends PropertyEditingSupport { /** * @param viewer * @param vdb */ public TranslatorOverridePropertyEditingSupport( ColumnViewer viewer, IResource vdb ) { super(viewer, vdb); } /** * {@inheritDoc} * * @see org.teiid.designer.ui.common.table.ResourceEditingSupport#getElementValue(java.lang.Object) */ @Override protected String getElementValue( Object element ) { TranslatorOverrideProperty property = (TranslatorOverrideProperty)element; String overrideValue = property.getOverriddenValue(); if (StringUtilities.isEmpty(overrideValue)) { return property.getDefinition().getDefaultValue(); } return overrideValue; } /** * {@inheritDoc} * * @see org.teiid.designer.ui.common.table.PropertyEditingSupport#getPropertyDefinition(java.lang.Object) */ @Override protected PropertyDefinition getPropertyDefinition( Object element ) { TranslatorOverrideProperty property = (TranslatorOverrideProperty)element; return property.getDefinition(); } /** * {@inheritDoc} * * @see org.teiid.designer.ui.common.table.ResourceEditingSupport#setElementValue(java.lang.Object, java.lang.String) */ @Override protected void setElementValue( Object element, String newValue ) { TranslatorOverrideProperty property = (TranslatorOverrideProperty)element; String currentValue = property.getOverriddenValue(); boolean doIt = false; if (StringUtilities.isEmpty(newValue)) { if (!StringUtilities.isEmpty(currentValue)) { doIt = true; } } else { String defaultValue = property.getDefinition().getDefaultValue(); // new value is not empty // current value is empty // set value if new value is not the default value if (StringUtilities.isEmpty(currentValue)) { if (StringUtilities.isEmpty(defaultValue) || !defaultValue.equals(newValue)) { doIt = true; } } else { // new value is not empty // current value is not empty // set if new value != current value // set if new value != default value // if new value == default value set to null if (!newValue.equals(currentValue)) { doIt = true; if (!StringUtilities.isEmpty(defaultValue) && defaultValue.equals(newValue)) { newValue = null; } } } } if (doIt) { property.setValue(newValue); // cause a selection event to be fired so that actions can set their enablement getViewer().setSelection(new StructuredSelection(element)); } } }