/**
*
*/
package org.goko.tools.editor;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.e4.ui.di.UIEventTopic;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
import org.goko.core.common.exception.GkException;
import org.goko.tools.editor.component.provider.IDocumentProvider;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventAdmin;
/**
* Addon used for opening a document in the GCode editor
* @author Psyko
* @date 25 mai 2016
*/
public class GCodeEditorPartOpenerAddon {
@Inject EPartService partService;
@Inject EventAdmin eventAdmin;
/**
* Received an open request. We first have to make sure that the part is activated and then dispatch the event for opening the document in the part
* @param provider the documentProvider to open
* @throws GkException GkException
*/
@Inject
@Optional
public void onOpenRequest(@UIEventTopic(GCodeEditorTopic.TOPIC_OPEN_EDITOR) IDocumentProvider provider) throws GkException{
partService.showPart("org.goko.tools.editor.part.editor", PartState.ACTIVATE);
Map<String, Object> map = new HashMap<String, Object>();
map.put(IEventBroker.DATA, provider);
eventAdmin.sendEvent(new Event(GCodeEditorTopic.TOPIC_OPEN_PART_EDITOR, map));
}
}