Est-ce possible?Développement de plugins Intellij, comment empêcher une action de se produire, comme la fermeture d'un onglet
Je dois souscrire à l'événement en quelque sorte et éventuellement retourner faux ou similaire, je devine. J'ai aucune idée comment cependant.
De quel événement s'agit-il?
Où puis-je l'enregistrer?
Quelqu'un?
EDIT:
J'ai essayé:
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";
}
}
Mais cela ne fonctionne pas. Je reçois des événements mais le mauvais type.
Il n'y a pas d'API dans IntelliJ IDEA qui vous permettra d'empêcher la fermeture d'un onglet de l'éditeur. Si vous pouviez décrire le problème que vous tentez de résoudre, nous pourrions peut-être vous proposer une approche différente. – yole
@yole J'ai déjà développé un plugin pour cela. Vérifiez-le ;) – momomo