blob: 215e240ffb3e6f6c0cdef42cb49c3220951b1181 [file] [log] [blame]
/*****************************************************************************
* Copyright (c) 2014 CEA LIST.
*
* 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:
* Quentin Le Menez (CEA LIST) quentin.lemenez@cea.fr - Initial API and implementation
* Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - bug 496176
*****************************************************************************/
package org.eclipse.papyrus.interoperability.common.wizard.pages;
import java.io.File;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.papyrus.infra.widgets.util.FileUtil;
import org.eclipse.papyrus.interoperability.common.Activator;
import org.eclipse.papyrus.interoperability.common.MigrationParameters.MigrationParametersFactory;
import org.eclipse.papyrus.interoperability.common.MigrationParameters.ThreadConfig;
import org.eclipse.papyrus.interoperability.common.wizard.TransformationWizardConstants;
/**
*
* Class containing the bulk of the wizard's data for an easy access throughout the wizard
*
* @author Quentin Le Menez
*
*/
public abstract class AbstractDialogData {
protected Collection<Object> selectedFiles;
protected Collection<Object> systemSelectedFiles;
protected Collection<Object> transformationFiles;
protected ThreadConfig config = MigrationParametersFactory.eINSTANCE.createThreadConfig();
protected Collection<String> unselectedFiles;
public IDialogSettings dialogSection;
protected Collection<Object> uncheckedFiles;
protected Collection<Object> importedProjects;
/**
*
* Constructor, instantiate the configuration file to store the user's selections, if none exist, or retrieve it
*
*/
public AbstractDialogData() {
// Necessary for storing and recalling the previous selections
dialogSection = Activator.getDefault().getDialogSettings().getSection(TransformationWizardConstants.TRANSFORMATION_WIZARD_SETTINGS);
if (dialogSection == null) {
dialogSection = Activator.getDefault().getDialogSettings().addNewSection(TransformationWizardConstants.TRANSFORMATION_WIZARD_SETTINGS);
}
systemSelectedFiles = new LinkedList<Object>();
}
/**
*
* @param selectedFiles
* The selected files from the workspace to be displayed in the transformation page
*/
public void setSelectedFiles(Collection<Object> selectedFiles) {
this.selectedFiles = selectedFiles;
}
/**
*
* @param selectedFiles
* The selected files outside of the workspace to be displayed in the transformation page
*/
public void setSystemSelectedFiles(Collection<String> systemPaths) {
for (String filePath : systemPaths) {
File file = new File(filePath);
if (file != null && !systemSelectedFiles.contains(file)) {
systemSelectedFiles.add(file);
}
}
}
/**
*
* @param transformationFiles
* The selected files in the configuration page to be transformed
*/
public void setTransformationFiles(Collection<Object> transformationFiles) {
this.transformationFiles = transformationFiles;
}
/**
*
* @return
* The default extensions used to filter the workspace
*/
public abstract String[] getExtensions();
/**
*
* @return
* The default extensions' name used to filter the workspace
*/
public abstract String[] getExtensionsNames();
/**
*
* @return
* The selected files from the workspace
*/
public Collection<Object> getSelectedFiles() {
return selectedFiles;
}
/**
*
* @return
* The selected files outside of the workspace
*/
public Collection<Object> getSystemSelectedFiles() {
return systemSelectedFiles;
}
/**
*
* @return
* The selected files from both workspace and outside selections
*/
public Collection<Object> getAllSelectedFiles() {
Collection<Object> allSelectedFiles = new LinkedList<Object>();
if (selectedFiles != null && selectedFiles.size() > 0) {
// TODO select only the files that are not already present in the selection done outside of the workspace
// Test
// for (Object object : selectedFiles) {
// if (!systemSelectedFiles.contains(object)) {
// allSelectedFiles.add(object);
// }
// }
// endTest
allSelectedFiles.addAll(selectedFiles);
}
// if (systemSelectedFiles != null && systemSelectedFiles.size() > 0) {
// allSelectedFiles.addAll(systemSelectedFiles);
// }
return allSelectedFiles;
}
/**
*
* @return
* The parameters used for the transformation
*/
public ThreadConfig getConfig() {
return config;
}
/**
*
* @return
* The selected files to be transformed
*/
public Collection<Object> getTransformationFiles() {
return transformationFiles;
}
/**
*
* @param uncheckedFiles
* The selected files to be ignored during the transformation
*/
public void setUncheckedFiles(Collection<Object> uncheckedFiles) {
this.uncheckedFiles = uncheckedFiles;
}
/**
*
* Sets or updates the projects to be imported in the workspace
*
* @param importedProjects
* The selcted projects
*/
public void setImportedProjects(Collection<Object> importedProjects) {
this.importedProjects = importedProjects;
}
/**
*
* @return
* The imported projects
*/
public Collection<Object> getImportedProjects() {
return this.importedProjects;
}
/**
*
* Update or create the selection map stored inside the configuration file in order to remember the previous selection choices
*
*/
public void setSelectionMap() {
// Retrieve or create the list of unselected elements
if (getUnSelectionArray() != null) {
unselectedFiles = new LinkedList<String>(Arrays.asList(getUnSelectionArray()));
}
else {
unselectedFiles = new LinkedList<String>();
}
// Updates the unselected files for future references
for (Object object : uncheckedFiles) {
if (object instanceof IFile) {
IFile ifile = (IFile) object;
String ifilePath = FileUtil.getPath(ifile, true);
if (!unselectedFiles.contains(ifilePath)) {
unselectedFiles.add(ifilePath);
}
}
if (object instanceof File) {
File file = (File) object;
String filePath = file.getAbsolutePath();
if (!unselectedFiles.contains(filePath)) {
unselectedFiles.add(filePath);
}
}
}
// Remove any newly selected files from the unselected files pool
for (Object object : transformationFiles) {
if (object instanceof IFile) {
IFile ifile = (IFile) object;
String ifilePath = FileUtil.getPath(ifile, true);
if (unselectedFiles.contains(ifilePath)) {
unselectedFiles.remove(ifilePath);
}
}
if (object instanceof File) {
File file = (File) object;
String filePath = file.getAbsolutePath();
if (unselectedFiles.contains(filePath)) {
unselectedFiles.remove(filePath);
}
}
}
// Update the map
dialogSection.put(TransformationWizardConstants.WIZARD_SELECTION_KEY, unselectedFiles.toArray(new String[unselectedFiles.size()]));
}
/**
*
* Used to set the checked state of the selected files inside the viewer
*
* @return
* The user's previously unchecked files in the configPage
*/
public String[] getUnSelectionArray() {
return dialogSection.getArray(TransformationWizardConstants.WIZARD_SELECTION_KEY);
}
}