/* This file is part of Green. * * Copyright (C) 2005 The Research Foundation of State University of New York * All Rights Under Copyright Reserved, The Research Foundation of S.U.N.Y. * * Green is free software, licensed under the terms of the Eclipse * Public License, version 1.0. The license is available at * http://www.eclipse.org/legal/epl-v10.html */ package edu.buffalo.cse.green.action; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IActionDelegate; import edu.buffalo.cse.green.GreenException; import edu.buffalo.cse.green.editor.DiagramEditor; import edu.buffalo.cse.green.editor.model.commands.AddJavaElementCommand; import edu.buffalo.cse.green.util.IterableSelection; /** * Opens a blank editor. * * @author bcmartin */ public class OpenNewEditorAction implements IActionDelegate { ISelection _selection; /** * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) */ public void run(IAction action) { StructuredSelection ss = (StructuredSelection) _selection; DiagramEditor editor = DiagramEditor.getActiveEditor(); try { editor = DiagramEditor.createEditor(ss); } catch (JavaModelException e) { e.printStackTrace(); } /* IJavaElement element = (IJavaElement) ((StructuredSelection) _selection) .getFirstElement(); if (!(element instanceof IPackageFragment)) { element = element.getAncestor(IJavaElement.PACKAGE_FRAGMENT); } DiagramEditor editor = DiagramEditor.getActiveEditor(); try { editor = DiagramEditor.createEditor(new StructuredSelection(element)); } catch (JavaModelException e) { e.printStackTrace(); } */ for (IJavaElement element1 : new IterableSelection<IJavaElement>(ss)) { // If current editor's project is not set, add to it. if (editor.getProject() != null) { if (!editor.getProject().getHandleIdentifier().equals( element1.getJavaProject().getHandleIdentifier())) { // if the editor we found can't hold the current element, // see if an editor exists that can hold the element editor = DiagramEditor.findProjectEditor(element1 .getJavaProject()); // if no such editor exists... if (editor == null) { // create one try { editor = DiagramEditor.createEditor( new StructuredSelection(element1)); } catch (JavaModelException e) { e.printStackTrace(); } } } } try { editor.execute(new AddJavaElementCommand( editor, element1)); } catch (GreenException e) { MessageDialog.openError(editor.getSite().getShell(), "Error", e.getLocalizedMessage()); } } editor.refresh(); } /** * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) */ public void selectionChanged(IAction action, ISelection selection) { if (selection instanceof StructuredSelection) { _selection = selection; } } public OpenNewEditorAction() { } }