X Tutup
Skip to content

Commit 2c09b17

Browse files
author
soheil_h_y
committed
1. Keyboard navigation enhancements
1 parent 191349b commit 2c09b17

File tree

5 files changed

+136
-5
lines changed

5 files changed

+136
-5
lines changed

sources/net.sf.j2s.java.org.eclipse.swt/src/org/eclipse/swt/widgets/Button.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1348,6 +1348,15 @@ public void run() {
13481348
if ((style & (SWT.RADIO | SWT.CHECK)) != 0) {
13491349
btnText.onclick = eventHandler;
13501350
}
1351+
handle.onkeydown = new RunnableCompatibility() {
1352+
public void run() {
1353+
HTMLEvent e = (HTMLEvent) getEvent();
1354+
if(e.keyCode == 32 || e.keyCode == 13){
1355+
toReturn(false);
1356+
}
1357+
toReturn(true);
1358+
}
1359+
};
13511360
}
13521361

13531362
/*

sources/net.sf.j2s.java.org.eclipse.swt/src/org/eclipse/swt/widgets/Combo.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.eclipse.swt.internal.RunnableCompatibility;
2121
import org.eclipse.swt.internal.browser.OS;
2222
import org.eclipse.swt.internal.xhtml.Element;
23+
import org.eclipse.swt.internal.xhtml.HTMLEvent;
2324
import org.eclipse.swt.internal.xhtml.Option;
2425
import org.eclipse.swt.internal.xhtml.document;
2526

@@ -580,11 +581,36 @@ protected void createHandle () {
580581
textInput.ondblclick = new RunnableCompatibility() {
581582
public void run() {
582583
// System.out.println("button clicked!");
583-
if(!isSimple)
584+
if(!isSimple)
585+
{
584586
show();
587+
588+
}
585589
}
586590
};
587591

592+
textInput.onkeydown = new RunnableCompatibility(){
593+
public void run(){
594+
HTMLEvent e = (HTMLEvent) getEvent();
595+
switch(e.keyCode){
596+
case 13:
597+
/*
598+
* TODO: default selection;
599+
*/
600+
break;
601+
case 40:
602+
if(!isSimple){
603+
// show();
604+
toReturn(false);
605+
textInput.focus();
606+
}
607+
break;
608+
default:
609+
toReturn(true);
610+
}
611+
612+
}
613+
};
588614

589615
dropDownButton.onclick = new RunnableCompatibility() {
590616
public void run() {

sources/net.sf.j2s.java.org.eclipse.swt/src/org/eclipse/swt/widgets/Decorations.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.eclipse.swt.internal.dnd.ShellFrameDND;
2828
import org.eclipse.swt.internal.xhtml.CSSStyle;
2929
import org.eclipse.swt.internal.xhtml.Element;
30+
import org.eclipse.swt.internal.xhtml.HTMLEvent;
3031
import org.eclipse.swt.internal.xhtml.document;
3132
import org.eclipse.swt.internal.xhtml.window;
3233
import org.eclipse.swt.layout.GridData;
@@ -569,6 +570,46 @@ public boolean updateShellBounds(int x, int y, final int width,
569570
});
570571
dnd.bind(handle);
571572
}
573+
contentHandle.onclick = new RunnableCompatibility(){
574+
public void run(){
575+
contentHandle.focus();
576+
}
577+
};
578+
contentHandle.onkeydown = new RunnableCompatibility() {
579+
public void run() {
580+
HTMLEvent e = (HTMLEvent) getEvent();
581+
if(defaultButton == null){
582+
return;
583+
}
584+
if(e.keyCode == 13){
585+
if (!defaultButton.isEnabled()) {
586+
toReturn(true);
587+
return ;
588+
}
589+
if ((defaultButton.style & (SWT.CHECK | SWT.TOGGLE)) != 0) {
590+
591+
if ((defaultButton.style & SWT.CHECK) != 0) {
592+
if (e.srcElement != defaultButton.btnHandle) {
593+
defaultButton.setSelection (!defaultButton.getSelection ());
594+
}
595+
} else {
596+
defaultButton.setSelection (!defaultButton.getSelection ());
597+
}
598+
} else {
599+
if ((defaultButton.style & SWT.RADIO) != 0) {
600+
if ((defaultButton.parent.getStyle () & SWT.NO_RADIO_GROUP) != 0) {
601+
defaultButton.setSelection (!defaultButton.getSelection ());
602+
} else {
603+
defaultButton.selectRadio ();
604+
}
605+
}
606+
}
607+
defaultButton.postEvent (SWT.Selection);
608+
toReturn(true);
609+
}
610+
}
611+
};
612+
572613
}
573614

574615
private void nextWindowLocation() {
@@ -1898,8 +1939,12 @@ public void run() {
18981939
fHandleStyle.zIndex = window.currentTopZIndex = ""
18991940
+ (Integer.parseInt(window.currentTopZIndex) + 2);
19001941
}
1942+
if(contentHandle != null){
1943+
contentHandle.focus();
1944+
}
19011945
}
19021946
};
1947+
19031948
if (window.currentTopZIndex == null) {
19041949
handle.style.zIndex = window.currentTopZIndex = "1000";
19051950
} else {

sources/net.sf.j2s.java.org.eclipse.swt/src/org/eclipse/swt/widgets/Spinner.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.eclipse.swt.internal.RunnableCompatibility;
2323
import org.eclipse.swt.internal.browser.OS;
2424
import org.eclipse.swt.internal.xhtml.Element;
25+
import org.eclipse.swt.internal.xhtml.HTMLEvent;
2526
import org.eclipse.swt.internal.xhtml.document;
2627

2728
/**
@@ -245,6 +246,23 @@ public void run() {
245246
}
246247

247248
};
249+
250+
textInputHandle.onkeydown = new RunnableCompatibility(){
251+
public void run(){
252+
HTMLEvent e = (HTMLEvent) getEvent();
253+
switch(e.keyCode){
254+
case 38:
255+
setSelection(getSelection() + increment);
256+
break;
257+
case 40:
258+
setSelection(getSelection() - increment);
259+
break;
260+
default:
261+
toReturn(true);
262+
}
263+
264+
}
265+
};
248266
// System.out.println("spinner handle" + handle);
249267
}
250268

sources/net.sf.j2s.java.org.eclipse.swt/src/org/eclipse/swt/widgets/Table.java

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -655,18 +655,51 @@ public void run() {
655655
}
656656
System.out.println("on key down !" + evt.keyCode + " index "
657657
+ index);
658-
if (evt.keyCode == 38) {
658+
switch(evt.keyCode){
659+
case 13:
660+
TableItem item = getItem(index);
661+
toggleSelection(item, evt.ctrlKey, evt.shiftKey);
662+
if(item.isSelected()){
663+
Event e = new Event();
664+
e.display = display;
665+
e.type = SWT.DefaultSelection;
666+
e.detail = SWT.NONE;
667+
e.item = item;
668+
e.widget = item;
669+
sendEvent(e);
670+
toReturn(false);
671+
}
672+
break;
673+
case 32:
674+
TableItem item2 = getItem(index);
675+
toggleSelection(item2, evt.ctrlKey, evt.shiftKey);
676+
if(item2.isSelected()){
677+
Event eDefault = new Event();
678+
eDefault.display = display;
679+
eDefault.type = SWT.Selection;
680+
eDefault.detail = SWT.NONE;
681+
eDefault.item = item2;
682+
eDefault.widget = item2;
683+
sendEvent(eDefault);
684+
toReturn(false);
685+
}
686+
break;
687+
case 38:
659688
if (index > 0) {
660689
System.out.println("selecting the before!");
661690
setCursorFocus(index - 1);
691+
toReturn(false);
662692
}
663-
} else if (evt.keyCode == 40) {
693+
break;
694+
case 40:
664695
if (index < getItemCount() - 1) {
665696
System.out.println("selecting the after !");
666697
setCursorFocus(index + 1);
698+
toReturn(false);
667699
}
668-
} else if (evt.keyCode == 32){
669-
toggleSelection(getItem(index), evt.ctrlKey, evt.shiftKey);
700+
break;
701+
default:
702+
toReturn(true);
670703
}
671704
}
672705
};

0 commit comments

Comments
 (0)
X Tutup