org.eclipse.ui.tests.statushandlers.LabelProviderWrapperTest.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.ui.tests.statushandlers.LabelProviderWrapperTest.java

Source

/*******************************************************************************
 * Copyright (c) 2009 IBM Corporation 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:
 *     IBM Corporation - initial API and implementation
 ******************************************************************************/

package org.eclipse.ui.tests.statushandlers;

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.internal.statushandlers.IStatusDialogConstants;
import org.eclipse.ui.internal.statushandlers.LabelProviderWrapper;
import org.eclipse.ui.statushandlers.IStatusAdapterConstants;
import org.eclipse.ui.statushandlers.StatusAdapter;

import junit.framework.TestCase;

/**
 * @since 3.5
 *
 */
public class LabelProviderWrapperTest extends TestCase {

    private LabelProviderWrapper wrapper;
    private Map dialogState = new HashMap();

    /* (non-Javadoc)
     * @see junit.framework.TestCase#setUp()
     */
    protected void setUp() throws Exception {
        super.setUp();
        dialogState = new HashMap();
        dialogState.put(IStatusDialogConstants.STATUS_ADAPTERS, new HashSet());
        ((Collection) dialogState.get(IStatusDialogConstants.STATUS_ADAPTERS)).add(Status.OK_STATUS);
        wrapper = new LabelProviderWrapper(dialogState);
    }

    /* (non-Javadoc)
     * @see junit.framework.TestCase#tearDown()
     */
    protected void tearDown() throws Exception {
        super.tearDown();
        wrapper = null;
    }

    public void testDisposing() {
        final boolean[] disposed = new boolean[] { false };
        ITableLabelProvider provider = new ITableLabelProvider() {
            public void removeListener(ILabelProviderListener listener) {
            }

            public boolean isLabelProperty(Object element, String property) {
                return false;
            }

            public void dispose() {
                disposed[0] = true;
            }

            public void addListener(ILabelProviderListener listener) {
            }

            public String getColumnText(Object element, int columnIndex) {
                return null;
            }

            public Image getColumnImage(Object element, int columnIndex) {
                return null;
            }
        };
        dialogState.put(IStatusDialogConstants.CUSTOM_LABEL_PROVIDER, provider);
        dialogState.put(IStatusDialogConstants.MODALITY_SWITCH, Boolean.TRUE);
        wrapper.dispose();
        assertFalse("Provider should not be disposed during modality switch", disposed[0]);

        dialogState.put(IStatusDialogConstants.MODALITY_SWITCH, Boolean.FALSE);
        wrapper.dispose();
        assertTrue("Provider should be disposed", disposed[0]);
    }

    public void testImages() {
        StatusAdapter saError = new StatusAdapter(
                new Status(IStatus.ERROR, "org.eclipse.ui.tests", "errorMessage"));
        assertEquals(wrapper.getSWTImage(SWT.ICON_ERROR), wrapper.getImage(saError));

        StatusAdapter saWarning = new StatusAdapter(
                new Status(IStatus.WARNING, "org.eclipse.ui.tests", "warningMessage"));
        assertEquals(wrapper.getSWTImage(SWT.ICON_WARNING), wrapper.getImage(saWarning));

        StatusAdapter saInfo = new StatusAdapter(new Status(IStatus.INFO, "org.eclipse.ui.tests", "infoMessage"));
        assertEquals(wrapper.getSWTImage(SWT.ICON_INFORMATION), wrapper.getImage(saInfo));

        StatusAdapter cancelOK = new StatusAdapter(
                new Status(IStatus.CANCEL, "org.eclipse.ui.tests", "cancelMessage"));
        assertEquals(wrapper.getSWTImage(SWT.ICON_INFORMATION), wrapper.getImage(cancelOK));

        StatusAdapter saOK = new StatusAdapter(new Status(IStatus.OK, "org.eclipse.ui.tests", "okMessage"));
        assertEquals(wrapper.getSWTImage(SWT.ICON_INFORMATION), wrapper.getImage(saOK));
    }

    /*
     *   StatusAdapter contains all information necessary to display the dialog. 
     */
    public void testProvidedText_1() {
        final String title = "title";
        final String message = "errorMessage";

        StatusAdapter saError = new StatusAdapter(new Status(IStatus.ERROR, "org.eclipse.ui.tests", message));
        saError.setProperty(IStatusAdapterConstants.TITLE_PROPERTY, title);

        assertEquals(title, wrapper.getMainMessage(saError));
        assertEquals(message, wrapper.getSecondaryMessage(saError));

        //pretend to have more statuses
        ((Collection) dialogState.get(IStatusDialogConstants.STATUS_ADAPTERS)).add(Status.CANCEL_STATUS);

        assertEquals(message, wrapper.getMainMessage(saError));
        assertEquals(title, wrapper.getColumnText(saError, 0));
    }

    public void testDecorating() {
        dialogState.put(IStatusDialogConstants.DECORATOR, new ILabelDecorator() {
            public void removeListener(ILabelProviderListener listener) {
                // TODO Auto-generated method stub

            }

            public boolean isLabelProperty(Object element, String property) {
                // TODO Auto-generated method stub
                return false;
            }

            public void dispose() {
                // TODO Auto-generated method stub

            }

            public void addListener(ILabelProviderListener listener) {
                // TODO Auto-generated method stub

            }

            public String decorateText(String text, Object element) {
                return "decorated" + text;
            }

            public Image decorateImage(Image image, Object element) {
                // TODO Auto-generated method stub
                return null;
            }
        });
        StatusAdapter saError = new StatusAdapter(new Status(IStatus.ERROR, "org.eclipse.ui.tests", "message"));
        saError.setProperty(IStatusAdapterConstants.TITLE_PROPERTY, "title");
        assertEquals("decoratedtitle", wrapper.getMainMessage(saError));
        assertEquals("decoratedmessage", wrapper.getSecondaryMessage(saError));
    }
}