Java tutorial
/******************************************************************************* * Copyright (c) 2009 Ola Spjuth. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Ola Spjuth - initial API and implementation ******************************************************************************/ package net.bioclipse.metaprint2d.ui.actions; import java.util.ArrayList; import java.util.List; import net.bioclipse.metaprint2d.ui.Activator; import net.bioclipse.metaprint2d.ui.business.IMetaPrint2DManager; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IFile; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PlatformUI; public class MetaPrint2DBatchHandler extends AbstractHandler { // private ISelection selection; public Object execute(ExecutionEvent event) throws ExecutionException { ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService() .getSelection(); if (selection == null) { showError("Selection is empty"); return null; } if (!(selection instanceof IStructuredSelection)) { showError("Selection does not contain an SDF or CML file."); return null; } IStructuredSelection ssel = (IStructuredSelection) selection; IMetaPrint2DManager m2d = Activator.getDefault().getMetaPrint2DManager(); List<String> errors = new ArrayList<String>(); for (Object obj : ssel.toList()) { if (obj instanceof IFile) { IFile file = (IFile) obj; try { m2d.calculate(file, true); } catch (Exception e) { e.printStackTrace(); errors.add(" Error calculating file: '" + file + "': " + e.getMessage()); } } } if (errors.size() > 0) { String emsg = "Metaprint2D calculation experienced the following errors:\n"; for (String er : errors) { emsg = emsg + "\n - " + er; } showError(emsg); } return null; } private void showError(String emsg) { MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Error", emsg); } // public void selectionChanged(IWorkbenchPart part, ISelection selection) { // this.selection=selection; // } }