Normalmente, a primeira etapa na construção de uma UI de equipe é implementar uma página de assistente para que os usuários configurem um projeto para o suporte de equipe do plug-in. É aí que o id do provedor da equipe será incluído nas propriedades do projeto. Você participa na configuração do projeto contribuindo com o ponto de extensão org.eclipse.team.ui.configurationWizards. Esta extensão é mostrada quando o usuário escolhe Equipe->Compartilhar Projeto...
Examinaremos isso no contexto da implementação do cliente CVS. A seguir, a marcação da UI do CVS para seu assistente de configuração:
<extension point="org.eclipse.team.ui.configurationWizards"> <wizard name="%SharingWizard.name" icon="icons/full/wizards/newconnect_wiz.gif" class="org.eclipse.team.internal.ccvs.ui.wizards.SharingWizard" id="org.eclipse.team.ccvs.ui.SharingWizard"> </wizard> </extension>
Como de costume, os plug-ins fornecem uma classe que implementa a extensão e um id exclusivo para identificar sua extensão. O nome e o ícone serão mostrados na primeira página do assistente de configuração do projeto se houver vários provedores entre os quais escolher.
Depois que o usuário seleciona um provedor, a página seguinte mostra as informações de configuração específicas de seu provedor. (Se seu provedor for o único plug-in de provedor de equipe instalado, o assistente saltará diretamente para sua página.) Seu assistente deve implementar IConfigurationWizard, que inicializa o assistente para um workbench e projeto especificados. O restante da implementação depende do design de seu assistente. Você deve reunir todas as informações necessárias para associar o projeto a seu suporte de equipe.
Quando o assistente é concluído, é necessário mapear o provedor da equipe para o projeto utilizando RepositoryProvider.map(IProject, String). O mapeamento trata da atribuição da propriedade persistente correta do seu projeto.
O cliente CVS realiza esse trabalho no método setSharing de seu provedor, que é chamado quando o assistente é concluído:
public void setSharing(IProject project, FolderSyncInfo info, IProgressMonitor monitor) throws TeamException { // Assegure que as informações fornecidas correspondam às do projeto ... // Assegure que a localização fornecida seja gerenciada ... // Registre o projeto com a Equipe RepositoryProvider.map(project, CVSProviderPlugin.getTypeId()); }