KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > tasklist > usertasks > translators > ICalImportFormat


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.tasklist.usertasks.translators;
21
22 import java.io.BufferedReader JavaDoc;
23 import java.io.File JavaDoc;
24 import java.io.FileInputStream JavaDoc;
25 import java.io.IOException JavaDoc;
26 import java.io.InputStream JavaDoc;
27 import java.io.InputStreamReader JavaDoc;
28 import java.io.Reader JavaDoc;
29 import java.io.StringReader JavaDoc;
30 import java.io.StringWriter JavaDoc;
31 import java.io.Writer JavaDoc;
32 import java.net.MalformedURLException JavaDoc;
33 import java.net.URL JavaDoc;
34 import java.text.ParseException JavaDoc;
35 import java.text.SimpleDateFormat JavaDoc;
36 import java.util.ArrayList JavaDoc;
37 import java.util.Iterator JavaDoc;
38 import java.util.List JavaDoc;
39 import java.util.logging.Level JavaDoc;
40
41 import javax.swing.filechooser.FileSystemView JavaDoc;
42 import net.fortuna.ical4j.data.CalendarBuilder;
43 import net.fortuna.ical4j.data.ParserException;
44 import net.fortuna.ical4j.model.Calendar;
45 import net.fortuna.ical4j.model.CategoryList;
46 import net.fortuna.ical4j.model.Component;
47 import net.fortuna.ical4j.model.Parameter;
48 import net.fortuna.ical4j.model.ParameterList;
49 import net.fortuna.ical4j.model.Property;
50 import net.fortuna.ical4j.model.PropertyList;
51 import net.fortuna.ical4j.model.property.Categories;
52 import net.fortuna.ical4j.model.property.DateProperty;
53 import net.fortuna.ical4j.model.property.PercentComplete;
54 import net.fortuna.ical4j.model.property.Priority;
55 import net.fortuna.ical4j.util.CompatibilityHints;
56
57 import org.netbeans.modules.tasklist.core.export.ExportImportFormat;
58 import org.netbeans.modules.tasklist.core.export.ExportImportProvider;
59 import org.netbeans.modules.tasklist.core.export.OpenFilePanel;
60 import org.netbeans.modules.tasklist.core.util.ExtensionFileFilter;
61 import org.netbeans.modules.tasklist.core.util.SimpleWizardPanel;
62 import org.netbeans.modules.tasklist.usertasks.util.TreeAbstraction;
63 import org.netbeans.modules.tasklist.usertasks.util.UTUtils;
64 import org.netbeans.modules.tasklist.usertasks.model.UserTask;
65 import org.netbeans.modules.tasklist.usertasks.model.UserTaskList;
66 import org.netbeans.modules.tasklist.usertasks.UserTaskView;
67 import org.netbeans.modules.tasklist.usertasks.model.Dependency;
68 import org.netbeans.modules.tasklist.usertasks.util.UnaryFunction;
69 import org.openide.DialogDisplayer;
70 import org.openide.NotifyDescriptor;
71 import org.openide.WizardDescriptor;
72 import org.openide.filesystems.FileObject;
73 import org.openide.filesystems.URLMapper;
74 import org.openide.text.Line;
75 import org.openide.util.NbBundle;
76
77 /**
78  * This class provides import/export capabilities for the iCalendar calendar
79  * format (used by for example KDE's Konqueror calendar/todoitem tool)
80  * as specified in RFC 2445 with the following exceptions:
81  *
82  * @todo Store the alarm-part of the associated time as an VALARM field (but
83  * I guess I must hardcode some of the fields (the alarm action etc);)
84  *
85  * @todo Trond: I have left traces after a class named AssociatedTime in this
86  * file. I might need some of it again when we decide we want to
87  * event support.
88  *
89  * The iCalendar supports other "tags" for a VTODO item than Tasklist. In
90  * order to avoid loosing such information, these unknown tags are stored
91  * inside the UserTaskList object.
92  *
93  * @author Tor Norbye
94  * @author Trond Norbye
95  * @author tl
96  */

97 public class ICalImportFormat implements ExportImportFormat {
98     protected final static String JavaDoc
99         CHOOSE_FILE_PANEL_PROP = "ChooseFilePanel"; // NOI18N
100

101     private static final String JavaDoc DATEFORMATZ = "yyyyMMdd'T'HHmmss'Z'"; // NOI18N
102
private static final SimpleDateFormat JavaDoc formatter =
103             new SimpleDateFormat JavaDoc(DATEFORMATZ);
104     
105     /** Used to read in dependencies */
106     private static class Dep {
107         /** Dependency type. */
108         public int type;
109         
110         /** this task depends on another one */
111         public UserTask ut;
112         
113         /** ut depends on the task with this UID */
114         public String JavaDoc dependsOn;
115     }
116     
117     /**
118      * Converts a stream to RFC 2445 line endings.
119      *
120      * @param r default system line endings
121      * @param w \r\n terminated strings
122      */

123     private static void convertToRFC2445(Reader JavaDoc r, Writer JavaDoc w) throws
124     IOException JavaDoc {
125         BufferedReader JavaDoc br = new BufferedReader JavaDoc(r);
126         String JavaDoc line;
127         while ((line = br.readLine()) != null) {
128             w.write(line);
129             w.write("\r\n");
130         }
131     }
132     
133     /**
134      * Reads an .ics file from the specified stream.
135      *
136      * @param utl a task list
137      * @param is .ics
138      */

139     public static void read(final UserTaskList utl, InputStream JavaDoc is) throws
140         IOException JavaDoc, ParserException {
141         CompatibilityHints.setHintEnabled(
142                 CompatibilityHints.KEY_RELAXED_UNFOLDING, true);
143         CompatibilityHints.setHintEnabled(
144                 CompatibilityHints.KEY_RELAXED_VALIDATION, true);
145         CompatibilityHints.setHintEnabled(
146                 CompatibilityHints.KEY_RELAXED_PARSING, true);
147         CalendarBuilder cb = new MyCalendarBuilder();
148         
149         // <Dep> used for reading dependencies
150
List JavaDoc<Dep> dependencies = new ArrayList JavaDoc<Dep>();
151     
152         Reader JavaDoc r = new InputStreamReader JavaDoc(is, "UTF-8");
153         StringWriter JavaDoc w = new StringWriter JavaDoc();
154         convertToRFC2445(r, w);
155         r = new StringReader JavaDoc(w.getBuffer().toString());
156         
157         Calendar cal = cb.build(r);
158         for (Iterator JavaDoc i = cal.getComponents().iterator(); i.hasNext();) {
159             Component component = (Component) i.next();
160             if (component.getName().equals(Component.VTODO)) {
161                 readVTODO(utl, component, dependencies);
162             }
163         }
164
165         // Dependencies
166
for (int i = 0; i < dependencies.size(); i++) {
167             Dep d = (Dep) dependencies.get(i);
168             UserTask ut = utl.findItem(
169                 utl.getSubtasks().iterator(), d.dependsOn);
170             if (ut != null) {
171                 d.ut.getDependencies().add(new Dependency(ut, d.type));
172             }
173         }
174
175         dependencies.clear();
176
177         TreeAbstraction tree = new TreeAbstraction() {
178             public Object JavaDoc getChild(Object JavaDoc obj, int index) {
179                 if (obj instanceof UserTaskList) {
180                     return ((UserTaskList) obj).getSubtasks().get(index);
181                 } else {
182                     return ((UserTask) obj).getSubtasks().get(index);
183                 }
184             }
185             public int getChildCount(Object JavaDoc obj) {
186                 if (obj instanceof UserTaskList) {
187                     return ((UserTaskList) obj).getSubtasks().size();
188                 } else {
189                     return ((UserTask) obj).getSubtasks().size();
190                 }
191             }
192             public Object JavaDoc getRoot() {
193                 return utl;
194             }
195         };
196         UTUtils.processDepthFirst(tree, new UnaryFunction() {
197             public Object JavaDoc compute(Object JavaDoc obj) {
198                 if (obj instanceof UserTask) {
199                     ((UserTask) obj).setUpdateLastModified(true);
200                 }
201                 return null;
202             }
203         });
204         utl.userObject = cal;
205     }
206     
207     public void doExportImport(ExportImportProvider provider, WizardDescriptor wd) {
208         OpenFilePanel panel =
209             (OpenFilePanel) wd.getProperty(CHOOSE_FILE_PANEL_PROP);
210         File JavaDoc p = panel.getFile();
211         if (p == null || !p.exists()) {
212             DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(
213                 NbBundle.getMessage(ICalImportFormat.class,
214                     "FileDoesNotExist"), // NOI18N
215
NotifyDescriptor.ERROR_MESSAGE));
216             return;
217         }
218         
219         UserTaskView view = (UserTaskView) provider;
220         UserTaskList utl = (UserTaskList) view.getUserTaskList();
221         
222         InputStream JavaDoc is;
223         try {
224             is = new FileInputStream JavaDoc(panel.getFile());
225         } catch (IOException JavaDoc e) {
226             UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
227
return;
228         }
229         
230         CalendarBuilder cb = new MyCalendarBuilder();
231         
232         try {
233             read(utl, is);
234         } catch (ParserException e) {
235             UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
236
return;
237         } catch (IOException JavaDoc e) {
238             UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
239
return;
240         }
241     }
242
243     /**
244      * Reads one VTODO.
245      *
246      * @param utl a user task list
247      * @param cmp VTODO
248      * @param dependencies <Dep> container for dependencies
249      */

250     private static void readVTODO(UserTaskList utl, Component cmp,
251         List JavaDoc<Dep> dependencies) {
252         PropertyList pl = cmp.getProperties();
253         Property prop = pl.getProperty(Property.SUMMARY);
254         String JavaDoc summary = (prop == null) ? "" : prop.getValue(); // NOI18N
255
UserTask ut = new UserTask(summary, utl);
256         ut.setUpdateLastModified(false);
257         
258         prop = pl.getProperty(Property.CREATED);
259         if (prop != null)
260             ut.setCreatedDate(((DateProperty) prop).getDate().getTime());
261             
262         prop = pl.getProperty(Property.UID);
263         if (prop != null)
264             ut.setUID(prop.getValue());
265         
266         prop = pl.getProperty(Property.DTSTART);
267         if (prop != null)
268             ut.setStartDate(((DateProperty) prop).getDate());
269         
270         prop = pl.getProperty(Property.PERCENT_COMPLETE);
271         if (prop != null)
272             ut.setPercentComplete(((PercentComplete) prop).getPercentage());
273         
274         prop = pl.getProperty("X-NETBEANS-OWNER"); // NOI18N
275
if (prop != null)
276             ut.setOwner(prop.getValue());
277         
278         prop = pl.getProperty(Property.PRIORITY);
279         if (prop != null) {
280             int level = ((Priority) prop).getLevel();
281             if (level < 0)
282                 level = UserTask.MEDIUM; // An error.
283
else if (level == 0)
284                 level = UserTask.MEDIUM;
285             else if (level > UserTask.LOW)
286                 level = UserTask.LOW;
287             ut.setPriority(level);
288         }
289         
290         prop = pl.getProperty("X-NETBEANS-EFFORT"); // NOI18N
291
if (prop != null) {
292             try {
293                 ut.setEffort(Integer.parseInt(prop.getValue()));
294             } catch (NumberFormatException JavaDoc e) {
295                 UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
296
}
297         }
298         
299         prop = pl.getProperty("X-NETBEANS-SPENT-TIME"); // NOI18N
300
if (prop != null) {
301             try {
302                 ut.setSpentTime(Integer.parseInt(prop.getValue()));
303             } catch (NumberFormatException JavaDoc e) {
304                 UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
305
}
306         }
307         
308         prop = pl.getProperty(Property.CATEGORIES);
309         if (prop != null) {
310             CategoryList cl = ((Categories) prop).getCategories();
311             Iterator JavaDoc it = cl.iterator();
312             StringBuffer JavaDoc category = new StringBuffer JavaDoc(ut.getCategory());
313             while (it.hasNext()) {
314                 if (category.length() > 0)
315                     category.append(", "); // NOI18N
316
category.append((String JavaDoc) it.next());
317             }
318             ut.setCategory(category.toString());
319         }
320         
321         prop = pl.getProperty(Property.DESCRIPTION);
322         if (prop != null)
323             ut.setDetails(prop.getValue());
324         
325         String JavaDoc filename = null;
326         prop = pl.getProperty("X-NETBEANS-FILENAME"); // NOI18N
327
if (prop != null)
328             filename = prop.getValue();
329         
330         String JavaDoc lineNumber = null;
331         prop = pl.getProperty("X-NETBEANS-LINE"); // NOI18N
332
if (prop != null)
333             lineNumber = prop.getValue();
334         
335         String JavaDoc url = null;
336         prop = pl.getProperty(Property.URL);
337         if (prop != null)
338             url = prop.getValue();
339         
340         String JavaDoc related = null;
341         prop = pl.getProperty(Property.RELATED_TO);
342         if (prop != null)
343             related = prop.getValue();
344         
345         PropertyList deps = pl.getProperties("X-NETBEANS-DEPENDENCY"); // NOI18N
346
for (int i = 0; i < deps.size(); i++) {
347             prop = (Property) deps.get(i);
348             Dep d = new Dep();
349             d.type = Dependency.END_BEGIN;
350             d.ut = ut;
351             d.dependsOn = prop.getValue();
352             ParameterList parl = prop.getParameters();
353             Parameter p = parl.getParameter("X-NETBEANS-TYPE");
354             if (p != null) {
355                 String JavaDoc t = p.getValue();
356                 if (t.equals("BEGIN_BEGIN")) // NOI18N
357
d.type = Dependency.BEGIN_BEGIN;
358             }
359             dependencies.add(d);
360         }
361         
362         PropertyList wps = pl.getProperties("X-NETBEANS-WORK-PERIOD"); // NOI18N
363
for (int i = 0; i < wps.size(); i++) {
364             prop = (Property) wps.get(i);
365             ParameterList parl = prop.getParameters();
366             Parameter p = parl.getParameter("X-NETBEANS-START");
367             if (p != null) {
368                 try {
369                     int dur = Integer.parseInt(prop.getValue());
370                     String JavaDoc v = p.getValue();
371                     long start = formatter.parse(v).getTime();
372                     UserTask.WorkPeriod wp = new UserTask.WorkPeriod(start, dur);
373                     ut.getWorkPeriods().add(wp);
374                 } catch (ParseException JavaDoc e) {
375                     UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
376
} catch (NumberFormatException JavaDoc e) {
377                     UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
378
}
379             }
380         }
381         
382         if (pl.getProperty("X-NETBEANS-VALUES-COMPUTED") == null &&
383                 pl.getProperty("X-NETBEANS-PROGRESS-COMPUTED") != // NOI18N
384
null &&
385                 pl.getProperty("X-NETBEANS-PROGRESS-COMPUTED"). // NOI18N
386
getValue().equals("yes") && // NOI18N
387
pl.getProperty("X-NETBEANS-EFFORT-COMPUTED") != // NOI18N
388
null &&
389                 pl.getProperty("X-NETBEANS-EFFORT-COMPUTED"). // NOI18N
390
getValue().equals("yes") && // NOI18N
391
pl.getProperty("X-NETBEANS-SPENT-TIME-COMPUTED") != // NOI18N
392
null &&
393                 pl.getProperty("X-NETBEANS-SPENT-TIME-COMPUTED"). // NOI18N
394
getValue().equals("yes") // NOI18N
395
) {
396             ut.setValuesComputed(true);
397         } else {
398             prop = pl.getProperty("X-NETBEANS-VALUES-COMPUTED"); // NOI18N
399
if (prop != null)
400                 ut.setValuesComputed(prop.getValue().equals("yes")); // NOI18N
401
else
402                 ut.setValuesComputed(false);
403         }
404 // } else if ("X-NETBEANS-STARTTIME".equals(name)) { // NOI18N
405
// long start = Long.MAX_VALUE;
406
// try {
407
// start = Long.parseLong(value);
408
// } catch (NumberFormatException e) {
409
// ErrorManager.getDefault().notify(e);
410
// }
411
//
412
// if (start != Long.MAX_VALUE) {
413
// if (associatedTime == null) {
414
// associatedTime = new AssociatedTime();
415
// }
416
//
417
// associatedTime.setStartTime(new java.util.Date(start));
418
// }
419
// } else if ("X-NETBEANS-ENDTIME".equals(name)) { // NOI18N
420
// long end = Long.MAX_VALUE;
421
// try {
422
// end = Long.parseLong(value);
423
// } catch (NumberFormatException e) {
424
// ErrorManager.getDefault().notify(e);
425
// }
426
// if (end != Long.MAX_VALUE) {
427
// if (associatedTime == null) {
428
// associatedTime = new AssociatedTime();
429
// }
430
//
431
// associatedTime.setEndTime(new java.util.Date(end));
432
// }
433

434         prop = pl.getProperty("X-NETBEANS-DUETIME"); // NOI18N
435
if (prop != null) {
436             java.util.Date JavaDoc d = null;
437             try {
438                 d = new java.util.Date JavaDoc(Long.parseLong(prop.getValue()));
439                 ut.setDueDate(d);
440             } catch (NumberFormatException JavaDoc e) {
441                 UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
442
}
443         }
444         
445         prop = pl.getProperty(Property.DUE);
446         if (prop != null) {
447             ut.setDueDate(((DateProperty) prop).getDate());
448         }
449         
450         prop = pl.getProperty("X-NETBEANS-DUE-SIGNALED"); // NOI18N
451
if (prop != null)
452             ut.setDueAlarmSent(true);
453             
454 // } else if ("X-NETBEANS-DUERECURRENT-INTERVAL".equals(name)) { // NOI18N
455
// int interval = 0;
456
// try {
457
// interval = Integer.parseInt(value);
458
// } catch (NumberFormatException e) {
459
// ErrorManager.getDefault().notify(e);
460
// }
461
//
462
// if (associatedTime == null) {
463
// associatedTime = new AssociatedTime();
464
// }
465
//
466
// associatedTime.setInterval(interval);
467
// } else if ("X-NETBEANS-DUERECURRENT-MEASUREMENT".equals(name)) { // NOI18N
468
// int measurement = AssociatedTime.DAY;
469
//
470
// if ("DAY".equals(value)) { // NOI18N
471
// measurement = AssociatedTime.DAY;
472
// } else if ("WEEK".equals(value)) { // NOI18N
473
// measurement = AssociatedTime.WEEK;
474
// } else if ("MONTH".equals(value)) { // NOI18N
475
// measurement = AssociatedTime.MONTH;
476
// } else if ("YEAR".equals(value)) { // NOI18N
477
// measurement = AssociatedTime.YEAR;
478
// }
479
//
480
// if (associatedTime == null) {
481
// associatedTime = new AssociatedTime();
482
// }
483
// associatedTime.setMeasurement(measurement);
484

485         prop = pl.getProperty(Property.COMPLETED);
486         if (prop != null)
487             ut.setCompletedDate(((DateProperty) prop).getDate().getTime());
488         
489         int lineno = 1;
490         if (lineNumber != null) {
491             try {
492                 lineno = Integer.parseInt(lineNumber);
493             } catch (NumberFormatException JavaDoc e) {
494                 // ignore
495
}
496         }
497         
498         if (lineno < 1)
499             lineno = 1;
500         
501         FileObject fo = null;
502         if (url != null) {
503             try {
504                 fo = URLMapper.findFileObject(new URL JavaDoc(url));
505             } catch (MalformedURLException JavaDoc e) {
506                 // ignore
507
}
508         }
509         
510         if (fo == null && filename != null) {
511             fo = UTUtils.getFileObjectForFile(filename);
512         }
513         
514         if (fo != null) {
515             Line line = UTUtils.getLineByFile(fo, lineno - 1);
516             if (line == null)
517                 line = UTUtils.getLineByFile(fo, 0);
518             
519             if (line != null) {
520                 ut.setLine(line);
521             }
522         } else if (url != null) {
523             try {
524                 ut.setUrl(new URL JavaDoc(url));
525                 ut.setLineNumber(lineno - 1);
526             } catch (MalformedURLException JavaDoc e) {
527                 // ignore
528
}
529         }
530         
531 // if (associatedTime != null) {
532
// task.setAssociatedTime(associatedTime);
533
// }
534

535         UserTask alreadyExists = utl.findItem(
536             utl.getSubtasks().iterator(), ut.getUID());
537         UserTask parent = null;
538         if (alreadyExists != null) {
539             // I should replace alreadyexists with task...
540
parent = alreadyExists.getParent();
541             if (parent != null) {
542                 parent.getSubtasks().remove(alreadyExists);
543             } else {
544                 utl.getSubtasks().remove(alreadyExists);
545             }
546             
547             Iterator JavaDoc li = alreadyExists.getSubtasks().iterator();
548             while (li.hasNext()) {
549                 UserTask c = (UserTask)li.next();
550                 alreadyExists.getSubtasks().remove(c);
551                 ut.getSubtasks().add(c);
552             }
553         } else if (related != null) {
554             // the parent setting !!
555
parent = utl.findItem(utl.getSubtasks().iterator(), related);
556         }
557             
558         prop = pl.getProperty(Property.LAST_MODIFIED);
559         if (prop != null)
560             ut.setLastEditedDate(((DateProperty) prop).getDate().getTime());
561         
562         if (parent != null)
563             parent.getSubtasks().add(ut);
564         else
565             utl.getSubtasks().add(ut);
566     }
567     
568     public String JavaDoc getName() {
569         return NbBundle.getMessage(ICalImportFormat.class, "iCalImp"); // NOI18N
570
}
571     
572     public org.openide.WizardDescriptor getWizard() {
573         OpenFilePanel chooseFilePanel = new OpenFilePanel();
574         SimpleWizardPanel chooseFileWP = new SimpleWizardPanel(chooseFilePanel);
575         chooseFilePanel.setWizardPanel(chooseFileWP);
576         chooseFilePanel.getFileChooser().addChoosableFileFilter(
577             new ExtensionFileFilter(
578                 NbBundle.getMessage(XmlExportFormat.class,
579                     "IcsFilter"), // NOI18N
580
new String JavaDoc[] {".ics"})); // NOI18N
581
chooseFilePanel.setFile(new File JavaDoc(
582             FileSystemView.getFileSystemView().
583             getDefaultDirectory(), "tasklist.ics")); // NOI18N
584

585         // create the wizard
586
WizardDescriptor.Iterator iterator =
587             new WizardDescriptor.ArrayIterator(new WizardDescriptor.Panel[] {
588                 chooseFileWP
589         });
590         WizardDescriptor d = new WizardDescriptor(iterator);
591         d.putProperty("WizardPanel_contentData", // NOI18N
592
new String JavaDoc[] {
593                 NbBundle.getMessage(
594                     ICalImportFormat.class, "ChooseSource"), // NOI18N
595
}
596         );
597         
598         String JavaDoc title;
599         title = NbBundle.getMessage(ICalImportFormat.class, "ImportICAL"); // NOI18N
600
d.setTitle(title); // NOI18N
601
d.putProperty(CHOOSE_FILE_PANEL_PROP, chooseFilePanel);
602         d.putProperty("WizardPanel_autoWizardStyle", Boolean.TRUE); // NOI18N
603
d.putProperty("WizardPanel_contentDisplayed", Boolean.TRUE); // NOI18N
604
d.putProperty("WizardPanel_contentNumbered", Boolean.TRUE); // NOI18N
605
d.setTitleFormat(new java.text.MessageFormat JavaDoc("{0}")); // NOI18N
606
return d;
607     }
608 }
609
Popular Tags