package eu.jucy.gui.itemhandler;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import logger.LoggerFactory;
import org.apache.log4j.Logger;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.swt.SWT;
import org.eclipse.ui.actions.CompoundContributionItem;
import org.eclipse.ui.menus.CommandContributionItem;
import org.eclipse.ui.menus.CommandContributionItemParameter;
import org.eclipse.ui.menus.IWorkbenchContribution;
import org.eclipse.ui.services.IServiceLocator;
import eu.jucy.gui.itemhandler.UserHandlers.CopyNickToClipboardHandler;
import uc.IUser;
import uc.protocols.hub.INFField;
public class CopyContributionItem extends CompoundContributionItem implements
IWorkbenchContribution {
private static final Logger logger = LoggerFactory.make();
private IServiceLocator serviceLocator;
private IUser usr;
public CopyContributionItem() {
this(null);
}
public CopyContributionItem(IUser usr) {
super();
this.usr = usr;
}
@SuppressWarnings("unchecked")
@Override
protected IContributionItem[] getContributionItems() {
// List<IContributionItem> items = new ArrayList<IContributionItem>();
IMenuManager manager = new MenuManager("Copy");
String commandId = CopyNickToClipboardHandler.COMMAND_ID;
boolean byID = usr != null;
if (byID) {
commandId += UserHandlers.BY_ID_POSTFIX;
}
List<INFField> fields = new ArrayList<INFField>();
fields.add(INFField.NI);
fields.add(INFField.I4);
fields.add(INFField.I6);
fields.add(INFField.SS);
fields.add(INFField.ID);
fields.add(INFField.DE);
fields.add(INFField.VE);
fields.add(INFField.US);
fields.add(INFField.KP);
fields.add(INFField.U4);
for (INFField inf:fields) {
CommandContributionItemParameter ccip =
new CommandContributionItemParameter(serviceLocator, null, commandId,SWT.PUSH);
ccip.parameters = new HashMap<String,String>();
ccip.parameters.put(CopyNickToClipboardHandler.USE_INF, inf.name());
if (byID) {
ccip.parameters.put(UserHandlers.USER_BY_ID,usr.getUserid().toString());
}
ccip.label = inf.toString();
logger.debug("parameter: "+ ccip.parameters.get(CopyNickToClipboardHandler.USE_INF));
CommandContributionItem cci = new CommandContributionItem(ccip);
manager.add(cci);
}
return new IContributionItem[]{manager};
}
public void initialize(IServiceLocator serviceLocator) {
this.serviceLocator = serviceLocator;
}
}