2009-06-16 31 views
5

मैं सोच रहा हूँ कि कैसे एक वास्तव में केवल पढ़ने के लिए ग्रहण संपादक बनाने के लिए केवल संपादक पढ़ बनाने के लिए .. मेरे संपादक फैली TextEditor, इसलिए जब मैं विधि reimplement isEditable हमेशा वापस जाने के लिए झूठाग्रहण (ग्रहण प्लगइन विकास)

यह सबसे आसान तरीका है, जो उपयोगकर्ता को संपादक में खोले दस्तावेज़ में कुछ लिखने या हटाने से रोकता है। लेकिन आप अभी भी दस्तावेज़ की सामग्री बदल सकते हैं उदाहरण के लिए ढूंढें/प्रतिस्थापित करें। और यह वांछित नहीं है ..

क्या कोई अन्य तरीका है कि इस लक्ष्य को कैसे छेड़छाड़ की जाए?

+8

अच्छा oxymoron- "केवल संपादक पढ़ें" – RichardOD

+0

आप सही हैं: डी +1 –

उत्तर

9

मैं ..

मैं अपने समाधान पाया दर्शक के बजाय संपादक का उपयोग करने के लिए क्योंकि संपादक पहले से ही बनाया गया था चाहता था, इसलिए मैं सिर्फ एक 3 पार्टी प्लगइन का इस्तेमाल किया - Maybee बहुत साफ नहीं है, लेकिन काम करता है और तो यह

मैं ओवरराइड गए इन तरीकों जीतता है बहुत आसान है:

@Override 
public boolean isEditable() { 
    return false; 
} 

@Override 
public boolean isEditorInputModifiable() { 
    return false; 
} 

@Override 
public boolean isEditorInputReadOnly() { 
    return true; 
} 

@Override 
public boolean isDirty() { 
    return false; 
} 
-1

एसडब्ल्यूटी शैलियों में, SWT.READ_ONLY निर्दिष्ट करें। यह सभी एपीआई को अस्वीकार कर देगा जो दस्तावेज़ को संशोधित करते हैं (सेटटेक्स्ट() के अपवाद के साथ, मुझे उम्मीद है ...)

यदि नहीं, तो कृपया file a bug देखें।

-1

आप TextViewer का उपयोग करने के बजाय टेक्स्ट एडिटर का उपयोग क्यों कर रहे हैं?

+0

क्योंकि मैं usin कर रहा हूँ बहु पृष्ठ संपादक –

+0

में जेनरेट किए गए स्रोत कोड को प्रदर्शित करने के लिए एक तृतीय पक्ष संपादक जी, लेकिन जब आप केवल स्रोत कोड प्रदर्शित करना चाहते हैं तो आपको अपना स्वयं का दर्शक लिखने के बारे में सोचना चाहिए। लेकिन मैं कल्पना कर सकता हूं कि आप कोड दिखाने के लिए तीसरे पक्ष के संपादक की हाइलाइटिंग का उपयोग करना चाहते हैं। –

0

क्या आपने अपना खुद का स्रोत व्यूअर बनाने की कोशिश की है? कुछ इस तरह। मैंने खुद कोड को आजमाया नहीं है।

class ReadOnlyViewer extends SourceViewer 
{ 
    protected StyledText createTextWidget(Composite parent, int styles) 
    { 
    return new StyledText(parent, styles | SWT.READ_ONLY); 
    } 
} 

class MyEditor extends TextEditor 
{ 
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) 
    { 
     fAnnotationAccess= getAnnotationAccess(); 
     fOverviewRuler= createOverviewRuler(getSharedColors()); 

     ISourceViewer viewer= new ReadOnlyViewer(parent, ruler, getOverviewRuler(), isOverviewRulerVisible(), styles); 
     // ensure decoration support has been created and configured. 
     getSourceViewerDecorationSupport(viewer); 

     return viewer; 
    } 
} 
संबंधित मुद्दे