mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-25 09:55:29 +02:00
patch from vlad
This patch publishes ScannerInfoCollector collection interface so that ManagedMake can reuse StandardMake external scanner info provider and console parser but provide its own scanner info collector. Eventually it may be promoted to an extension point. Also there is a fix for processing cygpaths when parsing make output and small UI enhancement.
This commit is contained in:
parent
72799392c9
commit
dc6207ddf8
11 changed files with 109 additions and 45 deletions
|
@ -28,9 +28,11 @@ public interface IExternalScannerInfoProvider {
|
|||
* @param current project - current project being built
|
||||
* @param buildInfo - settings for ScannerConfigBuilder
|
||||
* @param targetSpecificOptions - array of options affecting compiler specs
|
||||
* @param collector - scanner info collector, for StdMake projects - ScannerInfoCollector
|
||||
*/
|
||||
public boolean invokeProvider(IProgressMonitor monitor,
|
||||
IProject currentProject,
|
||||
IScannerConfigBuilderInfo buildInfo,
|
||||
List targetSpecificOptions);
|
||||
List targetSpecificOptions,
|
||||
IScannerInfoCollector collector);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
/**********************************************************************
|
||||
* Copyright (c) 2004 IBM 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:
|
||||
* IBM - Initial API and implementation
|
||||
**********************************************************************/
|
||||
package org.eclipse.cdt.make.core.scannerconfig;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.core.resources.IResource;
|
||||
|
||||
/**
|
||||
* Interface for scanner info collector.
|
||||
* Used by scanner info console parsers.
|
||||
*
|
||||
* @author vhirsl
|
||||
*/
|
||||
public interface IScannerInfoCollector {
|
||||
/**
|
||||
* Contribute to resource's scanner configuration
|
||||
*
|
||||
* @param resource
|
||||
* @param includes
|
||||
* @param symbols
|
||||
* @param targetSpecificOptions
|
||||
*/
|
||||
public void contributeToScannerConfig(IResource resource,
|
||||
List includes,
|
||||
List symbols,
|
||||
List targetSpecificOptions);
|
||||
}
|
|
@ -23,11 +23,14 @@ public interface IScannerInfoConsoleParser {
|
|||
* Optional one time initialization of a console parser.
|
||||
*
|
||||
* @param project
|
||||
* @param util - utility functions for file and path management
|
||||
* @param collector - scanner info collector
|
||||
*/
|
||||
public void startup(IProject project, IScannerInfoConsoleParserUtility util);
|
||||
public void startup(IProject project, IScannerInfoConsoleParserUtility util, IScannerInfoCollector collector);
|
||||
|
||||
/**
|
||||
* Parse one line of output.
|
||||
*
|
||||
* @param line
|
||||
* @return true if scanner info entry was found in the line
|
||||
*/
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.eclipse.cdt.core.resources.IConsole;
|
|||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IExternalScannerInfoProvider;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector;
|
||||
import org.eclipse.cdt.make.internal.core.MakeMessages;
|
||||
import org.eclipse.cdt.make.internal.core.StreamMonitor;
|
||||
import org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCScannerConfigUtil;
|
||||
|
@ -56,9 +57,13 @@ public class DefaultExternalScannerInfoProvider implements IExternalScannerInfoP
|
|||
private String fCompileArguments;
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.make.core.scannerconfig.IExternalScannerInfoProvider#invokeProvider(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.resources.IProject, org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo, java.util.List)
|
||||
* @see org.eclipse.cdt.make.core.scannerconfig.IExternalScannerInfoProvider#invokeProvider(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.resources.IProject, org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo, java.util.List, org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector)
|
||||
*/
|
||||
public boolean invokeProvider(IProgressMonitor monitor, IProject currentProject, IScannerConfigBuilderInfo buildInfo, List targetSpecificOptions) {
|
||||
public boolean invokeProvider(IProgressMonitor monitor,
|
||||
IProject currentProject,
|
||||
IScannerConfigBuilderInfo buildInfo,
|
||||
List targetSpecificOptions,
|
||||
IScannerInfoCollector collector) {
|
||||
if (targetSpecificOptions == null) {
|
||||
targetSpecificOptions = new ArrayList();
|
||||
}
|
||||
|
@ -93,7 +98,7 @@ public class DefaultExternalScannerInfoProvider implements IExternalScannerInfoP
|
|||
cos = new StreamMonitor(new SubProgressMonitor(monitor, 70), cos, 100);
|
||||
|
||||
OutputStream sniffer = ScannerInfoConsoleParserFactory.getESIProviderOutputSniffer(
|
||||
cos, currentProject, buildInfo);
|
||||
cos, currentProject, buildInfo, collector);
|
||||
Process p = launcher.execute(fCompileCommand, compileArguments, setEnvironment(launcher), fWorkingDirectory);
|
||||
if (p != null) {
|
||||
try {
|
||||
|
|
|
@ -37,10 +37,12 @@ import org.eclipse.cdt.make.core.MakeCorePlugin;
|
|||
import org.eclipse.cdt.make.core.scannerconfig.DiscoveredScannerInfo;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IExternalScannerInfoProvider;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigBuilder;
|
||||
import org.eclipse.cdt.make.internal.core.MakeMessages;
|
||||
import org.eclipse.cdt.make.internal.core.scannerconfig.util.CygpathTranslator;
|
||||
import org.eclipse.cdt.make.internal.core.scannerconfig.util.ScannerConfigUtil;
|
||||
import org.eclipse.cdt.make.internal.core.scannerconfig.util.TraceUtil;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -49,7 +51,7 @@ import org.eclipse.cdt.make.internal.core.scannerconfig.util.ScannerConfigUtil;
|
|||
*
|
||||
* @author vhirsl
|
||||
*/
|
||||
public class ScannerInfoCollector {
|
||||
public class ScannerInfoCollector implements IScannerInfoCollector {
|
||||
|
||||
// Singleton
|
||||
private static ScannerInfoCollector instance = new ScannerInfoCollector();
|
||||
|
@ -77,18 +79,13 @@ public class ScannerInfoCollector {
|
|||
return instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Published method to receive per file contributions to ScannerInfo
|
||||
*
|
||||
* @param resource
|
||||
* @param includes
|
||||
* @param symbols
|
||||
* @param targetSpecificOptions
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector#contributeToScannerConfig(org.eclipse.core.resources.IResource, java.util.List, java.util.List, java.util.List)
|
||||
*/
|
||||
public synchronized void contributeToScannerConfig(IResource resource, List includes, List symbols, List targetSpecificOptions) {
|
||||
IProject project;
|
||||
if (resource == null || (project = resource.getProject()) == null) {
|
||||
// TODO VMIR create a log
|
||||
TraceUtil.outputError("IScannerInfoCollector.contributeToScannerConfig : ", "resource or project is null"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
return;
|
||||
}
|
||||
try {
|
||||
|
@ -170,7 +167,6 @@ public class ScannerInfoCollector {
|
|||
discScanInfo.update();
|
||||
monitor.worked(50);
|
||||
} catch (CoreException e) {
|
||||
// TODO : VMIR create a marker?
|
||||
MakeCorePlugin.log(e);
|
||||
}
|
||||
}
|
||||
|
@ -311,7 +307,6 @@ public class ScannerInfoCollector {
|
|||
translatedIncludePaths.add(translatedPath);
|
||||
}
|
||||
else {
|
||||
// TODO VMIR create problem marker
|
||||
// TODO VMIR for now add even if it does not exist
|
||||
translatedIncludePaths.add(translatedPath);
|
||||
}
|
||||
|
@ -356,7 +351,7 @@ public class ScannerInfoCollector {
|
|||
if (esiProvider != null) {
|
||||
ISafeRunnable runnable = new ISafeRunnable() {
|
||||
public void run() {
|
||||
esiProvider.invokeProvider(monitor, project, buildInfo, tso);
|
||||
esiProvider.invokeProvider(monitor, project, buildInfo, tso, ScannerInfoCollector.getInstance());
|
||||
}
|
||||
|
||||
public void handleException(Throwable exception) {
|
||||
|
@ -395,7 +390,6 @@ public class ScannerInfoCollector {
|
|||
if (project != null) {
|
||||
sumDiscoveredIncludes.put(project.getName(), null);
|
||||
}
|
||||
// TODO VMIR define error message
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -407,7 +401,6 @@ public class ScannerInfoCollector {
|
|||
if (project != null) {
|
||||
sumDiscoveredSymbols.put(project.getName(), null);
|
||||
}
|
||||
// TODO VMIR define error message
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -15,6 +15,7 @@ import java.io.OutputStream;
|
|||
import org.eclipse.cdt.core.IMarkerGenerator;
|
||||
import org.eclipse.cdt.make.core.MakeCorePlugin;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoConsoleParser;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigBuilder;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
|
||||
|
@ -39,18 +40,20 @@ public class ScannerInfoConsoleParserFactory {
|
|||
* @param currentProject
|
||||
* @param markerGenerator
|
||||
* @param scBuildInfo
|
||||
* @param collector - scanner info collector
|
||||
* @return OutputStream
|
||||
*/
|
||||
public static OutputStream getESIProviderOutputSniffer(OutputStream outputStream,
|
||||
IProject currentProject,
|
||||
IScannerConfigBuilderInfo scBuildInfo) {
|
||||
IScannerConfigBuilderInfo scBuildInfo,
|
||||
IScannerInfoCollector collector) {
|
||||
if (scBuildInfo.isESIProviderCommandEnabled()) {
|
||||
// get the ESIProvider console parser
|
||||
IScannerInfoConsoleParser clParser = MakeCorePlugin.getDefault().
|
||||
getScannerInfoConsoleParser(scBuildInfo.getESIProviderConsoleParserId());
|
||||
// initialize it with the utility
|
||||
clParser.startup(currentProject, null /*new ScannerInfoConsoleParserUtility(
|
||||
currentProject, null, markerGenerator)*/);
|
||||
currentProject, null, markerGenerator)*/, collector);
|
||||
// create an output stream sniffer
|
||||
return new ConsoleOutputStreamSniffer(outputStream, new
|
||||
IScannerInfoConsoleParser[] {clParser});
|
||||
|
@ -92,7 +95,7 @@ public class ScannerInfoConsoleParserFactory {
|
|||
getScannerInfoConsoleParser(scBuildInfo.getMakeBuilderConsoleParserId());
|
||||
// initialize it with the utility
|
||||
clParser.startup(currentProject, new ScannerInfoConsoleParserUtility(
|
||||
currentProject, workingDirectory, markerGenerator));
|
||||
currentProject, workingDirectory, markerGenerator), ScannerInfoCollector.getInstance());
|
||||
// create an output stream sniffer
|
||||
return new ConsoleOutputStreamSniffer(outputStream, new
|
||||
IScannerInfoConsoleParser[] {clParser});
|
||||
|
|
|
@ -14,9 +14,10 @@ import java.util.StringTokenizer;
|
|||
|
||||
import org.eclipse.core.resources.IFile;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.cdt.core.IMarkerGenerator;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoConsoleParser;
|
||||
import org.eclipse.cdt.make.internal.core.scannerconfig.IScannerInfoConsoleParserUtility;
|
||||
import org.eclipse.cdt.make.internal.core.scannerconfig.ScannerInfoCollector;
|
||||
import org.eclipse.cdt.make.internal.core.scannerconfig.util.TraceUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -31,13 +32,15 @@ public class GCCScannerInfoConsoleParser implements IScannerInfoConsoleParser {
|
|||
|
||||
private IProject fProject = null;
|
||||
private IScannerInfoConsoleParserUtility fUtil = null;
|
||||
private IScannerInfoCollector fCollector = null;
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoConsoleParser#startup(org.eclipse.core.resources.IProject)
|
||||
* @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoConsoleParser#startup(org.eclipse.core.resources.IProject, org.eclipse.cdt.make.internal.core.scannerconfig.IScannerInfoConsoleParserUtility, org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector)
|
||||
*/
|
||||
public void startup(IProject project, IScannerInfoConsoleParserUtility util) {
|
||||
public void startup(IProject project, IScannerInfoConsoleParserUtility util, IScannerInfoCollector collector) {
|
||||
fProject = project;
|
||||
fUtil = util;
|
||||
fCollector = collector;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -158,14 +161,13 @@ public class GCCScannerInfoConsoleParser implements IScannerInfoConsoleParser {
|
|||
}
|
||||
else {
|
||||
TraceUtil.outputError("Unable to find file name: ", line); //$NON-NLS-1$
|
||||
// fUtil.generateMarker(fProject, -1, "Unable to find file name: " + line, //$NON-NLS-1$
|
||||
// IMarkerGenerator.SEVERITY_ERROR_RESOURCE, null);
|
||||
fUtil.generateMarker(fProject, -1, "Unable to find file name: " + line, //$NON-NLS-1$
|
||||
IMarkerGenerator.SEVERITY_ERROR_RESOURCE, null);
|
||||
}
|
||||
}
|
||||
// Contribute discovered includes and symbols to the ScannerInfoCollector
|
||||
if (translatedIncludes.size() > 0 || symbols.size() > 0) {
|
||||
ScannerInfoCollector.getInstance().
|
||||
contributeToScannerConfig(project, translatedIncludes, symbols, targetSpecificOptions);
|
||||
fCollector.contributeToScannerConfig(project, translatedIncludes, symbols, targetSpecificOptions);
|
||||
|
||||
TraceUtil.outputTrace("Discovered scanner info for file \'" + fileName + '\'', //$NON-NLS-1$
|
||||
"Include paths", includes, translatedIncludes, "Defined symbols", symbols); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|
|
|
@ -14,9 +14,9 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector;
|
||||
import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoConsoleParser;
|
||||
import org.eclipse.cdt.make.internal.core.scannerconfig.IScannerInfoConsoleParserUtility;
|
||||
import org.eclipse.cdt.make.internal.core.scannerconfig.ScannerInfoCollector;
|
||||
import org.eclipse.cdt.make.internal.core.scannerconfig.util.TraceUtil;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
|
||||
|
@ -32,19 +32,21 @@ public class GCCSpecsConsoleParser implements IScannerInfoConsoleParser {
|
|||
private final int STATE_SPECS_STARTED = 1;
|
||||
private final int STATE_INCLUDES_STARTED = 2;
|
||||
|
||||
private IProject project = null;
|
||||
private IScannerInfoConsoleParserUtility util = null;
|
||||
private IProject fProject = null;
|
||||
private IScannerInfoConsoleParserUtility fUtil = null;
|
||||
private IScannerInfoCollector fCollector = null;
|
||||
|
||||
private int state = STATE_BEGIN;
|
||||
private List symbols = new ArrayList();
|
||||
private List includes = new ArrayList();
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoConsoleParser#initialize(org.eclipse.core.resources.IProject, org.eclipse.cdt.make.internal.core.scannerconfig.IScannerInfoConsoleParserUtility)
|
||||
* @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoConsoleParser#startup(org.eclipse.core.resources.IProject, org.eclipse.cdt.make.internal.core.scannerconfig.IScannerInfoConsoleParserUtility, org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector)
|
||||
*/
|
||||
public void startup(IProject project, IScannerInfoConsoleParserUtility util) {
|
||||
this.project = project;
|
||||
this.util = util;
|
||||
public void startup(IProject project, IScannerInfoConsoleParserUtility util, IScannerInfoCollector collector) {
|
||||
this.fProject = project;
|
||||
this.fUtil = util;
|
||||
this.fCollector = collector;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -94,7 +96,7 @@ public class GCCSpecsConsoleParser implements IScannerInfoConsoleParser {
|
|||
return rc;
|
||||
}
|
||||
|
||||
ScannerInfoCollector.getInstance().contributeToScannerConfig(project, includes, symbols, null);
|
||||
fCollector.contributeToScannerConfig(fProject, includes, symbols, null);
|
||||
TraceUtil.outputTrace("Scanner info from \'specs\' file", //$NON-NLS-1$
|
||||
"Include paths", includes, new ArrayList(), "Defined symbols", symbols); //$NON-NLS-1$ //$NON-NLS-2$);
|
||||
|
||||
|
@ -105,8 +107,8 @@ public class GCCSpecsConsoleParser implements IScannerInfoConsoleParser {
|
|||
* @see org.eclipse.cdt.make.internal.core.scannerconfig.IScannerInfoConsoleParser#shutdown()
|
||||
*/
|
||||
public void shutdown() {
|
||||
if (util != null) {
|
||||
util.reportProblems();
|
||||
if (fUtil != null) {
|
||||
fUtil.reportProblems();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -144,9 +144,11 @@ public class ScannerInfoConsoleParserUtility implements IScannerInfoConsoleParse
|
|||
// If there is a conflict then try all files in the project.
|
||||
if (isConflictingName(fileName)) {
|
||||
file = null;
|
||||
|
||||
// Create a problem marker
|
||||
TraceUtil.outputError("Ambiguous file path: ", fileName); //$NON-NLS-1$
|
||||
generateMarker(fProject, -1, "Ambiguous file path: "+fileName, //$NON-NLS-1$
|
||||
IMarkerGenerator.SEVERITY_ERROR_RESOURCE, null);
|
||||
IMarkerGenerator.SEVERITY_ERROR_RESOURCE, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -258,10 +260,22 @@ public class ScannerInfoConsoleParserUtility implements IScannerInfoConsoleParse
|
|||
if (dir != null) {
|
||||
IPath pwd = null;
|
||||
if (fBaseDirectory.isPrefixOf(dir)) {
|
||||
// int segments = fBaseDirectory.matchingFirstSegments(dir);
|
||||
pwd = dir.removeFirstSegments(fBaseDirectory.segmentCount());
|
||||
} else {
|
||||
pwd = dir;
|
||||
// check if it is a cygpath
|
||||
if (dir.toString().startsWith("/cygdrive/")) { // $NON-NLS-1$
|
||||
char driveLetter = dir.toString().charAt(10);
|
||||
StringBuffer buf = new StringBuffer();
|
||||
buf.append(driveLetter);
|
||||
buf.append(':');
|
||||
String drive = buf.toString();
|
||||
pwd = dir.removeFirstSegments(2);
|
||||
pwd = pwd.setDevice(drive);
|
||||
pwd = pwd.makeAbsolute();
|
||||
}
|
||||
else {
|
||||
pwd = dir;
|
||||
}
|
||||
}
|
||||
fDirectoryStack.addElement(pwd);
|
||||
}
|
||||
|
@ -319,12 +333,13 @@ public class ScannerInfoConsoleParserUtility implements IScannerInfoConsoleParse
|
|||
// check if the cwd is the right one
|
||||
// appending fileName to cwd should yield file path
|
||||
IPath filePath = cwd.append(fileName);
|
||||
if (!filePath.equals(file.getLocation())) {
|
||||
if (!filePath.toString().equalsIgnoreCase(file.getLocation().toString())) {
|
||||
// must be the cwd is wrong
|
||||
// check if file name starts with ".."
|
||||
if (fileName.startsWith("..")) { //$NON-NLS-1$
|
||||
// probably multiple choices for cwd, hopeless
|
||||
generateMarker(file, -1, "Unable to determine working directory",
|
||||
TraceUtil.outputError("Unable to determine working directory for ", fileName); //$NON-NLS-1$
|
||||
generateMarker(file, -1, "Unable to determine working directory for", //$NON-NLS-1$
|
||||
IMarkerGenerator.SEVERITY_WARNING, fileName);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -53,6 +53,7 @@ import org.eclipse.ui.help.WorkbenchHelp;
|
|||
|
||||
public class BuildPathInfoBlock extends AbstractCOptionPage {
|
||||
private static final int PROJECT_LIST_MULTIPLIER = 15;
|
||||
private static final int INITIAL_LIST_WIDTH = 60;
|
||||
|
||||
private static final String PREF_SYMBOLS = "ScannerSymbols"; //$NON-NLS-1$
|
||||
private static final String PREF_INCLUDES = "ScannerIncludes"; //$NON-NLS-1$
|
||||
|
@ -154,6 +155,7 @@ public class BuildPathInfoBlock extends AbstractCOptionPage {
|
|||
gd.grabExcessHorizontalSpace = true;
|
||||
gd.horizontalSpan = numColumns - 1;
|
||||
gd.heightHint = getDefaultFontHeight(pathList, PROJECT_LIST_MULTIPLIER);
|
||||
gd.widthHint = convertWidthInCharsToPixels(INITIAL_LIST_WIDTH);
|
||||
pathList.setLayoutData(gd);
|
||||
pathList.setFont(parent.getFont());
|
||||
}
|
||||
|
@ -214,6 +216,7 @@ public class BuildPathInfoBlock extends AbstractCOptionPage {
|
|||
gd.horizontalSpan = numColumns - 1;
|
||||
gd.grabExcessHorizontalSpace = true;
|
||||
gd.heightHint = getDefaultFontHeight(pathList, PROJECT_LIST_MULTIPLIER);
|
||||
gd.widthHint = convertWidthInCharsToPixels(INITIAL_LIST_WIDTH);
|
||||
symbolList.setLayoutData(gd);
|
||||
symbolList.setFont(parent.getFont());
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ public class ManageIncludePathsDialog extends Dialog {
|
|||
private static final String DELETE_ALL_DISCOVERED = DISC_COMMON_PREFIX + ".discoveredGroup.buttons.deleteAll.label"; //$NON-NLS-1$
|
||||
|
||||
private static final int PROJECT_LIST_MULTIPLIER = 15;
|
||||
private static final int INITIAL_LIST_WIDTH = 40;
|
||||
private static final int INITIAL_LIST_WIDTH = 50;
|
||||
|
||||
private static final int ACTIVE = 0;
|
||||
private static final int REMOVED = 1;
|
||||
|
|
Loading…
Add table
Reference in a new issue