/*
* Copyright (c) 2015 the original author or authors.
* 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:
* Etienne Studer & Donát Csikós (Gradle Inc.) - initial API and implementation and initial documentation
*/
package org.eclipse.buildship.ui.view.task.adapter;
import com.google.common.base.Preconditions;
import com.gradleware.tooling.toolingmodel.OmniProjectTask;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertySource;
import org.eclipse.ui.views.properties.PropertyDescriptor;
import org.eclipse.buildship.ui.view.task.ProjectTaskNode;
/**
* Adapts a {@link ProjectTaskNode} instance to a {@link IPropertySource} instance.
*/
final class ProjectTaskNodeAdapter implements IPropertySource {
private static final String PROPERTY_NAME = "task.name";
private static final String PROPERTY_DESCRIPTION = "task.description";
private static final String PROPERTY_PATH = "task.path";
private static final String PROPERTY_PUBLIC = "task.public";
private static final String PROPERTY_TYPE = "task.type";
private final OmniProjectTask projectTask;
ProjectTaskNodeAdapter(ProjectTaskNode taskNode) {
this.projectTask = Preconditions.checkNotNull(taskNode).getProjectTask();
}
@Override
public Object getEditableValue() {
return this;
}
@Override
public IPropertyDescriptor[] getPropertyDescriptors() {
// @formatter:off
return new IPropertyDescriptor[]{
new PropertyDescriptor(PROPERTY_NAME, "Name"),
new PropertyDescriptor(PROPERTY_DESCRIPTION, "Description"),
new PropertyDescriptor(PROPERTY_PATH, "Path"),
new PropertyDescriptor(PROPERTY_PUBLIC, "Public"),
new PropertyDescriptor(PROPERTY_TYPE, "Type"),
};
// @formatter:on
}
@Override
public Object getPropertyValue(Object id) {
if (id.equals(PROPERTY_NAME)) {
return this.projectTask.getName();
} else if (id.equals(PROPERTY_DESCRIPTION)) {
return this.projectTask.getDescription();
} else if (id.equals(PROPERTY_PATH)) {
return this.projectTask.getPath().getPath();
} else if (id.equals(PROPERTY_PUBLIC)) {
return this.projectTask.isPublic();
} else if (id.equals(PROPERTY_TYPE)) {
return "Gradle Project Task";
} else {
throw new IllegalStateException("Unsupported project task property: " + id);
}
}
@Override
public boolean isPropertySet(Object id) {
return false;
}
@Override
public void resetPropertyValue(Object id) {
}
@Override
public void setPropertyValue(Object id, Object value) {
}
}