/******************************************************************************* * Copyright (c) 2009, 2010 Progress Software Corporation. * 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 ******************************************************************************/ // Copyright (c) 2009 Progress Software Corporation. package org.fusesource.tools.core.ui.viewer.actions; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.text.source.SourceViewer; public class SourceViewerContextMenuProvider { private SourceViewer sourceViewer; private List<SourceViewerAction> actionList; private CopyAction copyAction; private PasteAction pasteAction; private DeleteAction deleteAction; private CutAction cutAction; private SourceViewerAction selectAllAction; public SourceViewerContextMenuProvider(SourceViewer sourceViewer) { this.sourceViewer = sourceViewer; if (sourceViewer != null) { createSourceActions(); fillContextMenu(); } } /** * Creating Source Viewer Actions */ private void createSourceActions() { actionList = new ArrayList<SourceViewerAction>(); copyAction = new CopyAction(sourceViewer); actionList.add(copyAction); pasteAction = new PasteAction(sourceViewer); actionList.add(pasteAction); deleteAction = new DeleteAction(sourceViewer); actionList.add(deleteAction); cutAction = new CutAction(sourceViewer); actionList.add(cutAction); selectAllAction = new SelectAllAction(sourceViewer); actionList.add(selectAllAction); } /** * Adding Context Menu for Query Source Viewer. */ private void fillContextMenu() { MenuManager menuManager = null; if (menuManager == null) { menuManager = new MenuManager("QuerySourcePopupMenu"); //$NON-NLS-1$ menuManager.setRemoveAllWhenShown(true); menuManager.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager manager) { updateActions(); manager.add(cutAction); manager.add(copyAction); manager.add(pasteAction); manager.add(deleteAction); manager.add(new Separator()); manager.add(selectAllAction); } }); } sourceViewer.getTextWidget().setMenu(menuManager.createContextMenu(sourceViewer.getTextWidget())); } /** * updating the Actions while popup Context Menu */ private void updateActions() { for (SourceViewerAction action : actionList) { action.updateAction(); } } }