/******************************************************************************* * Copyright (c) 2004 Chengdong Li : cdli@ccs.uky.edu * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html *******************************************************************************/ package org.erlide.wrangler.refactoring.codeinspection.view; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.PaletteData; import org.eclipse.ui.IViewActionDelegate; import org.eclipse.ui.IViewPart; /** * Action delegate for all toolbar push-buttons. * <p> * * @author Chengdong Li: cli4@uky.edu * */ public class PushActionDelegate implements IViewActionDelegate { /** pointer to image view */ public GraphImageView view = null; /* * (non-Javadoc) * * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart) */ @Override public void init(final IViewPart viewPart) { if (viewPart instanceof GraphImageView) { view = (GraphImageView) viewPart; } } /* * (non-Javadoc) * * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) */ @Override public void run(final IAction action) { final String myId = action.getId(); final SWTImageCanvas imageCanvas = view.imageCanvas; if (myId.equals("toolbar.open")) { imageCanvas.onFileOpen(); return; } if (imageCanvas.getSourceImage() == null) { return; } if (myId.equals("toolbar.zoomin")) { imageCanvas.zoomIn(); return; } else if (myId.equals("toolbar.zoomout")) { imageCanvas.zoomOut(); return; } else if (myId.equals("toolbar.fit")) { imageCanvas.fitCanvas(); return; } else if (myId.equals("toolbar.rotate")) { /* rotate image anti-clockwise */ final ImageData src = imageCanvas.getImageData(); if (src == null) { return; } final PaletteData srcPal = src.palette; PaletteData destPal; ImageData dest; /* construct a new ImageData */ if (srcPal.isDirect) { destPal = new PaletteData(srcPal.redMask, srcPal.greenMask, srcPal.blueMask); } else { destPal = new PaletteData(srcPal.getRGBs()); } dest = new ImageData(src.height, src.width, src.depth, destPal); /* rotate by rearranging the pixels */ for (int i = 0; i < src.width; i++) { for (int j = 0; j < src.height; j++) { final int pixel = src.getPixel(i, j); dest.setPixel(j, src.width - 1 - i, pixel); } } imageCanvas.setImageData(dest); return; } else if (myId.equals("toolbar.original")) { imageCanvas.showOriginal(); return; } } /* * (non-Javadoc) * * @see * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action * .IAction, org.eclipse.jface.viewers.ISelection) */ @Override public void selectionChanged(final IAction action, final ISelection selection) { } }