int top = Double.valueOf(params.get(clientId + "_top")).intValue(); int left = Double.valueOf(params.get(clientId + "_left")).intValue(); MoveEvent moveEvent = new MoveEvent(this, ((AjaxBehaviorEvent) event).getBehavior(), top, left); moveEvent.setPhaseId(ajaxBehaviorEvent.getPhaseId()); super.queueEvent(moveEvent);
public class ChatPerson { //your props here :P... private final List<MoveListener> listeners = new ArrayList<MoveListener>(); private void notifyListeners(MoveEvent e){ for(MoveListener l : listeners){ l.onMoveEvent(e); } } public void addMoveListener(MoveListener l){ this.listeners.add(l); } public void removeMoveListener(MoveListener l){ this.listeners.remove(l); } //i would create a move method but you can do this on setX() and setY() public void move(int x,int y){ this.x=x; this.y=y; this.notifyListeners(new MoveEvent(this,x,y)); } //your other method... }
@Override public void queueEvent(FacesEvent event) { FacesContext context = getFacesContext(); if(ComponentUtils.isRequestSource(this, context) && event instanceof AjaxBehaviorEvent) { Map<String,String> params = context.getExternalContext().getRequestParameterMap(); String eventName = params.get(Constants.RequestParams.PARTIAL_BEHAVIOR_EVENT_PARAM); AjaxBehaviorEvent ajaxBehaviorEvent = (AjaxBehaviorEvent) event; String clientId = getClientId(context); if(eventName.equals("close")) { setVisible(false); CloseEvent closeEvent = new CloseEvent(this, ((AjaxBehaviorEvent) event).getBehavior()); closeEvent.setPhaseId(ajaxBehaviorEvent.getPhaseId()); super.queueEvent(closeEvent); } else if(eventName.equals("move")) { int top = Double.valueOf(params.get(clientId + "_top")).intValue(); int left = Double.valueOf(params.get(clientId + "_left")).intValue(); MoveEvent moveEvent = new MoveEvent(this, ((AjaxBehaviorEvent) event).getBehavior(), top, left); moveEvent.setPhaseId(ajaxBehaviorEvent.getPhaseId()); super.queueEvent(moveEvent); } else { //minimize and maximize super.queueEvent(event); } } else { super.queueEvent(event); } }