/*******************************************************************************
* Copyright (c) 2008 Olivier Moises
*
* 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:
* Olivier Moises- initial API and implementation
*******************************************************************************/
package org.eclipse.wazaabi.engine.rap.events;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.wazaabi.engine.core.editparts.AbstractWidgetEditPart;
import org.eclipse.wazaabi.engine.core.editparts.WidgetEditPart;
import org.eclipse.wazaabi.engine.edp.adapters.EventAdapter;
import org.eclipse.wazaabi.engine.edp.adapters.EventHandlerAdapter;
import org.eclipse.wazaabi.engine.edp.events.EventAdapterFactory;
import org.eclipse.wazaabi.engine.rap.viewers.RapControlViewer;
import org.eclipse.wazaabi.engine.swt.commons.viewers.AbstractSWTViewer;
import org.eclipse.wazaabi.mm.edp.events.Event;
public class RapEventAdapterFactory implements EventAdapterFactory {
public boolean isFactoryFor(Object context, Object source, Object creationHint) {
if (source instanceof Event
&& getAbstractSWTViewer(context) instanceof RapControlViewer) {
return true;
}
return false;
}
public String getFactoryID() {
return getClass().getName();
}
public EventAdapter createEventAdapter(Object context, Event event) {
// if (event is ui event) ...
if (context instanceof EventHandlerAdapter
&& ((EventHandlerAdapter) context).getEventDispatcherAdapter() instanceof WidgetEditPart)
return new RapUIEventAdapter();
return null;
}
/**
* Returns the AbstractSWTControlViewer associated to this context (here,
* the context is supposed to be an EventHandlerAdapter. Returns null if no
* viewer can be found.
*
* @param context
* @return
*/
private AbstractSWTViewer getAbstractSWTViewer(Object context) {
if (context instanceof EventHandlerAdapter
&& ((EventHandlerAdapter) context).getEventDispatcherAdapter() instanceof AbstractWidgetEditPart
&& ((AbstractWidgetEditPart) ((EventHandlerAdapter) context)
.getEventDispatcherAdapter()).getViewer() instanceof AbstractSWTViewer)
return (AbstractSWTViewer) ((AbstractWidgetEditPart) ((EventHandlerAdapter) context)
.getEventDispatcherAdapter()).getViewer();
return null;
}
public Adapter createAdapter(Object context, EObject model, Object creationHint) {
if (context instanceof EventHandlerAdapter
&& ((EventHandlerAdapter) context).getEventDispatcherAdapter() instanceof WidgetEditPart)
return new RapUIEventAdapter();
return null;
}
}