public boolean performFinish() { if (!existingPage.getInternalMode()) { try { final Map<IProject, File> projectsToMove = existingPage.getProjects(true); final Repository selectedRepository = existingPage.getSelectedRepsoitory(); getContainer() .run( false, false, new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { for (Map.Entry<IProject, File> entry : projectsToMove.entrySet()) { IPath targetLocation = new Path(entry.getValue().getPath()); IPath currentLocation = entry.getKey().getLocation(); if (!targetLocation.equals(currentLocation)) { MoveProjectOperation op = new MoveProjectOperation( entry.getKey(), entry.getValue().toURI(), UIText.SharingWizard_MoveProjectActionLabel); try { IStatus result = op.execute(monitor, null); if (!result.isOK()) throw new RuntimeException(); } catch (ExecutionException e) { if (e.getCause() != null) throw new InvocationTargetException(e.getCause()); throw new InvocationTargetException(e); } } try { new ConnectProviderOperation( entry.getKey(), selectedRepository.getDirectory()) .execute(monitor); } catch (CoreException e) { throw new InvocationTargetException(e); } } } }); } catch (InvocationTargetException e) { Activator.handleError(UIText.SharingWizard_failed, e.getCause(), true); return false; } catch (InterruptedException e) { // ignore for the moment } return true; } else { final ConnectProviderOperation op = new ConnectProviderOperation(existingPage.getProjects(true)); try { getContainer() .run( true, false, new IRunnableWithProgress() { public void run(final IProgressMonitor monitor) throws InvocationTargetException { try { op.execute(monitor); PlatformUI.getWorkbench() .getDisplay() .syncExec( new Runnable() { public void run() { Set<File> filesToAdd = new HashSet<File>(); // collect all files first for (Entry<IProject, File> entry : existingPage.getProjects(true).entrySet()) filesToAdd.add(entry.getValue()); // add the files to the repository // view for (File file : filesToAdd) Activator.getDefault() .getRepositoryUtil() .addConfiguredRepository(file); } }); } catch (CoreException ce) { throw new InvocationTargetException(ce); } } }); return true; } catch (Throwable e) { if (e instanceof InvocationTargetException) { e = e.getCause(); } if (e instanceof CoreException) { IStatus status = ((CoreException) e).getStatus(); e = status.getException(); } Activator.handleError(UIText.SharingWizard_failed, e, true); return false; } } }
@Override public boolean canFinish() { return existingPage.isPageComplete(); }