package dfatool.views;


import java.awt.Color;
import java.util.HashMap;
import java.util.Map;

import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.ISelectionService;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.*;

import dfatool.strategy.elements.Atom;
import dfatool.strategy.elements.Channel;
import dfatool.strategy.elements.Configuration;
import dfatool.strategy.elements.Datatype;
import dfatool.strategy.elements.Description;
import dfatool.strategy.elements.NamedElement;


public class AtomInfo extends InfoView {
	
	/**
	 * The ID of the view as specified by the extension.
	 */
	public static final String ID = "dfatool.views.AtomInfo";

	@Override
	protected void buttonAction(){
		Atom a = new Atom(fields.get("name").getText(), fields.get("behaviour").getText(),fields.get("alphabet").getText());
		Configuration.getInstance().getDescription().updateAtom(a);
		IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
		InfoView view = (InfoView) page.findView(viewId);
		page.activate(view);
		view.update();
	}


	@Override
	public Map<String, Integer> createFields() {
		HashMap<String, Integer> map = new HashMap<String,Integer>();
		map.put("name", SWT.SINGLE | SWT.BORDER);
		map.put("behaviour", SWT.MULTI | SWT.BORDER);
		map.put("alphabet", SWT.MULTI | SWT.BORDER);
		return map;
	}

	@Override
	protected void updateView(Object element) {
		if(element instanceof Atom){
			Atom a = (Atom) element;
			fields.get("name").setText(a.getName());
			fields.get("alphabet").setText(a.getAlphabet());
			fields.get("behaviour").setText(a.getBehaviour());
		}
		
	}
	



}