mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
2004-11-01 Alain Magloire
Patch from Mikhail Voronin to implement 71240. Too many changes to enumerate refer to PR: https://bugs.eclipse.org/bugs/show_bug.cgi?id=71240
This commit is contained in:
parent
7a24fe76ca
commit
08da96c392
24 changed files with 1377 additions and 464 deletions
|
@ -1,3 +1,8 @@
|
|||
2004-11-01 Alain Magloire
|
||||
Patch from Mikhail Voronin to implement 71240.
|
||||
Too many changes to enumerate refer to PR:
|
||||
https://bugs.eclipse.org/bugs/show_bug.cgi?id=71240
|
||||
|
||||
2004-10-14 Alain Magloire
|
||||
|
||||
Provide the hashCode method.
|
||||
|
|
|
@ -17,7 +17,7 @@ pathContainerPage=Path Container Page
|
|||
textHoversName=Text Hovers
|
||||
editorActionsName=Editor Actions
|
||||
editorRulerActionsName=Editor Ruler Actions
|
||||
completionContributorName=Completion Contribution
|
||||
cHelpProviderName=C Help Provider
|
||||
nature.name=C Nature
|
||||
perspective.name=C/C++
|
||||
viewsCategory.name=&C
|
||||
|
@ -199,6 +199,8 @@ CDTSearch.name=Search
|
|||
|
||||
CDTIndexerProperty.name=C/C++ Indexer
|
||||
|
||||
CDTHelpProperty.name=C/C++ Documentation
|
||||
|
||||
CDTFileTypesProperty.name=C/C++ File Types
|
||||
|
||||
cDocumentFactory=C Document Factory
|
||||
|
|
|
@ -27,10 +27,11 @@
|
|||
<import plugin="org.eclipse.core.filebuffers"/>
|
||||
<import plugin="org.eclipse.core.runtime"/>
|
||||
<import plugin="org.eclipse.core.expressions"/>
|
||||
<import plugin="org.eclipse.help"/>
|
||||
</requires>
|
||||
|
||||
|
||||
<extension-point id="CCompletionContributor" name="%completionContributorName" schema="schema/CCompletionContributor.exsd"/>
|
||||
<extension-point id="CHelpProvider" name="%cHelpProviderName" schema="schema/CHelpProvider.exsd"/>
|
||||
<extension-point id="CElementFilters" name="%elementFiltersName"/>
|
||||
<extension-point id="BinaryParserPage" name="%binaryParserPage"/>
|
||||
<extension-point id="PathContainerPage" name="%pathContainerPage" schema="schema/PathContainerPage.exsd"/>
|
||||
|
@ -1082,6 +1083,17 @@
|
|||
value="org.eclipse.cdt.core.cnature">
|
||||
</filter>
|
||||
</page>
|
||||
<page
|
||||
adaptable="true"
|
||||
objectClass="org.eclipse.core.resources.IProject"
|
||||
name="%CDTHelpProperty.name"
|
||||
class="org.eclipse.cdt.ui.dialogs.CHelpConfigurationPropertyPage"
|
||||
id="org.eclipse.cdt.ui.cHelp">
|
||||
<filter
|
||||
name="nature"
|
||||
value="org.eclipse.cdt.core.cnature">
|
||||
</filter>
|
||||
</page>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.cdt.ui.PathContainerPage">
|
||||
|
|
|
@ -1,115 +1,109 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!-- Schema file written by PDE -->
|
||||
<schema targetNamespace="org.eclipse.cdt.ui">
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.schema plugin="org.eclipse.cdt.ui" id="CCompletionContributor" name="%completionContributorName"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
[Enter description of this extension point.]
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>
|
||||
|
||||
<element name="extension">
|
||||
<complexType>
|
||||
<sequence>
|
||||
<element ref="provider"/>
|
||||
</sequence>
|
||||
<attribute name="point" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="id" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="name" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
<element name="provider">
|
||||
<complexType>
|
||||
<all>
|
||||
<element ref="enablement"/>
|
||||
<element ref="provider"/>
|
||||
</all>
|
||||
<attribute name="id" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="class" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
<appInfo>
|
||||
<meta.attribute kind="java"/>
|
||||
</appInfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="since"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
[Enter the first release in which this extension point appears.]
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="examples"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
[Enter extension point usage example here.]
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="apiInfo"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
[Enter API information here.]
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="implementation"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
[Enter information about supplied implementation of this extension point.]
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="copyright"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
</schema>
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!-- Schema file written by PDE -->
|
||||
<schema targetNamespace="org.eclipse.cdt.ui">
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.schema plugin="org.eclipse.cdt.ui" id="CHelpProvider" name="%cHelpProviderName"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
[Enter description of this extension point.]
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<element name="extension">
|
||||
<complexType>
|
||||
<sequence>
|
||||
<element ref="provider"/>
|
||||
</sequence>
|
||||
<attribute name="point" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="id" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="name" type="string">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
<element name="provider">
|
||||
<complexType>
|
||||
<attribute name="class" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
<appInfo>
|
||||
<meta.attribute kind="java"/>
|
||||
</appInfo>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="id" type="string" use="required">
|
||||
<annotation>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
</complexType>
|
||||
</element>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="since"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
[Enter the first release in which this extension point appears.]
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="examples"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
[Enter extension point usage example here.]
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="apiInfo"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
[Enter API information here.]
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="implementation"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
[Enter information about supplied implementation of this extension point.]
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<annotation>
|
||||
<appInfo>
|
||||
<meta.section type="copyright"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
</schema>
|
|
@ -1,137 +0,0 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2004 QNX Software Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.ui;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||
import org.eclipse.cdt.internal.ui.text.CCompletionContributorDescriptor;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.ICCompletionContributor;
|
||||
import org.eclipse.cdt.ui.IFunctionSummary;
|
||||
import org.eclipse.cdt.ui.text.ICCompletionInvocationContext;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
|
||||
/**
|
||||
* Manages external plugins that contribute completion and function
|
||||
* info through the CCompletionContributor extension point
|
||||
*/
|
||||
|
||||
public class CCompletionContributorManager {
|
||||
|
||||
public static final String CONTRIBUTION_EXTENSION = "CCompletionContributor"; //$NON-NLS-1$
|
||||
private static CCompletionContributorDescriptor[] fCCompletionContributorDescriptors = null;
|
||||
|
||||
|
||||
static private CCompletionContributorManager fInstance;
|
||||
|
||||
private CCompletionContributorManager() {
|
||||
// Initialize and scan the extension points
|
||||
}
|
||||
|
||||
public static CCompletionContributorManager getDefault() {
|
||||
if (fInstance == null) {
|
||||
fInstance = new CCompletionContributorManager();
|
||||
}
|
||||
return fInstance;
|
||||
}
|
||||
|
||||
public IFunctionSummary getFunctionInfo(ICCompletionInvocationContext context, String name) {
|
||||
CCompletionContributorDescriptor[] desc = getCCompletionContributorDescriptors();
|
||||
for (int i = 0; i < desc.length; i++) {
|
||||
try {
|
||||
ICCompletionContributor c = null;
|
||||
ITranslationUnit unit = context.getTranslationUnit();
|
||||
if (unit != null) {
|
||||
c = desc[i].getCCompletionContributor(unit);
|
||||
} else {
|
||||
IProject project = context.getProject();
|
||||
c = desc[i].getCCompletionContributor(project);
|
||||
}
|
||||
if (c != null) {
|
||||
IFunctionSummary f = c.getFunctionInfo(context, name);
|
||||
if (f != null) {
|
||||
return f;
|
||||
}
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public IFunctionSummary[] getMatchingFunctions(ICCompletionInvocationContext context, String frag) {
|
||||
|
||||
IFunctionSummary[] fs = null;
|
||||
|
||||
CCompletionContributorDescriptor[] desc = getCCompletionContributorDescriptors();
|
||||
for (int i = 0; i < desc.length; i++) {
|
||||
try {
|
||||
ICCompletionContributor c = null;
|
||||
ITranslationUnit unit = context.getTranslationUnit();
|
||||
if (unit != null) {
|
||||
c = desc[i].getCCompletionContributor(unit);
|
||||
} else {
|
||||
IProject project = context.getProject();
|
||||
c = desc[i].getCCompletionContributor(project);
|
||||
}
|
||||
if (c != null) {
|
||||
IFunctionSummary[] f = c.getMatchingFunctions(context, frag);
|
||||
if (f != null) {
|
||||
if (fs == null) {
|
||||
fs = f;
|
||||
} else {
|
||||
IFunctionSummary[] dest = new IFunctionSummary[fs.length + f.length];
|
||||
System.arraycopy(fs, 0, dest, 0, fs.length);
|
||||
System.arraycopy(f, 0, dest, fs.length, f.length);
|
||||
fs = dest;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (CoreException e) {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
return fs;
|
||||
}
|
||||
|
||||
private static CCompletionContributorDescriptor[] getCCompletionContributorDescriptors() {
|
||||
if (fCCompletionContributorDescriptors == null) {
|
||||
fCCompletionContributorDescriptors= getCCompletionContributorDescriptors(CONTRIBUTION_EXTENSION);
|
||||
}
|
||||
return fCCompletionContributorDescriptors;
|
||||
}
|
||||
|
||||
|
||||
private static CCompletionContributorDescriptor[] getCCompletionContributorDescriptors(String contributionId) {
|
||||
IConfigurationElement[] elements= Platform.getExtensionRegistry().getConfigurationElementsFor(CUIPlugin.PLUGIN_ID, contributionId);
|
||||
ArrayList res= new ArrayList(elements.length);
|
||||
for (int i= 0; i < elements.length; i++) {
|
||||
CCompletionContributorDescriptor desc= new CCompletionContributorDescriptor(elements[i]);
|
||||
IStatus status= desc.checkSyntax();
|
||||
if (status.isOK()) {
|
||||
res.add(desc);
|
||||
} else {
|
||||
CUIPlugin.getDefault().log(status);
|
||||
}
|
||||
}
|
||||
return (CCompletionContributorDescriptor[]) res.toArray(new CCompletionContributorDescriptor[res.size()]);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,230 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.internal.ui;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.transform.OutputKeys;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerConfigurationException;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.dom.DOMSource;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
|
||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||
import org.eclipse.cdt.internal.ui.text.CHelpBookDescriptor;
|
||||
import org.eclipse.cdt.internal.ui.text.CHelpSettings;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.ICHelpResourceDescriptor;
|
||||
import org.eclipse.cdt.ui.IFunctionSummary;
|
||||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* This class is used to manage external plugins that contribute
|
||||
* C/C++ help information through the CHelpProvider extension point
|
||||
*/
|
||||
|
||||
public class CHelpProviderManager {
|
||||
final private static String C_HELP_SETTINGS_FILE_NAME = "cHelpSettings.xml"; //$NON-NLS-1$
|
||||
final private static String ELEMENT_ROOT = "cHelpSettings"; //$NON-NLS-1$
|
||||
|
||||
private static Map fProjectHelpSettings = null;
|
||||
private static CHelpSettings fDefaultHelpSettings = null;
|
||||
|
||||
private static File fSettingsFile = null;
|
||||
static private CHelpProviderManager fInstance = null;
|
||||
|
||||
private static IProject fCurrentProject = null;
|
||||
private static CHelpSettings fCurrentSettings = null;
|
||||
|
||||
private CHelpProviderManager() {
|
||||
}
|
||||
|
||||
private static File getSettingsFile(){
|
||||
if(fSettingsFile == null){
|
||||
fSettingsFile = CUIPlugin.getDefault().getStateLocation().append(C_HELP_SETTINGS_FILE_NAME).toFile();
|
||||
}
|
||||
return fSettingsFile;
|
||||
}
|
||||
|
||||
private static Map getSettingsMap(){
|
||||
if(fProjectHelpSettings == null)
|
||||
fProjectHelpSettings = new HashMap();
|
||||
return fProjectHelpSettings;
|
||||
}
|
||||
|
||||
private static CHelpSettings getDefaultHelpSettings(){
|
||||
if(fDefaultHelpSettings == null){
|
||||
fDefaultHelpSettings = new CHelpSettings(null);
|
||||
}
|
||||
return fDefaultHelpSettings;
|
||||
}
|
||||
|
||||
private static CHelpSettings getPersistedHelpSettings(IProject project){
|
||||
/* uncomment to use Map
|
||||
Map settingsMap = getSettingsMap();
|
||||
CHelpSettings settings = (CHelpSettings)settingsMap.get(project.getName());
|
||||
if(settings == null){
|
||||
settings = createHelpSettings(project);
|
||||
settingsMap.put(project.getName(),settings);
|
||||
}
|
||||
return settings;
|
||||
*/
|
||||
return createHelpSettings(project);
|
||||
}
|
||||
|
||||
private static CHelpSettings createHelpSettings(IProject project){
|
||||
String projectName = project.getName();
|
||||
File file = getSettingsFile();
|
||||
CHelpSettings settings = null;
|
||||
Element rootElement = null;
|
||||
|
||||
if(file.isFile()){
|
||||
try{
|
||||
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
||||
Document doc = builder.parse(file);
|
||||
NodeList nodes = doc.getElementsByTagName(ELEMENT_ROOT);
|
||||
|
||||
if (nodes.getLength() > 0)
|
||||
rootElement = (Element)nodes.item(0);
|
||||
|
||||
}catch(ParserConfigurationException e){
|
||||
}catch(SAXException e){
|
||||
}catch(IOException e){
|
||||
}
|
||||
}
|
||||
|
||||
settings = new CHelpSettings(project,rootElement);
|
||||
return settings;
|
||||
}
|
||||
|
||||
private static CHelpSettings getHelpSettings(IProject project){
|
||||
if(project == null)
|
||||
return getDefaultHelpSettings();
|
||||
|
||||
CHelpSettings settings = null;
|
||||
if(fCurrentProject != null && fCurrentSettings != null && project == fCurrentProject)
|
||||
settings = fCurrentSettings;
|
||||
else{
|
||||
fCurrentProject = project;
|
||||
fCurrentSettings = getPersistedHelpSettings(project);
|
||||
settings = fCurrentSettings;
|
||||
}
|
||||
return settings;
|
||||
}
|
||||
|
||||
private static CHelpSettings getHelpSettings(ICHelpInvocationContext context){
|
||||
IProject project = getProjectFromContext(context);
|
||||
|
||||
return getHelpSettings(project);
|
||||
}
|
||||
|
||||
private static IProject getProjectFromContext(ICHelpInvocationContext context){
|
||||
IProject project = context.getProject();
|
||||
if(project == null){
|
||||
ITranslationUnit unit = context.getTranslationUnit();
|
||||
if(unit != null)
|
||||
project = unit.getCProject().getProject();
|
||||
}
|
||||
return project;
|
||||
}
|
||||
|
||||
public static CHelpProviderManager getDefault() {
|
||||
if (fInstance == null) {
|
||||
fInstance = new CHelpProviderManager();
|
||||
}
|
||||
return fInstance;
|
||||
}
|
||||
|
||||
public IFunctionSummary getFunctionInfo(ICHelpInvocationContext context, String name) {
|
||||
CHelpSettings settings = getHelpSettings(context);
|
||||
|
||||
return settings.getFunctionInfo(context,name);
|
||||
}
|
||||
|
||||
public IFunctionSummary[] getMatchingFunctions(ICHelpInvocationContext context, String frag) {
|
||||
CHelpSettings settings = getHelpSettings(context);
|
||||
|
||||
return settings.getMatchingFunctions(context,frag);
|
||||
}
|
||||
|
||||
public ICHelpResourceDescriptor[] getHelpResources(ICHelpInvocationContext context, String name){
|
||||
CHelpSettings settings = getHelpSettings(context);
|
||||
|
||||
return settings.getHelpResources(context,name);
|
||||
}
|
||||
|
||||
public CHelpBookDescriptor[] getCHelpBookDescriptors(ICHelpInvocationContext context){
|
||||
return getHelpSettings(context).getCHelpBookDescriptors();
|
||||
}
|
||||
|
||||
public void serialize(ICHelpInvocationContext context){
|
||||
CHelpSettings settings = getHelpSettings(context);
|
||||
|
||||
File file = getSettingsFile();
|
||||
|
||||
try{
|
||||
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
||||
Document doc;
|
||||
Element rootElement = null;
|
||||
|
||||
if(file.exists()){
|
||||
doc = builder.parse(file);
|
||||
NodeList nodes = doc.getElementsByTagName(ELEMENT_ROOT);
|
||||
|
||||
if (nodes.getLength() > 0)
|
||||
rootElement = (Element)nodes.item(0);
|
||||
}
|
||||
else{
|
||||
doc = builder.newDocument();
|
||||
}
|
||||
|
||||
if(rootElement == null){
|
||||
rootElement = doc.createElement(ELEMENT_ROOT);
|
||||
doc.appendChild(rootElement);
|
||||
}
|
||||
|
||||
settings.serialize(doc,rootElement);
|
||||
|
||||
FileWriter writer = new FileWriter(file);
|
||||
|
||||
Transformer transformer=TransformerFactory.newInstance().newTransformer();
|
||||
transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
|
||||
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //$NON-NLS-1$
|
||||
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
|
||||
DOMSource source = new DOMSource(doc);
|
||||
StreamResult result = new StreamResult(writer);
|
||||
|
||||
transformer.transform(source, result);
|
||||
|
||||
writer.close();
|
||||
}catch(ParserConfigurationException e){
|
||||
}catch(SAXException e){
|
||||
}catch(TransformerConfigurationException e){
|
||||
}catch(TransformerException e){
|
||||
}catch(IOException e){
|
||||
}
|
||||
}
|
||||
}
|
|
@ -67,3 +67,6 @@ CElementLabels.anonymous=(anon)
|
|||
CElementLabels.concat_string=\ -\
|
||||
CElementLabels.comma_string=,\
|
||||
CElementLabels.declseparator_string=\ :\
|
||||
CHelpConfigurationPropertyPage.buttonLabels.CheckAll=Check All
|
||||
CHelpConfigurationPropertyPage.buttonLabels.UncheckAll=Uncheck All
|
||||
CHelpConfigurationPropertyPage.HelpBooks=Help books
|
||||
|
|
|
@ -9,7 +9,7 @@ import java.io.InputStream;
|
|||
|
||||
import org.eclipse.jface.text.BadLocationException;
|
||||
import org.eclipse.jface.text.IDocument;
|
||||
/**
|
||||
/**
|
||||
* Input stream which reads from a document
|
||||
*/
|
||||
public class DocumentInputStream extends InputStream {
|
||||
|
|
|
@ -33,7 +33,7 @@ import org.eclipse.cdt.core.search.ICSearchScope;
|
|||
import org.eclipse.cdt.core.search.IMatch;
|
||||
import org.eclipse.cdt.core.search.OrPattern;
|
||||
import org.eclipse.cdt.core.search.SearchEngine;
|
||||
import org.eclipse.cdt.internal.ui.CCompletionContributorManager;
|
||||
import org.eclipse.cdt.internal.ui.CHelpProviderManager;
|
||||
import org.eclipse.cdt.internal.ui.ICHelpContextIds;
|
||||
import org.eclipse.cdt.internal.ui.actions.WorkbenchRunnableAdapter;
|
||||
import org.eclipse.cdt.internal.ui.codemanipulation.AddIncludesOperation;
|
||||
|
@ -44,7 +44,7 @@ import org.eclipse.cdt.ui.CUIPlugin;
|
|||
import org.eclipse.cdt.ui.IFunctionSummary;
|
||||
import org.eclipse.cdt.ui.IRequiredInclude;
|
||||
import org.eclipse.cdt.ui.browser.typeinfo.TypeInfoLabelProvider;
|
||||
import org.eclipse.cdt.ui.text.ICCompletionInvocationContext;
|
||||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
|
@ -217,7 +217,7 @@ public class AddIncludeOnSelectionAction extends Action implements IUpdate {
|
|||
final IFunctionSummary[] fs = new IFunctionSummary[1];
|
||||
IRunnableWithProgress op = new IRunnableWithProgress() {
|
||||
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
|
||||
ICCompletionInvocationContext context = new ICCompletionInvocationContext() {
|
||||
ICHelpInvocationContext context = new ICHelpInvocationContext() {
|
||||
|
||||
public IProject getProject() {
|
||||
ITranslationUnit u = getTranslationUnit();
|
||||
|
@ -232,7 +232,7 @@ public class AddIncludeOnSelectionAction extends Action implements IUpdate {
|
|||
}
|
||||
};
|
||||
|
||||
fs[0] = CCompletionContributorManager.getDefault().getFunctionInfo(context, name);
|
||||
fs[0] = CHelpProviderManager.getDefault().getFunctionInfo(context, name);
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
|
|
@ -30,6 +30,7 @@ import org.eclipse.cdt.internal.ui.text.CPairMatcher;
|
|||
import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration;
|
||||
import org.eclipse.cdt.internal.ui.text.CTextTools;
|
||||
import org.eclipse.cdt.internal.ui.text.contentassist.ContentAssistPreference;
|
||||
import org.eclipse.cdt.internal.ui.util.CUIHelp;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.IWorkingCopyManager;
|
||||
import org.eclipse.cdt.ui.PreferenceConstants;
|
||||
|
@ -1061,6 +1062,8 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS
|
|||
fSourceViewerDecorationSupport.setCharacterPairMatcher(fBracketMatcher);
|
||||
fSourceViewerDecorationSupport.setMatchingCharacterPainterPreferenceKeys(MATCHING_BRACKETS, MATCHING_BRACKETS_COLOR);
|
||||
|
||||
CUIHelp.setHelp(this, sourceViewer.getTextWidget(), ICHelpContextIds.CEDITOR_VIEW);
|
||||
|
||||
return sourceViewer;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,156 +0,0 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2004 QNX Software Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.ui.text;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.eclipse.core.expressions.EvaluationContext;
|
||||
import org.eclipse.core.expressions.EvaluationResult;
|
||||
import org.eclipse.core.expressions.Expression;
|
||||
import org.eclipse.core.expressions.ExpressionConverter;
|
||||
import org.eclipse.core.expressions.ExpressionTagNames;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.ISafeRunnable;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
|
||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||
import org.eclipse.cdt.internal.ui.dialogs.StatusInfo;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.ICCompletionContributor;
|
||||
|
||||
/**
|
||||
* CCompletionContributorDescriptor
|
||||
*/
|
||||
public class CCompletionContributorDescriptor {
|
||||
private IConfigurationElement fConfigurationElement;
|
||||
private ICCompletionContributor fContributorInstance;
|
||||
private ITranslationUnit fLastUnit;
|
||||
private boolean fLastResult;
|
||||
|
||||
private static final String ID= "id"; //$NON-NLS-1$
|
||||
private static final String CLASS= "class"; //$NON-NLS-1$
|
||||
|
||||
public CCompletionContributorDescriptor(IConfigurationElement element) {
|
||||
fConfigurationElement= element;
|
||||
fContributorInstance= null;
|
||||
fLastUnit= null;
|
||||
}
|
||||
|
||||
public IStatus checkSyntax() {
|
||||
IConfigurationElement[] children= fConfigurationElement.getChildren(ExpressionTagNames.ENABLEMENT);
|
||||
if (children.length > 1) {
|
||||
String id= fConfigurationElement.getAttribute(ID);
|
||||
return new StatusInfo(IStatus.ERROR, "Only one <enablement> element allowed. Disabling " + id); //$NON-NLS-1$
|
||||
}
|
||||
return new StatusInfo(IStatus.OK, "Syntactically correct completion contributor"); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
private boolean matches(ITranslationUnit unit) {
|
||||
IConfigurationElement[] children= fConfigurationElement.getChildren(ExpressionTagNames.ENABLEMENT);
|
||||
if (children.length == 1) {
|
||||
if (unit.equals(fLastUnit)) {
|
||||
return fLastResult;
|
||||
}
|
||||
try {
|
||||
ExpressionConverter parser= ExpressionConverter.getDefault();
|
||||
Expression expression= parser.perform(children[0]);
|
||||
EvaluationContext evalContext= new EvaluationContext(null, unit);
|
||||
evalContext.addVariable("translationUnit", unit); //$NON-NLS-1$
|
||||
String[] natures= unit.getCProject().getProject().getDescription().getNatureIds();
|
||||
evalContext.addVariable("projectNatures", Arrays.asList(natures)); //$NON-NLS-1$
|
||||
|
||||
fLastResult= !(expression.evaluate(evalContext) != EvaluationResult.TRUE);
|
||||
fLastUnit= unit;
|
||||
return fLastResult;
|
||||
} catch (CoreException e) {
|
||||
CUIPlugin.getDefault().log(e);
|
||||
}
|
||||
}
|
||||
// For backward compat. we have to return true in no enablement was specified.
|
||||
return true;
|
||||
}
|
||||
|
||||
public ICCompletionContributor getCCompletionContributor(ITranslationUnit cunit) throws CoreException {
|
||||
if (matches(cunit)) {
|
||||
if (fContributorInstance == null) {
|
||||
try {
|
||||
fContributorInstance= (ICCompletionContributor)fConfigurationElement.createExecutableExtension(CLASS);
|
||||
final ICCompletionContributor c = fContributorInstance;
|
||||
// Run the initialiser the class
|
||||
ISafeRunnable runnable = new ISafeRunnable() {
|
||||
public void run() throws Exception {
|
||||
// Initialize
|
||||
c.initialize();
|
||||
}
|
||||
public void handleException(Throwable exception) {
|
||||
}
|
||||
};
|
||||
Platform.run(runnable);
|
||||
} catch (ClassCastException e) {
|
||||
throw new CoreException(new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, 0, "", e)); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
return fContributorInstance;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private boolean matches(IProject project) {
|
||||
IConfigurationElement[] children= fConfigurationElement.getChildren(ExpressionTagNames.ENABLEMENT);
|
||||
if (children.length == 1 && project != null) {
|
||||
try {
|
||||
ExpressionConverter parser= ExpressionConverter.getDefault();
|
||||
Expression expression= parser.perform(children[0]);
|
||||
EvaluationContext evalContext= new EvaluationContext(null, project);
|
||||
String[] natures= project.getDescription().getNatureIds();
|
||||
evalContext.addVariable("projectNatures", Arrays.asList(natures)); //$NON-NLS-1$
|
||||
|
||||
fLastResult= !(expression.evaluate(evalContext) != EvaluationResult.TRUE);
|
||||
return fLastResult;
|
||||
} catch (CoreException e) {
|
||||
CUIPlugin.getDefault().log(e);
|
||||
}
|
||||
}
|
||||
// For backward compat. we have to return true in no enablement was specified.
|
||||
return true;
|
||||
}
|
||||
|
||||
public ICCompletionContributor getCCompletionContributor(IProject project) throws CoreException {
|
||||
if (matches(project)) {
|
||||
if (fContributorInstance == null) {
|
||||
try {
|
||||
fContributorInstance= (ICCompletionContributor)fConfigurationElement.createExecutableExtension(CLASS);
|
||||
final ICCompletionContributor c = fContributorInstance;
|
||||
// Run the initialiser the class
|
||||
ISafeRunnable runnable = new ISafeRunnable() {
|
||||
public void run() throws Exception {
|
||||
// Initialize
|
||||
c.initialize();
|
||||
}
|
||||
public void handleException(Throwable exception) {
|
||||
}
|
||||
};
|
||||
Platform.run(runnable);
|
||||
} catch (ClassCastException e) {
|
||||
throw new CoreException(new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, 0, "", e)); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
return fContributorInstance;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,133 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.internal.ui.text;
|
||||
|
||||
import org.eclipse.cdt.core.CCProjectNature;
|
||||
import org.eclipse.cdt.core.CProjectNature;
|
||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||
import org.eclipse.cdt.ui.ICHelpBook;
|
||||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
||||
/**
|
||||
* This class represents the CHelpBook settings
|
||||
*
|
||||
* @since 2.1
|
||||
*/
|
||||
public class CHelpBookDescriptor {
|
||||
final private static String ELEMENT_BOOK = "book"; //$NON-NLS-1$
|
||||
final private static String ATTRIBUTE_TITLE = "title"; //$NON-NLS-1$
|
||||
final private static String ATTRIBUTE_ENABLED = "enabled"; //$NON-NLS-1$
|
||||
final private static String VALUE_TRUE = "true"; //$NON-NLS-1$
|
||||
final private static String VALUE_FALSE = "false"; //$NON-NLS-1$
|
||||
|
||||
private boolean fEnabled = true;
|
||||
private ICHelpBook fCHelpBook;
|
||||
|
||||
CHelpBookDescriptor(ICHelpBook book){
|
||||
this(book,null);
|
||||
}
|
||||
|
||||
CHelpBookDescriptor(ICHelpBook book, Element parentElement){
|
||||
fCHelpBook = book;
|
||||
|
||||
if(parentElement == null)
|
||||
return;
|
||||
|
||||
NodeList bookElements = parentElement.getElementsByTagName(ELEMENT_BOOK);
|
||||
if(bookElements.getLength() == 0)
|
||||
return;
|
||||
|
||||
String title = book.getTitle();
|
||||
for(int i = 0; i < bookElements.getLength(); i++){
|
||||
Element bookElement = (Element)bookElements.item(i);
|
||||
if(title.equals(bookElement.getAttribute(ATTRIBUTE_TITLE))){
|
||||
fEnabled = VALUE_TRUE.equalsIgnoreCase(bookElement.getAttribute(ATTRIBUTE_ENABLED));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isEnabled(){
|
||||
return fEnabled;
|
||||
}
|
||||
|
||||
public boolean matches(ICHelpInvocationContext context){
|
||||
ITranslationUnit unit = context.getTranslationUnit();
|
||||
if(unit != null)
|
||||
return matches(unit);
|
||||
IProject project = context.getProject();
|
||||
if(project != null)
|
||||
return matches(project);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean matches(IProject project){
|
||||
ICHelpBook book = getCHelpBook();
|
||||
boolean bMatches = false;
|
||||
switch(book.getCHelpType()){
|
||||
case ICHelpBook.HELP_TYPE_CPP:
|
||||
try{
|
||||
bMatches = project.hasNature(CCProjectNature.CC_NATURE_ID);
|
||||
}catch(CoreException e){
|
||||
}
|
||||
break;
|
||||
case ICHelpBook.HELP_TYPE_C:
|
||||
case ICHelpBook.HELP_TYPE_ASM:
|
||||
try{
|
||||
bMatches = project.hasNature(CProjectNature.C_NATURE_ID);
|
||||
}catch(CoreException e){
|
||||
}
|
||||
break;
|
||||
default:
|
||||
bMatches = true;
|
||||
}
|
||||
return bMatches;
|
||||
}
|
||||
|
||||
public boolean matches(ITranslationUnit unit){
|
||||
ICHelpBook book = getCHelpBook();
|
||||
boolean bMatches = false;
|
||||
switch(book.getCHelpType()){
|
||||
case ICHelpBook.HELP_TYPE_CPP:
|
||||
bMatches = unit.isCXXLanguage();
|
||||
break;
|
||||
case ICHelpBook.HELP_TYPE_C:
|
||||
bMatches = unit.isCLanguage() || unit.isCXXLanguage();
|
||||
break;
|
||||
case ICHelpBook.HELP_TYPE_ASM:
|
||||
bMatches = unit.isASMLanguage();
|
||||
break;
|
||||
default:
|
||||
bMatches = true;
|
||||
}
|
||||
return bMatches;
|
||||
}
|
||||
|
||||
public void enable(boolean enable){
|
||||
fEnabled = enable;
|
||||
}
|
||||
|
||||
public ICHelpBook getCHelpBook(){
|
||||
return fCHelpBook;
|
||||
}
|
||||
|
||||
public void serialize(Document doc, Element parentElement){
|
||||
Element bookElement = doc.createElement(ELEMENT_BOOK);
|
||||
bookElement.setAttribute(ATTRIBUTE_TITLE,getCHelpBook().getTitle());
|
||||
bookElement.setAttribute(ATTRIBUTE_ENABLED,fEnabled ? VALUE_TRUE : VALUE_FALSE);
|
||||
parentElement.appendChild(bookElement);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,180 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.internal.ui.text;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.cdt.ui.ICHelpBook;
|
||||
import org.eclipse.cdt.ui.ICHelpProvider;
|
||||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.ISafeRunnable;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
||||
/**
|
||||
* This class represents the CHelpProvider settings
|
||||
*
|
||||
* @since 2.1
|
||||
*/
|
||||
public class CHelpProviderDescriptor {
|
||||
private static final String CLASS= "class"; //$NON-NLS-1$
|
||||
|
||||
final private static String ELEMENT_PROVIDER = "provider"; //$NON-NLS-1$
|
||||
final private static String ATTRIBUTE_ID = "id"; //$NON-NLS-1$
|
||||
|
||||
private static Map fProvidersMap = null;
|
||||
|
||||
private ICHelpProvider fHelpProvider = null;
|
||||
private IConfigurationElement fConfigElement;
|
||||
private CHelpBookDescriptor fHelpBookDescriptors[] = null;
|
||||
private IProject fProject;
|
||||
|
||||
public CHelpProviderDescriptor(IProject project, IConfigurationElement element){
|
||||
this(project,element,null);
|
||||
}
|
||||
|
||||
public CHelpProviderDescriptor(IProject project, IConfigurationElement configElement, Element parentElement){
|
||||
fConfigElement = configElement;
|
||||
fProject = project;
|
||||
|
||||
if(parentElement == null)
|
||||
return;
|
||||
|
||||
NodeList nodes = parentElement.getElementsByTagName(ELEMENT_PROVIDER);
|
||||
Element projectElement = getDescriptorElement(parentElement);
|
||||
|
||||
if(projectElement == null)
|
||||
return;
|
||||
|
||||
getCHelpBookDescriptors(projectElement);
|
||||
}
|
||||
|
||||
private Element getDescriptorElement(Element parentElement){
|
||||
String id = getConfigurationElement().getAttribute(ATTRIBUTE_ID);
|
||||
if(id == null || "".equals(id)) //$NON-NLS-1$
|
||||
return null;
|
||||
|
||||
NodeList nodes = parentElement.getElementsByTagName(ELEMENT_PROVIDER);
|
||||
for(int i = 0; i < nodes.getLength(); i++){
|
||||
Element descriptorEl = (Element)nodes.item(i);
|
||||
if(id.equals(descriptorEl.getAttribute(ATTRIBUTE_ID))){
|
||||
return descriptorEl;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static Map getProvidersMap(){
|
||||
if(fProvidersMap == null){
|
||||
fProvidersMap = new HashMap();
|
||||
}
|
||||
return fProvidersMap;
|
||||
}
|
||||
|
||||
private static ICHelpProvider getCHelpProvider(IConfigurationElement element){
|
||||
String id = element.getAttribute(ATTRIBUTE_ID);
|
||||
if(id == null || "".equals(id)) //$NON-NLS-1$
|
||||
return null;
|
||||
|
||||
Map providersMap = getProvidersMap();
|
||||
try{
|
||||
ICHelpProvider provider = (ICHelpProvider)providersMap.get(id);
|
||||
if(provider == null){
|
||||
provider = (ICHelpProvider)element.createExecutableExtension(CLASS);
|
||||
providersMap.put(id,provider);
|
||||
}
|
||||
final ICHelpProvider c = provider;
|
||||
// Run the initialiser the class
|
||||
ISafeRunnable runnable = new ISafeRunnable() {
|
||||
public void run() throws Exception {
|
||||
// Initialize
|
||||
c.initialize();
|
||||
}
|
||||
public void handleException(Throwable exception) {
|
||||
}
|
||||
};
|
||||
Platform.run(runnable);
|
||||
return provider;
|
||||
}
|
||||
catch(Exception e){
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public IConfigurationElement getConfigurationElement(){
|
||||
return fConfigElement;
|
||||
}
|
||||
|
||||
public ICHelpProvider getCHelpProvider(){
|
||||
if(fHelpProvider == null)
|
||||
fHelpProvider = getCHelpProvider(fConfigElement);
|
||||
return fHelpProvider;
|
||||
}
|
||||
|
||||
public CHelpBookDescriptor [] getCHelpBookDescriptors(Element projectElement){
|
||||
if(fHelpBookDescriptors == null || projectElement != null){
|
||||
ICHelpProvider provider = getCHelpProvider();
|
||||
if(provider != null){
|
||||
ICHelpBook books[] = provider.getCHelpBooks();
|
||||
if(books != null){
|
||||
List descriptorList = new ArrayList();
|
||||
for(int i = 0; i < books.length; i++){
|
||||
CHelpBookDescriptor des = new CHelpBookDescriptor(books[i],projectElement);
|
||||
if(des.matches(fProject))
|
||||
descriptorList.add(des);
|
||||
}
|
||||
fHelpBookDescriptors = (CHelpBookDescriptor[])descriptorList.toArray(new CHelpBookDescriptor[descriptorList.size()]);
|
||||
}
|
||||
}
|
||||
if(fHelpBookDescriptors == null)
|
||||
fHelpBookDescriptors = new CHelpBookDescriptor[0];
|
||||
}
|
||||
return fHelpBookDescriptors;
|
||||
}
|
||||
|
||||
public CHelpBookDescriptor [] getCHelpBookDescriptors(){
|
||||
return getCHelpBookDescriptors(null);
|
||||
}
|
||||
|
||||
ICHelpBook[] getEnabledMatchedCHelpBooks(ICHelpInvocationContext context){
|
||||
CHelpBookDescriptor bookDescriptors[] = getCHelpBookDescriptors();
|
||||
if(bookDescriptors.length == 0)
|
||||
return null;
|
||||
List bookList = new ArrayList();
|
||||
for(int i = 0; i < bookDescriptors.length; i++){
|
||||
if(bookDescriptors[i].isEnabled() && bookDescriptors[i].matches(context))
|
||||
bookList.add(bookDescriptors[i].getCHelpBook());
|
||||
}
|
||||
return (ICHelpBook[])bookList.toArray(new ICHelpBook[bookList.size()]);
|
||||
}
|
||||
|
||||
public void serialize(Document doc, Element parentElement){
|
||||
String id = getConfigurationElement().getAttribute(ATTRIBUTE_ID);
|
||||
if(id == null || "".equals(id)) //$NON-NLS-1$
|
||||
return;
|
||||
|
||||
CHelpBookDescriptor bookDescriptors[] = getCHelpBookDescriptors();
|
||||
Element providerElement = doc.createElement(ELEMENT_PROVIDER);
|
||||
providerElement.setAttribute(ATTRIBUTE_ID,id);
|
||||
parentElement.appendChild(providerElement);
|
||||
|
||||
for(int i = 0; i < bookDescriptors.length; i++){
|
||||
bookDescriptors[i].serialize(doc,providerElement);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,186 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.internal.ui.text;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.ICHelpBook;
|
||||
import org.eclipse.cdt.ui.ICHelpProvider;
|
||||
import org.eclipse.cdt.ui.ICHelpResourceDescriptor;
|
||||
import org.eclipse.cdt.ui.IFunctionSummary;
|
||||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
||||
/**
|
||||
* This class represents the Help settings for the current project
|
||||
*
|
||||
* @since 2.1
|
||||
*/
|
||||
public class CHelpSettings {
|
||||
public static final String CONTRIBUTION_EXTENSION = "CHelpProvider"; //$NON-NLS-1$
|
||||
|
||||
final private static String ELEMENT_PROJECT = "project"; //$NON-NLS-1$
|
||||
final private static String ATTRIBUTE_NAME = "name"; //$NON-NLS-1$
|
||||
|
||||
private IProject fProject;
|
||||
private static IConfigurationElement fConfigElements[] = null;
|
||||
private CHelpProviderDescriptor fProviderDescriptors[] = null;
|
||||
|
||||
public CHelpSettings(IProject project){
|
||||
this(project,null);
|
||||
}
|
||||
|
||||
public CHelpSettings(IProject project, Element parentElement){
|
||||
fProject = project;
|
||||
|
||||
if(parentElement == null)
|
||||
return;
|
||||
|
||||
Element projectElement = getProjectElement(parentElement);
|
||||
if(projectElement == null)
|
||||
return;
|
||||
|
||||
getCHelpProviderDescriptors(projectElement);
|
||||
}
|
||||
|
||||
private Element getProjectElement(Element parentElement){
|
||||
NodeList nodes = parentElement.getElementsByTagName(ELEMENT_PROJECT);
|
||||
for(int i = 0; i < nodes.getLength(); i++){
|
||||
Element curProject = (Element)nodes.item(i);
|
||||
if(getProject().getName().equals(curProject.getAttribute(ATTRIBUTE_NAME)))
|
||||
return curProject;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public IProject getProject(){
|
||||
return fProject;
|
||||
}
|
||||
|
||||
public CHelpProviderDescriptor[] getCHelpProviderDescriptors(Element projectElement){
|
||||
if(fProviderDescriptors == null || projectElement != null){
|
||||
IConfigurationElement congifElements[] = getConfigElements();
|
||||
fProviderDescriptors = new CHelpProviderDescriptor[congifElements.length];
|
||||
for(int i = 0; i < congifElements.length; i++){
|
||||
fProviderDescriptors[i] = new CHelpProviderDescriptor(fProject,congifElements[i],projectElement);
|
||||
}
|
||||
}
|
||||
return fProviderDescriptors;
|
||||
}
|
||||
|
||||
public CHelpProviderDescriptor[] getCHelpProviderDescriptors(){
|
||||
return getCHelpProviderDescriptors(null);
|
||||
}
|
||||
|
||||
public CHelpBookDescriptor[] getCHelpBookDescriptors(){
|
||||
CHelpProviderDescriptor providerDescriptors[] = getCHelpProviderDescriptors();
|
||||
if(providerDescriptors.length == 0)
|
||||
return new CHelpBookDescriptor[0];
|
||||
|
||||
List bookList = new ArrayList();
|
||||
for(int i = 0; i < providerDescriptors.length; i++){
|
||||
CHelpBookDescriptor bookDescriptors[] = providerDescriptors[i].getCHelpBookDescriptors();
|
||||
if(bookDescriptors.length != 0)
|
||||
bookList.addAll(Arrays.asList(bookDescriptors));
|
||||
}
|
||||
return (CHelpBookDescriptor[])bookList.toArray(new CHelpBookDescriptor[bookList.size()]);
|
||||
}
|
||||
|
||||
private static IConfigurationElement[] getConfigElements(){
|
||||
if(fConfigElements == null){
|
||||
fConfigElements= Platform.getExtensionRegistry().getConfigurationElementsFor(CUIPlugin.PLUGIN_ID, CONTRIBUTION_EXTENSION);
|
||||
if(fConfigElements == null)
|
||||
fConfigElements = new IConfigurationElement[0];
|
||||
}
|
||||
return fConfigElements;
|
||||
}
|
||||
|
||||
public IFunctionSummary getFunctionInfo(ICHelpInvocationContext context, String name){
|
||||
CHelpProviderDescriptor providerDescriptors[] = getCHelpProviderDescriptors();
|
||||
for(int i = 0; i < providerDescriptors.length; i++){
|
||||
ICHelpBook books[] = providerDescriptors[i].getEnabledMatchedCHelpBooks(context);
|
||||
if(books != null && books.length != 0){
|
||||
ICHelpProvider provider = providerDescriptors[i].getCHelpProvider();
|
||||
if(provider != null){
|
||||
IFunctionSummary summary = provider.getFunctionInfo(context,books,name);
|
||||
if(summary != null)
|
||||
return summary;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public IFunctionSummary[] getMatchingFunctions(ICHelpInvocationContext context, String frag){
|
||||
CHelpProviderDescriptor providerDescriptors[] = getCHelpProviderDescriptors();
|
||||
List sumaryList = new ArrayList();
|
||||
for(int i = 0; i < providerDescriptors.length; i++){
|
||||
ICHelpBook books[] = providerDescriptors[i].getEnabledMatchedCHelpBooks(context);
|
||||
if(books != null && books.length != 0){
|
||||
ICHelpProvider provider = providerDescriptors[i].getCHelpProvider();
|
||||
if(provider != null){
|
||||
IFunctionSummary summaries[] = provider.getMatchingFunctions(context,books,frag);
|
||||
if(summaries != null && summaries.length != 0)
|
||||
sumaryList.addAll(Arrays.asList(summaries));
|
||||
}
|
||||
}
|
||||
}
|
||||
if(sumaryList.size() == 0)
|
||||
return null;
|
||||
|
||||
return (IFunctionSummary[])sumaryList.toArray(new IFunctionSummary[sumaryList.size()]);
|
||||
}
|
||||
|
||||
public ICHelpResourceDescriptor[] getHelpResources(ICHelpInvocationContext context, String name){
|
||||
CHelpProviderDescriptor providerDescriptors[] = getCHelpProviderDescriptors();
|
||||
List resourcesList = new ArrayList();
|
||||
for(int i = 0; i < providerDescriptors.length; i++){
|
||||
ICHelpBook books[] = providerDescriptors[i].getEnabledMatchedCHelpBooks(context);
|
||||
if(books != null && books.length != 0){
|
||||
ICHelpProvider provider = providerDescriptors[i].getCHelpProvider();
|
||||
if(provider != null){
|
||||
ICHelpResourceDescriptor resources[] = provider.getHelpResources(context,books,name);
|
||||
if(resources != null && resources.length != 0)
|
||||
resourcesList.addAll(Arrays.asList(resources));
|
||||
}
|
||||
}
|
||||
}
|
||||
if(resourcesList.size() == 0)
|
||||
return null;
|
||||
|
||||
return (ICHelpResourceDescriptor[])resourcesList.toArray(new ICHelpResourceDescriptor[resourcesList.size()]);
|
||||
}
|
||||
|
||||
public void serialize(Document doc, Element parentElement){
|
||||
CHelpProviderDescriptor providerDescriptors[] = getCHelpProviderDescriptors();
|
||||
Element oldProjectElement = getProjectElement(parentElement);
|
||||
|
||||
Element projectElement = doc.createElement(ELEMENT_PROJECT);
|
||||
projectElement.setAttribute(ATTRIBUTE_NAME,getProject().getName());
|
||||
|
||||
if(oldProjectElement != null)
|
||||
parentElement.replaceChild(projectElement,oldProjectElement);
|
||||
else
|
||||
parentElement.appendChild(projectElement);
|
||||
|
||||
for(int i = 0; i < providerDescriptors.length; i++){
|
||||
providerDescriptors[i].serialize(doc,projectElement);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -12,13 +12,13 @@ package org.eclipse.cdt.internal.ui.text.c.hover;
|
|||
|
||||
|
||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||
import org.eclipse.cdt.internal.ui.CCompletionContributorManager;
|
||||
import org.eclipse.cdt.internal.ui.CHelpProviderManager;
|
||||
import org.eclipse.cdt.internal.ui.editor.CEditorMessages;
|
||||
import org.eclipse.cdt.internal.ui.text.CWordFinder;
|
||||
import org.eclipse.cdt.internal.ui.text.HTMLPrinter;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.IFunctionSummary;
|
||||
import org.eclipse.cdt.ui.text.ICCompletionInvocationContext;
|
||||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.jface.text.IRegion;
|
||||
import org.eclipse.jface.text.ITextViewer;
|
||||
|
@ -52,7 +52,7 @@ public class CDocHover extends AbstractCEditorTextHover {
|
|||
|
||||
// call the Help to get info
|
||||
|
||||
ICCompletionInvocationContext context = new ICCompletionInvocationContext() {
|
||||
ICHelpInvocationContext context = new ICHelpInvocationContext() {
|
||||
|
||||
public IProject getProject() {
|
||||
ITranslationUnit unit = getTranslationUnit();
|
||||
|
@ -68,7 +68,7 @@ public class CDocHover extends AbstractCEditorTextHover {
|
|||
}
|
||||
};
|
||||
|
||||
IFunctionSummary fs = CCompletionContributorManager.getDefault().getFunctionInfo(context, expression);
|
||||
IFunctionSummary fs = CHelpProviderManager.getDefault().getFunctionInfo(context, expression);
|
||||
if (fs != null) {
|
||||
buffer.append(CEditorMessages.getString("DefaultCEditorTextHover.html.name")); //$NON-NLS-1$
|
||||
buffer.append(HTMLPrinter.convertToHTMLContent(fs.getName()));
|
||||
|
|
|
@ -26,7 +26,7 @@ import org.eclipse.cdt.core.search.SearchEngine;
|
|||
import org.eclipse.cdt.internal.corext.template.ContextType;
|
||||
import org.eclipse.cdt.internal.corext.template.ContextTypeRegistry;
|
||||
import org.eclipse.cdt.internal.corext.template.ITemplateEditor;
|
||||
import org.eclipse.cdt.internal.ui.CCompletionContributorManager;
|
||||
import org.eclipse.cdt.internal.ui.CHelpProviderManager;
|
||||
import org.eclipse.cdt.internal.ui.CPluginImages;
|
||||
import org.eclipse.cdt.internal.ui.CUIMessages;
|
||||
import org.eclipse.cdt.internal.ui.editor.CEditor;
|
||||
|
@ -35,7 +35,7 @@ import org.eclipse.cdt.internal.ui.text.template.TemplateEngine;
|
|||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.IFunctionSummary;
|
||||
import org.eclipse.cdt.ui.IWorkingCopyManager;
|
||||
import org.eclipse.cdt.ui.text.ICCompletionInvocationContext;
|
||||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
import org.eclipse.cdt.ui.text.ICCompletionProposal;
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
|
@ -451,7 +451,7 @@ public class CCompletionProcessor implements IContentAssistProcessor {
|
|||
|
||||
IFunctionSummary[] summary;
|
||||
|
||||
ICCompletionInvocationContext context = new ICCompletionInvocationContext() {
|
||||
ICHelpInvocationContext context = new ICHelpInvocationContext() {
|
||||
|
||||
public IProject getProject() {
|
||||
return fCurrentSourceUnit.getCProject().getProject();
|
||||
|
@ -461,7 +461,7 @@ public class CCompletionProcessor implements IContentAssistProcessor {
|
|||
return fCurrentSourceUnit;
|
||||
}
|
||||
};
|
||||
summary = CCompletionContributorManager.getDefault().getMatchingFunctions(context, prefix);
|
||||
summary = CHelpProviderManager.getDefault().getMatchingFunctions(context, prefix);
|
||||
if(summary == null) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,130 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.internal.ui.util;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||
import org.eclipse.cdt.internal.ui.CHelpProviderManager;
|
||||
import org.eclipse.cdt.internal.ui.editor.CEditor;
|
||||
import org.eclipse.cdt.internal.ui.text.CWordFinder;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.ICHelpResourceDescriptor;
|
||||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.help.HelpSystem;
|
||||
import org.eclipse.help.IContext;
|
||||
import org.eclipse.help.IHelpResource;
|
||||
import org.eclipse.jface.text.IDocument;
|
||||
import org.eclipse.jface.text.IRegion;
|
||||
import org.eclipse.jface.text.ITextSelection;
|
||||
import org.eclipse.ui.IEditorInput;
|
||||
import org.eclipse.ui.help.WorkbenchHelp;
|
||||
|
||||
/**
|
||||
*
|
||||
* @since 2.1
|
||||
*/
|
||||
public class CHelpDisplayContext implements IContext {
|
||||
private IHelpResource[] fHelpResources;
|
||||
private String fText;
|
||||
|
||||
public static void displayHelp(String contextId, CEditor editor) throws CoreException {
|
||||
String selected = getSelectedString(editor);
|
||||
IContext context= HelpSystem.getContext(contextId);
|
||||
if (context != null) {
|
||||
if (selected != null && selected.length() > 0) {
|
||||
context= new CHelpDisplayContext(context, editor, selected);
|
||||
}
|
||||
WorkbenchHelp.displayHelp(context);
|
||||
}
|
||||
}
|
||||
|
||||
private static String getSelectedString(CEditor editor){
|
||||
String expression = null;
|
||||
try{
|
||||
ITextSelection selection = (ITextSelection)editor.getSite().getSelectionProvider().getSelection();
|
||||
IDocument document = editor.getDocumentProvider().getDocument(editor.getEditorInput());
|
||||
IRegion region = CWordFinder.findWord(document, selection.getOffset());
|
||||
expression = document.get(region.getOffset(), region.getLength());
|
||||
}
|
||||
catch(Exception e){
|
||||
}
|
||||
return expression;
|
||||
}
|
||||
|
||||
public CHelpDisplayContext(IContext context, final CEditor editor , String selected) throws CoreException {
|
||||
|
||||
List helpResources= new ArrayList();
|
||||
|
||||
ICHelpInvocationContext invocationContext = new ICHelpInvocationContext() {
|
||||
|
||||
public IProject getProject() {
|
||||
ITranslationUnit unit = getTranslationUnit();
|
||||
if (unit != null) {
|
||||
return unit.getCProject().getProject();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public ITranslationUnit getTranslationUnit() {
|
||||
IEditorInput editorInput= editor.getEditorInput();
|
||||
return CUIPlugin.getDefault().getWorkingCopyManager().getWorkingCopy(editorInput);
|
||||
}
|
||||
};
|
||||
|
||||
if (context != null) {
|
||||
IHelpResource[] resources= context.getRelatedTopics();
|
||||
if (resources != null){
|
||||
helpResources.addAll(Arrays.asList(resources));
|
||||
}
|
||||
}
|
||||
|
||||
ICHelpResourceDescriptor providerResources[] = CHelpProviderManager.getDefault().getHelpResources(invocationContext,selected);
|
||||
if(providerResources != null){
|
||||
for(int i = 0; i < providerResources.length; i++){
|
||||
helpResources.addAll(Arrays.asList(providerResources[i].getHelpResources()));
|
||||
}
|
||||
}
|
||||
|
||||
fHelpResources= (IHelpResource[]) helpResources.toArray(new IHelpResource[helpResources.size()]);
|
||||
if (fText == null || fText.length() == 0) {
|
||||
if (context != null) {
|
||||
fText= context.getText();
|
||||
}
|
||||
}
|
||||
if (fText != null && fText.length() == 0) {
|
||||
fText= null;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean doesNotExist(URL url) {
|
||||
if (url.getProtocol().equals("file")) { //$NON-NLS-1$
|
||||
File file= new File(url.getFile());
|
||||
return !file.exists();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public IHelpResource[] getRelatedTopics() {
|
||||
return fHelpResources;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return fText;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
|
||||
package org.eclipse.cdt.internal.ui.util;
|
||||
|
||||
import org.eclipse.cdt.internal.ui.editor.CEditor;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.swt.custom.StyledText;
|
||||
import org.eclipse.swt.events.HelpEvent;
|
||||
import org.eclipse.swt.events.HelpListener;
|
||||
|
||||
/**
|
||||
*
|
||||
* @since 2.1
|
||||
*/
|
||||
public class CUIHelp {
|
||||
|
||||
public static void setHelp(CEditor editor, StyledText text, String contextId) {
|
||||
CUIHelpListener listener= new CUIHelpListener(editor, contextId);
|
||||
text.addHelpListener(listener);
|
||||
}
|
||||
|
||||
private static class CUIHelpListener implements HelpListener {
|
||||
|
||||
private String fContextId;
|
||||
private CEditor fEditor;
|
||||
|
||||
public CUIHelpListener(CEditor editor, String contextId) {
|
||||
fContextId= contextId;
|
||||
fEditor= editor;
|
||||
}
|
||||
|
||||
/*
|
||||
* @see HelpListener#helpRequested(HelpEvent)
|
||||
*
|
||||
*/
|
||||
public void helpRequested(HelpEvent e) {
|
||||
try {
|
||||
CHelpDisplayContext.displayHelp(fContextId, fEditor);
|
||||
} catch (CoreException x) {
|
||||
CUIPlugin.getDefault().log(x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2004 QNX Software Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.ui;
|
||||
|
||||
import org.eclipse.cdt.ui.text.ICCompletionInvocationContext;
|
||||
|
||||
|
||||
public interface ICCompletionContributor {
|
||||
|
||||
/**
|
||||
* Initialize the completion contributor class
|
||||
*/
|
||||
void initialize();
|
||||
|
||||
/**
|
||||
* get the matching function of a given name
|
||||
*/
|
||||
IFunctionSummary getFunctionInfo(ICCompletionInvocationContext context, String name);
|
||||
|
||||
/**
|
||||
* Get array of matching functions starting with this prefix
|
||||
*/
|
||||
IFunctionSummary[] getMatchingFunctions(ICCompletionInvocationContext context, String prefix);
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.ui;
|
||||
|
||||
/**
|
||||
* Represents the help book, that is a set of articles on some topic.
|
||||
* Such as "C functions", "Qt library", etc., provided by help provider.
|
||||
* @see ICHelpProvider
|
||||
* @since 2.1
|
||||
*/
|
||||
public interface ICHelpBook {
|
||||
public static final int HELP_TYPE_C = 1;
|
||||
public static final int HELP_TYPE_CPP = 2;
|
||||
public static final int HELP_TYPE_ASM = 3;
|
||||
|
||||
/**
|
||||
* returns the tytle of the Help Book
|
||||
* @return String representing the HelpBook tytle
|
||||
*/
|
||||
String getTitle();
|
||||
|
||||
/**
|
||||
* gets the type of Help provided with this book that might be ine of ICHelpBook.HELP_TYPE_XXX
|
||||
* @return one of ICHelpBook.HELP_TYPE_XXX representing the type of Provided help
|
||||
*/
|
||||
int getCHelpType();
|
||||
}
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.ui;
|
||||
|
||||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
|
||||
/**
|
||||
* Represents the C/C++ help provider
|
||||
*
|
||||
* @since 2.1
|
||||
*/
|
||||
public interface ICHelpProvider {
|
||||
|
||||
/**
|
||||
* Initialize the completion contributor class
|
||||
*/
|
||||
void initialize();
|
||||
|
||||
/**
|
||||
* Get available help books
|
||||
* @return The <code>ICHelpBook[]</code> array of available help books
|
||||
*/
|
||||
ICHelpBook[] getCHelpBooks();
|
||||
|
||||
/**
|
||||
* get the matching function of a given name
|
||||
*
|
||||
* @param helpBooks the array of help books to be searched for help
|
||||
* @param name the function name for which help is needed
|
||||
* @return the IFunctionSummary interface
|
||||
*/
|
||||
IFunctionSummary getFunctionInfo(ICHelpInvocationContext context, ICHelpBook[] helpBooks, String name);
|
||||
|
||||
/**
|
||||
* Get array of matching functions starting with this prefix
|
||||
*
|
||||
* @param helpBooks the array of help books to be searched for help
|
||||
* @param prefix the function name prefix
|
||||
* @return the IFunctionSummary[] array
|
||||
*/
|
||||
IFunctionSummary[] getMatchingFunctions(ICHelpInvocationContext context, ICHelpBook[] helpBooks, String prefix);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param helpBooks the array of help books to be searched for help
|
||||
* @param name the C/C++ element name for which help is needed
|
||||
* @return the ICHelpResourceDescriptor[] array representing found help resources
|
||||
*/
|
||||
ICHelpResourceDescriptor[] getHelpResources(ICHelpInvocationContext context, ICHelpBook[] helpBooks, String name);
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.ui;
|
||||
|
||||
import org.eclipse.help.IHelpResource;
|
||||
|
||||
/**
|
||||
* This interface represents Help Resources found in the certain Help Book
|
||||
* provided by certain CHelpProvider
|
||||
* @see ICHelpProvider
|
||||
* @since 2.1
|
||||
*/
|
||||
public interface ICHelpResourceDescriptor {
|
||||
/**
|
||||
* represents the Help Book, where help resources represented by getHelpResources()
|
||||
* method were found
|
||||
* @return ICHelpBook interface representing the help book where help was found
|
||||
*/
|
||||
ICHelpBook getCHelpBook();
|
||||
|
||||
/**
|
||||
* gets the array of help resources found in the HelpBook represented
|
||||
* by getCHelpBook() method
|
||||
* @return the IHelpResource[] array
|
||||
*/
|
||||
IHelpResource[] getHelpResources();
|
||||
}
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.ui.dialogs;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||
import org.eclipse.cdt.internal.ui.CHelpProviderManager;
|
||||
import org.eclipse.cdt.internal.ui.CPluginImages;
|
||||
import org.eclipse.cdt.internal.ui.CUIMessages;
|
||||
import org.eclipse.cdt.internal.ui.text.CHelpBookDescriptor;
|
||||
import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry;
|
||||
import org.eclipse.cdt.internal.ui.util.PixelConverter;
|
||||
import org.eclipse.cdt.internal.ui.wizards.dialogfields.CheckedListDialogField;
|
||||
import org.eclipse.cdt.internal.ui.wizards.dialogfields.DialogField;
|
||||
import org.eclipse.cdt.internal.ui.wizards.dialogfields.LayoutUtil;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
import org.eclipse.cdt.ui.text.ICHelpInvocationContext;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.jface.viewers.LabelProvider;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Control;
|
||||
import org.eclipse.ui.IWorkbench;
|
||||
import org.eclipse.ui.IWorkbenchPreferencePage;
|
||||
import org.eclipse.ui.dialogs.PropertyPage;
|
||||
|
||||
/**
|
||||
* This class defines a project property page
|
||||
* for C/C++ project help settings configuration
|
||||
* @since 2.1
|
||||
*/
|
||||
public class CHelpConfigurationPropertyPage extends PropertyPage implements
|
||||
IWorkbenchPreferencePage {
|
||||
|
||||
private CHelpSettingsDisplay fCHelpSettingsDisplay;
|
||||
|
||||
private class CHelpBookListLabelProvider extends LabelProvider {
|
||||
private ImageDescriptor fHelpProviderIcon;
|
||||
private ImageDescriptorRegistry fRegistry;
|
||||
|
||||
public CHelpBookListLabelProvider() {
|
||||
fRegistry= CUIPlugin.getImageDescriptorRegistry();
|
||||
fHelpProviderIcon= CPluginImages.DESC_OBJS_LIBRARY;
|
||||
}
|
||||
|
||||
public String getText(Object element) {
|
||||
if (element instanceof CHelpBookDescriptor) {
|
||||
return ((CHelpBookDescriptor)element).getCHelpBook().getTitle();
|
||||
}
|
||||
return super.getText(element);
|
||||
}
|
||||
|
||||
public Image getImage(Object element) {
|
||||
if (element instanceof CHelpBookDescriptor) {
|
||||
return fRegistry.get(fHelpProviderIcon);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private class CHelpSettingsDisplay {
|
||||
private CheckedListDialogField fCHelpBookList;
|
||||
private IProject fProject;
|
||||
private CHelpBookDescriptor fCHelpBookDescriptors[];
|
||||
|
||||
public CHelpSettingsDisplay() {
|
||||
|
||||
String[] buttonLabels= new String[] {
|
||||
/* 0 */ CUIMessages.getString("CHelpConfigurationPropertyPage.buttonLabels.CheckAll"), //NewWizardMessages.getString("BuildPathsBlock.classpath.checkall.button"), //$NON-NLS-1$
|
||||
/* 1 */ CUIMessages.getString("CHelpConfigurationPropertyPage.buttonLabels.UncheckAll") //NewWizardMessages.getString("BuildPathsBlock.classpath.uncheckall.button") //$NON-NLS-1$
|
||||
};
|
||||
|
||||
fCHelpBookList= new CheckedListDialogField(null, buttonLabels, new CHelpBookListLabelProvider());
|
||||
fCHelpBookList.setLabelText(CUIMessages.getString("CHelpConfigurationPropertyPage.HelpBooks")); //$NON-NLS-1$
|
||||
fCHelpBookList.setCheckAllButtonIndex(0);
|
||||
fCHelpBookList.setUncheckAllButtonIndex(1);
|
||||
}
|
||||
|
||||
public Control createControl(Composite parent){
|
||||
PixelConverter converter= new PixelConverter(parent);
|
||||
|
||||
Composite composite= new Composite(parent, SWT.NONE);
|
||||
|
||||
LayoutUtil.doDefaultLayout(composite, new DialogField[] { fCHelpBookList }, true);
|
||||
LayoutUtil.setHorizontalGrabbing(fCHelpBookList.getListControl(null));
|
||||
|
||||
int buttonBarWidth= converter.convertWidthInCharsToPixels(24);
|
||||
fCHelpBookList.setButtonsMinWidth(buttonBarWidth);
|
||||
|
||||
return composite;
|
||||
}
|
||||
|
||||
public void init(final IResource resource) {
|
||||
if(!(resource instanceof IProject))
|
||||
return;
|
||||
fProject = (IProject)resource;
|
||||
fCHelpBookDescriptors = CHelpProviderManager.getDefault().getCHelpBookDescriptors(new ICHelpInvocationContext(){
|
||||
public IProject getProject(){return (IProject)resource;}
|
||||
public ITranslationUnit getTranslationUnit(){return null;}
|
||||
}
|
||||
);
|
||||
|
||||
List allTopicsList= Arrays.asList(fCHelpBookDescriptors);
|
||||
List enabledTopicsList= getEnabledEntries(allTopicsList);
|
||||
|
||||
fCHelpBookList.setElements(allTopicsList);
|
||||
fCHelpBookList.setCheckedElements(enabledTopicsList);
|
||||
}
|
||||
|
||||
private List getEnabledEntries(List list) {
|
||||
int size = list.size();
|
||||
List desList= new ArrayList();
|
||||
|
||||
for (int i= 0; i < size; i++) {
|
||||
CHelpBookDescriptor el = (CHelpBookDescriptor)list.get(i);
|
||||
if(el.isEnabled())
|
||||
desList.add(el);
|
||||
}
|
||||
return desList;
|
||||
}
|
||||
|
||||
public void performOk(){
|
||||
List list = fCHelpBookList.getElements();
|
||||
final IProject project = fProject;
|
||||
|
||||
for(int i = 0; i < list.size(); i++){
|
||||
Object obj = list.get(i);
|
||||
if(obj != null && obj instanceof CHelpBookDescriptor){
|
||||
((CHelpBookDescriptor)obj).enable(fCHelpBookList.isChecked(obj));
|
||||
}
|
||||
}
|
||||
CHelpProviderManager.getDefault().serialize(new ICHelpInvocationContext(){
|
||||
public IProject getProject(){return project;}
|
||||
public ITranslationUnit getTranslationUnit(){return null;}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
|
||||
*/
|
||||
protected Control createContents(Composite parent) {
|
||||
fCHelpSettingsDisplay= new CHelpSettingsDisplay();
|
||||
fCHelpSettingsDisplay.init((IResource)getElement());
|
||||
return fCHelpSettingsDisplay.createControl(parent);
|
||||
}
|
||||
|
||||
public boolean performOk() {
|
||||
fCHelpSettingsDisplay.performOk();
|
||||
super.performOk();
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
|
||||
*/
|
||||
public void init(IWorkbench workbench) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,13 +1,13 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2000, 2004 QNX Software Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
/**********************************************************************
|
||||
* Copyright (c) 2004 Intel Corporation and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Common Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/cpl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
*******************************************************************************/
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
**********************************************************************/
|
||||
|
||||
package org.eclipse.cdt.ui.text;
|
||||
|
||||
|
@ -15,9 +15,9 @@ import org.eclipse.cdt.core.model.ITranslationUnit;
|
|||
import org.eclipse.core.resources.IProject;
|
||||
|
||||
/**
|
||||
* Invocation context for the ICCompletionContributor
|
||||
* Invocation context for the CHelpProviderManager
|
||||
*/
|
||||
public interface ICCompletionInvocationContext {
|
||||
public interface ICHelpInvocationContext {
|
||||
|
||||
/**
|
||||
* @return the project
|
Loading…
Add table
Reference in a new issue