// ============================================================================ // // Copyright (C) 2006-2012 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.designer.core.ui.editor; import org.eclipse.draw2d.ConnectionLayer; import org.eclipse.draw2d.FreeformLayer; import org.eclipse.draw2d.FreeformLayeredPane; import org.eclipse.draw2d.LayeredPane; import org.eclipse.draw2d.ScalableFigure; import org.eclipse.draw2d.ScalableFreeformLayeredPane; import org.eclipse.draw2d.Viewport; import org.eclipse.draw2d.geometry.Insets; import org.eclipse.gef.AutoexposeHelper; import org.eclipse.gef.editparts.GridLayer; import org.eclipse.gef.editparts.ScalableFreeformRootEditPart; import org.eclipse.gef.editparts.ViewportAutoexposeHelper; import org.eclipse.gef.editparts.ZoomManager; import org.eclipse.ui.IEditorInput; import org.talend.commons.ui.gmf.draw2d.AnimatableZoomManager; /** * Modification of the default RootEditPart to add the possibility to change the color of the background and change the * grid. * * $Id: TalendScalableFreeformRootEditPart.java 7038 2007-11-15 14:05:48Z plegall $ * */ public class TalendScalableFreeformRootEditPart extends ScalableFreeformRootEditPart { public static final String PROCESS_BACKGROUND_LAYER = "processBackgroundLayer"; //$NON-NLS-1$ public static final String SUBJOB_BACKGROUND_LAYER = "processBackgroundLayer"; //$NON-NLS-1$ private IEditorInput editorInput; private AnimatableZoomManager zoomManager; private double[] zoomLevels = { .05, .1, .25, .5, .75, 1, 1.25, 1.5, 1.75, 2, 4 }; private TalendGridLayer gridLayer; private FeedbackLayer feedbackLayer; /* * (non-Javadoc) * * @see org.eclipse.gef.editparts.ScalableFreeformRootEditPart#getZoomManager() */ @Override public ZoomManager getZoomManager() { if (zoomManager == null) { zoomManager = new AnimatableZoomManager((ScalableFigure) getScaledLayers(), ((Viewport) getFigure())); zoomManager.setZoomLevels(zoomLevels); zoomManager.setZoomAnimationStyle(ZoomManager.ANIMATE_ZOOM_IN_OUT); } return zoomManager; } public TalendScalableFreeformRootEditPart(IEditorInput editorInput) { this.editorInput = editorInput; } @Override protected LayeredPane createPrintableLayers() { FreeformLayeredPane layeredPane = new FreeformLayeredPane(); layeredPane.add(new FreeformLayer(), PRIMARY_LAYER); layeredPane.add(new ConnectionLayer(), CONNECTION_LAYER); return layeredPane; } @Override protected GridLayer createGridLayer() { if (gridLayer == null) { gridLayer = new TalendGridLayer(); } return gridLayer; } protected ScalableFreeformLayeredPane createScaledLayers() { ScalableFreeformLayeredPane layers = new ScalableFreeformLayeredPane(); layers.add(new FreeformLayer(), SUBJOB_BACKGROUND_LAYER); layers.add(new FreeformLayer(), PROCESS_BACKGROUND_LAYER); layers.add(createGridLayer(), GRID_LAYER); layers.add(getPrintableLayers(), PRINTABLE_LAYERS); layers.add(new FeedbackLayer(), SCALED_FEEDBACK_LAYER); feedbackLayer = new FeedbackLayer(); return layers; } /** * Modification fo the default Layer. <br/> * * $Id: TalendScalableFreeformRootEditPart.java 7038 2007-11-15 14:05:48Z plegall $ * */ class FeedbackLayer extends FreeformLayer { FeedbackLayer() { setEnabled(false); } } public IEditorInput getEditorInput() { return editorInput; } /* * (non-Javadoc) * * @see org.eclipse.gef.editparts.FreeformGraphicalRootEditPart#getAdapter(java.lang.Class) */ @Override public Object getAdapter(Class key) { if (key == AutoexposeHelper.class) { return new ViewportAutoexposeHelper(this, new Insets(100)); } return super.getAdapter(key); } /* * (non-Javadoc) * * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#deactivate() */ @Override public void deactivate() { super.deactivate(); editorInput = null; zoomManager = null; feedbackLayer = null; gridLayer = null; } }