Java tutorial
/******************************************************************************* * Copyright (c) 2010 EclipseSource 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: * Chris Aniszczyk <caniszczyk@gmail.com> - initial API and implementation * Ian Bull <irbull@eclipsesource.com> - initial API and implementation *******************************************************************************/ package com.siteview.mde.internal.ui.wizards.exports; import java.io.File; import java.io.IOException; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.wizard.WizardPage; import com.siteview.mde.internal.core.target.provisional.ITargetDefinition; import com.siteview.mde.internal.ui.*; import org.eclipse.swt.SWT; import org.eclipse.swt.events.*; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.eclipse.ui.PlatformUI; public class TargetDefinitionExportWizardPage extends WizardPage { private static final String PAGE_ID = "org.eclipse.pde.target.exportPage"; //$NON-NLS-1$ private Button fBrowseButton = null; private Combo fDestinationCombo = null; private Button fClearDestinationButton = null; private ITargetDefinition fTarget = null; /** * Dialog settings key for the most recent location */ private static final String SETTINGS_LOCATION_1 = "location1"; //$NON-NLS-1$ /** * Dialog settings key for the second most recent location */ private static final String SETTINGS_LOCATION_2 = "location2"; //$NON-NLS-1$ /** * Dialog settings key for the third most recent location */ private static final String SETTINGS_LOCATION_3 = "location3"; //$NON-NLS-1$ /** * Dialog settings key for whether the clear the destination directory */ private static final String SETTINGS_CLEAR = "clear"; //$NON-NLS-1$ protected TargetDefinitionExportWizardPage(ITargetDefinition target) { super(PAGE_ID); fTarget = target; setPageComplete(false); setTitle(MDEUIMessages.ExportActiveTargetDefinition); setMessage(MDEUIMessages.ExportActiveTargetDefinition_message); } public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(1, false); container.setLayout(layout); createExportDirectoryControl(container); setControl(container); Dialog.applyDialogFont(container); PlatformUI.getWorkbench().getHelpSystem().setHelp(container, IHelpContextIds.TARGET_EXPORT_WIZARD); } private void createExportDirectoryControl(Composite parent) { parent.setLayout(new GridLayout(3, false)); parent.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); new Label(parent, SWT.NONE).setText(MDEUIMessages.ExportTargetCurrentTarget); Label l = new Label(parent, SWT.NONE); l.setText(fTarget.getName()); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 2; l.setLayoutData(gd); new Label(parent, SWT.NONE).setText(MDEUIMessages.ExportTargetChooseFolder); fDestinationCombo = SWTFactory.createCombo(parent, SWT.BORDER, 1, null); fDestinationCombo.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { controlChanged(); } }); fBrowseButton = new Button(parent, SWT.PUSH); fBrowseButton.setText(MDEUIMessages.ExportTargetBrowse); fBrowseButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { DirectoryDialog dialog = new DirectoryDialog(getShell()); dialog.setText(MDEUIMessages.ExportTargetSelectDestination); dialog.setMessage(MDEUIMessages.ExportTargetSpecifyDestination); String dir = fDestinationCombo.getText(); dialog.setFilterPath(dir); dir = dialog.open(); if (dir == null || dir.equals("")) { //$NON-NLS-1$ return; } fDestinationCombo.setText(dir); controlChanged(); } }); fClearDestinationButton = new Button(parent, SWT.CHECK); fClearDestinationButton.setText(MDEUIMessages.ExportTargetClearDestination); gd = new GridData(); gd.horizontalSpan = 2; gd.horizontalIndent = 15; fClearDestinationButton.setLayoutData(gd); initSettings(); } public String getDestinationDirectory() { return fDestinationCombo.getText(); } public boolean isClearDestinationDirectory() { return fClearDestinationButton.getSelection(); } public void controlChanged() { setPageComplete(validate()); } protected boolean validate() { setMessage(null); if (fDestinationCombo.getText().equals("")) { //$NON-NLS-1$ setErrorMessage(MDEUIMessages.ExportTargetError_ChooseDestination); return false; } else if (!isValidLocation(fDestinationCombo.getText().trim())) { setErrorMessage(MDEUIMessages.ExportTargetError_validPath); return false; } setErrorMessage(null); return true; } public void storeSettings() { IDialogSettings settings = getDialogSettings(); if (settings != null) { settings.put(SETTINGS_CLEAR, fClearDestinationButton.getSelection()); String newLocation = fDestinationCombo.getText().trim(); if (newLocation.charAt(newLocation.length() - 1) == File.separatorChar) { newLocation = newLocation.substring(0, newLocation.length() - 1); } String[] items = fDestinationCombo.getItems(); for (int i = 0; i < items.length; i++) { if (items[i].equals(newLocation)) { // Already have this location stored return; } } String location = settings.get(SETTINGS_LOCATION_2); if (location != null) { settings.put(SETTINGS_LOCATION_3, location); } location = settings.get(SETTINGS_LOCATION_1); if (location != null) { settings.put(SETTINGS_LOCATION_2, location); } settings.put(SETTINGS_LOCATION_1, newLocation); } } private void initSettings() { IDialogSettings settings = getDialogSettings(); if (settings != null) { fClearDestinationButton.setSelection(settings.getBoolean(SETTINGS_CLEAR)); String location = settings.get(SETTINGS_LOCATION_1); if (location != null) { fDestinationCombo.add(location); } location = settings.get(SETTINGS_LOCATION_2); if (location != null) { fDestinationCombo.add(location); } location = settings.get(SETTINGS_LOCATION_3); if (location != null) { fDestinationCombo.add(location); } if (fDestinationCombo.getItemCount() > 0) { fDestinationCombo.setText(fDestinationCombo.getItem(0)); } } } protected boolean isValidLocation(String location) { try { String destinationPath = new File(location).getCanonicalPath(); if (destinationPath == null || destinationPath.length() == 0) return false; } catch (IOException e) { return false; } return true; } }