/******************************************************************************* * 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.extests; import static org.junit.Assert.*; import org.eclipse.core.databinding.observable.list.IObservableList; import org.eclipse.emf.ecore.EObject; import com.rcpcompany.uibindings.BindingMessageSeverity; import com.rcpcompany.uibindings.bindingMessages.AbstractBindingMessage; import com.rcpcompany.uibindings.tests.shop.Shop; import com.rcpcompany.uibindings.tests.shop.ShopFactory; import com.rcpcompany.uibindings.tests.shop.ShopItem; import com.rcpcompany.uibindings.validators.IValidatorAdapter; public class TestObjectValidatorAdapter implements IValidatorAdapter { public static final float LIMIT = 100f; public static final String ERROR_MESSAGE = "This is an error"; private final Shop myShop; private final ShopItem myItem; private final AbstractBindingMessage myItemMessage; private final AbstractBindingMessage myShopMessage; public Shop getShop() { return myShop; } public ShopItem getItem() { return myItem; } public AbstractBindingMessage getItemMessage() { return myItemMessage; } public AbstractBindingMessage getShopMessage() { return myShopMessage; } public TestObjectValidatorAdapter() { myShop = ShopFactory.eINSTANCE.createShop(); myItem = ShopFactory.eINSTANCE.createShopItem(); myItem.setPrice(LIMIT + 1f); myItem.setShop(myShop); myItemMessage = new AbstractBindingMessage(null, myItem, null, null) { @Override public String getMessage() { return ERROR_MESSAGE + " for item"; } @Override public BindingMessageSeverity getSeverity() { return BindingMessageSeverity.ERROR; } }; myShopMessage = new AbstractBindingMessage(null, myShop, null, null) { @Override public String getMessage() { return ERROR_MESSAGE + " for shop"; } @Override public BindingMessageSeverity getSeverity() { return BindingMessageSeverity.ERROR; } }; } @Override public void validateObjectTree(EObject root, IObservableList messages) { assertEquals(myShop, root); if (!messages.contains(myShopMessage)) { messages.add(myShopMessage); } final boolean showError = (myItem.getPrice() < LIMIT); if (showError && !messages.contains(myItemMessage)) { messages.add(myItemMessage); } if (!showError && messages.contains(myItemMessage)) { messages.remove(myItemMessage); } } @Override public void dispose() { } }