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 150663 | Differences between
and this patch

Collapse All | Expand All

(-).settings/org.eclipse.jdt.core.prefs (-9 / +2 lines)
Lines 1-21 Link Here
1
#Sun Jun 24 11:52:58 EDT 2007
1
#Thu Nov 01 00:24:45 GMT 2007
2
eclipse.preferences.version=1
2
eclipse.preferences.version=1
3
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
4
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
5
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
4
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
6
org.eclipse.jdt.core.compiler.compliance=1.5
7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
5
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
8
org.eclipse.jdt.core.compiler.debug.localVariable=generate
6
org.eclipse.jdt.core.compiler.debug.localVariable=generate
9
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
7
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
10
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
8
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
11
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
12
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
9
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
13
org.eclipse.jdt.core.compiler.problem.deprecation=warning
10
org.eclipse.jdt.core.compiler.problem.deprecation=warning
14
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
11
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
15
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
12
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
16
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
13
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
17
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
14
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
18
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
19
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
15
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
20
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
16
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
21
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
17
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
Lines 57-63 Link Here
57
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
53
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
58
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
54
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
59
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
55
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
60
org.eclipse.jdt.core.compiler.source=1.5
61
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
56
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
62
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
57
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
63
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
58
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
Lines 101-111 Link Here
101
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
96
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
102
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
97
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
103
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
98
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
104
org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
105
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
99
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
106
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
100
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
107
org.eclipse.jdt.core.formatter.comment.format_block_comments=false
101
org.eclipse.jdt.core.formatter.comment.format_block_comments=false
108
org.eclipse.jdt.core.formatter.comment.format_comments=true
109
org.eclipse.jdt.core.formatter.comment.format_header=false
102
org.eclipse.jdt.core.formatter.comment.format_header=false
110
org.eclipse.jdt.core.formatter.comment.format_html=true
103
org.eclipse.jdt.core.formatter.comment.format_html=true
111
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
104
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
Lines 313-316 Link Here
313
org.eclipse.jdt.core.formatter.tabulation.char=tab
306
org.eclipse.jdt.core.formatter.tabulation.char=tab
314
org.eclipse.jdt.core.formatter.tabulation.size=4
307
org.eclipse.jdt.core.formatter.tabulation.size=4
315
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
308
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
316
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
309
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
(-)META-INF/MANIFEST.MF (-2 / +5 lines)
Lines 4-10 Link Here
4
Bundle-SymbolicName: org.eclipse.mylyn.team.tests
4
Bundle-SymbolicName: org.eclipse.mylyn.team.tests
5
Bundle-Version: 1.0.0
5
Bundle-Version: 1.0.0
6
Bundle-Vendor: Eclipse.org
6
Bundle-Vendor: Eclipse.org
7
Require-Bundle: org.eclipse.mylyn.team.ui,
7
Require-Bundle: org.junit,
8
 org.eclipse.mylyn.team.ui,
8
 org.eclipse.mylyn.team.cvs,
9
 org.eclipse.mylyn.team.cvs,
9
 org.eclipse.mylyn.tasks.core,
10
 org.eclipse.mylyn.tasks.core,
10
 org.eclipse.ui,
11
 org.eclipse.ui,
Lines 22-25 Link Here
22
 org.eclipse.mylyn.monitor.ui,
23
 org.eclipse.mylyn.monitor.ui,
23
 org.eclipse.ui.ide,
24
 org.eclipse.ui.ide,
24
 org.eclipse.mylyn.tasks.tests,
25
 org.eclipse.mylyn.tasks.tests,
25
 org.eclipse.mylyn.context.ui
26
 org.eclipse.mylyn.context.ui,
27
 org.eclipse.team.cvs.core
28
Bundle-RequiredExecutionEnvironment: J2SE-1.5
(-).classpath (-1 lines)
Lines 7-12 Link Here
7
			<accessrule kind="accessible" pattern="**/internal/**"/>
7
			<accessrule kind="accessible" pattern="**/internal/**"/>
8
		</accessrules>
8
		</accessrules>
9
	</classpathentry>
9
	</classpathentry>
10
	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
11
	<classpathentry kind="output" path="bin"/>
10
	<classpathentry kind="output" path="bin"/>
12
</classpath>
11
</classpath>
(-)src/org/eclipse/mylyn/team/tests/TeamPropertiesLinkProviderTest.java (+116 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2004, 2007 Mylyn project committers and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *******************************************************************************/
8
9
package org.eclipse.mylyn.team.tests;
10
11
import java.io.ByteArrayInputStream;
12
import java.util.ArrayList;
13
import java.util.List;
14
15
import junit.framework.TestCase;
16
17
import org.eclipse.core.resources.IFile;
18
import org.eclipse.core.resources.IProject;
19
import org.eclipse.core.resources.IResource;
20
import org.eclipse.core.resources.IWorkspaceRoot;
21
import org.eclipse.core.resources.ResourcesPlugin;
22
import org.eclipse.core.runtime.CoreException;
23
import org.eclipse.mylyn.internal.team.ui.ContextChangeSet;
24
import org.eclipse.mylyn.internal.team.ui.FocusedTeamUiPlugin;
25
import org.eclipse.mylyn.internal.team.ui.properties.TeamPropertiesLinkProvider;
26
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryTask;
27
import org.eclipse.team.core.diff.IDiff;
28
import org.eclipse.team.internal.core.subscribers.ActiveChangeSetManager;
29
30
/**
31
 * @author Steffen Pingel
32
 */
33
@SuppressWarnings("restriction")
34
public class TeamPropertiesLinkProviderTest extends TestCase {
35
36
	private IProject project;
37
	private List<IResource> resources;
38
39
	@Override
40
	protected void setUp() throws Exception {
41
		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
42
		project = root.getProject("Test Project");
43
		project.create(null);
44
		project.open(null);
45
		
46
		resources = new ArrayList<IResource>();
47
	}
48
49
	@Override
50
	protected void tearDown() throws Exception {
51
		project.delete(true, null);
52
	}
53
54
	public void testCommitCommentTemplate() throws Exception {
55
		MockRepositoryTask task = new MockRepositoryTask("1");
56
		task.setSummary("summary");
57
		task.setUrl("http://url");
58
59
		ContextChangeSet changeSet = new ContextChangeSet(task, new StubChangeSetManager()) {
60
			@Override
61
			public IResource[] getResources() {
62
				return resources.toArray(new IResource[0]);
63
			}
64
		};
65
		resources.add(project);
66
67
		FocusedTeamUiPlugin.getDefault().getPreferenceStore().setValue(FocusedTeamUiPlugin.COMMIT_TEMPLATE,
68
				"${task.key}: ${task.description}");
69
		assertEquals("1: summary", changeSet.getComment());
70
71
		TeamPropertiesLinkProvider linkProvider = new TeamPropertiesLinkProvider();
72
		assertNull(linkProvider.getCommitCommentTemplate(project));
73
		assertTrue(linkProvider.canAccessProperties(project));
74
75
		assertTrue(linkProvider.setCommitCommentTemplate(project, "ab${task.url}cd"));
76
		assertEquals("ab${task.url}cd", linkProvider.getCommitCommentTemplate(project));
77
		assertEquals("abhttp://urlcd", changeSet.getComment());
78
		assertTrue(linkProvider.canAccessProperties(project));
79
80
		// create file
81
		IFile file = project.getFile("file");
82
		file.create(new ByteArrayInputStream(new byte[0]), true, null);
83
		resources.clear();
84
		resources.add(file);
85
		
86
		assertEquals("ab${task.url}cd", linkProvider.getCommitCommentTemplate(file));
87
		assertEquals("abhttp://urlcd", changeSet.getComment());
88
		assertTrue(linkProvider.canAccessProperties(file));
89
90
		linkProvider.setCommitCommentTemplate(file, null);
91
		assertNull(linkProvider.getCommitCommentTemplate(file));
92
		assertNull(linkProvider.getCommitCommentTemplate(project));
93
		assertTrue(linkProvider.canAccessProperties(file));
94
		assertTrue(linkProvider.canAccessProperties(project));
95
	}
96
97
	@SuppressWarnings("restriction")
98
	public class StubChangeSetManager extends ActiveChangeSetManager {
99
100
		@Override
101
		public IDiff getDiff(IResource resource) throws CoreException {
102
			return null;
103
		}
104
105
		@Override
106
		protected String getName() {
107
			return null;
108
		}
109
110
		@Override
111
		protected void initializeSets() {
112
		}
113
114
	}
115
116
}
(-)src/org/eclipse/mylyn/internal/team/ui/preferences/FocusedTeamPreferencePage.java (+2 lines)
Lines 33-38 Link Here
33
 */
33
 */
34
public class FocusedTeamPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
34
public class FocusedTeamPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
35
35
36
	public final static String PAGE_ID = "org.eclipse.mylyn.team.ui.ui.preferences";
37
	
36
	private Button manageChangeSets;
38
	private Button manageChangeSets;
37
39
38
	private Text commitTemplate = null;
40
	private Text commitTemplate = null;
(-)META-INF/MANIFEST.MF (-1 / +4 lines)
Lines 21-32 Link Here
21
 org.eclipse.compare,
21
 org.eclipse.compare,
22
 org.eclipse.mylyn.monitor.core,
22
 org.eclipse.mylyn.monitor.core,
23
 org.eclipse.mylyn,
23
 org.eclipse.mylyn,
24
 org.eclipse.ui.navigator.resources
24
 org.eclipse.ui.navigator.resources,
25
 org.eclipse.ui,
26
 org.eclipse.ui.forms
25
Eclipse-LazyStart: true
27
Eclipse-LazyStart: true
26
Export-Package: org.eclipse.mylyn.internal.team.ui,
28
Export-Package: org.eclipse.mylyn.internal.team.ui,
27
 org.eclipse.mylyn.internal.team.ui.actions,
29
 org.eclipse.mylyn.internal.team.ui.actions,
28
 org.eclipse.mylyn.internal.team.ui.preferences,
30
 org.eclipse.mylyn.internal.team.ui.preferences,
29
 org.eclipse.mylyn.internal.team.ui.preferences.workaround,
31
 org.eclipse.mylyn.internal.team.ui.preferences.workaround,
32
 org.eclipse.mylyn.internal.team.ui.properties,
30
 org.eclipse.mylyn.internal.team.ui.templates,
33
 org.eclipse.mylyn.internal.team.ui.templates,
31
 org.eclipse.mylyn.team.ui
34
 org.eclipse.mylyn.team.ui
32
Bundle-ClassPath: .
35
Bundle-ClassPath: .
(-)plugin.xml (+11 lines)
Lines 255-259 Link Here
255
       <adapter type="org.eclipse.mylyn.tasks.core.ILinkedTaskInfo"/>
255
       <adapter type="org.eclipse.mylyn.tasks.core.ILinkedTaskInfo"/>
256
    </factory>
256
    </factory>
257
  </extension>
257
  </extension>
258
   <extension
259
         point="org.eclipse.ui.propertyPages">
260
      <page
261
            adaptable="true"
262
            category="org.eclipse.mylyn.tasks.ui.properties.pages.project.repository"
263
            class="org.eclipse.mylyn.internal.team.ui.properties.ProjectTeamPage"
264
            id="org.eclipse.mylyn.tasks.ui.properties.pages.project.team"
265
            name="Team"
266
            objectClass="org.eclipse.core.resources.IProject">
267
      </page>
268
   </extension>
258
	
269
	
259
</plugin>
270
</plugin>
(-)src/org/eclipse/mylyn/internal/team/ui/ContextChangeSet.java (-2 / +22 lines)
Lines 14-19 Link Here
14
import java.util.List;
14
import java.util.List;
15
import java.util.Set;
15
import java.util.Set;
16
16
17
import org.eclipse.core.resources.IProject;
17
import org.eclipse.core.resources.IResource;
18
import org.eclipse.core.resources.IResource;
18
import org.eclipse.core.resources.ResourcesPlugin;
19
import org.eclipse.core.resources.ResourcesPlugin;
19
import org.eclipse.core.resources.mapping.ResourceMapping;
20
import org.eclipse.core.resources.mapping.ResourceMapping;
Lines 21-26 Link Here
21
import org.eclipse.core.runtime.IAdaptable;
22
import org.eclipse.core.runtime.IAdaptable;
22
import org.eclipse.core.runtime.Platform;
23
import org.eclipse.core.runtime.Platform;
23
import org.eclipse.mylyn.context.core.ContextCorePlugin;
24
import org.eclipse.mylyn.context.core.ContextCorePlugin;
25
import org.eclipse.mylyn.internal.team.ui.properties.TeamPropertiesLinkProvider;
24
import org.eclipse.mylyn.monitor.core.InteractionEvent;
26
import org.eclipse.mylyn.monitor.core.InteractionEvent;
25
import org.eclipse.mylyn.resources.ResourcesUiBridgePlugin;
27
import org.eclipse.mylyn.resources.ResourcesUiBridgePlugin;
26
import org.eclipse.mylyn.tasks.core.AbstractTask;
28
import org.eclipse.mylyn.tasks.core.AbstractTask;
Lines 36-41 Link Here
36
38
37
/**
39
/**
38
 * @author Mik Kersten
40
 * @author Mik Kersten
41
 * @author Steffen Pingel
39
 */
42
 */
40
public class ContextChangeSet extends CVSActiveChangeSet/*ActiveChangeSet*/implements IAdaptable {
43
public class ContextChangeSet extends CVSActiveChangeSet/*ActiveChangeSet*/implements IAdaptable {
41
44
Lines 89-96 Link Here
89
92
90
	@Override
93
	@Override
91
	public String getComment() {
94
	public String getComment() {
92
		String template = FocusedTeamUiPlugin.getDefault().getPreferenceStore().getString(
95
		String template = null;
93
				FocusedTeamUiPlugin.COMMIT_TEMPLATE);
96
		Set<IProject> projects = new HashSet<IProject>(); 
97
		IResource[] resources = getResources();
98
		for (IResource resource : resources) {
99
			IProject project = resource.getProject();
100
			if (project != null && project.isAccessible() && !projects.contains(project)) {
101
				TeamPropertiesLinkProvider provider = new TeamPropertiesLinkProvider();
102
				template = provider.getCommitCommentTemplate(project);
103
				if (template != null) {
104
					break;
105
				}
106
				projects.add(project);
107
			}			
108
		}
109
110
		if (template == null) {
111
			template = FocusedTeamUiPlugin.getDefault().getPreferenceStore().getString(
112
					FocusedTeamUiPlugin.COMMIT_TEMPLATE);
113
		}
94
		return FocusedTeamUiPlugin.getDefault().getCommitTemplateManager().generateComment(task, template);
114
		return FocusedTeamUiPlugin.getDefault().getCommitTemplateManager().generateComment(task, template);
95
	}
115
	}
96
116
(-)src/org/eclipse/mylyn/internal/team/ui/properties/ProjectTeamPage.java (+220 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2004, 2007 Mylyn project committers and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *******************************************************************************/
8
9
package org.eclipse.mylyn.internal.team.ui.properties;
10
11
import org.eclipse.core.resources.IProject;
12
import org.eclipse.core.resources.IResource;
13
import org.eclipse.jface.fieldassist.IContentProposalProvider;
14
import org.eclipse.jface.fieldassist.IControlContentAdapter;
15
import org.eclipse.jface.fieldassist.IControlCreator;
16
import org.eclipse.jface.fieldassist.TextContentAdapter;
17
import org.eclipse.jface.layout.GridDataFactory;
18
import org.eclipse.jface.preference.PreferenceDialog;
19
import org.eclipse.jface.resource.JFaceColors;
20
import org.eclipse.mylyn.internal.team.ui.FocusedTeamUiPlugin;
21
import org.eclipse.mylyn.internal.team.ui.preferences.FocusedTeamPreferencePage;
22
import org.eclipse.mylyn.internal.team.ui.templates.TemplateHandlerContentProposalProvider;
23
import org.eclipse.swt.SWT;
24
import org.eclipse.swt.events.ModifyEvent;
25
import org.eclipse.swt.events.ModifyListener;
26
import org.eclipse.swt.events.SelectionAdapter;
27
import org.eclipse.swt.events.SelectionEvent;
28
import org.eclipse.swt.graphics.Font;
29
import org.eclipse.swt.layout.GridData;
30
import org.eclipse.swt.layout.GridLayout;
31
import org.eclipse.swt.widgets.Button;
32
import org.eclipse.swt.widgets.Composite;
33
import org.eclipse.swt.widgets.Control;
34
import org.eclipse.swt.widgets.Label;
35
import org.eclipse.swt.widgets.Text;
36
import org.eclipse.ui.dialogs.PreferencesUtil;
37
import org.eclipse.ui.dialogs.PropertyPage;
38
import org.eclipse.ui.fieldassist.ContentAssistField;
39
import org.eclipse.ui.forms.events.HyperlinkAdapter;
40
import org.eclipse.ui.forms.events.HyperlinkEvent;
41
import org.eclipse.ui.forms.widgets.Hyperlink;
42
43
/**
44
 * @author Rob Elves
45
 * @author Steffen Pingel
46
 * @see Adapted from org.eclipse.ui.internal.ide.dialogs.ProjectReferencePage
47
 */
48
@SuppressWarnings("deprecation")
49
public class ProjectTeamPage extends PropertyPage {
50
51
	private IProject project;
52
53
	private boolean modified = false;
54
55
	private Button useProjectSettings;
56
57
	private Text commitTemplateText;
58
59
	private Composite propertiesComposite;
60
61
	private Hyperlink configurationHyperlink;
62
63
	private Label label;
64
65
	public ProjectTeamPage() {
66
		noDefaultAndApplyButton();
67
	}
68
69
	@Override
70
	protected Control createContents(Composite parent) {
71
		Font font = parent.getFont();
72
73
		Composite composite = new Composite(parent, SWT.NONE);
74
		GridLayout layout = new GridLayout();
75
		composite.setLayout(layout);
76
		composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
77
		composite.setFont(font);
78
79
		createDescription(composite);
80
		createPropertiesControl(composite);
81
82
		initialize();
83
84
		return composite;
85
	}
86
87
	private void createDescription(Composite parent) {
88
		Composite composite = new Composite(parent, SWT.NONE);
89
		composite.setFont(parent.getFont());
90
		GridLayout layout = new GridLayout();
91
		layout.marginHeight = 0;
92
		layout.marginWidth = 0;
93
		layout.numColumns = 2;
94
		composite.setLayout(layout);
95
		composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
96
97
		useProjectSettings = new Button(composite, SWT.CHECK);
98
		useProjectSettings.addSelectionListener(new SelectionAdapter() {
99
			@Override
100
			public void widgetSelected(SelectionEvent e) {
101
				modified = true;
102
				setPropertiesEnabled(useProjectSettings.getSelection());
103
			}
104
		});
105
		useProjectSettings.setText("Enable project specific settings");
106
		GridDataFactory.fillDefaults().grab(true, false).applyTo(useProjectSettings);
107
108
		configurationHyperlink = new Hyperlink(composite, SWT.NONE);
109
		configurationHyperlink.setUnderlined(true);
110
		configurationHyperlink.setText("Configure workspace");
111
		configurationHyperlink.addHyperlinkListener(new HyperlinkAdapter() {
112
113
			public void linkActivated(HyperlinkEvent e) {
114
				PreferenceDialog dlg = PreferencesUtil.createPreferenceDialogOn(getShell(),
115
						FocusedTeamPreferencePage.PAGE_ID, new String[] { FocusedTeamPreferencePage.PAGE_ID }, null);
116
				dlg.open();
117
			}
118
		});
119
120
		Label horizontalLine = new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL);
121
		horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2, 1));
122
		horizontalLine.setFont(composite.getFont());
123
	}
124
125
	private void setPropertiesEnabled(boolean enabled) {
126
		propertiesComposite.setEnabled(enabled);
127
		for (Control child : propertiesComposite.getChildren()) {
128
			child.setEnabled(enabled);
129
		}
130
		commitTemplateText.setEnabled(enabled);
131
		
132
		configurationHyperlink.setEnabled(!enabled);
133
		if (!enabled) {
134
			configurationHyperlink.setForeground(JFaceColors.getHyperlinkText(getShell().getDisplay()));
135
		} else {
136
			configurationHyperlink.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_TITLE_INACTIVE_FOREGROUND));
137
		}
138
	}
139
140
	private void createPropertiesControl(Composite parent) {
141
		propertiesComposite = new Composite(parent, SWT.NONE);
142
		propertiesComposite.setFont(parent.getFont());
143
		GridLayout layout = new GridLayout();
144
		layout.marginHeight = 0;
145
		layout.marginWidth = 0;
146
		layout.numColumns = 1;
147
		propertiesComposite.setLayout(layout);
148
		propertiesComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
149
150
		label = new Label(propertiesComposite, SWT.NONE);
151
		label.setText("Commit Comment Template");
152
153
		String completedTemplate = ""; //getPreferenceStore().getString(FocusedTeamUiPlugin.COMMIT_TEMPLATE);
154
		commitTemplateText = addTemplateField(propertiesComposite, completedTemplate,
155
				new TemplateHandlerContentProposalProvider());
156
	}
157
158
	@SuppressWarnings("deprecation")
159
	private Text addTemplateField(final Composite parent, final String text, IContentProposalProvider provider) {
160
		IControlContentAdapter adapter = new TextContentAdapter();
161
		IControlCreator controlCreator = new IControlCreator() {
162
			public Control createControl(Composite parent, int style) {
163
				Text control = new Text(parent, style);
164
				control.setText(text);
165
				control.addModifyListener(new ModifyListener() {
166
					public void modifyText(ModifyEvent e) {
167
						modified = true;
168
					}
169
				});
170
				return control;
171
			}
172
		};
173
174
		ContentAssistField field = new ContentAssistField(parent, SWT.BORDER | SWT.MULTI, controlCreator, adapter,
175
				provider, null, new char[] { '$' });
176
177
		GridData gd = new GridData();
178
		gd.heightHint = 60;
179
		gd.horizontalAlignment = GridData.FILL;
180
		gd.grabExcessHorizontalSpace = true;
181
		gd.verticalAlignment = GridData.CENTER;
182
		gd.grabExcessVerticalSpace = false;
183
		field.getLayoutControl().setLayoutData(gd);
184
185
		return (Text) field.getControl();
186
	}
187
188
	private void initialize() {
189
		project = (IProject) getElement().getAdapter(IResource.class);
190
191
		TeamPropertiesLinkProvider provider = new TeamPropertiesLinkProvider();
192
		String template = provider.getCommitCommentTemplate(project);
193
		if (template == null) {
194
			useProjectSettings.setSelection(false);
195
			setPropertiesEnabled(false);
196
			commitTemplateText.setText(FocusedTeamUiPlugin.getDefault().getPreferenceStore().getString(
197
					FocusedTeamUiPlugin.COMMIT_TEMPLATE));
198
		} else {
199
			useProjectSettings.setSelection(true);
200
			setPropertiesEnabled(true);
201
			commitTemplateText.setText(template);
202
		}
203
	}
204
205
	@Override
206
	public boolean performOk() {
207
		if (!modified) {
208
			return true;
209
		}
210
211
		TeamPropertiesLinkProvider provider = new TeamPropertiesLinkProvider();
212
		if (useProjectSettings.getSelection()) {
213
			provider.setCommitCommentTemplate(project, commitTemplateText.getText());
214
		} else {
215
			provider.setCommitCommentTemplate(project, null);
216
		}
217
218
		return true;
219
	}
220
}
(-)src/org/eclipse/mylyn/internal/team/ui/properties/TeamPropertiesLinkProvider.java (+74 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2004, 2007 Mylyn project committers and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *******************************************************************************/
8
9
package org.eclipse.mylyn.internal.team.ui.properties;
10
11
import org.eclipse.core.resources.IProject;
12
import org.eclipse.core.resources.IResource;
13
import org.eclipse.core.resources.ProjectScope;
14
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
15
import org.eclipse.core.runtime.preferences.IScopeContext;
16
import org.eclipse.mylyn.internal.team.ui.FocusedTeamUiPlugin;
17
import org.eclipse.mylyn.monitor.core.StatusHandler;
18
import org.osgi.service.prefs.BackingStoreException;
19
20
/**
21
 * Retrieves team settings from project properties.
22
 * 
23
 * @author Eugene Kuleshov
24
 * @author Steffen Pingel
25
 */
26
public class TeamPropertiesLinkProvider {
27
28
	private static final String PROJECT_COMMIT_COMMENT_TEMPLATE = "commit.comment.template";
29
30
	public TeamPropertiesLinkProvider() {
31
	}
32
	
33
	public boolean canAccessProperties(IResource resource) {
34
		IProject project = resource.getProject();
35
		return project != null && project.isAccessible();
36
	}
37
38
	public String getCommitCommentTemplate(IResource resource) {
39
		if (!canAccessProperties(resource)) {
40
			return null;
41
		}
42
43
		IScopeContext projectScope = new ProjectScope(resource.getProject());
44
		IEclipsePreferences projectNode = projectScope.getNode(FocusedTeamUiPlugin.PLUGIN_ID);
45
		if (projectNode != null) {
46
			return projectNode.get(PROJECT_COMMIT_COMMENT_TEMPLATE, null);
47
		}
48
		return null;
49
	}
50
51
	public boolean setCommitCommentTemplate(IResource resource, String commitCommentTemplate) {
52
		if (!canAccessProperties(resource)) {
53
			return false;
54
		}
55
56
		IScopeContext projectScope = new ProjectScope(resource.getProject());
57
		IEclipsePreferences projectNode = projectScope.getNode(FocusedTeamUiPlugin.PLUGIN_ID);
58
		if (projectNode != null) {
59
			if (commitCommentTemplate != null) {
60
				projectNode.put(PROJECT_COMMIT_COMMENT_TEMPLATE, commitCommentTemplate);
61
			} else {
62
				projectNode.remove(PROJECT_COMMIT_COMMENT_TEMPLATE);
63
			}
64
			try {
65
				projectNode.flush();
66
				return true;
67
			} catch (BackingStoreException e) {
68
				StatusHandler.fail(e, "Failed to save commit comment template for project", false);
69
			}
70
		}
71
		return false;
72
	}
73
74
}

Return to bug 150663