| /** |
| * Copyright (c) 2012, 2015 - Lunifera GmbH (Austria), Loetz GmbH&Co.KG 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: |
| * Florian Pirchner - initial API and implementation |
| */ |
| package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.presentation; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertNotNull; |
| import static org.junit.Assert.assertTrue; |
| |
| import java.util.HashMap; |
| import java.util.Locale; |
| import java.util.Map; |
| |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.eclipse.osbp.ecview.core.common.context.ContextException; |
| import org.eclipse.osbp.ecview.core.common.context.IViewContext; |
| import org.eclipse.osbp.ecview.core.common.editpart.DelegatingEditPartManager; |
| import org.eclipse.osbp.ecview.core.common.editpart.IElementEditpart; |
| import org.eclipse.osbp.ecview.core.common.editpart.IEmbeddableEditpart; |
| import org.eclipse.osbp.ecview.core.common.editpart.IViewEditpart; |
| import org.eclipse.osbp.ecview.core.common.model.binding.YBeanValueBindingEndpoint; |
| import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet; |
| import org.eclipse.osbp.ecview.core.common.model.core.YElement; |
| import org.eclipse.osbp.ecview.core.common.model.core.YView; |
| import org.eclipse.osbp.ecview.core.common.presentation.IWidgetPresentation; |
| import org.eclipse.osbp.ecview.core.extension.model.extension.YGridLayout; |
| import org.eclipse.osbp.ecview.core.extension.model.extension.YSlider; |
| import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory; |
| import org.eclipse.osbp.ecview.core.ui.core.editparts.extension.ISliderEditpart; |
| import org.eclipse.osbp.runtime.common.i18n.II18nService; |
| import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer; |
| import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.common.AbstractVaadinWidgetPresenter; |
| import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal.SliderPresentation; |
| import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.model.ValueBean; |
| import org.osgi.framework.BundleException; |
| import org.osgi.service.cm.ConfigurationException; |
| |
| import com.vaadin.ui.Component; |
| import com.vaadin.ui.CssLayout; |
| import com.vaadin.ui.Slider; |
| import com.vaadin.ui.UI; |
| |
| /** |
| * Tests the {@link SliderPresentation}. |
| */ |
| @SuppressWarnings("restriction") |
| public class SliderPresentationTests { |
| |
| private SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory(); |
| private CssLayout rootLayout = new CssLayout(); |
| |
| /** |
| * Setup tests. |
| * |
| * @throws ConfigurationException |
| * @throws BundleException |
| */ |
| @Before |
| public void setup() throws ConfigurationException, BundleException { |
| UI.setCurrent(new DefaultUI()); |
| UI.getCurrent().setContent(rootLayout); |
| } |
| |
| /** |
| * Tests rendering issues. |
| * |
| * @throws Exception |
| */ |
| @Test |
| // BEGIN SUPRESS CATCH EXCEPTION |
| public void test_isRendered_unrender_byModel() throws Exception { |
| // END SUPRESS CATCH EXCEPTION |
| // build the view model |
| // ...> yView |
| // ......> yGridLayout |
| // .........> ySlider |
| YView yView = factory.createView(); |
| YGridLayout yGridlayout = factory.createGridLayout(); |
| yView.setContent(yGridlayout); |
| YSlider ySlider = factory.createSlider(); |
| yGridlayout.getElements().add(ySlider); |
| |
| VaadinRenderer renderer = new VaadinRenderer(); |
| IViewContext viewContext = renderer.render(rootLayout, yView, null); |
| |
| ISliderEditpart sliderEditpart = DelegatingEditPartManager |
| .getInstance().getEditpart(viewContext,ySlider); |
| IWidgetPresentation<Component> presentation = sliderEditpart |
| .getPresentation(); |
| assertTrue(presentation.isRendered()); |
| assertFalse(presentation.isDisposed()); |
| |
| yGridlayout.getElements().remove(ySlider); |
| assertFalse(presentation.isRendered()); |
| assertFalse(presentation.isDisposed()); |
| } |
| |
| /** |
| * Tests the internal structure. |
| * |
| * @throws Exception |
| */ |
| @Test |
| // BEGIN SUPRESS CATCH EXCEPTION |
| public void test_InternalStructure() throws Exception { |
| // END SUPRESS CATCH EXCEPTION |
| // build the view model |
| // ...> yView |
| // ......> ySlider |
| YView yView = factory.createView(); |
| YSlider ySlider = factory.createSlider(); |
| yView.setContent(ySlider); |
| |
| VaadinRenderer renderer = new VaadinRenderer(); |
| IViewContext viewContext = renderer.render(rootLayout, yView, null); |
| |
| ISliderEditpart sliderEditpart = DelegatingEditPartManager |
| .getInstance().getEditpart(viewContext,ySlider); |
| IWidgetPresentation<Component> presentation = sliderEditpart |
| .getPresentation(); |
| |
| Slider slider = (Slider) presentation.getWidget(); |
| assertNotNull(slider); |
| } |
| |
| /** |
| * Test the internal structure based on CSS. |
| * |
| * @throws Exception |
| */ |
| @Test |
| // BEGIN SUPRESS CATCH EXCEPTION |
| public void test_InternalStructure__CSS() throws Exception { |
| // END SUPRESS CATCH EXCEPTION |
| // build the view model |
| // ...> yView |
| // ......> ySlider |
| YView yView = factory.createView(); |
| YGridLayout yLayout = factory.createGridLayout(); |
| yView.setContent(yLayout); |
| YSlider ySlider1 = factory.createSlider(); |
| ySlider1.setCssID("ID_0815"); |
| ySlider1.setCssClass("anyOtherClass"); |
| yLayout.getElements().add(ySlider1); |
| YSlider ySlider2 = factory.createSlider(); |
| yLayout.getElements().add(ySlider2); |
| |
| VaadinRenderer renderer = new VaadinRenderer(); |
| IViewContext viewContext = renderer.render(rootLayout, yView, null); |
| |
| ISliderEditpart slider1Editpart = DelegatingEditPartManager |
| .getInstance().getEditpart(viewContext,ySlider1); |
| ISliderEditpart slider2Editpart = DelegatingEditPartManager |
| .getInstance().getEditpart(viewContext,ySlider2); |
| IWidgetPresentation<Component> slider1Presentation = slider1Editpart |
| .getPresentation(); |
| IWidgetPresentation<Component> slider2Presentation = slider2Editpart |
| .getPresentation(); |
| |
| Slider slider1 = (Slider) slider1Presentation.getWidget(); |
| Slider slider2 = (Slider) slider2Presentation.getWidget(); |
| |
| // assert css class |
| assertTrue(slider1.getStyleName().contains("anyOtherClass")); |
| assertTrue(slider2.getStyleName().contains( |
| AbstractVaadinWidgetPresenter.CSS_CLASS_CONTROL)); |
| |
| // assert css id |
| assertEquals("ID_0815", slider1.getId()); |
| assertEquals(slider2Editpart.getId(), slider2.getId()); |
| } |
| |
| /** |
| * Test the internal structure based on CSS. |
| * |
| * @throws Exception |
| */ |
| @Test |
| // BEGIN SUPRESS CATCH EXCEPTION |
| public void test_Bindings() throws Exception { |
| // END SUPRESS CATCH EXCEPTION |
| // build the view model |
| // ...> yView |
| // ......> ySlider |
| YView yView = factory.createView(); |
| YGridLayout yLayout = factory.createGridLayout(); |
| yView.setContent(yLayout); |
| YSlider ySlider1 = factory.createSlider(); |
| yLayout.getElements().add(ySlider1); |
| YSlider ySlider2 = factory.createSlider(); |
| yLayout.getElements().add(ySlider2); |
| |
| VaadinRenderer renderer = new VaadinRenderer(); |
| IViewContext viewContext = renderer.render(rootLayout, yView, null); |
| |
| ISliderEditpart slider1Editpart = DelegatingEditPartManager |
| .getInstance().getEditpart(viewContext,ySlider1); |
| ISliderEditpart slider2Editpart = DelegatingEditPartManager |
| .getInstance().getEditpart(viewContext,ySlider2); |
| IWidgetPresentation<Component> slider1Presentation = slider1Editpart |
| .getPresentation(); |
| IWidgetPresentation<Component> slider2Presentation = slider2Editpart |
| .getPresentation(); |
| Slider slider1 = (Slider) slider1Presentation.getWidget(); |
| Slider slider2 = (Slider) slider2Presentation.getWidget(); |
| |
| // start tests |
| // |
| ySlider1.setValue(0d); |
| ySlider2.setValue(0d); |
| |
| assertTrue(slider1.isVisible()); |
| assertTrue(slider1.isEnabled()); |
| assertFalse(slider1.isReadOnly()); |
| assertEquals(0d, slider1.getValue(), 0); |
| |
| assertTrue(slider2.isVisible()); |
| assertTrue(slider2.isEnabled()); |
| assertFalse(slider2.isReadOnly()); |
| assertEquals(0d, slider2.getValue(), 0); |
| |
| ySlider1.setVisible(false); |
| assertFalse(slider1.isVisible()); |
| |
| ySlider1.setEnabled(false); |
| assertFalse(slider1.isEnabled()); |
| |
| ySlider1.setEditable(false); |
| assertTrue(slider1.isReadOnly()); |
| |
| // target to model |
| slider1.setReadOnly(false); |
| assertTrue(ySlider1.isEditable()); |
| |
| ySlider1.setValue(30d); |
| ySlider2.setValue(60d); |
| assertEquals(30d, slider1.getValue(), 0); |
| assertEquals(60d, slider2.getValue(), 0); |
| |
| } |
| |
| @Test |
| // BEGIN SUPRESS CATCH EXCEPTION |
| public void test_ValueBinding() throws Exception { |
| // END SUPRESS CATCH EXCEPTION |
| // build the view model |
| // ...> yView |
| // ......> ySlider |
| YView yView = factory.createView(); |
| YGridLayout yLayout = factory.createGridLayout(); |
| yView.setContent(yLayout); |
| YSlider ySlider1 = factory.createSlider(); |
| yLayout.getElements().add(ySlider1); |
| |
| VaadinRenderer renderer = new VaadinRenderer(); |
| IViewContext viewContext = renderer.render(rootLayout, yView, null); |
| |
| ISliderEditpart slider1Editpart = DelegatingEditPartManager |
| .getInstance().getEditpart(viewContext,ySlider1); |
| IWidgetPresentation<Component> slider1Presentation = slider1Editpart |
| .getPresentation(); |
| Slider slider1 = (Slider) slider1Presentation.getWidget(); |
| |
| // start tests |
| // |
| YBindingSet yBindingSet = yView.getOrCreateBindingSet(); |
| |
| ySlider1.setValue(0d); |
| YBeanValueBindingEndpoint beanBinding = factory |
| .createBeanBindingEndpoint(); |
| ValueBean bean = new ValueBean(30d); |
| beanBinding.setPropertyPath("doubleValue"); |
| beanBinding.setBean(bean); |
| yBindingSet.addBinding(ySlider1.createValueEndpoint(), beanBinding); |
| assertEquals(30d, slider1.getValue(), 0); |
| assertEquals(30d, ySlider1.getValue(), 0); |
| |
| bean.setDoubleValue(60d); |
| assertEquals(60d, slider1.getValue(), 0); |
| assertEquals(60d, ySlider1.getValue(), 0); |
| |
| slider1.setValue(70d); |
| assertEquals(70d, bean.getDoubleValue(), 0); |
| assertEquals(70d, ySlider1.getValue(), 0); |
| |
| ySlider1.setValue(80d); |
| assertEquals(80d, bean.getDoubleValue(), 0); |
| assertEquals(80d, slider1.getValue(), 0); |
| } |
| |
| /** |
| * Test the automatic disposal of bindings |
| * |
| * @throws ContextException |
| */ |
| @Test |
| public void testBindingIsDisposed() throws ContextException { |
| YView yView = factory.createView(); |
| YGridLayout yGridlayout = factory.createGridLayout(); |
| yView.setContent(yGridlayout); |
| YSlider ySlider = factory.createSlider(); |
| yGridlayout.getElements().add(ySlider); |
| |
| VaadinRenderer renderer = new VaadinRenderer(); |
| IViewContext viewContext = renderer.render(rootLayout, yView, null); |
| |
| ISliderEditpart sliderEditpart = DelegatingEditPartManager |
| .getInstance().getEditpart(viewContext,ySlider); |
| IWidgetPresentation<Component> presentation = sliderEditpart |
| .getPresentation(); |
| assertTrue(presentation.isRendered()); |
| assertFalse(presentation.isDisposed()); |
| assertEquals(8, presentation.getUIBindings().size()); |
| |
| presentation.dispose(); |
| assertFalse(presentation.isRendered()); |
| assertTrue(presentation.isDisposed()); |
| assertEquals(0, presentation.getUIBindings().size()); |
| } |
| |
| @Test |
| public void test_i18n() throws ContextException { |
| |
| // switch the global locale to german |
| Locale.setDefault(Locale.GERMAN); |
| |
| YView yView = factory.createView(); |
| YGridLayout yGridlayout = factory.createGridLayout(); |
| yView.setContent(yGridlayout); |
| YSlider ySlider = factory.createSlider(); |
| yGridlayout.getElements().add(ySlider); |
| |
| // set the i18n key |
| ySlider.setLabelI18nKey(I18nServiceForTests.KEY__AGE); |
| |
| // prepare the I18nService and pass it to the renderer |
| Map<String, Object> parameter = new HashMap<String, Object>(); |
| Map<String, Object> services = new HashMap<String, Object>(); |
| parameter.put(IViewContext.PARAM_SERVICES, services); |
| services.put(II18nService.ID, new I18nServiceForTests()); |
| |
| VaadinRenderer renderer = new VaadinRenderer(); |
| IViewContext viewContext = renderer.render(rootLayout, yView, parameter); |
| ISliderEditpart editpart = DelegatingEditPartManager.getInstance() |
| .getEditpart(viewContext,ySlider); |
| SliderPresentation presentation = editpart.getPresentation(); |
| |
| assertEquals("Alter", presentation.getWidget().getCaption()); |
| |
| viewContext.setLocale(Locale.ENGLISH); |
| assertEquals("Age", presentation.getWidget().getCaption()); |
| } |
| |
| @Test |
| // BEGIN SUPRESS CATCH EXCEPTION |
| public void test_Readonly_Binding() throws Exception { |
| // END SUPRESS CATCH EXCEPTION |
| // build the view model |
| YView yView = factory.createView(); |
| YGridLayout yLayout = factory.createGridLayout(); |
| yView.setContent(yLayout); |
| YSlider ySlider = factory.createSlider(); |
| yLayout.getElements().add(ySlider); |
| |
| VaadinRenderer renderer = new VaadinRenderer(); |
| IViewContext viewContext = renderer.render(rootLayout, yView, null); |
| |
| ISliderEditpart editpart = DelegatingEditPartManager.getInstance() |
| .getEditpart(viewContext,ySlider); |
| IWidgetPresentation<Component> presentation = editpart |
| .getPresentation(); |
| Slider slider1 = (Slider) presentation.getWidget(); |
| |
| ValueBean bean = new ValueBean(false); |
| YBeanValueBindingEndpoint yBeanBinding = factory |
| .createBeanBindingEndpoint(); |
| yBeanBinding.setBean(bean); |
| yBeanBinding.setPropertyPath("boolValue"); |
| YBindingSet yBindingSet = yView.getOrCreateBindingSet(); |
| yBindingSet.addBinding(ySlider.createEditableEndpoint(), yBeanBinding); |
| |
| // test binding |
| assertFalse(ySlider.isEditable()); |
| assertFalse(!slider1.isReadOnly()); |
| assertFalse(bean.isBoolValue()); |
| |
| bean.setBoolValue(true); |
| assertTrue(ySlider.isEditable()); |
| assertTrue(!slider1.isReadOnly()); |
| assertTrue(bean.isBoolValue()); |
| } |
| |
| @Test |
| // BEGIN SUPRESS CATCH EXCEPTION |
| public void test_Visible_Binding() throws Exception { |
| // END SUPRESS CATCH EXCEPTION |
| // build the view model |
| YView yView = factory.createView(); |
| YGridLayout yLayout = factory.createGridLayout(); |
| yView.setContent(yLayout); |
| YSlider ySlider = factory.createSlider(); |
| yLayout.getElements().add(ySlider); |
| |
| VaadinRenderer renderer = new VaadinRenderer(); |
| IViewContext viewContext = renderer.render(rootLayout, yView, null); |
| |
| ISliderEditpart editpart = DelegatingEditPartManager.getInstance() |
| .getEditpart(viewContext,ySlider); |
| IWidgetPresentation<Component> presentation = editpart |
| .getPresentation(); |
| Slider slider1 = (Slider) presentation.getWidget(); |
| ValueBean bean = new ValueBean(false); |
| YBeanValueBindingEndpoint yBeanBinding = factory |
| .createBeanBindingEndpoint(); |
| yBeanBinding.setBean(bean); |
| yBeanBinding.setPropertyPath("boolValue"); |
| YBindingSet yBindingSet = yView.getOrCreateBindingSet(); |
| yBindingSet.addBinding(ySlider.createVisibleEndpoint(), yBeanBinding); |
| |
| // test binding |
| assertFalse(ySlider.isVisible()); |
| assertFalse(slider1.isVisible()); |
| assertFalse(bean.isBoolValue()); |
| |
| bean.setBoolValue(true); |
| assertTrue(ySlider.isVisible()); |
| assertTrue(slider1.isVisible()); |
| assertTrue(bean.isBoolValue()); |
| } |
| |
| @Test |
| // BEGIN SUPRESS CATCH EXCEPTION |
| public void test_Enabled_Binding() throws Exception { |
| // END SUPRESS CATCH EXCEPTION |
| // build the view model |
| YView yView = factory.createView(); |
| YGridLayout yLayout = factory.createGridLayout(); |
| yView.setContent(yLayout); |
| YSlider ySlider = factory.createSlider(); |
| yLayout.getElements().add(ySlider); |
| |
| VaadinRenderer renderer = new VaadinRenderer(); |
| IViewContext viewContext = renderer.render(rootLayout, yView, null); |
| |
| ISliderEditpart editpart = DelegatingEditPartManager.getInstance() |
| .getEditpart(viewContext,ySlider); |
| IWidgetPresentation<Component> presentation = editpart |
| .getPresentation(); |
| Slider slider1 = (Slider) presentation.getWidget(); |
| |
| ValueBean bean = new ValueBean(false); |
| YBeanValueBindingEndpoint yBeanBinding = factory |
| .createBeanBindingEndpoint(); |
| yBeanBinding.setBean(bean); |
| yBeanBinding.setPropertyPath("boolValue"); |
| YBindingSet yBindingSet = yView.getOrCreateBindingSet(); |
| yBindingSet.addBinding(ySlider.createEnabledEndpoint(), yBeanBinding); |
| |
| // test binding |
| assertFalse(ySlider.isEnabled()); |
| assertFalse(slider1.isEnabled()); |
| assertFalse(bean.isBoolValue()); |
| |
| bean.setBoolValue(true); |
| assertTrue(ySlider.isEnabled()); |
| assertTrue(slider1.isEnabled()); |
| assertTrue(bean.isBoolValue()); |
| } |
| } |