/**
* Copyright (c) 2005-2006 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.exporter.ui.contribution.base;
import java.io.File;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.emf.common.ui.CommonUIPlugin;
import org.eclipse.emf.common.ui.dialogs.WorkspaceResourceDialog;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.converter.ui.contribution.base.ModelConverterURIPage;
import org.eclipse.emf.exporter.ExporterPlugin;
import org.eclipse.emf.exporter.ModelExporter;
/**
* @since 2.2.0
*/
public class ModelExporterDirectoryURIPage extends ModelConverterURIPage implements IModelExporterPage
{
public ModelExporterDirectoryURIPage(ModelExporter modelExporter, String pageName)
{
super(modelExporter, pageName);
setDescription(ExporterPlugin.INSTANCE.getString("_UI_ArtifactDirectory_description"));
}
public ModelExporter getModelExporter()
{
return (ModelExporter)getModelConverter();
}
@Override
public boolean isPageComplete()
{
return super.isPageComplete()
&& getModelExporter().getDirectoryURI()!= null;
}
@Override
protected String getURITextLabel()
{
return ExporterPlugin.INSTANCE.getString("_UI_ArtifactDirectoryURI_label");
}
@Override
protected String getURITextInitialValue()
{
URI uri = getModelExporter().getDirectoryURI();
return uri == null ? super.getURITextInitialValue() : uri.toString();
}
@Override
protected void uriTextModified(String text)
{
if (text.length() == 0)
{
setErrorMessage(ExporterPlugin.INSTANCE.getString("_UI_DirectoryURI_error"));
}
else
{
Diagnostic diagnostic = getModelExporter().validateDirectoryURI(text);
if (diagnostic.getSeverity() == Diagnostic.OK)
{
getModelExporter().setDirectoryURI(text);
if (getErrorMessage() != null)
{
handleDiagnostic(diagnostic);
}
}
else
{
getModelExporter().setDirectoryURI((URI)null);
if (getErrorMessage() == null)
{
handleDiagnostic(diagnostic);
}
}
}
}
@Override
protected boolean browseFileSystem()
{
DirectoryDialog directoryDialog = new DirectoryDialog(getShell(), SWT.NONE);
directoryDialog.setText(CommonUIPlugin.INSTANCE.getString("_UI_FolderSelection_title"));
URI uri = getModelExporter().getDirectoryURI();
if (uri != null)
{
directoryDialog.setFilterPath(uri.toFileString());
}
String directory = directoryDialog.open();
if (directory != null)
{
setDirectory(directory, false);
return true;
}
return false;
}
@Override
protected boolean browseWorkspace()
{
IResource initialFolderResource = null;
URI uri = getModelExporter().getDirectoryURI();
if (uri != null)
{
if (uri.isPlatformResource())
{
String initialFolder = uri.toPlatformString(true);
initialFolderResource = ResourcesPlugin.getWorkspace().getRoot().findMember(new Path(initialFolder));
}
}
IContainer[] containers = WorkspaceResourceDialog.openFolderSelection(
getShell(),
null, null,
false, new Object[]{initialFolderResource}, null);
if (containers.length == 1)
{
setDirectory(containers[0].getFullPath().toString(), true);
return true;
}
return false;
}
protected void setDirectory(String directory, boolean platformURI)
{
if (!directory.endsWith(File.separator))
{
directory = directory + File.separator;
}
if (platformURI)
{
getModelExporter().setDirectoryURI(URI.createPlatformResourceURI(directory, true));
}
else
{
getModelExporter().setDirectoryURI(URI.createFileURI(directory));
}
setURIText(getModelExporter().getDirectoryURI().toString());
}
}