Ders 1: CustomContextProvider sınıfını oluşturma

Bu ders, Egzersiz 5 'te yarattığınız ve Egzersiz 6 'da değiştirdiğiniz eklenti projesinin üzerine oluşturulur. Bu derste, istediğiniz herhangi bir görüntüleyiciye uyacak şekilde özelleştirilebilen CustomContextProvider sınıfını yaratırsınız. Örneğin, alan görüntüleyiciyi istiyorsanız, bağlam sağlayıcı CarmaFieldsContentProviderdeğerini genişletebilir.

Bu görev hakkında

CARMAContextProvider sınıfını yaratmak için:

Yordam

  1. Eklenti Geliştirme perspektifinde olduğunuzu doğrulayın. Paket Gezgini görünümünde, 5 ve 6 Egzersizleri için kullandığınız com.ibm.carma.plugin.view eklenti projesini genişletin.
  2. CARMADeveloperView ve CustomLabelProvider sınıflarını içeren view paketini sağ tıklatın ve Yeni > Sınıfseçeneklerini belirleyin.
  3. Açılan Yeni Java Sınıfı iletişim kutusunda, Ad metin alanına CustomContextProvider yazın.
  4. Üst sınıf metin alanının sağındaki Göz At düğmesini tıklatın. Açılan Üst Sınıf Seçimi iletişim kutusuna süzgeç metnini ( CARMATreeContentProvider) girin. Eşleşen sınıfı seçin ve Tamamdüğmesini tıklatın.
  5. Constructors from superclassonay kutusunu işaretleyin ve Finish(Son) düğmesini tıklatın. Yeni Java Sınıfı iletişim penceresi kapanır ve CustomContentProvider sınıfı yaratılır.
  6. Java™ sınıfında aşağıdaki içe aktarmaları içerdiğinden emin olarak başlayın. Eksik olanları ekleyin.
    import java.util.Vector;
    
    import com.ibm.carma.model.RepositoryInstance;
    import com.ibm.carma.ui.view.CarmaTreeContentProvider;
  7. Görüntüleyiciye sağlanan içeriği değiştirmek için getChildren yöntemini değiştirmek istiyorsunuz. Bu yöntem, sağlayıcının RAM ' i genişletirken görüntüleyiciye hangi öğelerin gönderildiğini denetleyebileceği yerdir. Bu öğretici program için, getChildren yöntemini yalnızca adında CARMA simgesi olan ve bir listeleme, nesne ya da yükleme havuzu eşgörünümü olmayan havuz eşgörünümlerini döndürecek şekilde uygulayabilirsiniz.

    Aşağıdaki sözde kod, getChildren yönteminin ne yapması gerektiğini gösterir:

    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;
       }
    }
    getChildren yöntemine ilişkin örnek kodu kullanın:
    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();
    }
  8. Kaynağı kaydedin ve hatalarda hata ayıklayın.