private void deactivate() {
   if (fKeyListener != null) {
     Control control = fNavigable.getControl();
     if (!control.isDisposed()) control.removeKeyListener(fKeyListener);
     fKeyListener = null;
   }
 }
    private FocusHandler(Navigable navigable) {
      fIterator = new JavaWordIterator();
      fNavigable = navigable;

      Control control = navigable.getControl();
      control.addFocusListener(this);
      if (control.isFocusControl()) activate();
      control.addDisposeListener(
          new DisposeListener() {
            public void widgetDisposed(DisposeEvent e) {
              deactivate();
            }
          });
    }
 private void activate() {
   fNavigable.getControl().addKeyListener(getKeyListener());
 }