1/*
2 * Copyright (C) 2007 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.ddmuilib.explorer;
18
19import com.android.ddmlib.FileListingService;
20import com.android.ddmlib.FileListingService.FileEntry;
21
22import org.eclipse.jface.viewers.ILabelProvider;
23import org.eclipse.jface.viewers.ILabelProviderListener;
24import org.eclipse.jface.viewers.ITableLabelProvider;
25import org.eclipse.swt.graphics.Image;
26
27/**
28 * Label provider for the FileEntry.
29 */
30class FileLabelProvider implements ILabelProvider, ITableLabelProvider {
31
32    private Image mFileImage;
33    private Image mFolderImage;
34    private Image mPackageImage;
35    private Image mOtherImage;
36
37    /**
38     * Creates Label provider with custom images.
39     * @param fileImage the Image to represent a file
40     * @param folderImage the Image to represent a folder
41     * @param packageImage the Image to represent a .apk file. If null,
42     *      fileImage is used instead.
43     * @param otherImage the Image to represent all other entry type.
44     */
45    public FileLabelProvider(Image fileImage, Image folderImage,
46            Image packageImage, Image otherImage) {
47        mFileImage = fileImage;
48        mFolderImage = folderImage;
49        mOtherImage = otherImage;
50        if (packageImage != null) {
51            mPackageImage = packageImage;
52        } else {
53            mPackageImage = fileImage;
54        }
55    }
56
57    /**
58     * Creates a label provider with default images.
59     *
60     */
61    public FileLabelProvider() {
62
63    }
64
65    /* (non-Javadoc)
66     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
67     */
68    @Override
69    public Image getImage(Object element) {
70        return null;
71    }
72
73    /* (non-Javadoc)
74     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
75     */
76    @Override
77    public String getText(Object element) {
78        return null;
79    }
80
81    @Override
82    public Image getColumnImage(Object element, int columnIndex) {
83        if (columnIndex == 0) {
84            if (element instanceof FileEntry) {
85                FileEntry entry = (FileEntry)element;
86                switch (entry.getType()) {
87                    case FileListingService.TYPE_FILE:
88                    case FileListingService.TYPE_LINK:
89                        // get the name and extension
90                        if (entry.isApplicationPackage()) {
91                            return mPackageImage;
92                        }
93                        return mFileImage;
94                    case FileListingService.TYPE_DIRECTORY:
95                    case FileListingService.TYPE_DIRECTORY_LINK:
96                        return mFolderImage;
97                }
98            }
99
100            // default case return a different image.
101            return mOtherImage;
102        }
103        return null;
104    }
105
106    @Override
107    public String getColumnText(Object element, int columnIndex) {
108        if (element instanceof FileEntry) {
109            FileEntry entry = (FileEntry)element;
110
111            switch (columnIndex) {
112                case 0:
113                    return entry.getName();
114                case 1:
115                    return entry.getSize();
116                case 2:
117                    return entry.getDate();
118                case 3:
119                    return entry.getTime();
120                case 4:
121                    return entry.getPermissions();
122                case 5:
123                    return entry.getInfo();
124            }
125        }
126        return null;
127    }
128
129    /* (non-Javadoc)
130     * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
131     */
132    @Override
133    public void addListener(ILabelProviderListener listener) {
134        // we don't need listeners.
135    }
136
137    /* (non-Javadoc)
138     * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
139     */
140    @Override
141    public void dispose() {
142    }
143
144    /* (non-Javadoc)
145     * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
146     */
147    @Override
148    public boolean isLabelProperty(Object element, String property) {
149        return false;
150    }
151
152    /* (non-Javadoc)
153     * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
154     */
155    @Override
156    public void removeListener(ILabelProviderListener listener) {
157        // we don't need listeners
158    }
159
160}
161