com.android.ide.eclipse.adt.ui.ResourceLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for com.android.ide.eclipse.adt.ui.ResourceLabelProvider.java

Source

/*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * Licensed under the Eclipse Public License, Version 1.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.eclipse.org/org/documents/epl-v10.php
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.ide.eclipse.adt.ui;

import com.android.ide.eclipse.common.resources.IIdResourceItem;
import com.android.ide.eclipse.common.resources.ResourceItem;
import com.android.ide.eclipse.common.resources.ResourceType;
import com.android.ide.eclipse.editors.resources.manager.ConfigurableResourceItem;
import com.android.ide.eclipse.editors.resources.manager.IdResourceItem;
import com.android.ide.eclipse.editors.resources.manager.ResourceFile;

import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;

/**
 * Label provider for the Resource Explorer TreeView.
 * Each level of the tree is represented by a different class.
 * <ul>
 * <li>{@link ResourceType}. This represents the list of existing Resource Type present
 * in the resources. This can be matched to the subclasses inside the class <code>R</code>
 * </li>
 * <ul>
 * <li>{@link ResourceItem}. This represents one resource. The actual type can be
 * {@link ConfigurableResourceItem} (which can exist in various alternate versions),
 * or {@link IdResourceItem}.
 * This is similar to the resource Ids defined as <code>R.sometype.id</code>.
 * </li>
 * <ul>
 * <li>{@link ResourceFile}. This represents a particular version of the {@link ResourceItem}.
 * It is displayed as a list of resource qualifier.
 * </li>
 * </ul> 
 * </ul> 
 * </ul> 
 * 
 * @see ResourceContentProvider
 */
public class ResourceLabelProvider implements ILabelProvider, ITableLabelProvider {
    private Image mWarningImage;

    public ResourceLabelProvider() {
        mWarningImage = PlatformUI.getWorkbench().getSharedImages()
                .getImageDescriptor(ISharedImages.IMG_OBJS_WARN_TSK).createImage();
    }

    /**
     * @see #getColumnImage(Object, int)
     */
    public Image getImage(Object element) {
        // pass
        return null;
    }

    /**
     * @see #getColumnText(Object, int)
     */
    public String getText(Object element) {
        return getColumnText(element, 0);
    }

    public void addListener(ILabelProviderListener listener) {
        // pass
    }

    public void dispose() {
        mWarningImage.dispose();
    }

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

    public void removeListener(ILabelProviderListener listener) {
        // pass
    }

    public Image getColumnImage(Object element, int columnIndex) {
        if (columnIndex == 1) {
            if (element instanceof ConfigurableResourceItem) {
                ConfigurableResourceItem item = (ConfigurableResourceItem) element;
                if (item.hasDefault() == false) {
                    return mWarningImage;
                }
            }
        }
        return null;
    }

    public String getColumnText(Object element, int columnIndex) {
        switch (columnIndex) {
        case 0:
            if (element instanceof ResourceType) {
                return ((ResourceType) element).getDisplayName();
            } else if (element instanceof ResourceItem) {
                return ((ResourceItem) element).getName();
            } else if (element instanceof ResourceFile) {
                return ((ResourceFile) element).getFolder().getConfiguration().toDisplayString();
            }
            break;
        case 1:
            if (element instanceof ConfigurableResourceItem) {
                ConfigurableResourceItem item = (ConfigurableResourceItem) element;
                int count = item.getAlternateCount();
                if (count > 0) {
                    if (item.hasDefault()) {
                        count++;
                    }
                    return String.format("%1$d version(s)", count);
                }
            } else if (element instanceof IIdResourceItem) {
                IIdResourceItem idResource = (IIdResourceItem) element;
                if (idResource.isDeclaredInline()) {
                    return "Declared inline";
                }
            }
            return null;
        }
        return null;
    }
}