155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project/* 255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Licensed under the Eclipse Public License, Version 1.0 (the "License"); 555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * you may not use this file except in compliance with the License. 655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * You may obtain a copy of the License at 755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * http://www.eclipse.org/org/documents/epl-v10.php 955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 1055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * See the License for the specific language governing permissions and 1455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * limitations under the License. 1555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 1655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 17f2880494706ad8dfd43e21471096216be4ca7c69Xavier Ducrohetpackage com.android.ide.eclipse.adt.internal.ui; 1855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 19026ba97e98e0527d910e15c4e1512893a777a8d2Xavier Ducrohetimport com.android.ide.common.resources.ResourceFile; 20026ba97e98e0527d910e15c4e1512893a777a8d2Xavier Ducrohetimport com.android.ide.common.resources.ResourceItem; 213bd45f0b16f5ebfafd8080a0f17f71d85c9840edXavier Ducrohetimport com.android.resources.ResourceType; 2255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 2355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.jface.viewers.ILabelProvider; 2455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.jface.viewers.ILabelProviderListener; 2555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.jface.viewers.ITableLabelProvider; 2655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.swt.graphics.Image; 2755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.ui.ISharedImages; 2855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectimport org.eclipse.ui.PlatformUI; 2955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 3055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project/** 3155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Label provider for the Resource Explorer TreeView. 3255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Each level of the tree is represented by a different class. 3355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * <ul> 3455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * <li>{@link ResourceType}. This represents the list of existing Resource Type present 3555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * in the resources. This can be matched to the subclasses inside the class <code>R</code> 3655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * </li> 3755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * <ul> 3855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * <li>{@link ResourceItem}. This represents one resource. The actual type can be 3955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * {@link ConfigurableResourceItem} (which can exist in various alternate versions), 4055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * or {@link IdResourceItem}. 4155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * This is similar to the resource Ids defined as <code>R.sometype.id</code>. 4255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * </li> 4355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * <ul> 4455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * <li>{@link ResourceFile}. This represents a particular version of the {@link ResourceItem}. 4555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * It is displayed as a list of resource qualifier. 4655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * </li> 47da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet * </ul> 48da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet * </ul> 49da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet * </ul> 50da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet * 5155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @see ResourceContentProvider 5255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 5355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectpublic class ResourceLabelProvider implements ILabelProvider, ITableLabelProvider { 5455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project private Image mWarningImage; 55da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet 5655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public ResourceLabelProvider() { 5755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project mWarningImage = PlatformUI.getWorkbench().getSharedImages().getImageDescriptor( 5855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project ISharedImages.IMG_OBJS_WARN_TSK).createImage(); 5955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 6055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 6155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project /** 6255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @see #getColumnImage(Object, int) 6355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 64ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 6555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public Image getImage(Object element) { 6655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // pass 6755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return null; 6855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 6955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 7055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project /** 7155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @see #getColumnText(Object, int) 7255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 73ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 7455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public String getText(Object element) { 7555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return getColumnText(element, 0); 7655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 7755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 78ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 7955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public void addListener(ILabelProviderListener listener) { 8055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // pass 8155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 8255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 83ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 8455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public void dispose() { 8555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project mWarningImage.dispose(); 8655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 8755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 88ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 8955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public boolean isLabelProperty(Object element, String property) { 9055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return false; 9155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 9255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 93ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 9455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public void removeListener(ILabelProviderListener listener) { 9555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project // pass 9655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 9755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 98ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 9955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public Image getColumnImage(Object element, int columnIndex) { 10055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (columnIndex == 1) { 101da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet if (element instanceof ResourceItem) { 102da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet ResourceItem item = (ResourceItem)element; 10355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (item.hasDefault() == false) { 10455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return mWarningImage; 10555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 10655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 10755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 10855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return null; 10955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 11055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 111ab36f4e7488358dea4ab6b54ee2b7bef3da0232bTor Norbye @Override 11255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public String getColumnText(Object element, int columnIndex) { 11355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project switch (columnIndex) { 11455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case 0: 11555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project if (element instanceof ResourceType) { 11655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return ((ResourceType)element).getDisplayName(); 11755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } else if (element instanceof ResourceItem) { 11855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return ((ResourceItem)element).getName(); 11955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } else if (element instanceof ResourceFile) { 12055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return ((ResourceFile)element).getFolder().getConfiguration().toDisplayString(); 12155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 12255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project break; 12355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project case 1: 124da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet if (element instanceof ResourceItem) { 125da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet ResourceItem item = (ResourceItem)element; 126da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet if (item.isDeclaredInline()) { 12755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return "Declared inline"; 128da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet } else { 129da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet int count = item.getAlternateCount(); 130da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet if (count > 0) { 131da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet if (item.hasDefault()) { 132da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet count++; 133da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet } 134da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet return String.format("%1$d version(s)", count); 135da02c18ad5b54d97a1fcfd5f6633062b0c873c22Xavier Ducrohet } 13655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 13755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 13855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return null; 13955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 14055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return null; 14155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 14255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project} 143