package ch.fusun.baron.basic.clientui.coa;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
import ch.fusun.baron.core.injection.Inject;
import ch.fusun.baron.core.injection.ReInjector;
import ch.fusun.baron.core.service.UserService;
import ch.fusun.baron.data.DataListener;
import ch.fusun.baron.data.DataUpdate;
import ch.fusun.baron.player.Dynasty;
import ch.fusun.baron.player.api.PlayerService;
/**
* Shows the dynasty name of the current player
*/
public class CoatOfArmsContribution extends WorkbenchWindowControlContribution
implements DataListener {
@Inject
private transient UserService userService;
@Inject
private transient PlayerService playerService;
private transient Label text;
/**
*
*/
public CoatOfArmsContribution() {
}
/**
* @param id
* The id
*/
public CoatOfArmsContribution(String id) {
super(id);
}
@Override
protected Control createControl(Composite parent) {
ReInjector.getInstance().reInject(this);
text = new Label(parent, SWT.NONE);
text.setText(" "); //$NON-NLS-1$
playerService.addDataListener(this);
return text;
}
@Override
public void dataChanged(DataUpdate update) {
if (!text.isDisposed()) {
text.getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
Dynasty dynasty = playerService.getDynasty(userService
.getUser());
if (dynasty != null) {
text.setText(dynasty.getName());
}
}
});
}
}
}