| /******************************************************************************* |
| * Copyright (c) 2016, 2017 Red Hat Inc. and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * - Mickael Istria, Sopot Cela (Red Hat Inc.) |
| *******************************************************************************/ |
| package org.eclipse.ui.genericeditor.examples.dotproject; |
| |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.resources.IProjectNatureDescriptor; |
| import org.eclipse.core.resources.IWorkspace; |
| import org.eclipse.core.resources.ResourcesPlugin; |
| import org.eclipse.jface.text.ITextViewer; |
| import org.eclipse.jface.text.contentassist.CompletionProposal; |
| import org.eclipse.jface.text.contentassist.ICompletionProposal; |
| import org.eclipse.jface.text.contentassist.IContentAssistProcessor; |
| import org.eclipse.jface.text.contentassist.IContextInformation; |
| import org.eclipse.jface.text.contentassist.IContextInformationValidator; |
| |
| public class NaturesAndProjectsContentAssistProcessor implements IContentAssistProcessor { |
| |
| public NaturesAndProjectsContentAssistProcessor() { |
| // TODO Auto-generated constructor stub |
| } |
| |
| @Override |
| public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) { |
| String text = viewer.getDocument().get(); |
| String natureTag= "<nature>"; |
| String projectReferenceTag="<project>"; |
| IWorkspace workspace = ResourcesPlugin.getWorkspace(); |
| int natureTagLength = natureTag.length(); |
| if (text.length() >= natureTagLength && offset >= natureTagLength && text.substring(offset - natureTagLength, offset).equals(natureTag)) { |
| IProjectNatureDescriptor[] natureDescriptors= workspace.getNatureDescriptors(); |
| ICompletionProposal[] proposals = new ICompletionProposal[natureDescriptors.length]; |
| for (int i= 0; i < natureDescriptors.length; i++) { |
| IProjectNatureDescriptor descriptor= natureDescriptors[i]; |
| proposals[i] = new CompletionProposal(descriptor.getNatureId(), offset, 0, descriptor.getNatureId().length()); |
| } |
| return proposals; |
| } |
| int projectReferenceTagLength = projectReferenceTag.length(); |
| if (text.length() >= projectReferenceTagLength && offset >= projectReferenceTagLength && text.substring(offset - projectReferenceTagLength, offset).equals(projectReferenceTag)) { |
| IProject[] projects= workspace.getRoot().getProjects(); |
| //TODO - filter out the project this file is in |
| ICompletionProposal[] proposals = new ICompletionProposal[projects.length]; |
| for (int i= 0; i < projects.length; i++) { |
| proposals[i]=new CompletionProposal(projects[i].getName(), offset, 0, projects[i].getName().length()); |
| } |
| return proposals; |
| } |
| return new ICompletionProposal[0]; |
| } |
| |
| @Override |
| public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) { |
| return null; |
| } |
| |
| @Override |
| public char[] getCompletionProposalAutoActivationCharacters() { |
| return null; |
| } |
| |
| @Override |
| public char[] getContextInformationAutoActivationCharacters() { |
| return null; |
| } |
| |
| @Override |
| public String getErrorMessage() { |
| return null; |
| } |
| |
| @Override |
| public IContextInformationValidator getContextInformationValidator() { |
| return null; |
| } |
| |
| } |