/** * 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.core.runtime.Platform; 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.FileDialog; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import com.aptana.core.CoreStrings; import com.aptana.core.util.StringUtil; import com.aptana.ide.syncing.ui.SyncingUIPlugin; import com.aptana.ide.syncing.ui.preferences.IPreferenceConstants; /** * @author Michael Xia (mxia@appcelerator.com) */ public class ExportConnectionsPage extends WizardPage { private Text filePathText; private Button browseButton; private Button overwriteButton; protected ExportConnectionsPage() { super("exportConnections"); //$NON-NLS-1$ } public IPath getLocation() { return Path.fromOSString(filePathText.getText()); } public boolean isOverwritingExistingFile() { return overwriteButton.getSelection(); } public void createControl(Composite parent) { Composite main = new Composite(parent, SWT.NONE); main.setLayout(GridLayoutFactory.swtDefaults().numColumns(3).create()); Label label = new Label(main, SWT.NONE); label.setText(Messages.ExportConnectionsPage_LBL_File); filePathText = new Text(main, SWT.BORDER); filePathText.setText(Platform.getPreferencesService().getString(SyncingUIPlugin.PLUGIN_ID, IPreferenceConstants.EXPORT_INITIAL_PATH, StringUtil.EMPTY, null)); 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(main, SWT.PUSH); browseButton.setText(StringUtil.ellipsify(CoreStrings.BROWSE)); browseButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { browse(); } }); Group group = new Group(main, SWT.NONE); group.setLayout(GridLayoutFactory.swtDefaults().create()); group.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).span(3, 1).create()); group.setText(Messages.ExportConnectionsPage_LBL_Options); overwriteButton = new Button(group, SWT.CHECK); overwriteButton.setText(Messages.ExportConnectionsPage_LBL_OverwriteWithoutWarning); overwriteButton.setSelection(Platform.getPreferencesService().getBoolean(SyncingUIPlugin.PLUGIN_ID, IPreferenceConstants.EXPORT_OVEWRITE_FILE_WITHOUT_WARNING, false, null)); setTitle(Messages.ExportConnectionsPage_Title); setDescription(Messages.ExportConnectionsPage_Description); setControl(main); validate(); } private void browse() { FileDialog dialog = new FileDialog(getShell(), SWT.SAVE); String 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.ExportConnectionsPage_ERR_EmptyFile; } else { File file = new File(path); if (file.isDirectory()) { error = Messages.ExportConnectionsPage_ERR_Directory; } } setErrorMessage(error); setPageComplete(error == null); } }