2012-02-19 9 views
12

मेरी ग्रहण प्लगइन में, मुझे यह जानने की जरूरत है कि स्क्रीन पर दिखाई देने वाला संपादक बदल गया है।ग्रहण प्लगइन में "सक्रिय संपादक" कैसे प्राप्त करें?

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor() 

इस के लिए जब हरी जारी रखें बटन को छोड़कर ज्यादातर मामलों के लिए काम करता दबाया जाता है:

Debugger buttons

अगर मैं तो सक्रिय F8 शॉर्टकट का उपयोग इस प्रकार मैं वर्तमान में सक्रिय संपादक हो रही है संपादक अपेक्षित के रूप में अद्यतन किया गया है।

ऐसा लगता है कि सक्रिय संपादक प्रॉपर्टी तब तक अपडेट नहीं होती है जब तक कि संपादक टैब फोकस न हो जाए (जो तब होता है जब जारी रखें बटन दबाया जाता है)।

क्या कोई अन्य मार्ग है जिसे मैं "दृश्य संपादक" प्राप्त करने के लिए ले सकता हूं?

अग्रिम धन्यवाद।

एलन

+0

नीचे दी गई चर्चा को देखते हुए, मुझे लगता है कि आपका प्लग-इन मौजूदा डीबग प्लग-इन में _extension_ है। सही बात? –

+0

यह डीबग प्लगइन का विस्तार नहीं है लेकिन मैं ब्रेकपॉइंट इत्यादि के बारे में विभिन्न डीबग घटनाओं में हुक करता हूं –

उत्तर

2
  1. एक संपादक सक्रिय है केवल जब यह ध्यान दिया गया है, तो क्या आप हो रही है एपीआई द्वारा सही उत्पादन होता है। अपने प्लगइन के उपयोगकर्ता डिबग मोड में यह चल रहा है नहीं किया जाएगा, ऐसा नहीं अंत उपयोगकर्ता के लिए एक चिंता का विषय
  2. वैकल्पिक रूप से, सभी खुले संपादकों आप निम्न कर सकते प्राप्त करने के लिए:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences()

+0

आपके उत्तर के लिए धन्यवाद। मैं वास्तव में ग्रहण की अपनी प्रति में डीबगर चलाने वाले उपयोगकर्ता का जिक्र कर रहा था, इसलिए यह अंतिम उपयोगकर्ता के लिए एक मुद्दा है। –

+0

इसकी अत्यधिक संभावना है कि उपयोग में आपके कोड में ब्रेकपॉइंट है ताकि निष्पादन उस बिंदु पर सही हो जाए? – codejammer

+0

मैं उपयोगकर्ता के अपने कोड के बारे में बात कर रहा हूं। मैं चीजों को करना चाहता हूं क्योंकि उपयोगकर्ता अपने कोड में डीबगर के माध्यम से कदम उठा रहा है। यह विशेष परिदृश्य सिर्फ काम नहीं करता है क्योंकि मैं इसे पसंद करूंगा। अगर मेरे पास दृश्य संपादक तक पहुंच थी तो मैं इसके साथ सौदा कर सकता हूं। –

1

IWorkbenchPage interface has an isPartVisible() `विधि है जो इंगित करता है कि निर्दिष्ट भाग दिखाई दे रहा है या नहीं। परिणाम इस बात पर निर्भर नहीं करता है कि निर्दिष्ट भाग वर्तमान में सक्रिय है या नहीं, यानी ध्यान केंद्रित किया गया है या नहीं।

एक दृश्यमान लेकिन वर्तमान में सक्रिय संपादक खोजने के लिए हालांकि यह सक्रिय वर्कबेंच पेज पर इस विधि को कॉल करने के लिए पर्याप्त नहीं हो सकता है। इसके बजाय आपको सभी वर्कबेंच विंडो पर फिर से शुरू करना पड़ सकता है और उनमें से प्रत्येक के पृष्ठ पर अपने संपादक की दृश्यता की जांच करनी पड़ सकती है।

0

प्रश्न नीचे दिए गए लिंक में पोस्ट किए गए प्रश्न के समान है। इसे प्राप्त करने का एक तरीका यह है कि ट्रैक संपादक बनाने के द्वारा पहले कौन सा संपादक खोला गया था, इसका ट्रैक रखना है। Eclipse Plugin - How to get the last worked on editor

1

सक्रिय संपादक सूची अधिक जानकारी के लिए कृपया इस सवाल पर जाएँ:

Eclipse RCP : have the same editor open in editor window


पैकेज का नाम: rcp_demo.Editor

वर्ग के नाम: EmpCommand.java, EmployeeEditor। जावा और EmployeeEditorInput.java

package rcp_demo.Editor; 

import org.eclipse.core.commands.AbstractHandler; 
import org.eclipse.core.commands.ExecutionEvent; 
import org.eclipse.core.commands.ExecutionException; 
import org.eclipse.ui.IEditorReference; 
import org.eclipse.ui.IWorkbenchPage; 
import org.eclipse.ui.IWorkbenchWindow; 
import org.eclipse.ui.PartInitException; 
import org.eclipse.ui.handlers.HandlerUtil; 

public class EmpCommand extends AbstractHandler { 
    public static final String Id = "rcp_demo.Editor.EmpCommand"; 

    @Override 
    public Object execute(ExecutionEvent event) throws ExecutionException { 

     IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event); 
      IWorkbenchPage page = window.getActivePage(); 
      IEditorReference[] editors = page.getEditorReferences(); 
      EmployeeEditorInput input = new EmployeeEditorInput(); 
      //All Comments are easily understand 
      //public class EmployeeEditorInput implements IEditorInput{} 
      for (int i=0; i<editors.length; i++) { 
      //List out all Exist editor 
      //compare with EmployeeEditor.Id="rcp_demo.Editor.emp"; 
       if (editors[i].getId().equals(EmployeeEditor.Id)) { 
       //public class EmployeeEditor extends EditorPart 
       //{ 
       // public static final String Id="rcp_demo.Editor.emp"; 
       //  public void createPartControl(Composite parent) {.....} 
       //} 
        page.activate(editors[i].getEditor(true)); 
        System.out.println("set focus an existing editor(Employee)"); 
        return null; 
       } 
      } 
      try { 
       //open new Editor like EmployeeEditor.Id="rcp_demo.Editor.emp"; 
       page.openEditor(input,EmployeeEditor.Id); 
       System.out.println("open Editor(Employee) "); 
      } catch (PartInitException e) { 
       e.printStackTrace(); 
      } 
     return null; 
    } 
} 
संबंधित मुद्दे