| /** |
| * Copyright (c) 2019 CEA. |
| * 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: |
| * CEA - initial API and implementation and/or initial documentation |
| */ |
| package org.eclipse.sensinact.studio.navigator.device; |
| |
| import org.apache.log4j.Logger; |
| import org.eclipse.emf.transaction.ResourceSetChangeEvent; |
| import org.eclipse.jface.viewers.DoubleClickEvent; |
| import org.eclipse.jface.viewers.IStructuredSelection; |
| import org.eclipse.jface.viewers.TreeViewer; |
| import org.eclipse.sensinact.studio.model.manager.listener.modelset.ResourceModelSetListener; |
| import org.eclipse.sensinact.studio.model.manager.listener.modelset.ResourceModelSetManager; |
| import org.eclipse.sensinact.studio.model.manager.modelupdater.ModelEditor; |
| import org.eclipse.sensinact.studio.navigator.device.doubleclick.BasicQueryResourceHelper; |
| import org.eclipse.swt.widgets.Display; |
| import org.eclipse.ui.navigator.CommonNavigator; |
| import org.eclipse.ui.navigator.INavigatorContentService; |
| |
| import org.eclipse.sensinact.studio.resource.Resource; |
| |
| /** |
| * @author Nicolas Hili, Etienne Gandrille |
| */ |
| public class DeviceNavigatorView extends CommonNavigator implements ResourceModelSetListener { |
| |
| private static final Logger logger = Logger.getLogger(DeviceNavigatorView.class); |
| |
| public static final String VIEW_ID = "org.eclipse.sensinact.studio.navigator.device"; |
| |
| @Override |
| protected void initListeners(TreeViewer viewer) { |
| super.initListeners(viewer); |
| ResourceModelSetManager.getInstance().subscribe(this); |
| } |
| |
| @Override |
| public void modelSetUpdated(ResourceSetChangeEvent event) { |
| Display.getDefault().asyncExec(new Runnable() { |
| public void run() { |
| INavigatorContentService contentService = getNavigatorContentService(); |
| contentService.getActivationService().persistExtensionActivations(); |
| contentService.update(); |
| contentService.dispose(); |
| } |
| }); |
| } |
| |
| @Override |
| protected Object getInitialInput() { |
| try { |
| return ModelEditor.getInstance().getViewerInput(); |
| } catch (InterruptedException e) { |
| logger.error("Can't get initial value for tree viewer", e); |
| return null; |
| } |
| } |
| |
| @Override |
| protected void handleDoubleClick(DoubleClickEvent event) { |
| |
| IStructuredSelection selection = (IStructuredSelection) event.getSelection(); |
| Object element = selection.getFirstElement(); |
| |
| if (element != null && element instanceof Resource) { |
| Resource resource = (Resource) element; |
| BasicQueryResourceHelper manager = new BasicQueryResourceHelper(getViewSite().getShell(), resource); |
| try { |
| manager.execute(); |
| return; |
| } catch (InterruptedException e) { |
| logger.error("Error during double click handler processing", e); |
| } |
| } |
| |
| // if no special action, perform the default one |
| super.handleDoubleClick(event); |
| } |
| } |