blob: c2b4425762f1f4598b94d68425a1f1e3c817c1d1 [file] [log] [blame]
/*
* Copyright (c) 2015 Eike Stepper (Berlin, Germany) and others.
* 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:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.emf.cdo.explorer.ui.checkouts;
import org.eclipse.emf.cdo.explorer.CDOExplorerUtil;
import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
import org.eclipse.emf.cdo.explorer.ui.checkouts.CDOCheckoutState.ContentProvider;
import org.eclipse.emf.cdo.explorer.ui.checkouts.CDOCheckoutState.LabelProvider;
import org.eclipse.net4j.util.lifecycle.LifecycleException;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.resource.LocalResourceManager;
import org.eclipse.jface.resource.ResourceManager;
import org.eclipse.jface.viewers.TreeViewer;
import java.util.HashMap;
import java.util.Map;
/**
* @author Eike Stepper
*/
public final class CDOCheckoutStateManager
{
private final ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources());
private final Map<CDOCheckout, CDOCheckoutState> states = new HashMap<CDOCheckout, CDOCheckoutState>();
private final CDOCheckoutContentProvider mainContentProvider;
private CDOCheckoutViewerRefresh viewerRefresh;
public CDOCheckoutStateManager(CDOCheckoutContentProvider mainContentProvider)
{
this.mainContentProvider = mainContentProvider;
}
public CDOCheckoutContentProvider getMainContentProvider()
{
return mainContentProvider;
}
public ResourceManager getResourceManager()
{
return resourceManager;
}
public CDOCheckoutViewerRefresh getViewerRefresh()
{
return viewerRefresh;
}
public CDOCheckoutState[] getStates()
{
synchronized (states)
{
return states.values().toArray(new CDOCheckoutState[states.size()]);
}
}
public CDOCheckoutState getState(Object object)
{
try
{
CDOCheckout checkout = CDOExplorerUtil.getCheckout(object);
if (checkout != null)
{
synchronized (states)
{
CDOCheckoutState state = states.get(checkout);
if (state == null)
{
state = new CDOCheckoutState(this, checkout);
states.put(checkout, state);
}
return state;
}
}
}
catch (LifecycleException ex)
{
//$FALL-THROUGH$
}
return null;
}
public void inputChanged(TreeViewer newTreeViewer, Object oldInput, Object newInput)
{
viewerRefresh = new CDOCheckoutViewerRefresh(newTreeViewer);
for (CDOCheckoutState state : getStates())
{
state.inputChanged(newTreeViewer, oldInput, newInput);
}
}
public Object adapt(Object target, Object type)
{
CDOCheckoutState state = getState(target);
if (state != null)
{
return state.getAdapterFactory().adapt(target, type);
}
return null;
}
public ComposedAdapterFactory getAdapterFactory(Object object)
{
CDOCheckoutState state = getState(object);
if (state != null)
{
return state.getAdapterFactory();
}
return null;
}
public ContentProvider getContentProvider(Object object)
{
CDOCheckoutState state = getState(object);
if (state != null)
{
return state.getContentProvider();
}
return null;
}
public LabelProvider getLabelProvider(Object object)
{
CDOCheckoutState state = getState(object);
if (state != null)
{
return state.getLabelProvider();
}
return null;
}
public void dispose()
{
resourceManager.dispose();
}
}