package com.cari.voip.keyboard.soft.editors.edit; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import org.eclipse.draw2d.Button; import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.FocusEvent; import org.eclipse.draw2d.FocusListener; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.Label; import org.eclipse.draw2d.MouseEvent; import org.eclipse.draw2d.MouseListener; import org.eclipse.draw2d.PositionConstants; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.gef.GraphicalEditPart; import org.eclipse.gef.editparts.AbstractGraphicalEditPart; import org.eclipse.zest.core.widgets.internal.GraphLabel; import com.cari.voip.keyboard.soft.image.NodeImage; import com.cari.voip.keyboard.soft.model.Presence; import com.cari.voip.keyboard.soft.model.switchUsers.SwitchUser; public class SwitchUserEditPart extends AbstractGraphicalEditPart implements PropertyChangeListener { private static int i = 0; private int index = -1; //private Point p = new Point(0,0); private Dimension size = new Dimension(50,50); private SwitchUser user= null; private PropertyChangeListener presenceListener = null; private GraphLabel gf= null; private boolean isSel = false; private static int ie = 0; @Override protected IFigure createFigure() { Button f; if(user != null){ f = new Button(user.getUserId(),NodeImage.SwitchUserOnLine); } else{ f = new Button("lala",NodeImage.SwitchUserOnLine); } f.setSize(100, 50); return f; /* if(gf == null){ gf = new GraphLabel(NodeImage.getImageFromSwitchUser(user),false); gf.setForegroundColor(ColorConstants.black); //f.setTextPlacement(PositionConstants.SOUTH); gf.setTextPlacement(PositionConstants.SOUTH); Object model = this.getModel(); if(model instanceof SwitchUser){ //f.setText(((SwitchUser)model).getUserId()); gf.setText(((SwitchUser)model).getUserId()); } if((ie%5)== 0){ gf.setEnabled(false); } ie++; gf.addMouseListener(new MouseListener.Stub(){ public void mouseReleased(MouseEvent me){ if(user != null){ if(user.getPresence() == Presence.OFF_LINE){ user.setPresence(Presence.ON_LINE); } else if(user.getPresence() == Presence.ON_LINE){ user.setPresence(Presence.OFF_LINE); } } } }); gf.addFocusListener(new FocusListener.Stub(){ public void focusGained(FocusEvent fe) { isSel = true; updateFigureBackgroudColor(); } public void focusLost(FocusEvent fe) { isSel = false; updateFigureBackgroudColor(); } }); } return gf;*/ } @Override protected void createEditPolicies() { // TODO Auto-generated method stub } @Override public void propertyChange(PropertyChangeEvent evt) { } public void setModel(Object model) { super.setModel(model); if(this.getModel() != null){ if(this.user != null && this.presenceListener != null){ this.user.removePropertyChangeListener(SwitchUser.PRESENCE_PROP, this.presenceListener); } if(this.getModel() instanceof SwitchUser){ this.user = (SwitchUser)this.getModel(); if(this.presenceListener == null){ this.presenceListener = new PropertyChangeListener(){ public void propertyChange(PropertyChangeEvent evt){ if(evt.getPropertyName().equals(SwitchUser.PRESENCE_PROP)){ changePresence(evt.getNewValue()); } } }; } this.user.addPropertyChangeListener(SwitchUser.PRESENCE_PROP, this.presenceListener); } } } protected void changePresence(Object newValue) { GraphLabel label; IFigure figure; if(newValue instanceof Presence){ Presence newPresence = (Presence)newValue; if(newPresence == Presence.OFF_LINE){ figure = this.getFigure(); if(figure != null && figure instanceof GraphLabel){ label = (GraphLabel)figure; label.setIcon(NodeImage.SwitchUserOffLine); } } else if(newPresence == Presence.ON_LINE){ figure = this.getFigure(); if(figure != null && figure instanceof GraphLabel){ label = (GraphLabel)figure; label.setIcon(NodeImage.SwitchUserOnLine); } } } } protected void refreshVisuals() { /* IFigure figure = getFigure(); if(figure == null || figure.getParent() == null){ return; } Rectangle bounds = getFigure().getBounds(); ((GraphicalEditPart) getParent()).setLayoutConstraint(this, getFigure(), bounds); */ } protected void updateFigureBackgroudColor(){ if(this.isSel){ gf.setBackgroundColor(ColorConstants.yellow); } else{ gf.setBackgroundColor(ColorConstants.listBackground); } } }