/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.diagram.ui.outline;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.draw2d.LightweightSystem;
import org.eclipse.draw2d.Viewport;
import org.eclipse.draw2d.parts.ScrollableThumbnail;
import org.eclipse.draw2d.parts.Thumbnail;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.LayerConstants;
import org.eclipse.gef.RootEditPart;
import org.eclipse.gef.editparts.FreeformGraphicalRootEditPart;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.editparts.ZoomManager;
import org.eclipse.gef.ui.parts.SelectionSynchronizer;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.teiid.designer.diagram.ui.DiagramUiConstants;
import org.teiid.designer.diagram.ui.DiagramUiPlugin;
import org.teiid.designer.diagram.ui.PluginConstants;
import org.teiid.designer.ui.editors.ModelEditorPageOutline;
/**
* DiagramOverview is the ModelEditorPageOutline for the DiagramEditor.
*
* @since 8.0
*/
public class DiagramOverview implements IAdaptable, ModelEditorPageOutline {
// ========================================
// Variables
private Canvas overview;
private boolean overviewInitialized;
private Thumbnail thumbnail;
// private SelectionSynchronizer selectionSynchronizer;
private GraphicalViewer graphicalViewer;
// private Object model;
private ImageDescriptor icon;
private LightweightSystem lws;
// ========================================
// Constructors
public DiagramOverview(
GraphicalViewer graphicalViewer,
SelectionSynchronizer synchronizer,
Object model) {
// this.selectionSynchronizer = synchronizer;
this.graphicalViewer = graphicalViewer;
// this.model = model;
this.icon = DiagramUiPlugin.getDefault().getImageDescriptor(PluginConstants.Images.OVERVIEW_ICON);
}
// ========================================
// Methods
@Override
public void createControl(Composite parent) {
overview = new Canvas(parent, SWT.NONE);
initializeOverview();
}
@Override
public void dispose() {
if ( overview != null && !overview.isDisposed() )
overview.dispose();
}
@Override
public Object getAdapter(Class type) {
if (type == ZoomManager.class)
return ((ScalableFreeformRootEditPart)graphicalViewer.getRootEditPart()).getZoomManager();
return null;
}
@Override
public Control getControl() {
return overview;
}
protected void initializeOverview() {
lws = new LightweightSystem(overview);
RootEditPart rep = graphicalViewer.getRootEditPart();
if (rep instanceof FreeformGraphicalRootEditPart) {
ScalableFreeformRootEditPart root = (ScalableFreeformRootEditPart)rep;
thumbnail = new ScrollableThumbnail((Viewport)root.getFigure());
thumbnail.setSource(root.getLayer(LayerConstants.PRINTABLE_LAYERS));
lws.setContents(thumbnail);
overviewInitialized = true;
}
}
protected void showOverview() {
if (!overviewInitialized)
initializeOverview();
thumbnail.setVisible(true);
}
public void resetContents() {
if( thumbnail != null ) {
thumbnail.setVisible(false);
RootEditPart rep = graphicalViewer.getRootEditPart();
if (rep instanceof FreeformGraphicalRootEditPart) {
ScalableFreeformRootEditPart root = (ScalableFreeformRootEditPart)rep;
thumbnail = new ScrollableThumbnail((Viewport)root.getFigure());
thumbnail.setSource(root.getLayer(LayerConstants.PRINTABLE_LAYERS));
lws.setContents(thumbnail);
}
thumbnail.setVisible(true);
}
}
/* (non-Javadoc)
* @See org.teiid.designer.ui.editors.ModelEditorPageOutline#getIcon()
*/
@Override
public ImageDescriptor getIcon() {
return icon;
}
/* (non-Javadoc)
* @See org.teiid.designer.ui.editors.ModelEditorPageOutline#getToolTipText()
*/
@Override
public String getToolTipText() {
return DiagramUiConstants.Util.getString("DiagramOverview.toolTipText"); //$NON-NLS-1$
}
/* (non-Javadoc)
* @See org.teiid.designer.ui.editors.ModelEditorPageOutline#isEnabled()
*/
@Override
public boolean isEnabled() {
return true;
}
/* (non-Javadoc)
* @See org.teiid.designer.ui.editors.ModelEditorPageOutline#isVisible()
*/
@Override
public void setVisible(boolean visible) {
if ( thumbnail != null ) {
thumbnail.setVisible(visible);
}
}
}