Tutorial: GEF (Graphical Editing Framework) [Part 7]
Par Jean Charles MAMMANA, mercredi 13 juin 2007 à 11:58 :: Programmation :: #16 :: rss
Dans cette partie du tuto, on va voir comment ajouter une miniature du graph dans l'outline. C'est très pratique quand on utilise le zoom.
C'est dans la class (embedded) de l'outline view dans MyGraphicalEditor que tout ce passe.

Archive du projet ICI
protected class OutlinePage extends ContentOutlinePage{
private ScrollableThumbnail thumbnail;
private DisposeListener disposeListener;
(...)
public void createControl(Composite parent) {
(...)
// Creation de la miniature.
Canvas canvas = new Canvas(sash, SWT.BORDER);
LightweightSystem lws = new LightweightSystem(canvas);
thumbnail = new ScrollableThumbnail(
(Viewport) ((ScalableRootEditPart) getGraphicalViewer()
.getRootEditPart()).getFigure());
thumbnail.setSource(((ScalableRootEditPart) getGraphicalViewer()
.getRootEditPart())
.getLayer(LayerConstants.PRINTABLE_LAYERS));
lws.setContents(thumbnail);
disposeListener = new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e) {
if (thumbnail != null) {
thumbnail.deactivate();
thumbnail = null;
}
}
};
getGraphicalViewer().getControl().addDisposeListener(disposeListener);
}
(...)
public void dispose() {
getSelectionSynchronizer().removeViewer(getViewer());
if (getGraphicalViewer().getControl() != null
&& !getGraphicalViewer().getControl().isDisposed())
getGraphicalViewer().getControl().removeDisposeListener(disposeListener);
super.dispose();
}
}
private ScrollableThumbnail thumbnail;
private DisposeListener disposeListener;
(...)
public void createControl(Composite parent) {
(...)
// Creation de la miniature.
Canvas canvas = new Canvas(sash, SWT.BORDER);
LightweightSystem lws = new LightweightSystem(canvas);
thumbnail = new ScrollableThumbnail(
(Viewport) ((ScalableRootEditPart) getGraphicalViewer()
.getRootEditPart()).getFigure());
thumbnail.setSource(((ScalableRootEditPart) getGraphicalViewer()
.getRootEditPart())
.getLayer(LayerConstants.PRINTABLE_LAYERS));
lws.setContents(thumbnail);
disposeListener = new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e) {
if (thumbnail != null) {
thumbnail.deactivate();
thumbnail = null;
}
}
};
getGraphicalViewer().getControl().addDisposeListener(disposeListener);
}
(...)
public void dispose() {
getSelectionSynchronizer().removeViewer(getViewer());
if (getGraphicalViewer().getControl() != null
&& !getGraphicalViewer().getControl().isDisposed())
getGraphicalViewer().getControl().removeDisposeListener(disposeListener);
super.dispose();
}
}

Archive du projet ICI

Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire