/******************************************************************************* * Copyright (c) 2007, 2010 Intel Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Intel Corporation - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.core.settings.model; import java.util.Arrays; import java.util.List; /** * This class is intended to hold "similar" Language Setting objects. * Normally, they should have the same name. */ public class MultiLanguageSetting extends MultiItemsHolder implements ICLanguageSetting { ICLanguageSetting[] items = null; ICConfigurationDescription cfgd = null; public MultiLanguageSetting(List<ICLanguageSetting> data, ICConfigurationDescription cf) { items = data.toArray(new ICLanguageSetting[data.size()]); cfgd = cf; } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getLanguageId() */ public String getLanguageId() { return items[0].getLanguageId(); // Assuming language is the same. } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getSettingEntries(int) */ public ICLanguageSettingEntry[][] getSettingEntriesM(int kind) { ICLanguageSettingEntry[][] le = new ICLanguageSettingEntry[items.length][]; for (int i=0; i<items.length; i++) le[i] = items[i].getSettingEntries(kind); return le; // return conv2LSE(getListForDisplay(le, comp)); } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getSettingEntriesList(int) */ public List<ICLanguageSettingEntry> getSettingEntriesList(int kind) { return Arrays.asList(getSettingEntries(kind)); } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getSourceContentTypeIds() */ public String[][] getSourceContentTypeIdsM() { String[][] ss = new String[items.length][]; for (int i=0; i<items.length; i++) ss[i] = items[i].getSourceContentTypeIds(); return ss; } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getSourceExtensions() */ public String[][] getSourceExtensionsM() { String[][] ss = new String[items.length][]; for (int i=0; i<items.length; i++) ss[i] = items[i].getSourceExtensions(); return ss; } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#getSupportedEntryKinds() */ public int getSupportedEntryKinds() { int res = 0; for (ICLanguageSetting item : items) res |= item.getSupportedEntryKinds(); return res; } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#setLanguageId(java.lang.String) */ public void setLanguageId(String id) {} // Do nothing /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#setSettingEntries(int, org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry[]) */ public void setSettingEntries(int kind, ICLanguageSettingEntry[] entries) { for (ICLanguageSetting item : items) item.setSettingEntries(kind, entries); } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#setSettingEntries(int, java.util.List) */ public void setSettingEntries(int kind, List<ICLanguageSettingEntry> entriesList) { for (ICLanguageSetting item : items) item.setSettingEntries(kind, entriesList); } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#setSourceContentTypeIds(java.lang.String[]) */ public void setSourceContentTypeIds(String[] ids) { for (ICLanguageSetting item : items) item.setSourceContentTypeIds(ids); } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#setSourceExtensions(java.lang.String[]) */ public void setSourceExtensions(String[] exts) { for (ICLanguageSetting item : items) item.setSourceExtensions(exts); } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICLanguageSetting#supportsEntryKind(int) */ public boolean supportsEntryKind(int kind) { for (ICLanguageSetting item : items) if (item.supportsEntryKind(kind)) return true; return false; } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getConfiguration() */ public ICConfigurationDescription getConfiguration() { if (DEBUG) System.out.println("Bad multi access: MultiLanguageSetting.getConfiguration()"); //$NON-NLS-1$ return null; // CFGs are different } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getId() */ public String getId() { // IDs are different if (DEBUG) System.out.println("Bad multi access: MultiLanguageSetting.getId()"); //$NON-NLS-1$ return null; } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getName() */ public String getName() { // names are proposed to be equal return items[0].getName(); } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getParent() */ public ICSettingContainer getParent() { if (DEBUG) System.out.println("Bad multi access: MultiLanguageSetting.getParent()"); //$NON-NLS-1$ return null; // Parents are different } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICSettingObject#getType() */ public int getType() { int x = items[0].getType(); for (ICLanguageSetting item : items) if (x != item.getType()) return 0; return x; } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICSettingObject#isReadOnly() */ public boolean isReadOnly() { for (int i=0; i<items.length; i++) if (! items[i].isReadOnly()) return false; return true; } /* (non-Javadoc) * @see org.eclipse.cdt.core.settings.model.ICSettingObject#isValid() */ public boolean isValid() { for (int i=0; i<items.length; i++) if (! items[i].isValid()) return false; return true; } @Override public Object[] getItems() { return items; } public ICLanguageSettingEntry[] getResolvedSettingEntries(int kind) { return null; } public ICLanguageSettingEntry[] getSettingEntries(int kind) { ICLanguageSettingEntry[][] ses = getSettingEntriesM(kind); return ses[0]; } public String[] getSourceContentTypeIds() { return null; } public String[] getSourceExtensions() { return null; } }