Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 370068

Summary: DateChooserCombo and TraverseListener with arrow up key and arrow down key
Product: z_Archived Reporter: Mariusz P. <pienia>
Component: NebulaAssignee: Eric Wuillai <eric>
Status: CLOSED INVALID QA Contact:
Severity: trivial    
Priority: P3 CC: nebula-inbox, wim.jongman
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows Vista   
Whiteboard:
Attachments:
Description Flags
Simple snippet presenting traversing on composite snippet (DateChooserCombo) none

Description Mariusz P. CLA 2012-01-29 09:47:07 EST
Build Identifier: Eclipse Java EE IDE for Web Developers. Version: Indigo Service Release 1 Build id: 20110916-0149

This fragment of code not working properly:

dateChooserCombo.addTraverseListener(new TraverseListener() {
    @Override
    public void keyTraversed(TraverseEvent e) {
        if (e.detail == SWT.TRAVERSE_RETURN || e.keyCode == 16777218) {
	    e.detail = SWT.TRAVERSE_TAB_NEXT;
	} else if (e.keyCode == 16777217) {
	    e.detail = SWT.TRAVERSE_TAB_PREVIOUS;
	}
	    e.doit = true;
    }
});

Arrow up key working properly. Jump back on another widget. Arrow down key stopping on the button in DateChooserCombo - not jump on next widget.

Reproducible: Always
Comment 1 Wim Jongman CLA 2012-03-05 12:36:09 EST
what was the solution Marius?
Comment 2 Mariusz P. CLA 2012-03-05 13:15:06 EST
I'm attach a simple snippet. Short:

DateChooserCombo dateChooserCombo_1 = new DateChooserCombo(grpArrowDownTraversal, SWT.NONE);
dateChooserCombo_1.setBounds(162, 88, 86, 17);

Control[] control = dateChooserCombo_1.getChildren();
Control textInDateChooserCombo = control[0];
Control[] controlNew = {textInDateChooserCombo};
dateChooserCombo_1.setTabList(controlNew);


dateChooserCombo_1.addTraverseListener(new TraverseListener() {

  @Override
  public void keyTraversed(TraverseEvent e) {
    if (e.detail == SWT.TRAVERSE_RETURN || e.keyCode == SWT.ARROW_DOWN) {
      e.detail = SWT.TRAVERSE_TAB_NEXT;
    } else if (e.keyCode == SWT.ARROW_UP) {
      e.detail = SWT.TRAVERSE_TAB_PREVIOUS;
    }
    e.doit = true;
  }
});

Method setTabList on composite widget resolve problem.
Comment 3 Mariusz P. CLA 2012-03-05 13:18:48 EST
Created attachment 212090 [details]
Simple snippet presenting  traversing on composite snippet (DateChooserCombo)
Comment 4 Wim Jongman CLA 2012-03-05 13:26:10 EST
Nice, thanks!

(In reply to comment #3)
> Created attachment 212090 [details]
> Simple snippet presenting  traversing on composite snippet (DateChooserCombo)