/*******************************************************************************
* Copyright (c) 2004, 2010, 2012 IBM Corporation, Gerhardt Informatics Kft. 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
* Gerhardt Informatics Kft. - GEFGWT port
*******************************************************************************/
package org.eclipse.gef.ui.palette;
import org.eclipse.core.runtime.Assert;
import org.eclipse.gef.EditDomain;
import org.eclipse.swt.widgets.Composite;
/**
* PaletteViewerProvider provides a standard way of creating palette viewers
* that can be shared across different clients that need to create a palette
* (PaletteViewerPage and FlyoutPaletteComposite, for instance).
*
* @author Pratik Shah
* @since 3.0
*/
public class PaletteViewerProvider {
private EditDomain graphicalViewerEditDomain;
/**
* Constructor
*
* @param graphicalViewerDomain
* The EditDomain with which each newly created PaletteViewer
* will be registered
*/
public PaletteViewerProvider(EditDomain graphicalViewerDomain) {
Assert.isNotNull(graphicalViewerDomain);
graphicalViewerEditDomain = graphicalViewerDomain;
}
/**
* This method is invoked from {@link #createPaletteViewer(Composite)}. It
* configures the given viewer's settings.
*
* @param viewer
* the viewer that is to be configured
*/
protected void configurePaletteViewer(PaletteViewer viewer) {
viewer.setContextMenu(new PaletteContextMenuProvider(viewer));
}
/**
* Creates a PaletteViewer on the given Composite
*
* @param parent
* the control for the PaletteViewer
* @return the newly created PaletteViewer
*/
public PaletteViewer createPaletteViewer(Composite parent) {
PaletteViewer pViewer = new PaletteViewer();
pViewer.createControl(parent);
configurePaletteViewer(pViewer);
hookPaletteViewer(pViewer);
return pViewer;
}
/**
* @return the EditDomain provided during creation of this
* PaletteViewerProvider
*/
public final EditDomain getEditDomain() {
return graphicalViewerEditDomain;
}
/**
* This method is invoked from {@link #createPaletteViewer(Composite)}. It
* is a step in the process of setting up the PaletteViewer after it has
* been created.
*
* @param viewer
* the viewer that is to be configured
*/
protected void hookPaletteViewer(PaletteViewer viewer) {
getEditDomain().setPaletteViewer(viewer);
}
}