Как добавить MouseListener, KeyboardListener и ClickListener в GWT 1.4.61 - PullRequest
0 голосов
/ 25 апреля 2019

Как реализовать эти слушатели MouseListener, KeyboardListener и ClickListener на FooPanel или MyPanel?

Когда пользователь нажимает на экран, я должен быть в состоянии захватить эти события и выполнить соответствующую логику. Сначала я попробовал focuspanel, обернув в него myPanel, но это не помогло.

МОЙ код:

public abstract class FooPanel extends Composite implements  SourcesClickEvents, SourcesMouseEvents, SourcesMouseWheelEvents{
private ClickListenerCollection clickListeners;
private KeyboardListenerCollection keyboardListeners;
private MouseListenerCollection mouseListeners;
private MouseWheelListenerCollection mouseWheelListeners;
    public FooPanel() {
       sinkEvents(Event.FOCUSEVENTS | Event.KEYEVENTS | Event.ONCLICK
          | Event.MOUSEEVENTS | Event.ONMOUSEWHEEL);
   }

/********************** Listeners ***********************************/
public void addClickListener(ClickListener listener) {
    if (clickListeners == null) {
        clickListeners = new ClickListenerCollection();
    }
    clickListeners.add(listener);
}

public void removeClickListener(ClickListener listener) {
    if (clickListeners != null) {
        clickListeners.remove(listener);
    }
}

public void addMouseListener(MouseListener listener) {
    if (mouseListeners == null) {
        mouseListeners = new MouseListenerCollection();
    }
    mouseListeners.add(listener);
}

public void removeMouseListener(MouseListener listener) {
    if (mouseListeners != null) {
        mouseListeners.remove(listener);
    }
}

public void addMouseWheelListener(MouseWheelListener listener) {
    if (mouseWheelListeners == null) {
        mouseWheelListeners = new MouseWheelListenerCollection();
    }
    mouseWheelListeners.add(listener);
}

public void removeMouseWheelListener(MouseWheelListener listener) {
    if (mouseWheelListeners != null) {
        mouseWheelListeners.remove(listener);
    }
}

public void addKeyboardListener(KeyboardListener listener) {
    if (keyboardListeners == null) {
        keyboardListeners = new KeyboardListenerCollection();
    }
    keyboardListeners.add(listener);
}

public void removeKeyboardListener(KeyboardListener listener) {
    if (keyboardListeners != null) {
        keyboardListeners.remove(listener);
    }
}
    public void onBrowserEvent(Event event) {
    switch (DOM.eventGetType(event)) {
    case Event.ONCLICK:
        if (clickListeners != null) {
            clickListeners.fireClick(this);
        }
        break;

    case Event.ONMOUSEDOWN:
    case Event.ONMOUSEUP:
    case Event.ONMOUSEMOVE:
    case Event.ONMOUSEOVER:
    case Event.ONMOUSEOUT:
        if (mouseListeners != null) {
            mouseListeners.fireMouseEvent(this, event);
        }
        break;

    case Event.ONMOUSEWHEEL:
        if (mouseWheelListeners != null) {
            mouseWheelListeners.fireMouseWheelEvent(this, event);
        }
        break;

    case Event.ONKEYDOWN:
    case Event.ONKEYUP:
    case Event.ONKEYPRESS:
        if (keyboardListeners != null) {
            keyboardListeners.fireKeyboardEvent(this, event);
        }
        break;
    }
}

}

public class MyPanel extends FooPanel {
    // logic
}

public class ClientPanel implements EntryPoint {
  Panel rootPanel= new Panel();
   public void onModuleLoad() {
    MyPanel p = new MyPanel();
     rootPanel.add(p);
    new ViewPort(rootPanel);
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...