%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
org.apache.commons.jelly.tags.jface.preference.PreferencePageTag$PreferencePageImpl |
|
|
1 | /* |
|
2 | * Copyright 2002,2004 The Apache Software Foundation. |
|
3 | * |
|
4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
|
5 | * you may not use this file except in compliance with the License. |
|
6 | * You may obtain a copy of the License at |
|
7 | * |
|
8 | * http://www.apache.org/licenses/LICENSE-2.0 |
|
9 | * |
|
10 | * Unless required by applicable law or agreed to in writing, software |
|
11 | * distributed under the License is distributed on an "AS IS" BASIS, |
|
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
13 | * See the License for the specific language governing permissions and |
|
14 | * limitations under the License. |
|
15 | */ |
|
16 | package org.apache.commons.jelly.tags.jface.preference; |
|
17 | ||
18 | import java.io.IOException; |
|
19 | ||
20 | import org.apache.commons.jelly.JellyTagException; |
|
21 | import org.apache.commons.jelly.MissingAttributeException; |
|
22 | import org.apache.commons.jelly.TagSupport; |
|
23 | import org.apache.commons.jelly.XMLOutput; |
|
24 | import org.apache.commons.logging.Log; |
|
25 | import org.apache.commons.logging.LogFactory; |
|
26 | import org.eclipse.jface.preference.FieldEditor; |
|
27 | import org.eclipse.jface.preference.FieldEditorPreferencePage; |
|
28 | import org.eclipse.jface.preference.IPreferenceStore; |
|
29 | import org.eclipse.jface.preference.PreferenceDialog; |
|
30 | import org.eclipse.jface.preference.PreferenceNode; |
|
31 | import org.eclipse.jface.preference.PreferenceStore; |
|
32 | import org.eclipse.swt.widgets.Composite; |
|
33 | ||
34 | /** |
|
35 | * This Tag creates a JFace PreferencePage |
|
36 | * |
|
37 | * Provides a concrete preference store implementation based on an internal java.util.Properties object |
|
38 | * |
|
39 | * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a> |
|
40 | */ |
|
41 | public class PreferencePageTag extends TagSupport { |
|
42 | ||
43 | /** |
|
44 | * Implementation of a FieldEditorPreferencePage |
|
45 | * method createFieldEditors is called on Dialog.open() |
|
46 | */ |
|
47 | public class PreferencePageImpl extends FieldEditorPreferencePage { |
|
48 | private PreferenceStore preferenceStore; |
|
49 | ||
50 | 0 | public PreferencePageImpl(String title) { |
51 | 0 | super(title, FieldEditorPreferencePage.GRID); |
52 | try { |
|
53 | 0 | preferenceStore = new PreferenceStore(filename); |
54 | 0 | preferenceStore.load(); |
55 | 0 | setPreferenceStore(preferenceStore); |
56 | 0 | } catch (IOException e) { |
57 | 0 | log.error(e); |
58 | } |
|
59 | 0 | } |
60 | ||
61 | public void addField(FieldEditor editor) { |
|
62 | 0 | super.addField(editor); |
63 | 0 | } |
64 | ||
65 | protected void createFieldEditors() { |
|
66 | try { |
|
67 | 0 | invokeBody(output); |
68 | 0 | } catch (JellyTagException e) { |
69 | 0 | log.error(e); |
70 | } |
|
71 | 0 | } |
72 | ||
73 | public Composite getFieldEditorParent() { |
|
74 | 0 | return super.getFieldEditorParent(); |
75 | } |
|
76 | ||
77 | public IPreferenceStore getPreferenceStore() { |
|
78 | 0 | return preferenceStore; |
79 | } |
|
80 | } |
|
81 | ||
82 | /** The Log to which logging calls will be made. */ |
|
83 | private static final Log log = LogFactory.getLog(PreferencePageTag.class); |
|
84 | ||
85 | /** Filename of the store */ |
|
86 | private String filename; |
|
87 | ||
88 | /** Jelly XMLOutput */ |
|
89 | private XMLOutput output; |
|
90 | ||
91 | /** Current PreferencePageImpl */ |
|
92 | private PreferencePageImpl page; |
|
93 | ||
94 | /** Title of both PreferenceNode and PreferencePage */ |
|
95 | private String title; |
|
96 | ||
97 | /* |
|
98 | * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput) |
|
99 | */ |
|
100 | public void doTag(XMLOutput output) throws JellyTagException { |
|
101 | // check location |
|
102 | PreferenceDialogTag dialogTag = |
|
103 | (PreferenceDialogTag) findAncestorWithClass(PreferenceDialogTag.class); |
|
104 | if (dialogTag == null) { |
|
105 | throw new JellyTagException("This tag must be nested within a <preferenceDialog>"); |
|
106 | } |
|
107 | ||
108 | // check for missing attributes |
|
109 | if (filename == null) { |
|
110 | throw new MissingAttributeException("filename"); |
|
111 | } |
|
112 | if (title == null) { |
|
113 | throw new MissingAttributeException("title"); |
|
114 | } |
|
115 | ||
116 | // build new PreferenceNode with same title as the PreferencePage |
|
117 | PreferenceDialog dialog = dialogTag.getPreferenceDialog(); |
|
118 | PreferenceNode node = new PreferenceNode(title); |
|
119 | ||
120 | // build new PreferencePage |
|
121 | page = new PreferencePageImpl(title); |
|
122 | ||
123 | // add node to PreferenceManager |
|
124 | node.setPage(page); |
|
125 | dialog.getPreferenceManager().addToRoot(node); |
|
126 | ||
127 | // used by PreferencePageImpl |
|
128 | this.output = output; |
|
129 | } |
|
130 | ||
131 | /** |
|
132 | * Get the PreferencePageImpl |
|
133 | * @return PreferencePageImpl |
|
134 | */ |
|
135 | public PreferencePageImpl getPreferencePageImpl() { |
|
136 | return page; |
|
137 | } |
|
138 | ||
139 | /** |
|
140 | * Sets the filename. |
|
141 | * @param filename The filename to set |
|
142 | */ |
|
143 | public void setFilename(String filename) { |
|
144 | this.filename = filename; |
|
145 | } |
|
146 | ||
147 | /** |
|
148 | * Sets the title. |
|
149 | * @param title The title to set |
|
150 | */ |
|
151 | public void setTitle(String title) { |
|
152 | this.title = title; |
|
153 | } |
|
154 | ||
155 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |