package org.bundlemaker.core.ui.projecteditor.jdt;
import java.util.List;
import org.bundlemaker.core.jdt.content.JdtProjectContentProvider;
import org.bundlemaker.core.project.AnalyzeMode;
import org.bundlemaker.core.project.IProjectContentProvider;
import org.bundlemaker.core.project.IProjectDescriptionAwareBundleMakerProject;
import org.bundlemaker.core.ui.BundleMakerImages;
import org.bundlemaker.core.ui.projecteditor.filebased.FileBasedContentRenderer;
import org.bundlemaker.core.ui.projecteditor.provider.IProjectContentProviderEditorElement;
import org.bundlemaker.core.ui.projecteditor.provider.impl.AbstractProjectContentProviderEditor;
import org.bundlemaker.core.ui.validators.NonEmptyStringValidator;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Shell;
public class JdtProjectContentProviderEditor extends AbstractProjectContentProviderEditor {
private final FileBasedContentRenderer _fileBasedContentRenderer = FileBasedContentRenderer.getInstance();
@Override
public boolean canHandle(IProjectContentProvider provider) {
return (provider instanceof JdtProjectContentProvider);
}
/*
* (non-Javadoc)
*
* @see org.bundlemaker.core.ui.projecteditor.provider.IProjectContentProviderEditor#getContextMenuActions()
*/
@Override
public List<IAction> getContextMenuActions(IProjectDescriptionAwareBundleMakerProject project,
List<IProjectContentProviderEditorElement> selectedElements) {
return null;
}
@Override
public Object getRootElement(IProjectDescriptionAwareBundleMakerProject project, IProjectContentProvider provider) {
return provider;
}
@Override
public List<? extends Object> getChildren(IProjectDescriptionAwareBundleMakerProject project, IProjectContentProvider provider,
Object rootElement) throws Exception {
if (!(rootElement instanceof JdtProjectContentProvider)) {
return _fileBasedContentRenderer.getChildren(project, rootElement);
}
JdtProjectContentProvider projectContentProvider = (JdtProjectContentProvider) rootElement;
return getContentFromProvider(project, projectContentProvider);
}
@Override
public Image getImage(Object element) {
if (element instanceof JdtProjectContentProvider) {
return BundleMakerImages.JDT_PROJECT_CONTENT_PROVIDER.getImage();
}
return _fileBasedContentRenderer.getImage(element);
}
@Override
public String getLabel(Object element) {
if (element instanceof JdtProjectContentProvider) {
JdtProjectContentProvider projectContentProvider = (JdtProjectContentProvider) element;
return projectContentProvider.getName();
}
return _fileBasedContentRenderer.getLabel(element);
}
@Override
public AnalyzeMode getAnalyzeMode(Object element) {
return _fileBasedContentRenderer.getAnalyzeMode(element);
}
/*
* (non-Javadoc)
*
* @see
* org.bundlemaker.core.ui.projecteditor.provider.IProjectContentProviderEditor#canChangeAnalyzeMode(org.bundlemaker
* .core.projectdescription.IProjectContentProvider, java.lang.Object)
*/
@Override
public boolean canChangeAnalyzeMode(IProjectContentProvider projectContentProvider, Object element) {
return false;
}
/*
* (non-Javadoc)
*
* @see
* org.bundlemaker.core.ui.projecteditor.provider.IProjectContentProviderEditor#setAnalyzeMode(org.bundlemaker.core
* .projectdescription.IProjectContentProvider, java.lang.Object)
*/
@Override
public void setAnalyzeMode(IProjectContentProvider projectContentProvider, Object element, AnalyzeMode analyzeMode) {
// not supported
}
/*
* (non-Javadoc)
*
* @see org.bundlemaker.core.ui.projecteditor.provider.IProjectContentProviderEditor#canEdit(java.lang.Object)
*/
@Override
public boolean canEdit(Object selectedObject) {
return (selectedObject instanceof JdtProjectContentProvider);
}
/*
* (non-Javadoc)
*
* @see
* org.bundlemaker.core.ui.projecteditor.provider.IProjectContentProviderEditor#edit(org.eclipse.swt.widgets.Shell,
* org.bundlemaker.core.IBundleMakerProject, org.bundlemaker.core.projectdescription.IProjectContentProvider,
* java.lang.Object)
*/
@Override
public boolean edit(Shell shell, IProjectDescriptionAwareBundleMakerProject project, IProjectContentProvider provider, Object selectedObject) {
JdtProjectContentProvider jdtProjectContentProvider = (JdtProjectContentProvider) selectedObject;
InputDialog inputDialog = new InputDialog(shell, "Name", "Enter name of this project content",
jdtProjectContentProvider.getName(), NonEmptyStringValidator.instance());
// Open
if (inputDialog.open() != Window.OK) {
// canceled
return false;
}
final String newName = inputDialog.getValue();
jdtProjectContentProvider.setName(newName);
return true;
}
/*
* (non-Javadoc)
*
* @see org.bundlemaker.core.ui.projecteditor.provider.IProjectContentProviderEditor#canRemove(java.lang.Object)
*/
@Override
public boolean canRemove(Object selectedObject) {
// can't remove childs of JdtProjectContentProvider
return false;
}
/*
* (non-Javadoc)
*
* @see
* org.bundlemaker.core.ui.projecteditor.provider.IProjectContentProviderEditor#remove(org.eclipse.swt.widgets.Shell,
* org.bundlemaker.core.IBundleMakerProject, org.bundlemaker.core.projectdescription.IProjectContentProvider,
* java.lang.Object)
*/
@Override
public void remove(Shell shell, IProjectDescriptionAwareBundleMakerProject project, IProjectContentProvider provider, Object selectedObject) {
// can't remove childs of JdtProjectContentProvider
}
}