View | Details | Raw Unified | Return to bug 73590 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutProjectOperation.java (-4 / +83 lines)
Lines 18-23 Link Here
18
import org.eclipse.core.resources.*;
18
import org.eclipse.core.resources.*;
19
import org.eclipse.core.runtime.*;
19
import org.eclipse.core.runtime.*;
20
import org.eclipse.core.runtime.jobs.*;
20
import org.eclipse.core.runtime.jobs.*;
21
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
22
import org.eclipse.jface.preference.IPreferenceStore;
21
import org.eclipse.osgi.util.NLS;
23
import org.eclipse.osgi.util.NLS;
22
import org.eclipse.team.core.RepositoryProvider;
24
import org.eclipse.team.core.RepositoryProvider;
23
import org.eclipse.team.core.TeamException;
25
import org.eclipse.team.core.TeamException;
Lines 29-36 Link Here
29
import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
31
import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
30
import org.eclipse.team.internal.ccvs.ui.*;
32
import org.eclipse.team.internal.ccvs.ui.*;
31
import org.eclipse.team.internal.ccvs.ui.Policy;
33
import org.eclipse.team.internal.ccvs.ui.Policy;
34
import org.eclipse.team.internal.ccvs.ui.wizards.NewProjectListener;
32
import org.eclipse.team.internal.ui.wizards.WorkingSetsDialog;
35
import org.eclipse.team.internal.ui.wizards.WorkingSetsDialog;
33
import org.eclipse.ui.*;
36
import org.eclipse.ui.*;
37
import org.eclipse.ui.actions.NewProjectAction;
34
/**
38
/**
35
 * This class acts as an abstract class for checkout operations.
39
 * This class acts as an abstract class for checkout operations.
36
 * It provides a few common methods.
40
 * It provides a few common methods.
Lines 38-47 Link Here
38
public abstract class CheckoutProjectOperation extends CheckoutOperation {
42
public abstract class CheckoutProjectOperation extends CheckoutOperation {
39
43
40
	private String targetLocation;
44
	private String targetLocation;
45
	
46
	private boolean scrubProject = true;
47
	private boolean configureProjectsWithoutMetaFile;
41
48
42
	public CheckoutProjectOperation(IWorkbenchPart part, ICVSRemoteFolder[] remoteFolders, String targetLocation) {
49
	public CheckoutProjectOperation(IWorkbenchPart part, ICVSRemoteFolder[] remoteFolders, String targetLocation) {
50
		this(part, remoteFolders, targetLocation, false);
51
	}
52
	
53
	public CheckoutProjectOperation(IWorkbenchPart part, ICVSRemoteFolder[] remoteFolders, String targetLocation, boolean configureProjectWithoutMetaFile) {
43
		super(part, remoteFolders);
54
		super(part, remoteFolders);
44
		this.targetLocation = targetLocation;
55
		this.targetLocation = targetLocation;
56
		this.configureProjectsWithoutMetaFile = configureProjectWithoutMetaFile;
45
	}
57
	}
46
	
58
	
47
	/**
59
	/**
Lines 148-154 Link Here
148
				return OK;
160
				return OK;
149
			}
161
			}
150
			
162
			
151
			final boolean sendModuleName = project != null;
163
			final boolean[] sendModuleName = new boolean[]{project != null};
164
			
165
			if(configureProjectsWithoutMetaFile){
166
				boolean canContinue = configureProject(resource, pm, targetProjects, sendModuleName);
167
				if(!canContinue){
168
					return OK; //cancelled, but no error
169
				}
170
			}
171
			
152
			final IStatus[] result = new IStatus[] { null };
172
			final IStatus[] result = new IStatus[] { null };
153
			final ISchedulingRule schedulingRule = getSchedulingRule(targetProjects);
173
			final ISchedulingRule schedulingRule = getSchedulingRule(targetProjects);
154
			if (schedulingRule instanceof IResource && ((IResource)schedulingRule).getType() == IResource.ROOT) {
174
			if (schedulingRule instanceof IResource && ((IResource)schedulingRule).getType() == IResource.ROOT) {
Lines 159-165 Link Here
159
					// Still use the projects as the inner rule so we get the proper batching of sync info write
179
					// Still use the projects as the inner rule so we get the proper batching of sync info write
160
					EclipseSynchronizer.getInstance().run(MultiRule.combine(targetProjects), new ICVSRunnable() {
180
					EclipseSynchronizer.getInstance().run(MultiRule.combine(targetProjects), new ICVSRunnable() {
161
						public void run(IProgressMonitor monitor) throws CVSException {
181
						public void run(IProgressMonitor monitor) throws CVSException {
162
							result[0] = performCheckout(session, resource, targetProjects, sendModuleName, monitor);
182
							result[0] = performCheckout(session, resource, targetProjects, sendModuleName[0], monitor);
163
						}
183
						}
164
					}, Policy.subMonitorFor(pm, 90));
184
					}, Policy.subMonitorFor(pm, 90));
165
				} finally {
185
				} finally {
Lines 168-174 Link Here
168
			} else {
188
			} else {
169
				EclipseSynchronizer.getInstance().run(schedulingRule, new ICVSRunnable() {
189
				EclipseSynchronizer.getInstance().run(schedulingRule, new ICVSRunnable() {
170
					public void run(IProgressMonitor monitor) throws CVSException {
190
					public void run(IProgressMonitor monitor) throws CVSException {
171
						result[0] = performCheckout(session, resource, targetProjects, sendModuleName, monitor);
191
						result[0] = performCheckout(session, resource, targetProjects, sendModuleName[0], monitor);
172
					}
192
					}
173
				}, Policy.subMonitorFor(pm, 90));
193
				}, Policy.subMonitorFor(pm, 90));
174
			}
194
			}
Lines 182-193 Link Here
182
			// Since we were able to make a connection, return the status so the
202
			// Since we were able to make a connection, return the status so the
183
			// checkout of any other modules can proceed
203
			// checkout of any other modules can proceed
184
			return new CVSStatus(e.getStatus().getSeverity(), NLS.bind(CVSUIMessages.CheckoutProjectOperation_1, new String[] {resource.getRepositoryRelativePath(), e.getMessage()}), e);
204
			return new CVSStatus(e.getStatus().getSeverity(), NLS.bind(CVSUIMessages.CheckoutProjectOperation_1, new String[] {resource.getRepositoryRelativePath(), e.getMessage()}), e);
205
		} catch (InterruptedException e) {
206
			/* ignore cancellation */
207
			return OK;
185
		} finally {
208
		} finally {
186
			session.close();
209
			session.close();
187
			pm.done();
210
			pm.done();
188
		}
211
		}
189
	}
212
	}
190
213
214
	private boolean configureProject(final ICVSRemoteFolder resource,
215
			IProgressMonitor pm, final IProject[] targetProjects,
216
			final boolean[] sendModuleName) throws CVSException,
217
			InterruptedException {
218
		ProjectMetaFileOperation metafileOp = new ProjectMetaFileOperation(getPart(), new ICVSRemoteFolder[]{resource}, false);
219
		metafileOp.execute(pm);
220
		boolean metaFileExists = metafileOp.metaFileExists();
221
		boolean shouldConfigure = false; //default simple checkout
222
		if( !metaFileExists){
223
			shouldConfigure = shouldConfigureProjectsWithoutMetaFile(targetProjects[0]);
224
		}
225
		if(shouldConfigure){
226
			final NewProjectListener listener = new NewProjectListener();
227
			getShell().getDisplay().syncExec(new Runnable(){
228
				public void run() {
229
					ResourcesPlugin.getWorkspace().addResourceChangeListener(listener, IResourceChangeEvent.POST_CHANGE);
230
					(new NewProjectAction(PlatformUI.getWorkbench().getActiveWorkbenchWindow())).run();
231
					targetProjects[0] = listener.getNewProject();
232
				}
233
			});
234
			if(targetProjects[0] == null){
235
				return false;
236
			}
237
			ResourcesPlugin.getWorkspace().removeResourceChangeListener(listener);
238
			scrubProject = false;
239
			sendModuleName[0] = true;
240
		}
241
		return true;
242
	}
243
191
	private ISchedulingRule getSchedulingRule(IProject[] projects) {
244
	private ISchedulingRule getSchedulingRule(IProject[] projects) {
192
		if (projects.length == 1) {
245
		if (projects.length == 1) {
193
			return ResourcesPlugin.getWorkspace().getRuleFactory().modifyRule(projects[0]);
246
			return ResourcesPlugin.getWorkspace().getRuleFactory().modifyRule(projects[0]);
Lines 283-288 Link Here
283
			pm.done();
336
			pm.done();
284
		}
337
		}
285
	}
338
	}
339
	
340
	private boolean shouldConfigureProjectsWithoutMetaFile(final IProject project){
341
		final IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
342
		if(MessageDialogWithToggle.NEVER.equals(store.getString(ICVSUIConstants.PREF_PROMPT_ON_PROJECT_WITHOUT_METAFILE))){
343
			return false;
344
		}
345
		if(MessageDialogWithToggle.ALWAYS.equals(store.getString(ICVSUIConstants.PREF_PROMPT_ON_PROJECT_WITHOUT_METAFILE))) {
346
			return true;
347
		}
348
		final boolean[] result = new boolean[]{false};
349
		getShell().getDisplay().syncExec(new Runnable(){
350
351
			public void run() {
352
				MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoQuestion(getShell(), 
353
						CVSUIMessages.CheckoutProjectOperation_ConfigurationPromptTitle, 
354
						NLS.bind(CVSUIMessages.CheckoutProjectOperation_ConfigurationPromptMessage, project.getName()), 
355
						CVSUIMessages.CheckoutProjectOperation_ConfigurationPromptToogle, 
356
						false, store, 
357
						ICVSUIConstants.PREF_PROMPT_ON_PROJECT_WITHOUT_METAFILE);
358
				result[0] = dialog.getReturnCode() == 2; 
359
			}
360
			
361
		});
362
		
363
		return result[0]; 
364
	}
286
365
287
	protected boolean isRecursive() {
366
	protected boolean isRecursive() {
288
		return true;
367
		return true;
Lines 343-349 Link Here
343
	 * Default is to scrub the projects. Can be overridden by subclasses.
422
	 * Default is to scrub the projects. Can be overridden by subclasses.
344
	 */
423
	 */
345
	protected boolean performScrubProjects() {
424
	protected boolean performScrubProjects() {
346
		return true;
425
		return scrubProject;
347
	}
426
	}
348
427
349
	/*
428
	/*
(-)src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutMultipleProjectsOperation.java (+6 lines)
Lines 38-43 Link Here
38
		this.workingSetName=wsName;
38
		this.workingSetName=wsName;
39
	}
39
	}
40
	
40
	
41
	public CheckoutMultipleProjectsOperation(IWorkbenchPart part,
42
			ICVSRemoteFolder[] remoteFolders,
43
			String targetLocation, boolean configure) {
44
		super(part,remoteFolders, targetLocation, configure);
45
	}
46
41
	/**
47
	/**
42
	 * Return the target location where the given project should be located or
48
	 * Return the target location where the given project should be located or
43
	 * null if the default location should be used.
49
	 * null if the default location should be used.
(-)src/org/eclipse/team/internal/ccvs/ui/CVSPreferencesPage.java (+9 lines)
Lines 570-575 Link Here
570
	    		YES_NO_PROMPT,
570
	    		YES_NO_PROMPT,
571
	    		new String [] { MessageDialogWithToggle.ALWAYS, MessageDialogWithToggle.NEVER,	MessageDialogWithToggle.PROMPT }
571
	    		new String [] { MessageDialogWithToggle.ALWAYS, MessageDialogWithToggle.NEVER,	MessageDialogWithToggle.PROMPT }
572
	    		);
572
	    		);
573
	    
574
	    new StringRadioButtons(
575
	    		composite, 
576
	    		ICVSUIConstants.PREF_PROMPT_ON_PROJECT_WITHOUT_METAFILE, 
577
	    		CVSUIMessages.CVSPreferencesPage_52, 
578
	    		IHelpContextIds.CHECKOUT_CONFIGURATION_PAGE,
579
	    		YES_NO_PROMPT,
580
	    		new String [] { MessageDialogWithToggle.ALWAYS, MessageDialogWithToggle.NEVER,	MessageDialogWithToggle.PROMPT }
581
	    		);
573
	    SWTUtils.createPlaceholder(composite, 1);
582
	    SWTUtils.createPlaceholder(composite, 1);
574
	  
583
	  
575
		return composite;
584
		return composite;
(-)src/org/eclipse/team/internal/ccvs/ui/CVSUIMessages.java (+4 lines)
Lines 41-46 Link Here
41
	public static String CheckoutAsMainPage_WorkingSetExistsErrorMessage;
41
	public static String CheckoutAsMainPage_WorkingSetExistsErrorMessage;
42
	public static String CheckoutAsMainPage_WorkingSetMultiple;
42
	public static String CheckoutAsMainPage_WorkingSetMultiple;
43
	public static String CheckoutAsMainPage_WorkingSetSingle;
43
	public static String CheckoutAsMainPage_WorkingSetSingle;
44
	public static String CheckoutProjectOperation_ConfigurationPromptMessage;
45
	public static String CheckoutProjectOperation_ConfigurationPromptTitle;
46
	public static String CheckoutProjectOperation_ConfigurationPromptToogle;
44
	public static String CommitAction_0;
47
	public static String CommitAction_0;
45
	public static String CommitAction_1;
48
	public static String CommitAction_1;
46
	public static String CommitAction_2;
49
	public static String CommitAction_2;
Lines 69-74 Link Here
69
	public static String CVSPreferencesPage_49;
72
	public static String CVSPreferencesPage_49;
70
	public static String CVSPreferencesPage_50;
73
	public static String CVSPreferencesPage_50;
71
	public static String CVSPreferencesPage_51;
74
	public static String CVSPreferencesPage_51;
75
	public static String CVSPreferencesPage_52;
72
	public static String CVSPreferencesPage_QuickDiffAnnotate;
76
	public static String CVSPreferencesPage_QuickDiffAnnotate;
73
	public static String DiffOperation_CreatePatchConflictMessage;
77
	public static String DiffOperation_CreatePatchConflictMessage;
74
	public static String DiffOperation_CreatePatchConflictTitle;
78
	public static String DiffOperation_CreatePatchConflictTitle;
(-)src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java (-1 / +1 lines)
Lines 122-128 Link Here
122
    public final String PREF_ANNOTATE_PROMPTFORBINARY = "pref_annotate_promptforbinary"; //$NON-NLS-1$
122
    public final String PREF_ANNOTATE_PROMPTFORBINARY = "pref_annotate_promptforbinary"; //$NON-NLS-1$
123
    public final String PREF_ALLOW_COMMIT_WITH_WARNINGS = "pref_commit_with_warning"; //$NON-NLS-1$
123
    public final String PREF_ALLOW_COMMIT_WITH_WARNINGS = "pref_commit_with_warning"; //$NON-NLS-1$
124
    public final String PREF_ALLOW_COMMIT_WITH_ERRORS = "pref_commit_with_errors"; //$NON-NLS-1$
124
    public final String PREF_ALLOW_COMMIT_WITH_ERRORS = "pref_commit_with_errors"; //$NON-NLS-1$
125
    
125
    public final String PREF_PROMPT_ON_PROJECT_WITHOUT_METAFILE = "pref_prompt_when_no_metafile"; //$NON-NLS-1$
126
    
126
    
127
	// console preferences
127
	// console preferences
128
	public final String PREF_CONSOLE_COMMAND_COLOR = "pref_console_command_color"; //$NON-NLS-1$
128
	public final String PREF_CONSOLE_COMMAND_COLOR = "pref_console_command_color"; //$NON-NLS-1$
(-)src/org/eclipse/team/internal/ccvs/ui/messages.properties (+4 lines)
Lines 232-237 Link Here
232
CVSPreferencesPage_49=Maximum number of comments must be a number
232
CVSPreferencesPage_49=Maximum number of comments must be a number
233
CVSPreferencesPage_50=Commit resources with warnings
233
CVSPreferencesPage_50=Commit resources with warnings
234
CVSPreferencesPage_51=Commit resources with errors
234
CVSPreferencesPage_51=Commit resources with errors
235
CVSPreferencesPage_52=When checking out, configure projects without metafile
235
CVSPropertiesPage_virtualModule=<no corresponding remote folder>
236
CVSPropertiesPage_virtualModule=<no corresponding remote folder>
236
237
237
CVSProxyPreferencePage_enableProxy=&Enable proxy connection
238
CVSProxyPreferencePage_enableProxy=&Enable proxy connection
Lines 854-859 Link Here
854
CheckoutAsProjectSelectionPage_showUnshared=Show unshared projects
855
CheckoutAsProjectSelectionPage_showUnshared=Show unshared projects
855
CheckoutAsProjectSelectionPage_showSameRepo=Show projects shared with the same repository
856
CheckoutAsProjectSelectionPage_showSameRepo=Show projects shared with the same repository
856
CheckoutAsProjectSelectionPage_invalidFolderName=''{0}'' is not a valid folder name
857
CheckoutAsProjectSelectionPage_invalidFolderName=''{0}'' is not a valid folder name
858
CheckoutProjectOperation_ConfigurationPromptTitle=Configure project without metafile?
859
CheckoutProjectOperation_ConfigurationPromptMessage=You have choosen to checkout a project {0} that does not have a metafile. Do you want to configure the project using New Project Wizard? 
860
CheckoutProjectOperation_ConfigurationPromptToogle=Remember my decision
857
861
858
862
859
WorkspaceChangeSetCapability_1=New Set
863
WorkspaceChangeSetCapability_1=New Set
(-)src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java (+1 lines)
Lines 577-582 Link Here
577
		store.setDefault(ICVSUIConstants.PREF_INCLUDE_CHANGE_SETS_IN_COMMIT, MessageDialogWithToggle.NEVER);
577
		store.setDefault(ICVSUIConstants.PREF_INCLUDE_CHANGE_SETS_IN_COMMIT, MessageDialogWithToggle.NEVER);
578
		store.setDefault(ICVSUIConstants.PREF_ALLOW_COMMIT_WITH_WARNINGS, MessageDialogWithToggle.ALWAYS);
578
		store.setDefault(ICVSUIConstants.PREF_ALLOW_COMMIT_WITH_WARNINGS, MessageDialogWithToggle.ALWAYS);
579
		store.setDefault(ICVSUIConstants.PREF_ALLOW_COMMIT_WITH_ERRORS, MessageDialogWithToggle.PROMPT);
579
		store.setDefault(ICVSUIConstants.PREF_ALLOW_COMMIT_WITH_ERRORS, MessageDialogWithToggle.PROMPT);
580
		store.setDefault(ICVSUIConstants.PREF_PROMPT_ON_PROJECT_WITHOUT_METAFILE, MessageDialogWithToggle.PROMPT);
580
		
581
		
581
		store.setDefault(ICVSUIConstants.PREF_UPDATE_HANDLING, ICVSUIConstants.PREF_UPDATE_HANDLING_TRADITIONAL);
582
		store.setDefault(ICVSUIConstants.PREF_UPDATE_HANDLING, ICVSUIConstants.PREF_UPDATE_HANDLING_TRADITIONAL);
582
		store.setDefault(ICVSUIConstants.PREF_UPDATE_PREVIEW, ICVSUIConstants.PREF_UPDATE_PREVIEW_IN_SYNCVIEW);
583
		store.setDefault(ICVSUIConstants.PREF_UPDATE_PREVIEW, ICVSUIConstants.PREF_UPDATE_PREVIEW_IN_SYNCVIEW);
(-)src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutAsWizard.java (-26 / +1 lines)
Lines 43-74 Link Here
43
	private TagSelectionWizardPage tagSelectionPage;
43
	private TagSelectionWizardPage tagSelectionPage;
44
	private IWorkbenchPart part;
44
	private IWorkbenchPart part;
45
45
46
	class NewProjectListener implements IResourceChangeListener {
46
	/**
47
		private IProject newProject = null;
48
		/**
49
		 * @see IResourceChangeListener#resourceChanged(IResourceChangeEvent)
50
		 */
51
		public void resourceChanged(IResourceChangeEvent event) {
52
			IResourceDelta root = event.getDelta();
53
			IResourceDelta[] projectDeltas = root.getAffectedChildren();
54
			for (int i = 0; i < projectDeltas.length; i++) {							
55
				IResourceDelta delta = projectDeltas[i];
56
				IResource resource = delta.getResource();
57
				if (delta.getKind() == IResourceDelta.ADDED) {
58
					newProject = (IProject)resource;
59
				}
60
			}
61
		}
62
		/**
63
		 * Gets the newProject.
64
		 * @return Returns a IProject
65
		 */
66
		public IProject getNewProject() {
67
			return newProject;
68
		}
69
	}
70
	
71
    /**
72
     * Return the settings used for all CheckoutAsWizard pages
47
     * Return the settings used for all CheckoutAsWizard pages
73
     */
48
     */
74
    public static IDialogSettings getCheckoutAsDialogSettings() {
49
    public static IDialogSettings getCheckoutAsDialogSettings() {
(-)src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAction.java (-3 / +8 lines)
Lines 17-24 Link Here
17
import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
17
import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
18
import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
18
import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
19
import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
19
import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
20
import org.eclipse.team.internal.ccvs.ui.operations.CheckoutMultipleProjectsOperation;
20
import org.eclipse.team.internal.ccvs.ui.operations.*;
21
import org.eclipse.team.internal.ccvs.ui.operations.ProjectMetaFileOperation;
22
21
23
/**
22
/**
24
 * Checkout a remote module into the workspace ensuring that the user is prompted for
23
 * Checkout a remote module into the workspace ensuring that the user is prompted for
Lines 30-37 Link Here
30
	 * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#execute(org.eclipse.jface.action.IAction)
29
	 * @see org.eclipse.team.internal.ccvs.ui.actions.CVSAction#execute(org.eclipse.jface.action.IAction)
31
	 */
30
	 */
32
	protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
31
	protected void execute(IAction action) throws InvocationTargetException, InterruptedException {
33
		new CheckoutMultipleProjectsOperation(getTargetPart(), getSelectedRemoteFoldersWithProjectName(), null)
32
		ICVSRemoteFolder[] remoteFoldersWithProjectName = getSelectedRemoteFoldersWithProjectName();
33
		if(remoteFoldersWithProjectName.length == 1){ //if there is only than can be configured when no metafile
34
			new CheckoutMultipleProjectsOperation(getTargetPart(), remoteFoldersWithProjectName, null, true)
34
			.run();
35
			.run();
36
		} else {
37
			new CheckoutMultipleProjectsOperation(getTargetPart(), remoteFoldersWithProjectName, null, false)
38
			.run();
39
		}
35
	}
40
	}
36
	
41
	
37
	/* (non-Javadoc)
42
	/* (non-Javadoc)
(-)src/org/eclipse/team/internal/ccvs/ui/wizards/NewProjectListener.java (+38 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007 IBM Corporation 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
 * Contributors:
9
 * IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.team.internal.ccvs.ui.wizards;
12
13
import org.eclipse.core.resources.*;
14
15
public class NewProjectListener implements IResourceChangeListener {
16
	private IProject newProject = null;
17
	/**
18
	 * @see IResourceChangeListener#resourceChanged(IResourceChangeEvent)
19
	 */
20
	public synchronized void resourceChanged(IResourceChangeEvent event) {
21
		IResourceDelta root = event.getDelta();
22
		IResourceDelta[] projectDeltas = root.getAffectedChildren();
23
		for (int i = 0; i < projectDeltas.length; i++) {							
24
			IResourceDelta delta = projectDeltas[i];
25
			IResource resource = delta.getResource();
26
			if (delta.getKind() == IResourceDelta.ADDED) {
27
				newProject = (IProject)resource;
28
			}
29
		}
30
	}
31
	/**
32
	 * Gets the newProject.
33
	 * @return Returns a IProject
34
	 */
35
	public synchronized IProject getNewProject() {
36
		return newProject;
37
	}
38
}
(-)extensions/org/eclipse/ui/actions/NewProjectAction.java (+1 lines)
Lines 113-118 Link Here
113
                IIDEHelpContextIds.NEW_PROJECT_WIZARD);
113
                IIDEHelpContextIds.NEW_PROJECT_WIZARD);
114
114
115
        // Open wizard.
115
        // Open wizard.
116
        dialog.setBlockOnOpen(true);
116
        dialog.open();
117
        dialog.open();
117
    }
118
    }
118
}
119
}

Return to bug 73590