com.rcpcompany.uibindings.extests.trees.TreeContentTest.java Source code

Java tutorial

Introduction

Here is the source code for com.rcpcompany.uibindings.extests.trees.TreeContentTest.java

Source

/*******************************************************************************
 * 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.trees;

import static com.rcpcompany.test.utils.ui.UITestUtils.*;
import static org.junit.Assert.*;

import org.eclipse.core.databinding.observable.list.IObservableList;
import org.eclipse.core.databinding.observable.list.WritableList;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.swt.widgets.TreeItem;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.rcpcompany.uibindings.IBindingContext;
import com.rcpcompany.uibindings.IColumnBinding;
import com.rcpcompany.uibindings.IConstantTreeItem;
import com.rcpcompany.uibindings.IManager;
import com.rcpcompany.uibindings.IViewerBinding;
import com.rcpcompany.uibindings.SpecialBinding;
import com.rcpcompany.uibindings.tests.shop.Contact;
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.tests.shop.ShopPackage;
import com.rcpcompany.uibindings.tests.utils.BaseUIBTestUtils;
import com.rcpcompany.uibindings.tests.utils.views.UIBTestView;
import com.rcpcompany.uibindings.utils.IBindingContextSelectionProvider;
import com.rcpcompany.uibindings.utils.IDnDSupport;

public class TreeContentTest {
    private Shop myShop;
    private ShopItem myShopItem;
    private Contact myContact1;
    private Contact myContact2;

    private UIBTestView myView;

    private IBindingContext myContext;
    private Tree myTree;
    private TreeColumn myTreeColumn;
    private IViewerBinding myTreeBinding;
    private IColumnBinding myTreeColumnBinding;

    @Before
    public void before() {
        BaseUIBTestUtils.resetAll();
        IManager.Factory.getManager().setEditCellSingleClick(false);

        createModel();
        createView();

        myView.getSite().getPage().activate(myView);
    }

    private void createModel() {
        myShop = ShopFactory.eINSTANCE.createShop();
        myShop.setName("my shop");

        myShopItem = ShopFactory.eINSTANCE.createShopItem();
        myShopItem.setName("Wellknown dummy");
        myShopItem.setShop(myShop);

        myContact1 = ShopFactory.eINSTANCE.createContact();
        myContact1.setName("John Doe");
        myContact1.setShop(myShop);

        myContact2 = ShopFactory.eINSTANCE.createContact();
        myContact2.setName("Doe John");
        myContact2.setShop(myShop);
    }

    /**
     * Creates the view
     */
    public void createView() {
        myView = BaseUIBTestUtils.createUIBTestView(this);

        myContext = IBindingContext.Factory.createContext(myView.getBody());

        myTree = new Tree(myView.getBody(), SWT.SINGLE | SWT.FULL_SELECTION);
        myTree.setHeaderVisible(true);
        myTreeColumn = new TreeColumn(myTree, SWT.LEAD);
        myTreeColumn.setWidth(300);
        // TODO: use listener to make this column 100%

        final IObservableList list = WritableList.withElementType(ShopPackage.Literals.SHOP);
        list.add(myShop);
        myTreeBinding = myContext.addViewer().viewer(myTree).model(list);
        myTreeColumnBinding = myTreeBinding.addColumn().column(myTreeColumn).model(SpecialBinding.TREE_ITEM);

        myContext.finish();

        IBindingContextSelectionProvider.Factory.adapt(myContext, myView.getSite());
        IDnDSupport.Factory.installOn(myContext);

        myView.getBody().layout();
    }

    @After
    public void disposeView() {
        if (myView != null) {
            myView.getSite().getPage().hideView(myView);
        }
    }

    @Test
    public void testContent() {

        final TreeViewer viewer = (TreeViewer) myTreeBinding.getViewer();
        /*
         * Make sure the tree is properly shown
         */
        viewer.expandAll(); // TODO SWTB
        yield();

        TreeItem[] items = myTree.getItems();
        assertEquals(1, items.length);
        assertEquals(myShop, items[0].getData());
        assertEquals(myShop.getName(), items[0].getText(0));

        items = items[0].getItems();
        assertEquals(2, items.length);
        assertTrue(items[0].getData() instanceof IConstantTreeItem);
        assertEquals("Contacts", items[0].getText(0));
        assertEquals(myShopItem, items[1].getData());
        assertEquals(myShopItem.getName(), items[1].getText(0));

        items = items[0].getItems();
        assertEquals(2, items.length);
        assertEquals(myContact1, items[0].getData());
        assertEquals(myContact1.getName(), items[0].getText(0));
        assertEquals(myContact2, items[1].getData());
        assertEquals(myContact2.getName(), items[1].getText(0));
    }
}