2009-05-20 9 views
8

İyi çalışan bir ICellModifier ile bir TableViewer var. Yine de, hücre editörlerinden birinde bir ICellEditorValidator ayarlıyorum ve istediğim gibi davranmasını sağlayamıyorum. İşte benim kısaltılmış kodum:ICellEditorValidator tarafından algılanan bir doğrulama hatasını nasıl görüntülemeliyim?

Çoğunlukla iyi çalışıyor. doğrulama aracı bir hata verirse

  1. hücre modifiye modify yöntem yeni değeri olarak boş bir alır: Bununla birlikte, iki sorunlar vardır. Bunu işlemek için kod yapabilirim, ama doğru görünmüyor. Null geçerli bir değer olabilir, örneğin kullanıcının arka planını seçmesi ve saydamlık seçmesi durumunda . (Bu, bu örnekt değil, genel bir sorundur.)
  2. Onaylayan kişinin hata iletisi kullanıcıya gösterilmemiştir. Bu büyük bir sorundur. Ayrıca son değeri geçersiz ise bir ICellEditorListener ve bir iletişim kutusu applyEditorValue yönteminden bir iletişim görüntüleyebilir. Bunu yapmak için "uygun" yolu bu mu?

Bu arada, denetimimin dışındaki nedenlerden dolayı, Eclipse 3.0 çerçevesiyle sınırlıyım.

cevap

9

Eğer Editör için bir dinleyici ekleyebilirsiniz:

cellEditors[1].addListener(
     public void applyEditorValue() {      
      page.setErrorMessage(null); 
     } 

     public void cancelEditor() { 
      page.setErrorMessage(null);     
     } 

     public void editorValueChanged(boolean oldValidState, 
       boolean newValidState) {      
      page.setErrorMessage(editor.getErrorMessage());         
     } 

geçerli FormPage olmanın sayfa ile bu kullanıcıya errorMessage gösterecektir. döndürür isValid ikinci sorunu konusunda

5

, dize Validator yöntemi olduğunu doğrulayıcı sahip CellEditor için hata mesajı haline gelir. Bu iletiyi CellEditor.getErrorMessage ile alabilirsiniz.

Bana öyle geliyor ki, hata mesajını göstermenin en kolay yolu, Sven'in yukarıda önerdiği gibi ICellEditorListener. Belki de bu dinleyici hakkında zor olan şey, hücre editörünün herhangi bir metoduna bir parametre olarak geçmemesidir, bu yüzden dinleyicinin hangi hücre editörünün onunla konuştuğunu bilmesidir.

İletişim kutusunu, tercih sayfasını veya ICellEditorListener arayüzünü uygulamak için herhangi bir nesne istiyorsanız, düzenlenmiş olan hücre düzenleyicisinin bildiğinden emin olmalısınız. Bununla birlikte, eğer arayüzü uygulayan bir hücre editörü ise, hata mesajını diyaloga, tercih sayfasına ya da herhangi bir şeye doğru bir şekilde taşımanın bir yolu olmalıdır. Scott, currentForm page Scott adlı kullanıcının profilinin tamamına göre.

EditingSupport kullanıyorsanız, ICellEditorValidator.isValue bir hata iletisi döndürdüğünde EditingSupport.setValue yöntemine iletilen değerin boş olduğunu fark etmene değecek son bir şeydir. Kontrol etmeyi unutma.

İlgili konular