/** * The constructor * * @param parent * @param theDomain * @param theCurrentResource * @param defaultName */ public ControlResourceDialog( Shell parent, EditingDomain theDomain, Resource theCurrentResource, String defaultName) { super(parent, EMFEditUIPlugin.INSTANCE.getString("_UI_ControlDialog_title"), SWT.SAVE); this.domain = theDomain; this.currentResource = theCurrentResource; this.defaultName = defaultName; }
public LoadResourceDialog(Shell parent, EditingDomain domain) { super( parent, EMFEditUIPlugin.INSTANCE.getString("_UI_LoadResourceDialog_title"), SWT.OPEN | SWT.MULTI, getContextURI(domain)); 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; }
public LoadResourceAction() { super(EMFEditUIPlugin.INSTANCE.getString("_UI_LoadResource_menu_item")); setDescription(EMFEditUIPlugin.INSTANCE.getString("_UI_LoadResource_menu_item_description")); }
/** * Creates and, if it already exists, loads the specified resource. This implementation verifies * that a resource can be opened for that URI, that the resource is not the object's current * container, and that it is not read-only in the editing domain. If there is an existing resource * with that URI, it prompts before overriding or adding to it. * * @see org.eclipse.emf.common.ui.dialogs.ResourceDialog#processResources() */ protected boolean processResources() { URI uri = URI.createURI(getURIText()); ResourceSet resourceSet = domain.getResourceSet(); Resource resource = resourceSet.getResource(uri, false); boolean resourceInSet = resource != null; if (resource == currentResource) { MessageDialog.openError( getShell(), EMFEditUIPlugin.INSTANCE.getString("_UI_InvalidURI_label"), EMFEditUIPlugin.INSTANCE.getString("_WARN_AlreadyInResource")); return false; } if (domain.isReadOnly(resource)) { MessageDialog.openError( getShell(), EMFEditUIPlugin.INSTANCE.getString("_UI_InvalidURI_label"), EMFEditUIPlugin.INSTANCE.getString("_WARN_ReadOnlyResource")); return false; } boolean resourceExists = false; try { InputStream stream = resourceSet.getURIConverter().createInputStream(uri); if (stream != null) { resourceExists = true; stream.close(); } } catch (IOException exception) { // Do nothing } boolean resourceBad = false; if (!resourceInSet) { resource = resourceSet.createResource(uri); if (resource == null) { MessageDialog.openError( getShell(), EMFEditUIPlugin.INSTANCE.getString("_UI_InvalidURI_label"), EMFEditUIPlugin.INSTANCE.getString("_WARN_CannotCreateResource")); return false; } if (resourceExists) { try { resource = resourceSet.getResource(uri, true); } catch (RuntimeException exception) { EMFEditUIPlugin.INSTANCE.log(exception); resourceBad = resource.getContents().isEmpty(); } } } boolean result = true; if (resourceBad) { result = MessageDialog.openQuestion( getShell(), EMFEditUIPlugin.INSTANCE.getString("_UI_ExistingResource_label"), EMFEditUIPlugin.INSTANCE.getString("_WARN_ReplaceResource")); } else if (resourceExists) { result = MessageDialog.openQuestion( getShell(), EMFEditUIPlugin.INSTANCE.getString("_UI_ExistingResource_label"), EMFEditUIPlugin.INSTANCE.getString("_WARN_AddToResource")); } if (!result && !resourceInSet) { resource.unload(); resourceSet.getResources().remove(resource); } else { this.controlResource = resource; } return result; }