0
これは可能ですか?Intellijプラグインの開発、タブを閉じるなどのアクションの発生を防ぐ方法
私はをどうにかしてのイベントに登録し、おそらく偽物か類似物かを返す必要があります。私は推測しています。私はどのように考えていいですかしかし。
どのようなイベントですか?
どこに登録すればよいですか?
誰でも?
編集:私はこれを試してみました
:
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.editor.impl.EditorComponentImpl;
import org.jetbrains.annotations.NotNull;
import java.awt.*;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;
public class MyPlugin implements ApplicationComponent {
static {
/*MessageBus bus = ApplicationManager.getApplication().get
MessageBusConnection connection = bus.connect();
connection.subscribe(AppTopics.FILE_DOCUMENT_SYNC,
new FileDocumentManagerAdapter() {
@Override
public void beforeDocumentSaving(Document document) {
// create your custom logic here
}
});*/
}
private final AWTEventListener listener;
public MyPlugin() {
System.out.println("111111111111111111");
listener = new AWTEventListener() {
@Override
public void eventDispatched(AWTEvent event) {
if (event instanceof KeyEvent) {
KeyEvent kv = (KeyEvent) event;
Component component = kv.getComponent();
if (component instanceof EditorComponentImpl) {
EditorComponentImpl cp = (EditorComponentImpl) component;
}
System.out.println("3333333" + component.getClass());
}
System.out.println("aaaaaaa" + event.getClass());
}
};
}
@Override
public void initComponent() {
System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbbbb");
Toolkit.getDefaultToolkit().addAWTEventListener(listener, AWTEvent.KEY_EVENT_MASK);
}
@Override
public void disposeComponent() {
Toolkit.getDefaultToolkit().removeAWTEventListener(listener);
}
@NotNull
@Override
public String getComponentName() {
return "temp";
}
}
しかし、それは動作しません。私はイベントが間違った種類を取得します。
では、エディタタブを閉じる防ぐためにできるようになるのIntelliJ IDEAにはAPIはありません。あなたが解決しようとしている実際の問題を記述できるなら、多分別のアプローチを提案することができます。 – yole
@yole私はすでにこのためのプラグインを開発しました。見てみな ;) – momomo