Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 173048 | Differences between
and this patch

Collapse All | Expand All

(-)ui/org/eclipse/jdt/internal/ui/text/comment/CommentFormattingStrategy.java (-3 / +43 lines)
Lines 101-111 Link Here
101
			return null;
101
			return null;
102
102
103
		Map preferences= getPreferences();
103
		Map preferences= getPreferences();
104
		final boolean isFormattingHeader= Boolean.toString(true).equals(preferences.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_HEADER));
104
		final boolean isFormattingHeader= DefaultCodeFormatterConstants.TRUE.equals(preferences.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_HEADER));
105
		int documentsHeaderEnd= computeHeaderEnd(document);
105
		int documentsHeaderEnd= computeHeaderEnd(document);
106
106
107
		TextEdit edit= null;
107
		TextEdit edit= null;		
108
		if (isFormattingHeader || position.offset >= documentsHeaderEnd) {
108
		if (position.offset >= documentsHeaderEnd) {
109
			// not a header
109
			try {
110
			try {
110
				// compute offset in document of region passed to the formatter
111
				// compute offset in document of region passed to the formatter
111
				int sourceOffset= document.getLineOffset(document.getLineOfOffset(position.getOffset()));
112
				int sourceOffset= document.getLineOffset(document.getLineOfOffset(position.getOffset()));
Lines 124-129 Link Here
124
			} catch (BadLocationException x) {
125
			} catch (BadLocationException x) {
125
				JavaPlugin.log(x);
126
				JavaPlugin.log(x);
126
			}
127
			}
128
		} else if (isFormattingHeader) {
129
			boolean wasJavaDoc= DefaultCodeFormatterConstants.TRUE.equals(preferences.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_JAVADOC_COMMENT));
130
			if (!wasJavaDoc)
131
				preferences.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_JAVADOC_COMMENT, DefaultCodeFormatterConstants.TRUE);
132
			
133
			boolean wasBlockComment= DefaultCodeFormatterConstants.TRUE.equals(preferences.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_BLOCK_COMMENT));
134
			if (!wasBlockComment)
135
				preferences.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_BLOCK_COMMENT, DefaultCodeFormatterConstants.TRUE);
136
			
137
			boolean wasLineComment= DefaultCodeFormatterConstants.TRUE.equals(preferences.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_LINE_COMMENT));
138
			if (!wasLineComment)
139
				preferences.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_LINE_COMMENT, DefaultCodeFormatterConstants.TRUE);
140
			
141
			try {
142
				// compute offset in document of region passed to the formatter
143
				int sourceOffset= document.getLineOffset(document.getLineOfOffset(position.getOffset()));
144
145
				// format region
146
				int partitionOffset= position.getOffset() - sourceOffset;
147
				int sourceLength= partitionOffset + position.getLength();
148
				String source= document.get(sourceOffset, sourceLength);
149
				CodeFormatter commentFormatter= ToolFactory.createCodeFormatter(preferences);
150
				int indentationLevel= inferIndentationLevel(source.substring(0, partitionOffset), getTabSize(preferences), getIndentSize(preferences));
151
				edit= commentFormatter.format(getKindForPartitionType(position.getType()), source, partitionOffset, position.getLength(), indentationLevel, TextUtilities.getDefaultLineDelimiter(document));
152
153
				// move edit offset to match document
154
				if (edit != null)
155
					edit.moveTree(sourceOffset);
156
			} catch (BadLocationException x) {
157
				JavaPlugin.log(x);
158
			} finally {
159
				if (!wasJavaDoc)
160
					preferences.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_JAVADOC_COMMENT, DefaultCodeFormatterConstants.FALSE);
161
				if (!wasLineComment)
162
					preferences.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_BLOCK_COMMENT, DefaultCodeFormatterConstants.FALSE);
163
				if (!wasLineComment)
164
					preferences.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_LINE_COMMENT, DefaultCodeFormatterConstants.FALSE);
165
			}
166
127
		}
167
		}
128
		return edit;		
168
		return edit;		
129
	}
169
	}
(-)ui/org/eclipse/jdt/internal/ui/preferences/formatter/CommentsTabPage.java (-49 / +47 lines)
Lines 47-114 Link Here
47
        JavaCore.INSERT
47
        JavaCore.INSERT
48
    };
48
    };
49
	
49
	
50
	
50
	private static abstract class Controller implements Observer {
51
	private final static class AndController implements Observer {
52
		
51
		
53
		private final Collection fMasters;
52
		private final Collection fMasters;
54
		private final Collection fSlaves;
53
		private final Collection fSlaves;
55
		
54
		
56
		public AndController(Collection masters, Collection slaves) {
55
		public Controller(Collection masters, Collection slaves) {
57
			fMasters= masters;
56
			fMasters= masters;
58
			fSlaves= slaves;
57
			fSlaves= slaves;
59
			for (final Iterator iter= fMasters.iterator(); iter.hasNext();) {
58
			for (final Iterator iter= fMasters.iterator(); iter.hasNext();) {
60
			    ((CheckboxPreference)iter.next()).addObserver(this);
59
				((CheckboxPreference)iter.next()).addObserver(this);
61
			}
60
			}
62
			update(null, null);
63
		}
61
		}
64
62
		
65
		public void update(Observable o, Object arg) {
63
		public void update(Observable o, Object arg) {
66
		    boolean enabled= true; 
64
			boolean enabled= areSlavesEnabled();
67
65
			
68
		    for (final Iterator iter= fMasters.iterator(); iter.hasNext();) {
66
			for (final Iterator iter= fSlaves.iterator(); iter.hasNext();) {
69
		        enabled &= ((CheckboxPreference)iter.next()).getChecked();
67
				final Object obj= iter.next();
70
		    }
68
				if (obj instanceof Preference) {
71
69
					((Preference)obj).setEnabled(enabled);
72
			for (final Iterator iter = fSlaves.iterator(); iter.hasNext();) {
70
				} else if (obj instanceof Control) {
73
			    final Object obj= iter.next();
71
					((Group)obj).setEnabled(enabled);
74
			    if (obj instanceof Preference) {
72
				}
75
			        ((Preference)obj).setEnabled(enabled);
76
			    } else if (obj instanceof Control) {
77
			        ((Group)obj).setEnabled(enabled);
78
			    }
79
			}
73
			}
80
		}
74
		}
75
		
76
		public Collection getMasters() {
77
			return fMasters;
78
		}
79
		
80
		public Collection getSlaves() {
81
			return fSlaves;
82
		}
83
		
84
		protected abstract boolean areSlavesEnabled();
81
	}
85
	}
82
	
86
	
83
	private final static class OrController implements Observer {
87
	private final static class OrController extends Controller {
84
		
85
		private final Collection fMasters;
86
		private final Collection fSlaves;
87
		
88
		
88
		public OrController(Collection masters, Collection slaves) {
89
		public OrController(Collection masters, Collection slaves) {
89
			fMasters= masters;
90
			super(masters, slaves);
90
			fSlaves= slaves;
91
			for (final Iterator iter= fMasters.iterator(); iter.hasNext();) {
92
			    ((CheckboxPreference)iter.next()).addObserver(this);
93
			}
94
			update(null, null);
91
			update(null, null);
95
		}
92
		}
96
93
		
97
		public void update(Observable o, Object arg) {
94
		/**
98
		    boolean enabled= false; 
95
		 * {@inheritDoc}
99
96
		 */
100
		    for (final Iterator iter= fMasters.iterator(); iter.hasNext();) {
97
		protected boolean areSlavesEnabled() {
101
		        enabled |= ((CheckboxPreference)iter.next()).getChecked();
98
			for (final Iterator iter= getMasters().iterator(); iter.hasNext();) {
102
		    }
99
				if (((CheckboxPreference)iter.next()).getChecked())
103
100
					return true;
104
			for (final Iterator iter = fSlaves.iterator(); iter.hasNext();) {
105
			    final Object obj= iter.next();
106
			    if (obj instanceof Preference) {
107
			        ((Preference)obj).setEnabled(enabled);
108
			    } else if (obj instanceof Control) {
109
			        ((Group)obj).setEnabled(enabled);
110
			    }
111
			}
101
			}
102
			return false;
112
		}
103
		}
113
	}
104
	}
114
	
105
	
Lines 156-167 Link Here
156
		// global group
147
		// global group
157
		final Group globalGroup= createGroup(numColumns, composite, FormatterMessages.CommentsTabPage_group1_title); 
148
		final Group globalGroup= createGroup(numColumns, composite, FormatterMessages.CommentsTabPage_group1_title); 
158
		final CheckboxPreference javadoc= createPrefTrueFalse(globalGroup, numColumns, FormatterMessages.commentsTabPage_enable_javadoc_comment_formatting, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_JAVADOC_COMMENT); 
149
		final CheckboxPreference javadoc= createPrefTrueFalse(globalGroup, numColumns, FormatterMessages.commentsTabPage_enable_javadoc_comment_formatting, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_JAVADOC_COMMENT); 
159
		final CheckboxPreference blockComment= createPrefTrueFalse(globalGroup, numColumns, FormatterMessages.CommentsTabPage_enable_block_comment_formatting, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_BLOCK_COMMENT); 
150
		final CheckboxPreference blockComment= createPrefTrueFalse(globalGroup, numColumns, FormatterMessages.CommentsTabPage_enable_block_comment_formatting, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_BLOCK_COMMENT);
160
		final CheckboxPreference singleLineComments= createPrefTrueFalse(globalGroup, numColumns, FormatterMessages.CommentsTabPage_enable_line_comment_formatting, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_LINE_COMMENT); 
151
		final CheckboxPreference singleLineComments= createPrefTrueFalse(globalGroup, numColumns, FormatterMessages.CommentsTabPage_enable_line_comment_formatting, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_LINE_COMMENT); 
152
		final CheckboxPreference header= createPrefTrueFalse(globalGroup, numColumns, FormatterMessages.CommentsTabPage_format_header, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_HEADER); 
161
153
162
		// javadoc comment formatting settings
154
		// javadoc comment formatting settings
163
		final Group settingsGroup= createGroup(numColumns, composite, FormatterMessages.CommentsTabPage_group2_title); 
155
		final Group settingsGroup= createGroup(numColumns, composite, FormatterMessages.CommentsTabPage_group2_title); 
164
		final CheckboxPreference header= createPrefTrueFalse(settingsGroup, numColumns, FormatterMessages.CommentsTabPage_format_header, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_HEADER); 
165
		final CheckboxPreference html= createPrefTrueFalse(settingsGroup, numColumns, FormatterMessages.CommentsTabPage_format_html, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_HTML); 
156
		final CheckboxPreference html= createPrefTrueFalse(settingsGroup, numColumns, FormatterMessages.CommentsTabPage_format_html, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_HTML); 
166
		final CheckboxPreference code= createPrefTrueFalse(settingsGroup, numColumns, FormatterMessages.CommentsTabPage_format_code_snippets, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_SOURCE); 
157
		final CheckboxPreference code= createPrefTrueFalse(settingsGroup, numColumns, FormatterMessages.CommentsTabPage_format_code_snippets, DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_SOURCE); 
167
		final CheckboxPreference blankJavadoc= createPrefInsert(settingsGroup, numColumns, FormatterMessages.CommentsTabPage_blank_line_before_javadoc_tags, DefaultCodeFormatterConstants.FORMATTER_COMMENT_INSERT_EMPTY_LINE_BEFORE_ROOT_TAGS); 
158
		final CheckboxPreference blankJavadoc= createPrefInsert(settingsGroup, numColumns, FormatterMessages.CommentsTabPage_blank_line_before_javadoc_tags, DefaultCodeFormatterConstants.FORMATTER_COMMENT_INSERT_EMPTY_LINE_BEFORE_ROOT_TAGS); 
Lines 180-189 Link Here
180
171
181
		ArrayList javaDocMaster= new ArrayList();
172
		ArrayList javaDocMaster= new ArrayList();
182
		javaDocMaster.add(javadoc);
173
		javaDocMaster.add(javadoc);
174
		javaDocMaster.add(header);
183
		
175
		
184
		ArrayList javaDocSlaves= new ArrayList();
176
		ArrayList javaDocSlaves= new ArrayList();
185
		javaDocSlaves.add(settingsGroup);
177
		javaDocSlaves.add(settingsGroup);
186
		javaDocSlaves.add(header);
187
		javaDocSlaves.add(html);
178
		javaDocSlaves.add(html);
188
		javaDocSlaves.add(code);
179
		javaDocSlaves.add(code);
189
		javaDocSlaves.add(blankJavadoc);
180
		javaDocSlaves.add(blankJavadoc);
Lines 191-220 Link Here
191
		javaDocSlaves.add(nlParam);
182
		javaDocSlaves.add(nlParam);
192
		javaDocSlaves.add(blankLinesJavadoc);
183
		javaDocSlaves.add(blankLinesJavadoc);
193
		
184
		
194
		new AndController(javaDocMaster, javaDocSlaves);
185
		new OrController(javaDocMaster, javaDocSlaves);
195
		
186
		
196
		ArrayList indentMasters= new ArrayList();
187
		ArrayList indentMasters= new ArrayList();
197
		indentMasters.add(javadoc);
188
		indentMasters.add(javadoc);
189
		indentMasters.add(header);
198
		indentMasters.add(indentJavadoc);
190
		indentMasters.add(indentJavadoc);
199
		
191
		
200
		ArrayList indentSlaves= new ArrayList();
192
		ArrayList indentSlaves= new ArrayList();
201
		indentSlaves.add(indentDesc);
193
		indentSlaves.add(indentDesc);
202
		
194
		
203
		new AndController(indentMasters, indentSlaves);
195
		new Controller(indentMasters, indentSlaves) {
196
			protected boolean areSlavesEnabled() {
197
				return (javadoc.getChecked() || header.getChecked()) && indentJavadoc.getChecked();
198
            }
199
		}.update(null, null);
204
		
200
		
205
		ArrayList blockMasters= new ArrayList();
201
		ArrayList blockMasters= new ArrayList();
206
		blockMasters.add(blockComment);
202
		blockMasters.add(blockComment);
203
		blockMasters.add(header);
207
		
204
		
208
		ArrayList blockSlaves= new ArrayList();
205
		ArrayList blockSlaves= new ArrayList();
209
		blockSlaves.add(blockSettingsGroup);
206
		blockSlaves.add(blockSettingsGroup);
210
		blockSlaves.add(blankLinesBlock);
207
		blockSlaves.add(blankLinesBlock);
211
		
208
		
212
		new AndController(blockMasters, blockSlaves);
209
		new OrController(blockMasters, blockSlaves);
213
		
210
		
214
		ArrayList lineWidthMasters= new ArrayList();
211
		ArrayList lineWidthMasters= new ArrayList();
215
		lineWidthMasters.add(javadoc);
212
		lineWidthMasters.add(javadoc);
216
		lineWidthMasters.add(blockComment);
213
		lineWidthMasters.add(blockComment);
217
		lineWidthMasters.add(singleLineComments);
214
		lineWidthMasters.add(singleLineComments);
215
		lineWidthMasters.add(header);
218
216
219
		ArrayList lineWidthSlaves= new ArrayList();
217
		ArrayList lineWidthSlaves= new ArrayList();
220
		lineWidthSlaves.add(widthGroup);
218
		lineWidthSlaves.add(widthGroup);

Return to bug 173048