Mercurial > projects > dbus-d
annotate dbus-d-javatests/jsrc/testapp/FileBrowserSample.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 |
rev | line source |
---|---|
0
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1 /******************************************************************************* |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 * All Right Reserved. Copyright (c) 1998, 2004 Jackwind Li Guojie |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 * |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 * Created on Mar 9, 2004 7:07:16 PM by JACK $Id$ |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 * |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 ******************************************************************************/ |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 package testapp; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
10 import java.io.File; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 import org.eclipse.jface.action.Action; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 import org.eclipse.jface.action.ToolBarManager; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
14 import org.eclipse.jface.resource.ImageRegistry; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
15 import org.eclipse.swt.SWT; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 import org.eclipse.swt.custom.TreeEditor; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 import org.eclipse.swt.events.SelectionEvent; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 import org.eclipse.swt.events.SelectionListener; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 import org.eclipse.swt.events.TreeEvent; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 import org.eclipse.swt.events.TreeListener; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 import org.eclipse.swt.graphics.Image; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 import org.eclipse.swt.graphics.ImageData; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 import org.eclipse.swt.graphics.Point; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 import org.eclipse.swt.layout.GridData; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 import org.eclipse.swt.layout.GridLayout; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 import org.eclipse.swt.program.Program; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 import org.eclipse.swt.widgets.DirectoryDialog; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 import org.eclipse.swt.widgets.Display; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 import org.eclipse.swt.widgets.Event; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 import org.eclipse.swt.widgets.Listener; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 import org.eclipse.swt.widgets.Shell; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 import org.eclipse.swt.widgets.Text; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 import org.eclipse.swt.widgets.ToolBar; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 import org.eclipse.swt.widgets.Tree; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 import org.eclipse.swt.widgets.TreeItem; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 public class FileBrowserSample { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 Display display = new Display(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 Shell shell = new Shell(display); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 Tree tree; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 File rootDir; |
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 public FileBrowserSample() { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 Action actionSetRootDir = new Action("Set Root Dir") { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 public void run() { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 DirectoryDialog dialog = new DirectoryDialog(shell); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 String path = dialog.open(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 if (path != null) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 setRootDir(new File(path)); |
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 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 }; |
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 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 ToolBar toolBar = new ToolBar(shell, SWT.FLAT); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 ToolBarManager manager = new ToolBarManager(toolBar); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 manager.add(actionSetRootDir); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
60 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 manager.update(true); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 shell.setLayout(new GridLayout()); |
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 tree = new Tree(shell, SWT.BORDER); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
66 tree.setLayoutData(new GridData(GridData.FILL_BOTH)); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
67 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
68 setRootDir(new File("C:/")); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
69 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 tree.addTreeListener(new TreeListener() { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 public void treeCollapsed(TreeEvent e) { |
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 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 public void treeExpanded(TreeEvent e) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 TreeItem item = (TreeItem) e.item; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 TreeItem[] children = item.getItems(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 for (int i = 0; i < children.length; i++) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 if (children[i].getData() == null) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 children[i].dispose(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
81 else // Child files already added to the tree. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 return; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 File[] files = ((File) item.getData()).listFiles(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 for (int i = 0; files != null && i < files.length; i++) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 addFileToTree(item, files[i]); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
88 }); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
89 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 tree.addSelectionListener(new SelectionListener() { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
91 public void widgetSelected(SelectionEvent e) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
92 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
93 // Gets called when a tree item is double-clicked. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
94 public void widgetDefaultSelected(SelectionEvent e) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
95 TreeItem item = (TreeItem) e.item; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
96 File file = (File) item.getData(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 if (Program.launch(file.getAbsolutePath())) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
98 System.out.println("File has been launched: " + file); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
99 } else { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 System.out.println("Unable to launch file: " + file); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 } |
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 }); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
104 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 shell.setSize(400, 260); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 shell.open(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 //textUser.forceFocus(); |
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 // Set up the event loop. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 while (!shell.isDisposed()) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 if (!display.readAndDispatch()) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 // If no more entries in event queue |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 display.sleep(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
114 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 display.dispose(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 } |
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 * Sets the root directory to browse from. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 * |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 * @param root |
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 private void setRootDir(File root) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 // validates the root first. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
127 if( (!root.isDirectory()) || (!root.exists())) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 throw new IllegalArgumentException("Invalid root: " + root); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 this.rootDir = root; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
131 shell.setText("Now browsing: " + root.getAbsolutePath()); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
132 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
133 // Remove all the items in the tree. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
134 if (tree.getItemCount() > 0) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 TreeItem[] items = tree.getItems(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
136 for (int i = 0; i < items.length; i++) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
137 items[i].dispose(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 // Dispose itself and all of its descendants. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
139 } |
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 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
142 // Adds files under the root to the tree. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
143 File[] files = root.listFiles(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
144 for(int i=0; files != null && i < files.length; i++) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 addFileToTree(tree, files[i]); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
146 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
147 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
148 /** |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
149 * Adds the given file to the tree. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
150 * |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
151 * @param parent |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
152 * @param file |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
153 */ |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
154 private void addFileToTree(Object parent, File file) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
155 TreeItem item = null; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
156 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
157 if (parent instanceof Tree) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
158 item = new TreeItem((Tree) parent, SWT.NULL); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
159 else if (parent instanceof TreeItem) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
160 item = new TreeItem((TreeItem) parent, SWT.NULL); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
161 else |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
162 throw new IllegalArgumentException( |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
163 "parent should be a tree or a tree item: " + parent); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
164 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
165 item.setText(file.getName()); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
166 item.setImage(getIcon(file)); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
167 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
168 item.setData(file); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
169 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
170 if (file.isDirectory()) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
171 // // recursively adds all the children of this file. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 // File[] files = file.listFiles(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
173 // for(int i=0; i<files.length; i++) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
174 // buildTree(item, files[i]); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
175 if (file.list() != null && file.list().length > 0) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
176 new TreeItem(item, SWT.NULL); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
177 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
178 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
179 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
180 private ImageRegistry imageRegistry; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
181 Image iconFolder = new Image(shell.getDisplay(), "icons/java2s.gif"); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
182 Image iconFile = new Image(shell.getDisplay(), "icons/java2s.gif"); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
183 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
184 /** |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
185 * Returns an icon representing the specified file. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
186 * |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
187 * @param file |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
188 * @return |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
189 */ |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
190 private Image getIcon(File file) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
191 if (file.isDirectory()) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
192 return iconFolder; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
193 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
194 int lastDotPos = file.getName().indexOf('.'); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
195 if (lastDotPos == -1) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
196 return iconFile; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
197 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
198 Image image = getIcon(file.getName().substring(lastDotPos + 1)); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
199 return image == null ? iconFile : image; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
200 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
201 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
202 /** |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
203 * Returns the icon for the file type with the specified extension. |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
204 * |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
205 * @param extension |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
206 * @return |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
207 */ |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
208 private Image getIcon(String extension) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
209 if (imageRegistry == null) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
210 imageRegistry = new ImageRegistry(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
211 Image image = imageRegistry.get(extension); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
212 if (image != null) |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
213 return image; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
214 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
215 Program program = Program.findProgram(extension); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
216 ImageData imageData = (program == null ? null : program.getImageData()); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
217 if (imageData != null) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
218 image = new Image(shell.getDisplay(), imageData); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
219 imageRegistry.put(extension, image); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
220 } else { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
221 image = iconFile; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
222 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
223 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
224 return image; |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
225 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
226 |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
227 public static void main(String[] args) { |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
228 new FileBrowserSample(); |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
229 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
230 } |
a5576806d36d
recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
231 |