annotate dbus-d-javatests/jsrc/filetree/FileTreeLabelProvider.java @ 0:a5576806d36d

recreate repository without any libs for lightweight repository
author Frank Benoit <benoit@tionex.de>
date Sat, 20 Oct 2007 18:07:18 +0200
parents
children 65fb7ef02c50
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 package filetree;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 import java.io.File;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 import java.io.FileInputStream;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 import java.io.FileNotFoundException;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 import java.util.ArrayList;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 import java.util.List;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 import org.eclipse.jface.viewers.ILabelProvider;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 import org.eclipse.jface.viewers.ILabelProviderListener;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 import org.eclipse.jface.viewers.LabelProviderChangedEvent;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 import org.eclipse.swt.graphics.Image;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 import org.eclipse.swt.program.Program;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 /**
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 * This class provides the labels for the file tree
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 */
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 class FileTreeLabelProvider implements ILabelProvider {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 // The listeners
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 private List<ILabelProviderListener> listeners;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 // Images for tree nodes
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 private Image file;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 private Image dir;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 // Label provider state: preserve case of file names/directories
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 boolean preserveCase;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 /**
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 * Constructs a FileTreeLabelProvider
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 */
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 public FileTreeLabelProvider() {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 // Create the list to hold the listeners
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 listeners = new ArrayList<ILabelProviderListener>();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 // Create the images
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 try {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 file = new Image(null, new FileInputStream("icons/file_obj.gif"));
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 dir = new Image(null, new FileInputStream("icons/fldr_obj.gif"));
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 } catch (FileNotFoundException e) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 // Swallow it; we'll do without images
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 /**
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * Sets the preserve case attribute
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 *
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 * @param preserveCase
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 * the preserve case attribute
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 */
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 public void setPreserveCase(boolean preserveCase) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 this.preserveCase = preserveCase;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 // Since this attribute affects how the labels are computed,
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 // notify all the listeners of the change.
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 LabelProviderChangedEvent event = new LabelProviderChangedEvent(this);
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 for (int i = 0, n = listeners.size(); i < n; i++) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 ILabelProviderListener ilpl = (ILabelProviderListener) listeners
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 .get(i);
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 ilpl.labelProviderChanged(event);
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 /**
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * Gets the image to display for a node in the tree
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 *
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * @param arg0
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 * the node
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * @return Image
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 */
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 public Image getImage(Object arg0) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 // If the node represents a directory, return the directory image.
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 // Otherwise, return the file image.
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 // Program.findProgram(".txt" ).getImageData();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 return ((DataItem) arg0).isFolder() ? dir : file;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 /**
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 * Gets the text to display for a node in the tree
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 *
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * @param arg0
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * the node
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 * @return String
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 */
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 public String getText(Object arg0) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 // Get the name of the file
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 String text = ((DataItem) arg0).getName();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 // If name is blank, get the path
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 if (text.length() == 0) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 //text = ((DataItem) arg0).getPath();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 System.out.println( "Text: "+text );
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 // Check the case settings before returning the text
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 return preserveCase ? text : text.toUpperCase();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 /**
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 * Adds a listener to this label provider
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 *
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 * @param arg0
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 * the listener
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 */
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 public void addListener(ILabelProviderListener arg0) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 listeners.add(arg0);
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 /**
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 * Called when this LabelProvider is being disposed
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 */
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 public void dispose() {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 // Dispose the images
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 if (dir != null)
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 dir.dispose();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 if (file != null)
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 file.dispose();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 /**
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 * Returns whether changes to the specified property on the specified
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 * element would affect the label for the element
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 *
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 * @param arg0
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 * the element
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 * @param arg1
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 * the property
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 * @return boolean
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 */
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 public boolean isLabelProperty(Object arg0, String arg1) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 return false;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 /**
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 * Removes the listener
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 *
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 * @param arg0
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 * the listener to remove
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 */
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 public void removeListener(ILabelProviderListener arg0) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 listeners.remove(arg0);
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145