package org.bundlemaker.core.ui.mvn; import java.util.LinkedList; import java.util.List; import org.bundlemaker.core.mvn.content.MvnArtifactType; import org.bundlemaker.core.mvn.content.MvnContentProvider; 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.eclipse.jface.action.IAction; import org.eclipse.jface.window.Window; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Shell; /** * <p> * </p> * * @author Gerd Wütherich (gerd@gerd-wuetherich.de) */ public class MvnProjectContentProviderEditor extends AbstractProjectContentProviderEditor { /** - */ private final FileBasedContentRenderer _fileBasedContentRenderer = FileBasedContentRenderer.getInstance(); /** - */ private ReloadFromRepositoryAction _reloadFromLocalRepositoryAction; /** - */ private ReloadFromRepositoryAction _reloadFromRemoteRepositoryAction; /** - */ private List<IAction> _actionList; /** - */ private List<IProjectContentProviderEditorElement> _currentSelection; /** * {@inheritDoc} */ @Override public boolean canHandle(IProjectContentProvider provider) { return (provider instanceof MvnContentProvider); } /** * {@inheritDoc} */ @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 MvnContentProvider)) { return _fileBasedContentRenderer.getChildren(project, rootElement); } MvnContentProvider projectContentProvider = (MvnContentProvider) rootElement; return getContentFromProvider(project, projectContentProvider); } /** * {@inheritDoc} */ @Override public Image getImage(Object element) { // if (element instanceof MvnContentProvider) { return BundleMakerImages.JDT_PROJECT_CONTENT_PROVIDER.getImage(); } // return _fileBasedContentRenderer.getImage(element); } /** * {@inheritDoc} */ @Override public String getLabel(Object element) { // if (element instanceof MvnContentProvider) { // MvnContentProvider projectContentProvider = (MvnContentProvider) element; // // List<MvnArtifactType> artifactTypes = projectContentProvider.getMvnArtifacts(); // if (artifactTypes.size() > 0) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(artifactTypes.get(0).getGroupId() + ":" + artifactTypes.get(0).getArtifactId() + ":" + artifactTypes.get(0).getVersion()); if (artifactTypes.size() > 1) { stringBuilder.append(" / ..."); } return stringBuilder.toString(); } // return "-"; } // get the label return _fileBasedContentRenderer.getLabel(element); } /** * {@inheritDoc} */ @Override public AnalyzeMode getAnalyzeMode(Object element) { return _fileBasedContentRenderer.getAnalyzeMode(element); } @Override public boolean canEdit(Object selectedObject) { return selectedObject instanceof MvnContentProvider; } /** * {@inheritDoc} */ @Override public boolean edit(Shell shell, IProjectDescriptionAwareBundleMakerProject project, IProjectContentProvider provider, Object selectedObject) { // if (!(selectedObject instanceof MvnContentProvider)) { return false; } // MvnContentProvider content = (MvnContentProvider) selectedObject; // DialogEditMvnArtifacts dialog = new DialogEditMvnArtifacts(shell, content.getMvnArtifacts()); // if (dialog.open() != Window.OK) { return false; } // List<MvnArtifactType> newMvnArtifactTypes = dialog.getResult(); // if (!newMvnArtifactTypes.equals(content.getMvnArtifacts())) { // clear the artifact list content.clearArtifactList(); // set the new content for (MvnArtifactType type : dialog.getResult()) { content.addMvnArtifact(type); } } // return true; } /** * {@inheritDoc} */ @Override public List<IAction> getContextMenuActions(IProjectDescriptionAwareBundleMakerProject project, List<IProjectContentProviderEditorElement> selectedElements) { // lazy init if (_actionList == null) { _actionList = new LinkedList<IAction>(); // _reloadFromLocalRepositoryAction = new ReloadFromRepositoryAction("Reload from local repository", this, project, false); // _reloadFromRemoteRepositoryAction = new ReloadFromRepositoryAction("Reload from remote repository", this, project, true); _actionList.add(_reloadFromLocalRepositoryAction); _actionList.add(_reloadFromRemoteRepositoryAction); } // _currentSelection = selectedElements; // set enabled boolean enabled = instanceOfMvnContentProvider(selectedElements); _reloadFromLocalRepositoryAction.setEnabled(enabled); _reloadFromRemoteRepositoryAction.setEnabled(enabled); // return the list return instanceOfMvnContentProvider(selectedElements) ? _actionList : new LinkedList<IAction>(); } /** * <p> * </p> * * @return */ public List<IProjectContentProviderEditorElement> getCurrentSelection() { return _currentSelection; } /** * <p> * </p> * * @param selectedElements */ private boolean instanceOfMvnContentProvider(List<IProjectContentProviderEditorElement> selectedElements) { // for (IProjectContentProviderEditorElement element : selectedElements) { // if (!(element.getElement() instanceof MvnContentProvider)) { return false; } } // return true; } }