package tk.eclipse.plugin.htmleditor.editors; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.swt.SWT; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.editors.text.TextEditorActionContributor; import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.RetargetTextEditorAction; import tk.eclipse.plugin.htmleditor.HTMLPlugin; /** * Extended TextEditorActionContributor. * <p> * This contributor contributes actions which are got from Texteditor to the Edit menu. * </p> * * @author Naoki Takezoe */ public class HTMLSourceEditorContributer extends TextEditorActionContributor { private List<String> actionIds = new ArrayList<String>(); private List<RetargetTextEditorAction> actions = new ArrayList<RetargetTextEditorAction>(); public void addActionId(String id){ this.actionIds.add(id); } @Override public void setActiveEditor(IEditorPart part) { super.setActiveEditor(part); doSetActiveEditor(part); } private void doSetActiveEditor(IEditorPart part) { ITextEditor textEditor= null; if (part instanceof ITextEditor){ textEditor = (ITextEditor) part; } if(textEditor!=null){ for(int i=0;i<this.actions.size();i++){ RetargetTextEditorAction action = actions.get(i); IAction targetAction = textEditor.getAction(actionIds.get(i)); if(targetAction!=null){ action.setAccelerator(targetAction.getAccelerator()); action.setAction(targetAction); } else { action.setAccelerator(SWT.NULL); action.setAction(null); } } } } @Override public void init(IActionBars bars) { super.init(bars); IMenuManager menuManager = bars.getMenuManager(); IMenuManager editMenu = menuManager.findMenuUsingPath("edit"); editMenu.insertBefore("additions", new Separator("amateras")); if (editMenu != null) { for(int i=0;i<actionIds.size();i++){ RetargetTextEditorAction action = new RetargetTextEditorAction(HTMLPlugin.getDefault().getResourceBundle(), null); this.actions.add(action); editMenu.appendToGroup("amateras",action); } } } }