/* ****************************************************************************** * Copyright (c) 2006-2012 XMind Ltd. and others. * * This file is a part of XMind 3. XMind releases 3 and * above are dual-licensed under the Eclipse Public License (EPL), * which is available at http://www.eclipse.org/legal/epl-v10.html * and the GNU Lesser General Public License (LGPL), * which is available at http://www.gnu.org/licenses/lgpl.html * See http://www.xmind.net/license.html for details. * * Contributors: * XMind Ltd. - initial API and implementation *******************************************************************************/ package org.xmind.ui.internal.wizards; import java.lang.reflect.InvocationTargetException; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import org.xmind.ui.internal.MindMapUIPlugin; import org.xmind.ui.mindmap.IMindMap; import org.xmind.ui.mindmap.IMindMapImages; import org.xmind.ui.mindmap.MindMapUI; import org.xmind.ui.wizards.AbstractMindMapExportPage; import org.xmind.ui.wizards.AbstractMindMapExportWizard; /** * * @author Karelun huang */ public class FreeMindExportWizard extends AbstractMindMapExportWizard { private static final String PAGE_NAME = "org.xmind.ui.export.freemindeExportWizard"; //$NON-NLS-1$ private static final String SELECTION_NAME = "org.xmind.ui.export.freemind"; //$NON-NLS-1$ private static final String FILE_EXT = ".mm"; //$NON-NLS-1$ private class FreeMindExportWizardPage extends AbstractMindMapExportPage { protected FreeMindExportWizardPage() { super(PAGE_NAME, WizardMessages.FreeMindPage_title); setDescription(WizardMessages.FreeMindPage_description); } protected FreeMindExportWizard getCastedWizard() { return (FreeMindExportWizard) super.getCastedWizard(); } public void createControl(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); layout.verticalSpacing = 15; composite.setLayout(layout); setControl(composite); Control fileGroup = createFileControls(composite); fileGroup.setLayoutData( new GridData(SWT.FILL, SWT.FILL, true, false)); } @Override protected void setDialogFilters(FileDialog dialog, List<String> filterNames, List<String> filterExtensions) { filterNames.add(0, WizardMessages.FreeMindPage_filterName); filterExtensions.add(0, "*" + FILE_EXT); //$NON-NLS-1$ super.setDialogFilters(dialog, filterNames, filterExtensions); } } private FreeMindExportWizardPage page; public FreeMindExportWizard() { setWindowTitle(WizardMessages.FreeMindWizard_windowTitle); setDialogSettings( MindMapUIPlugin.getDefault().getDialogSettings(SELECTION_NAME)); setDefaultPageImageDescriptor( MindMapUI.getImages().getWizBan(IMindMapImages.WIZ_EXPORT)); } protected void addValidPages() { addPage(page = new FreeMindExportWizardPage()); } @Override protected void doExport(IProgressMonitor monitor, Display display, Shell parentShell) throws InvocationTargetException, InterruptedException { MindMapUIPlugin.getDefault().getUsageDataCollector() .increase("ExportToFreeMindCount"); //$NON-NLS-1$ IMindMap mindMap = getSourceMindMap(); FreeMindExporter exporter = new FreeMindExporter(mindMap.getSheet(), getTargetPath()); monitor.beginTask(null, 100); exporter.setMonitor(new SubProgressMonitor(monitor, 99)); exporter.build(); launchTargetFile(true, monitor, display, parentShell); } @Override protected String getFormatName() { return WizardMessages.FreeMindWizard_formatName; } @Override protected boolean isExtensionCompatible(String path, String extension) { return super.isExtensionCompatible(path, extension) && FILE_EXT.equalsIgnoreCase(extension); } @Override protected void handleExportException(Throwable e) { super.handleExportException(e); page.setErrorMessage(e.getLocalizedMessage()); } @Override protected String getSuggestedFileName() { String fileName = super.getSuggestedFileName(); return fileName + FILE_EXT; } }