/** * */ 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.PlotCategory; 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 CreatePlotCategoryAction extends AbstractCreationAction { public static final String PLOT_NAME = "Plot"; public CreatePlotCategoryAction(IEclipseContext context, EObject parent) { super(context, parent); setText("Create Plot Category"); checkEnabled(); } private void checkEnabled() { Project project = (Project) getParentElement(); for (Category c : project.getCategories()) { if (c instanceof PlotCategory) { setEnabled(false); return; } } setEnabled(true); } @Override public void run() { final Project project = (Project) getParentElement(); Category c = getModelProviderService().getModelFactory().createPlotCategory(); c.setName(PLOT_NAME); AddCommand cmd = new AddCommand(getEditingDomain(), project, StorynotesPackage.Literals.PROJECT__CATEGORIES, c); getEditingDomain().getCommandStack().execute(cmd); getSelectionService().setSelection(c); } }