protected boolean handleKeyTraverse(int traversal) {
   if (traversal == SWT.TRAVERSE_RETURN) {
     if (editor != null) {
       if (editor.isActivated()) {
         changeProperty(editor.getValue());
         hideEditor();
         update();
       } else {
         open();
       }
     }
     return false;
   } else if (traversal == SWT.TRAVERSE_ARROW_PREVIOUS) {
     //            selectPrev();
     return true;
   } else if (traversal == SWT.TRAVERSE_ARROW_NEXT) {
     //            selectNext();
     return true;
   } else if (traversal == SWT.TRAVERSE_TAB_NEXT) {
     //            return selectNext();
     return true;
   } else if (traversal == SWT.TRAVERSE_TAB_PREVIOUS) {
     //            return selectPrev();
     return true;
   } else if (traversal == SWT.TRAVERSE_ESCAPE) {
     if (editor.isActivated()) {
       hideEditor();
       update();
       return false;
     } else {
       return true;
     }
   }
   return false;
 }
 public void setFocus() {
   if (editor != null && editor.isActivated()) {
     editor.setFocus();
   } else if (canvas != null && !canvas.isDisposed()) {
     canvas.setFocus();
   }
 }
 protected void handleMouseMove(int x, int y) {
   setShowingHover(isInHover(x, y));
   if (editor != null) {
     if (!editor.isActivated()) {
       if (isInEditorHover(x, y)) {
         setShowingEditorHover(true);
       } else {
         setShowingEditorHover(false);
       }
     } else {
       setShowingEditorHover(false);
     }
   }
 }