01: // The contents of this file are subject to the Mozilla Public License Version
02: // 1.1
03: //(the "License"); you may not use this file except in compliance with the
04: //License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
05: //
06: //Software distributed under the License is distributed on an "AS IS" basis,
07: //WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
08: //for the specific language governing rights and
09: //limitations under the License.
10: //
11: //The Original Code is "The Columba Project"
12: //
13: //The Initial Developers of the Original Code are Frederik Dietz and Timo
14: // Stich.
15: //Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16: //
17: //All Rights Reserved.
18: package org.columba.calendar.config;
19:
20: import java.awt.Color;
21: import java.io.File;
22:
23: import org.columba.calendar.base.api.ICalendarItem;
24: import org.columba.calendar.config.api.ICalendarList;
25: import org.columba.calendar.config.api.IConfig;
26: import org.columba.core.config.DefaultConfigDirectory;
27: import org.columba.core.io.DiskIO;
28: import org.columba.core.shutdown.ShutdownManager;
29:
30: public class Config implements IConfig {
31:
32: private ICalendarList calendarList;
33:
34: private static Config instance;
35:
36: private XMLPersistence persistence;
37:
38: private File calendarDirectory;
39:
40: private Config() throws Exception {
41:
42: // get Columba's top-level configuration directory
43: File file = DefaultConfigDirectory.getDefaultPath();
44:
45: // create top-level configuration directory
46: calendarDirectory = new File(file, "calendar");
47: DiskIO.ensureDirectory(calendarDirectory);
48: persistence = new XMLPersistence(calendarDirectory);
49:
50: // load configuration from persistence
51: boolean success = persistence.load();
52: if (success == false) {
53: createDefaults();
54: }
55:
56: // make sure configuration is saved when exiting
57: ShutdownManager.getInstance().register(new Runnable() {
58: public void run() {
59: try {
60: persistence.save();
61: } catch (Exception e) {
62: e.printStackTrace();
63: }
64: }
65: });
66:
67: }
68:
69: public static IConfig getInstance() {
70: if (instance == null) {
71: try {
72: instance = new Config();
73: } catch (Exception e) {
74: e.printStackTrace();
75: }
76: }
77:
78: return instance;
79: }
80:
81: private void createDefaults() {
82: calendarList = new CalendarList();
83:
84: calendarList.add("private", ICalendarItem.TYPE.LOCAL,
85: "Private", new Color(-19276));
86: calendarList.add("work", ICalendarItem.TYPE.LOCAL, "Work",
87: new Color(-4915276));
88: }
89:
90: public ICalendarList getCalendarList() {
91: return calendarList;
92: }
93:
94: public File getConfigDirectory() {
95: return calendarDirectory;
96: }
97:
98: }
|