/** * */ package de.hannesniederhausen.storynotes.ui.internal.services.actions; import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.command.AddCommand; import de.hannesniederhausen.storynotes.model.Category; import de.hannesniederhausen.storynotes.model.PersonCategory; import de.hannesniederhausen.storynotes.model.Project; import de.hannesniederhausen.storynotes.model.StorynotesPackage; import de.hannesniederhausen.storynotes.ui.internal.actions.AbstractCreationAction; /** * @author Hannes Niederhausen * */ public class CreatePersonCategoryAction extends AbstractCreationAction { public static final String PERSON_NAME = "Persons"; public CreatePersonCategoryAction(IEclipseContext context, EObject parent) { super(context, parent); setText("Create Person Category"); checkEnabled(); } private void checkEnabled() { Project project = (Project) getParentElement(); for (Category c : project.getCategories()) { if (c instanceof PersonCategory) { setEnabled(false); return; } } setEnabled(true); } @Override public void run() { final Project project = (Project) getParentElement(); Category c = getModelProviderService().getModelFactory() .createPersonCategory(); c.setName(PERSON_NAME); AddCommand cmd = new AddCommand(getEditingDomain(), project, StorynotesPackage.Literals.PROJECT__CATEGORIES, c); getEditingDomain().getCommandStack().execute(cmd); getSelectionService().setSelection(c); } }