/**
* Aptana Studio
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the GNU Public License (GPL) v3 (with exceptions).
* Please see the license.html included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package com.aptana.syncing.ui.wizards;
import java.io.File;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import com.aptana.core.util.StringUtil;
/**
* @author Michael Xia (mxia@appcelerator.com)
*/
public class ImportConnectionsPage extends WizardPage
{
private Button workspaceButton;
private Button fileButton;
private Text filePathText;
private Button browseButton;
protected ImportConnectionsPage()
{
super("importConnections"); //$NON-NLS-1$
}
public boolean isWorkspaceSelected()
{
return workspaceButton.getSelection();
}
public IPath getLocation()
{
return Path.fromOSString(filePathText.getText());
}
public void createControl(Composite parent)
{
Composite main = new Composite(parent, SWT.NONE);
main.setLayout(GridLayoutFactory.swtDefaults().create());
Composite sourceType = new Composite(main, SWT.NONE);
sourceType.setLayout(GridLayoutFactory.fillDefaults().numColumns(3).create());
sourceType.setLayoutData(GridDataFactory.fillDefaults().create());
Label label = new Label(sourceType, SWT.NONE);
label.setText(Messages.ImportConnectionsPage_LBL_SourceType);
workspaceButton = new Button(sourceType, SWT.RADIO);
workspaceButton.setText(Messages.ImportConnectionsPage_SourceType_Workspace);
workspaceButton.setSelection(true);
SelectionAdapter selectionAdapter = new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
validate();
}
};
workspaceButton.addSelectionListener(selectionAdapter);
fileButton = new Button(sourceType, SWT.RADIO);
fileButton.setText(Messages.ImportConnectionsPage_SourceType_File);
fileButton.addSelectionListener(selectionAdapter);
Composite source = new Composite(main, SWT.NONE);
source.setLayout(GridLayoutFactory.swtDefaults().numColumns(3).create());
source.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());
label = new Label(source, SWT.NONE);
label.setText(Messages.ImportConnectionsPage_LBL_Path);
filePathText = new Text(source, SWT.BORDER);
filePathText
.setLayoutData(GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).create());
filePathText.addModifyListener(new ModifyListener()
{
public void modifyText(ModifyEvent e)
{
validate();
}
});
browseButton = new Button(source, SWT.PUSH);
browseButton.setText(StringUtil.ellipsify(com.aptana.core.CoreStrings.BROWSE));
browseButton.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
browse();
}
});
setTitle(Messages.ImportConnectionsPage_Title);
setDescription(Messages.ImportConnectionsPage_Description);
setControl(main);
validate();
}
private void browse()
{
String result = null;
if (workspaceButton.getSelection())
{
DirectoryDialog dialog = new DirectoryDialog(getShell());
result = dialog.open();
}
else
{
FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
result = dialog.open();
}
if (result != null)
{
filePathText.setText(result);
validate();
}
}
private void validate()
{
String error = null;
String path = filePathText.getText();
if (StringUtil.isEmpty(path))
{
error = Messages.ImportConnectionsPage_ERR_EmptyPath;
}
else
{
File file = new File(path);
if (!file.exists())
{
error = Messages.ImportConnectionsPage_ERR_InvalidPath;
}
else if (workspaceButton.getSelection() && !file.isDirectory())
{
error = Messages.ImportConnectionsPage_ERR_InvalidDirectory;
}
else if (fileButton.getSelection() && file.isDirectory())
{
error = Messages.ImportConnectionsPage_ERR_InvalidFile;
}
}
setErrorMessage(error);
setPageComplete(error == null);
}
}