/******************************************************************************* * Copyright (c) 2013 INRIA. * 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: * Juan David Villa Calle - initial API and implementation *******************************************************************************/ package fr.inria.atlanmod.emfviews.ui.linkingview.view; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import org.eclipse.core.runtime.Platform; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl; import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IActionBars; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; import fr.inria.atlanmod.emfviews.core.EView; import fr.inria.atlanmod.emfviews.core.EmfViewsFactory; import fr.inria.atlanmod.emfviews.ui.linkingview.Activator; import fr.inria.atlanmod.emfviews.ui.linkingview.action.AddLinkAction; import fr.inria.atlanmod.emfviews.ui.linkingview.action.SelectViewAction; public class LinksView extends ViewPart { public static final String SELECTVIEW_ACTION_ICON = "icons/selectview.png"; public static final String ADDLINK_ACTION_ICON = "icons/add.png"; private EView currentView; private TreeViewer linkedElementsViewer; private Composite parent; public EView getCurrentView() { return currentView; } @Override public void createPartControl(Composite parent) { this.parent = parent; linkedElementsViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); linkedElementsViewer.setLabelProvider(new AdapterFactoryLabelProvider( new ReflectiveItemProviderAdapterFactory())); linkedElementsViewer.setContentProvider(new LinksViewContentProvider()); Action selectViewAction = new SelectViewAction(this, parent); Action addLinkAction = new AddLinkAction(this, parent); IActionBars bars = getViewSite().getActionBars(); selectViewAction.setText("Select view"); selectViewAction.setToolTipText("Select view"); selectViewAction.setImageDescriptor(Activator.getImage(SELECTVIEW_ACTION_ICON)); bars.getMenuManager().add(selectViewAction); bars.getToolBarManager().add(selectViewAction); addLinkAction.setText("Create link"); addLinkAction.setToolTipText("Create link"); addLinkAction.setImageDescriptor(Activator.getImage(ADDLINK_ACTION_ICON)); bars.getMenuManager().add(addLinkAction); bars.getToolBarManager().add(addLinkAction); } @Override public void setFocus() { } public boolean viewSelected() { return currentView != null; } public void loadView(String viewPath) { EmfViewsFactory factory = new EmfViewsFactory(); URI viewURI=URI.createURI(viewPath, true); currentView = (EView) factory.createResource(viewURI); try { ExtensibleURIConverterImpl eui= new ExtensibleURIConverterImpl(); InputStream is=eui.createInputStream(viewURI); currentView .load(is, new HashMap<>()); linkedElementsViewer.setInput(currentView.getVirtualLinkManager() .getLinks()); ((LinksViewContentProvider) (linkedElementsViewer .getContentProvider())).setLinkedModels(currentView .getContributingModels()); MessageDialog.openInformation(parent.getShell(), "View selected", "View selected"); } catch (IOException e) { e.printStackTrace(); } } }