blob: 5bf8615d8cf5c11b880481dec723bda7d29e8245 [file] [log] [blame]
/*
* 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.internal.ui;
import com.android.ide.common.resources.ResourceFile;
import com.android.ide.common.resources.ResourceItem;
import com.android.resources.ResourceType;
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)
*/
@Override
public Image getImage(Object element) {
// pass
return null;
}
/**
* @see #getColumnText(Object, int)
*/
@Override
public String getText(Object element) {
return getColumnText(element, 0);
}
@Override
public void addListener(ILabelProviderListener listener) {
// pass
}
@Override
public void dispose() {
mWarningImage.dispose();
}
@Override
public boolean isLabelProperty(Object element, String property) {
return false;
}
@Override
public void removeListener(ILabelProviderListener listener) {
// pass
}
@Override
public Image getColumnImage(Object element, int columnIndex) {
if (columnIndex == 1) {
if (element instanceof ResourceItem) {
ResourceItem item = (ResourceItem)element;
if (item.hasDefault() == false) {
return mWarningImage;
}
}
}
return null;
}
@Override
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 ResourceItem) {
ResourceItem item = (ResourceItem)element;
if (item.isDeclaredInline()) {
return "Declared inline";
} else {
int count = item.getAlternateCount();
if (count > 0) {
if (item.hasDefault()) {
count++;
}
return String.format("%1$d version(s)", count);
}
}
}
return null;
}
return null;
}
}