/******************************************************************************* * Copyright (c) 2008, 2009 Symbian Software Systems and others. * 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: * Andrew Ferguson (Symbian) - Initial implementation *******************************************************************************/ package org.eclipse.cdt.ui.text.doctools.doxygen; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.swt.graphics.RGB; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.text.doctools.generic.GenericDocTag; /** * Makes available information for Doxygen support. * * @since 5.0 * @noextend This class is not intended to be subclassed by clients. */ public class DoxygenHelper extends AbstractPreferenceInitializer { private static final IPath TAGS_CSV= new Path("doxygenTags.csv"); //$NON-NLS-1$ private static GenericDocTag[] fTags; public static final String DOXYGEN_TAG_RECOGNIZED= "org.eclipse.cdt.internal.ui.text.doctools.doxygen.recognizedTag"; //$NON-NLS-1$ public static final String DOXYGEN_SINGLE_TOKEN= "org.eclipse.cdt.internal.ui.text.doctools.doxygen.single"; //$NON-NLS-1$ public static final String DOXYGEN_MULTI_TOKEN= "org.eclipse.cdt.internal.ui.text.doctools.doxygen.multi"; //$NON-NLS-1$ /** * @return The tags which are understood by default by the doxygen tool. */ public static GenericDocTag[] getDoxygenTags() { if(fTags==null) { try { List<GenericDocTag> temp= new ArrayList<GenericDocTag>(); InputStream is= FileLocator.openStream(CUIPlugin.getDefault().getBundle(), TAGS_CSV, false); BufferedReader br= new BufferedReader(new InputStreamReader(is)); StringBuffer content= new StringBuffer(); for(String line= br.readLine(); line!=null; line= br.readLine()) { content.append(line+"\n"); //$NON-NLS-1$ } String[] values= (content.toString()+"dummy-for-split").split("(\\s)*,(\\s)*"); //$NON-NLS-1$ //$NON-NLS-2$ for(int i=0; i+1<values.length; i+=2) { temp.add(new GenericDocTag(values[i], values[i+1])); } fTags= temp.toArray(new GenericDocTag[temp.size()]); } catch(IOException ioe) { fTags= new GenericDocTag[0]; CUIPlugin.log(ioe); } } return fTags; } /* * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences() */ @Override public void initializeDefaultPreferences() { IPreferenceStore cuis= CUIPlugin.getDefault().getPreferenceStore(); PreferenceConverter.setDefault(cuis, DoxygenHelper.DOXYGEN_MULTI_TOKEN, new RGB(63, 95, 191)); PreferenceConverter.setDefault(cuis, DoxygenHelper.DOXYGEN_SINGLE_TOKEN, new RGB(63, 95, 191)); PreferenceConverter.setDefault(cuis, DoxygenHelper.DOXYGEN_TAG_RECOGNIZED, new RGB(127, 159, 191)); } }