/******************************************************************************* * Copyright (c) 2006-2013 The RCP Company and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * The RCP Company - initial API and implementation *******************************************************************************/ package com.rcpcompany.uibindings.internal.decorators.extenders; import java.math.BigDecimal; import com.rcpcompany.uibindings.IUIBindingDecoratorExtenderContext; import com.rcpcompany.uibindings.IValueBinding; import com.rcpcompany.uibindings.decorators.extenders.AbstractUIBindingDecoratorExtender; import com.rcpcompany.uibindings.internal.decorators.NumberBindingDecorator; /** * Extender that will set min and max values on widgets if known and supported. * * @author Tonny Madsen, The RCP Company */ public class NumberMinMaxExtender extends AbstractUIBindingDecoratorExtender { @Override public boolean isEnabled(IValueBinding binding) { return binding.getDecorator() instanceof NumberBindingDecorator; } @Override public void extend(IUIBindingDecoratorExtenderContext context) { final IValueBinding binding = context.getBinding(); if (!(binding.getDecorator() instanceof NumberBindingDecorator)) return; final NumberBindingDecorator d = (NumberBindingDecorator) binding.getDecorator(); if (!d.isIntegralNumber()) return; try { final BigDecimal m = d.getMin(); if (m != null) { final int min = m.intValueExact(); context.setMin(min); } } catch (final ArithmeticException ex) { // Do nothing } try { final BigDecimal m = d.getMax(); if (m != null) { final int max = m.intValueExact(); context.setMax(max); } } catch (final ArithmeticException ex) { // Do nothing } } }