Issue with Code completion using TextFieldWithAutoCompletion
Hi,
I have a settings page, where i need a text field with code completion. I am using TextFieldWithAutoCompletion to get this done.
Below is my code.
public class MyTextEditor extends TextFieldWithAutoCompletion {
public FastCodeTextEditor() {
super (ProjectManager.getInstance().getDefaultProject(), new TextFieldWithAutoCompletionListProvider(Arrays.asList("HEHEHEH", "AAAAA", "BBBBB", "Step")) {
@Nullable
@Override
protected Icon getIcon(@NotNull Object o) {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
@NotNull
@Override
protected String getLookupString(@NotNull Object o) {
return "Lookup"; //To change body of implemented methods use File | Settings | File Templates.
}
@Nullable
@Override
protected String getTailText(@NotNull Object o) {
return "Tail"; //To change body of implemented methods use File | Settings | File Templates.
}
@Nullable
@Override
protected String getTypeText(@NotNull Object o) {
return "Type"; //To change body of implemented methods use File | Settings | File Templates.
}
@Override
public int compare(Object o, Object o2) {
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
}, true, "");
}
}
My dialog code look like this
public class MyDialog extends JDialog {
private JPanel contentPane;
private JButton buttonOK;
private JButton buttonCancel;
private JTextField myName;
private FastCodeTextEditor templateBody;
...
...
...
..
public MyDialog(MyData data, int selectedIndex, boolean isDetailed) {
....
...
..
$$$setupUI$$$();
createDialog();
...
...
}
/**
* Method generated by IntelliJ IDEA GUI Designer
* >>> IMPORTANT!! <<<
* DO NOT edit this method OR call it in your code!
*
* @noinspection ALL
*/
private void $$$setupUI$$$() {
...
...
..
...
..
templateBody = new FastCodeTextEditor();
..
...
..
}
}
public class MyTableSettingsConfigurable1 implements Configurable {
on click on a button
MyDialog dialog = new MyDialog(data, selectedIndex, true);
}
public class MySettingsConfigurable extends SearchableConfigurable.Parent.Abstract {
private List<Configurable> myPanels=new ArrayList<Configurable>();
@Override
protected Configurable[] buildConfigurables() {
myPanels.add(new MyTableSettingsConfigurable1());
myPanels.add(new MyTableSettingsConfigurable2());
return myPanels.toArray(new Configurable[myPanels.size()]);
}
@Override
public String getId() {
return "";
}
@Nls
@Override
public String getDisplayName() {
return "Fastcode";
}
@Nullable
@Override
public String getHelpTopic() {
return null;
}
}
When i run this code, in the editor when i press space i get the below error
[1586796] ERROR - com.intellij.ide.IdeEventQueue - Error during dispatching of java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar=' ',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=0,scancode=0] on EditorComponent file=null
java.lang.AssertionError: Project (Default) Default (Template) Project; false
at com.intellij.codeInsight.template.impl.editorActions.SpaceHandler.execute(SpaceHandler.java:49)
at com.intellij.openapi.editor.actionSystem.TypedAction$TypingCommand$1.run(TypedAction.java:130)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:986)
at com.intellij.openapi.editor.actionSystem.TypedAction$TypingCommand.run(TypedAction.java:125)
at com.intellij.openapi.command.impl.CommandProcessorImpl.executeCommand(CommandProcessorImpl.java:122)
at com.intellij.openapi.editor.actionSystem.TypedAction.actionPerformed(TypedAction.java:106)
at com.intellij.openapi.editor.impl.EditorImpl.a(EditorImpl.java:917)
at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:4795)
at com.intellij.openapi.editor.impl.EditorImpl$9.keyTyped(EditorImpl.java:797)
at java.awt.Component.processKeyEvent(Component.java:6245)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2801)
at java.awt.Component.processEvent(Component.java:6067)
at java.awt.Container.processEvent(Container.java:2039)
at java.awt.Component.dispatchEventImpl(Component.java:4653)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1836)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4525)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Window.dispatchEventImpl(Window.java:2482)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:607)
at java.awt.EventQueue$1.run(EventQueue.java:605)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:621)
at java.awt.EventQueue$2.run(EventQueue.java:619)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:618)
at com.intellij.ide.IdeEventQueue.d(IdeEventQueue.java:673)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:480)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:333)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1044)
at java.awt.Dialog$3.run(Dialog.java:1096)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1094)
at java.awt.Component.show(Component.java:1584)
at java.awt.Component.setVisible(Component.java:1536)
at java.awt.Window.setVisible(Window.java:841)
at java.awt.Dialog.setVisible(Dialog.java:984)
..........
................
........
....
[1586801] ERROR - com.intellij.ide.IdeEventQueue - IntelliJ IDEA 12.0.1 Build #IU-123.94
[1586801] ERROR - com.intellij.ide.IdeEventQueue - JDK: 1.6.0_31
[1586802] ERROR - com.intellij.ide.IdeEventQueue - VM: Java HotSpot(TM) 64-Bit Server VM
[1586802] ERROR - com.intellij.ide.IdeEventQueue - Vendor: Sun Microsystems Inc.
[1586802] ERROR - com.intellij.ide.IdeEventQueue - OS: Windows 7
[1586802] ERROR - com.intellij.ide.IdeEventQueue - Last Action: ShowSettings
Could you please help me get through this.
Please sign in to leave a comment.
Don't use ProjectManager.getInstance().getDefaultProject() for this purpose. Instead, get the real project open in the current frame from the data context: PlatformDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext())
Hi,
Thank you...After changing to PlatformDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext()), the error does not come.
But i still dont get any code completion....
when i type something control comes to this method.
@NotNull
@Override
protected String getLookupString(@NotNull Object o) {
return "Lookup"; //To change body of implemented methods use File | Settings | File Templates.
}
But no help comes...i tried with words like -- Lookup, all the words in TextFieldWithAutoCompletionListProvider -- Arrays.asList("HEHEHEH", "AAAAA", "BBBBB", "Step"), abc, xyz....etc...
Is there more i need to code, or am i missing somthing......i m very new to Intellij, could you please point out what more i need to do get the code completion working...
Thanks in Advance!!
Hi,
I m still waiting for some inuts on the above issue. Could you please help.