Esta lição se baseia na parte superior do projeto de plug-in criado
no Exercício 5, e modificado no Exercício 6. Nesta lição, você criará
a classe CustomContextProvider, que pode ser
customizada para se ajustar a qualquer visualizador desejado. Por exemplo, se você desejar o visualizador do campo, o provedor de contexto
pode estender o CarmaFieldsContentProvider.
Para criar a classe CARMAContextProvider:
- Certifique-se de estar na perspectiva Desenvolvimento do Plug-in.
Na visualização Package Explorer, expanda o projeto de plug-in com.ibm.carma.plugin.view
usado para os Exercícios 5 e 6.
- Clique com o botão direito do mouse no pacote view que contém
as classes CARMADeveloperView e CustomLabelProvider
e selecione Novo > Classe.
- Na caixa de diálogo Nova Classe Java
que é aberta, insira CustomContextProvider no
campo de texto Nome.
- Clique no botão Navegar à direita
do campo de texto Superclasse. Na caixa de diálogo Seleção da
Superclasse que é aberta, insira o texto do filtro, CARMATreeContentProvider.
Selecione a classe correspondente e clique em OK.
- Marque a caixa de seleção Construtores da superclasse
e clique em Concluir. O diálogo Nova Classe Java
será fechado e a classe CustomContentProvider será
criada.
- Comece por garantir que as importações a seguir estão incluídas na
classe Java. Inclua qualquer uma que esteja ausente.
import java.util.Vector;
import com.ibm.carma.model.RepositoryInstance;
import com.ibm.carma.ui.view.CarmaTreeContentProvider;
- Modifique o método getChildren
para alterar o conteúdo fornecido para o visualizador. Esse método
é onde o provedor pode controlar quais itens são enviados para o visualizador
ao expandir o RAM. Para esse tutorial, implemente o método getChildren
para retornar somente as instâncias do repositório que têm um token do CARMA
no nome e não são uma listagem, um objeto ou uma instância de repositório de carregamento.
O pseudocódigo a seguir demonstra o que o método getChildren
deve fazer:
get the children of the object that would normally be returned;
for each child{
if(the child is a repository instance)
{
if(the repository instance has a CARMA token and is not a listing, object, or load repository instance)
add the child to the list of displayable children;
}
}
Use o código de amostra a seguir para o método getChildren:
public Object[] getChildren(Object parent) {
Object[] children = super.getChildren(parent);
//Do not parse non-existant children
if(children == null)
{
return children;
}
Vector<Object>displayChildren = new Vector<Object>();
for(int i = 0; i < children.length; i++)
{
if(children[i] instanceof RepositoryInstance)
{
RepositoryInstance myContainer = (RepositoryInstance) children[i];
if (myContainer.getName().contains("CARMA"))
{
displayChildren.add(children[i]);
}
}
else
{
displayChildren.add(children[i]);
}
}
return displayChildren.toArray();
}
- Salve a origem e depure qualquer erro.