/******************************************************************************* * Copyright (c) 2012 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.quickfix; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal; import org.eclipse.jface.text.Position; import org.eclipse.jface.text.source.Annotation; public class QuickFixManager { private static QuickFixManager instance = null; private HashMap<String, IQuickFixGenerator> generators = new HashMap<String, IQuickFixGenerator>(); public static QuickFixManager getInstance(){ if(instance == null){ instance = new QuickFixManager(); } return instance; } public QuickFixManager(){ QuickFixExtension[] extensions = QuickFixExtension.getInstances(); for(QuickFixExtension extension : extensions){ IQuickFixGenerator generator = extension.getQuickFixGenerator(); if(generator != null){ addQuickFixGenerator(generator); } } } public void addQuickFixGenerator(IQuickFixGenerator generator){ if(!generators.containsKey(generator.getClass().toString())){ generators.put(generator.getClass().toString(), generator); } } public void removeQuickFixGenerator(IQuickFixGenerator generator){ generators.remove(generator); } public boolean hasProposals(Annotation annotation, Position position){ for(IQuickFixGenerator generator : generators.values()){ if(generator.hasProposals(annotation, position)){ return true; } } return false; } public List<IJavaCompletionProposal> getProposals(Annotation annotation, Position position){ ArrayList<IJavaCompletionProposal> proposals = new ArrayList<IJavaCompletionProposal>(); for(IQuickFixGenerator generator : generators.values()){ IJavaCompletionProposal[] pp = generator.getProposals(annotation, position); for(IJavaCompletionProposal p : pp){ proposals.add(p); } } return proposals; } }