31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.LinkedHashMap;
34 import java.util.Map;
35 import javax.swing.event.TableModelEvent;
36 import javax.swing.table.AbstractTableModel;
37
38 public class FileSystemTableModel extends AbstractTableModel {
39
40 // Names of the columns.
41 // TODO - i18!
42 static protected String[] cNames = {"File Name", "Name", "Description"};
43
44 // Types of the columns.
45 static protected Class[] cTypes = { String.class,
46 String.class, String.class};
47
48 private FileTableFilter filter = null;
49
50 private FileTableNode root;
51 private ArrayList data;
52 private LinkedHashMap fileData;
53 private boolean allowTraversDirs;
54 private File defTemplateDir;
55
56 public FileSystemTableModel(String file, FileTableFilter flt, File defTemplateDir, boolean allowTraversDirs) {
57 setFilter(flt);
58 this.allowTraversDirs = allowTraversDirs;
59 this.defTemplateDir = defTemplateDir;
60 init(file);
61 }
62
63 public void fireTableDataChanged() {
64 }
65
66 public void resetTable(String file, FileTableFilter flt) {
67 setFilter(flt);
68 init(file);
69 fireTableChanged(new TableModelEvent(this));
70 }
71
72 public void resetTable(String file) {
84
85 public Class getColumnClass(int column) {
86 return cTypes[column];
87 }
88
89 private void setFilter(FileTableFilter flt) {
90 filter = flt;
91 }
92
93 private void init(String f) {
94 File file = new File(f);
95 init(file);
96 }
97
98 public File getCurrentDir() {
99 return root.getFile();
100 }
101
102 private void init(final File file) {
103 root = new FileTableNode(file, 'r');
104 data = new ArrayList();
105
106 // if(allowTraversDirs) {
107 // data.add(new FileTableNode(root.getFile(), 'u'));
108 // }
109 if (allowTraversDirs || !file.equals(defTemplateDir)) {
110 if (file.getParent() != null) {
111 data.add(new FileTableNode(file.getParentFile(), 'u'));
112 }
113 }
114
115 File [] lst = file.listFiles();
116 if (lst != null)
117 Arrays.sort(lst);
118
119 if (lst != null && lst.length > 0) {
120 // if (allowTraversDirs) {
121 for (int i = 0; i < lst.length; i++) {
122 if (lst[i].isDirectory()) {
123 data.add(new FileTableNode(lst[i], 'd'));
124 }
149 public File getNode(int rowIndex) {
150 if (rowIndex < 0 || rowIndex >= data.size() ) return null;
151 return ((FileTableNode) data.get(rowIndex)).getFile();
152 }
153
154
155 public int getRowCount() {
156 return data.size();
157 }
158
159 private String getConfigName(File file) {
160 return getInfo(file)[0];
161 }
162
163 private String getConfigDesc(File file) {
164 return getInfo(file)[1];
165 }
166
167 private String[] getInfo(File file) {
168
169 if (fileData == null) fileData = new LinkedHashMap() {
170 protected boolean removeEldestEntry(Map.Entry eldest) {
171 return size() > 500;
172 }
173 };
174 String key = file.getAbsolutePath();
175 String[] value = (String[]) fileData.get(key);
176 if (value != null) {
177 return value;
178 }
179
180 // refresh
181 try {
182 String[] data = new String[] {"", ""};
183 /*
184 String path = TemplateUtilities.getTemplateFromWd(file);
185 if (path != null) {
186 TemplateUtilities.ConfigInfo ci = TemplateUtilities.getConfigInfo(new File(path));
187 if (ci != null) {
188 data = new String[] {ci.getName(), ci.getDescription()};
189 }
190
191 }
192 */
193 TemplateUtilities.ConfigInfo ci = TemplateUtilities.getConfigInfo(file);
194 if (ci != null) {
195 data = new String[] {ci.getName(), ci.getDescription()};
|
31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.LinkedHashMap;
34 import java.util.Map;
35 import javax.swing.event.TableModelEvent;
36 import javax.swing.table.AbstractTableModel;
37
38 public class FileSystemTableModel extends AbstractTableModel {
39
40 // Names of the columns.
41 // TODO - i18!
42 static protected String[] cNames = {"File Name", "Name", "Description"};
43
44 // Types of the columns.
45 static protected Class[] cTypes = { String.class,
46 String.class, String.class};
47
48 private FileTableFilter filter = null;
49
50 private FileTableNode root;
51 private ArrayList<FileTableNode> data;
52 private LinkedHashMap<String, String[]> fileData;
53 private boolean allowTraversDirs;
54 private File defTemplateDir;
55
56 public FileSystemTableModel(String file, FileTableFilter flt, File defTemplateDir, boolean allowTraversDirs) {
57 setFilter(flt);
58 this.allowTraversDirs = allowTraversDirs;
59 this.defTemplateDir = defTemplateDir;
60 init(file);
61 }
62
63 public void fireTableDataChanged() {
64 }
65
66 public void resetTable(String file, FileTableFilter flt) {
67 setFilter(flt);
68 init(file);
69 fireTableChanged(new TableModelEvent(this));
70 }
71
72 public void resetTable(String file) {
84
85 public Class getColumnClass(int column) {
86 return cTypes[column];
87 }
88
89 private void setFilter(FileTableFilter flt) {
90 filter = flt;
91 }
92
93 private void init(String f) {
94 File file = new File(f);
95 init(file);
96 }
97
98 public File getCurrentDir() {
99 return root.getFile();
100 }
101
102 private void init(final File file) {
103 root = new FileTableNode(file, 'r');
104 data = new ArrayList<>();
105
106 // if(allowTraversDirs) {
107 // data.add(new FileTableNode(root.getFile(), 'u'));
108 // }
109 if (allowTraversDirs || !file.equals(defTemplateDir)) {
110 if (file.getParent() != null) {
111 data.add(new FileTableNode(file.getParentFile(), 'u'));
112 }
113 }
114
115 File [] lst = file.listFiles();
116 if (lst != null)
117 Arrays.sort(lst);
118
119 if (lst != null && lst.length > 0) {
120 // if (allowTraversDirs) {
121 for (int i = 0; i < lst.length; i++) {
122 if (lst[i].isDirectory()) {
123 data.add(new FileTableNode(lst[i], 'd'));
124 }
149 public File getNode(int rowIndex) {
150 if (rowIndex < 0 || rowIndex >= data.size() ) return null;
151 return ((FileTableNode) data.get(rowIndex)).getFile();
152 }
153
154
155 public int getRowCount() {
156 return data.size();
157 }
158
159 private String getConfigName(File file) {
160 return getInfo(file)[0];
161 }
162
163 private String getConfigDesc(File file) {
164 return getInfo(file)[1];
165 }
166
167 private String[] getInfo(File file) {
168
169 if (fileData == null) fileData = new LinkedHashMap<String, String[]>() {
170 protected boolean removeEldestEntry(Map.Entry<String, String[]> eldest) {
171 return size() > 500;
172 }
173 };
174 String key = file.getAbsolutePath();
175 String[] value = fileData.get(key);
176 if (value != null) {
177 return value;
178 }
179
180 // refresh
181 try {
182 String[] data = new String[] {"", ""};
183 /*
184 String path = TemplateUtilities.getTemplateFromWd(file);
185 if (path != null) {
186 TemplateUtilities.ConfigInfo ci = TemplateUtilities.getConfigInfo(new File(path));
187 if (ci != null) {
188 data = new String[] {ci.getName(), ci.getDescription()};
189 }
190
191 }
192 */
193 TemplateUtilities.ConfigInfo ci = TemplateUtilities.getConfigInfo(file);
194 if (ci != null) {
195 data = new String[] {ci.getName(), ci.getDescription()};
|