/* ****************************************************************************** * 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.io.File; import java.lang.reflect.InvocationTargetException; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; 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.core.IWorkbook; import org.xmind.core.util.FileUtils; import org.xmind.gef.ui.editor.IGraphicalEditor; import org.xmind.ui.internal.MindMapUIPlugin; import org.xmind.ui.mindmap.IMindMapImages; import org.xmind.ui.mindmap.IWorkbookRef; import org.xmind.ui.mindmap.MindMapUI; import org.xmind.ui.wizards.AbstractMindMapExportPage; import org.xmind.ui.wizards.AbstractMindMapExportWizard; public class XMind2008ExportWizard extends AbstractMindMapExportWizard { private static final String DIALOG_SETTINGS_SECTION_ID = "org.xmind.ui.export.xmind2008"; //$NON-NLS-1$ private static final String PAGE_NAME = "htmlExportPage"; //$NON-NLS-1$ private static final String FILE_EXT = ".xmap"; //$NON-NLS-1$ private static final String FILTER = "*" + FILE_EXT; //$NON-NLS-1$ private class XMind2008ExportPage extends AbstractMindMapExportPage { /** * @param pageName * @param title */ public XMind2008ExportPage() { super(PAGE_NAME, WizardMessages.XMind2008ExportPage_title); } /* * (non-Javadoc) * * @see * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt * .widgets.Composite) */ 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)); } /* * (non-Javadoc) * * @see * org.xmind.ui.wizards.AbstractExportPage#setDialogFilters(org.eclipse * .swt.widgets.FileDialog, java.util.List, java.util.List) */ @Override protected void setDialogFilters(FileDialog dialog, List<String> filterNames, List<String> filterExtensions) { filterNames.add(0, WizardMessages.XMind2008ExportPage_filterName); filterExtensions.add(0, FILTER); super.setDialogFilters(dialog, filterNames, filterExtensions); } } private IWorkbook sourceWorkbook; private XMind2008ExportPage page; public XMind2008ExportWizard() { setWindowTitle(WizardMessages.XMind2008ExportWizard_windowTitle); setDefaultPageImageDescriptor( MindMapUI.getImages().getWizBan(IMindMapImages.WIZ_EXPORT)); setDialogSettings(MindMapUIPlugin.getDefault() .getDialogSettings(DIALOG_SETTINGS_SECTION_ID)); } /* * (non-Javadoc) * * @see * org.xmind.ui.wizards.AbstractMindMapExportWizard#setSourceEditor(org. * xmind.gef.ui.editor.IGraphicalEditor) */ @Override public void setSourceEditor(IGraphicalEditor sourceEditor) { super.setSourceEditor(sourceEditor); this.sourceWorkbook = findWorkbook(sourceEditor); } /* * (non-Javadoc) * * @see org.xmind.ui.wizards.AbstractMindMapExportWizard#hasSource() */ @Override public boolean hasSource() { return getSourceEditor() != null && sourceWorkbook != null; } /** * @param editor * @return */ private IWorkbook findWorkbook(IGraphicalEditor editor) { if (editor == null) return null; return (IWorkbook) editor.getAdapter(IWorkbook.class); } protected void addValidPages() { addPage(page = new XMind2008ExportPage()); } protected void handleExportException(Throwable e) { super.handleExportException(e); page.setErrorMessage(e.getLocalizedMessage()); } protected String getFormatName() { return WizardMessages.XMind2008ExportWizard_formatName; } /* * (non-Javadoc) * * @see * org.xmind.ui.wizards.AbstractMindMapExportWizard#doExport(org.eclipse * .core.runtime.IProgressMonitor, org.eclipse.swt.widgets.Display, * org.eclipse.swt.widgets.Shell) */ protected void doExport(IProgressMonitor monitor, Display display, Shell parentShell) throws InvocationTargetException, InterruptedException { MindMapUIPlugin.getDefault().getUsageDataCollector() .increase("ExportToXMind2008Count"); //$NON-NLS-1$ XMind2008Exporter exporter = new XMind2008Exporter(sourceWorkbook, getTargetPath()); exporter.setMonitor(monitor); exporter.export(); } @Override protected String getSuggestedFileName() { String suggestedName = null; IGraphicalEditor editor = getSourceEditor(); IWorkbookRef workbookRef = editor.getAdapter(IWorkbookRef.class); if (workbookRef != null) { suggestedName = workbookRef.getName(); } if (suggestedName == null) { suggestedName = getSourceEditor().getTitle(); } return FileUtils.getNoExtensionFileName( new File(suggestedName).getName()) + FILE_EXT; } }