/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* 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:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.reference;
import com.google.common.base.Optional;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import org.eclipse.che.ide.api.reference.FqnProvider;
import org.eclipse.che.ide.api.resources.Project;
import org.eclipse.che.ide.api.resources.Resource;
import java.util.Map;
/**
* @author Dmitry Shnurenko
* @author Vlad Zhukovskyi
*/
@Singleton
public class ShowReferencePresenter implements ShowReferenceView.ActionDelegate {
private final ShowReferenceView view;
private final Map<String, FqnProvider> providers;
@Inject
public ShowReferencePresenter(ShowReferenceView view,
Map<String, FqnProvider> providers) {
this.view = view;
this.view.setDelegate(this);
this.providers = providers;
}
/**
* Shows dialog which contains information about file fqn and path calculated from passed element.
*
* @param resource
* element for which fqn and path will be calculated
*/
public void show(Resource resource) {
final Optional<Project> project = resource.getRelatedProject();
if (project.isPresent()) {
final FqnProvider provider = providers.get(project.get().getType());
try {
view.show(provider.getFqn(resource), resource.getLocation());
} catch (RuntimeException e) {
view.show("", resource.getLocation());
}
}
}
}