/*******************************************************************************
* Copyright (c) 2008 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.smooks.graphical.actions;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.ui.IEditorPart;
import org.jboss.tools.smooks.editor.ISmooksModelProvider;
import org.jboss.tools.smooks.graphical.editors.SmooksProcessGraphicalEditor;
import org.jboss.tools.smooks.graphical.editors.process.TaskType;
/**
* @author Dart
*
*/
public abstract class AbstractProcessGraphAction extends Action implements ISelectionChangedListener{
protected ISmooksModelProvider provider;
protected ISelection currentSelection = null;
protected IEditorPart editorPart;
public AbstractProcessGraphAction(String text , ISmooksModelProvider provider , IEditorPart editorPart){
super();
this.editorPart = editorPart;
this.provider = provider;
this.setText(text);
init();
}
protected void init(){
}
@Override
public void run() {
super.run();
}
public void update(){
}
public ISmooksModelProvider getProvider() {
return provider;
}
public void setProvider(ISmooksModelProvider provider) {
this.provider = provider;
}
public void selectionChanged(SelectionChangedEvent event) {
currentSelection = event.getSelection();
update();
}
protected List<TaskType> getCurrentSelectedTask(){
if(currentSelection != null){
List<TaskType> selectedTasks = new ArrayList<TaskType>();
List<?> selections = ((IStructuredSelection) currentSelection).toList();
for (Object object : selections) {
if(object != null && object instanceof TaskType){
selectedTasks.add((TaskType)object);
}
}
return selectedTasks;
}
if(editorPart instanceof SmooksProcessGraphicalEditor) {
TaskType currentlySelectedTask = ((SmooksProcessGraphicalEditor)editorPart).getCurrentlySelectedTask();
if(currentlySelectedTask != null) {
List<TaskType> selectedTasks = new ArrayList<TaskType>();
selectedTasks.add(currentlySelectedTask);
return selectedTasks;
}
}
return null;
}
}