/**
*
*/
package org.feature.multi.perspective.model.editor.editors.listeners;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.eclipse.core.resources.IFile;
import org.eclipse.emf.common.ui.dialogs.WorkspaceResourceDialog;
import org.eclipse.emf.common.util.URI;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Composite;
import org.feature.multi.perspective.model.viewmodel.GroupModel;
import org.feature.multi.perspective.model.editor.editors.ViewmodelMappingFilter;
import org.feature.multi.perspective.model.editor.editors.ViewmodelMultiPageEditor;
/**
* Listener for the selection of the FeatureMapping.
*
* @author Tim Winkelmann
*
*/
public class ChooseFMSelectionListener implements SelectionListener {
Logger log = Logger.getLogger(ChooseFMSelectionListener.class);
private Composite parentComposite;
private ViewmodelMultiPageEditor mpe;
public ChooseFMSelectionListener(Composite composite, ViewmodelMultiPageEditor multiPageEditor) {
this.parentComposite = composite;
this.mpe = multiPageEditor;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt .events.SelectionEvent)
*/
@Override
public void widgetSelected(SelectionEvent e) {
// open FileDialog for workspace.
browseMapping();
}
/**
* opens a Dialog to choose a mapping.
*/
private void browseMapping() {
List<ViewerFilter> filters = new ArrayList<ViewerFilter>();
List<String> extensions = new ArrayList<String>();
extensions.add("mtext");
extensions.add("viewmapping");
GroupModel groupModel = mpe.getGroupModel();
ViewmodelMappingFilter filter = new ViewmodelMappingFilter(extensions, groupModel);
filters.add(filter);
IFile[] selectedFiles =
WorkspaceResourceDialog.openFileSelection(parentComposite.getShell(), "Choose mapping", "Please choose a mapping:", false, null,
filters);
if (selectedFiles.length > 0) {
String path = selectedFiles[0].getFullPath().toString();
log.debug(path);
URI uri = URI.createPlatformResourceURI(path, true);
mpe.setFeatureMapping(uri);
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse .swt.events.SelectionEvent)
*/
@Override
public void widgetDefaultSelected(SelectionEvent e) {}
}