/**
* Copyright (c) Red Hat, Inc., contributors and others 2013 - 2014. All rights reserved
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.tools.forge.ui.internal.cli;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.jboss.forge.addon.resource.Resource;
import org.jboss.forge.addon.resource.ResourceFactory;
import org.jboss.forge.addon.shell.spi.command.CdTokenHandler;
import org.jboss.forge.addon.ui.context.UIContext;
/**
* Handles the '#' workspace shortcut character in JBossTools Forge CLI
*
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
public class WorkspaceCdTokenHandler implements CdTokenHandler {
private ResourceFactory resourceFactory;
public WorkspaceCdTokenHandler(ResourceFactory resourceFactory) {
this.resourceFactory = resourceFactory;
}
@Override
public List<Resource<?>> getNewCurrentResources(UIContext context,
String token) {
List<Resource<?>> result = new ArrayList<>();
if (token.startsWith("#")) {
IPath location;
String projectName = token.replaceFirst("#/?", "");
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
if (projectName.isEmpty()) {
location = root.getLocation();
} else {
location = root.getProject(projectName).getLocation();
}
if (location != null) {
File file = location.makeAbsolute().toFile();
Resource<File> resource = resourceFactory.create(file);
result.add(resource);
}
}
return result;
}
}