/******************************************************************************* * Copyright (c) 2010-2015 Henshin developers. All rights reserved. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * TU Berlin, University of Luxembourg, SES S.A. *******************************************************************************/ package de.tub.tfs.henshin.editor.ui.condition; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.henshin.model.Formula; import org.eclipse.emf.henshin.model.HenshinPackage; import org.eclipse.emf.henshin.model.Rule; import org.eclipse.gef.EditPartFactory; import org.eclipse.gef.EditPartViewer; import org.eclipse.gef.KeyHandler; import org.eclipse.ui.actions.ActionFactory; import de.tub.tfs.henshin.editor.actions.graph.CreateAttributeAction; import de.tub.tfs.henshin.editor.actions.rule.DeleteMappingAction; import de.tub.tfs.henshin.editor.actions.transformation_unit.CreateParameterAction; import de.tub.tfs.henshin.editor.editparts.rule.RuleEditPartFactory; import de.tub.tfs.henshin.editor.ui.rule.RuleContextMenuProvider; import de.tub.tfs.henshin.editor.util.FormulaUtil; import de.tub.tfs.muvitor.gef.palette.MuvitorPaletteRoot; import de.tub.tfs.muvitor.ui.ContextMenuProviderWithActionRegistry; import de.tub.tfs.muvitor.ui.MuvitorPage; import de.tub.tfs.muvitor.ui.MuvitorPageBookView; /** * The Class ConditionPage. * * @author Angeline Warning */ public class ConditionPage extends MuvitorPage { public static int PREMISE_INDEX = 0; public static int CONDITION_INDEX = 1; /** The condition view. */ private ConditionView conditionView; /** The pallet root. */ private ConditionPaletteRoot palletRoot; /** * Konstruktor erh�lt MuvitorPageBookView. * * @param view * MuvitorPageBookView */ public ConditionPage(MuvitorPageBookView view) { super(view); this.conditionView = (ConditionView) view; } /* * (non-Javadoc) * * @see muvitorkit.ui.MuvitorPage#dispose() */ @Override public void dispose() { super.dispose(); } /* * (non-Javadoc) * * @seemuvitorkit.ui.MuvitorPage#createContextMenuProvider(org.eclipse.gef. * EditPartViewer) */ @Override protected ContextMenuProviderWithActionRegistry createContextMenuProvider( EditPartViewer viewer) { return new RuleContextMenuProvider(viewer, getActionRegistry()); } /* * (non-Javadoc) * * @see muvitorkit.ui.MuvitorPage#createCustomActions() */ @Override protected void createCustomActions() { registerSharedActionAsHandler(ActionFactory.COPY.getId()); registerSharedActionAsHandler(ActionFactory.CUT.getId()); registerSharedActionAsHandler(ActionFactory.PASTE.getId()); registerAction(new CreateAttributeAction(getEditor())); registerAction(new DeleteMappingAction(getEditor())); registerAction(new CreateParameterAction(getEditor())); } /* * (non-Javadoc) * * @see muvitorkit.ui.MuvitorPage#createEditPartFactory() */ @Override protected EditPartFactory createEditPartFactory() { return new RuleEditPartFactory(); } /* * (non-Javadoc) * * @see muvitorkit.ui.MuvitorPage#createPaletteRoot() */ @Override protected MuvitorPaletteRoot createPaletteRoot() { EObject parent = getCastedModel().eContainer(); while (parent != null && !(parent instanceof Rule)) { parent = parent.eContainer(); } if (parent != null && parent instanceof Rule) { palletRoot = new ConditionPaletteRoot( ((Rule) parent).getModule()); } return palletRoot; } /* * (non-Javadoc) * * @see muvitorkit.ui.MuvitorPage#getViewerContents() */ @Override protected EObject[] getViewerContents() { return new EObject[] { FormulaUtil.getPremise(getCastedModel()), getCastedModel() }; } /* * (non-Javadoc) * * @see * muvitorkit.ui.MuvitorPage#setupKeyHandler(org.eclipse.gef.KeyHandler) */ @Override protected void setupKeyHandler(KeyHandler kh) { } /* * (non-Javadoc) * * @see * muvitorkit.ui.MuvitorPage#notifyChanged(org.eclipse.emf.common.notify * .Notification) */ @Override protected void notifyChanged(Notification notification) { final int featureId = notification.getFeatureID(HenshinPackage.class); final int eventId = notification.getEventType(); // ensure we have a visible Formula if (featureId == HenshinPackage.FORMULA && (eventId == Notification.SET || eventId == Notification.ADD || eventId == Notification.REMOVE)) { conditionView.createPageForModel(getCastedModel()); } } /** * Returns casted model if model is from type formula, otherwise returns * {@code null}. * * @return A formula model or {@code null} if model is not from type * formula. */ public Formula getCastedModel() { if (getModel() instanceof Formula) { return (Formula) getModel(); } return null; } /** * Refresh pallets. */ public void refreshPallets() { palletRoot.refreshGraphToolsGroup(); } }