2010-01-08 7 views
7

से IDecorationContext एपीआई का प्रयोग करेंगे वहाँ एक उदाहरण वहाँ लेबल सजावट के लिए IDecorationContext उपयोग करने के लिए है?कैसे एक ग्रहण JFace

यह दिखता करके, IDecorationContext वर्ग प्रासंगिक सजावट समर्थन के कुछ प्रकार प्रदान करने लगता है, लेकिन मुझे के जीवन के लिए, मैं इस सुविधा का उपयोग कर किसी भी नमूना कोड नहीं मिल सकता है ...

किसी को वास्तव में इस्तेमाल किया गया है सजावट संदर्भ सुविधा और यदि हां, तो इसका क्या उपयोग हल हुआ?


पुनश्च: मैं छवि सजावट टेबल और पेड़ में लेबल और जहां वस्तु प्रदर्शित किया जाता है पर निर्भर करता है, आधार आइकन आकार बदलता है (उदाहरण के लिए पारंपरिक "छोटे" प्रतीक वस्तु को लागू करने के लिए एक रास्ता खोज रहा सामग्री शीर्षलेख के लिए आइटम और बड़े आइकन)।

सजावट मूल चिह्न के लिए आवेदन किया उसके अनुसार उचित आकार सजावट का चयन करना चाहिए।

IDecorationContext मुझे इसके लिए आवश्यक बिल के लिए बिल फिट करना प्रतीत होता है, लेकिन दस्तावेज़ीकरण उतना ही दुर्लभ है जितना कि एक ओपन सोर्स लाइब्रेरी की एक मामूली सुविधा से उम्मीद कर सकता है और कोई उदाहरण नहीं मिला है।

"IDecorationContext" लिए Googling या तो कुछ भी दिलचस्प खुलासा नहीं किया है, इसलिए मैं उम्मीद अगले आदमी सवाल हो रही तेजी से उनके उत्तर प्राप्त करने में सक्षम हो जाएगा में StackOverflow भीड़ ज्ञान के लिए बारी;)

उत्तर

7

मैंने नहीं किया IDecorationContext का उपयोग करें, लेकिन आप इसे org.eclipse.jface.viewers.LabelDecorator में उपयोग कर सकते हैं।

यह भी this thread (भले ही वहाँ कोई जवाब नहीं कर रहे हैं, कि कम से कम आप एक प्रारंभिक बिंदु दे सकते हैं)

मेरे वर्तमान दृष्टिकोण एक ILightweightLabelDecorator के लिए प्रयोग कर org.eclipse.ui.decorators विस्तार करने के लिए है में चर्चा की है आत्म करने के लिए

public class ProjectLabelDecorator extends LabelProvider 
    implements ILightweightLabelDecorator { 

    ... 

    public void decorate(Object element, IDecoration decoration) { 
     if (element instanceof IFolder) { 
     IFolder folder = (IFolder) element; 
    try { 
      if (folder.getProject().hasNature("rttdt.nature")) { 
       if (ProjectNature.isTestcase(folder)) { 
        IDecorationContext context = 
         decoration.getDecorationContext(); 
        if (context instanceof DecorationContext) { 
         ((DecorationContext) context).putProperty(
         IDecoration.ENABLE_REPLACE, Boolean.TRUE); 
        } 
        decoration.addOverlay(fTestcaseOverlay, 
         IDecoration.REPLACE); 
       } 
     } catch (CoreException e) { 
     } 
     } 
    } 

    ... 
} 
+0

नोट:: एक संबंधित माउस पर ओवरले की जगह जोड़ने इस इतने पर मेरी 2000th जवाब प्रतीत होता है। – VonC