/******************************************************************************* * Copyright (c) 2006 Sybase, Inc. 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: * Sybase, Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.jst.pagedesigner.editors.palette; import org.eclipse.gef.EditDomain; import org.eclipse.gef.internal.ui.palette.editparts.DrawerEditPart; import org.eclipse.gef.ui.palette.PaletteContextMenuProvider; import org.eclipse.gef.ui.palette.PaletteViewer; import org.eclipse.gef.ui.palette.PaletteViewerProvider; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jst.pagedesigner.PDPlugin; import org.eclipse.jst.pagedesigner.dnd.internal.DesignerTemplateTransferDragSourceListener; import org.eclipse.jst.pagedesigner.editors.palette.impl.TaglibPaletteDrawer; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.PlatformUI; /** * @author mengbo */ public class DesignerPaletteViewerProvider extends PaletteViewerProvider { /** * @param graphicalViewerDomain */ public DesignerPaletteViewerProvider(EditDomain graphicalViewerDomain) { super(graphicalViewerDomain); } /* * (non-Javadoc) * * @see org.eclipse.gef.ui.palette.PaletteViewerProvider#configurePaletteViewer(org.eclipse.gef.ui.palette.PaletteViewer) */ protected void configurePaletteViewer(PaletteViewer viewer) { // super.configurePaletteViewer(viewer); viewer.setContextMenu(new PaletteContextMenuProvider(viewer) { public void buildContextMenu(IMenuManager menu) { StructuredSelection sel = (StructuredSelection)getViewer().getSelection(); if (sel != null && sel.getFirstElement() instanceof DrawerEditPart && ((DrawerEditPart)sel.getFirstElement()).getDrawer() instanceof TaglibPaletteDrawer) menu.add(new HideTagLibAction((DrawerEditPart)sel.getFirstElement(), "Hide")); super.buildContextMenu(menu); } }); // XXX: should only use the following when we use Template viewer .addDragSourceListener(new DesignerTemplateTransferDragSourceListener( viewer)); } /* * (non-Javadoc) * * @see org.eclipse.gef.ui.palette.PaletteViewerProvider#createPaletteViewer(org.eclipse.swt.widgets.Composite) */ public PaletteViewer createPaletteViewer(Composite parent) { PaletteViewer pViewer = new DesignerPaletteViewer(); pViewer.createControl(parent); configurePaletteViewer(pViewer); pViewer.setCustomizer(new DesignerPaletteCustomizer()); hookPaletteViewer(pViewer); PlatformUI .getWorkbench() .getHelpSystem() .setHelp( parent, PDPlugin .getResourceString("DesignerPaletteViewerProvider.help.id")); return pViewer; } private static class HideTagLibAction extends Action { private DrawerEditPart tagLib; /** * Constructor * @param tagLibDrawer * @param string */ public HideTagLibAction(DrawerEditPart tagLibDrawer, String string) { super(string); this.tagLib = tagLibDrawer; } /* (non-Javadoc) * @see org.eclipse.jface.action.Action#run() */ public void run() { TaglibPaletteDrawer pd = (TaglibPaletteDrawer)tagLib.getDrawer(); pd.setVisible(false); DesignerPaletteCustomizationsHelper.hideTaglibDrawer(pd); } } }