content: /*******************************************************************************
   * Copyright (c) 2000, 2007 IBM Corporation and others.
   * 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
   *
   * Contributors:
   *     IBM Corporation - initial API and implementation
   *******************************************************************************/
  package org.eclipse.wst.jsdt.internal.ui.actions;
  
  import org.eclipse.jface.action.Action;
  import org.eclipse.jface.action.IMenuListener;
  import org.eclipse.jface.action.IMenuManager;
  import org.eclipse.jface.action.MenuManager;
  import org.eclipse.jface.text.ITextSelection;
  import org.eclipse.jface.viewers.ISelection;
  import org.eclipse.jface.viewers.ISelectionProvider;
  import org.eclipse.ui.IActionBars;
  import org.eclipse.ui.PlatformUI;
  import org.eclipse.ui.actions.ActionGroup;
  import org.eclipse.ui.keys.IBindingService;
  import org.eclipse.wst.jsdt.internal.ui.javaeditor.CompilationUnitEditor;
  
  public class SurroundWithActionGroup extends ActionGroup {
  	
  	private CompilationUnitEditor fEditor;
  //	private SurroundWithTryCatchAction fSurroundWithTryCatchAction;
  	private final String fGroup;
  	
  	public SurroundWithActionGroup(CompilationUnitEditor editor, String group) {
  		fEditor= editor;
  		fGroup= group;
  //		fSurroundWithTryCatchAction= createSurroundWithTryCatchAction(fEditor);
  	}
  	
  	public void fillActionBars(IActionBars actionBar) {
  //		actionBar.setGlobalActionHandler(JdtActionConstants.SURROUND_WITH_TRY_CATCH, fSurroundWithTryCatchAction);
  	}
  	
  	/**
  	 * The Menu to show when right click on the editor
  	 * {@inheritDoc}
  	 */
  	public void fillContextMenu(IMenuManager menu) {
  		ISelectionProvider selectionProvider= fEditor.getSelectionProvider();
  		if (selectionProvider == null)
  			return;
  		
  		ISelection selection= selectionProvider.getSelection();
  		if (!(selection instanceof ITextSelection))
  			return;
  		
  		ITextSelection textSelection= (ITextSelection)selection;
  		if (textSelection.getLength() == 0)
  			return;
  		
  		String menuText= ActionMessages.SurroundWithTemplateMenuAction_SurroundWithTemplateSubMenuName;
  				
  		String shortcutString= getShortcutString();
  		if (shortcutString != null) {
  			menuText= menuText + '\t' + shortcutString;
  		}
  		
  		MenuManager subMenu = new MenuManager(menuText, SurroundWithTemplateMenuAction.SURROUND_WITH_QUICK_MENU_ACTION_ID);	
  		menu.appendToGroup(fGroup, subMenu);	
  		subMenu.add(new Action() {});
  		subMenu.addMenuListener(new IMenuListener() {
  			public void menuAboutToShow(IMenuManager manager) {
  				manager.removeAll();
  				SurroundWithTemplateMenuAction.fillMenu(manager, fEditor);
  			}
  		});
  	}
  	
  	private String getShortcutString() {
  		IBindingService bindingService= (IBindingService)PlatformUI.getWorkbench().getAdapter(IBindingService.class);
  		if (bindingService == null)
  			return null;
  		return bindingService.getBestActiveBindingFormattedFor(SurroundWithTemplateMenuAction.SURROUND_WITH_QUICK_MENU_ACTION_ID);
  	}
  	
  //	private static SurroundWithTryCatchAction createSurroundWithTryCatchAction(CompilationUnitEditor editor) {
  //		SurroundWithTryCatchAction result= new SurroundWithTryCatchAction(editor);
  //		result.setText(ActionMessages.SurroundWithTemplateMenuAction_SurroundWithTryCatchActionName);
  //		result.setActionDefinitionId(IJavaEditorActionDefinitionIds.SURROUND_WITH_TRY_CATCH);
  //		editor.setAction("SurroundWithTryCatch", result); //$NON-NLS-1$		
  //		return result;
  //	}
  }
  