3

そのため、私は現在、EclipseIDE用のプラグインを開発しています。一言で言えば、プラグインは、エディターがEclipseである共同リアルタイムコードエディターです(これは、Googleドキュメントのようなものですが、コードとEclipseを使用しています)。つまり、プラグインをインストールすると、Gmailアカウントを使用してパートナーの日食に接続できるようになります。そして、私が自分のマシンでコーディングを開始すると、私のパートナーは私が書いたものを見ることになり、逆もまた同様です。

私が現在直面している問題は、Eclipseのエディターへのアクセスです。たとえば、アクティブなドキュメントのすべての変更を監視して、変更が発生するたびに、他のパートナーのIDEにこの変更が通知されるようにする必要があります。

IDcoumentProviderIDocument、およびIEditorInputクラスを見つけて読んだところ、それらは何らかの形で接続されていますが、この接続またはその使用方法を理解できません。ですから、誰かがこのつながりを説明できれば、私は本当に感謝します。また、私の目標を達成するための別の方法がありますか?

4

1 に答える 1

3

IEditorPartを介してにアクセスできますIWorkbenchPage

IEditorPart editor =  ((IWorkbenchPage) PlatformUI.getWorkbench()
        .getActiveWorkbenchWindow().getActivePage()).getActiveEditor();

そこから、エディター、そのエディターによってロードされたもの、または基盤となるGUI要素など、他のさまざまなクラスにアクセスIEditorInputできFileますControl。(エディターの種類(テキストファイル、図など)によっては、異なるクラスにキャストする必要がある場合があることに注意してください。)

FileEditorInput input = (FileEditorInput) editor.getEditorInput();
StyledText editorControl = ((StyledText) editor.getAdapter(Control.class));
String path = input.getFile().getRawLocationURI().getRawPath();

これで、リスナーをに追加できますControl。たとえばKeyAdapter、それぞれのエディターで発生するすべてのキーストロークを監視するために。

editorControl.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
        System.out.println("Editing in file " + path);
    }
});

または、すべてのキーストロークの監視が多すぎる場合はIPropertyListener、エディターに登録できます。このリスナーは、たとえば、エディターが「ダーティ」になったとき、または保存されたときに通知されます。の意味はにありpropIdますIWorkbenchPartConstants

editor.addPropertyListener(new IPropertyListener() {
    @Override
    public void propertyChanged(Object source, int propId) {
        if (propId == IWorkbenchPartConstants.PROP_DIRTY) {
            System.out.println("'Dirty' Property Changed");
        }
    }
});
于 2013-02-28T15:20:13.230 に答える