/******************************************************************************* * Copyright (c) 2013 Luigi Sgro. 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: * Luigi Sgro - initial API and implementation ******************************************************************************/ package com.quantcomponents.ui.marketdata; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.model.IWorkbenchAdapter; public class MarketDataViewAdapterFactory implements IAdapterFactory { private static final Object[] EMPTY_OBJECT_ARRAY = new Object[] {}; private IWorkbenchAdapter managerContainerAdapter = new IWorkbenchAdapter() { @Override public Object[] getChildren(Object o) { return ((IMarketDataManagerContainer) o).getElements().toArray(); } @Override public ImageDescriptor getImageDescriptor(Object object) { return null; } @Override public String getLabel(Object o) { return null; } @Override public Object getParent(Object o) { return null; }}; private IWorkbenchAdapter marketDataManagerAdapter = new IWorkbenchAdapter() { @Override public Object[] getChildren(Object o) { MarketDataManagerPresentationWrapper wrapper = (MarketDataManagerPresentationWrapper) o; wrapper.synchronizeStockDatabases(); return wrapper.allStockDatabases().toArray(); } @Override public ImageDescriptor getImageDescriptor(Object object) { return MarketDataPlugin.getDefault().getImageRegistry().getDescriptor(MarketDataPlugin.MARKET_DATA_MANAGER_IMAGE_KEY); } @Override public String getLabel(Object o) { return ((MarketDataManagerPresentationWrapper) o).getPrettyName(); } @Override public Object getParent(Object o) { return ((MarketDataManagerPresentationWrapper) o).getParent(); } }; private IWorkbenchAdapter stockDatabaseAdapter = new IWorkbenchAdapter() { @Override public Object[] getChildren(Object o) { return EMPTY_OBJECT_ARRAY; } @Override public ImageDescriptor getImageDescriptor(Object object) { return MarketDataPlugin.getDefault().getImageRegistry().getDescriptor(MarketDataPlugin.STOCK_DATABASE_IMAGE_KEY); } @Override public String getLabel(Object o) { return ((StockDatabasePresentationWrapper) o).getPrettyName(); } @Override public Object getParent(Object o) { return ((StockDatabasePresentationWrapper) o).getParent(); } }; @Override public Object getAdapter(Object adaptableObject, @SuppressWarnings("rawtypes") Class adapterType) { if (adapterType == IWorkbenchAdapter.class) { if (adaptableObject instanceof IMarketDataManagerContainer) { return managerContainerAdapter; } else if (adaptableObject instanceof MarketDataManagerPresentationWrapper) { return marketDataManagerAdapter; } else if (adaptableObject instanceof StockDatabasePresentationWrapper) { return stockDatabaseAdapter; } } return null; } @SuppressWarnings("rawtypes") @Override public Class[] getAdapterList() { return new Class[] { IWorkbenchAdapter.class }; } }