Source Code Cross Referenced for PreferencesModule.java in  » Content-Management-System » contelligent » de » finix » contelligent » client » modules » preferences » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Content Management System » contelligent » de.finix.contelligent.client.modules.preferences 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


001:        /*
002:         * Copyright 2001-2006 C:1 Financial Services GmbH
003:         *
004:         * This software is free software; you can redistribute it and/or
005:         * modify it under the terms of the GNU Lesser General Public
006:         * License Version 2.1, as published by the Free Software Foundation.
007:         *
008:         * This software is distributed in the hope that it will be useful,
009:         * but WITHOUT ANY WARRANTY; without even the implied warranty of
010:         * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
011:         * Lesser General Public License for more details.
012:         *
013:         * You should have received a copy of the GNU Lesser General Public
014:         * License along with this library; if not, write to the Free Software
015:         * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
016:         */
017:
018:        package de.finix.contelligent.client.modules.preferences;
019:
020:        import java.awt.BorderLayout;
021:        import java.awt.Dimension;
022:        import java.awt.event.ActionEvent;
023:        import java.io.File;
024:        import java.io.FileInputStream;
025:        import java.io.FileNotFoundException;
026:        import java.io.FileOutputStream;
027:        import java.io.IOException;
028:        import java.util.Locale;
029:        import java.util.logging.Logger;
030:        import java.util.prefs.BackingStoreException;
031:        import java.util.prefs.InvalidPreferencesFormatException;
032:        import java.util.prefs.Preferences;
033:
034:        import javax.swing.AbstractAction;
035:        import javax.swing.Action;
036:        import javax.swing.JFileChooser;
037:        import javax.swing.JOptionPane;
038:        import javax.swing.JScrollPane;
039:        import javax.swing.JSplitPane;
040:        import javax.swing.JTree;
041:        import javax.swing.ListSelectionModel;
042:        import javax.swing.ToolTipManager;
043:        import javax.swing.event.ListSelectionEvent;
044:        import javax.swing.event.ListSelectionListener;
045:        import javax.swing.event.TreeSelectionEvent;
046:        import javax.swing.event.TreeSelectionListener;
047:        import javax.swing.filechooser.FileFilter;
048:        import javax.swing.tree.DefaultMutableTreeNode;
049:        import javax.swing.tree.TreePath;
050:
051:        import de.finix.contelligent.client.gui.ContelligentAction;
052:        import de.finix.contelligent.client.i18n.Resources;
053:        import de.finix.contelligent.client.modules.AbstractModule;
054:        import de.finix.contelligent.client.remote.UpdateManager;
055:        import de.finix.contelligent.client.util.ExceptionDialog;
056:        import de.finix.contelligent.client.util.StringOptionPane;
057:
058:        public class PreferencesModule extends AbstractModule {
059:
060:            public final static String LOG_FILE = "filename";
061:
062:            public final static String DEFAULT_LOG_FILE = "%h/client.log";
063:
064:            public final static String LOG_LEVEL = "level";
065:
066:            public final static String DEFAULT_LOG_LEVEL = "INFO";
067:
068:            public final static String SERVER = "server";
069:
070:            public final static String ANON_SERVER = "anonserver";
071:
072:            public final static String DEFAULT_SERVER = "http://localhost:8080/contell/scms";
073:
074:            public final static String DEFAULT_ANON_SERVER = "http://localhost:8080/contell/cms";
075:
076:            public final static String UPDATE_INTERVAL = "update interval (s)";
077:
078:            public final static int DEFAULT_UPDATE_INTERVAL = 2;
079:
080:            public final static String EXTERNAL_TEXT_EDITOR = "text";
081:
082:            public final static String DEFAULT_EXTERNAL_TEXT_EDITOR = "emacs";
083:
084:            public final static String HTML_EDITOR = "text/html";
085:
086:            public final static String DEFAULT_HTML_EDITOR = "/usr/local/mozilla/mozilla -edit";
087:
088:            public final static String HTML_RENDERER = "text/html/render";
089:
090:            public final static String DEFAULT_HTML_RENDERER = "/usr/local/mozilla/mozilla";
091:
092:            public final static String IMAGE_DIRECTORY = "imageDirectory";
093:
094:            public final static String FILE_DIRECTORY = "fileDirectory";
095:
096:            public final static String DEFAULT_IMAGE_DIRECTORY = "";
097:
098:            public final static String DEFAULT_FILE_DIRECTORY = "";
099:
100:            public final static String LANGUAGE = "language";
101:
102:            public final static String COUNTRY = "country";
103:
104:            public final static String DEFAULT_LANGUAGE = Locale.getDefault()
105:                    .getLanguage();
106:
107:            public final static String DEFAULT_COUNTRY = Locale.getDefault()
108:                    .getCountry();
109:
110:            public final static String LANG_BASENAME = "language_basename";
111:
112:            public final static String DEFAULT_LANG_BASENAME = "languages.language";
113:
114:            public final static String GROUP = "defaultGroup";
115:
116:            public final static String DEFAULT_GROUP = "system-users";
117:
118:            public final static String CONTEXT = "defaultContext";
119:
120:            public final static String DEFAULT_CONTEXT = "";
121:
122:            public final static String SHOW_MEM_PANEL = "memoryPanel";
123:
124:            public final static boolean DEFAULT_SHOW_MEM_PANEL = false;
125:
126:            public final static String CALLBACK_PORT = "Callback port";
127:
128:            public final static int DEFAULT_CALLBACK_PORT = 0;
129:
130:            public final static String SESSION_TIMEOUT = "Session timeout";
131:
132:            public final static int DEFAULT_SESSION_TIMEOUT = 10;
133:
134:            public final static String SHOW_LINK_TARGETS = "Show link targets";
135:
136:            public final static boolean DEFAULT_SHOW_LINK_TARGETS = false;
137:
138:            public final static String CASCADE_FORMS = "Cascade forms";
139:
140:            public final static boolean DEFAULT_CASCADE_FORMS = true;
141:
142:            public final static String BREAK_LINES = "Break lines";
143:
144:            public final static boolean DEFAULT_BREAK_LINES = true;
145:
146:            public final static String PREFILL_NEW_NAME = "Prefill new component name";
147:
148:            public final static boolean DEFAULT_PREFILL_NEW_NAME = false;
149:
150:            public final static String LEGACY_TYPES = "Allow legacy type creation";
151:
152:            public final static boolean DEFAULT_LEGACY_TYPES = false;
153:
154:            public final static String DISABLE_BREADCRUMB_BAR = "Disable breadcrumb bar";
155:
156:            public final static boolean DEFAULT_DISABLE_BREADCRUMB_BAR = false;
157:
158:            public final static String EDIT_ALL_GROUPS = "Edit all groups";
159:
160:            public final static boolean DEFAULT_EDIT_ALL_GROUPS = false;
161:
162:            public final static String ALLOW_DETAGGING = "Allow detagging of render tags";
163:
164:            public final static boolean DEFAULT_ALLOW_DETAGGING = true;
165:
166:            public final static String ADVANCED_COPY = "Display advanced copy options";
167:
168:            public final static boolean DEFAULT_ADVANCED_COPY = false;
169:
170:            public final static String CLIENT_THEME = "Client Theme";
171:
172:            public final static String DEFAULT_CLIENT_THEME = "default";
173:
174:            public final static String TAB_WIDTH = "Width of tabs";
175:
176:            public final static int DEFAULT_TAB_WIDTH = 8;
177:
178:            public final static String UPDATE_MODE = "Update Mode";
179:
180:            public final static int DEFAULT_UPDATE_MODE = UpdateManager.UPDATE_MODE_POLL;
181:
182:            public final static String KEEP_ALIVE = "Keep alive";
183:
184:            public final static boolean DEFAULT_KEEP_ALIVE = false;
185:
186:            public final static String AUTO_RELOGIN = "Auto-Relogin";
187:
188:            public final static boolean DEFAULT_AUTO_RELOGIN = true;
189:
190:            public final static String VISIBLE_COMPONENTS_IN_FOLDER = "Visible components in folder";
191:
192:            public final static int DEFAULT_VISIBLE_COMPONENTS_IN_FOLDER = 30;
193:
194:            public final static String MAX_SUBMENU_ITEMS = "Maximum submenu items";
195:
196:            public final static int DEFAULT_MAX_SUBMENU_ITEMS = 20;
197:
198:            public final static String CACHED_COMPONENTS = "Cached components";
199:
200:            public final static int DEFAULT_CACHED_COMPONENTS = 1500;
201:
202:            public final static String FONTSIZE_OFFSET = "Font size offset";
203:
204:            public final static int DEFAULT_FONTSIZE_OFFSET = 0;
205:
206:            public final static String PUBLISHER_NAME = "publisher name";
207:
208:            public final static String DEFAULT_PUBLISHER_NAME = "";
209:
210:            public final static String PUBLISHER_ID = "publisher id";
211:
212:            public final static String DEFAULT_PUBLISHER_ID = "";
213:
214:            public final static String PUBLISHER_TYPE = "publisher type";
215:
216:            public final static String DEFAULT_PUBLISHER_TYPE = "";
217:
218:            public final static String AUTH_MECH = "preferred auth mechanism";
219:
220:            public final static String DEFAULT_AUTH_MECH = "Basic";
221:
222:            public final static String AUTH_DOMAIN = "preferred auth domain";
223:
224:            public final static String DEFAULT_AUTH_DOMAIN = "system-users";
225:
226:            public final static String PREVIEW_NAME = "last selected preview";
227:
228:            public final static String DEFAULT_PREVIEW_NAME = "Normal";
229:
230:            public final static String ENABLE_HIGHLIGHTING = "enable syntax highlighting";
231:
232:            public final static boolean DEFAULT_ENABLE_HIGHLIGHTING = true;
233:
234:            private static Preferences userPreferences = Preferences.userRoot()
235:                    .node("/finix/contelligent/client");
236:
237:            private static Preferences loggingPreferences = userPreferences
238:                    .node("logging");
239:
240:            private static Preferences applicationPreferences = userPreferences
241:                    .node("applications");
242:
243:            private static Preferences serverPreferences = userPreferences
244:                    .node("server");
245:
246:            private static Preferences directoryPreferences = userPreferences
247:                    .node("directory");
248:
249:            private static Preferences publisherPreferences = userPreferences
250:                    .node("publisher");
251:
252:            private static File defaultConfig = new File("default.ccc");
253:
254:            private JTree tree;
255:
256:            private TreePath treePath = null;
257:
258:            private PreferencesTable preferencesTable;
259:
260:            private AddPropertyAction addPropertyAction = new AddPropertyAction();
261:
262:            private RemovePropertyAction removePropertyAction = new RemovePropertyAction();
263:
264:            private LoadConfigurationAction loadConfigurationAction = new LoadConfigurationAction();
265:
266:            private SaveConfigurationAction saveConfigurationAction = new SaveConfigurationAction();
267:
268:            private static Logger logger = Logger
269:                    .getLogger(PreferencesModule.class.getName());
270:
271:            public static Preferences getPreferences() {
272:                return userPreferences;
273:            }
274:
275:            public static Preferences getLoggingPreferences() {
276:                return loggingPreferences;
277:            }
278:
279:            public static Preferences getServerPreferences() {
280:                return serverPreferences;
281:            }
282:
283:            public static Preferences getApplicationPreferences() {
284:                return applicationPreferences;
285:            }
286:
287:            public static Preferences getDirectoryPreferences() {
288:                return directoryPreferences;
289:            }
290:
291:            public static Preferences getPublisherPreferences() {
292:                return publisherPreferences;
293:            }
294:
295:            public static String getDefaultLanguage() {
296:                return getPreferences().get(PreferencesModule.LANGUAGE,
297:                        PreferencesModule.DEFAULT_LANGUAGE);
298:            }
299:
300:            public void init() {
301:                setPreferredSize(new Dimension(550, 300));
302:
303:                // build preferences...
304:                PreferencesDescription userDescription = new PreferencesDescription(
305:                        userPreferences, Resources
306:                                .getLocalString("configuration"), Resources
307:                                .getLocalString("configuration_description"),
308:                        Resources.configureIcon);
309:
310:                userDescription.defineProperty(LANG_BASENAME,
311:                        DEFAULT_LANG_BASENAME);
312:                userDescription.defineProperty(LANGUAGE, DEFAULT_LANGUAGE);
313:                userDescription.defineProperty(COUNTRY, DEFAULT_COUNTRY);
314:                userDescription.defineProperty(GROUP, DEFAULT_GROUP);
315:                userDescription.defineProperty(CONTEXT, DEFAULT_CONTEXT);
316:                userDescription.defineProperty(VISIBLE_COMPONENTS_IN_FOLDER,
317:                        DEFAULT_VISIBLE_COMPONENTS_IN_FOLDER);
318:                userDescription.defineProperty(MAX_SUBMENU_ITEMS,
319:                        DEFAULT_MAX_SUBMENU_ITEMS);
320:                userDescription.defineProperty(CACHED_COMPONENTS,
321:                        DEFAULT_CACHED_COMPONENTS);
322:                userDescription.defineProperty(SHOW_MEM_PANEL,
323:                        DEFAULT_SHOW_MEM_PANEL);
324:                userDescription.defineProperty(SESSION_TIMEOUT,
325:                        DEFAULT_SESSION_TIMEOUT);
326:                userDescription.defineProperty(SHOW_LINK_TARGETS,
327:                        DEFAULT_SHOW_LINK_TARGETS);
328:                userDescription.defineProperty(CASCADE_FORMS,
329:                        DEFAULT_CASCADE_FORMS);
330:                userDescription.defineProperty(EDIT_ALL_GROUPS,
331:                        DEFAULT_EDIT_ALL_GROUPS);
332:                userDescription.defineProperty(ALLOW_DETAGGING,
333:                        DEFAULT_ALLOW_DETAGGING);
334:                userDescription.defineProperty(ADVANCED_COPY,
335:                        DEFAULT_ADVANCED_COPY);
336:                userDescription.defineProperty(CLIENT_THEME,
337:                        DEFAULT_CLIENT_THEME);
338:                userDescription.defineProperty(TAB_WIDTH, DEFAULT_TAB_WIDTH);
339:                userDescription.defineProperty(FONTSIZE_OFFSET,
340:                        DEFAULT_FONTSIZE_OFFSET);
341:                userDescription
342:                        .defineProperty(BREAK_LINES, DEFAULT_BREAK_LINES);
343:                userDescription.defineProperty(PREFILL_NEW_NAME,
344:                        DEFAULT_PREFILL_NEW_NAME);
345:                userDescription.defineProperty(LEGACY_TYPES,
346:                        DEFAULT_LEGACY_TYPES);
347:                userDescription.defineProperty(PREVIEW_NAME,
348:                        DEFAULT_PREVIEW_NAME);
349:                userDescription.defineProperty(ENABLE_HIGHLIGHTING,
350:                        DEFAULT_ENABLE_HIGHLIGHTING);
351:
352:                DefaultMutableTreeNode userNode = new DefaultMutableTreeNode(
353:                        userDescription);
354:                PreferencesDescription loggingDescription = new PreferencesDescription(
355:                        loggingPreferences,
356:                        Resources.getLocalString("logging"), Resources
357:                                .getLocalString("logging_description"),
358:                        Resources.loggingIcon);
359:                loggingDescription.defineProperty(LOG_FILE, DEFAULT_LOG_FILE);
360:                loggingDescription.defineProperty(LOG_LEVEL, DEFAULT_LOG_LEVEL);
361:                DefaultMutableTreeNode loggingNode = new DefaultMutableTreeNode(
362:                        loggingDescription);
363:                PreferencesDescription applicationDescription = new PreferencesDescription(
364:                        applicationPreferences, Resources
365:                                .getLocalString("applications"), Resources
366:                                .getLocalString("applications_description"),
367:                        Resources.loggingIcon);
368:                applicationDescription.defineProperty(HTML_EDITOR,
369:                        DEFAULT_HTML_EDITOR);
370:                applicationDescription.defineProperty(HTML_RENDERER,
371:                        DEFAULT_HTML_RENDERER);
372:                applicationDescription.defineProperty(EXTERNAL_TEXT_EDITOR,
373:                        DEFAULT_EXTERNAL_TEXT_EDITOR);
374:                DefaultMutableTreeNode applicationNode = new DefaultMutableTreeNode(
375:                        applicationDescription);
376:                PreferencesDescription directoryDescription = new PreferencesDescription(
377:                        directoryPreferences, Resources
378:                                .getLocalString("directories"), Resources
379:                                .getLocalString("directories_description"),
380:                        Resources.loggingIcon);
381:                directoryDescription.defineProperty(IMAGE_DIRECTORY,
382:                        DEFAULT_IMAGE_DIRECTORY);
383:                directoryDescription.defineProperty(FILE_DIRECTORY,
384:                        DEFAULT_FILE_DIRECTORY);
385:                DefaultMutableTreeNode directoryNode = new DefaultMutableTreeNode(
386:                        directoryDescription);
387:                PreferencesDescription serverDescription = new PreferencesDescription(
388:                        serverPreferences, Resources.getLocalString("server"),
389:                        Resources.getLocalString("server_description"),
390:                        Resources.serverIcon);
391:                serverDescription.defineProperty(SERVER, DEFAULT_SERVER);
392:                serverDescription.defineProperty(ANON_SERVER,
393:                        DEFAULT_ANON_SERVER);
394:                serverDescription.defineProperty(UPDATE_INTERVAL,
395:                        DEFAULT_UPDATE_INTERVAL);
396:                serverDescription.defineProperty(CALLBACK_PORT,
397:                        DEFAULT_CALLBACK_PORT);
398:                serverDescription.defineProperty(UPDATE_MODE,
399:                        DEFAULT_UPDATE_MODE);
400:                serverDescription.defineProperty(AUTO_RELOGIN,
401:                        DEFAULT_AUTO_RELOGIN);
402:                serverDescription.defineProperty(AUTH_MECH, DEFAULT_AUTH_MECH);
403:                serverDescription.defineProperty(AUTH_DOMAIN,
404:                        DEFAULT_AUTH_DOMAIN);
405:                DefaultMutableTreeNode serverNode = new DefaultMutableTreeNode(
406:                        serverDescription);
407:                PreferencesDescription publisherDescription = new PreferencesDescription(
408:                        publisherPreferences, Resources
409:                                .getLocalString("publisher"), Resources
410:                                .getLocalString("publisher_description"),
411:                        Resources.loggingIcon);
412:                publisherDescription.defineProperty(PUBLISHER_TYPE,
413:                        DEFAULT_PUBLISHER_TYPE);
414:                publisherDescription.defineProperty(PUBLISHER_NAME,
415:                        DEFAULT_PUBLISHER_NAME);
416:                publisherDescription.defineProperty(PUBLISHER_ID,
417:                        DEFAULT_PUBLISHER_ID);
418:                DefaultMutableTreeNode publisherNode = new DefaultMutableTreeNode(
419:                        publisherDescription);
420:
421:                userNode.add(directoryNode);
422:                userNode.add(serverNode);
423:                userNode.add(loggingNode);
424:                userNode.add(applicationNode);
425:                userNode.add(publisherNode);
426:
427:                tree = new JTree(userNode);
428:                tree.setCellRenderer(new PreferencesTreeCellRenderer());
429:                tree.setMinimumSize(new Dimension(150, 300));
430:                ToolTipManager.sharedInstance().registerComponent(tree);
431:                JSplitPane splitPane = new JSplitPane(
432:                        JSplitPane.HORIZONTAL_SPLIT);
433:                splitPane.setTopComponent(tree);
434:                tree.addTreeSelectionListener(new TreeSelectionListener() {
435:                    public void valueChanged(TreeSelectionEvent event) {
436:                        treePath = event.getPath();
437:                        if (treePath != null) {
438:                            addPropertyAction.setEnabled(true);
439:                            removePropertyAction.setEnabled(false);
440:                            PreferencesDescription description = (PreferencesDescription) ((DefaultMutableTreeNode) treePath
441:                                    .getLastPathComponent()).getUserObject();
442:                            Preferences preferences = description
443:                                    .getPreferences();
444:                            if (preferences != applicationPreferences) {
445:                                addPropertyAction.setEnabled(false);
446:                            }
447:                            updateTable(description);
448:                        }
449:                    }
450:                });
451:
452:                PreferencesTableModel preferencesTableModel = new PreferencesTableModel(
453:                        userPreferences);
454:                preferencesTable = new PreferencesTable(preferencesTableModel);
455:                preferencesTable.getColumnModel().getColumn(0)
456:                        .setPreferredWidth(125);
457:                preferencesTable.getColumnModel().getColumn(1)
458:                        .setPreferredWidth(175);
459:                preferencesTable
460:                        .setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
461:                ListSelectionModel rowSelection = preferencesTable
462:                        .getSelectionModel();
463:                rowSelection
464:                        .addListSelectionListener(new ListSelectionListener() {
465:                            public void valueChanged(ListSelectionEvent e) {
466:                                // Ignore extra messages.
467:                                if (e.getValueIsAdjusting())
468:                                    return;
469:                                ListSelectionModel lsm = (ListSelectionModel) e
470:                                        .getSource();
471:                                if (lsm.isSelectionEmpty()) {
472:                                    removePropertyAction.setEnabled(false);
473:                                } else {
474:                                    if (treePath != null) {
475:                                        DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode) treePath
476:                                                .getLastPathComponent();
477:                                        if (dmtn != null) {
478:                                            PreferencesDescription description = (PreferencesDescription) dmtn
479:                                                    .getUserObject();
480:                                            Preferences preferences = description
481:                                                    .getPreferences();
482:                                            if (preferences == applicationPreferences) {
483:                                                removePropertyAction
484:                                                        .setEnabled(true);
485:                                            } else {
486:                                                removePropertyAction
487:                                                        .setEnabled(false);
488:                                            }
489:                                        } else {
490:                                            removePropertyAction
491:                                                    .setEnabled(false);
492:                                        }
493:                                    } else {
494:                                        removePropertyAction.setEnabled(false);
495:                                    }
496:                                }
497:                            }
498:                        });
499:
500:                JScrollPane tableScroller = new JScrollPane(preferencesTable);
501:                splitPane.setBottomComponent(tableScroller);
502:
503:                add(splitPane, BorderLayout.CENTER);
504:            }
505:
506:            public Action[] getActions() {
507:                addPropertyAction.setEnabled(false);
508:                removePropertyAction.setEnabled(false);
509:
510:                return new Action[] { loadConfigurationAction,
511:                        saveConfigurationAction, addPropertyAction,
512:                        removePropertyAction };
513:            }
514:
515:            public static class ConfigFileFilter extends FileFilter {
516:                // Accept all directories and all gif, jpg, or tiff files.
517:                public boolean accept(File f) {
518:                    if (f.isDirectory()) {
519:                        return true;
520:                    }
521:
522:                    String filename = f.getName();
523:                    if (filename.lastIndexOf(".") > 0) {
524:                        if (filename.substring(filename.lastIndexOf("."),
525:                                filename.length()).equals(".ccc")) {
526:                            return true;
527:                        }
528:                    }
529:                    return false;
530:                }
531:
532:                // The description of this filter
533:                public String getDescription() {
534:                    return Resources
535:                            .getLocalString("config_file_filter_description");
536:                }
537:            }
538:
539:            public static class LoadConfigurationAction extends AbstractAction
540:                    implements  ContelligentAction {
541:                public LoadConfigurationAction() {
542:                    super ("load_preferences_action", Resources.openIcon);
543:                    putValue(ROLLOVER_ICON, Resources.openIconRollOver);
544:                    putValue(SHORT_DESCRIPTION, "load_preferences_action_descr");
545:                    putValue(TYPE, PUSH_ACTION);
546:                    putValue(ACTION_TYPE, FILE_ACTION);
547:                    putValue(MENU_TARGET, MENU);
548:                    putValue(BUTTON_TARGET, NO_BUTTON);
549:                }
550:
551:                public void actionPerformed(ActionEvent e) {
552:                    JFileChooser fc = new JFileChooser();
553:                    fc.setFileFilter(new ConfigFileFilter());
554:                    if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
555:                        File file = fc.getSelectedFile();
556:                        try {
557:                            FileInputStream fileInputStream = new FileInputStream(
558:                                    file);
559:                            userPreferences.importPreferences(fileInputStream);
560:                            fileInputStream.close();
561:                        } catch (FileNotFoundException fnf) {
562:                            ExceptionDialog.show(fnf);
563:                        } catch (IOException ioe) {
564:                            ExceptionDialog.show(ioe);
565:                        } catch (InvalidPreferencesFormatException ipfe) {
566:                            ExceptionDialog.show(ipfe);
567:                        }
568:                    }
569:                }
570:            }
571:
572:            public static class SaveConfigurationAction extends AbstractAction
573:                    implements  ContelligentAction {
574:                public SaveConfigurationAction() {
575:                    super ("save_preferences_action", Resources.saveIcon);
576:                    putValue(ROLLOVER_ICON, Resources.saveIconRollOver);
577:                    putValue(SHORT_DESCRIPTION, "save_preferences_action_descr");
578:                    putValue(TYPE, PUSH_ACTION);
579:                    putValue(ACTION_TYPE, FILE_ACTION);
580:                    putValue(MENU_TARGET, MENU);
581:                    putValue(BUTTON_TARGET, NO_BUTTON);
582:                }
583:
584:                public void actionPerformed(ActionEvent e) {
585:                    JFileChooser fc = new JFileChooser();
586:                    fc.setFileFilter(new ConfigFileFilter());
587:                    if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
588:                        File file = fc.getSelectedFile();
589:                        try {
590:                            FileOutputStream fileOutputStream = new FileOutputStream(
591:                                    file);
592:                            userPreferences.exportSubtree(fileOutputStream);
593:                            fileOutputStream.close();
594:                        } catch (BackingStoreException bse) {
595:                            ExceptionDialog.show(bse);
596:                        } catch (FileNotFoundException fnf) {
597:                            ExceptionDialog.show(fnf);
598:                        } catch (IOException ioe) {
599:                            ExceptionDialog.show(ioe);
600:                        }
601:                    }
602:                }
603:            }
604:
605:            public class AddPropertyAction extends AbstractAction implements 
606:                    ContelligentAction {
607:                public AddPropertyAction() {
608:                    super ("add_property_action", Resources.addPropertyIcon);
609:                    putValue(ROLLOVER_ICON, Resources.addPropertyIconRollOver);
610:                    putValue(SHORT_DESCRIPTION, "add_property_action_descr");
611:                    putValue(TYPE, PUSH_ACTION);
612:                    putValue(ACTION_TYPE, EDIT_ACTION);
613:                    putValue(MENU_TARGET, MENU);
614:                    putValue(BUTTON_TARGET, TOOLBAR);
615:                }
616:
617:                public void actionPerformed(ActionEvent e) {
618:                    if (treePath != null) {
619:                        StringOptionPane optionPane = new StringOptionPane();
620:                        if (optionPane.showStringDialog(Resources
621:                                .getLocalString("add_property"), Resources
622:                                .getLocalString("enter_property_name")
623:                                + ":", "") == StringOptionPane.OK_OPTION) {
624:                            PreferencesDescription description = (PreferencesDescription) ((DefaultMutableTreeNode) treePath
625:                                    .getLastPathComponent()).getUserObject();
626:                            Preferences preferences = description
627:                                    .getPreferences();
628:                            preferences.put(optionPane.getText(), "");
629:                            updateTable(description);
630:                        }
631:                    }
632:                }
633:            }
634:
635:            public class RemovePropertyAction extends AbstractAction implements 
636:                    ContelligentAction {
637:                public RemovePropertyAction() {
638:                    super ("remove_property_action",
639:                            Resources.deletePropertyIcon);
640:                    putValue(ROLLOVER_ICON,
641:                            Resources.deletePropertyIconRollOver);
642:                    putValue(SHORT_DESCRIPTION, "remove_property_action_descr");
643:                    putValue(TYPE, PUSH_ACTION);
644:                    putValue(ACTION_TYPE, EDIT_ACTION);
645:                    putValue(MENU_TARGET, MENU);
646:                    putValue(BUTTON_TARGET, TOOLBAR);
647:                }
648:
649:                public void actionPerformed(ActionEvent e) {
650:                    if (treePath != null
651:                            && preferencesTable.getSelectedRow() != -1) {
652:                        String key = (String) preferencesTable.getValueAt(
653:                                preferencesTable.getSelectedRow(), 0);
654:                        JOptionPane optionPane = new JOptionPane();
655:                        if (optionPane.showConfirmDialog(null, Resources
656:                                .getLocalString("really_delete")
657:                                + " '" + key + "'", Resources
658:                                .getLocalString("remove_property"),
659:                                JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
660:                            PreferencesDescription description = (PreferencesDescription) ((DefaultMutableTreeNode) treePath
661:                                    .getLastPathComponent()).getUserObject();
662:                            Preferences preferences = description
663:                                    .getPreferences();
664:                            preferences.remove(key);
665:                            updateTable(description);
666:                        }
667:                    }
668:                }
669:            }
670:
671:            private void updateTable(PreferencesDescription description) {
672:                PreferencesTableModel preferencesTableModel = new PreferencesTableModel(
673:                        description.getPreferences());
674:                preferencesTable.setModel(preferencesTableModel);
675:                preferencesTable.getColumnModel().getColumn(0)
676:                        .setPreferredWidth(125);
677:                preferencesTable.getColumnModel().getColumn(1)
678:                        .setPreferredWidth(175);
679:            }
680:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.