/**
* Copyright (c) 2004-2007 IBM Corporation and others.
* 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:
* IBM - Initial API and implementation
*/
package org.eclipse.emf.edit.ui.action;
import org.eclipse.jface.action.Action;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.emf.common.ui.dialogs.ResourceDialog;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.domain.IEditingDomainProvider;
import org.eclipse.emf.edit.ui.EMFEditUIPlugin;
/**
* An action to load a resource into an editing domain's resource set.
*/
public class LoadResourceAction extends Action
{
protected EditingDomain domain;
public LoadResourceAction(EditingDomain domain)
{
this();
this.domain = domain;
update();
}
public LoadResourceAction()
{
super(EMFEditUIPlugin.INSTANCE.getString("_UI_LoadResource_menu_item"));
setDescription(EMFEditUIPlugin.INSTANCE.getString("_UI_LoadResource_menu_item_description"));
}
/**
* This returns the action's domain.
*/
public EditingDomain getEditingDomain()
{
return domain;
}
/**
* This sets the action's domain.
*/
public void setEditingDomain(EditingDomain domain)
{
this.domain = domain;
}
@Override
public void run()
{
LoadResourceDialog loadResourceDialog =
new LoadResourceDialog
(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), domain);
loadResourceDialog.open();
}
public void update()
{
setEnabled(domain != null);
}
/**
* @deprecated As of EMF 2.1.0, replaced by {@link #setActiveWorkbenchPart}.
*/
@Deprecated
public void setActiveEditor(IEditorPart editorPart)
{
setActiveWorkbenchPart(editorPart);
}
/**
* @since 2.1.0
*/
public void setActiveWorkbenchPart(IWorkbenchPart workbenchPart)
{
setEditingDomain(workbenchPart instanceof IEditingDomainProvider ? ((IEditingDomainProvider)workbenchPart).getEditingDomain() : null);
}
public static class LoadResourceDialog extends ResourceDialog
{
protected EditingDomain domain;
public LoadResourceDialog(Shell parent)
{
this(parent, null);
}
public LoadResourceDialog(Shell parent, EditingDomain domain)
{
super(parent, EMFEditUIPlugin.INSTANCE.getString("_UI_LoadResourceDialog_title"), SWT.OPEN | SWT.MULTI);
this.domain = domain;
}
@Override
protected boolean processResources()
{
if (domain != null)
{
for (URI uri : getURIs())
{
try
{
if (!processResource(domain.getResourceSet().getResource(uri, true)))
{
return false;
}
}
catch (RuntimeException exception)
{
EMFEditUIPlugin.INSTANCE.log(exception);
}
}
}
return true;
}
protected boolean processResource(Resource resource)
{
return true;
}
}
}