/******************************************************************************* * Copyright (c) 2012 Google, Inc. * 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: * Google, Inc. - initial API and implementation *******************************************************************************/ package com.windowtester.runtime.gef.internal.selectors; import com.windowtester.internal.runtime.util.Invariants; import com.windowtester.runtime.IClickDescription; import com.windowtester.runtime.IUIContext; import com.windowtester.runtime.WidgetNotFoundException; import com.windowtester.runtime.WidgetSearchException; import com.windowtester.runtime.locator.IWidgetLocator; import com.windowtester.runtime.locator.IWidgetReference; /** * A selector for selecting items in a GEF Palette. * */ public class PaletteItemSelector extends RevealingFigureSelectorDelegate implements IRevealer { private final PaletteDrawerSelector drawerSelector; private final IRevealer paletteItemRevealer; private final String pathString; public PaletteItemSelector(IPaletteViewerProvider viewerProvider, IEditPartProvider partProvider, String pathString) { Invariants.notNull(viewerProvider); Invariants.notNull(partProvider); Invariants.notNull(pathString); this.pathString = pathString; this.paletteItemRevealer = PaletteItemRevealer.getCurrent(viewerProvider, partProvider); this.drawerSelector = new PaletteDrawerSelector(paletteItemRevealer); } public IRevealer getPaletteItemRevealer() { return paletteItemRevealer; } protected PaletteDrawerSelector getDrawerSelector() { return drawerSelector; } public IWidgetLocator doClick(IUIContext ui, IWidgetReference widget, IClickDescription click) throws WidgetSearchException { if (getDrawerSelector().isDrawer(widget)) return getDrawerSelector().click(ui, widget, click); try { return super.doClick(ui, widget, click); } catch (WidgetSearchException e) { throw new WidgetNotFoundException("Palette item: \"" + pathString + "\" not found"); } } public IWidgetLocator doContextClick(IUIContext ui, IWidgetReference widget, IClickDescription click, String menuItemPath) throws WidgetSearchException { if (getDrawerSelector().isDrawer(widget)) return getDrawerSelector().contextClick(ui, widget, click, menuItemPath); return super.doContextClick(ui, widget, click, menuItemPath); } public void doReveal(IUIContext ui) throws WidgetSearchException { getPaletteItemRevealer().reveal(ui); } }