diff options
author | Andrew Gvozdev | 2012-05-04 22:33:09 +0000 |
---|---|---|
committer | Andrew Gvozdev | 2012-05-04 22:35:17 +0000 |
commit | d2c19fcd47de828faef36593bce200b1226eb8af (patch) | |
tree | c390dd0d3a1df34187ebb66b40c44c175e30e224 /core | |
parent | a5fd3894d10a265185f60c0555fc36d619cdbaca (diff) | |
download | org.eclipse.cdt-d2c19fcd47de828faef36593bce200b1226eb8af.tar.gz org.eclipse.cdt-d2c19fcd47de828faef36593bce200b1226eb8af.tar.xz org.eclipse.cdt-d2c19fcd47de828faef36593bce200b1226eb8af.zip |
bug 376592: [sd90] Extend BuildDefinitions to allow defining language settings providers
Diffstat (limited to 'core')
7 files changed, 126 insertions, 93 deletions
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java index c8617a3fa56..8bf5b3832b1 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java @@ -12,7 +12,9 @@ package org.eclipse.cdt.core.language.settings.providers;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.CoreModel;
@@ -41,20 +43,22 @@ public class ScannerDiscoveryLegacySupport { /** ID of MBS language settings provider (from org.eclipse.cdt.managedbuilder.core) */
public static final String MBS_LANGUAGE_SETTINGS_PROVIDER_ID = "org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider"; //$NON-NLS-1$
- private static String USE_LANGUAGE_SETTINGS_PROVIDERS_PREFERENCE = "enabled"; //$NON-NLS-1$
-// the default needs to be "false" for legacy projects to be open with old SD enabled for MBS provider
- private static boolean USE_LANGUAGE_SETTINGS_PROVIDERS_DEFAULT = false;
- private static final String PREFERENCES_QUALIFIER = CCorePlugin.PLUGIN_ID;
- private static final String LANGUAGE_SETTINGS_PROVIDERS_NODE = "languageSettingsProviders"; //$NON-NLS-1$
+ private static String DISABLE_LSP_PREFERENCE = "language.settings.providers.disabled"; //$NON-NLS-1$
+ // the default for project needs to be "disabled" - for legacy projects to be open with old SD enabled for MBS provider
+ private static boolean DISABLE_LSP_DEFAULT_PROJECT = true;
+ private static boolean DISABLE_LSP_DEFAULT_WORKSPACE = false;
+ private static final String PREFERENCES_QUALIFIER_CCORE = CCorePlugin.PLUGIN_ID;
+
+ private static Map<String, String> legacyProfiles = null;
/**
* Get preferences node for org.eclipse.cdt.core.
*/
private static Preferences getPreferences(IProject project) {
if (project == null) {
- return InstanceScope.INSTANCE.getNode(PREFERENCES_QUALIFIER).node(LANGUAGE_SETTINGS_PROVIDERS_NODE);
+ return InstanceScope.INSTANCE.getNode(PREFERENCES_QUALIFIER_CCORE);
} else {
- return new LocalProjectScope(project).getNode(PREFERENCES_QUALIFIER).node(LANGUAGE_SETTINGS_PROVIDERS_NODE);
+ return new LocalProjectScope(project).getNode(PREFERENCES_QUALIFIER_CCORE);
}
}
@@ -68,7 +72,8 @@ public class ScannerDiscoveryLegacySupport { */
public static boolean isLanguageSettingsProvidersFunctionalityEnabled(IProject project) {
Preferences pref = getPreferences(project);
- return pref.getBoolean(USE_LANGUAGE_SETTINGS_PROVIDERS_PREFERENCE, USE_LANGUAGE_SETTINGS_PROVIDERS_DEFAULT);
+ boolean defaultValue = project != null ? DISABLE_LSP_DEFAULT_PROJECT : DISABLE_LSP_DEFAULT_WORKSPACE;
+ return !pref.getBoolean(DISABLE_LSP_PREFERENCE, defaultValue);
}
/**
@@ -81,7 +86,7 @@ public class ScannerDiscoveryLegacySupport { */
public static void setLanguageSettingsProvidersFunctionalityEnabled(IProject project, boolean value) {
Preferences pref = getPreferences(project);
- pref.putBoolean(USE_LANGUAGE_SETTINGS_PROVIDERS_PREFERENCE, value);
+ pref.putBoolean(DISABLE_LSP_PREFERENCE, !value);
try {
pref.flush();
} catch (BackingStoreException e) {
@@ -147,4 +152,33 @@ public class ScannerDiscoveryLegacySupport { return providers;
}
+ /**
+ * Returns the values of scanner discovery profiles (scannerConfigDiscoveryProfileId) which were deprecated
+ * and replaced with language settings providers in plugin.xml.
+ * This (temporary) function serves as fail-safe switch during the transition.
+ *
+ * @param id - can be id of either org.eclipse.cdt.managedbuilder.internal.core.InputType
+ * or org.eclipse.cdt.managedbuilder.internal.core.ToolChain.
+ * @return legacy scannerConfigDiscoveryProfileId.
+ */
+ @SuppressWarnings("nls")
+ public static String getDeprecatedLegacyProfiles(String id) {
+ if (legacyProfiles == null) {
+ legacyProfiles = new HashMap<String, String>();
+
+ // InputTypes
+ legacyProfiles.put("cdt.managedbuild.tool.gnu.c.compiler.input", "org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC|org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile");
+ legacyProfiles.put("cdt.managedbuild.tool.gnu.cpp.compiler.input", "org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP|org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile");
+ legacyProfiles.put("cdt.managedbuild.tool.gnu.c.compiler.input.cygwin", "org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC");
+ legacyProfiles.put("cdt.managedbuild.tool.gnu.cpp.compiler.input.cygwin", "org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP");
+ legacyProfiles.put("cdt.managedbuild.tool.xlc.c.compiler.input", "org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfile");
+ legacyProfiles.put("cdt.managedbuild.tool.xlc.cpp.c.compiler.input", "org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfile");
+ legacyProfiles.put("cdt.managedbuild.tool.xlc.cpp.compiler.input", "org.eclipse.cdt.managedbuilder.xlc.core.XLCManagedMakePerProjectProfileCPP");
+
+ // Toolchains
+ }
+
+ return legacyProfiles.get(id);
+ }
+
}
diff --git a/core/org.eclipse.cdt.ui/plugin.properties b/core/org.eclipse.cdt.ui/plugin.properties index c840921cb70..8551271a582 100644 --- a/core/org.eclipse.cdt.ui/plugin.properties +++ b/core/org.eclipse.cdt.ui/plugin.properties @@ -231,6 +231,7 @@ ExcludeAction.label=Exclude from Build... BuildConfigurationActionSet.descr=Build active configuration for the current project BuildLoggingPreferencePage.name=Logging +LanguageSettingsProvidersPropertyPage.name=Preprocessor Include Paths, Macros etc. # Common Editor ruler actions AddTask.label=Add &Task... diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml index 6bb38870bdc..2027fdebb30 100644 --- a/core/org.eclipse.cdt.ui/plugin.xml +++ b/core/org.eclipse.cdt.ui/plugin.xml @@ -3370,7 +3370,7 @@ </enabledWhen> </page> <page - name="Preprocessor Include Paths, Macros etc." + name="%LanguageSettingsProvidersPropertyPage.name" id="org.eclipse.cdt.ui.language.settings" class="org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsProvidersPage" category="org.eclipse.cdt.ui.newui.Page_head_general"> @@ -3378,7 +3378,7 @@ <adapt type="org.eclipse.core.resources.IResource"> <and> <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.cdt.core.cnature"/> - <test property="org.eclipse.cdt.ui.checkPreference" value="org.eclipse.cdt.ui:properties.providers.tab.disable=false"/> + <test property="org.eclipse.cdt.ui.checkPreference" value="org.eclipse.cdt.core:language.settings.providers.disabled=false"/> </and> </adapt> </enabledWhen> diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java index f708569a2bb..dff8d314d3f 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java @@ -47,6 +47,7 @@ import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvide import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager; +import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.LanguageManager; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; @@ -56,7 +57,6 @@ import org.eclipse.cdt.core.settings.model.ICSettingEntry; import org.eclipse.cdt.ui.CDTSharedImages; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.newui.AbstractCPropertyTab; -import org.eclipse.cdt.ui.newui.CDTPrefUtil; import org.eclipse.cdt.internal.ui.newui.LanguageSettingsImages; import org.eclipse.cdt.internal.ui.newui.Messages; @@ -1054,7 +1054,7 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab { List<ILanguageSettingsProvider> newProviders = new ArrayList<ILanguageSettingsProvider>(oldProviders.size()); // clear entries for a given resource for all languages where applicable -providers: for (ILanguageSettingsProvider provider : oldProviders) { + providers: for (ILanguageSettingsProvider provider : oldProviders) { ILanguageSettingsEditableProvider providerCopy = null; if (provider instanceof ILanguageSettingsEditableProvider) { for (TreeItem langItems : treeLanguages.getItems()) { @@ -1113,7 +1113,7 @@ providers: for (ILanguageSettingsProvider provider : oldProviders) { @Override public boolean canBeVisible() { - if (CDTPrefUtil.getBool(LanguageSettingsProvidersPage.KEY_NO_SHOW_PROVIDERS)) { + if (!ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(null)) { return false; } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java index 0e81a9b7663..6ec74419583 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java @@ -49,6 +49,7 @@ import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvide import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider; +import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICResourceDescription; import org.eclipse.cdt.ui.CDTSharedImages; @@ -56,7 +57,6 @@ import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.dialogs.ICOptionPage; import org.eclipse.cdt.ui.language.settings.providers.AbstractLanguageSettingProviderOptionPage; import org.eclipse.cdt.ui.newui.AbstractCPropertyTab; -import org.eclipse.cdt.ui.newui.CDTPrefUtil; import org.eclipse.cdt.utils.ui.controls.TabFolderLayout; import org.eclipse.cdt.internal.ui.newui.Messages; @@ -1161,7 +1161,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { @Override public boolean canBeVisible() { - if (CDTPrefUtil.getBool(LanguageSettingsProvidersPage.KEY_NO_SHOW_PROVIDERS)) { + if (!ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(null)) { return false; } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProvidersPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProvidersPage.java index 84f5d735386..4c3c33cc268 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProvidersPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProvidersPage.java @@ -24,11 +24,6 @@ import org.eclipse.cdt.ui.newui.ICPropertyTab; * @noinstantiate This class is not intended to be instantiated by clients. */ public class LanguageSettingsProvidersPage extends AbstractPage { - /** @since 5.4 */ // temporary key, subject to removal - public static final String KEY_NO_SHOW_PROVIDERS = "properties.providers.tab.disable"; //$NON-NLS-1$ - /** @since 5.4 */ // temporary key, subject to removal - public static final String KEY_NEWSD = "wizard.try.new.sd.enable"; //$NON-NLS-1$ - private static boolean isLanguageSettingsProvidersEnabled = false; private static IProject project = null; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CDTPrefUtil.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CDTPrefUtil.java index 4422ba202a0..6984fb9f3fa 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CDTPrefUtil.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CDTPrefUtil.java @@ -40,6 +40,8 @@ public class CDTPrefUtil { public static final String KEY_EXPORT = "properties.export.page.enable"; //$NON-NLS-1$ /** @since 5.2 Show the "Include Files" settings entry tab */ public static final String KEY_SHOW_INC_FILES = "properties.includefiles.page.enable"; //$NON-NLS-1$ + /** @since 5.4 Show the "Scanner Discovery" tab*/ + public static final String KEY_SHOW_SD = "properties.sd.page.enable"; //$NON-NLS-1$ /** @since 5.2 */ public static final String KEY_TIPBOX = "properties.option.tipbox.enable"; //$NON-NLS-1$ // string keys @@ -47,37 +49,37 @@ public class CDTPrefUtil { public static final String KEY_CONFSET = "workingsets.selected.configs"; //$NON-NLS-1$ // integer keys public static final String KEY_POSSAVE = "properties.save.position"; //$NON-NLS-1$ - public static final int POSITION_SAVE_SIZE = 0; - public static final int POSITION_SAVE_NONE = 2; - public static final int POSITION_SAVE_BOTH = 3; - + public static final int POSITION_SAVE_SIZE = 0; + public static final int POSITION_SAVE_NONE = 2; + public static final int POSITION_SAVE_BOTH = 3; + public static final String KEY_DISC_NAMES = "properties.discovery.naming"; //$NON-NLS-1$ - public static final int DISC_NAMING_UNIQUE_OR_BOTH = 0; - public static final int DISC_NAMING_UNIQUE_OR_IDS = 1; - public static final int DISC_NAMING_ALWAYS_BOTH = 2; - public static final int DISC_NAMING_ALWAYS_IDS = 3; - public static final int DISC_NAMING_DEFAULT = DISC_NAMING_UNIQUE_OR_BOTH; - + public static final int DISC_NAMING_UNIQUE_OR_BOTH = 0; + public static final int DISC_NAMING_UNIQUE_OR_IDS = 1; + public static final int DISC_NAMING_ALWAYS_BOTH = 2; + public static final int DISC_NAMING_ALWAYS_IDS = 3; + public static final int DISC_NAMING_DEFAULT = DISC_NAMING_UNIQUE_OR_BOTH; + /** Property key used for string list display mode for multi-configuration edits (conjunction/disjunction) */ public static final String KEY_DMODE = "properties.multi.displ.mode"; //$NON-NLS-1$ - /** Conjunction implies showing only common elements (intersection) */ - public static final int DMODE_CONJUNCTION = 1; - /** Disjunction implies showing all elements (union) */ - public static final int DMODE_DISJUNCTION = 2; - + /** Conjunction implies showing only common elements (intersection) */ + public static final int DMODE_CONJUNCTION = 1; + /** Disjunction implies showing all elements (union) */ + public static final int DMODE_DISJUNCTION = 2; + /** Property key used for string list write mode for multi-configuration edits (modify/replace) */ public static final String KEY_WMODE = "properties.multi.write.mode"; //$NON-NLS-1$ - /** Modify implies changing only given elements and not changing any others */ - public static final int WMODE_MODIFY = 4; - /** Replace implies replacing the whole list with the given one, overwriting old entries */ - public static final int WMODE_REPLACE = 8; - + /** Modify implies changing only given elements and not changing any others */ + public static final int WMODE_MODIFY = 4; + /** Replace implies replacing the whole list with the given one, overwriting old entries */ + public static final int WMODE_REPLACE = 8; + public static final String NULL = "NULL"; //$NON-NLS-1$ private static final IPreferenceStore pref = CUIPlugin.getDefault().getPreferenceStore(); private static final String DELIMITER = " "; //$NON-NLS-1$ public static final String CONFSETDEL = "\f"; //$NON-NLS-1$ private static LinkedList<String> preferredTCs = null; - + public static final Object[] EMPTY_ARRAY = new Object[0]; // low-level methods @@ -93,40 +95,40 @@ public class CDTPrefUtil { preferredTCs = new LinkedList<String>(Arrays.asList(getStr(KEY_PREFTC).split(DELIMITER))); } public static List<String> getPreferredTCs() { - if (preferredTCs == null) readPreferredTCs(); - return preferredTCs; + if (preferredTCs == null) readPreferredTCs(); + return preferredTCs; } - public static void delPreferredTC(String s) { - if (preferredTCs == null) readPreferredTCs(); - preferredTCs.remove(s); + public static void delPreferredTC(String s) { + if (preferredTCs == null) readPreferredTCs(); + preferredTCs.remove(s); } public static void addPreferredTC(String s) { - if (preferredTCs == null) readPreferredTCs(); - if (!preferredTCs.contains(s)) preferredTCs.add(s); + if (preferredTCs == null) readPreferredTCs(); + if (!preferredTCs.contains(s)) preferredTCs.add(s); } public static void cleanPreferredTCs() { setStr(KEY_PREFTC, IPreferenceStore.STRING_DEFAULT_DEFAULT); - readPreferredTCs(); + readPreferredTCs(); } public static void savePreferredTCs() { - if (preferredTCs == null) return; + if (preferredTCs == null) return; Iterator<String> it = preferredTCs.iterator(); - StringBuilder b = new StringBuilder(); + StringBuilder b = new StringBuilder(); while (it.hasNext()) { String s = it.next(); - if (s == null) continue; + if (s == null) continue; b.append(s); b.append(DELIMITER); } setStr(KEY_PREFTC, b.toString().trim()); } - + /** * Returns string list display mode for multi-configuration edits (conjunction/disjunction). - * + * * @return the mode which can be either {@link CDTPrefUtil#DMODE_CONJUNCTION} (default value) * or else {@link CDTPrefUtil#DMODE_DISJUNCTION}. - * + * * @since 5.3 */ public static int getMultiCfgStringListDisplayMode() { @@ -136,25 +138,25 @@ public class CDTPrefUtil { } return mode; } - + /** * Sets string list display mode for multi-configuration edits (conjunction/disjunction). - * + * * @param mode must be either {@link CDTPrefUtil#DMODE_CONJUNCTION} * or {@link CDTPrefUtil#DMODE_DISJUNCTION}. - * + * * @since 5.3 */ public static void setMultiCfgStringListDisplayMode(int mode) { setInt(KEY_DMODE, mode); } - + /** * Returns string list write mode for multi-configuration edits (modify/replace). - * + * * @return the mode which can be either {@link CDTPrefUtil#WMODE_MODIFY} (default value) * or else {@link CDTPrefUtil#WMODE_REPLACE}. - * + * * @since 5.3 */ public static int getMultiCfgStringListWriteMode() { @@ -164,19 +166,19 @@ public class CDTPrefUtil { } return mode; } - + /** * Sets string list write mode for multi-configuration edits (modify/replace). - * + * * @param mode must be either {@link CDTPrefUtil#WMODE_MODIFY} * or {@link CDTPrefUtil#WMODE_REPLACE}. - * + * * @since 5.3 */ public static void setMultiCfgStringListWriteMode(int mode) { setInt(KEY_WMODE, mode); } - + /** * @deprecated as of CDT 8.0. Use {@link StringListModeControl} to display string list modes. */ @@ -185,15 +187,15 @@ public class CDTPrefUtil { String s = null; switch(getMultiCfgStringListDisplayMode()) { case DMODE_CONJUNCTION: - s = Messages.EnvironmentTab_17; + s = Messages.EnvironmentTab_17; break; case DMODE_DISJUNCTION: - s = Messages.EnvironmentTab_18; + s = Messages.EnvironmentTab_18; break; } - return Messages.EnvironmentTab_19 + s; + return Messages.EnvironmentTab_19 + s; } - + /** * @deprecated as of CDT 8.0. Use {@link StringListModeControl} to display string list modes. */ @@ -202,15 +204,15 @@ public class CDTPrefUtil { String s = null; switch(getMultiCfgStringListWriteMode()) { case WMODE_MODIFY: - s = Messages.EnvironmentTab_24; + s = Messages.EnvironmentTab_24; break; case WMODE_REPLACE: - s = Messages.EnvironmentTab_21; + s = Messages.EnvironmentTab_21; break; } - return Messages.EnvironmentTab_22 + s; + return Messages.EnvironmentTab_22 + s; } - + /** * Toggle string list display mode: conjunction <-> disjunction. */ @@ -240,39 +242,37 @@ public class CDTPrefUtil { public static final String[] getStrListForDisplay(String[][] input) { return getStrListForDisplay(input, getMultiCfgStringListDisplayMode()); } - + private static final String[] getStrListForDisplay(String[][] input, int mode) { Object[] ob = getListForDisplay(input, getMultiCfgStringListDisplayMode(), null); String[] ss = new String[ob.length]; System.arraycopy(ob, 0, ss, 0, ob.length); return ss; } - + public static final Object[] getListForDisplay(Object[][] input, Comparator<Object> cmp) { return getListForDisplay(input, getMultiCfgStringListDisplayMode(), cmp); } /** * Utility method forms string list * according to current list display mode - * + * * @param input - array of string arrays * @return */ private static final Object[] getListForDisplay(Object[][] input, int mode, Comparator<Object> cmp) { if (input == null || input.length == 0) return EMPTY_ARRAY; + if (input.length == 1) { - return (input[0] == null) ? - EMPTY_ARRAY : - input[0]; + return (input[0] == null) ? EMPTY_ARRAY : input[0]; } Object[] s1 = input[0]; - if (s1 == null || - s1.length == 0) + if (s1 == null || s1.length == 0) return EMPTY_ARRAY; - if (getMultiCfgStringListDisplayMode() == DMODE_CONJUNCTION) - { + + if (getMultiCfgStringListDisplayMode() == DMODE_CONJUNCTION) { ArrayList<Object> lst = new ArrayList<Object>(); for (int i=0; i<s1.length; i++) { if (s1[i] == null) @@ -280,10 +280,12 @@ public class CDTPrefUtil { boolean found = true; for (int k = 1; k<input.length; k++) { Object[] s2 = input[k]; - if (s2 == null || s2.length == 0) + if (s2 == null || s2.length == 0) { return EMPTY_ARRAY; - if (i == 0) + } + if (i == 0) { Arrays.sort(s2, cmp); + } if (Arrays.binarySearch(s2, s1[i], cmp) < 0) { found = false; break; @@ -297,17 +299,18 @@ public class CDTPrefUtil { } TreeSet<Object> lst = new TreeSet<Object>(cmp); // set, to avoid doubles for (Object[] element : input) { - if (element == null || - element.length == 0) + if (element == null || element.length == 0) { continue; - for (Object element2 : element) + } + for (Object element2 : element) { lst.add(element2); + } } s1 = lst.toArray(); Arrays.sort(s1, cmp); return s1; } - + /** * @deprecated Use the {@link WorkingSetConfigurationManager} class, instead. */ @@ -315,15 +318,15 @@ public class CDTPrefUtil { public static List<String> readConfigSets() { return new LinkedList<String>(Arrays.asList(getStr(KEY_CONFSET).split(CONFSETDEL))); } - + /** * @deprecated Use the {@link WorkingSetConfigurationManager} class, instead. */ @Deprecated public static void saveConfigSets(List<String> out) { - StringBuilder b = new StringBuilder(); + StringBuilder b = new StringBuilder(); for (String s : out) { - if (s == null) continue; + if (s == null) continue; b.append(s); b.append(CONFSETDEL); } |