added a new feature to import ecore models directly into the runtime registry

# Conflicts:
#	eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/report/ClassInfoReportGenerator.java
#	eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/MetaModelExplorerView.java
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/register_ecores.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/register_ecores.png
new file mode 100644
index 0000000..28c2175
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/register_ecores.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/RegisterECOREfilesAction.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/RegisterECOREfilesAction.java
new file mode 100644
index 0000000..bc2d78d
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/RegisterECOREfilesAction.java
@@ -0,0 +1,114 @@
+package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
+import org.eclipse.jface.viewers.ComboViewer;
+
+public class RegisterECOREfilesAction {
+
+	@SuppressWarnings({ "unused", "rawtypes", "unchecked" })
+	public static ResourceSet loadECOREs(List<String> ecoreFiles, ComboViewer combo_ecore) throws IOException {
+		
+		final Registry master_ePackageRegistry = EPackage.Registry.INSTANCE;
+		
+		System.out.println(master_ePackageRegistry.size());
+		
+		ResourceSet metaDataResourceSet = new ResourceSetImpl();
+
+		if(metaDataResourceSet instanceof ResourceSetImpl){
+			((ResourceSetImpl) metaDataResourceSet).setURIResourceMap(new HashMap<>());
+		}
+		Map<String, Object> extensionToFactoryMap = metaDataResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap();
+
+		extensionToFactoryMap.put("ecore", new EcoreResourceFactoryImpl());
+
+//		extensionToFactoryMap.put("xmi", new XMIResourceFactoryImpl());
+		
+		// resourceSet.getURIConverter().getURIMap().putAll(EcorePlugin.computePlatformURIMap(true));
+
+		EcorePackage ecorePackage = EcorePackage.eINSTANCE;
+
+		// register Ecore model in resourceSet registry
+		Map packageRegistry = metaDataResourceSet.getPackageRegistry();
+		
+		  packageRegistry.put("http://www.eclipse.org/emf/2002/Ecore",
+				  EcorePackage.eINSTANCE);
+		
+
+		for (String ecorePath : ecoreFiles) {
+
+			EPackage loadEPackage = loadEPackage(ecorePath, metaDataResourceSet);
+
+			if(packageRegistry.containsKey(loadEPackage.getNsURI())){
+				Object object = packageRegistry.get(loadEPackage.getNsURI());
+				
+				if(object instanceof EPackage){
+					((EPackage)object).getESubpackages().add(loadEPackage);
+				}
+			}else{
+				packageRegistry.put(loadEPackage.getNsURI(), loadEPackage);
+				
+			}
+			
+//			master_ePackageRegistry.put(loadEPackage.getNsURI(), loadEPackage);
+
+		}
+
+		EcoreUtil.resolveAll(metaDataResourceSet);
+
+		/*-for sorting */
+		
+		ArrayList arrayList = new ArrayList(master_ePackageRegistry.keySet());
+
+		Collections.sort(arrayList);
+		
+		arrayList.addAll(0, metaDataResourceSet.getPackageRegistry().keySet());
+		
+		master_ePackageRegistry.putAll(metaDataResourceSet.getPackageRegistry());
+		
+		
+		combo_ecore.setInput(arrayList.toArray());
+		
+		
+		return metaDataResourceSet;
+	}
+	
+	private static EPackage loadEPackage(String path,  ResourceSet metaResourceSet) throws IOException { 
+
+
+//		path = path.contains("file:////") ? path : "file:////" + getCanonicalPathFullPath(path);
+		path =  getCanonicalPathFullPath(path);
+
+//		Resource metaResource = metaResourceSet.getResource(URI.createURI(path), true);
+		Resource metaResource = metaResourceSet.getResource(URI.createFileURI(path), true);
+
+		metaResource.load(Collections.EMPTY_MAP);
+
+		EObject eObject = metaResource.getContents().get(0);
+
+		return (EPackage) eObject;
+	
+	}
+	
+	private static String getCanonicalPathFullPath(String path) throws IOException {
+
+		File file = new File(path);
+		return file.getCanonicalPath();
+	}
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/MetaModelExplorerView.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/MetaModelExplorerView.java
index 23413b4..b2dee70 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/MetaModelExplorerView.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/MetaModelExplorerView.java
@@ -10,16 +10,19 @@
  *******************************************************************************/
 package org.eclipse.app4mc.emfutils.metamodelviewer.views;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
-import java.util.TreeSet;
 
 import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
 import org.eclipse.app4mc.emfutils.metamodelviewer.dialogs.SelectedElementContentDialog;
 import org.eclipse.app4mc.emfutils.metamodelviewer.preferences.MetaModelViewerPreferenceConstants;
 import org.eclipse.app4mc.emfutils.metamodelviewer.utils.ElementSearchPatternFilter;
 import org.eclipse.app4mc.emfutils.metamodelviewer.utils.PluginUtils;
+import org.eclipse.app4mc.emfutils.metamodelviewer.utils.RegisterECOREfilesAction;
 import org.eclipse.app4mc.emfutils.metamodelviewer.views.providers.ViewContentProvider;
 import org.eclipse.app4mc.emfutils.metamodelviewer.views.providers.ViewLabelProvider;
 import org.eclipse.emf.ecore.EObject;
@@ -33,9 +36,13 @@
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
 import org.eclipse.jface.viewers.DoubleClickEvent;
 import org.eclipse.jface.viewers.IDoubleClickListener;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.sphinx.emf.metamodel.IMetaModelDescriptor;
@@ -47,6 +54,8 @@
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Shell;
@@ -58,363 +67,405 @@
 
 
 public class MetaModelExplorerView extends ViewPart {
+    /**
+     * The ID of the view as specified by the extension.
+     */
+    public static final String ID = "org.eclipse.app4mc.emfutils.metamodelviewer.views.MetaModel-ExplorerView";
+    private static int id_Counter = 1;
+    private TreeViewer viewer;
+    private Action filterClassesAction;
+    private Action registerEcoreFilesAction;
+    private Action filterAttributesAction;
+    private Action cloneViewAction;
+    private boolean filterForEClassifiersBoolean = true;
+    private boolean filterForAttributesBoolean;
+    private ElementSearchPatternFilter patternFilter;
+    private ComboViewer combo_ecore;
 
-	/**
-	 * The ID of the view as specified by the extension.
-	 */
-	public static final String ID = "org.eclipse.app4mc.emfutils.metamodelviewer.views.MetaModel-ExplorerView";
+    /**
+     * The constructor.
+     */
+    public MetaModelExplorerView() {
+    }
 
-	private TreeViewer viewer;
+    /**
+     * This is a callback that will allow us to create the viewer and initialize it.
+     */
+    @Override
+    public void createPartControl(final Composite parent) {
+        parent.setLayout(new GridLayout(2, false));
 
-	private Action filterClassesAction;
+        final Label label = new Label(parent, 0);
 
-	private Action filterAttributesAction;
+        label.setText("SPHINX Registry");
 
-	private Action cloneViewAction;
+        label.setLayoutData(new GridData());
 
-	private boolean filterForEClassifiersBoolean = true;
+        final Combo combo = new Combo(parent,
+                SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
 
-	private boolean filterForAttributesBoolean;
+        final Label label_ecore = new Label(parent, 0);
 
-	private ElementSearchPatternFilter patternFilter;
+        label_ecore.setText("ECORE Registry");
 
-	private static int id_Counter=1;
+        label_ecore.setLayoutData(new GridData());
 
-	/**
-	 * The constructor.
-	 */
-	public MetaModelExplorerView() {
-	}
+        combo_ecore = new ComboViewer(parent,
+                SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
 
-	/**
-	 * This is a callback that will allow us to create the viewer and initialize it.
-	 */
-	@Override
-	public void createPartControl(final Composite parent) {
+        final Registry ePackageRegistry = EPackage.Registry.INSTANCE;
 
-		parent.setLayout(new GridLayout(2, false));
+        final Set<String> keySet = ePackageRegistry.keySet();
+        //		for (final String string : new TreeSet<String>(keySet)) {
+        //			
+        //			combo_ecore.add(string);
+        //		}
+        combo_ecore.setContentProvider(ArrayContentProvider.getInstance());
+        combo_ecore.setLabelProvider(new LabelProvider() {
+                @Override
+                public String getText(Object element) {
+                    return super.getText(element);
+                }
+            });
 
-		final Label label = new Label(parent, 0);
+        ArrayList<String> arrayList = new ArrayList<String>(keySet);
 
-		label.setText("SPHINX Registry");
+        Collections.sort(arrayList);
 
-		label.setLayoutData(new GridData());
+        combo_ecore.setInput(arrayList.toArray());
 
-		final Combo combo = new Combo(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
+        combo_ecore.getCombo().addSelectionListener(new SelectionAdapter() {
+                @Override
+                public void widgetSelected(final SelectionEvent e) {
+                    combo.deselectAll();
 
-		final Label label_ecore = new Label(parent, 0);
+                    final String text = combo_ecore.getCombo().getText();
 
-		label_ecore.setText("ECORE Registry");
+                    final EPackage ePackage = ePackageRegistry.getEPackage(text);
 
-		label_ecore.setLayoutData(new GridData());
+                    getViewer().setInput(ePackage);
+                }
+            });
 
-		final Combo combo_ecore = new Combo(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
+        final List<IMetaModelDescriptor> descriptors = MetaModelDescriptorRegistry.INSTANCE.getDescriptors(MetaModelDescriptorRegistry.ANY_MM);
 
-		final Registry ePackageRegistry = EPackage.Registry.INSTANCE;
+        for (final IMetaModelDescriptor iMetaModelDescriptor : descriptors) {
+            final String identifier = iMetaModelDescriptor.getIdentifier();
+            combo.add(identifier);
+        }
 
-		final Set<String> keySet = ePackageRegistry.keySet();
+        combo.addSelectionListener(new SelectionAdapter() {
+                @Override
+                public void widgetSelected(final SelectionEvent e) {
+                    combo_ecore.getCombo().deselectAll();
 
-		for (final String string : new TreeSet<String>(keySet)) {
+                    final String text = combo.getText();
 
-			combo_ecore.add(string);
-		}
+                    final IMetaModelDescriptor descriptor = MetaModelDescriptorRegistry.INSTANCE.getDescriptor(text);
 
+                    getViewer().setInput(descriptor);
+                }
+            });
 
-		combo_ecore.addSelectionListener(new SelectionAdapter() {
-			@Override
-			public void widgetSelected(final SelectionEvent e) {
+        this.patternFilter = new ElementSearchPatternFilter(this.filterForEClassifiersBoolean,
+                this.filterForAttributesBoolean);
 
-				combo.deselectAll();
+        final FilteredTree filteredTree = new FilteredTree(parent,
+                SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
+                this.patternFilter, true);
 
+        filteredTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true,
+                2, 0));
 
-				final String text = combo_ecore.getText();
+        this.viewer = filteredTree.getViewer();
 
-				final EPackage ePackage = ePackageRegistry.getEPackage(text);
+        final GridData gridLayoutData = new GridData();
+        gridLayoutData.horizontalSpan = 2;
+        gridLayoutData.grabExcessHorizontalSpace = true;
+        gridLayoutData.grabExcessVerticalSpace = true;
+        gridLayoutData.horizontalAlignment = GridData.FILL;
+        gridLayoutData.verticalAlignment = GridData.FILL;
 
-				getViewer().setInput(ePackage);
+        this.viewer.getTree()
+                   .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true,
+                2, 0));
 
-			}
-		});
+        this.viewer.setContentProvider(new ViewContentProvider());
 
+        this.viewer.setInput(getViewSite());
 
-		final List<IMetaModelDescriptor> descriptors = MetaModelDescriptorRegistry.INSTANCE
-				.getDescriptors(MetaModelDescriptorRegistry.ANY_MM);
+        this.viewer.setLabelProvider(new ViewLabelProvider());
 
+        getSite().setSelectionProvider(this.viewer);
 
-		for (final IMetaModelDescriptor iMetaModelDescriptor : descriptors) {
+        makeActions();
 
-			final String identifier = iMetaModelDescriptor.getIdentifier();
-			combo.add(identifier);
-		}
+        hookContextMenu();
 
-		combo.addSelectionListener(new SelectionAdapter() {
-			@Override
-			public void widgetSelected(final SelectionEvent e) {
+        hookDoubleClickAction();
 
-				combo_ecore.deselectAll();
+        contributeToActionBars();
+    }
 
-				final String text = combo.getText();
+    public TreeViewer getViewer() {
+        return this.viewer;
+    }
 
-				final IMetaModelDescriptor descriptor = MetaModelDescriptorRegistry.INSTANCE.getDescriptor(text);
+    private void hookContextMenu() {
+        final MenuManager menuMgr = new MenuManager("#PopupMenu") {
+                @Override
+                public IContributionItem[] getItems() {
+                    IContributionItem[] menuItems = super.getItems();
 
-				getViewer().setInput(descriptor);
+                    final List<IContributionItem> filteredContributionItems = new LinkedList<IContributionItem>();
 
-			}
-		});
+                    for (final IContributionItem contributionItem : menuItems) {
+                        if ((contributionItem != null) &&
+                                ((contributionItem.getId() != null) &&
+                                (!(contributionItem.getId()
+                                                       .startsWith("org.eclipse.emf.ecore.editor.CreateDynamicInstance"))))) {
+                            filteredContributionItems.add(contributionItem);
+                        }
+                    }
 
+                    menuItems = new IContributionItem[filteredContributionItems.size()];
 
-		this.patternFilter = new ElementSearchPatternFilter(this.filterForEClassifiersBoolean,
-				this.filterForAttributesBoolean);
+                    return filteredContributionItems.toArray(menuItems);
+                }
+            };
 
-		final FilteredTree filteredTree = new FilteredTree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
-				this.patternFilter, true);
+        menuMgr.setRemoveAllWhenShown(true);
+        menuMgr.addMenuListener(new IMenuListener() {
+                @Override
+                public void menuAboutToShow(final IMenuManager manager) {
+                    MetaModelExplorerView.this.fillContextMenu(manager);
+                }
+            });
 
-		filteredTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 0));
+        final Menu menu = menuMgr.createContextMenu(this.viewer.getControl());
+        this.viewer.getControl().setMenu(menu);
+        getSite().registerContextMenu(menuMgr, this.viewer);
+    }
 
-		this.viewer = filteredTree.getViewer();
+    private void contributeToActionBars() {
+        final IActionBars bars = getViewSite().getActionBars();
+        fillLocalPullDown(bars.getMenuManager());
+        fillLocalToolBar(bars.getToolBarManager());
+    }
 
-		final GridData gridLayoutData = new GridData();
-		gridLayoutData.horizontalSpan = 2;
-		gridLayoutData.grabExcessHorizontalSpace = true;
-		gridLayoutData.grabExcessVerticalSpace = true;
-		gridLayoutData.horizontalAlignment = GridData.FILL;
-		gridLayoutData.verticalAlignment = GridData.FILL;
+    private void fillLocalPullDown(final IMenuManager manager) {
+        manager.add(this.filterClassesAction);
+        manager.add(new Separator());
+        manager.add(this.filterAttributesAction);
+        manager.add(new Separator());
+        manager.add(this.cloneViewAction);
+    }
 
-		this.viewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 0));
+    void fillContextMenu(final IMenuManager manager) {
+        // manager.add(this.filterClassesAction);
+        // manager.add(this.filterAttributesAction);
+        // manager.add(new Separator());
+        // this.drillDownAdapter.addNavigationActions(manager);
+        // Other plug-ins can contribute there actions here
+        // manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+    }
 
-		this.viewer.setContentProvider(new ViewContentProvider());
+    private void fillLocalToolBar(final IToolBarManager manager) {
+        manager.add(this.filterClassesAction);
+        manager.add(this.filterAttributesAction);
+        manager.add(new Separator());
 
-		this.viewer.setInput(getViewSite());
+        manager.add(this.registerEcoreFilesAction);
+    }
 
-		this.viewer.setLabelProvider(new ViewLabelProvider());
+    private void makeActions() {
+        this.filterClassesAction = new Action("Filter for EClassifers",
+                IAction.AS_CHECK_BOX) {
+                    @Override
+                    public void run() {
+                        if (isChecked()) {
+                            setFilterForEClassifiersBoolean(true);
+                        } else {
+                            setFilterForEClassifiersBoolean(false);
+                        }
+                    }
+                };
 
-		getSite().setSelectionProvider(this.viewer);
+        this.filterClassesAction.setEnabled(true);
 
-		makeActions();
+        this.filterClassesAction.setToolTipText("Filter for EClassifiers");
+        this.filterClassesAction.setImageDescriptor(PluginUtils.getImageDescriptor(
+                "icons/class_obj.png"));
 
-		hookContextMenu();
+        this.filterAttributesAction = new Action("Filter for Attributes",
+                IAction.AS_CHECK_BOX) {
+                    @Override
+                    public void run() {
+                        if (isChecked()) {
+                            setFilterForAttributesBoolean(true);
+                        } else {
+                            setFilterForAttributesBoolean(false);
+                        }
+                    }
+                };
+        this.filterAttributesAction.setToolTipText("Filter for Attributes");
+        this.filterAttributesAction.setImageDescriptor(PluginUtils.getImageDescriptor(
+                "icons/prop_ps.gif"));
 
-		hookDoubleClickAction();
+        this.cloneViewAction = new Action("Clone View", IAction.AS_CHECK_BOX) {
+                    @Override
+                    public void run() {
+                        try {
+                            getViewSite().getPage()
+                                .showView(ID, id_Counter++ + "",
+                                IWorkbenchPage.VIEW_VISIBLE);
+                        } catch (PartInitException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                };
+        this.cloneViewAction.setToolTipText("Clone View");
+        this.cloneViewAction.setImageDescriptor(PluginUtils.getImageDescriptor(
+                "icons/prop_ps.gif"));
+                         
 
-		contributeToActionBars();
-	}
+        this.registerEcoreFilesAction = new Action("Register ECORE files") {
+                    @Override
+                    public void run() {
+                        //TODO: add implementation for CSV report generation
+                        Object input = viewer.getInput();
 
+                        FileDialog dialog = new FileDialog(Display.getDefault()
+                                                                  .getActiveShell(),
+                                SWT.OPEN | SWT.MULTI);
 
-	public TreeViewer getViewer() {
-		return this.viewer;
-	}
-
-	private void hookContextMenu() {
-		final MenuManager menuMgr = new MenuManager("#PopupMenu") {
-			@Override
-			public IContributionItem[] getItems() {
-
-				IContributionItem[] menuItems = super.getItems();
-
-				final List<IContributionItem> filteredContributionItems = new LinkedList<IContributionItem>();
-
-				for (final IContributionItem contributionItem : menuItems) {
-					if (contributionItem != null && (contributionItem.getId() != null && (!(contributionItem.getId()
-							.startsWith("org.eclipse.emf.ecore.editor.CreateDynamicInstance"))))) {
-						filteredContributionItems.add(contributionItem);
-					}
-				}
-				menuItems = new IContributionItem[filteredContributionItems.size()];
-				return filteredContributionItems.toArray(menuItems);
-
-			}
-		};
-		menuMgr.setRemoveAllWhenShown(true);
-		menuMgr.addMenuListener(new IMenuListener() {
-			@Override
-			public void menuAboutToShow(final IMenuManager manager) {
-				MetaModelExplorerView.this.fillContextMenu(manager);
-			}
-		});
-		final Menu menu = menuMgr.createContextMenu(this.viewer.getControl());
-		this.viewer.getControl().setMenu(menu);
-		getSite().registerContextMenu(menuMgr, this.viewer);
-	}
-
-	private void contributeToActionBars() {
-		final IActionBars bars = getViewSite().getActionBars();
-		fillLocalPullDown(bars.getMenuManager());
-		fillLocalToolBar(bars.getToolBarManager());
-	}
-
-	private void fillLocalPullDown(final IMenuManager manager) {
-		manager.add(this.filterClassesAction);
-		manager.add(new Separator());
-		manager.add(this.filterAttributesAction);
-		manager.add(new Separator());
-		manager.add(this.cloneViewAction);
-	}
-
-	void fillContextMenu(final IMenuManager manager) {
-		// manager.add(this.filterClassesAction);
-		// manager.add(this.filterAttributesAction);
-		// manager.add(new Separator());
-		// this.drillDownAdapter.addNavigationActions(manager);
-		// Other plug-ins can contribute there actions here
-		// manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-	}
-
-	private void fillLocalToolBar(final IToolBarManager manager) {
-		manager.add(this.filterClassesAction);
-		manager.add(this.filterAttributesAction);
-		manager.add(new Separator());
-	}
-
-	private void makeActions() {
-		this.filterClassesAction = new Action("Filter for EClassifers", IAction.AS_CHECK_BOX) {
-			@Override
-			public void run() {
-
-				if (isChecked()) {
-					setFilterForEClassifiersBoolean(true);
-				}
-				else {
-					setFilterForEClassifiersBoolean(false);
-				}
-			}
-		};
-
-		this.filterClassesAction.setEnabled(true);
-
-		this.filterClassesAction.setToolTipText("Filter for EClassifiers");
-		this.filterClassesAction.setImageDescriptor(PluginUtils.getImageDescriptor("icons/class_obj.png"));
-
-		this.filterAttributesAction = new Action("Filter for Attributes", IAction.AS_CHECK_BOX) {
-			@Override
-			public void run() {
-				if (isChecked()) {
-					setFilterForAttributesBoolean(true);
-
-				}
-				else {
-					setFilterForAttributesBoolean(false);
-
-
-				}
-
-			}
-		};
-		this.filterAttributesAction.setToolTipText("Filter for Attributes");
-		this.filterAttributesAction.setImageDescriptor(PluginUtils.getImageDescriptor("icons/prop_ps.gif"));
-
-		
-		this.cloneViewAction = new Action("Clone View", IAction.AS_CHECK_BOX) {
-			@Override
-			public void run() { 
-				try {
-					getViewSite().getPage().showView(ID,id_Counter+++"", IWorkbenchPage.VIEW_VISIBLE);
-				} catch (PartInitException e) {
-					e.printStackTrace();
-				}
-			}
-		};
-		this.cloneViewAction.setToolTipText("Clone View");
-		this.cloneViewAction.setImageDescriptor(PluginUtils.getImageDescriptor("icons/prop_ps.gif"));
-
-	}
-
-	private void hookDoubleClickAction() {
-		this.viewer.addDoubleClickListener(new IDoubleClickListener() {
-			@Override
-			public void doubleClick(final DoubleClickEvent event) {
-				final ISelection selection = event.getSelection();
-
-				if (selection instanceof TreeSelection) {
-					final Object firstElement = ((TreeSelection) selection).getFirstElement();
-					if (firstElement instanceof EObject) {
-
-						 Shell parentShell = null;
-						
-						String displayDialogStyle=(Activator.getDefault().getPreferenceStore().getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY));
-						
-						if(displayDialogStyle !=null && displayDialogStyle.equals(MetaModelViewerPreferenceConstants.V_ON_TOP)){
-							parentShell=new Shell(SWT.ON_TOP);
-						}else{
-							parentShell=new Shell();
-						}
-						
-						
-
-						// final String name = ((firstElement instanceof EClass) ? ((EClass) firstElement).getName() :
-						// "");
-						//
-						// parentShell.setText("Details of : " + ((EClass) firstElement).eClass().getName() + " " +
-						// name);
-						//
-						//
-						// final TaskBar systemTaskBar = parentShell.getDisplay().getSystemTaskBar();
-						// final TaskItem taskItem = systemTaskBar.getItem(parentShell);
-						//
-						// taskItem.setData(parentShell);
-						// taskItem.setOverlayText(name);
-						// taskItem.setText(name);
-
-
-						new SelectedElementContentDialog(parentShell, getSite(), (EObject) firstElement).open();
+                        dialog.setFilterExtensions(new String[] { "*.ecore" });
 
-					}
-				}
-			}
-		});
-	}
+                        dialog.open();
 
+                        if ((dialog.getFileName() == null) ||
+                                (dialog.getFileNames() == null)) {
+                            return;
+                        }
 
-	/**
-	 * Passing the focus request to the viewer's control.
-	 */
-	@Override
-	public void setFocus() {
-		this.viewer.getControl().setFocus();
-	}
+                        List<String> files = new ArrayList<String>();
 
+                        for (String fileName : dialog.getFileNames()) {
+                            String filePath = dialog.getFilterPath() +
+                                File.separator + fileName;
 
-	public Action getFilterClassesAction() {
-		return this.filterClassesAction;
-	}
+                            files.add(filePath);
+                        }
 
+                        try {
+                            RegisterECOREfilesAction.loadECOREs(files,
+                                combo_ecore);
+                        } catch (Exception e) {
+                            Display.getDefault().asyncExec(new Runnable() {
+                                    @Override
+                                    public void run() {
+                                        MessageDialog.openError(Display.getDefault()
+                                                                       .getActiveShell(),
+                                            "Error", e.getMessage());
+                                    }
+                                });
+                        }
+                    }
+                };
+        this.registerEcoreFilesAction.setToolTipText(
+            "Register ECORE files");
+        this.registerEcoreFilesAction.setImageDescriptor(PluginUtils.getImageDescriptor(
+                "icons/register_ecores.png"));
+    }
 
-	public Action getFilterAttributesAction() {
-		return this.filterAttributesAction;
-	}
+    private void hookDoubleClickAction() {
+        this.viewer.addDoubleClickListener(new IDoubleClickListener() {
+                @Override
+                public void doubleClick(final DoubleClickEvent event) {
+                    final ISelection selection = event.getSelection();
 
+                    if (selection instanceof TreeSelection) {
+                        final Object firstElement = ((TreeSelection) selection).getFirstElement();
 
-	public boolean isFilterForEClassifiersBoolean() {
-		return this.filterForEClassifiersBoolean;
-	}
+                        if (firstElement instanceof EObject) {
+                            Shell parentShell = null;
 
+                            String displayDialogStyle = (Activator.getDefault()
+                                                                  .getPreferenceStore()
+                                                                  .getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY));
 
-	public boolean isFilterForAttributesBoolean() {
-		return this.filterForAttributesBoolean;
-	}
+                            if ((displayDialogStyle != null) &&
+                                    displayDialogStyle.equals(
+                                        MetaModelViewerPreferenceConstants.V_ON_TOP)) {
+                                parentShell = new Shell(SWT.ON_TOP);
+                            } else {
+                                parentShell = new Shell();
+                            }
 
+                            // final String name = ((firstElement instanceof EClass) ? ((EClass) firstElement).getName() :
+                            // "");
+                            //
+                            // parentShell.setText("Details of : " + ((EClass) firstElement).eClass().getName() + " " +
+                            // name);
+                            //
+                            //
+                            // final TaskBar systemTaskBar = parentShell.getDisplay().getSystemTaskBar();
+                            // final TaskItem taskItem = systemTaskBar.getItem(parentShell);
+                            //
+                            // taskItem.setData(parentShell);
+                            // taskItem.setOverlayText(name);
+                            // taskItem.setText(name);
+                            new SelectedElementContentDialog(parentShell,
+                                getSite(), (EObject) firstElement).open();
+                        }
+                    }
+                }
+            });
+    }
 
-	public void setFilterClassesAction(final Action filterClassesAction) {
-		this.filterClassesAction = filterClassesAction;
-	}
+    /**
+     * Passing the focus request to the viewer's control.
+     */
+    @Override
+    public void setFocus() {
+        this.viewer.getControl().setFocus();
+    }
 
+    public Action getFilterClassesAction() {
+        return this.filterClassesAction;
+    }
 
-	public void setFilterAttributesAction(final Action filterAttributesAction) {
-		this.filterAttributesAction = filterAttributesAction;
-	}
+    public Action getFilterAttributesAction() {
+        return this.filterAttributesAction;
+    }
 
+    public boolean isFilterForEClassifiersBoolean() {
+        return this.filterForEClassifiersBoolean;
+    }
 
-	public void setFilterForEClassifiersBoolean(final boolean filterForEClassifiersBoolean) {
-		this.filterForEClassifiersBoolean = filterForEClassifiersBoolean;
+    public boolean isFilterForAttributesBoolean() {
+        return this.filterForAttributesBoolean;
+    }
 
-		this.patternFilter.setFilterForEClassifiersBoolean(filterForEClassifiersBoolean);
-	}
+    public void setFilterClassesAction(final Action filterClassesAction) {
+        this.filterClassesAction = filterClassesAction;
+    }
 
+    public void setFilterAttributesAction(final Action filterAttributesAction) {
+        this.filterAttributesAction = filterAttributesAction;
+    }
 
-	public void setFilterForAttributesBoolean(final boolean filterForAttributesBoolean) {
-		this.filterForAttributesBoolean = filterForAttributesBoolean;
+    public void setFilterForEClassifiersBoolean(
+        final boolean filterForEClassifiersBoolean) {
+        this.filterForEClassifiersBoolean = filterForEClassifiersBoolean;
 
-		this.patternFilter.setFilterForAttributesBoolean(filterForAttributesBoolean);
-	}
+        this.patternFilter.setFilterForEClassifiersBoolean(filterForEClassifiersBoolean);
+    }
 
+    public void setFilterForAttributesBoolean(
+        final boolean filterForAttributesBoolean) {
+        this.filterForAttributesBoolean = filterForAttributesBoolean;
 
+        this.patternFilter.setFilterForAttributesBoolean(filterForAttributesBoolean);
+    }
 }