/*******************************************************************************
 * Copyright (c) 2015 MINRES Technologies GmbH 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:
 *     MINRES Technologies GmbH - initial API and implementation
 *******************************************************************************/
package com.minres.scviewer.e4.application.handlers;

import java.io.File;

import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;

import com.minres.scviewer.e4.application.Messages;
public class OpenHandler {

	@Execute
	public void execute(Shell shell, MApplication app, EModelService modelService, EPartService partService){
		FileDialog dialog = new FileDialog(shell, SWT.OPEN | SWT.MULTI);
//		dialog.setFilterExtensions (new String []{"vcd", "txdb", "txlog"});
		dialog.setFilterExtensions (new String []{Messages.OpenHandler_0});
		dialog.open();
		String path = dialog.getFilterPath();
		for(String fileName: dialog.getFileNames()){
			File file = new File(path+File.separator+fileName);
			if(file.exists()){
//				MPart part = MBasicFactory.INSTANCE.createPart();
//				part.setLabel(fileName);
//				part.setContributionURI("bundleclass://com.minres.scviewer.e4.application/"+ WaveformViewerPart.class.getName());
				MPart part = partService .createPart("com.minres.scviewer.e4.application.partdescriptor.waveformviewer"); //$NON-NLS-1$
				part.setLabel(file.getName());
								

				MPartStack partStack = (MPartStack)modelService.find("org.eclipse.editorss", app); //$NON-NLS-1$
				partStack.getChildren().add(part);
				partService.showPart(part, PartState.ACTIVATE);
//				Object o = part.getObject();
//				if(o instanceof WaveformViewerPart)
//					((WaveformViewerPart)o).setPartInput(file);
				IEclipseContext ctx=part.getContext();
				ctx.modify("input", file); //$NON-NLS-1$
				ctx.declareModifiable("input"); //$NON-NLS-1$

				
			}
		}
	}
	
}
