/*******************************************************************************
* Copyright (c) 2004, 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.gef.ui.views.palette;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.Assert;
import org.eclipse.ui.part.Page;
import org.eclipse.draw2d.IFigure;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.ui.palette.PaletteViewer;
import org.eclipse.gef.ui.palette.PaletteViewerProvider;
/**
* The default page for the PaletteView that works in conjunction with a
* PaletteViewerProvider.
*
* @author Pratik Shah
* @since 3.0
*/
public class PaletteViewerPage
extends Page
implements PalettePage, IAdaptable {
/**
* The PaletteViewerProvider that is used to create the PaletteViewer
*/
protected PaletteViewerProvider provider;
/**
* The PaletteViewer created for this page
*/
protected PaletteViewer viewer;
/**
* Constructor
*
* @param pvProvider the provider used to create the palette viewer
*/
public PaletteViewerPage(PaletteViewerProvider pvProvider) {
Assert.isNotNull(pvProvider);
provider = pvProvider;
}
/**
* Creates the palette viewer and its control.
*
* @see Page#createControl(org.eclipse.swt.widgets.Composite)
*/
public void createControl(Composite parent) {
viewer = provider.createPaletteViewer(parent);
}
/**
* Releases the palette viewer from the edit domain
*
* @see Page#dispose()
*/
public void dispose() {
if (provider.getEditDomain().getPaletteViewer() == viewer)
provider.getEditDomain().setPaletteViewer(null);
super.dispose();
viewer = null;
}
/**
* @see IAdaptable#getAdapter(java.lang.Class)
*/
public Object getAdapter(Class adapter) {
if (adapter == EditPart.class && viewer != null)
return viewer.getEditPartRegistry().get(viewer.getPaletteRoot());
if (adapter == IFigure.class && viewer != null) {
Object obj = viewer.getEditPartRegistry().get(viewer.getPaletteRoot());
if (obj instanceof GraphicalEditPart)
return ((GraphicalEditPart)obj).getFigure();
}
return null;
}
/**
* @return the palette viewer's control
* @see Page#getControl()
*/
public Control getControl() {
return viewer.getControl();
}
/**
* Sets focus on the palette's control
*
* @see Page#setFocus()
*/
public void setFocus() {
getControl().setFocus();
}
}