C'est dans la class (embedded) de l'outline view dans MyGraphicalEditor que tout ce passe.
        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();
                }
        }


Archive du projet ICI