2011-05-23 6 views
5

मैं एक एसडब्ल्यूटी/जेएफएएस एप्लिकेशन में एक खोज कार्यक्षमता जोड़ना चाहता हूं जो एक टेबलवियर फ़िल्टर करता है क्योंकि उपयोगकर्ता खोज टेक्स्ट फ़ील्ड में टेक्स्ट दर्ज करता है।एक जेएफएएस टेबल व्यूअर पर व्यूअरफिल्टर कैसे जोड़ें जो गतिशील रूप से अपडेट हो?

final Text filterText = new Text(parent, SWT.NONE); 
filterText.addModifyListener(new ModifyListener() { 
    @Override 
    public void modifyText(ModifyEvent arg0) { 
     //TODO how to update the viewer filter with the new text ? 
    } 
}); 

TableViewer tableViewer = new TableViewer(...); 

ViewerFilter filterViewer = new ViewerFilter() { 
    @Override 
    public boolean select(Viewer viewer, Object parentElement, Object element) { 
     if (filterText.getText() == "") { 
      return true; 
     } 
     //do my stuff to know if element need to be fitered or not 
     return false; 
    } 
}; 
tableViewer.addFilter(filterViewer); 

क्या मुझे फ़िल्टर को हटाने और संशोधित श्रोता में नया निर्माण करने की आवश्यकता है या क्या कोई बेहतर समाधान है?

उत्तर

3

असल में, आपको फ़िल्टर में दर्ज टेक्स्ट को पास करने का एक तरीका होना चाहिए, अपनी पसंद विधि में आपको इस पाठ के आधार पर फ़िल्टर करना चाहिए, और अपने टेक्स्ट विजेट के श्रोता में टेक्स्ट को फ़िल्टर में पास करें और viewer.refresh() पर कॉल करें तालिका।

यह उदाहरण आपको मदद करनी चाहिए: http://www.vogella.com/tutorials/EclipseJFaceTableAdvanced/article.html#jfacetable_filter

0

org.eclipse.ui.dialogs.FilteredTree विशेष रूप से उस उद्देश्य के लिए उपलब्ध है। आप इसका उपयोग क्यों नहीं कर सकते?

+0

मैं tableviewer साथ और नहीं एक treeviewer काम करते हैं लेकिन मैं एक ही सिद्धांत का उपयोग करने के लिए आस-पास काम कर सकते हैं। लेकिन बड़ी समस्या यह है कि मैं एक आरसीपी आवेदन में नहीं हूं इसलिए मैं वर्कबेंच जॉब का उपयोग नहीं कर सकता। – fluminis

+1

क्यों आप आरसीपी में वर्कबेंचचोब का उपयोग नहीं कर सकते? इसकी एक एपीआई और आरसीपी ऐप्स में भी इस्तेमाल किया जा सकता है। –

+2

समस्या यह है: मैं * आरसीपी में नहीं हूं! – fluminis

संबंधित मुद्दे