/*
* Created on Jul 15, 2004
*/
package com.realpersist.gef.editor;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.gef.EditPartFactory;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.KeyHandler;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.ui.actions.ActionRegistry;
import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorSite;
import com.realpersist.gef.directedit.StatusLineValidationMessageHandler;
import com.realpersist.gef.dnd.DataEditDropTargetListener;
import com.realpersist.gef.part.factory.SchemaEditPartFactory;
/**
* Functionality for configuring the GraphicalViewer
* @author Phil Zoio
*/
public class GraphicalViewerCreator
{
private KeyHandler sharedKeyHandler;
private GraphicalViewer viewer;
/** the editor's action registry */
private ActionRegistry actionRegistry;
private IEditorSite editorSite;
/**
* @param editorSite
*/
public GraphicalViewerCreator(IEditorSite editorSite)
{
this.editorSite = editorSite;
}
/**
* Creates a new <code>PaletteViewer</code>, configures, registers and
* initializes it.
*
* @param parent
* the parent composite
*/
public void createGraphicalViewer(Composite parent)
{
viewer = createViewer(parent);
}
/**
* @param parent
* @return
*/
protected GraphicalViewer createViewer(Composite parent)
{
StatusLineValidationMessageHandler validationMessageHandler = new StatusLineValidationMessageHandler(editorSite);
GraphicalViewer viewer = new ValidationEnabledGraphicalViewer(validationMessageHandler);
viewer.createControl(parent);
// configure the viewer
viewer.getControl().setBackground(ColorConstants.white);
viewer.setRootEditPart(new ScalableFreeformRootEditPart());
viewer.setKeyHandler(new GraphicalViewerKeyHandler(viewer));
viewer.addDropTargetListener(new DataEditDropTargetListener(viewer));
// initialize the viewer with input
viewer.setEditPartFactory(getEditPartFactory());
return viewer;
}
/**
* Returns the <code>EditPartFactory</code> that the
* <code>GraphicalViewer</code> will use.
*
* @return the <code>EditPartFactory</code>
*/
protected EditPartFactory getEditPartFactory()
{
// todo return your EditPartFactory here
return new SchemaEditPartFactory();
}
/**
* @return Returns the viewer.
*/
public GraphicalViewer getViewer()
{
return viewer;
}
}