package edu.ualberta.med.biobank.mvp.view.item; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.widgets.Button; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerRegistration; import edu.ualberta.med.biobank.mvp.event.EclipseClickEvent; import edu.ualberta.med.biobank.mvp.user.ui.HasButton; public class ButtonItem implements HasButton { private final HandlerManager handlerManager = new HandlerManager(this); private final MouseListener mouseListener = new MouseListener() { @Override public void mouseDoubleClick(MouseEvent e) { handlerManager.fireEvent(new EclipseClickEvent()); } @Override public void mouseDown(MouseEvent e) { } @Override public void mouseUp(MouseEvent e) { handlerManager.fireEvent(new EclipseClickEvent()); } }; private boolean enabled = true; private Button button; public synchronized void setButton(Button button) { unbindOldButton(); this.button = button; button.setEnabled(enabled); button.addMouseListener(mouseListener); } public Button getButton() { return button; } @Override public HandlerRegistration addClickHandler(ClickHandler clickHandler) { return handlerManager.addHandler(ClickEvent.getType(), clickHandler); } @Override public void fireEvent(GwtEvent<?> event) { handlerManager.fireEvent(event); } @Override public void setEnabled(boolean enabled) { this.enabled = enabled; if (button != null) { button.setEnabled(enabled); } } @Override public boolean isEnabled() { return enabled; } private void unbindOldButton() { if (button != null) { button.removeMouseListener(mouseListener); } } }