package damp.ekeko.snippets.gui;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
import damp.ekeko.snippets.EkekoSnippetsPlugin;
public class TransformationEditorActionBarContributor extends MultiPageEditorActionBarContributor {
TemplateEditor activeTemplateEditor;
TransformationEditor activeTransformationEditor;
private List<Action> actions;
private Action matchTemplateAction;
private Action inspectQueryAction;
@Override
public void setActiveEditor(IEditorPart activeEditor) {
super.setActiveEditor(activeEditor);
if(activeEditor instanceof TransformationEditor)
activeTransformationEditor = (TransformationEditor) activeEditor;
}
@Override
public void setActivePage(IEditorPart activeEditor) {
if(activeEditor instanceof TemplateEditor)
activeTemplateEditor = (TemplateEditor) activeEditor;
/* better to keep them always on
if(activeEditor instanceof SubjectsTemplateEditor) {
enableLHSActions(true);
} else {
enableLHSActions(false);
}
*/
}
private void enableLHSActions(boolean enabled) {
matchTemplateAction.setEnabled(enabled);
inspectQueryAction.setEnabled(enabled);
}
public TransformationEditorActionBarContributor() {
createActions();
}
protected void createActions() {
actions = new LinkedList<Action>();
Action transformAction = new Action() {
public void run() {
if(activeTransformationEditor != null)
activeTransformationEditor.onExecuteTransformation();
}
};
transformAction.setText("Execute search-and-replace.");
transformAction.setToolTipText("Executes search-and-replace. Code will be changed.");
transformAction.setImageDescriptor(ImageDescriptor.createFromImage(EkekoSnippetsPlugin.IMG_TRANSFORM));
actions.add(transformAction);
matchTemplateAction = new Action("Execute search.") {
public void run() {
/*
if(activeTemplateEditor instanceof SubjectsTemplateEditor)
activeTemplateEditor.runQuery();
*/
if(activeTransformationEditor != null) {
activeTransformationEditor.getSubjectsEditor().runQuery();
}
}
};
matchTemplateAction.setImageDescriptor(ImageDescriptor.createFromImage(EkekoSnippetsPlugin.IMG_TEMPLATE_MATCH));
matchTemplateAction.setToolTipText("Matches search templates. Code will remain unchanged.");
actions.add(matchTemplateAction);
/*
inspectQueryAction = new Action("Inspect query for search templates") {
public void run() {
if(activeTemplateEditor instanceof SubjectsTemplateEditor)
activeTemplateEditor.viewQuery();
}
};
inspectQueryAction.setImageDescriptor(ImageDescriptor.createFromImage(EkekoSnippetsPlugin.IMG_TEMPLATE_INSPECT));
inspectQueryAction.setToolTipText("Inspect query corresponding to search template");
actions.add(inspectQueryAction);
*/
}
@Override
public void contributeToToolBar(IToolBarManager toolBarManager) {
super.contributeToToolBar(toolBarManager);
for(Action action : actions) {
toolBarManager.add(action);
}
}
}